diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-02 23:54:12 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-02 23:54:12 +0000 |
commit | 1377238750c74b1368814c7d74319ccbce32962d (patch) | |
tree | 8f07a7ef8732c5122d606cdb4119e038e373fc2d /Master/texmf/web2c/mktexnam | |
parent | 68f924e662b21d83bb49df2322329b6c416919b0 (diff) |
trunk/Master/texmf/web2c/
git-svn-id: svn://tug.org/texlive/trunk@39 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf/web2c/mktexnam')
-rwxr-xr-x | Master/texmf/web2c/mktexnam | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/Master/texmf/web2c/mktexnam b/Master/texmf/web2c/mktexnam new file mode 100755 index 00000000000..f9ed6902a1b --- /dev/null +++ b/Master/texmf/web2c/mktexnam @@ -0,0 +1,216 @@ +#!/bin/sh +# maketexnam -- find PK and TFM names. +# te@dbs.uni-hannover.de, kb@mail.tug.org, and infovore@xs4all.nl. +# Public domain. + +version='$Id: mktexnam,v 1.30 2004/12/28 20:55:56 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_PKBASE='$NAME.${DPI}pk'} +: ${MT_TFMBASE='$NAME.tfm'} +: ${MT_MFBASE='$NAME.mf'} +: ${MT_DEFAULT_SUPPLIER=unknown} +: ${MT_DEFAULT_TYPEFACE=unknown} +: ${MT_DEFAULT_NAMEPART='$MT_SUPPLIER/$MT_TYPEFACE'} +: ${MT_DEFAULT_PKDESTREL='pk/modeless/$MT_NAMEPART'} +: ${MT_DEFAULT_TFMDESTREL='tfm/$MT_NAMEPART'} +: ${MT_DEFAULT_MFDESTREL='source/$MT_NAMEPART'} +: ${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` + # LH fonts get special treatment: + if test -z "$fullname"; then + case $rootname in + # Czech/Slovak fonts get special treatment: + cs*|lcsss*|icscsc*|icstt*|ilcsss*) + fullname=`kpsewhich cscode.mf` + ;; + # LH fonts get special treatment: + wn[bcdfirstuv]*|rx[bcdfiorstuvx][bcfhilmostx]|l[abcdhl][bcdfiorstuvx]*) + lhprefix=`echo $NAME | sed 's/^\(..\).*/\1/'` + fullname=`kpsewhich "${lhprefix}codes.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 + : ${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 + set x `kpsewhich --expand-path='$TEXMF/fonts'"$SEP$MT_VARTEXFONTS"` + shift; IFS=$OIFS + for i + do + test -z "$i" && continue + 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"`} + break + esac + done +fi + +# In case some variables remain unset. +: ${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} + +# 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. +if test "x$MT_SUPPLIER" = xunknown \ + || test "x$MT_TYPEFACE" = xunknown; then + MT_FEATURES="$MT_FEATURES:fontmaps" +fi + +# Handle the options. +test -n "$MT_MKTEXNAM_OPT" && . "$MT_MKTEXNAM_OPT" + +# Adjust MT_DESTROOT, if necessary. +if test -n "${MT_DESTROOT}"; then + # 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. + # If the texmfvar option is set, use TEXMFVAR tree. + # Some additional uglyness handles the case where $TEXMFVAR exists + # but $TEXMFVAR/fonts doesn't (yet). + if test "x$USE_TEXMFVAR" = x1; then + : ${MT_TEXMFVAR=`kpsewhich --expand-path='$TEXMFVAR'`} + MT_DESTROOT=$MT_TEXMFVAR/fonts + if test -z "$MT_TEXMFVAR"; then + # Path expansion of $TEXMFVAR was empty. + FALLBACK=1 + elif test -d "$MT_DESTROOT"; then + # Do we have write access and permission? + kpseaccess -w "$MT_DESTROOT" || FALLBACK=1 + test -w "$MT_DESTROOT" || FALLBACK=1 + elif test -d "$MT_TEXMFVAR"; then + # De we have write access and permission? + kpseaccess -w "$MT_TEXMFVAR" || FALLBACK=1 + test -w "$MT_TEXMFVAR" || FALLBACK=1 + else + # TEXMFVAR defined and exists, but it is not a directory? + FALLBACK=1 + fi + else + # Do we have write access and permission? + kpseaccess -w "$MT_DESTROOT" || FALLBACK=1 + test -w "$MT_DESTROOT" || FALLBACK=1 + fi + # Fall back on VARTEXFONTS if the varfonts option is set, or + # we cannot write in the given tree. + if test "x$USE_VARTEXFONTS" = x1 || test "x$FALLBACK" = x1; then + MT_DESTROOT=$MT_VARTEXFONTS + fi ;; + *) # A non-system tree. + # Do we have write access and permission? + kpseaccess -w "$MT_DESTROOT" || FALLBACK=1 + test -w "$MT_DESTROOT" || FALLBACK=1 + # If we cannot write fall back of defaults. + test "x$FALLBACK" = x1 && MT_DESTROOT=;; + esac +fi + +if test -z "$MT_DESTROOT"; then + MT_DESTROOT=$MT_DEFAULT_DESTROOT + MT_PKDESTDIR=$MT_DEFAULT_DESTROOT + MT_TFMDESTDIR=$MT_DEFAULT_DESTROOT + MT_MFDESTDIR=$MT_DEFAULT_DESTROOT +fi + +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 + +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 "$MT_PKNAME$SEP$MT_TFMNAME$SEP$MT_MFNAME" | sed 's%//*%/%g' + |