#!/usr/bin/bash # #make a Minion or Myriad font instance #------------------------------------------------- #there are 3 axes in Minion: #the weight ranges from 345 to 620 #the width ranges from 450 to 600 #the size varies from 6 to 72 # #there are 2 axes in Myriad: #the weight ranges from 215 to 830 #the width ranges from 300 to 750 # TDS=/home/spqr/tds MMHOME=/home/spqr/psfonts/mmafm MMDEST=$TDS/dvips/mm TFMDEST=$TDS/fonts/tfm/adobe/mm VFDEST=$TDS/fonts/vf/adobe/mm # #option allows us just to generate the AFM files, not run fontinst # AFM= while true; do case $1 in -afm) shift ; AFM=y ; break;; *) break;; esac done FNAME=$1 FAM=`expr $FNAME : '^z\(..\).*$'` IWEIGHT=`expr $FNAME : '^zm.\(.*\)[78]t.*$'` WIDTH=`expr $FNAME : '^[a-z]*[78]t\([^0-9]*\).*$'` SIZE=`expr $FNAME : '^.*[78]t[^0-9]*\([0-9]*\)$'` ENCODING=`expr $FNAME : '^.*\([78]t\).*$'` USESIZE=`echo $SIZE \* 1.095 | bc` WEIGHT=`expr $IWEIGHT : '\(.\).*'` SHAPE=`expr $IWEIGHT : '.\(.*\)'` EXTRA= case $FAM in mn) FULLFAM=Minion ; EXPERT=y;; my) FULLFAM=Myriad; EXPERT=;; *) echo Unknown MM family $FAM >&2; exit 1;; esac if test "${SHAPE}" = "i" then PFA=${FULLFAM}MM-It EPFA=${FULLFAM}MM-ItEp LSHAPE="it" else PFA=${FULLFAM}MM EPFA=${FULLFAM}MM-Ep if test "${SHAPE}" = "c" then LSHAPE="sc" IWEIGHT=$WEIGHT EXTRA="c" else LSHAPE="n" fi fi if test "${WIDTH}x" = "x" then REALWIDTH="r" else REALWIDTH=$WIDTH fi case $WEIGHT in h) LWEIGHT="ul"; MINWEIGHT=345; MYWEIGHT=215;; #hairline j) LWEIGHT="el"; MINWEIGHT=360; MYWEIGHT=291;; #extralight l) LWEIGHT="l"; MINWEIGHT=380; MYWEIGHT=367;; #light k) LWEIGHT="sl"; MINWEIGHT=400; MYWEIGHT=443;; #book m) LWEIGHT="m"; MINWEIGHT=415; MYWEIGHT=519;; #Medium s) LWEIGHT="sb"; MINWEIGHT=500; MYWEIGHT=595;; #semibold b) LWEIGHT="b"; MINWEIGHT=580; MYWEIGHT=671;; #bold x) LWEIGHT="eb"; MINWEIGHT=600; MYWEIGHT=747;; #ExtraBold u) LWEIGHT="ub"; MINWEIGHT=620; MYWEIGHT=830;; #UltraBlack *) echo BAD WEIGHT >&2; exit 1;; esac case $REALWIDTH in o) LWIDTH="uc"; MINWIDTH=450; MYWIDTH=300;; #UltraCondensed q) LWIDTH="ec"; MINWIDTH=468; MYWIDTH=350;; #ExtraCondensed c) LWIDTH="c"; MINWIDTH=490; MYWIDTH=400;; #Condensed n) LWIDTH="sc"; MINWIDTH=510; MYWIDTH=450;; #Narrow r) LWIDTH="m"; MINWIDTH=535; MYWIDTH=500;; #Regular x) LWIDTH="sx"; MINWIDTH=550; MYWIDTH=550;; #Extended e) LWIDTH="x"; MINWIDTH=565; MYWIDTH=600;; #Expanded v) LWIDTH="ex"; MINWIDTH=584; MYWIDTH=650;; #Extra Expanded w) LWIDTH="ux"; MINWIDTH=600; MYWIDTH=700;; #Wide *) echo BAD WIDTH >&2; exit 1;; esac ORID=`pwd` cd $MMHOME if test "$LWIDTH$LWEIGHT" = "mm" then LSERIES="m" else if test "$LWIDTH" = "m" then LWIDTH="" fi if test "$LWEIGHT" = "m" then LWEIGHT="" fi LSERIES=$LWEIGHT$LWIDTH fi if test "$ENCODING" = "8t" then LATEXENC=T1 SUFFIX=8t else LATEXENC=OT1 SUFFIX=7t fi EFNAME=z$FAM${IWEIGHT}8x${WIDTH}${SIZE} RNAME=z$FAM${IWEIGHT}8r${WIDTH}${SIZE} FINALNAME=z$FAM${IWEIGHT}${EXTRA}${SUFFIX}${WIDTH}${SIZE} RAWNAME=z$FAM${IWEIGHT}8a${WIDTH}${SIZE} echo $RAWNAME: $EFNAME, $RNAME, $FINALNAME #echo $FNAME: $FAM / $WEIGHT [ $IWEIGHT ] / $WIDTH / $SIZE / $SHAPE: $LSERIES / $LSHAPE >&2 if test "${SHAPE}" != "c" then echo "$RNAME $RAWNAME \" TeXBase1Encoding ReEncodeFont \" <8r.enc <$PFA.PFA <$RAWNAME.pro" > $RAWNAME.map fi makeinstance.sh $PFA $RAWNAME $MINWEIGHT $MINWIDTH $USESIZE if test "$EXPERT"x != "x" then echo "$EFNAME $EFNAME <$EPFA.PFA <$EFNAME.pro" > $EFNAME.map makeinstance.sh $EPFA $EFNAME $MINWEIGHT $MINWIDTH $USESIZE >& /dev/null fi if test "$AFM"x != "x" then exit 0 fi cat > _min$$.tex <> _min$$.tex else echo "\\installfont{$FINALNAME}{$RNAME,$EFNAME,latin}{${LATEXENC}}{${LATEXENC}}{foo}{$LSERIES}{$LSHAPE}{}" >> _min$$.tex fi else if test "${SHAPE}" = "c" then echo " \\installfont{$FINALNAME}{$RNAME,latin}{${LATEXENC}c}{${LATEXENC}}{foo}{$LSERIES}{$LSHAPE}{}" >> _min$$.tex else echo "\\installfont{$FINALNAME}{$RNAME,latin}{${LATEXENC}}{${LATEXENC}}{foo}{$LSERIES}{$LSHAPE}{}" >> _min$$.tex fi fi cat >> _min$$.tex <& /dev/null vptovf $FINALNAME.vpl $FINALNAME.vf $FINALNAME.tfm >& /dev/null rm $RNAME.pl $FINALNAME.vpl rm ${LATEXENC}foo.fd rm $RAWNAME.afm mv $RNAME.tfm $FINALNAME.tfm $TFMDEST mv $FINALNAME.vf $VFDEST mv $RAWNAME.pro $MMDEST cat z$FAM${IWEIGHT}8*${WIDTH}${SIZE}.map $MMDEST/mm.map | sort | uniq > $$.map mv $$.map $MMDEST/mm.map rm $RAWNAME.* if test "$EXPERT"x != "x" then pltotf $EFNAME.pl $EFNAME.tfm >& /dev/null mv $EFNAME.pro $MMDEST mv $EFNAME.tfm $TFMDEST rm $EFNAME.* fi cd $ORID