summaryrefslogtreecommitdiff
path: root/fonts/modes/GNUmakefile
blob: 6afbdd60d3aa88893c17b82204f48811c5fecd76 (plain)
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.6 2020/09/08 22:13:43 karl Exp $
# Makefile for the mode_def collection. Public domain.

version = 4.2

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