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 cat $2 | .
/mkfn
-a -b -r$RES -t "$1" $3 $4 $5 $6 $7 | \
26 sed "/^ligatures /s/ $LIGIGN//g" >$TP/$1
29 # ttfconv troff_name font_path extra_mktrfn_options
33 cat $2 | .
/mkfn
-b -l -o -r$RES $SCR -t $1 $3 $4 $5 $6 $7 | \
34 sed "/^ligatures /s/ $LIGIGN//g" >$TP/$1
37 # otfconv troff_name font_path extra_mktrfn_options
40 TTF
="/tmp/.neatmkfn.ttf"
41 # convert the OTF file to TTF using fontforge
42 fontforge
-lang=ff
-c "Open(\"$2\"); Generate(\"$TTF\");" >/dev
/null
2>&1
43 ttfconv
$1 $TTF $3 $4 $5 $6 $7
47 # stdfont troff_name gs_font urw_font extra_mktrfn_options
52 afmconv
$1 "$2" $4 $5 $6 $7 $8 $9
54 afmconv
$1 "$3" $4 $5 $6 $7 $8 $9
58 # The standard fonts; ghostscriptfonts or urw-core35
59 stdfont R
$FP/n021003l.afm
$FP/NimbusRoman-Regular.afm
-pTimes-Roman
60 stdfont I
$FP/n021023l.afm
$FP/NimbusRoman-Italic.afm
-pTimes-Italic
61 stdfont B
$FP/n021004l.afm
$FP/NimbusRoman-Bold.afm
-pTimes-Bold
62 stdfont BI
$FP/n021024l.afm
$FP/NimbusRoman-BoldItalic.afm
-pTimes-BoldItalic
63 stdfont S
$FP/s050000l.afm
$FP/StandardSymbolsPS.afm
-pSymbol -s
64 stdfont S1
$FP/n021003l.afm
$FP/NimbusRoman-Regular.afm
-pTimes-Roman -s
65 stdfont AR
$FP/a010013l.afm
$FP/URWGothic-Book.afm
-pAvantGarde-Book
66 stdfont AI
$FP/a010033l.afm
$FP/URWGothic-BookOblique.afm
-pAvantGarde-BookOblique
67 stdfont AB
$FP/a010015l.afm
$FP/URWGothic-Demi.afm
-pAvantGarde-Demi
68 stdfont AX
$FP/a010035l.afm
$FP/URWGothic-DemiOblique.afm
-pAvantGarde-DemiOblique
69 stdfont HR
$FP/n019003l.afm
$FP/NimbusSans-Regular.afm
-pHelvetica
70 stdfont HI
$FP/n019023l.afm
$FP/NimbusSans-Oblique.afm
-pHelvetica-Oblique
71 stdfont HB
$FP/n019004l.afm
$FP/NimbusSans-Bold.afm
-pHelvetica-Bold
72 stdfont HX
$FP/n019024l.afm
$FP/NimbusSans-BoldOblique.afm
-pHelvetica-BoldOblique
73 stdfont Hr
$FP/n019043l.afm
$FP/NimbusSansNarrow-Regular.afm
-pHelvetica-Narrow
74 stdfont Hi
$FP/n019063l.afm
$FP/NimbusSansNarrow-Oblique.afm
-pHelvetica-Narrow-Oblique
75 stdfont Hb
$FP/n019044l.afm
$FP/NimbusSansNarrow-Bold.afm
-pHelvetica-Narrow-Bold
76 stdfont Hx
$FP/n019024l.afm
$FP/NimbusSansNarrow-BdOblique.afm
-pHelvetica-Narrow-BoldOblique
77 stdfont KR
$FP/b018012l.afm
$FP/URWBookman-Light.afm
-pBookman-Light
78 stdfont KI
$FP/b018032l.afm
$FP/URWBookman-LightItalic.afm
-pBookman-LightItalic
79 stdfont KB
$FP/b018015l.afm
$FP/URWBookman-Demi.afm
-pBookman-Demi
80 stdfont KX
$FP/b018035l.afm
$FP/URWBookman-DemiItalic.afm
-pBookman-DemiItalic
81 stdfont NR
$FP/c059013l.afm
$FP/C059-Roman.afm
-pNewCenturySchlbk-Roman
82 stdfont NI
$FP/c059033l.afm
$FP/C059-Italic.afm
-pNewCenturySchlbk-Italic
83 stdfont NB
$FP/c059016l.afm
$FP/C059-Bold.afm
-pNewCenturySchlbk-Bold
84 stdfont NX
$FP/c059036l.afm
$FP/C059-BdIta.afm
-pNewCenturySchlbk-BoldItalic
85 stdfont PA
$FP/p052003l.afm
$FP/P052-Roman.afm
-pPalatino-Roman
86 stdfont PR
$FP/p052003l.afm
$FP/P052-Roman.afm
-pPalatino-Roman
87 stdfont PI
$FP/p052023l.afm
$FP/P052-Italic.afm
-pPalatino-Italic
88 stdfont PB
$FP/p052004l.afm
$FP/P052-Bold.afm
-pPalatino-Bold
89 stdfont PX
$FP/p052024l.afm
$FP/P052-BoldItalic.afm
-pPalatino-BoldItalic
90 stdfont CR
$FP/n022003l.afm
$FP/NimbusMonoPS-Regular.afm
-pCourier
91 stdfont CI
$FP/n022023l.afm
$FP/NimbusMonoPS-Italic.afm
-pCourier-Oblique
92 stdfont CB
$FP/n022004l.afm
$FP/NimbusMonoPS-Bold.afm
-pCourier-Bold
93 stdfont CX
$FP/n022024l.afm
$FP/NimbusMonoPS-BoldItalic.afm
-pCourier-BoldOblique
94 stdfont ZI
$FP/z003034l.afm
$FP/Z003-MediumItalic.afm
-pZapfChancery-MediumItalic
96 # The first argument of afmconv, ttfconv, and otfconv is the troff
97 # name of the font and their second argument is its path. Any other
98 # argument is passed to mkfn directly. The postscript names of the
99 # fonts are inferred from the fonts themselves To change that, you
100 # can specify their names via the -p argument of *conv functions.
102 find $FP/ -name '*.afm' |
while read FN
104 afmconv
`basename $FN .afm` $FN
107 find $FP/ -name '*.ttf' |
while read FN
109 ttfconv
`basename $FN .ttf` $FN
112 find $FP/ -name '*.otf' |
while read FN
114 otfconv
`basename $FN .otf` $FN