% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE italsp.mf BY D E KNUTH. % IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED! % This file contains special letters and letter combinations, % compatible with the alphabet `{\tt itall}'. % Codes \0020--\0021 and \0031--\0034 are generated. cmchar "Dotless italic letter i"; beginchar(oct"020",5u#,x_height#,0); italcorr 1/3x_height#*slant+.5hair#+.5u#; adjust_fit(if monospace:u#,u# else: 0,0 fi); 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 penlabels(0,1,2,3,4,5); endchar; cmchar "Dotless italic letter j"; beginchar(oct"021",5.5u#,x_height#,desc_depth#); italcorr x_height#*slant+.5stem#-2u#; adjust_fit(if monospace:2u# else: 0 fi, 0); pickup fine.nib; x0=0; x2=x3; pos3(stem,0); lft x3l=hround(w-2u-.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 penlabels(0,1,2,3,4,5,6); endchar; cmchar "Italic German letter es-zet (sharp s)"; beginchar(oct"031",4.5u#+max(1.5u#,stem#)+max(3.5u#,2flare#), asc_height#,desc_depth#); italcorr .9asc_height#*slant-u#; adjust_fit(if monospace: u# else: 0 fi,0); pickup fine.nib; z88=(.5w-2.75u,h); z89=(.5w-1.75u,-d); numeric theta; theta=angle(z88-z89); pos1(stem,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-1.5u); lft x8r=hround-.25u; x2=.5[x1,x4]; x7=.5[x8,x5]; y9-.5flare=vround -.85d; bot y7r=-d-oo; y1=.5[x_height,h]; top y2r=h+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(7,8,9); % left bulb filldraw stroke z1e{up}...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 pos11(.1[hair,curve],-30); x11l=2/3[x12l,x1l]; y11=2/3[y1,y12]; pos12(.3[hair,curve],0); rt x12r=hround(w-3u); y12=.5h; pos13(.8[hair,curve],30); x13=.5[x12,x14]; y13=.5[y12,y14]; pos14(curve,0); rt x14r=hround(w-.5u); y14=.2h; pos15(vair,-90); x15=.5[x14,x16]; bot y15r=-oo; pos16(hair,-180); pos17(.6[hair,flare],-180); lft x16r=hround(rt x5r+.75u); y17-.5(.6[hair,flare])=.07h; filldraw stroke z1e{down}...z11e{1.5(x12e-x11e),y12e-y11e} ...{down}z12e...{2(x13-x12),y13-y12}z13e ...{down}z14e...{left}z15e; % stroke bulb(15,16,17); % inner bulb pickup crisp.nib; pos20(bar,90); pos21(bar,90); top y20r=top y21r=x_height; lft x20=lft x4r-.5stem-u; z21=whatever[z4,z5]; filldraw stroke z20e--z21e; % bar penlabels(1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,20,21,88,89); endchar; cmchar "Italic ligature ae"; beginchar(oct"032",13u#,x_height#,0); italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#); adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup fine.nib; forsuffixes $=hair,stem: shaved$:=mfudged$; save $; $=shaved$; endfor numeric heavy_hair; heavy_hair=hround .2[hair,stem]; numeric light_stem; light_stem=hround .75[hair,stem]; pos0(vair,-90); pos1(heavy_hair,0); pos2(vair,90); pos3(light_stem,180); pos4(vair,270); pos5(hair,320); x0=rt x3l; rt x1r=hround(w-1.5u+.5heavy_hair); x2=x4=.5(w+6u); lft x3r=hround(.5w-.5light_stem); x5r=good.x(w-.5u); x6=x5; y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo; top y5l=vround(.5bar_height+.5); path p; p=z4{right}..z5..z6; filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3) & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc of e pos7(light_stem,0); pos8(light_stem,0); x7=x8=x3; y7+.5light_stem=h+oo; y8-.5light_stem=-oo; pos7'(vair,-225); pos11(curve,-180); z7'=z7; pos12(vair,-90); pos3'(hair,0); z3'=z3; lft x11r=hround(1.5u-.5curve); x12=.5[x11,x3]; y11=.3[y12,y7]; bot y12r=-oo; filldraw stroke z7'e{3(x11-x7),y11-y7}...pulled_arc.e(11,12) & pulled_arc.e(12,3'); % bowl of a filldraw z7l---z8l..z8r---z7r..cycle; % stem penlabels(0,1,2,3,4,5,6,7,8,11,12); endchar; cmchar "Italic ligature oe"; beginchar(oct"033",13u#,x_height#,0); italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#); adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup fine.nib; forsuffixes $=hair,stem: shaved$:=mfudged$; save $; $=shaved$; endfor numeric heavy_hair; heavy_hair=hround .2[hair,stem]; pos0(vair,-90); pos1(heavy_hair,0); pos2(vair,90); pos3(stem,180); pos4(vair,270); pos5(hair,320); x0=rt x3l; rt x1r=hround(w-1.5u+.5heavy_hair); x2=x4=.5(w+6u); lft x3r=hround(.5w-.5stem); x5r=good.x(w-.5u); x6=x5; y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo; top y5l=vround(.5bar_height+.5); path p; p=z4{right}..z5..z6; filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3) & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc of e pos11(vair,90); pos12(curve,180); pos13(vair,270); pos14(stem,360); x11=x13=.5[x12,x14]; lft x12r=hround(1.5u-.5curve); x14=x3; top y11=h+oo; y12=y14=.5[y11,y13]; bot y13=-oo; filldraw stroke pulled_arc.e(11,12) & pulled_arc.e(12,13) & pulled_arc.e(13,14) & pulled_arc.e(14,11); % bowl penlabels(0,1,2,3,4,5,6); endchar; cmchar "Italic Scandinavian letter o/slash"; beginchar(oct"034",9u#,x_height#+.5desc_depth#,.5desc_depth#); italcorr h#*slant-u#+.5vair#; adjust_fit(0,0); pickup fine.nib; pos1(vair,90); pos2(fudged.stem,180); pos3(vair,270); pos4(fudged.stem,360); x1=x3=.5w; lft x2r=hround(1.5u-.5fudged.stem); x4=w-x2; top y1=x_height+oo; y2=y4=.5[y1,y3]; bot y3=-oo; filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3) & pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl x5=x4; x6=x2; y5=h; y6=-d; numeric theta; theta=angle(z5-z6)-90; pickup crisp.nib; pos5(vair,theta); pos6(vair,theta); filldraw stroke z5e--z6e; % diagonal penlabels(1,2,3,4,5,6); endchar;