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
|
# $Id: GNUmakefile,v 1.7 2023/12/12 22:47:56 karl Exp $
# Makefile for the mode_def collection. Public domain.
version = 4.3
default: check
testfonts = cmr5 cmtt8 cmti7 cmr10 cmti10 cmtt10 cmtt12 cmr17
%.600pk: %.600gf
gftopk $<
%.tfm %.600gf: modes.base
mf '&./modes \mode:=ljfour; nonstopmode; input $*'
test.ps: $(addsuffix .600pk,$(testfonts)) test.dvi
dvips test -o
test.dvi: $(addsuffix .tfm, $(testfonts)) test.tex
tex test
# Upload in directory modes/ per CTAN.
distdir = modes
distname = $(distdir)/modes.mf
dist: badnames
test -z `rcslocks`
rm -rf $(distdir) && mkdir $(distdir)
expand <modes.mf | sed 's/[ ]*$$//' >$(distname)
# ensure no trailing spaces crept into the source (sigh):
diff modes.mf $(distname)
# these three commands are tiny shell scripts, not distributed (better to
# start with the versioned file).
add-version $(version) $(distname)
add-date $(distname)
fix-checksum $(distname)
#
cp -p ChangeLog GNUmakefile README $(distdir)/
cp -p modedpicheck $(distdir)/
cp -p list $(distdir)/modelist.txt
cp -p shortlist $(distdir)/modenames.txt
cd $(distdir) && mft ./modes.mf && pdftex ./modes.tex && rm -f *.log modes.tex
rm -f modes.zip; zip -r modes.zip modes
# old stuff for karl.
# mv $$HOME/mail/2modes $(archive)/$(version).mail && gzip $(archive)/$(version).mail
# cp -p $(distname) $(archive) && gzip -f $(archive)/$(distname) && rooo
# cp -p $(distname) $(mfsys)/modes.mf
#archive = $(HOME)/misc/archive/modes
list: modes.mf
grep \^mode_def modes.mf | grep -v help | sed 's/\\\[//' >list
shortlist: list
sed 's/^mode_def \(.*\) =.*$$/\1/' list >$@
badnames: shortlist
sort $< | uniq -d
#
# don't check this any more; we don't need to limit to eight chars,
# and hitexlaptop and hitexmobile are longer.
# gawk '{if (length ($$0) > 8) {print $0; count++} } END {exit count}' $<
dvi: modes.dvi
modes.dvi: modes.tex
tex '\scrollmode \input modes.tex'
pdf: modes.pdf
modes.pdf: modes.tex
texfot pdftex '\nonstopmode \input modes.tex'
modes.tex: modes.mf
mft modes.mf
modes.base: modes.mf
mf -ini plain input modes\; dump
mv plain.base $@
# systematically check all modes, and some known past problems.
check: badnames modes.dvi checkx check-primitives check-modedpi \
cmr10.300pk logo10.2540gf test.ps cmbsy7.1200gf
# Check that Xerox info is included if requested. Must use -ini because
# mf.base includes modes.mf by default, and it intentionally stops
# itself from being read twice. So, for development convenience, do it
# all by hand (instead of depending on modes.base and dumping it anew
# every time). The conditional here is exactly what mktextfm does.
#
checkx cx:
rm -f plain.tfm
-mf -ini '\input plain; nonstopmode; input modes; mode:=cx; if known mode_include_extra_info_available: mode_include_extra_info fi; input logo10'
tftopl ./plain.tfm | fgrep CODING
check-mktextfm:
rm -f logo10.tfm
mktextfm --destdir=`pwd` logo10
# no xerox info by default:
! (tftopl ./logo10.tfm | fgrep CODING)
#
rm -f logo10.tfm
env MF_MODE_EXTRA_INFO=1 mktextfm --destdir=`pwd` logo10
# xerox info if requested:
tftopl ./logo10.tfm | fgrep CODING
# This will fail unless the new mktextfm is in PATH, and
# unless the correct modes.mf is compiled into mf.base.
# It seems like overkill to have a new option to mktextfm so we can
# specify a fake mf, something like "inimf \input plain \input modes ...".
# We'll just test after installation.
check-primitives: modes.base
# test for knuth: primitives work as designed, no Xerox info by default.
mf "&./modes \fontmaking:=1; end"
! (tftopl ./mfput.tfm | fgrep CODING)
check-modedpi:
modedpicheck
gft: cmr10.600gf
gftype -m -i ./$< >cmr10.600gft
cmr10.600gf: modes.base
mf '&./modes \mode:=ricoh; mag:=2; input cmr10'
# Make sure write-white works.
cmr10.300pk: modes.base
mf "&./modes \mode:=ricoh; scrollmode; input cmr10"
# cmbsy7 fails with blacker >= 3 and pixels_per_inch >= 1200.
cmbsy7.1200gf: modes.base
mf "&./modes \mode:=lexmarkr; scrollmode; input cmbsy7"
logo10.2540gf: shortlist modes.base
for f in `cat shortlist`; do echo $${f}; \
mf "&./modes \mode:=$${f}; scrollmode; input logo10"; \
done
realclean distclean clean mostlyclean:
rm -f *gf *.gft *pk *.tfm *.pl *.ps *.log *.base *.dvi
rm -f modes.dvi list shortlist modes.tex modes.pdf
|