Mercurial > hg > octave-nkf
diff kpathsea/mktexnam @ 3172:1f0b06020e36
[project @ 1998-04-24 04:24:34 by jwe]
author | jwe |
---|---|
date | Fri, 24 Apr 1998 04:24:48 +0000 |
parents | |
children |
line wrap: on
line diff
new file mode 100755 --- /dev/null +++ b/kpathsea/mktexnam @@ -0,0 +1,169 @@ +#!/bin/sh +# maketexnam -- find PK and TFM names. +# te@informatik.uni-hannover.de, kb@mail.tug.org, and infovore@xs4all.nl. +# 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? + access -w "$MT_DESTROOT" || USE_ALTERNATE=1 + 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 + +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'