trfn: declare trfn_pspath() in trfn.h
[neatmkfn.git] / gen.sh
blob23629b09f1591d6b4f3f944699c81e044a92c274
1 #!/bin/sh
2 # Generate a neatroff output device
4 FP="/path/to/gs/fonts" # ghostscript fonts directory; should be in GS_FONTPATH
5 TP="/path/to/font/devutf" # output device directory
6 RES="720" # device resolution
7 SCR="-Slatn,arab" # scripts to include
8 LIGIGN="\(ct\|st\|sp\|Rp\)" # pattern of ligatures to ignore
10 test -n "$1" && FP="$1"
11 test -n "$2" && TP="$2"
13 # creating DESC
14 mkdir -p $TP
15 echo "fonts 10 R I B BI CR HR HI HB S1 S" >$TP/DESC
16 echo "res $RES" >>$TP/DESC
17 echo "hor 1" >>$TP/DESC
18 echo "ver 1" >>$TP/DESC
19 echo "unitwidth 10" >>$TP/DESC
21 # afmconv troff_name font_path extra_mktrfn_options
22 afmconv()
24 echo $1
25 T1="`dirname $2`/`basename $2 .afm`.t1"
26 test -f "$T1" || T1="`dirname $2`/`basename $2 .afm`.pfa"
27 test -f "$T1" || T1="`dirname $2`/`basename $2 .afm`.pfb"
28 cat $2 | ./mkfn -a -b -r$RES -t$1 -f "$T1" $3 $4 $5 $6 $7 | \
29 sed "/^ligatures /s/ $LIGIGN//g" >$TP/$1
32 # ttfconv troff_name font_path extra_mktrfn_options
33 ttfconv()
35 echo $1
36 cat $2 | ./mkfn -b -l -o -r$RES $SCR -t$1 -f "$2" $3 $4 $5 $6 $7 | \
37 sed "/^ligatures /s/ $LIGIGN//g" >$TP/$1
40 # otfconv troff_name font_path extra_mktrfn_options
41 otfconv()
43 TTF="/tmp/.neatmkfn.ttf"
44 # convert the OTF file to TTF using fontforge
45 fontforge -lang=ff -c "Open(\"$2\"); Generate(\"$TTF\");" >/dev/null 2>&1
46 ttfconv $1 $TTF $3 $4 $5 $6 $7
47 rm $TTF
50 # stdfont troff_name gs_font urw_font extra_mktrfn_options
51 stdfont()
53 if test -f $2
54 then
55 afmconv $1 "$2" $4 $5 $6 $7 $8 $9
56 else
57 afmconv $1 "$3" $4 $5 $6 $7 $8 $9
61 # The standard fonts; ghostscriptfonts or urw-core35
62 stdfont R $FP/n021003l.afm $FP/NimbusRoman-Regular.afm -pTimes-Roman
63 stdfont I $FP/n021023l.afm $FP/NimbusRoman-Italic.afm -pTimes-Italic
64 stdfont B $FP/n021004l.afm $FP/NimbusRoman-Bold.afm -pTimes-Bold
65 stdfont BI $FP/n021024l.afm $FP/NimbusRoman-BoldItalic.afm -pTimes-BoldItalic
66 stdfont S $FP/s050000l.afm $FP/StandardSymbolsPS.afm -pSymbol -s
67 stdfont S1 $FP/n021003l.afm $FP/NimbusRoman-Regular.afm -pTimes-Roman -s
68 stdfont AR $FP/a010013l.afm $FP/URWGothic-Book.afm -pAvantGarde-Book
69 stdfont AI $FP/a010033l.afm $FP/URWGothic-BookOblique.afm -pAvantGarde-BookOblique
70 stdfont AB $FP/a010015l.afm $FP/URWGothic-Demi.afm -pAvantGarde-Demi
71 stdfont AX $FP/a010035l.afm $FP/URWGothic-DemiOblique.afm -pAvantGarde-DemiOblique
72 stdfont HR $FP/n019003l.afm $FP/NimbusSans-Regular.afm -pHelvetica
73 stdfont HI $FP/n019023l.afm $FP/NimbusSans-Oblique.afm -pHelvetica-Oblique
74 stdfont HB $FP/n019004l.afm $FP/NimbusSans-Bold.afm -pHelvetica-Bold
75 stdfont HX $FP/n019024l.afm $FP/NimbusSans-BoldOblique.afm -pHelvetica-BoldOblique
76 stdfont Hr $FP/n019043l.afm $FP/NimbusSansNarrow-Regular.afm -pHelvetica-Narrow
77 stdfont Hi $FP/n019063l.afm $FP/NimbusSansNarrow-Oblique.afm -pHelvetica-Narrow-Oblique
78 stdfont Hb $FP/n019044l.afm $FP/NimbusSansNarrow-Bold.afm -pHelvetica-Narrow-Bold
79 stdfont Hx $FP/n019024l.afm $FP/NimbusSansNarrow-BdOblique.afm -pHelvetica-Narrow-BoldOblique
80 stdfont KR $FP/b018012l.afm $FP/URWBookman-Light.afm -pBookman-Light
81 stdfont KI $FP/b018032l.afm $FP/URWBookman-LightItalic.afm -pBookman-LightItalic
82 stdfont KB $FP/b018015l.afm $FP/URWBookman-Demi.afm -pBookman-Demi
83 stdfont KX $FP/b018035l.afm $FP/URWBookman-DemiItalic.afm -pBookman-DemiItalic
84 stdfont NR $FP/c059013l.afm $FP/C059-Roman.afm -pNewCenturySchlbk-Roman
85 stdfont NI $FP/c059033l.afm $FP/C059-Italic.afm -pNewCenturySchlbk-Italic
86 stdfont NB $FP/c059016l.afm $FP/C059-Bold.afm -pNewCenturySchlbk-Bold
87 stdfont NX $FP/c059036l.afm $FP/C059-BdIta.afm -pNewCenturySchlbk-BoldItalic
88 stdfont PA $FP/p052003l.afm $FP/P052-Roman.afm -pPalatino-Roman
89 stdfont PR $FP/p052003l.afm $FP/P052-Roman.afm -pPalatino-Roman
90 stdfont PI $FP/p052023l.afm $FP/P052-Italic.afm -pPalatino-Italic
91 stdfont PB $FP/p052004l.afm $FP/P052-Bold.afm -pPalatino-Bold
92 stdfont PX $FP/p052024l.afm $FP/P052-BoldItalic.afm -pPalatino-BoldItalic
93 stdfont CR $FP/n022003l.afm $FP/NimbusMonoPS-Regular.afm -pCourier
94 stdfont CI $FP/n022023l.afm $FP/NimbusMonoPS-Italic.afm -pCourier-Oblique
95 stdfont CB $FP/n022004l.afm $FP/NimbusMonoPS-Bold.afm -pCourier-Bold
96 stdfont CX $FP/n022024l.afm $FP/NimbusMonoPS-BoldItalic.afm -pCourier-BoldOblique
97 stdfont ZI $FP/z003034l.afm $FP/Z003-MediumItalic.afm -pZapfChancery-MediumItalic
99 # The first argument of afmconv, ttfconv, and otfconv is the troff
100 # name of the font and their second argument is its path. Any other
101 # argument is passed to mkfn directly. The postscript names of the
102 # fonts are inferred from the fonts themselves To change that, you
103 # can specify their names via the -p argument of *conv functions.
105 find $FP/ -name '*.afm' | while read FN
107 afmconv `basename $FN .afm` $FN
108 done
110 find $FP/ -name '*.ttf' | while read FN
112 ttfconv `basename $FN .ttf` $FN
113 done
115 find $FP/ -name '*.otf' | while read FN
117 otfconv `basename $FN .otf` $FN
118 done