#!/bin/ape/sh
# maketexnam -- find PK and TFM names.
# [email protected], [email protected], and [email protected].
# Public domain.
version='$Id: mktexnam,v 1.20 1998/03/16 18:25:12 olaf Exp $'
usage="Usage: $0 NAME [DPI MODE] [DESTDIR].
Output the PK, TFM, and MF names for a font NAME."
mt_max_args=4
# 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 "$0: Cannot find mktex.opt; check your installation." >&2
exit 1
fi
. "$MT_MKTEX_OPT"
NAME=$1
case $# in
1|2) DPI=$BDPI; DEST=$2;;
3|4) DPI=$2; MODE=$3; DEST=$4;;
*) help;;
esac
MT_PKDESTDIR='$MT_DESTROOT/$MT_PKDESTREL'
MT_TFMDESTDIR='$MT_DESTROOT/$MT_TFMDESTREL'
MT_MFDESTDIR='$MT_DESTROOT/$MT_MFDESTREL'
MT_PKMODEPART='$MT_PKPART/$MT_MODE'
MT_PKBASE='$NAME.${DPI}pk'
MT_TFMBASE='$NAME.tfm'
MT_MFBASE='$NAME.mf'
MT_DEFAULT_SUPPLIER=unknown
MT_DEFAULT_TYPEFACE=unknown
MT_DEFAULT_NAMEPART=tmp
MT_DEFAULT_PKDESTREL=''
MT_DEFAULT_TFMDESTREL=''
MT_DEFAULT_MFDESTREL=''
MT_DEFAULT_DESTROOT='$KPSE_DOT'
# Find the font: test tfm first, then mf, then possible sauterized mf.
fullname=`kpsewhich "$NAME.tfm" 2>/dev/null`
test -z "$fullname" && fullname=`kpsewhich "$NAME.mf" 2>/dev/null`
if test -z "$fullname"; then
rootname=`echo $NAME | sed 's/[0-9]*$//'`
fullname=`kpsewhich "b-$rootname.mf" 2>/dev/null`
# Fonts starting with wn* get special treatment:
if test -z "$fullname"; then
case $rootname in
wn*) lhname=`echo $NAME | sed 's/^wn/lh/'`
fullname=`kpsewhich "$lhname.mf" 2>/dev/null`;;
*) fullname=`kpsewhich "$rootname.mf" 2>/dev/null`
esac
fi
fi
# After all this, do we _have_ a font?
if test -z "$fullname"; then
# We have found nothing, so force using the fontmaps as a last resort.
# This also means mktexnam can be queried for advice on where to
# place fonts.
MT_FEATURES="$MT_FEATURES:fontmaps"
MT_DESTROOT="$MT_VARTEXFONTS"
else
# Normalize $fullname.
fullname=`echo "$fullname" | sed 's%//*%/%g'`
# See if $fullname comes from a standard location.
OIFS=$IFS;IFS=$SEP
for i in `kpsewhich --expand-path='$TEXMF/fonts'"$SEP$MT_VARTEXFONTS"`
do
case "$fullname" in
$i/*)
# We now have a preliminary value for the destination root.
MT_DESTROOT="$i"
# When we're done, relfmt contains one of these:
# "/source/$MT_NAMEPART/"
# "/$MT_NAMEPART/source/"
# while namepart contains the actual namepart.
relfmt=`echo "$fullname" | \
sed -e 's%^'"$i"'(/.*/)[^/]*$%\1%' \
-e 's%^/tfm/%/source/%' \
-e 's%/tfm/$%/source/%'`
namepart=`echo "$relfmt" | sed -e 's%/source/%/%'`
# See if namepart is empty.
if test "$namepart" != "/"; then
relfmt=`echo "$relfmt" | \
sed -e 's%'"$namepart"'%/$MT_NAMEPART/%'`
else
# Assume TDS.
relfmt='/source/$MT_NAMEPART/'
namepart=''
fi
# Determine supplier and typeface from namepart. If there is
# only one part in the namepart, we take it to be the typeface.
MT_SUPPLIER=`echo $namepart | sed 's%^/([^/]*)/(.*)$%\1%'`
MT_TYPEFACE=`echo $namepart | sed 's%^/([^/]*)/(.*)$%\2%'`
if test -z "$MT_TYPEFACE"; then
MT_TYPEFACE="$MT_SUPPLIER";
MT_SUPPLIER=''
fi
# Phew. Now we create the relative paths for pk, tfm and source.
MT_NAMEPART='$MT_SUPPLIER/$MT_TYPEFACE'
MT_PKDESTREL=`echo "$relfmt" | sed 's%/source/%/pk/$MT_MODE/%'`
MT_TFMDESTREL=`echo "$relfmt" | sed 's%/source/%/tfm/%'`
MT_MFDESTREL=`echo "$relfmt"`
# And we're done with the loop now.
break
esac
done
IFS=$OIFS
fi
# In case some variables remain unset.
: ${MT_DESTROOT=$MT_DEFAULT_DESTROOT}
: ${MT_SUPPLIER=$MT_DEFAULT_SUPPLIER}
: ${MT_TYPEFACE=$MT_DEFAULT_TYPEFACE}
: ${MT_NAMEPART=$MT_DEFAULT_NAMEPART}
: ${MT_PKDESTREL=$MT_DEFAULT_PKDESTREL}
: ${MT_TFMDESTREL=$MT_DEFAULT_TFMDESTREL}
: ${MT_MFDESTREL=$MT_DEFAULT_MFDESTREL}
# Handle the options.
test -n "$MT_MKTEXNAM_OPT" && . "$MT_MKTEXNAM_OPT"
# Adjust MT_DESTROOT, if necessary.
if test "x$MT_DESTROOT" != "x$MT_DEFAULT_DESTROOT"; then
# Do we have write access and permission?
test -w "$MT_DESTROOT" || USE_ALTERNATE=1
# We distinguish system trees from the rest.
systexmf="`kpsewhich --expand-path='{$SYSTEXMF}/fonts'`$SEP$MT_VARTEXFONTS"
case "$SEP$systexmf$SEP" in
*$SEP$MT_DESTROOT$SEP*) # A system tree, check for varfonts.
if test "x$USE_VARTEXFONTS" = x1 || test "x$USE_ALTERNATE" = x1; then
MT_DESTROOT=$MT_VARTEXFONTS
fi ;;
*) # A non-system tree.
test "x$USE_ALTERNATE" = x1 && MT_DESTROOT=$MT_DEFAULT_DESTROOT ;;
esac
fi
# echo dest $DEST pkdest $MT_PKDESTDIR >&2
case "$DEST" in
"") ;;
/* | [A-z]:/*) # Absolute, explicit destdir => use it.
MT_PKDESTDIR=$DEST
MT_TFMDESTDIR=$DEST
MT_MFDESTDIR=$DEST
MT_NAMEPART=;;
*) # Relative destdir => append to the default.
MT_NAMEPART=$DEST;;
esac
# echo destroot $MT_DESTROOT destrel $MT_PKDESTREL name $MT_NAMEPART
eval MT_MODE=\"$MODE\"
eval MT_NAMEPART=\"$MT_NAMEPART\"
eval MT_DESTROOT=\"$MT_DESTROOT\"
eval MT_PKDESTREL=\"$MT_PKDESTREL\"
eval MT_TFMDESTREL=\"$MT_TFMDESTREL\"
eval MT_MFDESTREL=\"$MT_MFDESTREL\"
eval MT_PKDESTDIR=\"$MT_PKDESTDIR\"
eval MT_TFMDESTDIR=\"$MT_TFMDESTDIR\"
eval MT_MFDESTDIR=\"$MT_MFDESTDIR\"
eval MT_PKNAME=\"$MT_PKDESTDIR/$MT_PKBASE\"
eval MT_TFMNAME=\"$MT_TFMDESTDIR/$MT_TFMBASE\"
eval MT_MFNAME=\"$MT_MFDESTDIR/$MT_MFBASE\"
# echo destroot $MT_DESTROOT destrel $MT_PKDESTREL name $MT_NAMEPART
echo "$MT_PKNAME$SEP$MT_TFMNAME$SEP$MT_MFNAME" | sed 's%//*%/%g'
|