EVOLUTION-MANAGER
Edit File: wasychr.mf
% % These characters should rather be in an character font than in a % symbol font % cmchar "Cent sign"; beginchar(hex"67",9u#,asc_height#,desc_depth#); italcorr x_height#*slant-.2u#; adjust_fit(0,0); pickup fine.nib; pos2(vair',90); pos4(vair',270); x2=x4=.5(w+u); top y2r=vround(x_height+1.5oo); bot y4r=-oo; pos3(curve,180); lft x3r=hround max(.6u,1.35u-.5curve); y3=.5x_height; if serifs: pos1(hair,0); pos0(flare,0); y1=min(bar_height+.5flare+2vair'+2,.9[bar_height,x_height]-.5flare); rt x1r=hround(w-.7u); bulb(2,1,0); % bulb pos5(hair,0); rt x5r=hround(w-.5u); y5=max(good.y(.5bar_height-.9),y4l+vair'); (x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u); filldraw stroke pulled_super_arc.e(2,3)(.7superpull) & pulled_super_arc.e(3,4)(.5superpull) ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e; % arc and lower terminal else: pos1(4/7[vair',flare],80); rt x1r=hround(w-.6u); top y1r=vround .82[bar_height,top y2r]; filldraw stroke term.e(2,1,right,.8,4); % upper terminal pos5(.6[vair',flare],275); rt x5r=hround(w-.5u); y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l; forsuffixes e=l,r: path p.e; p.e=z4e{right}..tension .9 and 1..z5e; if angle direction 1 of p.e>75: p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi endfor filldraw stroke pulled_super_arc.e(2,3)(.7superpull) & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and lower terminal pickup crisp.nib; x6=x7=x8=x9=x2; y7=y2; y8=y4; bot y9=-d; y6-y7 = y8-y9; pos6(bar,0); pos7(bar,0); pos8(bar,0); pos9(bar,0); filldraw stroke z6e--z7e; % upper bar filldraw stroke z8e--z9e; % lower bar penlabels(0,1,2,3,4,5,6,7,8,9); endchar; cmchar "Upside down e"; beginchar(hex"55",7.25u#+max(.75u#,.5curve#),x_height#,0); italcorr .5[bar_height#,x_height#]*slant+.5min(curve#-1.5u#,0); adjust_fit(if monospace: .25u#,.5u# else: 0,0 fi); numeric left_curve,right_curve; left_curve=right_curve+6stem_corr=curve if not serifs: -3stem_corr fi; if right_curve<tiny.breadth: right_curve:=tiny.breadth; fi if left_curve<tiny.breadth: left_curve:=tiny.breadth; fi pickup tiny.nib; pos1(right_curve,180); pos2(vair,270); pos3(left_curve,0); y1=good.y (h-bar_height); bot y2r=vround (-1.5oo); y0l=top y1; lft x1r=hround max(.5u,u-.5right_curve); rt x3r=hround min(w-.5u,w-(1.25u-.5left_curve)); x2=.5w-.25u; {{interim superness:=more_super; filldraw stroke super_arc.e(2,1)}}; % left bowl y3=.5[y2,y4]; top y4r=h+oo; x4=x2-.25u; if serifs: pos4(vair',90); pos5(hair,180); y5=min(good.y(h-(.5bar_height-.9)),y4l-vair); x5r=x1r; (x,y4l)=whatever[z4r,z5]; x4l:=max(x,x4l-.5u); filldraw stroke pulled_arc.e(2,3) & pulled_arc.e(3,4) ...{x5-x4,5(y5-y4)}z5e; % right bowl, arc, and terminal else: pos4(vair,90); filldraw stroke super_arc.e(2,3) & super_arc.e(3,4); % right bowl and arc pickup fine.nib; pos4'(vair,90); z4=z4'; pos5(.5[vair,flare],95); lft x5r=hround(.6u); y5r=good.y(y5r-1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l; filldraw stroke term.e(4',5,left,1,4); fi % terminal path testpath; testpath=super_arc.l(2,3) & super_arc.l(3,4); y1'r=y0r=y0l-.6[thin_join,vair]; y1'l=y0l; x1'l=x1'r=x1; forsuffixes $=l,r: x0$=xpart(((2h,y0$)--(x1,y0$)) intersectionpoint testpath); endfor fill stroke z0e--z1'e; % crossbar penlabels(0,1,2,3,4,5); endchar; cmchar "Phonetic open o"; beginchar(hex"6C",8.5u#,x_height#,0); italcorr x_height#*slant-.2u#; adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); pickup fine.nib; pos2(vair',270); pos4(vair',90); x2=x4=.5w; top y4r=vround(h+oo); bot y2r=-1.5oo; pos3(curve,0); rt x3l=hround (w-max(.6u,1.35u-.5curve)); y3=.5h; if serifs: pos1(hair,180); pos0(flare,180); y1=h-.70[bar_height,h]+.5flare; lft x1r=hround(1.0u); bulb(2,1,0); % bulb pos5(hair,180); lft x5r=hround(1.2u); y5=min(good.y(h+oo-.45bar_height+.9),y4l-vair'); (x,y4l)=whatever[z4l,z5r]; x4l:=max(x,x4l-.5u); filldraw stroke pulled_super_arc.e(2,3)(.7superpull) & pulled_super_arc.e(3,4)(.5superpull) ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e; % arc and upper terminal else: pos1(4/7[vair',flare],260); lft x1r=hround(.6u); bot y1r=vround (.82[h-bar_height,bot y2r]); filldraw stroke term.e(2,1,left,.8,4); % lower terminal pos5(.6[vair',flare],95); lft x5r=hround(1.5u); y5r=good.y(y5l+h-1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l; forsuffixes e=l,r: path p.e; p.e=z4e{left}..tension .9 and 1..z5e; if angle direction 1 of p.e<255: p.e:=z4e{left}..tension atleast.9 and 1..{dir 255}z5e; fi endfor filldraw stroke pulled_super_arc.e(2,3)(.7superpull) & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and upper terminal penlabels(0,1,2,3,4,5); endchar; cmchar "The small islandic thorn"; beginchar(hex"69",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 if serifs: +min(oo,serif_drop) fi; 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); penpos7(x3l-x3r,-180); rt x3l=max(rt x3l-(lft x3r-tiny.lft x2l), 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; x6l=x4l-.2u; bot y6r=-oo; x7=x3; y7=min(y3,y6+y4-y3+.6vair); (x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x5r,x4]); (x',y6r)=whatever[z7l,z6l]; x6r:=min(x',.5[x5r,x6]); filldraw stroke z3e{up}...{right}z4e&super_arc.e(4,5) &super_arc.e(5,6)&z6e{left}...{up}z7e; % bowl y0=ypart(((edge,x_height)--(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,jut); fi % lower serif penlabels(0,1,2,3,4,5,6,7,8); endchar; cmchar "Uppercase Thorn"; beginchar(hex"6A",12u#,cap_height#,0); italcorr .5cap_height#*slant-.5u#; adjust_fit(cap_serif_fit#,0); pickup tiny.nib; penpos1(cap_stem'-tiny,0); penpos2(cap_stem-tiny,0); pos0(cap_stem',0); pos0'(cap_stem,0); lft x1l=hround max(2u,3u-.5cap_stem'); top y1=h; bot y2=0; x1l=x2l=x0l=x0'l; y0=y0'=y7; penpos3(cap_band,90); penpos4(cap_band,90); penpos5(cap_curve if hefty:-3stem_corr fi,0); penpos6(.5[vair,cap_band],-90); penpos7(.5[vair,cap_band],-90); y4=y3; y5=.5[y4l,y6l]; y6=y7; x3=x7=x2; x4=x6=.5w+.75u; x5r=hround(w-u); y3r=vround(.80h); y7r=vround(.20h); x4l:=x6l:=x4-.25cap_curve; filldraw stroke z1e--z0e--z0'e--z2e; % stem fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe if serifs: dish_serif(1,0,a,1/3,cap_jut,b,1/3,cap_jut); % upper serif dish_serif(2,0',c,1/3,cap_jut,d,1/3,cap_jut); fi % lower serif math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7); endchar; cmchar "Islandic edh"; beginchar(hex"6B",9u#,asc_height#,0); italcorr .8x_height#*slant; adjust_fit(0,0); penpos1(vair,90); penpos3(vair',-90); penpos1'(hair,0); penpos2(curve,180); penpos4(curve,0); penpos4'(curve,0); penpos5(curve,0); penpos6(curve,0); x2r=hround max(.5u,1.25u-.5curve); x4r=w-x2r; x1=x3=.5w; y1r=x_height; y3r=-oo; y2=y4=.5(x_height-oo)-vair_corr; y2l:=y4l:=.5x_height; y4'=y4+1.5u; x4'=x4; top y6 = h; x6= if monospace: 2/3 else: 1/3 fi [x2,x5]; y5=0.66[y4',y6]; x5=0.60[x4',x6]; z1' = z4'; penstroke pulled_arc.e(1',1) & pulled_arc.e(1,2) & pulled_arc.e(2,3) & pulled_arc.e(3,4)..z4'e..z5e---z6e; % bowl and stem numeric newstem; newstem = .5[hair,.7stem]; penpos7(newstem,-45); penpos8(newstem,-45); top y8l = h; bot y7r = .12[top y1r,h]; (x8-x7)/(y6-y5) = (y8-y7)/(x5-x6); z=.5[z7,z8]; % make bar symmetric (y6-y)/(y6-y5) = (x6-x)/(x6-x5); penstroke z7e--z8e; % bar penlabels(1,2,3,4,5,6,7,8); endchar; cmchar "Permille sign"; cmchar "Per mille sign"; beginchar(hex"68",9u#+max(9u#,3fudge*(hair#+stem#)), body_height#,body_height#-asc_height#); italcorr if hefty: .4asc_height#*slant-.5u# else: h#*slant-u# fi; adjust_fit(0,0); pickup fine.nib; numeric left_curve,right_curve; left_curve=hround 5/6[fudged.hair,fudged.stem]; right_curve=max(fine.breadth,hround(fudged.hair if hefty:-2stem_corr fi)); pos1(vair,90); pos2(left_curve,180); pos3(vair,270); pos4(right_curve,360); top y1r=h; lft x2r=hround u; rt x4r=hround(.35w-u); bot y3r=floor(if monospace: .7 else: .5 fi\\ asc_height); x1=x3=.5[x2,x4]; y2=y4=.5[y1,y3]; filldraw stroke pulled_super_arc.e(1,2)(superpull) & pulled_super_arc.e(2,3)(superpull); % left half of upper bowl filldraw stroke super_arc.e(3,4) & super_arc.e(4,1); % right half of upper bowl pos5(vair,90); pos6(left_curve,180); pos7(vair,270); pos8(right_curve,360); bot y7r=-d; rt x8r=hround(.70w-u); x6-x8 = x2-x4; top y5r=vround(if monospace: .3 else: .5 fi\\ asc_height); x5=x7=.5[x6,x8]; y6=y8=.5[y5,y7]; filldraw stroke pulled_super_arc.e(5,6)(superpull) & pulled_super_arc.e(6,7)(superpull); % left half of lower bowl filldraw stroke super_arc.e(7,8) & super_arc.e(8,5); % right half of lower bowl pos5'(vair,90); pos6'(left_curve,180); pos7'(vair,270); pos8'(right_curve,360); bot y7'r=-d; rt x8'r=hround(w-u); x6'-x8' = x6-x8; top y5'r=vround(if monospace: .3 else: .5 fi\\ asc_height); x5'=x7'=.5[x6',x8']; y6'=y8'=.5[y5',y7']; filldraw stroke pulled_super_arc.e(5',6')(superpull) & pulled_super_arc.e(6',7')(superpull); % left half of lower bowl filldraw stroke super_arc.e(7',8') & super_arc.e(8',5'); % right half of lower bowl pickup rule.nib; top y9=h; bot y10=-d; if hefty: x9=good.x(x5-eps); x10=good.x(x1+eps); draw z9--z10; % diagonal else: rt x9=hround(.67w-2.5u); lft x10=hround 2.5u; draw z9--z10; % diagonal pickup fine.nib; pos9(rule_thickness,angle(z9-z10)+90); pos11(vair,angle(z1r-z4r)-90); pos12(vair,angle(z9-z10)+90); path p; p=super_arc.r(1,4); z11r=point 2/3 of p; z12r=z9r; filldraw stroke z11e{direction 2/3 of p}...{z9-z10}z12e; fi % link penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;