#!/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