% % tipasym3.mf: TIPA phonetic symbols (3) % % 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 "Hooktop C"; beginchar(oct"301",8.6u#,x_height#,0); italcorr .85asc_height#*slant + 1.5u#; adjust_fit(if monospace: .5u#,1u# else: 0,.5u# fi); pickup fine.nib; pos2(vair',90); pos4(vair',270); x2=x4=.5(w+u); top y2r=vround(h+1.5oo); bot y4r=-oo; pos3(curve,180); lft x3r=hround max(.6u,1.35u-.5curve); y3=.5h; if serifs: pos1(hair,0); pos0(max(.9flare,hair),0); y1=min(bar_height+.5flare+2vair'+2,.9[bar_height,h]-.5flare); rt x1r=hround(w-1.35u); bulb(2,1,0); % bulb pos5(hair,0); rt x5r=hround(w-1.15u); 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],90); 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 if serifs: pos6(hair,0); y6=y1; rt x6r=rt x1r; hooktop(6,7,8,9,hair,hround(w+1.75u),.85asc_height+.5vair,.95,.55,.5); else: pos6(vair,0); y6=y1r; rt x6r=rt x1r; hooktop(6,7,8,9,vair,hround(w+1.75u),.85asc_height+.5vair,.9,.5,.5); fi penlabels(0,1,2,3,4,5,6,7,8,9); endchar; cmchar "Stretched C"; beginchar(oct"302",9u#,asc_height#,desc_depth#); italcorr x_height#*slant-.2u#; adjust_fit(0,0); pickup fine.nib; interim superness:=more_super; pos2(stem,90); pos5(stem,270); x2=x5=.5w; top y2r=vround(h+1.5oo); bot y5r=-d-oo; pos3(stem,180); pos4(stem,180); lft x3r=lft x4r=hround1.2u; y3=.75h; y4=0; pos1(stem,0); rt x1r=hround(w-1.1u); top y1=vround .75h; pos6(stem,0); rt x6r=hround(w-1u); top y6=0; filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3) & z3e--z4e & pulled_arc.e(4,5) & pulled_arc.e(5,6); penlabels(0,1,2,3,4,5,6); endchar; cmchar "D-Yogh Ligature"; beginchar(oct"303",14u#,asc_height#,desc_depth#); numeric d_w; d_w=10u+serif_fit; italcorr asc_height#*slant-serif_fit#+.5stem#-1.75u#; adjust_fit(0,.5serif_fit#); pickup tiny.nib; pos21(stem',0); pos22(stem,0); % d pos20'(stem',0); pos20(stem,0); z20r=z20'r; x20'=x21; x20=x22; rt x21r=hround(d_w-2.5u+.5stem'); top y21=h; numeric edge; edge=lft x22l; pickup fine.nib; pos23(if hefty:thin_join else: hair fi,0); pos24(vair,90); pos25(curve,180); pos26(vair,270); penpos27(x23r-x23l,360); lft x23l=min(lft x23l-(rt x23r-tiny.rt x22r),1/3[lft x22,edge]); y23=.616x_height; x24l=.5(d_w-serif_fit)-.3u; top y24r=x_height+oo; lft x25r=hround max(1.35u-.5curve,.6u); y25=.5x_height; x26l=x24l-.2u; bot y26r=-oo; x27=x23; y27=min(y23,y26+y24-y23+.6vair); (x,y24r)=whatever[z23l,z24l]; x24r:=max(x,.5[x25r,x24]); (x',y26r)=whatever[z27l,z26l]; x26r:=max(x',.5[x25r,x26]); filldraw stroke z23e{up}...pulled_arc.e(24,25) & pulled_arc.e(25,26)...{up}z27e; % bowl y20=ypart(((edge,h)--(edge,0))intersectionpoint(z23l{up}...{left}z24l)); pickup tiny.nib; bot y22=.33x_height; filldraw stroke z21e--z20'e--z20e--z22e; % stem if serifs: sloped_serif.l(21,20',a,1/3,jut,serif_drop); fi % upper serif h:=x_height; % yogh yogh_stroke(x20l,.15,x20l-.5u,true,false); if serifs: pickup tiny.nib; pos40(vair,0); x40=x40'=x22l; y40'=.2bar_height; y40=.5[y22,y40']; filldraw stroke z22e--z40e; % joint pickup fine.nib; pos40'(vair,180); pos12'(vair,180); z12'=z3; filldraw stroke z12'e{z3-z5}...{z40'-z22}z40'e; % joint penlabels(40',12'); else: pickup tiny.nib; pos40(stem/cosd30,30); x40=x22; y40=.3[0,y22]; filldraw stroke z22e--z40e; fi % joint penlabels(1,2,3,4,5,6,7,8,9,10,12,20,21,22,23,24,25,26,27,40); endchar; cmchar "Right-hook Schwa"; beginchar(oct"304",11.5u#,x_height#,0); italcorr .5[bar_height#,x_height#]*slant+.75u#; adjust_fit(if monospace: .25u#,.5u# else: 0,0 fi); numeric left_curve; left_curve=curve if not serifs: -3stem_corr fi; numeric hook_w; hook_w=w-8u; if left_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=.5[y62,y60]; y63=if serifs: .6[y62,y60]; else: .5[y62,y60]; 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 Heng"; beginchar(oct"312",10u#,asc_height#,desc_depth#); italcorr .7[x_height#,asc_height#]*slant-serif_fit#+.5stem#-u#; adjust_fit(serif_fit#+stem_shift#,-stem_shift#-.5u#); 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: 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 hooktop(1,9,10,11,stem',rt x3r,h,.8,.55,.2); left_tail(4,5,6,7,stem,rt x2r); penlabels(1,2,3,4,5,6,7,9,10,11); endchar; cmchar "Iota"; beginchar(oct"314",4.5u#,x_height#,0); l_width#:=4u#; adjust_fit(if monospace:u#,u# else: u#,0 fi); pickup fine.nib; x2-.5stem=hround(1.5u-.5stem); x4=w; hook_out(2,3,4); % closing hook pickup tiny.nib; pos1(stem,0); pos2'(stem,0); z2'=z2; top y1=x_height if serifs: +min(oo,serif_drop) fi; x1=x2; filldraw stroke z1e--z2e; % stem if serifs: sloped_serif.l(1,2,a,1/3,jut,serif_drop); fi % serif penlabels(1,2,3,4); endchar; cmchar "Old Barred Dotless J"; beginchar(oct"315",5.5u#,x_height#,desc_depth#); italcorr x_height#*slant-serif_fit#+.5stem#-.5u#; adjust_fit(serif_fit#+2stem_shift# if monospace:+.5u# fi, serif_fit#-2stem_shift# if monospace:-.5u# fi); pickup tiny.nib; pos1(stem',0); pos2(stem',0); rt x1r=hround(.5w+.25u+.5stem'); x1=x2; top y1=x_height; bot y2=-1/3d; filldraw stroke z1e--z2e; % stem if serifs: dish_serif(1,2,b,1/3,1.25jut,c,1/3,jut); % serif pickup tiny.nib; pos5(vair,-90); pos6(hair,-180); pos7(flare,-180); x5=.5[x2,x6r]; bot y5r=-d-oo; y6-.5flare=-.88d; if monospace: lft x6r=0 else: z6r=z7r; rt x7l=floor .75u fi; (x,y5r)=whatever[z5l,z2l]; x5r:=max(x,.5[x6r,x5]); filldraw stroke z2e{down}...z5e{left}; bulb(5,6,7); % arc and bulb else: pickup fine.nib; pos2'(stem',0); z2'=z2; pos6(.2[vair,stem'],-90); pos7(vair,-90); lft x7r=hround -.75u; bot y7r=vround 5/6(-d-oo); x3r=x1r; top y4r=min(2x_height,h+1); (x,y7l)=whatever[z7r,(x1,min(h,asc_height))]; x7l:=x; z5r=z2'r; (x2'l,y5l)=whatever[z7l,z5r]; x5l=x2'l; y5=y5r; x6r=.5[x7r,x5r]; x6l:=.5[x7l,x5l]; bot y6r=-d-oo; filldraw stroke z2'e..{down}z5e & super_arc.e(5,6) & term.e(6,7,left,1,4); fi % arc and terminal hbar(8,9,lft x1l - hround(1.75u),rt x1r + hround(1.5u),.1x_height); penlabels(1,2,5,6,7); endchar; cmchar "Hooktop K"; beginchar(oct"316",9.5u#,asc_height#,0); italcorr x_height#*slant-.2u#; adjust_fit(serif_fit#,serif_fit#); pickup tiny.nib; numeric right_jut,stem[],alpha[]; stem1=max(tiny.breadth,hround(fudged.stem-stem_corr)); stem2=max(tiny.breadth,hround(fudged.stem-2stem_corr)); stem3=max(tiny.breadth,hround(fudged.hair if hefty:-\\4stem_corr fi)); stem4=max(tiny.breadth,hround(fudged.stem-3stem_corr)); if serifs: right_jut=.6jut; else: right_jut=.4tiny; fi pos1(stem1,0); pos2(stem2,0); top y1=.25[x_height,h]; bot y2=0; lft x1l=lft x2l=hround(2.5u-.5stem1); top y3=x_height; rt x3r=hround(r-letter_fit-.7u-right_jut)+eps; bot y6=0; rt x6r=hround(r-letter_fit-.3u-right_jut)+eps; x4=x11=x1; y4=.7bar_height; y11=y3; alpha1=diag_ratio(1,.5(stem3-tiny),y3-y4,x3r-x4); alpha2=diag_ratio(1,.5(stem4-tiny),y11-y6,x6r-x1); penpos3(alpha1*(stem3-tiny),0); penpos4(whatever,-90); z5=.5[z5l,z5r]; penpos6(alpha2*(stem4-tiny),0); forsuffixes $=l,r: y3'$=x_height; y6'$=0; z4$=z3'$+whatever*(z3-z4); z5$=z6'$+whatever*(z11-z6)=whatever[z3,z4]; endfor z3'r=z3r+penoffset z3-z4 of currentpen+whatever*(z3-z4); % we have also |z3'l=z3l+penoffset z4-z3 of currentpen+whatever*(z3-z4)|;\] z6'r=z6r+penoffset z11-z6 of currentpen+whatever*(z11-z6); z6'l=z6l+penoffset z6-z11 of currentpen+whatever*(z11-z6); fill z4r--diag_end(4r,3'r,1,.5,3'l,4l)--z4l--cycle; % upper diagonal fill z5l--diag_end(5l,6'l,.5,1,6'r,5r)--z5r--cycle; % lower diagonal pos0(stem1,0); pos0'(stem2,0); y0=y0'; x0=x1; x0'=x2; rt z0r=whatever[z3,z4]; filldraw stroke z1e..z0e--z0'e..z2e; % stem if serifs: numeric inner_jut; if rt x2r+jut+.5u+1<=lft x6l-jut: inner_jut=jut; else: rt x2r+inner_jut+.5u+1=lft x6l-inner_jut; fi dish_serif(2,0',b,1/3,jut,c,1/3,inner_jut); % lower stem serif dish_serif(3,4,d,2/3,1.4jut,e,1/2,right_jut)(dark); % upperDiagonal serif dish_serif(6,5,f,1/2,inner_jut,g,1/3,right_jut)(dark);fi % lowerDiagonal serif hooktop(1,7,8,9,stem1,rt x3r,h,.8,.55,.2); penlabels(0,1,2,3,4,5,6,7,8,9,11); endchar; cmchar "L-Yogh Ligature"; beginchar(oct"320",10u#,asc_height#,desc_depth#); italcorr x_height#*slant-.5serif_fit#-.3u#; adjust_fit(serif_fit#+stem_shift#,.5serif_fit#); pickup tiny.nib; pos21(stem',0); pos22(stem',0); % l lft x21l=hround(2.5u-.5stem'); x21=x22; top y21=h; bot y22=0; filldraw stroke z21e--z22e; % stem if serifs: sloped_serif.l(21,22,e,1/3,jut,serif_drop); % upper serif dish_serif(22,21,f,1/3,jut,g,1/3,jut); fi % lower serif h:=x_height; % yogh yogh_stroke(x21,.28,x21l,true,false); penlabels(1,2,3,4,5,6,7,8,9,10,12,21,22); endchar; cmchar "Closed Omega"; beginchar(oct"321",11u#,x_height#,0); italcorr .7x_height#*slant; adjust_fit(0,0); pickup fine.nib; pos2(curve,-180); lft x2r=hround.5u; y2=y8=.45x_height; y4=y6=vround.6h; y1r=h+oo; x1=.5w; pos1(hair,90); pos3(hair,-90); pos4(hair,0); pos5(vair,90); pos6(hair,180); pos7(hair,270); pos8(curve,360); bot y3r=bot y7r=-oo; top y5r=vround(.1[y4,h]+.5vair); x3=.5[x2,x4]; x7+.25u=.5[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