summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-12-14 00:12:03 +0000
committerKarl Berry <karl@freefriends.org>2014-12-14 00:12:03 +0000
commit003784987870c03b80d1c7c230c856f299aa9f22 (patch)
tree23d013b80366a12e1f330374a2e3519643726f89 /Master/texmf-dist/fonts/source
parent6616434a24f0432340c944777ebecdcc714ebca0 (diff)
regenerate tfm as part of knuth-lib, where the mf sources are; also move a variety of other knuth files into knuth-lib
git-svn-id: svn://tug.org/texlive/trunk@35820 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/fonts/source')
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/3test.mf53
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/6test.mf55
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/expr.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/io.mf23
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/logo.mf127
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/logo10.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/logo8.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/logo9.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/logobf10.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/logosl10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/null.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/rtest.mf13
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/test.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/waits.mf168
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/ztest.mf13
15 files changed, 532 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/3test.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/3test.mf
new file mode 100644
index 00000000000..8a62fb1fdd3
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/3test.mf
@@ -0,0 +1,53 @@
+% This tries all characters on TEST.MF using three different sets of parameters
+% (appropriate for italic styles)
+if unknown cmbase: input cmbase fi % omit if CMMF can be assumed
+mag=.5;
+mode_setup; let mode_setup=\;
+
+boolean running;
+def abort = hide(scrollmode; running:=false) enddef;
+def pause=stop "done with char "&decimal charcode&". " enddef;
+let iff=always_iff;
+def ligtable text t=enddef;
+def charlist text t=enddef;
+def extensible text t=enddef;
+
+string currenttitle;
+let semi=;; let echar=endchar; let endchar=enddef;
+def cmchar expr s = currenttitle:=s;
+ let;=testchar semi quote def chartext=enddef;
+def testchar = semi let;=semi;
+ % now `chartext echar' will generate the character to be tested
+ running:=true; errorstopmode;
+ for k=1 upto 6:
+ if running: if known params[k]: scantokens params[k]; font_setup;
+ currentwindow:=k;
+ currenttitle & ", " & fontname[k];
+ chartext echar; fi fi endfor
+ pause; enddef;
+
+string params[],fontname[];
+params[1]="ital_params"; fontname[1]="cmti10";
+params[2]="bold_ital_params"; fontname[2]="cmbxti10";
+params[3]="tt_params"; fontname[3]="cmmi10";
+
+w_rows=floor 1/2 screen_rows; w_cols=floor 1/3 screen_cols;
+def open(expr k,i,j)=
+ openwindow k from ((i-1)*w_rows,(j-1)*w_cols) to (i*w_rows,j*w_cols)
+ at (-10,140) enddef;
+def openit =
+ open(1,1,1); open(2,1,2); open(3,1,3);
+ open(4,2,1); open(5,2,2); open(6,2,3); enddef;
+
+begingroup delimiters begintext generate;
+ def makedef(expr s)(text t) =
+ expandafter def scantokens s = t enddef; flushtext enddef;
+ def flushtext suffix t = enddef;
+ for k=1 upto 6: if known params[k]:
+ makedef(params[k])
+ expandafter expandafter expandafter begintext
+ scantokens ("input "&fontname[k]); fi endfor
+endgroup;
+
+input test
+end
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/6test.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/6test.mf
new file mode 100644
index 00000000000..9c66d556fd7
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/6test.mf
@@ -0,0 +1,55 @@
+% This tries all characters on TEST.MF using six different sets of parameters
+if unknown cmbase: input cmbase fi % omit if CMMF can be assumed
+mag=.5;
+mode_setup; let mode_setup=\;
+
+boolean running;
+def abort = hide(scrollmode; running:=false) enddef;
+def pause=stop "done with char "&decimal charcode&". " enddef;
+let iff=always_iff;
+def ligtable text t=enddef;
+def charlist text t=enddef;
+def extensible text t=enddef;
+
+string currenttitle;
+let semi=;; let echar=endchar; let endchar=enddef;
+def cmchar expr s = currenttitle:=s;
+ let;=testchar semi quote def chartext=enddef;
+def testchar = semi let;=semi;
+ % now `chartext echar' will generate the character to be tested
+ running:=true; errorstopmode;
+ for k=1 upto 6:
+ if running: if known params[k]: scantokens params[k]; font_setup;
+ currentwindow:=k;
+ currenttitle & ", " & fontname[k];
+ chartext echar; fi fi endfor
+ pause; enddef;
+
+string params[],fontname[];
+params[1]="roman_params"; fontname[1]="cmr10";
+params[2]="sans_params"; fontname[2]="cmssbx10";
+params[3]="tt_params"; fontname[3]="cmtt10";
+params[4]="bold_params"; fontname[4]="cmb10";
+params[5]="quote_params"; fontname[5]="cmssqi8";
+params[6]="ital_params"; fontname[6]="cmti10";
+
+w_rows=floor 1/2 screen_rows; w_cols=floor 1/3 screen_cols;
+def open(expr k,i,j)=
+ openwindow k from ((i-1)*w_rows,(j-1)*w_cols) to (i*w_rows,j*w_cols)
+ at (-10,140) enddef;
+def openit =
+ open(1,1,1); open(2,1,2); open(3,1,3);
+ open(4,2,1); open(5,2,2); open(6,2,3); enddef;
+
+begingroup delimiters begintext generate;
+ def makedef(expr s)(text t) =
+ expandafter def scantokens s = t enddef; flushtext enddef;
+ def flushtext suffix t = enddef;
+ for k=1 upto 6: if known params[k]:
+ makedef(params[k])
+ expandafter expandafter expandafter begintext
+ scantokens ("input "&fontname[k]); fi endfor
+endgroup;
+
+input test;
+bye
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/expr.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/expr.mf
new file mode 100644
index 00000000000..fe05a01322f
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/expr.mf
@@ -0,0 +1,5 @@
+string s[]; s1="abra";
+path p[]; p1=(0,0)..(3,3); p2=(0,0)..(3,3)..cycle;
+tracingonline:=1; scrollmode;
+forever: message "gimme an expr: "; s0:=readstring;
+show scantokens s0; endfor
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/io.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/io.mf
new file mode 100644
index 00000000000..58a8be68db2
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/io.mf
@@ -0,0 +1,23 @@
+mode_setup;
+ em#:=10pt#; cap#:=7pt#;
+ thin#:=1/3pt#; thick#:=5/6pt#;
+ o#:=1/5pt#;
+define_pixels(em,cap);
+define_blacker_pixels(thin,thick);
+define_corrected_pixels(o);
+ curve_sidebar=round 1/18em;
+beginchar("O",0.8em#,cap#,0); "The letter O";
+ penpos1(thick,10); penpos2(.1[thin,thick],90-10);
+ penpos3(thick,180+10); penpos4(thin,270-10);
+ x1l=w-x3l=curve_sidebar; x2=x4=.5w;
+ y1=.49h; y2l=-o; y3=.51h; y4l=h+o;
+ penstroke z1e{down}..z2e{right}
+ ..z3e{up}..z4e{left}..cycle;
+ penlabels(1,2,3,4); endchar;
+def test_I(expr code,trial_stem,trial_width) =
+ stem#:=trial_stem*pt#; define_blacker_pixels(stem);
+ beginchar(code,trial_width*em#,cap#,0); "The letter I";
+ penpos1(stem,15); penpos2(.9stem,12); penpos3(stem,10);
+ x1=x2=x3=.5w; y1=h; y2=.55h; y3=0; x2l:=1/6[x2l,x2];
+ penstroke z1e..z2e{down}..z3e;
+ penlabels(1,2,3); endchar; enddef;
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/logo.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/logo.mf
new file mode 100644
index 00000000000..2a308ab917b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/logo.mf
@@ -0,0 +1,127 @@
+% Routines for the METAFONT logo, as found in The METAFONTbook
+% Extended to characters P and S for John Hobby's METAPOST
+% (logo10.mf is a typical parameter file)
+
+mode_setup;
+if unknown slant: slant:=0 else: currenttransform:=
+ identity slanted slant yscaled aspect_ratio fi;
+
+ygap#:=(ht#/13.5u#)*xgap#; % vertical adjustment
+ho#:=o#; % horizontal overshoot
+leftstemloc#:=2.5u#+s#; % position of left stem
+barheight#:=.45ht#; % height of bar lines
+py#:=.9px#; % vertical pen thickness
+
+define_pixels(s,u);
+define_whole_pixels(xgap);
+define_whole_vertical_pixels(ygap);
+define_blacker_pixels(px,py);
+pickup pencircle xscaled px yscaled py;
+logo_pen:=savepen;
+define_good_x_pixels(leftstemloc);
+define_good_y_pixels(barheight);
+define_corrected_pixels(o);
+define_horizontal_corrected_pixels(ho);
+
+def beginlogochar(expr code, unit_width) =
+ beginchar(code,unit_width*u#+2s#,ht#,0);
+ pickup logo_pen enddef;
+
+def super_half(suffix i,j,k) =
+ draw z.i{0,y.j-y.i}
+ ... (.8[x.j,x.i],.8[y.i,y.j]){z.j-z.i}
+ ... z.j{x.k-x.i,0}
+ ... (.8[x.j,x.k],.8[y.k,y.j]){z.k-z.j}
+ ... z.k{0,y.k-y.j} enddef;
+
+def super_crescent(suffix i,j,k) =
+ draw z.i{x.j-x.i,0}
+ ... (.8[x.i,x.j],.8[y.j,y.i]){z.j-z.i}
+ ... z.j{0,y.k-y.i}
+ ... (.8[x.k,x.j],.8[y.j,y.k]){z.k-z.j}
+ ... z.k{x.k-x.j,0} enddef;
+
+beginlogochar("M",18);
+x1=x2=leftstemloc; x4=x5=w-x1; x3=w-x3;
+y1=y5; y2=y4; bot y1=-o;
+top y2=h+o; y3=y1+ygap;
+draw z1--z2--z3--z4--z5;
+labels(1,2,3,4,5); endchar;
+
+beginlogochar("E",14);
+x1=x2=x3=leftstemloc;
+x4=x6=w-x1+ho; x5=x4-xgap;
+y1=y6; y2=y5; y3=y4;
+bot y1=0; top y3=h; y2=barheight;
+draw z6--z1--z3--z4; draw z2--z5;
+labels(1,2,3,4,5,6); endchar;
+
+beginlogochar("T",13);
+italcorr ht#*slant + .5u#;
+if .5w<>good.x .5w: change_width; fi
+lft x1=-eps; x2=w-x1; x3=x4=.5w;
+y1=y2=y3; top y1=h; bot y4=-o;
+draw z1--z2; draw z3--z4;
+labels(1,2,3,4); endchar;
+
+beginlogochar("A",15);
+x1=.5w; x2=x4=leftstemloc; x3=x5=w-x2;
+top y1=h+o; y2=y3=barheight;
+bot y4=bot y5=-o;
+draw z4--z2--z3--z5; super_half(2,1,3);
+labels(1,2,3,4,5); endchar;
+
+beginlogochar("F",14);
+x1=x2=x3=leftstemloc;
+x4=w-x1+ho; x5=x4-xgap;
+y2=y5; y3=y4; bot y1=-o;
+top y3=h; y2=barheight;
+draw z1--z3--z4; draw z2--z5;
+labels(1,2,3,4,5); endchar;
+
+beginlogochar("P",14);
+x1=x2=x3=leftstemloc;
+x4=x5=.618[x1,w-x1];
+y2=y5; y3=y4; bot y1=-o;
+top y3=h; y2=barheight;
+draw z1--z3--z4; draw z2--z5;
+x6=.5[w-x1,lft w]; y6=.5[y4,y5];
+super_crescent(4,6,5);
+labels(1,2,3,4,5,6); endchar;
+
+beginlogochar("S",14);
+x3=x8=leftstemloc;
+x1=w-x3;
+x2=x4=.382[x3,x1];
+x5=x7=.9[x3,x1];
+x6=.5[x1,w];
+top y1=h; y4=barheight; bot y8=0;
+y1=y2; y3=.6[y2,y4]; y4=y5; y6=.3[y5,y7]; y7=y8;
+draw z1--z2; draw z4--z5; draw z7--z8;
+super_crescent(2,3,4);
+super_crescent(5,6,7);
+labels(1,2,3,4,5,6,7,8); endchar;
+
+beginlogochar("O",15);
+x1=x4=.5w; top y1=h+o; bot y4=-o;
+x2=w-x3=good.x(1.5u+s); y2=y3=barheight;
+super_half(2,1,3); super_half(2,4,3);
+labels(1,2,3,4); endchar;
+
+beginlogochar("N",15);
+x1=x2=leftstemloc; x3=x4=x5=w-x1;
+bot y1=bot y4=-o;
+top y2=top y5=h+o; y3=y4+ygap;
+draw z1--z2--z3; draw z4--z5;
+labels(1,2,3,4,5); endchar;
+
+ligtable "T": "A" kern -.5u#;
+ligtable "F": "O" kern -u#;
+ligtable "P": "O" kern u#;
+
+font_quad:=18u#+2s#;
+font_normal_space:=6u#+2s#;
+font_normal_stretch:=3u#;
+font_normal_shrink:=2u#;
+font_identifier:="MFLOGO" if slant<>0: & "SL" fi;
+font_coding_scheme:="AEFMNOPST only";
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/logo10.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/logo10.mf
new file mode 100644
index 00000000000..2b89c710d10
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/logo10.mf
@@ -0,0 +1,10 @@
+% 10-point METAFONT logo
+font_size 10pt#; % the "design size" of this font
+ht#:=6pt#; % height of characters
+xgap#:=0.6pt#; % horizontal adjustment
+u#:=4/9pt#; % unit width
+s#:=0; % extra space at the left and the right
+o#:=1/9pt#; % overshoot
+px#:=2/3pt#; % horizontal thickness of pen
+input logo % now generate the font
+bye % and stop.
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/logo8.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/logo8.mf
new file mode 100644
index 00000000000..59b37c072bc
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/logo8.mf
@@ -0,0 +1,10 @@
+% 8-point METAFONT logo
+font_size 8pt#; % the "design size" of this font
+ht#:=.8*6pt#; % height of characters
+xgap#:=.8*0.6pt#; % horizontal adjustment
+u#:=.82*4/9pt#; % unit width
+s#:=.2pt#; % extra space at the left and the right
+o#:=1/12pt#; % overshoot
+px#:=.8*2/3pt#; % horizontal thickness of pen
+input logo % now generate the font
+bye % and stop.
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/logo9.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/logo9.mf
new file mode 100644
index 00000000000..49ea7e99f75
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/logo9.mf
@@ -0,0 +1,10 @@
+% 9-point METAFONT logo
+font_size 9pt#; % the "design size" of this font
+ht#:=.9*6pt#; % height of characters
+xgap#:=.9*0.6pt#; % horizontal adjustment
+u#:=.91*4/9pt#; % unit width
+s#:=.08pt#; % extra space at the left and the right
+o#:=1/10pt#; % overshoot
+px#:=.9*2/3pt#; % horizontal thickness of pen
+input logo % now generate the font
+bye % and stop.
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/logobf10.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/logobf10.mf
new file mode 100644
index 00000000000..f943053ff5a
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/logobf10.mf
@@ -0,0 +1,10 @@
+% 10-point boldface METAFONT logo
+font_size 10pt#; % the "design size" of this font
+ht#:=6pt#; % height of characters
+xgap#:=23/20*0.6pt#; % horizontal adjustment
+u#:=23/20*4/9pt#; % unit width
+s#:=.1pt#; % extra space at the left and the right
+o#:=1/9pt#; % overshoot
+px#:=44/36pt#; % horizontal thickness of pen
+input logo % now generate the font
+bye % and stop.
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/logosl10.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/logosl10.mf
new file mode 100644
index 00000000000..741fdb9fa2e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/logosl10.mf
@@ -0,0 +1,3 @@
+% 10-point slanted METAFONT logo
+slant := 1/4;
+input logo10
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/null.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/null.mf
new file mode 100644
index 00000000000..9828fbb16f7
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/null.mf
@@ -0,0 +1,3 @@
+% This is an empty METAFONT source file. Why do you want it? Because if
+% mf says `Please type another input file name:' and if you don't have one
+% in mind, you can just say `null' and METAFONT will get out of its loop.
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/rtest.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/rtest.mf
new file mode 100644
index 00000000000..f5e449aa7db
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/rtest.mf
@@ -0,0 +1,13 @@
+% try all characters on TEST.MF using the parameters of cmr10
+if unknown cmbase: input cmbase fi % omit if CMMF can be assumed
+mode_setup;
+
+def generate suffix t= enddef;
+input cmr10; font_setup;
+
+let echar=endchar;
+def endchar= echar; stop "done with char "&decimal charcode&". " enddef;
+let iff=always_iff;
+
+input test;
+end
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/test.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/test.mf
new file mode 100644
index 00000000000..c2d81f03023
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/test.mf
@@ -0,0 +1,29 @@
+
+cmchar "Lowercase thorn";
+beginchar(oct"015",10u#+serif_fit#,asc_height#,desc_depth#);
+italcorr .5x_height#*slant+min(.5curve#-.85u#,-.1u#);
+adjust_fit(serif_fit#,0);
+pickup tiny.nib; pos1(stem',0); pos2(stem,0);
+pos0'(stem',0); pos0(stem,0); z0l=z0'l; x0'=x1; x0=x2;
+lft x1l=hround(2.5u-.5stem'); top y1=h;
+numeric edge; edge=rt x2r;
+pickup fine.nib; pos3(if hefty:thin_join else: hair fi,180);
+pos4(vair',90); pos5(curve,0); pos6(vair,-90);
+rt x3l=1/3[rt x2,edge]; y3=1/8[bar_height,x_height];
+x4l=w-.5(w-serif_fit)+.5u; top y4r=x_height+oo;
+rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.5x_height;
+x6=x3; bot y6r=-oo;
+(x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x5r,x4]);
+filldraw stroke z3e{up}...{right}z4e&super_arc.e(4,5)
+ &z5e{down}...{5(x6-x5),y6-y5}z6e; % bowl
+y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{right}z4l));
+pickup tiny.nib; bot y2=-d;
+filldraw stroke z1e--z0'e--z0e--z2e; % stem
+pickup crisp.nib; pos8(hair,0); pos7'(stem,0);
+z7'=z2; x8l=x7'l; bot y8=0;
+filldraw stroke z7'e--z8e; % point
+if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif
+ dish_serif(2,0,b,1/3,jut,c,1/3,0); fi % lower serif
+penlabels(0,1,2,3,4,5,6,8); endchar;
+
+
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/waits.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/waits.mf
new file mode 100644
index 00000000000..4d23e0a00d5
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/waits.mf
@@ -0,0 +1,168 @@
+% This file can be loaded after PLAIN.MF.
+% It introduces conventions that are commonly used at WAITS.
+base_version:=base_version&"/WAITS";
+
+% The WAITS implementation allows an extended character set;
+% characters :=, <=, <>, and >= are put into the class with <, =, >, :, and |;
+% character ^^L (form feed) is in a class by itself, and is like an "outer" \.
+% Files containing these special characters should not be expected to work
+% elsewhere unless the following replacements are made:
+ let <= = <=;
+ let <> = <>;
+ let >= = >=;
+ let := = :=;
+
+% Say "boise_proof" on the command line, to get proofmode on boise
+def boise_proof = lcode_:=" /";
+ extra_setup:=extra_setup&"grayfont grbois;" enddef;
+
+screen_rows:=400; screen_cols:=480;
+
+% Here are conventions for local output devices:
+
+mode_def dover = % dover mode: for the Xerox Dover
+ proofing:=0; % no, we're not making proofs
+ fontmaking:=1; % yes, we are making a font
+ tracingtitles:=0; % no, don't show titles in the log
+ pixels_per_inch:=384;
+ blacker:=1.2; % make pens somewhat blacker
+ fillin:=0; % no compensation for fillin
+ o_correction:=.6; % but don't overshoot as much
+ enddef;
+
+mode_def imagen = % imagen mode: for the Imagen 8/300 (Canon engine)
+ proofing:=0; % no, we're not making proofs
+ fontmaking:=1; % yes, we are making a font
+ tracingtitles:=0; % no, don't show titles in the log
+ pixels_per_inch:=300;
+ blacker:=0; % Canon engine is black enough
+ fillin:=.2; % and it tends to fill in diagonals
+ o_correction:=.6; %
+ enddef;
+
+mode_def qms = % qms mode: for the QMS (Xerox engine)
+ proofing:=0; % no, we're not making proofs
+ fontmaking:=1; % yes, we are making a font
+ tracingtitles:=0; % no, don't show titles in the log
+ pixels_per_inch:=300;
+ blacker:=.75; % (this value is conjectural)
+ fillin:=0; % (ditto)
+ o_correction:=.5; % (ditto)
+ enddef;
+
+mode_def aps = % aps mode: for the Autologic APS-Micro5
+ proofing:=0; % no, we're not making proofs
+ fontmaking:=1; % yes, we are making a font
+ tracingtitles:=1; % yes, show titles online
+ pixels_per_inch:=722.909; % that's roughly 10 per pt
+ blacker:=.2; % make pens a teeny bit blacker
+ fillin:=.2; % but compensate for diagonal fillin
+ o_correction:=1; % and keep the full overshoot
+ enddef;
+
+mode_def crs = % crs mode: for the Alphatype CRS
+ proofing:=0; % no, we're not making proofs
+ fontmaking:=1; % yes, we are making a font
+ tracingtitles:=1; % yes, show titles online
+ begingroup interim warningcheck:=0; % (we need to go past 4096)
+ pixels_per_inch:=4000+4000/3 endgroup; % HIGH res
+ blacker:=4; % make pens a lot blacker
+ fillin:=0; % but don't compensate for fillin
+ o_correction:=1; % and keep the full overshoot
+ enddef;
+
+mode_def boise = % boise mode: for the HP 2680A
+ proofing:=0; % no, we're not making proofs
+ fontmaking:=1; % yes, we are making a font
+ tracingtitles:=0; % no, don't show titles in the log
+ pixels_per_inch:=180;
+ blacker:=.55; % make pens a bit blacker
+ fillin:=.1; % and compensate for diagonal fillin
+ o_correction:=.3; % but don't overshoot much
+ enddef;
+
+mode_def DD = % DD mode: for the DataDisc (usually with mag=magstep 2=1.44)
+ proofing:=0; % no, we're not making proofs
+ fontmaking:=1; % yes, we are making a font
+ tracingtitles:=0; % no, don't show titles in the log
+ pixels_per_inch:=70; % really lowres
+ blacker:=0; % don't make the pens any blacker
+ fillin:=0; % and don't compensate for fillin
+ o_correction:=.2; % but suppress most overshoots
+ enddef;
+
+mode_def canon = % canon mode: for the old Imagen (Canon LBP10)
+ proofing:=0; % no, we're not making proofs
+ fontmaking:=1; % yes, we are making a font
+ tracingtitles:=0; % no, don't show titles in the log
+ pixels_per_inch:=240;
+ blacker:=.2; % make pens a wee bit blacker
+ fillin:=.2; % and compensate for fillin
+ o_correction:=.4; % but don't overshoot as much
+ enddef;
+
+mode_def newDD = % newDD mode: for DataDisc with special aspect ratio
+ proofing:=0; % no, we're not making proofs
+ fontmaking:=1; % yes, we are making a font
+ tracingtitles:=0; % no, don't show titles in the log
+ pixels_per_inch:=70; % really lowres
+ blacker:=0; % don't make the pens any blacker
+ fillin:=0; % and don't compensate for fillin
+ o_correction:=.2; % but suppress most overshoots
+ aspect_ratio:=4/3; % this is the new feature...
+ enddef;
+
+mode_def cg = % cg mode: for the Compugraphic 8600
+ proofing:=0; % no, we're not making proofs
+ fontmaking:=1; % yes, we are making a font
+ tracingtitles:=1; % yes, show titles online
+ pixels_per_inch:=1301.5; % a bit less than 20 per pt
+ blacker:=.2; % make pens a teeny bit blacker
+ fillin:=.2; % but compensate for diagonal fillin
+ o_correction:=1; % and keep the full overshoot
+ aspect_ratio:=1569/1301.5; % strange, no?
+ enddef;
+
+mode_def epson = % Epson
+ proofing:=0; % no, we're not making proofs
+ fontmaking:=1; % yes, we are making a font
+ tracingtitles:=0; % no, don't show titles in the log
+ pixels_per_inch:=240; % lowres
+ blacker:=0; % don't make the pens any blacker
+ fillin:=0; % and don't compensate for fillin
+ o_correction:=.2; % but suppress most overshoots
+ aspect_ratio:=9/10; % 216 dots/inch vertical
+ enddef;
+
+
+localfont:=imagen;
+
+% Finally, here are macros for Xerox-world font info:
+
+def font_family expr s = % string s names the font family, e.g., "CMR"
+ headerbyte 49: BCPL_string(s,20);
+ special "identifier "&s enddef;
+def coding_scheme expr s = % string s names the scheme, e.g. "TEX TEXT"
+ headerbyte 9: BCPL_string(s,40);
+ special "codingscheme "&s enddef;
+def font_face_byte expr x = % integer x gives the family member number,
+ headerbyte 72: x; % which should be between 0 and 255
+ special "fontfacebyte"; numspecial x enddef;
+
+def BCPL_string(expr s,n)= % string s becomes an n-byte BCPL string
+ for l:=if length(s)>=n: n-1 else: length(s) fi: l
+ for k:=1 upto l: , substring (k-1,k) of s endfor
+ for k:=l+2 upto n: , 0 endfor endfor enddef;
+
+Xerox_world:=1; % users can say `if known Xerox_world:...fi'
+
+inner end;
+def bye=
+ if fontmaking>0: font_family font_identifier_;
+ coding_scheme font_coding_scheme_;
+ font_face_byte max(0,254-round 2designsize); fi
+ tracingstats:=1; % at least for now we want this
+ end
+ enddef;
+
+outer bye,end;
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/ztest.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/ztest.mf
new file mode 100644
index 00000000000..35d1489e275
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/ztest.mf
@@ -0,0 +1,13 @@
+% try all characters on TEST.MF using the parameters of an unknown font
+if unknown cmbase: input cmbase fi % omit if CMMF can be assumed
+mode_setup;
+
+def generate suffix t= enddef;
+input z; font_setup;
+
+let echar=endchar;
+def endchar= echar; stop "done with char "&decimal charcode&". " enddef;
+let iff=always_iff;
+
+input test;
+end