% Computer Modern Roman lower case with dotted diacriticals for Turkish etc. % 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. % Dotted diacriticals added by P. A. MacKay, January, 1987. % Character codes \0220 through \0232 are generated unless pxlfont = 128 % in which case the characters are mapped into \020 through \032 if unknown accsub: input accsub fi cmchar "The letter dad"; dot_sharp_values; beginchar(oct"020",10u#+serif_fit#,asc_height#,desc_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 numeric dot_shift, dot_top; define_whole_blacker_pixels(dot_top); dot_shift=-dot_top-desc_depth; x8=.5w; dot_accent(8,g,dot_shift); penlabels(0,1,2,3,4,5,6,7); endchar; iff not variant_g: cmchar "The letter ghayn"; numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); beginchar(oct"021",10u#,min(asc_height#,10/7x_height#+.5dot_diam#),desc_depth#); define_whole_blacker_pixels(dot_diam); italcorr h#*slant-serif_fit# + .5dot_diam# -2u#; 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 pickup tiny.nib; pos15(dot_diam,0); pos16(dot_diam,90); x15=.55[x2r,x4r]; % top y16r=h+1; if bot y16l-top y1