% % tipasym1.mf: TIPA phonetic symbols (1) % % Version 1.0 1996/05/22 FUKUI Rei % % This font is based on: % Computer Modern font series by D. E. Knuth and % TSIPA by KOBAYASHI Hajime, FUKUI Rei and SHIRAKAWA Shun. % cmchar "Barred U"; beginchar("0",10u#,x_height#,0); italcorr x_height#*slant-serif_fit#+.5stem#-1.5u#; if serifs: adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); else: adjust_fit(serif_fit#+stem_shift#+.5u#,serif_fit#-stem_shift#+.5u#); fi numeric light_vair; light_vair=vair if hefty: -vround 2vair_corr fi; if light_vair1.5u#:-.25u# fi\\fi); pickup fine.nib; top y3r=h+vround 1.5oo; if serifs: pos1(flare,180); pos2(hair,180); pos3(vair,90); lft x1r=hround max(u,2.1u-.5flare); x3=.5w-.5u; y1=min(bh+.5flare+2vair+2,.9[bh,h]-.5flare); bulb(3,2,1); % bulb else: pos1(5/7[vair,flare],95); x1l=good.x 1.5u; x1r:=good.x x1r; pos3(1/8[vair,thin_join],90); x3=.5w-.2u; top y1r=vround .82[bh,top y3r]; filldraw stroke term.e(3,1,left,.9,4); fi % terminal pos4(stem,0); rt x4r=hround(w-2.5u+.5stem); y4=1/3[bh,h]; pos5(stem,0); x5=x4; y5=max(.55bh,2vair); filldraw stroke super_arc.e(3,4)&z4e..z5e; % arc and stem pos6(.3[thin_join,vair],90); x6=x4; bot y6=bh; pos7(hround(curve-2stem_corr),180); lft x7r=hround max(.5u,1.5u-.5curve); y7=1/3[top y8l,top y6r]; pos8(vair,270); x8l=.5w-.75u; bot y8r=-oo; pos9(thin_join,360); z9l=z5l; (x,y8r)=whatever[z8l,z9l]; x8r:=max(x,x8-u); {{interim superness:=more_super; filldraw stroke z9e{down}...z8e{left}...{up}z7e&super_arc.e(7,6)}}; % bowl if serifs: numeric shaved_stem; shaved_stem=hround(stem-3stem_corr); if hair#+.5stem#>1.5u#: pickup tiny.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5; pos10(shaved_stem,0); x10=x5'; y10=.2[.5tiny,bh]; pos11(shaved_stem,0); rt x11r=hround(w-.25u); bot y11=0; pos12(shaved_stem,0); x11=x12; top y12=slab+eps; filldraw z5'l---z10l...z11l{right}--z11r --z12r{left}...z10r+.75(z12-z11)---z5'r--cycle; % foot else: pickup crisp.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5; pos10(shaved_stem,0); x10=x5'; y10=1/3bh; pos11(.2[vair,stem],90); x11r=.5[x10r,x12r]; bot y11l=-vround .5oo; pos12(hair,180); rt x12l=hround(w-.1u); y12=max(y10,y11+vair); pos13(hair,180); x13=x12; top y13=max(vround .6bh,top y12); (x',y11l)=whatever[z11r,z12r]; x11l:=max(x',x10); if Times_Compat: y13l:=.2[y12l,y13l]; y13r:=y13l; fi filldraw stroke z5'e---z10e...z11e{right}...z12e---z13e; fi % hook else: numeric shaved_stem; shaved_stem=hround(stem-stem_corr); pickup tiny.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5; pos10(shaved_stem,0); x10=x5'; bot y10=0; filldraw stroke z5'e--z10e; fi % base of stem turn_picture; penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar; cmchar "Turned Script A"; beginchar("6",10u#+serif_fit#,x_height#,0); italcorr .5x_height#*slant+min(.5curve#-u#,-.25u#); 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+min(oo,serif_drop); 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[x4,x5r]); (x',y6r)=whatever[z7l,z6l]; x6r:=min(x',.5[x6,x5r]); filldraw stroke z3e{up}...pulled_arc.e(4,5)&pulled_arc.e(5,6)...{up}z7e; % bowl y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{right}z4l)); y2=ypart(((edge,h)--(edge,0))intersectionpoint(z6l{left}...{up}z7l)); pickup tiny.nib; 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); fi % upper serif penlabels(0,1,2,3,4,5,6,7,8); endchar; cmchar "Ram's Horns"; beginchar("7",9.5u#,x_height#,0); italcorr x_height#*slant+.5hair#-.5u#; adjust_fit(0,0); pickup fine.nib; if serifs: pos1(hair,180); else: pos1(hair,170); fi pos2(vair,80); pos5(vair,80); pos6(hair,180); x1-.5hair=hround-.5hair+.5u; x6=w-x1; x2=w-x5=if serifs: 1.5u; else: 2u; fi 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; z3l=whatever[z2',z0]; z4=whatever[z3,z0]; y4=2/3y0; pos11(1.1hair,-90); z11r=(x0,-oo); filldraw stroke z1e{up}...z2e{right}...z3e---z4e...{left}z11e; x8=w-x7=if serifs: 2.5u; else: 3u; fi y7+.5hair=h; y8-.5hair=-d; numeric theta; theta=angle(z7-z8)-90; pos7(hair,theta); pos8(hair,theta); pos21(hair,theta-180); pos22(hair,theta-180); pos23(vair,90); if serifs: pos24(hair,0); else: pos24(hair,10); fi z21=whatever[z7,z8]; z22=whatever[z7,z8]; y21l=y4; y22=y3; top y23r=h+oo; x23=w-x2; x24=w-x1; y24=y1; filldraw stroke z11e{left}...z21e---z22e...{right}z23e...{down}z24e; penlabels(0,1,2,2',3,4,5',5,6,7,8,11,12,21,22,23,24); endchar; cmchar "Barred O"; beginchar("8",9u#,x_height#,0); italcorr .7x_height#*slant; adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); penpos1(vair,90); penpos3(vair',-90); penpos2(curve,180); penpos4(curve,0); x2r=hround max(.5u,1.25u-.5curve); x4r=w-x2r; x1=x3=.5w; y1r=h+vround 1.5oo; y3r=-oo; y2=y4=.5h-vair_corr; y2l:=y4l:=.52h; penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3) & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl hbar(5,6,x2,x4,.5x_height+.5bar); penlabels(1,2,3,4); endchar; cmchar "Reversed E"; beginchar("9",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_curvenotch_cut+raise: y0:=notch_cut+raise; fill z0+.5right{up}...{z4-z3}diag_end(3l,4l,1,1,4r,3r) --diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1} ...{down}z0+.5left--cycle; % left and right diagonals else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l) --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals if serifs: numeric inner_jut; pickup tiny.nib; prime_points_inside(1,2); prime_points_inside(4,3); if rt x1'r+jut+.5u+1<=lft x4'l-jut: inner_jut=jut; else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); % left serif dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); fi % right serif pickup penrazor; if serifs: penpos62(alpha*1.1right_stem,-90); penpos60(alpha*left_stem,0); penpos61(alpha*left_stem,10); penpos63(alpha*right_stem,-190); penpos64(alpha*right_stem,-180); else: alpha:=max(1,.9alpha); penpos62(alpha*right_stem,-90); penpos60(alpha*left_stem,0); penpos61(alpha*left_stem,10); penpos63(alpha*right_stem,-190); penpos64(alpha*right_stem,-180); fi z60l = whatever[z1l,z2l]; if serifs: z61l = whatever[z1l,z2l]; else: z61l = whatever[z1l shifted(.1stem,0),z2l shifted(.1stem,0)]; fi z64l = whatever[z4r,z3r]; z63l = whatever[z4r shifted(-.1stem,0),z3r shifted(-.1stem,0)]; y61=-.5d; y63=if serifs: -.4d; else: -.5d; fi y60=y64=y0-.2stem; bot y62r=-d if serifs: -oo; else: -o; fi x62=if serifs: .5[x3,x0]; else: x0; fi x61l:=x61l+.15stem; if serifs: else: x63l:=x63l-.15stem; y62l:=y62l-.15stem; fi filldraw stroke z60e{z2-z1}..z61e..{left}z62e..z63e..{z4-z3}z64e; penlabels(0,1,2,3,4,60,61,62,63,64); endchar; cmchar "Hooktop H"; beginchar("H",10u#,asc_height#,0); italcorr .7[x_height#,asc_height#]*slant-serif_fit#+.5stem#-2u#; adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); pickup tiny.nib; pos1(stem,0); pos2(stem,0); pos1'(stem',0); pos2'(stem',0); pos3(stem,0); lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; x3=w-x1; top y1=.25[x_height,h]; bot y2=0; y1=y1'; y2=y2'; filldraw stroke z1'e--z2'e; % left stem h_stroke(2,a,3,4); % arch and right stem if serifs: pickup tiny.nib; pos9(vair,-270); pos9'(vair,-90);z9=z9';x9=.5[x1,x10]; top y9r=h+oo; pos10(hair,-360); pos11(flare,-360); rt x10r=min(w- hround u,rt x3r); y10=.75[x_height,h]-.5flare; bulb(9,10,11); filldraw stroke super_arc.e(1,9'); % hooktop else: pickup fine.nib; pos9(vair,-90); pos10(hair,-110); x9=.5[x1,x10]; top y9l=h+oo; rt x10l=min(w- hround u,rt x3r); y10l=.8[x_height,h]; filldraw stroke super_arc.e(1,9) & term.e(9,10,right,.9,4); fi % hooktop if serifs: numeric inner_jut; pickup tiny.nib; if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut; else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi dish_serif(2,1,c,1/3,jut,d,1/3,jut); % lower left serif dish_serif(4,3,e,1/3,inner_jut,f,1/3,jut); fi % lower right serif penlabels(1,2,3,4,9,10,11); endchar; cmchar "Curly-tail J"; numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); beginchar("J",5.5u#,min(asc_height#,10/7x_height#+.5dot_diam#),desc_depth#); define_whole_blacker_pixels(dot_diam); italcorr h#*slant-serif_fit#+.5stem#-2u#; adjust_fit(serif_fit#+2stem_shift# if monospace:+\\.5u# fi +.5u#, -2stem_shift# if monospace:-.5u# fi +.3u#); pickup tiny.nib; pos1(stem',0); pos2(stem',0); rt x1r=hround(.5w+.25u+.5stem'); x1=x2; top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=-1/3d; filldraw stroke z1e--z2e; % stem pos3(dot_diam,0); pos4(dot_diam,90); x3r=x1r; top y4r=h+1; if bot y4l-top y1notch_cut: y0:=notch_cut; fill z0+.5right{up}...{z4r-z3r}diag_end(0,4l,1,1,4r,3r) --z3r--z2l--diag_end(2l,1l,1,1,1r,2r){z2-z1} ...{down}z0+.5left--cycle; % left and right diagonals else: fill z0--diag_end(0,4l,1,1,4r,3r)--z3r--z2l --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals penpos5(alpha*bot_stem,0); z5r=whatever[z3r,z4r]; y5-.5vair=-.5d; if serifs: numeric light_bulb; light_bulb=7/8[hair,flare]; clearpen; penpos6(vair,-90); penpos7(hair,-180); penpos8(light_bulb,-180); x6=2u; y6r=-d-oo; y8-.5light_bulb=-.85d; x8r=hround .35u; fill stroke z3e---z5e...{left}z6e; bulb(6,7,8); % arc and bulb numeric inner_jut; pickup tiny.nib; prime_points_inside(1,2); prime_points_inside(4,3); if rt x1'r+jut+.5u+1<=lft x4'l-jut: inner_jut=jut; else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); % left serif dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); % right serif else: penpos6(bot_vair,-90); x6=2.5u; y6r=-d-oo; fill stroke z3e---z5e...{left}z6e; % arc pickup fine.nib; pos6'(bot_vair,-90); z6'=z6; pos7(2/3[bot_vair,flare],-85); lft x7l=hround u; bot y7r=vround-.96d-oo; y7l:=good.y y7l; filldraw stroke term.e(6',7,left,1,4); fi % arc and terminal turn_picture_lower; penlabels(0,1,2,3,4,5,6,7,8,9); endchar; cmchar "Left-tail M (at right)"; beginchar("M",15u#,x_height#,desc_depth#); italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-1.75u#; adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift# if serifs:-.5u# fi); numeric shaved_stem; shaved_stem=hround(mfudged.stem-2stem_corr); pickup tiny.nib; pos1(mfudged.stem,0); pos2(mfudged.stem,0); pos1'(shaved_stem,0); pos2'(shaved_stem,0); pos3(mfudged.stem,0); pos5(mfudged.stem,0); lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; lft x3l=hround(.5w-.5stem); x5-x3=x3-x1; if not monospace: r:=hround(x5+x1)-l; fi % change width for better fit top y1=h+min(oo,serif_drop); bot y2=0; y1=y1'; y2=y2'; filldraw stroke z1'e--z2'e; % left stem h_stroke(2,a,3,4); % left arch and middle stem h_stroke(4,b,5,6); % right arch and right stem if serifs: sloped_serif.l(1',2',c,1/3,jut,serif_drop); % upper left serif numeric inner_jut; pickup tiny.nib; if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut; else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi dish_serif(2,1,d,1/3,jut,e,1/3,jut); % lower left serif dish_serif(4,3,f,1/3,inner_jut,g,1/3,jut); fi % lower middle serif left_tail(6,7,8,9,mfudged.stem,rt x4r); penlabels(1,2,3,4,5,6,7,8,9); endchar; cmchar "Eng"; beginchar("N",10u#,x_height#,desc_depth#); italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-1.25u#; adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift# if serifs:-.5u# fi); pickup tiny.nib; pos1(stem,0); pos2(stem,0); numeric shaved_stem; shaved_stem=hround(stem-2stem_corr); pos1'(shaved_stem,0); pos2'(shaved_stem,0); pos3(stem,0); lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; x3=w-x1; top y1=h+min(oo,serif_drop); bot y2=0; y1=y1'; y2=y2'; filldraw stroke z1'e--z2'e; % left stem h_stroke(2,a,3,4); % arch and right stem if serifs: sloped_serif.l(1',2',b,1/3,jut,serif_drop); % upper left serif numeric inner_jut; pickup tiny.nib; if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut; else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi dish_serif(2,1,c,1/3,jut,d,1/3,jut); fi % lower left serif left_tail(4,5,6,7,stem,rt x2r); penlabels(1,2,3,4,5,6,7); endchar; cmchar "Open O"; beginchar("O",8u#,x_height#,0); italcorr x_height#*slant-.5u#; adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); pickup fine.nib; pos2(vair',-90); pos4(vair',90); x2=x4=.5(w-u); bot y2r=vround(-1.5oo); top y4r=h+oo; pos3(curve,0); rt x3r=hround min(w-.6u,w-1.35u+.5curve); y3=.5h; if serifs: pos1(hair,-180); pos0(flare,-180); if Times_Compat: y1=max(h-bar_height-.4flare-1.8vair'-2,h-.8[bar_height,h]+.5flare); else: y1=max(h-bar_height-.5flare-2vair'-2,h-.9[bar_height,h]+.5flare); fi lft x1r=hround(.7u); bulb(2,1,0); % bulb pos5(hair,-180); lft x5r=hround(.5u); y5=min(h-good.y(.5bar_height-.9),y4l-vair'); (x,y4l)=whatever[z4r,z5l]; x4l:=x; 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],-100); lft x1r=hround(.6u); bot y1r=h-vround .82[bar_height,top y4r]; filldraw stroke term.e(2,1,left,.8,4); % upper terminal pos5(.6[vair',flare],95); lft x5r=hround .5u; y5r=good.y(h+y5r-1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l; filldraw stroke pulled_super_arc.e(2,3)(.7superpull) & pulled_super_arc.e(3,4)(.5superpull) ..tension .9 and 1..z5e; fi % arc and lower terminal penlabels(0,1,2,3,4,5); endchar; cmchar "Glottal Stop"; beginchar("P",9u#,asc_height#,0); italcorr .8asc_height#*slant-.5u#; adjust_fit(0,0); pickup tiny.nib; pos7(stem,0); bot y7=0; x7=.47w; pos2(vair,90); pos3(curve,0); pos4(vair,-90); pos5(stem,0); pos6(stem,0); x2=x5=x6=x7; x4=x5l; rt x3r=hround(w-u); bot y6=.3x_height; top y2r=h+oo; y3=.5[y2,y4]; y4r=.5y2; y5=y4l; {{interim superness:=more_super; filldraw stroke pulled_super_arc.e(2,3)(superpull) & z3e{down}...{(-10,-1)}z4e; filldraw stroke z5e--z7e\\}}; % arc and stem if serifs: pos1(hair,180); pos0(flare,180); lft x1r=hround u; y1=.3[y3,y2]; bulb(2,1,0); % bulb dish_serif(7,5,e,1/3,jut,f,1/3,jut); %serif else: pos1(vround 5/7[vair,flare],110); lft x1r=hround u; top y1r=vround .9[y6,top y2r]; filldraw stroke term.e(2,1,left,1,4); fi % terminal penlabels(0,1,2,3,4,5,6,7); endchar; cmchar "Reversed Glottal Stop"; beginchar("Q",9u#,asc_height#,0); italcorr .8asc_height#*slant-.5u#; adjust_fit(0,0); pickup tiny.nib; pos7(stem,0); bot y7=0; x7=.53w; pos2(vair,90); pos3(curve,180); pos4(vair,-90); pos5(stem,0); pos6(stem,0); x2=x5=x6=x7; x4=x5r; lft x3r=hround(u); bot y6=.3x_height; top y2r=h+oo; y3=.5[y2,y4]; y4r=.5y2; y5=y4l; {{interim superness:=more_super; filldraw stroke pulled_super_arc.e(2,3)(superpull) & z3e{down}...{(10,-1)}z4e; filldraw stroke z5e--z7e\\}}; % arc and stem if serifs: pos1(hair,0); pos0(flare,0); rt x1r=hround (w-u); y1=.3[y3,y2]; bulb(2,1,0); % bulb dish_serif(7,5,e,1/3,-jut,f,1/3,-jut); %serif else: pos1(vround 5/7[vair,flare],70); rt x1r=hround (w-u); top y1r=vround .9[y6,top y2r]; filldraw stroke term.e(2,1,right,1,4); fi % terminal penlabels(0,1,2,3,4,5,6,7); endchar; cmchar "Fish-hook R"; numeric r_flare#; r_flare#=.75[if serifs: stem# else: vair# fi,flare#]; define_whole_blacker_pixels(r_flare); beginchar("R",if serifs:max(7u#,5.5u#+r_flare#) else:6.5u# fi,x_height#,0); italcorr x_height#*slant if not serifs: +.25u# fi; adjust_fit(serif_fit#,0); pickup fine.nib; top y4r=h+oo; if serifs: pos4(vair,90); pos5(hair,0); x4=.5[x6,.5w]; rt x5r=hround(w-.5u+.5); y5+.8r_flare=.9[bar_height,h]+oo; pos6(r_flare,0); bulb(4,5,6); % bulb else: pos4(r_flare,90); rt x4=hround(w-.25u); fi pos0'(hround(stem-3stem_corr),180); rt x0'l=hround(2.5u-.5stem')+stem'; top y0'=bar_height+1.8u; filldraw stroke z0'e{up}...{right}z4e; % arc pickup tiny.nib; pos0(stem',0); pos2(stem',0); pos1(hround(stem-3stem_corr),0); top y1=h+min(oo,serif_drop); y0=y0'; x1l=x0l=x2l; lft x1l=hround(2.5u-.5stem'); bot y2=0; filldraw stroke z0e--z2e; % stem if serifs: dish_serif(2,0,b,1/3,jut,c,1/3,1.25jut); fi % lower serif penlabels(1,2,0',4,5,6); endchar; cmchar "Esh"; beginchar("S",5u#,asc_height#,desc_depth#); italcorr asc_height#*slant+1u#; adjust_fit(.5u#,.5u#); pickup tiny.nib; pos1(stem',0); pos2(stem',0); lft x1l=hround(.5w-.5stem'); x2=x1; y2=0; h-y1=d; filldraw stroke z1e--z2e; % stem left_tail(2,3,4,5,stem',-1u); hooktop(1,6,7,8,stem',w+1u,h,.9,.5,1/3); penlabels(1,2,3,4,5,6,7,8); endchar; cmchar "Theta"; beginchar("T",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 penlabels(1,2,3,4); endchar; cmchar "Upsilon"; beginchar("U",10u#,x_height#,0); italcorr x_height#*slant; adjust_fit(0,0); pickup tiny.nib; pos1(vair,90); pos2(curve,180); pos3(.5curve,180); pos4(curve,0); pos5(.5curve,0); x1=.5w; top y1r=h+o; lft x2r=hround 1.25u; y2=y4=bar_height; x4=w-x2; rt x3l=hround(1/3(w+.5u)); bot y3=bot y5=0; x5=w-x3; filldraw stroke z3e{up}...{up}z2e & pulled_super_arc.e(2,1)(.5superpull) & pulled_super_arc.e(1,4)(.5superpull) & z4e{down}...{down}z5e; % bowl numeric arm_thickness; path p; p=z3{up}...{up}z2; arm_thickness=vround(if hefty:slab+2stem_corr else:.25[slab,vstem] fi); pickup crisp.nib; pos6(arm_thickness,-90); pos7(fudged.hair,-90); bot y6r=0; x6=x3; lft x7r=hround 1.0u; y7r=0; (x,y)=p intersectionpoint((0,y6l)--(w,y6l)); x6l:=x; filldraw stroke z6e--z7e; pos8(arm_thickness,-90); pos9(fudged.hair,-90); y8=y6; y9=y7; x8+x6=x9+x7=w; x8l:=w-x6l; filldraw stroke z8e--z9e; turn_picture; penlabels(1,2,3,4,5,6,7,8,9); endchar; cmchar "Script V"; beginchar("V",9u#,x_height#,0); italcorr x_height#*slant-.5u#; adjust_fit(serif_fit#+stem_shift#,stem_shift#); pickup tiny.nib; interim superness:=more_super; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); x0=0; x2=x3; y2=h; pos2'(stem,-180); z2'=z2; pos4(vair,-90); pos5(hair,0); x4=.5w; rt x5r=hround(w-.8u); y3=.5[y4,y5]; bot y4r=-oo; y5=.57h; filldraw stroke z2'e{down}--super_arc.e(3,4) ..tension atleast 1.05..{up}z5e; % left stem and arc if serifs: v_bulb(5,6); % closing bulb pos7(stem,0); pos8(stem,0); z7=z2; z8=z3; sloped_serif.l(7,8,a,1/3,jut,serif_drop); else: pos6(hair,15); y6=h; x6=x5-.5u; filldraw stroke z5e{up}..z6e; fi penlabels(0,1,2,3,4,5,6,7,8); endchar; cmchar "Turned M"; beginchar("W",15u#,x_height#,0); italcorr x_height#*slant-serif_fit#; adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); numeric shaved_stem; shaved_stem=hround(mfudged.stem-2stem_corr); pickup tiny.nib; pos1(mfudged.stem,0); pos2(mfudged.stem,0); pos1'(shaved_stem,0); pos2'(shaved_stem,0); pos3(mfudged.stem,0); pos5(mfudged.stem,0); lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; lft x3l=hround(.5w-.5stem); x5-x3=x3-x1; if not monospace: r:=hround(x5+x1)-l; fi % change width for better fit top y1=h+min(oo,serif_drop); bot y2=0; y1=y1'; y2=y2'; filldraw stroke z1'e--z2'e; % left stem h_stroke(2,a,3,4); % left arch and middle stem h_stroke(4,b,5,6); % right arch and right stem if serifs: sloped_serif.l(1',2',c,1/3,jut,serif_drop); % upper left serif numeric inner_jut; pickup tiny.nib; if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut; else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi dish_serif(2,1,d,1/3,jut,e,1/3,jut); % lower left serif dish_serif(4,3,f,1/3,inner_jut,g,1/3,jut); % lower middle serif dish_serif(6,5,h,1/3,inner_jut,i,1/3,jut); fi % lower right serif turn_picture; penlabels(1,2,3,4,5,6); endchar; cmchar "Chi"; beginchar("X",9.5u#,x_height#,desc_depth#); italcorr x_height#*slant+.5hair#-.75u#; adjust_fit(0,0); pickup fine.nib; if serifs: pos1(hair,180); pos6(hair,180); y1=y2l-h/6; y6=y5r+h/6; else: pos1(hair,130); pos6(hair,130); y1=y2l-h/8; y6=y5r+h/8; fi pos2(curve,80); pos5(curve,80); x1-.5hair=hround-.5hair+.5u; x6=w-x1; x2=w-x5=2u; top y2r=h+oo; bot y5l=-d-oo; z0=.5[z2,z5]; z2'=z2l+(.5u,0); z5'=z5r-(.5u,0); numeric theta; theta=angle(z5'-z2')+90; pos3(hair,theta); pos4(hair,theta); y3r=y2r-h/3; y4l=y5l+h/3; %z3l=whatever[z2',z0]; z4r=whatever[z0,z5']; if serifs: x3r+u=x4l-u=.5w; else: x3r+.4u=x4l-.4u=.5w; fi filldraw stroke z1e{up}..z2e{right}..z3e{z4r-z3r} ..z4e{z4r-z3r}..{right}z5e..{up}z6e; % major diagonal and hooks x8l=w-x7r=u; top y7=h; bot y8=-d; pos7(stem,0); pos8(stem,0); filldraw stroke z7e--z8e; % minor diagonal penlabels(0,1,2,2',3,4,5',5,6,7,8); endchar; cmchar "Yogh"; beginchar("Z",8u#,x_height#,desc_depth#); italcorr x_height#*slant-.5serif_fit#-.3u#; adjust_fit(0,.5serif_fit#); yogh_stroke(.5u,.3,.75u,false,false); penlabels(1,2,3,4,5,6,7,8,9,10,12); endchar; cmchar "Pipe"; beginchar("|",5u#,asc_height#,0); italcorr asc_height#*slant+.5rule_thickness#-2u#; adjust_fit(0,0); pickup if serifs: rule.nib; else: hair_rule.nib; fi x1=x2=good.x .5w; y1=h; y2=-d; draw z1--z2; % stem labels(1,2); endchar; cmchar "Double Pipe"; beginchar("{",8u#,asc_height#,0); italcorr asc_height#*slant+.5rule_thickness#-2u#; adjust_fit(0,0); if serifs: pickup rule.nib; x1=x2; x3=x4=w-x1; lft x1 = hround((w-3.6u-hair)/2); y1=y3=h; y2=y4=-d; draw z1--z2; draw z3--z4; % stems labels(1,2,3,4); else: pickup fine.nib; pos1(hair,0); pos2(hair,0); pos3(hair,0); pos4(hair,0); x1=x2; x3=x4=w-x1; lft x1l = hround((w-3.2u-hair)/2); top y1=top y3=h+o; bot y2=bot y4=-d-o; filldraw stroke z1e--z2e; filldraw stroke z3e--z4e; penlabels(1,2,3,4); fi endchar; cmchar "Double-barred Pipe"; beginchar("}",10u#,asc_height#,0); italcorr asc_height#*slant+.5rule_thickness#-1.5u#; adjust_fit(0,0); if serifs: pickup rule.nib; x1=x2=good.x .5w; y1=h; y2=-d; draw z1--z2; % stem lft x3 = lft x5 = hround(1u); rt x4 = rt x6 = w - hround(1u); top y3 = top y4 = h - bot y5; bot y5 = bot y6 = vround(.33h); draw z3--z4; draw z5--z6; % bars labels(1,2,3,4,5,6); else: pickup fine.nib; pos1(hair,0); pos2(hair,0); lft x1l = lft x2l = hround(.5w-.5hair); top y1=h+o; bot y2=-d-o; filldraw stroke z1e--z2e; pos3(hair,90); pos4(hair,90); pos5(hair,90); pos6(hair,90); lft x3l = lft x5l = hround(1u); rt x4l = rt x6l = w - hround(1u); top y3r = top y4r = h - bot y5; bot y5l = bot y6l = vround(.33h-.5vair); filldraw stroke z3e--z4e; filldraw stroke z5e--z6e; penlabels(1,2,3,4,5,6); fi endchar; % end of tipasym1.mf