% The Computer Modern Text Italic family (by D. E. Knuth, 1979--1985) mode_setup; font_setup; % DEBUT computer Modern Italic lower case: % This lowercase italic alphabet was prepared by D. E. Knuth in December, 1979, % inspired by the Monotype faces used in {\sl The Art of Computer Programming}. % The programs were revised for the new \MF\ conventions in 1985. % Character codes \0141 through \0172 are generated. cmchar "Italic letter r"; beginchar("r",5.5u#+max(1.75u#,flare#),x_height#,0); italcorr x_height#*slant; adjust_fit(if monospace:.25u#,.5u# else: 0,0 fi); pickup fine.nib; x0=0; x2=x3; pos3(stem,0); lft x3l=hround(2.5u-.5stem); y3-.5stem=-oo; hook_in(0,1,2); % opening hook filldraw circ_stroke z3e--z2e; % left stem pos3'(hair,180); z3'=z3; pos4(vair,90); pos5(hair,0); pos6(flare,0); x4=w-.5u-max(1.75u,flare); rt x5r=hround(r-.5u); top y4r=h+oo; filldraw stroke z3'e{up}...z4e{right}; % link y6+.5flare=vround(bot y4l-.03x_height); bulb(4,5,6); % bulb math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#-.5u#); penlabels(0,1,2,3,4,5,6); endchar; cmchar "Italic letter tj"; beginchar("T",5.5u#,min(asc_height#,10/7x_height#),desc_depth#); italcorr max(1/3x_height#*slant+.5hair#+.5u#,x_height#*slant-.25u#); adjust_fit(if monospace:u#,u# else:0,0 fi); pickup fine.nib; pos1(stem,0); lft x1l=hround(2u-.5stem); y1+.5stem=h+oo; x2=x1; x4=w; hook_out(2,3,4); % closing hook filldraw circ_stroke z1e--z2e; % stem pickup crisp.nib; pos5(bar,90); pos6(bar,90); lft x5=hround-.75u; rt x6=hround(w-.75u); top y5r=top y6r=x_height; filldraw stroke z5e--z6e; % crossbar pickup crisp.nib; pos20(vround 1/3[vair,stem],-90); pos22(vround 1/3[vair,stem],-90); x20= x2-u; x22= x4r; y20=y22=-1/2desc_depth; filldraw stroke z20e---z22e; math_fit(1.25u#-x_height#*slant,ic#); penlabels(1,2,3,4,5,6); endchar; cmchar "Italic letter dj"; beginchar("D",9u#,asc_height#,desc_depth#); italcorr max(1/3x_height#*slant+.5hair#+.5u#, h#*slant+.5stem#-2u#) if math_fitting:-.5u# fi; adjust_fit(0,0); pickup fine.nib; pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); x0=x4; x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); x4+.5stem=hround(w-2.5u+.5stem); top y1r=x_height+oo; bot y3r=-oo; y0=y2=.5[y1,y3]; filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl x5=x0; x7=w; hook_out(5,6,7); % closing hook pickup tiny.nib; pos5'(stem,0); pos4(stem,0); z5'=z5; top y4=h; filldraw stroke z4e--z5'e; % stem sloped_serif.l(4,5',a,1/3,jut,serif_drop); % serif math_fit(-.3x_height#*slant+.5curve#-u#,ic#); pickup crisp.nib; pos20(vround 1/3[vair,stem],-90); pos22(vround 1/3[vair,stem],-90); x20= x2r; x22= x6; y20=y22=-1/2desc_depth; filldraw stroke z20e---z22e; penlabels(0,1,2,3,4,5,6,7); endchar; cmchar "Italic letter s check"; beginchar("S",5.25u#+max(1.75u#,flare#),x_height#,0); italcorr x_height#*slant-.5u#; adjust_fit(0,0); pickup fine.nib; numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle pos2(vair,-90); pos0(max(fine.breadth,ess),theta); pos7(vair,-90); x2l=x0=x7=.5w; top y2l=h+oo; bot y7r=-oo; y0-.5ess=y7l+.55(y2r-y7l-ess); lft x3l=hround u-eps; rt x6r=hround(w-.5u)+eps; x3r-x3l=x6r-x6l=hround .5[vair,ess]-fine; ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; interim superness:=more_super; filldraw stroke super_arc.e(2,3) & z3e{down} ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke pos1(hair,0); pos10(hround .75[hair,flare],0); pos2'(vair,90); z2'=z2; pos8(hair,-180); pos9(flare,-180); rt x10r=hround(w-u)+2eps; lft x9r=hround .5u-2eps; y10=.78h; y9=.25h; bulb(2',1,10); bulb(7,8,9); % bulbs h':=vround min(asc_height,2x_height); % height of circumflex being inverted pickup crisp.nib; pos22'(.5[vair,curve],90); top y22'r=asc_height; pos22(.5[vair,curve],90); x22=.5w; x21=w-x23=good.x 2.25u; top y21=top y23=asc_height; y21-y22=.5(y22'-x_height); pos21(hair,angle(z22-z21)+90); pos23(hair,angle(z23-z22)+90); filldraw stroke z21e--z22e--z23e; % diagonals math_fit(0,ic#); penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; cmchar "Italic letter q"; beginchar("q",8u#,asc_height#,desc_depth#); italcorr x_height#*slant; adjust_fit(0,0); pickup tiny.nib; pos1(stem,0); pos2(stem,0); x1=x2; lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; filldraw circ_stroke z2e--z1e; % left stem sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif pickup fine.nib; pos3(vair,90); x3=x1; y3=bar_height; pos4(vair,90); x4=w-2u; top y4r=x_height+oo; filldraw stroke z3e{right}..{right}z4e; % upper diagonal pos5(hair,0); pos6(flare,0); rt x5r=hround(w-.5u); y5+.5flare=vround(bot y4l-.03x_height); bulb(4,5,6); % bulb pos7(stem,0); pos8(vair,90); pos9(hair,180); x9+.5hair=hround(w+.5hair-eps); y9=1/3x_height; lft x7l=hround(w-2.75u-.5stem); y7=1/2y3; x8=w-1.2u; bot y8l=-oo; filldraw stroke z3e{right}...z7e{down} ...z8e{right}...{up}z9e; % lower diagonal math_fit(0,1/3x_height#*slant+.5hair#+.5u#); pos20(flare,0); pos21(flare,90); x20=2/3[x2,x7]; y20= -flare; z21= z20; dot(20,21); penlabels(1,2,3,4,5,6,7,8,9); endchar; cmchar "Italic letter h trait"; beginchar("X",9u#,asc_height#,desc_depth#); italcorr 1/3x_height#*slant+.5hair#+.5u#; adjust_fit(0,0); pickup tiny.nib; pos1(stem,0); pos2(stem,0); x1=x2; lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; filldraw circ_stroke z2e--z1e; % left stem sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem); x5=x4-.25u; ital_arch(2,3,4); % arch x7=w; hook_out(5,6,7)(skewed); % closing hook filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem pickup crisp.nib; pos20(vround 1/3[vair,stem],-90); pos22(vround 1/3[vair,stem],-90); x20= x2; x22= x4r; y20=y22=-1/2desc_depth; filldraw stroke z20e---z22e; math_fit(0,ic#); penlabels(1,2,3,4,5,6,7); endchar; cmchar "Italic letter h halfcircle"; beginchar("x",9u#,asc_height#,desc_depth#); italcorr 1/3x_height#*slant+.5hair#+.5u#; adjust_fit(0,0); pickup tiny.nib; pos1(stem,0); pos2(stem,0); x1=x2; lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; filldraw circ_stroke z2e--z1e; % left stem sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem); x5=x4-.25u; ital_arch(2,3,4); % arch x7=w; hook_out(5,6,7)(skewed); % closing hook filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem pickup crisp.nib; pos20(vair,180); pos22(vair,0); pos21(vround 1/3[vair,stem], -90); x20= x2+u; x22= x5; x21=1/2[x20,x22]; y22= y20=-1/8desc_depth; y21=-1/2desc_depth; filldraw stroke z20e{down}...z21e{right}...{up}z22e; math_fit(0,ic#); penlabels(1,2,3,4,5,6,7); endchar; cmchar "Italic letter h point"; beginchar("H",9u#,asc_height#,desc_depth#); italcorr 1/3x_height#*slant+.5hair#+.5u#; adjust_fit(0,0); pickup tiny.nib; pos1(stem,0); pos2(stem,0); x1=x2; lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; filldraw circ_stroke z2e--z1e; % left stem sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem); x5=x4-.25u; ital_arch(2,3,4); % arch x7=w; hook_out(5,6,7)(skewed); % closing hook filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem pos20(flare,0); pos21(flare,90); x20=x3; y20= -flare; z21= z20; dot(20,21); math_fit(0,ic#); penlabels(1,2,3,4,5,6,7); endchar; cmchar "Italic Ayn"; beginchar("a",4u#,asc_height#,0); italcorr max(1/3x_height#*slant+.5hair#+.5u#,h#*slant+.5flare#-2u#); adjust_fit(0,0); pickup fine.nib; x10= x8=.5w -.4(h-x_height)*slant ; x9= x8-2u; top y10=h+1; y8= x_height; y9= .5[y8,y10]; pos8(vair,-90); pos9((flare+hair)/2, 180); pos10(flare,90); filldraw stroke z8e..z9e..z10e; math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#); penlabels(0,1,2,3,4,5,8,9); endchar; cmchar "Italic letter i"; beginchar("i",5u#,asc_height#,0); italcorr max(1/3x_height#*slant+.5hair#+.5u#,h#*slant+.5flare#-2u#); adjust_fit(0,0); pickup fine.nib; x0=0; x5=w; x2=.5w+.25u; x3=.5w-.25u; hook_in(0,1,2)(skewed); hook_out(3,4,5)(skewed); % hooks filldraw stroke z2e--z3e; % stem %pos8(hair,-90); %pos9(2vair, 0); %pos10(flare, 0); %x8=.5w -.4(h-x_height)*slant ; %x9= x8+ 2u; %top y10=h+1; %y8= x_height +2u; %bulb(8,9,10); % accent x10= x8=.5w -.4(h-x_height)*slant ; x9= x8+2u; top y10=h+1; y8= x_height +2u; y9= .5[y8,y10]; pos8(vair,-90); pos9((flare+hair)/2, 0); pos10(flare,90); filldraw stroke z8e..z9e..z10e; math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#); penlabels(0,1,2,3,4,5,8,9); endchar; cmchar "Italic Aleph"; beginchar("A",8u#,fig_height#,0); italcorr fig_height#*slant-.5u#; adjust_fit(0,0); pickup fine.nib; pos5(stem,45); pos6(stem,0); pos7(bar,-90); pos8(bar,-90); x1=x2-.5u; rt x2r=hround(3.5u+.5vair); x3=.5[x2,x4]; lft x4r=hround u; x5=x7=.5w; rt x6r=hround(w-u); x8=x7-u; y1=.5[x_height,h]; y2=.5[y1,y3]; y7=y8=.52h; bot y3r=vround 1/4[y7,h]; y4=1/3[y3,y5]; top y5r=h+o; y6=.5[y5,y7]; filldraw stroke pulled_arc.e(5,6) & pulled_arc.e(6,7)..z8e; % upper arc pos7'(vair,90); z7'l=z7r; pos9(curve,0); pos10(stem,-135); pos11(hair,-180); pos12(flare,-180); rt x9r=hround(w-u); x10=.5w-.5u; lft x11r=hround .75u; y9=.25h; bot y10r=-o; %y11=1/3x_height; bulb(10,11,12); % bulb filldraw stroke pulled_arc.e(7',9) & pulled_arc.e(9,10); % lower arc penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endchar; cmchar "Italic letter b"; beginchar("b",8u#,asc_height#,0); italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi; adjust_fit(0,0); pickup tiny.nib; pos1(stem,0); pos2(stem,0); x1=x2; lft x1l=hround(1.5u-.5stem); top y1=h; y2=.5x_height; filldraw stroke z1e--z2e; % stem sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif pickup fine.nib; pos2'(stem,-180); pos3(vair,-90); pos4(curve,0); pos5(vair,90); pos0(hair,180); z0=z2=z2'; x3=x5=.5[x2,x4]; rt x4r=hround(w-1.5u+.5curve); bot y3r=-oo; top y5r=x_height+oo; y4=y2; filldraw stroke pulled_arc.e(2',3) & pulled_arc.e(3,4) & pulled_arc.e(4,5) & super_arc.e(5,0); % bowl math_fit(-.3x_height#*slant+.5curve#-u#,ic#); penlabels(0,1,2,3,4,5); endchar; cmchar "Italic letter d"; beginchar("d",9u#,asc_height#,0); italcorr max(1/3x_height#*slant+.5hair#+.5u#, h#*slant+.5stem#-2u#) if math_fitting:-.5u# fi; adjust_fit(0,0); pickup fine.nib; pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); x0=x4; x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); x4+.5stem=hround(w-2.5u+.5stem); top y1r=x_height+oo; bot y3r=-oo; y0=y2=.5[y1,y3]; filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl x5=x0; x7=w; hook_out(5,6,7); % closing hook pickup tiny.nib; pos5'(stem,0); pos4(stem,0); z5'=z5; top y4=h; filldraw stroke z4e--z5'e; % stem sloped_serif.l(4,5',a,1/3,jut,serif_drop); % serif math_fit(-.3x_height#*slant+.5curve#-u#,ic#); penlabels(0,1,2,3,4,5,6,7); endchar; cmchar "Italic letter f"; beginchar("f",max(1.5u#,stem#)+max(3.5u#,2flare#),asc_height#,desc_depth#); italcorr asc_height#*slant+.75u#; adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib; numeric theta; z88=(.5w-.5u,h); z89=(.5w+.5u,-d); theta=angle(z88-z89); pos0(flare,0); pos1(hair,0); pos2(vair,90); pos3(.5[hair,stem],180); pos4(stem,theta+90); pos5(stem,theta-90); pos6(.5[hair,stem],0); pos7(vair,-90); pos8(hair,-180); pos9(flare,-180); rt x1r=hround(w+.25u); lft x8r=hround-.35u; x2=.6[x1,x4]; x7=.6[x8,x5]; y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo; y4=.25[x_height,h]; y5=.5[-d,y4]; z4=whatever[z88,z89]; z5=whatever[z88,z89]; x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7]; bulb(2,1,0); bulb(7,8,9); % bulbs filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper arc filldraw z4r--z5l--z5r--z4l--cycle; % stem filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower arc pickup crisp.nib; pos20(bar,90); pos21(bar,90); top y20r=top y21r=x_height; lft x20=lft x4r-.5stem-u; rt x21=rt x4l+.5stem+1.5u; filldraw stroke z20e--z21e; % crossbar math_fit(desc_depth#*slant+u#,x_height#*slant); penlabels(0,1,2,3,4,5,6,7,8,9,20,21,88,89); endchar; cmchar "Italic letter g"; beginchar("g",8u#,x_height#,desc_depth#); italcorr x_height#*slant+.5stem#-u#; adjust_fit(0,0); pickup fine.nib; pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); x0=x4; x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); x4+.5stem=hround(w-1.5u+.5stem); top y1r=h+oo; bot y3r=0; y0=y2=.5[y1,y3]; filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl pos4(stem,0); y4+.5stem=vround .98h; pos5(stem,0); x5=x4; y5=-1/3d; pos6(vair,-90); pos7(hair,-180); pos8(flare,-180); bot y6r=-d-oo; y8-.5flare=vround -.9d; lft x8r=hround(2u-.5flare); x6=x1; bulb(6,7,8); % bulb filldraw circ_stroke z4e---z5e...{left}z6e; % stem and arc math_fit(-min(.3x_height#*slant+.5curve#-u#,1.5u#-desc_depth#*slant), ic#-1/3x_height#*slant); penlabels(0,1,2,3,4,5,6,7,8); endchar; cmchar "Italic letter h"; beginchar("h",9u#,asc_height#,0); italcorr 1/3x_height#*slant+.5hair#+.5u#; adjust_fit(0,0); pickup tiny.nib; pos1(stem,0); pos2(stem,0); x1=x2; lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; filldraw circ_stroke z2e--z1e; % left stem sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem); x5=x4-.25u; ital_arch(2,3,4); % arch x7=w; hook_out(5,6,7)(skewed); % closing hook filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem math_fit(0,ic#); penlabels(1,2,3,4,5,6,7); endchar; cmchar "Italic letter j"; beginchar("j",5u#,min(asc_height#,10/7x_height#+.5flare#),desc_depth#); italcorr h#*slant+.5stem#-u#; adjust_fit(if monospace:2u#,.5u# else: 0,0 fi); pickup fine.nib; x0=0; x2=x3; pos3(stem,0); lft x3l=hround(w-1.5u-.5stem); hook_in(0,1,2); % opening hook pos4(vair,-90); pos5(hair,-180); pos6(flare,-180); bot y3=-1/3d; bot y4r=-d-oo; y6-.5flare=-vround.9d; x4=1/3(w-u); lft x5r=min(hround-.5u,lft x5r+x4-x5l-eps); filldraw stroke z2e---z3e...{left}z4e; % stem and arc bulb(4,5,6); % bulb pos8(flare,0); pos9(flare,90); rt x8r=rt x2r if not monospace:-.6(h-x_height)*slant fi; top y9r=h+1; if bot y9l-top y10: input comlig; fi % ligatures common with roman text if ligs<=1: input romsub; fi % substitutes for ligatures if not monospace: k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning ligtable "d": "w": "l": "l" kern +u#; ligtable "n": "'" kern kkk#; fi % there are ligature/kern programs for |"f"| in the {\tt romlig} file % and for |"-"|, |"`"|, and |"'"| in the {\tt comlig} file