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"
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
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
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
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
50 # stdfont troff_name gs_font urw_font extra_mktrfn_options
55 afmconv
$1 "$2" $4 $5 $6 $7 $8 $9
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
110 find $FP/ -name '*.ttf' |
while read FN
112 ttfconv
`basename $FN .ttf` $FN
115 find $FP/ -name '*.otf' |
while read FN
117 otfconv
`basename $FN .otf` $FN