perm filename GREEKL.MF[1,3]1 blob sn#498478 filedate 1980-03-28 generic text, type C, neo UTF8
C00001 00001
C00003 00002	% This lower-case Greek alphabet was prepared by D. E. Knuth in December, 1979,
C00004 00003	"Lower case Greek alpha"
C00005 00004	"Lower case Greek beta"
C00006 00005	"Lower case Greek gamma"
C00007 00006	"Lower case Greek delta"
C00008 00007	"Lower case Greek epsilon"
C00009 00008	"Lower case Greek zeta"
C00010 00009	"Lower case Greek eta"
C00011 00010	"Lower case Greek theta"
C00012 00011	"Lower case Greek iota"
C00013 00012	"Lower case Greek kappa"
C00014 00013	"Lower case Greek lambda"
C00015 00014	"Lower case Greek mu"
C00016 00015	"Lower case Greek nu"
C00017 00016	"Lower case Greek xi"
C00019 00017	"Lower case Greek pi"
C00020 00018	"Lower case Greek rho"
C00021 00019	"Lower case Greek sigma"
C00023 00020	"Lower case Greek tau"
C00024 00021	"Lower case Greek upsilon"
C00025 00022	"Lower case Greek phi"
C00026 00023	"Lower case Greek chi"
C00027 00024	"Lower case Greek psi"
C00028 00025	"Lower case Greek omega"
C00029 00026	"Variant lower case Greek phi"
C00030 00027	"Variant lower case Greek theta"
C00031 00028	"Variant lower case Greek omega"
C00033 ENDMK
% This lower-case Greek alphabet was prepared by D. E. Knuth in December, 1979,
% inspired by the Monotype alphabet used in {\sl The Art of Computer Programming}.
% Its spacing is intended for math formulas only.
% Character codes \¬013--\¬037 and \¬173--\¬177 are used.

