% Please see the file LICENCE-wsuipa.txt for licensing information. % This is IGREEKL.MF in text format, as of Apr. 22, 1989. % This lowercase Greek alphabet was prepared by D. E. Knuth in December, 1979, % inspired by the Monotype faces used in {\sl The Art of Computer Programming}. % (It has been designed for math formulas, not Greek texts.) % The programs were revised for the new \MF\ conventions in 1985. % Character codes \0013--\0047 are generated. cmchar "Lowercase Greek epsilon"; beginchar(oct"030",8.25u#,x_height#,0); italcorr x_height#*slant-.5u#; adjust_fit(0,0); numeric top_thickness,mid_thickness,bot_thickness; top_thickness=max(fine.breadth,vround(slab-2vair_corr)); mid_thickness=max(fine.breadth,vround 2/3vair); bot_thickness=max(fine.breadth,vround(slab-vair_corr)); pickup fine.nib; pos2(top_thickness,90); top y2l=h+o; pos3(max(.6fine.breadth,.35[curve,cap_curve]-stem_corr),180); lft x3l=hround(1.25u); pos9(bot_thickness,angle(-2u,-h)); rt x9l=hround w-.75u; top y9l=vround .25h-o; y9r:=good.y y9r-eps; x9r:=good.x x9r; pos4(vair,-90); pos5(vair,-90); pos6(mid_thickness,90); x2=x6=x8=.5[1.5u,x9]; pos7(max(.6fine.breadth,.35[curve,cap_curve]-stem_corr),180); lft x7l=hround(.75u); lft x5=min(hround 4u,lft x6)-eps; pos8(bot_thickness,-90); bot y8r=-o; y3=.6[top y4l,bot y2l]; y7=.5[bot y6l,top y8l]; top y5l=vround(.54h+.5vair); y5r=y6l; x4=1/3[x5,x3l]; z4=z5+whatever*(150u,h); filldraw stroke pulled_super_arc.e(2,3)(.5superpull) & z3e{down}...z4e---z5e; % upper bowl filldraw z5r--z6l--z6r--z5l---cycle; % middle tip filldraw stroke pulled_super_arc.e(6,7)(.5superpull) & pulled_super_arc.e(7,8)(.5superpull); % lower bowl numeric bulb_diam[]; bulb_diam1=flare-.75(cap_stem-stem); bulb_diam2=flare+cap_stem-stem; pos0(bulb_diam1,0); pos1(hair,0); lft x0r=hround w-1.25u; y0=min(.9h-.5bulb_diam1,.75h+.5bulb_diam1); bulb(2,1,0); % upper bulb filldraw stroke term.e(8,9,right,1,4); % lower terminal penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; cmchar "Lowercase Greek reversed epsilon"; beginchar(oct"31",8.5u#,x_height#,0); italcorr x_height#*slant-.5u#; adjust_fit(0,0); numeric top_thickness,mid_thickness,bot_thickness; top_thickness=max(fine.breadth,vround(slab-2vair_corr)); mid_thickness=max(fine.breadth,vround 2/3vair); bot_thickness=max(fine.breadth,vround(slab-vair_corr)); pickup fine.nib; pos2(top_thickness,90); top y2l=h+o; pos3(max(.6fine.breadth,.35[curve,cap_curve]-stem_corr),0); rt x3r=hround(w-1.25u); pos4(vair,-90); pos5(vair,-90); pos6(mid_thickness,90); x2=x6=x8=.5[1.5u,x7]; pos7(max(.6fine.breadth,.35[curve,cap_curve]-stem_corr),0); rt x7r=hround(w-.75u); lft x5=min(hround 4u,lft x6)-eps; pos8(bot_thickness,-90); bot y8r=-o; y3=.6[top y4l,bot y2l]; y7=.5[bot y6l,top y8l]; top y5l=vround(.54h+.5vair); y5r=y6l; x4=1/3[x5,x3l]; z4=z5+whatever*(150u,h); filldraw stroke pulled_super_arc.e(2,3)(.5superpull) & z3e{down}...z4e---z5e; % upper bowl filldraw z5r--z6l--z6r--z5l---cycle; % middle tip filldraw stroke pulled_super_arc.e(6,7)(.5superpull) & pulled_super_arc.e(7,8)(.5superpull); % lower bowl numeric bulb_diam[]; bulb_diam1=flare-.75(cap_stem-stem); bulb_diam2=flare+cap_stem-stem; pos0(bulb_diam1,180); pos1(hair,180); lft x0r=hround 1.25u; y0=min(.9h-.5bulb_diam1,.75h+.5bulb_diam1); bulb(2,1,0); % upper bulb pos9(bot_thickness,angle(-2u,-h)); lft x9r=hround .75u; top y9l=vround .25h-o; y9r:=good.y y9r-eps; x9l:=good.x x9l; filldraw stroke term.e(8,9,left,1,4); % lower terminal penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; cmchar "Right-hook lowercase Greek reversed epsilon"; beginchar(oct"32",11.5u#,x_height#,0); italcorr x_height#*slant-.5u#; adjust_fit(0,0); numeric top_thickness,mid_thickness,bot_thickness; top_thickness=max(fine.breadth,vround(slab-2vair_corr)); mid_thickness=max(fine.breadth,vround 2/3vair); bot_thickness=max(fine.breadth,vround(slab-vair_corr)); pickup fine.nib; pos2(top_thickness,90); top y2r=h+o; pos3(.3[curve,cap_curve]-stem_corr,0); rt x3r=hround(.78w-1.25u); pos4(vair,-90); pos5(vair,-90); pos6(mid_thickness,90); x2=x6=x8=.5[1.5u,x7]; pos7(.3[curve,cap_curve]-stem_corr,0); rt x7r=hround(.78w-.75u); lft x5=min(hround 4u,lft x6)-eps; pos8(bot_thickness,-90); bot y8r=-o; y3=.6[top y4l,bot y2l]; y7=.5[bot y6l,top y8l]; top y5l=vround(.54h+.5vair); y5r=y6l; x4=1/3[x5,x3l]; z4=z5+whatever*(150u,h); filldraw stroke pulled_super_arc.e(2,3)(.5superpull) & z3e{down}...z4e---z5e; % upper bowl filldraw z5r--z6l--z6r--z5l---cycle; % middle tip filldraw stroke pulled_super_arc.e(6,7)(.5superpull) & pulled_super_arc.e(7,8)(.5superpull); % lower bowl numeric bulb_diam[]; bulb_diam1=flare-.5(cap_stem-stem); bulb_diam2=flare+cap_stem-stem; pos0(bulb_diam1,180); pos1(hair,180); lft x0r=hround 1.25u; y0=min(.9h-.5bulb_diam1,.75h+.5bulb_diam1); bulb(2,1,0); % upper bulb pos9(bot_thickness,angle(-2u,-h)); lft x9r=hround .75u; top y9l=vround .25h-o; y9r:=good.y y9r-eps; x9l:=good.x x9l; filldraw stroke term.e(8,9,left,1,4); % lower terminal % right hook pos10(hair,0); pos11(hair,0); pos12(hair,0); pos13(hair,90); pos14(hair,180); z10=z3; top y11=h; rt x11r=hround(x3r+2u)=rt x12r; y12=.65[y11,y13]=y14; x13=.5[x11,x14]; bot y13l=.5h; x14l=w; filldraw stroke z10e--z11e; filldraw stroke z11e--z12e...z13e...z14e; penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar; cmchar "Lowercase Greek closed reversed epsilon"; beginchar(oct"33",8.5u#,x_height#,0); italcorr x_height#*slant-.5u#; adjust_fit(0,0); numeric top_thickness,mid_thickness,bot_thickness; top_thickness=max(fine.breadth,vround(slab-2vair_corr)); mid_thickness=max(fine.breadth,vround 2/3vair); bot_thickness=max(fine.breadth,vround(slab-vair_corr)); pickup fine.nib; pos2(top_thickness,90); top y2r=h+o; pos3(max(.6fine.breadth,.35[curve,cap_curve]-stem_corr),0); rt x3r=hround(w-1.25u); pos4(vair,-90); pos5(vair,-90); pos5'(slab,180); y5'=y5; x5'=0; pos6(mid_thickness,90); x2=x6=x8=.5[1.5u,x7]; pos7(max(.6fine.breadth,.35[curve,cap_curve]-stem_corr),0); rt x7r=hround(w-.75u); lft x5=min(hround 4u,lft x6)-eps; pos8(bot_thickness,-90); bot y8r=-o; y3=.6[top y4l,bot y2l]; y7=.5[bot y6l,top y8l]; top y5l=vround(.54h+.5vair); y5r=y6l; x4=1/3[x5,x3l]; z4=z5+whatever*(150u,h); filldraw stroke z8e{left}...{up}z5'e...z2e &pulled_super_arc.e(2,3)(.5superpull) & z3e{down}...z4e---z5e; % upper bowl filldraw z5r--z6l--z6r--z5l---cycle; % middle tip filldraw stroke pulled_super_arc.e(6,7)(.5superpull) & pulled_super_arc.e(7,8)(.5superpull); % lower bowl penlabels(2,3,4,5,6,7,8,,5'); endchar; cmchar "Lowercase Greek theta"; beginchar(oct"123",8.25u#,asc_height#,0); italcorr .7asc_height#*slant+.5curve#-u#; adjust_fit(0,0); pickup fine.nib; pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360); x1=x3=.5w; lft x2r=hround(1.5u-.5curve); x4=w-x2; top y1r=h+oo; y2=y4=.5[y1,y3]; bot y3r=-oo; filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3) & pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl pos2'(bar,90); pos4'(bar,90); z2'=z2l; z4'=z4l; filldraw stroke z2'e--z4'e; % bar math_fit(-.3asc_height#*slant-u#+.5curve#,ic#-.5u#); penlabels(1,2,3,4); endchar; cmchar "Lowercase Greek iota"; beginchar(oct"051",5u#,x_height#,0); italcorr 1/3x_height#*slant+.5hair#+.5u#; adjust_fit(if monospace: u#,u# else: 0,0 fi); pickup fine.nib; pos1(stem,0); lft x1l=hround(1.5u-.5stem); y1+.5stem=h+oo; x2=x1-.25u; x4=w; hook_out(2,3,4)(skewed); % closing hook filldraw circ_stroke z1e{down}...{-u,-x_height}z2e; % stem math_fit(0,ic#); penlabels(1,2,3,4); endchar; cmchar "Lowercase Greek lambda"; beginchar(oct"62",10.5u#,asc_height#,0); adjust_fit(0,0); pickup fine.nib; pos1(vair,90); lft x1=hround .1u; top y1r=h; x2=x1+2u; y2=.7[x_height,h]; x3=w-2u; bot y4=-oo; y3=max(.07h,y4+eps); z4-(.25u,0)=whatever[z2,z3]; numeric theta; theta=angle(z2-z3)-90; pos2(stem,theta); pos3(stem,theta); pos4(stem,0); filldraw circ_stroke z1e{right}...z2e---z3e ...{2(x4e-x3e),y4e-y3e}z4e; % long diagonal y5=.5[bar_height,x_height]; z5=whatever[z2,z3]; x6=1.5u; y6-.5stem=-oo; pos5(hair,theta-90); pos6(stem,angle(z5-z6)-90); filldraw circ_stroke z6e--z5e; % short diagonal penlabels(1,2,3,4,5,6); endchar; cmchar "Lowercase crossed Greek lambda"; beginchar(oct"063",10.5u#,asc_height#,0); adjust_fit(0,0); pickup fine.nib; pos1(vair,90); lft x1=hround .1u; top y1r=h; x2=x1+2u; y2=.7[x_height,h]; x3=w-2u; bot y4=-oo; y3=max(.07h,y4+eps); z4-(.25u,0)=whatever[z2,z3]; numeric theta; theta=angle(z2-z3)-90; pos2(stem,theta); pos3(stem,theta); pos4(stem,0); filldraw circ_stroke z1e{right}...z2e---z3e ...{2(x4e-x3e),y4e-y3e}z4e; % long diagonal y5=.5[bar_height,x_height]; z5=whatever[z2,z3]; x6=1.5u; y6-.5stem=-oo; pos5(hair,theta-90); pos6(stem,angle(z5-z6)-90); filldraw circ_stroke z6e--z5e; % short diagonal pickup fine.nib; pos7(bar,125); pos8(bar,125); x7=x1; y7 = .57h; top y8=.9h; x8=.5[x5,x4]; filldraw stroke z7e--z8e; % crossbar penlabels(1,2,3,4,5,6,7,8); endchar; cmchar "Script v (Lowercase Greek upsilon)"; beginchar(oct"131",9u#,x_height#,0); italcorr x_height#*slant; adjust_fit(0,0); pickup fine.nib; interim superness:=more_super; x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); hook_in(0,1,2)(skewed); % opening hook pos2'(stem,-180); z2'=z2; pos4(vair,-90); pos5(hair,0); x4=.5w+u; rt x5r=hround(w-.5u); y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; filldraw stroke z2'e{-u,-x_height}...super_arc.e(3,4) ..tension atleast 1.05..{up}z5e; % left stem and arc v_bulb(5,6); % closing bulb math_fit(-2/3x_height#*slant+.5hair#+.5u#,2/3ic#); penlabels(0,1,2,3,4,5,6); endchar; cmchar "Lowercase Greek chi"; beginchar(oct"133",9.5u#,x_height#,desc_depth#); italcorr x_height#*slant+.5hair#-1.5u#; adjust_fit(0,0); pickup fine.nib; pos1(hair,180); pos2(vair,80); pos5(vair,80); pos6(hair,180); x1-.5hair=hround-.5hair; x6=w-x1; x2=w-x5=u; y1=y2l-h/8; top y2r=h+oo; bot y5l=-d-oo; y6=y5r+h/8; z0=.5[z2,z5]; z2'=z2l+(.5u,0); z5'=z5r-(.5u,0); numeric theta; theta=angle(z5'-z2')+90; pos3(stem,theta); pos4(stem,theta); y3r=y2r-h/8; y4l=y5l+h/8; z3l=whatever[z2',z0]; z4r=whatever[z0,z5']; filldraw stroke z1e{up}...z2e{right}...z3e{z4r-z3l} ..z4e{z4r-z3l}...{right}z5e...{up}z6e; % major diagonal and hooks x8=w-x7=2u; y7+.5hair=h; y8-.5hair=-d; numeric theta; theta=angle(z7-z8)-90; pos7(hair,theta); pos8(hair,theta); filldraw z7l---z8l..z8r---z7r..cycle; % minor diagonal math_fit((desc_depth#-x_height#)*slant+ic#,ic#); penlabels(0,1,2,2',3,4,5',5,6,7,8); endchar; cmchar "Lowercase Greek omega"; beginchar(oct"076",11u#,x_height#,0); italcorr x_height#*slant; adjust_fit(0,0); pickup fine.nib; pos2(hair,-180); lft x2r=hround.5u; y2=y4=y6=y8=bar_height; y1+.5hair=h; x1=x2+.75u; pos1(hair,angle(2(x1-x2),y1-y2)+90); pos3(vstem,-90); pos4(hair,0); pos5(vair,90); pos6(hair,180); pos7(vstem,270); pos8(hair,360); bot y3r=bot y7r=-oo; top y5r=vround(.2[y4,h]+.5vair); x3=.4[x2,x4]; x7+.25u=.6[x6,x8]; rt x8r=hround(w-.5u); x5+.5stem=hround(.5w+.5stem)+eps; x5=.5[x4,x6]; rt x4r-lft x6r=min(stem,2hair)+2eps; if x4l<x6l: x4l:=x6l:=x5; fi filldraw circ_stroke z1e{2(x2-x1),y2-y1}...z2e{down}...z3e{right} ...{up}z4e...{left}z5e; % left arc filldraw stroke z5e{left}...z6e{down}...z7e{right}...{up}z8e; % right arc v_bulb(8,9); % closing bulb math_fit(-bar_height#*slant,2/3ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar; cmchar "Closed lowercase Greek omega"; beginchar(oct"077",11u#,x_height#,0); italcorr x_height#*slant; adjust_fit(0,0); pickup fine.nib; pos2(hair,-180); lft x2r=hround.5u; y2=y4=y6=y8=bar_height; y1-.5hair=h; x1=.5w; pos1(hair,angle(2(x1-x2),y1-y2)+90); pos3(vstem,-90); pos4(hair,0); pos5(vair,90); pos6(hair,180); pos7(vstem,270); pos8(hair,360); bot y3r=bot y7r=-oo; top y5r=vround(.2[y4,h]+.5vair); x3=.4[x2,x4]; x7+.25u=.6[x6,x8]; rt x8r=hround(w-.5u); x5+.5stem=hround(.5w+.5stem)+eps; x5=.5[x4,x6]; rt x4r-lft x6r=min(stem,2hair)+2eps; if x4l<x6l: x4l:=x6l:=x5; fi filldraw circ_stroke z1e{left}...z2e{down}...z3e{right} ...{up}z4e...{left}z5e; % left arc filldraw stroke z5e{left}...z6e{down}...z7e{right}...{up}z8e...{left}z1e; % right arc penlabels(1,2,3,4,5,6,7,8); endchar; cmchar "The letter baby gamma"; beginchar(oct"041",if serifs: 9.5u# else:9u# fi,x_height#,0); italcorr x_height#*slant-.05u#; adjust_fit(serif_fit# if monospace:+\\.5u#,.5u#+ else:,fi\\ serif_fit#); numeric stem[],outer_jut,xjut,alpha[]; stem1=fudged.stem-4stem_corr; stem2=min(1.5fudged.hair,stem1); outer_jut=.75jut; xjut= if serifs: (stem1-stem2)/4 else: 0 fi; x1l=l+letter_fit+.1u+outer_jut; x2r=r-letter_fit-.3u-outer_jut-xjut; x3l=l+letter_fit+2.5outer_jut+xjut; x4r=r-letter_fit-2outer_jut; y1=y2=h; y3=y4=.3h; z11=z3; x10=.5[x3,x4]; y10r=0; alpha1=diag_ratio(1,stem1,h,x4r-x1l); alpha2=diag_ratio(1,stem2,h,x2r-x3l); penpos1(alpha1*stem1,0); penpos2(alpha2*stem2,0); penpos3(alpha2*stem2,0); penpos4(alpha1*stem1,0); penpos10(alpha2*stem2,-90); penpos11(alpha2*stem2,180); if hefty: z0=whatever[z1,z4]=whatever[z2,z3]; x12=x34=x0; y13=y24=y0; z12=whatever[z2l,z3l]; z13=whatever[z2l,z3l]; z24=whatever[z2r,z3r]; z34=whatever[z2r,z3r]; forsuffixes $=13,24,34: z$'=.2[z$,z0]; endfor fill diag_end(12,1r,.5,1,1l,13')--z13'--diag_end(13',3l,1,.5,3r,34')--z34' --diag_end(34',4l,.5,1,4r,24')--z24' --diag_end(24',2r,1,.5,2l,12)--z12--cycle; % diagonals else: fill diag_end(4r,1r,.5,1,1l,4l) --diag_end(1l,4l,.5,1,4r,1r)--cycle; % left diagonal fill diag_end(2l,3l,.5,1,3r,2r) --diag_end(3r,2r,.5,1,2l,3l)--cycle; fi % right diagonal filldraw stroke pulled_arc.e(4,10) & pulled_arc.e(10,11);% lower bowl if serifs: numeric inner_jut[]; pickup tiny.nib; prime_points_inside(1,4); prime_points_inside(2,3); prime_points_inside(3,2); prime_points_inside(4,1); if rt x1'r+jut+.5u+1<=lft x2'l-jut-xjut: inner_jut1=jut; else: rt x1'r+inner_jut1+.5u+1=lft x2'l-inner_jut1-xjut; fi if rt x3'r+jut+.5u+1<=lft x4'l-jut-xjut: inner_jut2=jut; else: rt x3'r+inner_jut2+.5u+1=lft x4'l-inner_jut2-xjut; fi dish_serif(1',4,a,1/3,outer_jut,b,2/3,inner_jut1); % upper left serif dish_serif(2',3,e,2/3,inner_jut1+xjut, f,1/2,outer_jut+xjut)(dark); fi % upper right serif penlabels(0,1,2,3,4,10,12,13,24,34); endchar; cmchar "The letter IPA Gamma"; beginchar(oct"040",if serifs: 9.5u# else:9u# fi,x_height#,desc_depth#); italcorr x_height#*slant-.05u#; adjust_fit(serif_fit# if monospace:+\\.5u#,.5u#+ else:,fi\\ serif_fit#); numeric stem[],outer_jut,xjut,alpha[]; stem1=fudged.stem-4stem_corr; stem2=min(fudged.hair,stem1); outer_jut=.75jut; xjut= if serifs: (stem1-stem2)/4 else: 0 fi; x1l=l+letter_fit+.1u+outer_jut; x2r=r-letter_fit-.3u-outer_jut-xjut; x3l=l+letter_fit+2.2outer_jut+xjut; x4r=r-letter_fit-2.2outer_jut; y1=y2=h; y3=y4=-.25d; z11=z3; x10=.5[x3,x4]; y10r=-d; alpha1=diag_ratio(1,stem1,h,x4r-x1l); alpha2=diag_ratio(1,stem2,h,x2r-x3l); penpos1(alpha1*stem1,0); penpos2(alpha2*stem2,0); penpos3(alpha2*stem2,0); penpos4(alpha1*stem1,0); penpos10(alpha2*stem2,-90); penpos11(alpha2*stem2,180); if hefty: z0=whatever[z1,z4]=whatever[z2,z3]; x12=x34=x0; y13=y24=y0; z12=whatever[z2l,z3l]; z13=whatever[z2l,z3l]; z24=whatever[z2r,z3r]; z34=whatever[z2r,z3r]; forsuffixes $=13,24,34: z$'=.2[z$,z0]; endfor fill diag_end(12,1r,.5,1,1l,13')--z13'--diag_end(13',3l,1,.5,3r,34')--z34' --diag_end(34',4l,.5,1,4r,24')--z24' --diag_end(24',2r,1,.5,2l,12)--z12--cycle; % diagonals else: fill diag_end(4r,1r,.5,1,1l,4l) --diag_end(1l,4l,.5,1,4r,1r)--cycle; % left diagonal fill diag_end(2l,3l,.5,1,3r,2r) --diag_end(3r,2r,.5,1,2l,3l)--cycle; fi % right diagonal filldraw stroke pulled_arc.e(4,10) & pulled_arc.e(10,11);% lower bowl if serifs: numeric inner_jut[]; pickup tiny.nib; prime_points_inside(1,4); prime_points_inside(2,3); prime_points_inside(3,2); prime_points_inside(4,1); if rt x1'r+jut+.5u+1<=lft x2'l-jut-xjut: inner_jut1=jut; else: rt x1'r+inner_jut1+.5u+1=lft x2'l-inner_jut1-xjut; fi if rt x3'r+jut+.5u+1<=lft x4'l-jut-xjut: inner_jut2=jut; else: rt x3'r+inner_jut2+.5u+1=lft x4'l-inner_jut2-xjut; fi dish_serif(1',4,a,1/3,outer_jut,b,2/3,inner_jut1); % upper left serif dish_serif(2',3,e,2/3,inner_jut1+xjut, f,1/2,outer_jut+xjut)(dark); fi % upper right serif penlabels(0,1,2,3,4,10,12,13,24,34); endchar; cmchar "Lowercase Greek gamma"; beginchar(oct"037",10u#,x_height#,desc_depth#); italcorr x_height#*slant-.5u#; adjust_fit(0,0); pickup fine.nib; pos1(hair,180); pos2(vstem+dw,90); pos4(hair,0); pos5(vair,-90); pos6(hair,-180); pos7(hair,-180); bot y1=.5772156649h; top y2r=h+oo; y4=y6=-.5d; bot y5r=-d-o; top y7=h; lft x1r=hround(.5u-.5hair); x2=3u; rt x4r=hround(w-2.5u); x5=.5[x4,x6]; rt x4r-lft x6r= hround 3/4[hair,stem] + eps; rt x7l=hround(w-.5u); if x4l<x6l: x4l:=x6l:=x5; fi pos3(vair,angle(z4-z2)+90); x3=superness[x2,x4]; y3=superness[y4,y2]; filldraw stroke z1e{up}...z2e{right}...z3e{z4-z2} ...z4e{down}...{left}z5e; % arc filldraw stroke z5e{left}...z6e{up}..{2(x7-x6),y7-y6}z7e; % stem penlabels(1,2,3,4,5,6,7); endchar; cmchar "Lowercase Greek alpha"; beginchar(oct"002",11u#,x_height#,0); italcorr max(1/3x_height#*slant+.5hair#+.5u#,x_height#*slant-.5u#); adjust_fit(0,0); pickup fine.nib; pos0(2hair,0); pos1(2vair,-90); pos2(curve,-180); pos3(vair,-270); z4=(w-3.25u,9/16h); z5=(w-2.75u,.5[vair,y4]); numeric theta; theta=angle(z4-z5)-90; pos4(stem,theta); pos5(stem,theta); pos6(vair,90); pos7(hair,180); rt x0r=hround(w-u); x1=x3=.5w-u; lft x2r=hround(1.5u-.5curve); x6=w-u; x7+.5hair=hround(w+.5hair-epsilon); y0=vround .9[bar_height,h]; bot y1r=bot y6l=-oo; y2=.5[y1,y3]; top y3r=h+oo; y7=1/4bar_height; filldraw stroke z0e{down}...pulled_arc.e(1,2) & pulled_arc.e(2,3) ...z4e---z5e...z6e{right}...{up}z7e; % diagonal, bowl, and hook penlabels(0,1,2,3,4,5,6,7); endchar; cmchar "Lowercase Greek beta"; beginchar(oct"011",9.5u#,asc_height#,desc_depth#); italcorr .5[x_height#,asc_height#]*slant-u#; adjust_fit(0,0); pickup fine.nib; pos0(1.5hair,180); pos1(1.5hair,180); pos2(vair,90); pos3(stem,0); pos4(vair,-90); pos5(hair,-180); pos6(vair,-270); pos7(curve,-360); pos8(vair,-450); pos9(1.25hair,-540); x0=x1=x9; lft x0l=hround(1.5u-.5hair); x2=x4=x6=x8=.5w+.25u; rt x3r=hround(w-1.5u); rt x7r=hround(w-1.5u+.5curve); rt x5l=hround(x4-u); bot y0=-d; y1=top y6r=x_height; top y2r=h+oo; y3=.5[y2,y4]; y5=.5[y4,y6]; top y6r-bot y4r=vstem+eps; bot y8=-oo; y7=y9=.5[y6,y8]; if y6l<y4l: y6l:=y4l:=y5; fi filldraw stroke z0e---z1e...pulled_arc.e(2,3) & pulled_arc.e(3,4)...{up}z5e; % stem and upper bowl filldraw stroke z5e{up}...pulled_arc.e(6,7) & pulled_arc.e(7,8)...{up}z9e; % lower bowl penlabels(0,1,2,3,4,5,6,7,8,9); endchar; cmchar "Lowercase Greek phi"; beginchar(oct"103",11u#,asc_height#,desc_depth#); italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi; adjust_fit(0,0); pickup fine.nib; numeric light_curve; light_curve=hround(.5[stem,curve]-2stem_corr); pos1(vair,90); pos2(light_curve,180); pos3(vair,270); pos4(light_curve,360); x1=x3=.5w; lft x2r=hround(1.5u-.5light_curve); x4=w-x2; top y1=x_height+oo; y2=y4=.5[y1,y3]; bot y3=-oo; filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3) & pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl pos5(hair,0); pos6(hair,0); x5=x6=.5w; top y5=.9h; bot y6=-d-oo; filldraw stroke z5e--z6e; % stem penlabels(1,2,3,4,5,6); endchar; cmchar "Lowercase Greek sigma"; beginchar(oct"117",10.25u#,x_height#,0); italcorr x_height#*slant+.5stem#-u#; adjust_fit(0,0); pickup fine.nib; pos1(vstem,90); pos2(stem,0); pos3(vair,-90); pos4(stem,-180); pos5(vstem,-270); pos6(vstem,-270); x1=x3=x5=.5[x2,x4]; rt x2r=hround(w-2.5u); lft x4r=hround(1.5u-.5curve);x6=w-1.5u; top y1r=h; y2=y4=.5[y1,y3]; bot y3r=-oo; y5=y6=y1; filldraw circ_stroke z6e..pulled_arc.e(5,4) & pulled_arc.e(4,3) & pulled_arc.e(3,2) & pulled_arc.e(2,1); % ear and bowl penlabels(1,2,3,4,5,6); endchar;