% Accented Turkish based on Computer Modern Roman lower case: % These letters were originally coded by D. E. Knuth in November, 1979, % inspired by the Monotype faces used in {\sl The Art of Computer Programming}. % Sans serif designs by Richard Southall were added in April, 1982. % The programs were revised for the new \MF\ conventions in 1985. % Accents added by P. A. MacKay in December, 1986. % Accents are intended to be exact copies of the accents in the % Computer Modern file accent.mf, with the following exceptions: % 1. Bar accents are adjusted to the width of the associated letter. % 2. The hat accent is pinched in to fit the letter i. % 3. Acute and grave accents are rotated to whatever angle % best suits the letter associated letter. % 4. The under_h accent is based on an inverted tie accent. % No attempt is made to put the accent in the same position % that it would occupy if \TeX\ put it in with the \accent primitive. % Each accent has been adjusted for vertical and horizontal position % position to best fit the associated letter. % Character codes \0033--\0037, \0053, \0074--\0076, \0176 and \0177 % are generated. % Character \0040 is generated |iff not monospace|. if unknown accsub: input accsub fi cmchar "The letter hatted a"; beginchar(oct "074",9u#,if serifs: if .5(asc_height#-x_height#)>1.5stem#: .8[x_height#,asc_height#] else:asc_height# fi else:asc_height# fi, 0); bh#:=min(bar_height#,1.14x_height#-bar_height#); define_pixels(bh); italcorr 2/3[x_height#,asc_height#]*slant+.5stem#-serif_fit#-if serifs: 3 fi u#; adjust_fit(0,serif_fit# if serifs: if hair#+.5stem#>1.5u#:-.25u# fi\\fi); pickup fine.nib; top y3r=x_height+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,x_height]-.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,x_height]; 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); 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 numeric hat_shift; if h75: 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 cedilla_accent(4,a,o if serifs: -crisp fi); penlabels(0,1,2,3,4,5); endchar; cmchar "The letter dhal"; beginchar(oct "034",10u#+serif_fit#,asc_height#,.6desc_depth#); italcorr asc_height#*slant-serif_fit#+.5stem#-2u#; adjust_fit(0,serif_fit#); pickup tiny.nib; pos1(stem',0); pos2(stem,0); pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2; rt x1r=hround(w-2.5u+.5stem'); top y1=h; numeric edge; edge=lft x2l; pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0); pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360); lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),1/3[lft x2,edge]); y3=1/8[bar_height,x_height]; x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo; lft x5r=hround max(1.35u-.5curve,.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:=max(x,.5[x5r,x4]); (x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]); 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}...{left}z4l)); pickup tiny.nib; bot y2=if serifs:-min(oo,serif_drop) else: 0 fi; filldraw stroke z1e--z0'e--z0e--z2e; % stem if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif sloped_serif.r(2,0,b,1/3,jut,min(oo,serif_drop)); fi % lower serif bar_accent(5,3,c,-8/9desc_depth); penlabels(0,1,2,3,4,5,6,7); endchar; % cupped g. This is fairly straightforward, except for the % lengthy calculation of cup_shift. To understand that, you must % look at the dimension calculations and use of mid_thickness % in Breve accent in accent.mf. No change to italic correction, % because right horn of cup will always fall to left of hook of g. iff not variant_g: cmchar "The letter cupped g"; beginchar(oct "035",9u#,min(asc_height#,2x_height#),desc_depth#); italcorr x_height#*slant+.25u#; adjust_fit(0,0); numeric light_vair,light_curve,loop_top,loop_side; light_vair=Vround(.5[thin_join,vair]+vair_corr); light_curve=max(fine.breadth,hround(curve-3stem_corr)); loop_top=Vround .77[vair,fudged.stem]; loop_side=hround .64[vair,fudged.stem]; pickup fine.nib; pos1(light_vair,90); pos2(light_curve,180); pos3(light_vair,270); pos4(light_curve,360); pos11(loop_top,90); y11r=good.y(y11r+.15bar_height-y11); x1=x3=.5[x2,x4]; y2=y4=.5[y1,y3]; lft x2r=hround(1.75u-.5light_curve); rt x4r=hround(w-2.75u+.5light_curve); top y1r=x_height+oo; y3r=good.y(y3r+.27[top y11r,bot y1l]-y3); filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3); % left half of bowl filldraw stroke pulled_arc.e(3,4) & pulled_arc.e(4,1); % right half of bowl x0=superness[x1r,x4r]; y0=superness[y4r,y1r]; % NE point on the super bowl x8'=superness[x3r,x2r]; y8'=superness[y2r,y3r]; % SW point on the super bowl x8''=superness[x3,x2]; y8''=superness[y2,y3]; pos0(thin_join,angle(z0-z8')+90); pos8(thin_join,angle(z0-z8')-90); z8=.618[z8',z8'']; if serifs: pos5(vair,90); pos6(hair,0); pos7(.5[hair,flare],0); x5=.75[x0,x6]; top y5r=x_height+o; rt x6r=hround(w-.25u); y6+(.5[hair,flare])/2=.95[bar_height,x_height]+oo; filldraw stroke z0e..{right}z5e; bulb(5,6,7); % ear else: pos5(vair',100); top y5r=x_height+oo; rt x5l=hround(w-.25u); y5l:=good.y y5l; filldraw z0l{z5-z0}..z5l--z5r{left}..{curl 1}z0r--cycle; fi % ear pos10(loop_top,90); x10=x8+.75u; y10=y11; pos12(loop_side,0); pos13(light_vair,-90); pos14(loop_side,-180); pos10'(.5[thin_join,vair],-270); rt x12r=hround max(w-1.25u+.5loop_side,w-.5u); y12=y14=.5[y11,y13]; x11=x13=max(.5w,x10+eps); bot y13r=-d-oo-1; x14=w-x12; z10'l=z10l; filldraw stroke z8e{z8-z0}..z10e---z11e; % link filldraw stroke {{interim superness:=hein_super; super_arc.e(11,12)}} & super_arc.e(12,13) & super_arc.e(13,14) & super_arc.e(14,10'); % loop numeric cup_shift; cup_shift= x_height+slab-max(x_height+o+tiny,1/3[x_height,asc_height]+o-vround 1/6[vair,stem]); if cup_shift>0:cup_shift:=0; fi cup_accent(1,c,cup_shift); penlabels(0,1,2,3,4,5,6,7,8,10,11,12,13,14); labels(8',8''); endchar; iff variant_g: cmchar "Variant cupped g"; beginchar(oct "035",10u#+serif_fit#,.8[x_height#,asc_height#],desc_depth#); italcorr .8[x_height#,asc_height#]*slant-serif_fit#+.5stem#-2u# if serifs: -.5u# fi; adjust_fit(0,serif_fit# if serifs: -.5u# fi); pickup tiny.nib; pos1(stem',0); pos2(stem,0); pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2; rt x1r=hround(w-2.5u+.5stem'); numeric edge; edge=lft x2l; path edge_path; edge_path=(edge,x_height)--(edge,0); pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0); pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360); lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),2/3[lft x2,edge]); y3=bar_height; x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo; lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height; x6l=x4l-.2u; bot y6r=vround 1/3vair; lft x7l=edge; y7=min(y3,y6+y4-y3+.6vair); (x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]); (x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]); filldraw stroke z3e{up}...{left}z4e&super_arc.e(4,5) &super_arc.e(5,6)&z6e{right}...{up}z7e; % bowl y1=ypart(edge_path intersectionpoint(z3l{up}...{left}z4l)); y0=ypart(edge_path intersectionpoint(z7l{down}...{left}z6l)); pickup tiny.nib; bot y2=if serifs: -.25d else: 0 fi; filldraw stroke z1e--z0'e--z0e--z2e; % stem pickup crisp.nib; pos8(hround(hair-stem_corr),0); pos7'(stem',0); z7'=z1; x8r=x7'r; top y8=x_height+oo; filldraw stroke z7'e--z8e; % point if serifs: pickup tiny.nib; pos9(vair,-90); x9=.5[x2,x10]; bot y9r=-d-o-1; pos10(hair,-180); lft x10r=hround u; y10=-.75d+.5flare; pos11(flare,-180); z11r=z10r; bulb(9,10,11); filldraw stroke super_arc.e(2,9); % tail else: pickup fine.nib; pos2'(stem,0); z2'=z2; z2''r=z2'r; z2''=z2'; z2''l=(x2'l,0); pos9(vair,-90); x9=4.5u; bot y9r=-d-o-1; pos10(.5[vair,flare],-90); lft x10=hround 1.25u; y10r=good.y -5/6d; y10l:=good.y y10l; filldraw stroke z2'e..z2''e&super_arc.e(2'',9) & term.e(9,10,left,.9,4); fi % tail numeric cup_shift; cup_shift= x_height+slab-max(x_height+o+tiny,1/3[x_height,asc_height]+o-vround 1/6[vair,stem]); if cup_shift>0:cup_shift:=0; fi cup_accent(4r,c,cup_shift); penlabels(0,1,2,3,4,5,6,7,8,9,10,11); endchar; cmchar "The letter kha"; beginchar(oct "036",10u#,asc_height#,.6desc_depth#); italcorr .5[bar_height#,x_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=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: 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); % lower left serif dish_serif(4,3,e,1/3,inner_jut,f,1/3,jut); fi % lower right serif if dish>0: under_h_accent(2,4,k); else: bar_accent(2,4,k,-8/9desc_depth); fi penlabels(1,2,3,4); endchar; cmchar "The letter hatted i"; beginchar(oct"075",5u#,if serifs: if .5(asc_height#-x_height#)>1.5stem#: .8[x_height#,asc_height#] else:asc_height# fi else:asc_height# fi, 0); italcorr if serifs: asc_height#*slant-serif_fit#+.5stem#-2u#; else: asc_height#*slant+.5stem#; fi adjust_fit(serif_fit#+stem_shift# if monospace:+.25u#fi,serif_fit#-stem_shift#); pickup tiny.nib; pos1(stem',0); pos2(stem',0); if odd(w-stem'): change_width; fi lft x1l=hround(.5w-.5stem'); x1=x2; top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=0; filldraw stroke z1e--z2e; % stem if serifs: sloped_serif.l(1,2,a,1/3,.95jut,serif_drop); % upper serif dish_serif(2,1,b,1/3,jut,c,1/3,.9jut); fi % lower serif numeric hat_shift; if h1.5stem#: .8[x_height#,asc_height#] else:asc_height# fi else:asc_height# fi, 0); italcorr .8[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); 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=x_height+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); % lower left serif dish_serif(4,3,e,1/3,inner_jut,f,1/3,jut); fi % lower right serif numeric tilde_shift; if h1.5stem#: .8[x_height#,asc_height#] else:asc_height# fi else:asc_height# fi, 0); italcorr 1/3[x_height#,asc_height#]*slant-.5u# if serifs: - stem# fi; 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=x_height+vround 1.5oo; y3r=-oo; y2=y4=.5x_height-vair_corr; y2l:=y4l:=.52x_height; penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3) & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl numeric hat_shift; if h1.5stem#: .8[x_height#,asc_height#] else:asc_height# fi else:asc_height# fi, 0); italcorr 1/3[x_height#,asc_height#]*slant-.5u# if serifs: - stem# fi; adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); numeric light_vair; light_vair=vair if hefty: -vround 2vair_corr fi; if light_vair