summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/knuth-lib/grayf.mf
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-02-15 00:19:09 +0000
committerKarl Berry <karl@freefriends.org>2014-02-15 00:19:09 +0000
commit9efcba16ec708dc826905166f21a807b7f78d28c (patch)
tree02e8c03b763db51ef85c0a831e2220427515be68 /Master/texmf-dist/fonts/source/public/knuth-lib/grayf.mf
parenta4a0d07a6102faeeec5a28db70104eaa5549ecd1 (diff)
new package knuth-lib (named per ctan), for knuth files that make tfms; also reinstate manfnt.tfm, previously in misc and needed by plain.tex
git-svn-id: svn://tug.org/texlive/trunk@32971 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/knuth-lib/grayf.mf')
-rw-r--r--Master/texmf-dist/fonts/source/public/knuth-lib/grayf.mf82
1 files changed, 82 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/knuth-lib/grayf.mf b/Master/texmf-dist/fonts/source/public/knuth-lib/grayf.mf
new file mode 100644
index 00000000000..1a34e18fd1b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/knuth-lib/grayf.mf
@@ -0,0 +1,82 @@
+% More-or-less general gray font generator
+% See Appendix H of The METAFONTbook for how to use it
+
+forsuffixes m = mag,rep:
+ if unknown m: m := 1;
+ elseif (m<1) or (m<>floor m):
+ errmessage "Sorry, " & str m & " must be a positive integer";
+ m := 1; fi endfor
+
+mg := mag; mag := 1; mode_setup;
+if mg>1: hppp := hppp*mg; vppp := vppp*mg;
+ extra_endchar:=
+ "if charcode>0:currentpicture:=currentpicture scaled mg;fi"
+ & extra_endchar; fi;
+
+if picture pix_picture: rep := 1;
+ cull pix_picture keeping (1,infinity);
+else: for z=(0,2),(1,0),(2,3),(3,1):
+ fill unitsquare shifted z; endfor
+ if not boolean lightweight: addto currentpicture also
+ currentpicture rotated 90 xscaled -1; fi
+ if unknown scale: scale := max(1,round(pixels_per_inch/300)); fi
+ pix_wd := pix_ht := 4scale;
+ if rep>1: picture pix;
+ currentpicture := currentpicture shifted-(1,1); pix := currentpicture;
+ for r=1 upto rep-1: addto currentpicture also pix shifted(4r,0); endfor
+ cullit; pix := currentpicture;
+ for r=1 upto rep-1: addto currentpicture also pix shifted(0,4r); endfor
+ unfill unitsquare xscaled 4rep yscaled 2 shifted-(1,1);
+ unfill unitsquare yscaled 4rep xscaled 2 shifted-(1,1); cullit; fi
+ picture pix_picture; pix_picture := currentpicture scaled scale;
+ pix_wd := pix_ht := 4scale*rep; fi
+
+def # = *72.27/pixels_per_inch enddef;
+if unknown dotsize: dotsize := 2.5pix_wd/rep; fi
+
+beginchar(0,1.2dotsize#,1.2dotsize#,0);
+fill fullcircle scaled dotsize scaled mg; endchar;
+
+numeric a[]; newinternal b,k;
+def next_binary =
+ k := 0; forever: if k>b: a[incr b] := 0; fi
+ exitif a[k]=0; a[k] := 0; k := k+1; endfor
+ a[k] := 1 enddef;
+def next_special_binary =
+ if a[0]=1: for k=0 upto b: a[k] := 0; endfor a[incr b]
+ else: k := 0; forever: exitif a[incr k]=1; endfor
+ a[k-1] fi := 1 enddef;
+
+def make_char =
+ clearit; next_binary;
+ for k=0 upto b: if a[k]=1:
+ addto currentpicture also pix_picture shifted(0,-k*pix_ht); fi endfor
+ charcode := charcode+1; chardp := b*charht;
+ scantokens extra_endchar; shipout currentpicture enddef;
+
+charwd := pix_wd#; charht := pix_ht#; chardx := pix_wd*mg;
+b := -1;
+
+if boolean large_pixels:
+ for k=1 upto 7: make_char; charlist k:k+120; endfor
+ charcode := 120; b := -1;
+ addto pix_picture also pix_picture shifted (chardx,0);
+ charwd := 2charwd; chardx := 2chardx;
+ for k=1 upto 7: make_char; endfor
+else: for k=1 upto 63: make_char; endfor
+ let next_binary = next_special_binary;
+ for k=64 upto 120: make_char; endfor
+ for k=121,122: charcode := k;
+ addto currentpicture also currentpicture shifted (chardx,0);
+ charwd := 2charwd; chardx := 2chardx;
+ scantokens extra_endchar; shipout currentpicture; endfor
+ charlist 120:121:122; fi
+
+font_coding_scheme "GFGRAY";
+font_size 8(pix_wd#);
+font_normal_space pix_wd#;
+font_x_height pix_ht#;
+font_quad pix_wd#;
+fontdimen 8: if known rulethickness: rulethickness
+ else: pix_wd#/(2rep) fi;
+bye.