1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
#!/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 </dev/null || {
grep '^!' $NAME.log >$$.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 </dev/null
|