new mc,lbowl,lhook,rbowl,rhook,rstem,hic;	% spacing corrections
"Lower case Greek alpha";
call charbegin('013,10,mc.lbowl,-mc.rhook,px,0,0);
hpen; x1=x3=4.5u; lft2x2=round u;
top0y1=m+oo; bot0y3=-oo; y2=y3;
call `a darc(1,2,w2);	% left of bowl
rt0x4=round(r-u); top0y4=.875[e,m];
w0 draw 3{1,0}..4{0,1};	% upper diagonal
x5=r-2.5u; x6=r-2u; y5=2/3m; y6=1/3m;
bot0y7=-oo; x7=r-u; x8=good0r; y8=y6;
draw |w0#|1{1,0}..|w1#|5{x6-x5,y6-y5}..
	|w1#|6{x6-x5,y6-y5}..|w0#|7{1,0}..8{0,1}.	% lower diagonal and tail
"Lower case Greek beta";
call charbegin('014,9.5,mc(pu-pd.slant-.5pw),
hpen; x1=x2=x9=good0 1.5u; bot0y1=-d; y2=m;
x3=x5=x8=5u; rt1x4=round(r-1.5u);
x6=good2(r-1.5u); lft0x7=round 3.5u;
top0y3=h+oo; bot0y4=m-w7; top0y5=m; bot0y6=-oo; y4=y7; y6=y8; y9=.5m;
w0 draw 1..2{0,1}..3{1,0};	% stem and shoulder
call `a darc(3,4,w1);	% upper bowl
call `b darc(5,7,w0);	% loop
call `c darc(5,6,w2);	% lower bowl
call `d arc(8,9,w0).	% link
"Lower case Greek gamma";
call charbegin('015,10,,-mc(2/3px.slant-.5pu),px,pd,1/3px.slant);
vpen; lft6x1=round .5u; bot6y1=e; top8y2=m; x2=3u;
x3=1/sqrttwo[x2,x4]; y3=1/sqrttwo[y4,y2];
rt6x4=round(r-u); y4=-.5d; x5=.5[x4,x6]; bot6y5=-d-o;
lft6x6=round(r-u-1/3[w0,w1]); y6=y4; x7=x4; top6y7=m;
draw |w6#|1{0,1}..|w8#|2{1,0}..|w6#|3{x4-x2,y4-y2}..4{0,-1}..
	5{-1,0}..6{0,1}..7{2(x7-x6),y7-y6}.	% stroke
"Lower case Greek delta";
call charbegin('016,8,mc.lbowl,-mc(.7px.slant-pu),ph,0,
hpen; x1=4.5u; top0y1=m; x2=good2 1.5u; y2=y3;
x3=x1; bot0y3=-oo; x4=4u; top0y4=h+oo;
lft11x5=round(1.5u); rt11x6=round(r-u);
x7=x8=r-2u; y7=.9h; y8=m;
call `a darc(1,2,w2);	% left of bowl
call `b sdraw(4,5,1,6,3,w11,w8,-h/(18u));	% shoulder and right of bowl
w0 draw 4{1,0}..7(..8).	% point
"Lower case Greek epsilon";
call max(px.slant+.5pw-2pu,-.5pu);
call charbegin('017,8,mc.lbowl,-mc.acc,px,0,0);
hpen; x0-.5u=x3=r-3u; x1=.5(r+u); top0y1=m; y0=y1; x6=x0;
x2=good2 1.5u; y2=y5=y6=e; x4=r-u; x5=r+.5u; bot0y3=-oo;
new aa; x4=aa[x6,x5]; y4=(sqrt(1-aa.aa))[y6,y3];
w0 draw 0..1;	% strengthen upper point
call `a arc(1,2,w2);	% upper left of bowl
call `b arc(3,2,w2);	% lower left of bowl
draw 3{1,0}..4(..5);	% lower point
draw 2..6.	% bar
"Lower case Greek zeta";
call charbegin('020,7,mc.lbowl,0,.25[px,ph],pd,px.slant);
hpen; lft0x1=round 3.5u; y1=.25[m,h];
x2=x3=x6=x8=5u; bot0y2=m-w7; y2=y4; top0y3=m;
rt0x4=round(r-.5u); lft10x5=round u; y6=0; rt10x7=round(r-.5u);
bot0y8=-d; x9=3u; x10=2u; y9=-.75d; y10=0;
w0 draw 1{0,-1}..2{1,0};	% flourish
call `a darc(3,4,w0);	% loop
call `b sdraw(3,5,6,7,8,w10,w8,-e/(6u));	% stroke
draw 8{-1,0}..9(..10).	% point
"Lower case Greek eta";
call charbegin('021,10,mc.lhook,-mc(rstem-2/3px.slant),px,pd,1/3px.slant);
x1=good1 2.5u; call `a entry(0,1);	% opening hook
cpen; x2=x1; bot1y2=-oo; w1 draw 1..2;	% left stem
x3=good1(r-2.5u); call `b italhstroke(2,3);	% shoulder
x4=x3; bot1y4=-d-o; draw 3..4.	% right stem
"Lower case Greek theta";
call charbegin('022,8,mc(.3ph.slant+pu-.5pwii),
x1=r-x1;	% axis of left-right symmetry
hpen; x2=x4=good2 1.5u; x3=x5=r-x4;
top0y1=h+oo; bot0y2=-oo; y3=y2; y4=y5=.5[y1,y2];
call `a darc(1,2,w2);	% left part of bowl
call `b darc(1,3,w2);	% right part of bowl
w0 draw 4..5.	% bar
"Lower case Greek iota";
call charbegin('023,5,0,-mc.rhook,px,0,0);
cpen; x1=good1 1.5u; x2=x1-.25u; top1y1=m+oo;
call `a skewexit(2,r);	% closing hook
w1 draw 1{0,-1}..2{-u,-m}.	% stem
"Lower case Greek kappa";
call charbegin('024,9,0,-mc.rhook,px,0,0);
cpen; x1=x2=x5=good1 1.5u; top1y1=m+oo; bot1y2=-oo;
top3y3=top6y4=m; x3=x4; rt3x3=round(r-1.5u);
y5=e; x6=6u; x7=7.75u; x8=good0r;
y6=.5e; bot0y7=-oo; y8=1/3m;
w1 draw 1..2;	% stem
w3 draw 3;	% bulb
←hpen; w0 draw 5{1,0}..4{1,0};	% upper diagonal
draw |w0#|5{1,0}..|w1#|6{0,-1}..|w0#|7{1,0}..8{0,1}.	% lower diagonal
"Lower case Greek lambda";
call charbegin('025,10.5,0,0,ph,0,0);
cpen; top6y1=h; x1=-2u; x2=0; y2=.7[m,h]; x3=r-2u; y3=.125e;
new aa; x4=aa[x2,x3]; y4=aa[y2,y3]; y4=.5[e,m]; x5=1.5u; bot1y5=-oo;
hpen; x6=r-1.5u; bot1y6=-oo;
draw |w0#|1{1,0}..|w1#|2{x3-x2,y3-y2}..3{x3-x2,y3-y2}..
	6{2(x6-x3),y6-y3};	% long diagonal
call `a cdraw(5,4,1,0).	% short diagonal
"Lower case Greek mu";
call charbegin('026,9,mc(pu-pd.slant-.5pwi),-mc.rhook,px,pd,0);
cpen; x1=x2=x3=good1 1.5u;
x4=x3+.75u; x5=.55[x3,x6]; x6=x7=good1 6.5u;
top1y1=m+oo; bot1y2=-d-o; y3=.7e; y4=.25[y5,e]; bot6y5=-oo; y6=y1;
call `a exit(7,r);	% closing hook
w1 draw 1..2; draw 6..7;	% stems
hpen; draw |w1#|3{0,-1}..|.75[w0,w1]|4..|w0#|5{1,0}..6{0,1}.	% stroke
"Lower case Greek nu";
call charbegin('027,9,0,-mc(rstem-1/3px.slant-.5pu),px,0,1/3px.slant+.5mi.pu);
cpen; x1=x2=good1 1.5u; x3=r-1.5u;
top6y1=m+ssd; bot6y2=0; top1y3=m+oo;
hpen; w1 draw 1..2;	% stem
call `a sserif(1,1,2,-lcs);	% serif
rpen#; w1 draw 2{36u,m}..3{0,1};	% erase excess at bottom
cpen; w1 draw 3;	% bulb
hpen; draw |w0|2{36u,m}..|w1#|3{0,1}.	% diagonal
"Lower case Greek xi";
call charbegin('030,9,0,0,ph,pd,.75[px,ph].slant-2pu);
hpen; top0y1=h; lft0x1=round 3u;
x2=x3=5u; bot0y2=top0y3-w7; top0y3=round(y1-.25(h-m)); y4=y2;
rt0x4=round x2+1.5u; lft1x5=round u; y5=.5[y3,y6];
x6=x7=5u; bot0y6=top0y7-w7; top0y7=round .5h; y8=y6;
rt0x8=round x6+1.5u;
lft10x11=round u; x12=r-3u; y12=-1/4d; rt10x13=round(r-.5u);
x9=r-2u; bot0y9=-d-oo; x10=x9-2u; y10=-.75d; x14=x10-2u; y14=0;
w0 draw 1{0,-1}..2{1,0};	% flourish
call `a darc(3,4,w0);	% upper loop
call `b arc(3,5,w1);	% top of bowl
call `c arc(6,5,w1);	% bottom of bowl
call `d darc(7,8,w0);	% lower loop
call `e sdraw(7,11,12,13,9,w10,w8,-e/(12u));	% stroke
draw 9{-1,0}..10(..14).	% point
"Lower case Greek pi";
call charbegin('031,10,mc(.7px.slant-.5pw-.5pu),
call `a pistroke;	% bar
cpen; bot1y2=-oo; top7y1=m; y3=y1; y4=y2;
x1=good0 3.5u; x2=good1 3u; x3=good0 6u; x4=good1 7.5u;
hpen; draw |w0#|1{0,-1}..|w1#|2{3.14159(x2-x1),y2-y1};	% left stem
draw |w0#|3{0,-1}..|w1#|4{3.14159(x4-x3),y4-y3};	% right stem
cpen; w1 draw 2; draw 4.	% make the end points round
"Lower case Greek rho";
call charbegin('032,8,mc(pu-pd.slant-.5pwi),-mc.rbowl,px,pd,0);
cpen; x1=x2=good1 1.5u; x4=good2(r-1.5u); x3=x5=.5[x1,x4];
bot1y2=-d-o; y1=.5[y3,y5]; top6y3=m+oo; bot6y5=-oo; y4=y5;
w1 draw 2..1;	% stem
call `a arc(3,1,w1);	% upper left part of bowl
call `b darc(3,4,w2);	% right part of bowl
call `c arc(5,1,w0).	% lower left part of bowl
"Lower case Greek sigma";
call charbegin('033,10,mc.lbowl,-mc(2/3px.slant-.5pu),px,0,1/3px.slant);
cpen; top7y2=top6y1=m; bot7y2=bot6y3; y11=y2;
y8=y9=y10=y6=y5=y4=.5[y2,y7]; bot6y7=-oo;
x1=x2=x3=x7=.5(r-u); rt7x11=r-u;
lft0x8=lft2x9=round .5u; rt0x10=rt2x9;
lft0x6=lft1x5; rt0x4=rt1x5=round(r-1.5u);
x12=1/sqrttwo[x1,x8]; y12=1/sqrttwo[y8,y1];
x13=1/sqrttwo[x3,x10]; y13=1/sqrttwo[y10,y3];
w7 draw 2..11;	% bar
hpen; w0 ddraw 8{0,1}..12{x1-x8,y1-y8}..1{1,0}..4{0,-1},
	10{0,1}..13{x3-x10,y3-y10}..3{1,0}..6{0,-1};	% upper part of bowl
call `a arc(7,9,w2);	% lower left part of bowl
call `b arc(7,5,w1).	% lower right part of bowl
"Lower case Greek tau";
call charbegin('034,8,mc(.7px.slant-.5pw-.5pu),.5,
call `a pistroke;	% bar
cpen; x1=x2=good1 3.5u; top6y1=m; bot1y2=-oo;
w1 draw 2;	% make lower end point round
hpen; draw |w0#|1..|w1#|2.	% stem
"Lower case Greek upsilon";
call charbegin('035,10,mc.lhook,-2/3mc.px.slant,px,0,1/3px.slant);
x2=good1 2.5u; x1=x2+.25u; x3=x2+.8u;
call `a skewentry(0,1);	% opening hook
hpen; y2=.7[y4,e]; y3=.25[y4,e]; bot0y4=-oo; x4=6u;
rt0x5=round(r-.5u); y5=e;
draw |w1|1{-u,-m}..|w1#|2{0,-1}..|.75[w0,w1]|3..
	|w0#|4{1,0}..5{0,1};	% stroke
call `b endv(5).	% closing bulb
"Lower case Greek phi";
call charbegin('036,11,mc.lbowl,-mc.rbowl,ph,pd,0);
x1=r-x1;	% axis of left-right symmetry
x2=good2 1.5u; x3=r-x2;
hpen; top0y1=m+oo; bot0y2=-oo; y3=y2;
top0y4=h; bot0y5=-d; x4=x5=x1;
call `a darc(1,2,w2);	% left half of bowl
call `b darc(1,3,w2);	% right half of bowl
w0 draw 4..5.	% stem
"Lower case Greek chi";
if (px+pd).slant>2pu:
	call charbegin('037,11,mc(1.5pu-pd.slant-.5pw),
else: call charbegin('037,11,mc(px.slant-.5pw-.5pu),
hpen; x1=good0 0; x2=u; x3=2.5u; x4=r-x3; x5=r-x2; x6=r-x1;
x7=good0(r-2u); x8=r-x7;
y1=y3=.875m; top0y2=m+oo; bot0y5=-d-oo; y2-y1=y4-y5; y4=y6;
top0y7=m; bot0y8=-d;
draw |w0|1{0,1}..|w0#|2{1,0}..|w1#|3{x4-x3,y4-y3}..|w1#|4{x4-x3,y4-y3}..
	|w0#|5{1,0}..6{0,1};	% upper left to lower right diagonal
w0 draw 7..8.	% upper right to lower left diagonal
"Lower case Greek psi";
call charbegin('173,11,mc.lhook,-2/3mc.px.slant,ph,pd,1/3px.slant);
x2=good1 2.5u; x1=x2+.25u; x3=x2+.8u;
call `a skewentry(0,1);	% opening hook
hpen; y2=.7[y4,e]; y3=.25[y4,e]; bot0y4=-oo; x4=6.5u;
rt0x5=round(r-.5u); y5=e;
draw |w1|1{-u,-m}..|w1#|2{0,-1}..|.75[w0,w1]|3..
	|w0#|4{1,0}..5{0,1};	% stroke
call `b endv(5);	% closing bulb
x7=x8=.5(r+u); top0y7=h; bot0y8=-d; w0 draw 7..8.	% stem
"Lower case Greek omega";
call charbegin('174,11,,-2/3mc.px.slant,px,0,1/3px.slant);
hpen; x1=good0 1.5u; lft0x2=round .5u; x3=3.5u; x5=good1 .5r;
rt0x4=rt1x5; lft0x6=lft1x5; x7=r-2.75u; rt0x8=round(r-.5u);
if lft0x4>rt0x6: new x4,x6; lft0x4=rt0x6=round .5r; 
vpen; top6y1=m; y2=y4=y6=y8=e; bot8y3=-oo; y5=good6 .2[e,m]; y7=y3;
draw |w6|1{2(x2-x1),y2-y1}..|w6#|2{0,-1}..|w8#|3{1,0}..|w6#|4{0,1}..
	5{-1,0}..|w6#|6{0,-1}..|w8#|7{1,0}..|w6#|8{0,1};	% strokes
call `a endv(8).	% closing bulb
"Variant lower case Greek phi";
call charbegin('175,12,.3mc.px.slant,-.7mc.px.slant,px,pd,0);
hpen; x1=good0 1.5u; lft0x2=round .5u; x3=.5(r+u);
rt0x4=round(r-.5u); x5=8u; x6=x7=good0 4.5u;
vpen; top6y1=m; y2=y4=e; bot7y3=-oo; top7y5=m+oo; y6=1/3m; bot1y7=-d-oo;
draw |w6|1{2(x2-x1),y2-y1}..|w6#|2{0,-1}..|w7#|3{1,0}..|w6#|4{0,1}..
	|w7#|5{-1,0}..|w6#|6{0,-1};	% stroke
hpen; draw |w0#|6..|w1#|7;	% stem
cpen; w1 draw 7.	% make the end point round
"Variant lower case Greek theta";
call charbegin('176,9,mc.lhook,-mc(.5[pe,px].slant+.5pw+.5pu),ph,0,0);
new w99; w99=round .5[w1,w2];
x1=good1 2.5u; call `a entry(0,1);	% opening hook
hpen; x2=x1; y2=.7[y4,e]; x3=x2+.4u; y3=.25[y4,e];
x4=.5[x1,x5]; bot0y4=-oo; x5=good99(r-1.5u); top0y5=h+oo;
x6=x4; y6=y5; lft0x7=round 3u; y7=.5[m,h];
x8=r; y8=y9=good6 .5[e,m]; x9=r+2u;
draw |w1|1..|w1#|2{0,-1}..|.75[w0,w1]|3..|w0#|4{1,0};	% lower left part of bowl
call `b darc(4,5,w99);	% right part of bowl
w0 draw 6{-1,0}..7{0,-1}..8(..9).	% loop
"Variant lower case Greek omega";
call charbegin('177,14.5,mc(.7px.slant-.5pw-.5pu),0,
call `a pistroke;	% bar
hpen; x1=good0 3u; lft0x2=round 2u; x3=4u; x5=good2 7.5u;
x7=r-4.5u; rt0x8=round(r-1.5u); x9=r-2.5u;
vpen; top6y1=m; y2=y8=e; bot7y3=-oo; y7=y3; y9=y1; bot1y5=e;
draw |w6|1{2(x2-x1),y2-y1}..|w6#|2{0,-1}..|w8#|3{1,0}..
	|w6#|5{0,1};	% left bowl
draw |w6#|5{0,-1}..|w8#|7{1,0}..|w6#|8{0,1}..
	9{2(x9-x8),y9-y8}.	% right bowl