diff options
author | Karl Berry <karl@freefriends.org> | 2013-04-07 18:49:29 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-04-07 18:49:29 +0000 |
commit | 0746296a289b6a5486fcfbfb4c59f20f09d07c31 (patch) | |
tree | 436cff932182cdc9561a3396b49259ed95d91c40 /Master/texmf-dist/web2c/mktexnam | |
parent | c3cb2b9c6a7c64c095d84a47a60424858b934e70 (diff) |
texmf -> texmf-dist: web2c
git-svn-id: svn://tug.org/texlive/trunk@29723 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/web2c/mktexnam')
-rwxr-xr-x | Master/texmf-dist/web2c/mktexnam | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/Master/texmf-dist/web2c/mktexnam b/Master/texmf-dist/web2c/mktexnam new file mode 100755 index 00000000000..e8956624118 --- /dev/null +++ b/Master/texmf-dist/web2c/mktexnam @@ -0,0 +1,219 @@ +#!/bin/sh +# maketexnam -- find PK and TFM names. +# Primarily written by Thomas Esser, Karl Berry, and Olaf Weber. +# Public domain. + +version='$Id: mktexnam 16497 2009-12-24 18:38:47Z karl $' +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 --var-value=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 + elif test -e "$MT_TEXMFVAR"; then + # TEXMFVAR defined and exists, but it is not a directory? + FALLBACK=1 + else + # TEXMFVAR defined but does not exist, try to create it + MT_FEATURES=none "$MT_MKTEXDIR" "$MT_TEXMFVAR" || 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' + |