% tipasym1.mf: TIPA phonetic symbols (1) % Copyright 1996-2003 FUKUI Rei % % This program may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.2 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.2 or later is part of all distributions of LaTeX % version 1999/12/01 or later. % % This program consists of all files listed in Manifest.txt. % % Version 1.2 2003/01/01 % % 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_vair=rt x4r+jut: inner_jut=jut; else: lft x2l-jut-.5u-1=rt x4r+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); endchar; cmchar "Turned A"; beginchar("5",CT(9u#,8.88u#),x_height#,0); if Times_Compat: bh#:=.6x_height#; else: bh#:=min(bar_height#,1.14x_height#-bar_height#); fi define_pixels(bh); italcorr .8x_height#*slant+.5stem#-1u#; adjust_fit(serif_fit# if serifs: if hair#+.5stem#>1.5u#:-.25u# fi\\fi,0); pickup fine.nib; bot y3r=-vround 1.5oo; if serifs: pos1(flare,0); pos2(hair,0); pos3(vair,-90); rt x1r=hround(w-max(u,if Times_Compat:1.5u else:2.1u fi-.5flare)); x3=.5w if Times_Compat:+.25u else:+.5u fi; y1=h-(min(bh+.5flare+2vair+2,.9[bh,h]-.5flare)); bulb(3,2,1); % bulb else: pos1(5/7[vair,flare],-85); x1l=good.x(w-1.5u); x1r:=good.x x1r; pos3(1/8[vair,thin_join],-90); x3=.5w+.2u; bot y1r=vround(.18[bot y3r,h-bh]); filldraw stroke term.e(3,1,right,.9,4); fi % terminal pos4(stem,180); lft x4r=hround(side_gap-.5stem); y4=h-if Times_Compat: .5 else: 1/3 fi[bh,h]; pos5(stem,180); x5=x4; y5=h-if Times_Compat: max(.45bh,2vair) else: max(.55bh,2vair) fi; filldraw stroke super_arc.e(3,4)&z4e..z5e; % arc and stem pos6(.3[thin_join,vair],-90); x6=x4; top y6=h-if Times_Compat: 1.1 fi bh; pos7(hround(curve-2stem_corr),if Times_Compat: 20 else: 0 fi); rt x7r=hround(w-max(.5u,1.5u-.5curve)); if Times_Compat: y7=.3[bot y8l,bot y6r]; pos8(.6[vair,flare],30); x8l=.5w+1u; else: y7=1/3[bot y8l,bot y6r]; pos8(vair,90); x8l=.5w+.75u; fi pos9(thin_join,180); z9l=z5l; top y8r=h+oo; (x,y8r)=whatever[z8l,z9l]; x8r:=min(x,x8+u); {{interim superness:=more_super; filldraw stroke z9e{up}...z8e{right}...{down}z7e & if Times_Compat: z7e{down}...{(-35,-10)}z6e else: super_arc.e(7,6)fi}}; % bowl if serifs: numeric shaved_stem; shaved_stem=hround(stem-3stem_corr); if hair#+.5stem#>1.5u#: pickup tiny.nib; pos5'(shaved_stem,180); lft x5'r=fine.lft x5r; y5'=y5; pos10(shaved_stem,180); x10=x5'; y10=h-.2[.5tiny,bh]; pos11(shaved_stem,180); lft x11r=hround .25u; top y11=h; pos12(shaved_stem,180); x11=x12; bot y12=h-(slab+eps); filldraw z5'l---z10l...z11l{left}--z11r --z12r{right}...z10r-.75(z12-z11)---z5'r--cycle; % foot else: pickup crisp.nib; pos5'(shaved_stem,180); lft x5'r=fine.lft x5r; y5'=y5; pos10(shaved_stem,180); x10=x5'; y10=h-1/3bh; pos11(.2[vair,stem],-90); x11r=.5[x10r,x12r]; top y11l=h+vround .5oo; pos12(hair,0); lft x12l=hround(.1u); y12=min(y10,y11-vair); pos13(hair,0); x13=x12; bot y13=min(vround(h-.6bh),bot y12); (x',y11l)=whatever[z11r,z12r]; x11l:=min(x',x10); if Times_Compat: y13l:=.05[y12l,y13l]; y13r:=y13l; fi filldraw stroke z5'e---z10e...z11e{left}...z12e---z13e; fi % hook else: numeric shaved_stem; shaved_stem=hround(stem-stem_corr); pickup tiny.nib; pos5'(shaved_stem,180); lft x5'r=fine.lft x5r; y5'=y5; pos10(shaved_stem,180); x10=x5'; top y10=h; filldraw stroke z5'e--z10e; fi % base of stem 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(side_gap-.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",CT(9.5u#,10u#),x_height#,0); italcorr x_height#*slant+.5hair#-.5u#; adjust_fit(0,0); pickup fine.nib; if serifs: pos1(hair,0); pos9(hair,180); else: pos1(fudged.stem,-10); pos9(fudged.stem,190); fi pos2(vair,-90); pos5(vair,90); pos8(vair,-90); lft x1l=w-rt x9l=hround(.5u-.25hair); y1=y9=.9h-.5hair; x5=.5w; bot y5l=-o; x2=w-x8=x1+1u+.15hair; top y2l=top y8l=h+o; if serifs: pos4(stem,180); pos6(hair,0); pos3(stem,180);pos7(hair,0); else: pos4(fudged.stem,180); pos6(fudged.hair,0); pos3(fudged.stem,180);pos7(fudged.hair,0); fi rt x4l=hround(x5+1u+.5stem); lft x6l=hround(x5-1u-.5hair); y4=y6=.25h+.5max(vair,.5stem); rt x3l=lft x7l=.5w+.5(.5stem-.5hair); y3=y7=.55h+1.5max(vair,.5stem); filldraw stroke z3e--z4e{z4-z3}...{left}z5e...{z7-z6}z6e--z7e; filldraw stroke z1e{up}..z2e...{z4-z3}z3e; filldraw stroke z7e{z7-z6}...z8e..{down}z9e; penlabels(1,2,3,4,5,6,7,8,9); endchar; cmchar "Barred O"; beginchar("8",CT(9u#,10u#),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",CT(7.25u#+max(.75u#,.5curve#),8.88u#),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; penpos5(alpha*left_stem,0); penpos7(vair,-90); penpos9(alpha*right_stem,180); y5=y9=y0; z5=whatever[z1,z2]; z9=whatever[z4,z3]; y6=y8=-.5d if not serifs:+.5vair fi; z6=whatever[z1,z2]; z8=whatever[z4,z3]; bot y7r=-d-o; x7=.5w+.2(left_stem-right_stem); numeric stem_jut[], y_shift, circle_gap; circle_gap=(x6-.5left_stem)-(x8+.5right_stem); stem_jut1=if circle_gap<.5u: .5 else: .15 fi left_stem; stem_jut2=if circle_gap<.5u: .5 else: .15 fi right_stem; y_shift=if (left_stem-1.2right_stem)>0: .25d else: 0 fi; x6:=x6+stem_jut1; x8:=x8-stem_jut2; y8:=y8+y_shift; penpos6(left_stem,0); penpos8(right_stem,180); filldraw stroke z5e{z2-z1}..z6e..{left}z7e..z8e..{z4-z3}z9e; % bottom loop if not serifs: % minor adjustments pos5'(alpha*left_stem,0);pos9'(alpha*right_stem,180); y5'=y9'=0; z5'l=whatever[z1l,z2l]; z9'l=whatever[z4r,z3r]; fill z5l--z5'l--z5'--z5--cycle; fill z9l--z9'l--z9'--z9--cycle; fi penlabels(0,1,2,3,4,5,6,7,8,9); 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(side_gap-.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,b,3,4); % arch and right stem hooktop(1,9,10,11,stem',hround(w-1.5u),h,.8,.55,.2); 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",CT(5.5u#,6.66u#),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 y1=alpha2: x4r-x3r=x2l-x1l+apex_corr; alpha=alpha1; else: alpha=alpha2; z2r=whatever[z9,z1l-(alpha*bot_stem,0)]; fi penpos1(alpha*left_stem,0); penpos2(alpha*bot_stem,0); alpha3=(y3++(x4r-x3r))/y3; penpos3(alpha3*right_stem,0); penpos4(alpha3*right_stem,0); z0=whatever[z4l,z3l]=z1r+whatever*(z2l-z1l); if y0=rt x4r+jut: inner_jut=jut; else: lft x2l-jut-.5u-1=rt x4r+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 penlabels(1,2,3,4,5,6); endchar; cmchar "Chi"; beginchar("X",CT(9.5u#,10u#),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(fudged.hair,130); pos6(fudged.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; if serifs: pos3(hair,theta); pos4(hair,theta); else: pos3(fudged.hair,theta); pos4(fudged.hair,theta); fi 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; if serifs: pos7(stem,0); pos8(stem,0); else: pos7(fudged.stem,0); pos8(fudged.stem,0); fi filldraw stroke z7e--z8e; % minor diagonal penlabels(0,1,2,2',3,4,5',5,6,7,8); endchar; cmchar "Yogh"; beginchar("Z",CT(8u#,8.88u#),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("|",CT(5u#,5.56u#),asc_height#,desc_depth#); italcorr asc_height#*slant+.5rule_thickness#-2u#; adjust_fit(0,0); numeric thickness; thickness=hround.4[hair,stem]; pickup tiny.nib; pos1(thickness,0); pos2(thickness,0); lft x1l = lft x2l = hround(.5w-.5thickness); top y1=h; bot y2=-d; filldraw stroke z1e--z2e; penlabels(1,2); endchar; cmchar "Double pipe"; beginchar("{",CT(8u#,8.88u#),asc_height#,desc_depth#); italcorr asc_height#*slant+.5rule_thickness#-2u#; adjust_fit(0,0); numeric thickness; thickness=hround(.4[hair,stem]-2stem_corr); pickup tiny.nib; pos1(thickness,0); pos2(thickness,0); pos3(thickness,0); pos4(thickness,0); x1=x2; x3=x4=w-x1; lft x1l = hround((w-3.2u-thickness)/2); top y1=top y3=h; bot y2=bot y4=-d; filldraw stroke z1e--z2e; filldraw stroke z3e--z4e; penlabels(1,2,3,4); endchar; cmchar "Double-barred pipe"; beginchar("}",10u#,asc_height#,desc_depth#); italcorr asc_height#*slant+.5rule_thickness#-1.5u#; adjust_fit(0,0); numeric thickness[]; thickness1=hround.4[hair,stem]; pickup tiny.nib; pos1(thickness1,0); pos2(thickness1,0); lft x1l = lft x2l = hround(.5w-.5thickness1); top y1=h; bot y2=-d; filldraw stroke z1e--z2e; thickness2=vround .3[vair,flare]; pos3(thickness2,90); pos4(thickness2,90); pos5(thickness2,90); pos6(thickness2,90); lft x3l = lft x5l = hround 1u; rt x4l = rt x6l = hround(w-1u); top y3r = top y4r = h-d-bot y5; bot y5l = bot y6l = vround(.4(h+d)-d-.5thickness2); filldraw stroke z3e--z4e; filldraw stroke z5e--z6e; penlabels(1,2,3,4,5,6); endchar; % end of tipasym1.mf