#!/bin/sh
# Create tfm files for built-in fonts and virtual fonts
# for each of them (and a few more).
# The map file has lines with
#    field1 = Adobe name
#    field2 = abbreviated name (if present; otherwise no abbreviation;
#                       should begin with an uppercase character)
#    field3,4,5 = a "real" built-in font, and how to use it to derive
#                       the required one.  e.g., 'F -e factor' to expand
#                       font F by factor; 'F -s slant' to oblique font F.
rm -f *.tfm *.vpl *.vf
# first, make some caps/small-caps fonts
echo 'afm2tfm AvantGarde-Book -V avantcsc Avant
afm2tfm Bookman-Light -V booklcsc Bookl
afm2tfm Helvetica -V helvcsc Helv
afm2tfm NewCenturySchlbk-Roman -V centcsc Cent
afm2tfm Palatino-Roman -V palcsc Pal
afm2tfm Times-Roman -V timescsc Times
rm *.tfm' > doit
# and generate the rest from the map file
awk 'BEGIN {l["A"]="a"; l["B"]="b"; l["C"]="c"; l["D"]="d"; l["E"]="e";
       l["F"]="f"; l["G"]="g"; l["H"]="h"; l["I"]="i"; l["J"]="j";
       l["K"]="k"; l["L"]="l"; l["M"]="m"; l["N"]="n"; l["O"]="o";
       l["P"]="p"; l["Q"]="q"; l["R"]="r"; l["S"]="s"; l["T"]="t";
       l["U"]="u"; l["V"]="v"; l["W"]="w"; l["X"]="x"; l["Y"]="y";
       l["Z"]="z";
       }
NF>=1   {
               afm = (NF>2)? $3 : $1
               tfm = (NF>1)? $2 : $1
               vpl = l[substr(tfm,1,1)] substr(tfm,2)
               printf "afm2tfm %s -v %s",afm,vpl
               if(NF>3) printf(" %s %s",$4,$5)
               printf " %s\n", tfm
               if($1 ~ /Oblique/ || $1 ~ /Italic/)
                       printf "addgreekcaps -s %s\n", vpl
               else
                       printf "addgreekcaps %s\n", vpl
       }
' map >> doit
sh doit
# the virtual fonts are all wrong for non-text fonts
rm symbol.vpl symbolsl.vpl dingbats.vpl
for i in *.vpl
do
       stem=`echo $i | sed 's/\.vpl//'`
       vptovf $stem.vpl $stem.vf $stem.tfm
done
rm doit