#! /bin/sh afmdir=${afmdir-afm} pfafontname () { sed -e '/\/q' -e '/\/q' | sed -e 's,.*FontName *[[{(]\(.*\)[]})].*,\1,' -e t \ -e 's,.*FontName[ /]*\([^ ]*\).*,\1,' -e t \ -e d } for file in $* do font=`basename $file .pfb` font=`basename $font .pfa` if [ ! -f $font.pfa ] then t1ascii $font.pfb $font.pfa delpfa=/bin/rm else delpfa=# fi FontName=`pfafontname < $font.pfa` if [ -f $font.afm ] then echo saving Composite and KernData information from old afm # sed -e /StartComposites/,/EndComposites/p -e /StartKernData/,/EndKernData/p -e d < $font.afm > $font.cck sed -e /EndCharMetrics/,/EndFontMetrics/p -e d < $font.afm > $font.cck elif [ -f $font.pfm ] then echo EndCharMetrics > $font.cck set - ` ( /bin/dd ibs=1 skip=195 count=2 < $font.pfm | /bin/dd conv=swab | /bin/od -d ) 2> /dev/null ` pairs=`expr $2 + 0` if [ $pairs -ne 0 ] then WinANSI=`dirname $0`/WinANSI len=`expr $pairs \* 4` set - ` ( /bin/dd ibs=1 skip=131 count=4 < $font.pfm | /bin/dd conv=swab | /bin/od -d ) 2> /dev/null ` start=`expr $3 \* 65536 + $2 + 2` echo StartKernData >> $font.cck echo StartKernPairs $pairs >> $font.cck /bin/dd ibs=1 skip=$start count=$len < $font.pfm | /bin/dd conv=swab | /bin/od -vbiw4 | sed -e '/^0/N' -e 's,^[0-7]* *\([0-7]*\) \([0-7]*\) [0-7]* [0-7]*[^-0-9]*[-0-9]* *\([-0-9]*\)$,KPX C\2 C\1 \3,' -f ${WinANSI}1 | sed -f ${WinANSI}2 >> $font.cck echo EndKernPairs >> $font.cck echo EndKernData >> $font.cck else echo no kern pairs in $font.pfm fi echo EndFontMetrics >> $font.cck fi echo /$FontName getmetric0 | gs -DNODISPLAY -q $font.pfa getmetri.ps - > $font.afm if [ -f $font.cck ] then cat $font.cck >> $font.afm fi eval $delpfa $font.pfa /bin/rm $font.cck if [ -d $afmdir ] then ln $font.afm $afmdir/$FontName.afm else ln $font.afm $FontName.afm fi done