#!/bin/sh # mktextfm -- make a new TFM file, because one wasn't found. # # (If you change or delete the word `original' on the previous line, # installation won't write this script over yours.) # # te@informatik.uni-hannover.de, kb@mail.tug.org, and infovore@xs4all.nl. # Public domain. version='$Id: mktextfm,v 1.17 1998/02/16 08:56:13 olaf Exp $' progname=`echo $0 | sed 's%.*/%%'` usage="Usage: $progname [--destdir DESTDIR] FONT. Makes a TFM file for FONT, if possible. Use DESTDIR for the root of where to install into, either the absolute directory name to use (if it starts with a /) or relative to the default DESTDIR (if not)." # Handle non-positional options, except for --version/--help while test $# -gt 0; do case "$1" in --destdir) shift; DEST="$1"; shift ;; --destdir=*) DEST="`echo \"$1\" | sed 's/--destdir=//'`"; shift ;; --version|-version) break ;; --help|-help) break ;; *) break ;; esac done # Common code for all scripts. : ${MT_TEXMFMAIN=`kpsewhich --expand-path='$TEXMFMAIN'`} : ${MT_MKTEX_OPT=`kpsewhich --format='web2c files' mktex.opt`} test -n "$MT_MKTEX_OPT" || MT_MKTEX_OPT="$MT_TEXMFMAIN/web2c/mktex.opt" if test ! -f "$MT_MKTEX_OPT"; then echo "$progname: Cannot find mktex.opt; check your installation." >&2 exit 1 fi . "$MT_MKTEX_OPT" # start of redirection stdout -> stderr, stdin <- /dev/null ( NAME=`basename "$1" .tfm` MAG=1 #DEST="$2" DPI=$BDPI OIFS=$IFS; IFS=$SEP set x `"$MT_MKTEXNAM" $NAME $DPI $MODE $DEST`; shift IFS=$OIFS PKDEST="$1" TFMDEST="$2" PKDESTDIR=`echo "$PKDEST" | sed 's%/[^/][^/]*$%%'` # can't rely on dirname TFMDESTDIR=`echo "$TFMDEST" | sed 's%/[^/][^/]*$%%'` PKNAME=`basename "$PKDEST"` TFMNAME=$NAME.tfm GFNAME=$NAME.$DPI'gf' if test -r "$TFMDESTDIR/$TFMNAME"; then echo "$progname: $TFMDESTDIR/$TFMNAME already exists." >&2 echo "$TFMDESTDIR/$TFMNAME" >$STDOUT "$MT_MKTEXUPD" "$TFMDESTDIR" $TFMNAME exit fi # Try to create the destdir first. Do not create fonts, if this fails. "$MT_MKTEXDIR" "$TFMDESTDIR" if test ! -d "$TFMDESTDIR"; then echo "$progname: mktexdir $TFMDESTDIR failed." exit 1 fi case "$NAME" in cm*[+-][0-9]*|cs*[+-][0-9]*|vn*[+-][0-9]*) BASE_MFNAME=`expr $NAME : '\(.*\)[+-][0-9]*$'` EXPANSION=`expr $NAME : '.*\([+-][0-9]*\)$'` echo "/^u#:=[0-9.]*\/[0-9.]*pt#;/a\\" > $NAME.sed echo "u#:=u#$EXPANSION/1000u#;" >> $NAME.sed sed -f $NAME.sed `kpsewhich $BASE_MFNAME.mf` > $NAME.mf MFDESTDIR=`echo "$TFMDESTDIR" | sed 's%/tfm/%/source/%'` "$MT_MKTEXDIR" "$MFDESTDIR" && mv -f $NAME.mf $MFDESTDIR ;; tq*[+-][0-9]*) BASE_MFNAME=`expr $NAME : '\(.*\)[+-][0-9]*$'` EXPANSION=`expr $NAME : '.*\([+-][0-9]*\)$'` echo "expansion_ratio := $EXPANSION;" > $NAME.mf echo "input $BASE_MFNAME.mf" >> $NAME.mf MFDESTDIR=`echo "$TFMDESTDIR" | sed 's%/tfm/%/source/%'` "$MT_MKTEXDIR" "$MFDESTDIR" && mv -f $NAME.mf $MFDESTDIR ;; *[+-][0-9]*) EXPANSION_TAG=`expr $NAME : '.*\([+-][0-9]*\)$'` ;; esac if test "x$EXPANSION_TAG" = x; then cmd="mf \mode:=$MODE; mag:=$MAG; nonstopmode; input $NAME.mf" echo "$progname: Running $cmd" $cmd $$.errs 2>/dev/null grep '^! Strange path' $$.errs >$$.strange 2>/dev/null if cmp $$.errs $$.strange >/dev/null 2>&1 \ && test -s $$.strange >/dev/null 2>&1; then echo "$progname: warning: \`$cmd' caused strange path errors." >&2 else echo "$progname: \`$cmd' failed." >&2 test -s $NAME.log && mv -f $NAME.log "$KPSE_DOT" exit 1; fi } else mktextfm.ext $NAME $TFMDESTDIR $STDOUT exit 0 fi test -r $TFMNAME || { echo "$progname: \`$cmd' failed to make $TFMNAME."; exit 1; } # Install the TFM file carefully, since others may be working simultaneously. # Use cp when mv fails, since DOS will fail mv for deeply-nested directories. mv $TFMNAME "$TFMDESTDIR/tfm$$.tmp" 2>/dev/null \ || cp $TFMNAME "$TFMDESTDIR/tfm$$.tmp" || exit 1 cd "$TFMDESTDIR" || exit 1 chmod `kpsestat -xst,go-w .` tfm$$.tmp test -r $TFMNAME || mv tfm$$.tmp $TFMNAME || exit 1 # OK, success with the TFM. "$MT_MKTEXUPD" "$TFMDESTDIR" $TFMNAME echo "$TFMDESTDIR/$TFMNAME" >$STDOUT echo "$progname: $TFMDESTDIR/$TFMNAME: successfully generated." >&2 # Since we probably made a GF(->PK) file, too, may as well install it if # it's needed. cd $TEMPDIR if test -r $GFNAME && test ! -f "$PKDESTDIR/$PKNAME"; then gftopk ./$GFNAME $PKNAME || exit 1 "$MT_MKTEXDIR" "$PKDESTDIR" mv $PKNAME "$PKDESTDIR/pk$$.tmp" 2>/dev/null \ || cp $PKNAME "$PKDESTDIR/pk$$.tmp" || exit 1 cd "$PKDESTDIR" || exit 1 if test -f $PKNAME; then rm -f pk$$.tmp else chmod `kpsestat -xst,go-w .` pk$$.tmp mv pk$$.tmp $PKNAME "$MT_MKTEXUPD" "$PKDESTDIR" $PKNAME fi fi ) 1>&2