% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE italig.mf BY D E KNUTH. % IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED! % This file describes five italic ligatures that begin with `f' % and puts them in code positions \0013--\0017. numeric itc; % modified italic correction on `f' and `ff' itc=(asc_height#-x_height#)*slant+.75u#; ligtable "f": "i"=:oct"014", "f"=:oct"013", "l"=:oct"015", "'" kern itc, "?" kern itc, "!" kern itc, ")" kern itc, "]" kern itc; ligtable oct"013": "i"=:oct"016", "l"=:oct"017", "'" kern itc, "?" kern itc, "!" kern itc, ")" kern itc, "]" kern itc; cmchar "Italic ligature ff"; beginchar(oct"013",5u#+max(1.5u#,stem#)+max(3.5u#,2flare#)+2letter_fit#, asc_height#,desc_depth#); italcorr asc_height#*slant+.75u#; adjust_fit(0,0); pickup fine.nib; z98-z88=z99-z89=z14-z4=z15-z5=(4.8u+2letter_fit,0); .5[x88,x99]=.5w-.1u; x89-x88=u; y98=h; y99=-d; numeric theta; 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(.5w+1.25u); lft x8r=hround-.35u; x2=.5[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); % left bulbs filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper middle arc filldraw z4r--z5l--z5r--z4l--cycle; % left stem filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower left arc pos10(flare,0); pos11(hair,0); pos12(vair,90); pos13(.5[hair,stem],180); pos14(stem,theta+90); pos15(stem,theta-90); pos16(.5[hair,stem],0); pos17(vair,-90); pos18(hair,-180); pos19(flare,-180); rt x11r=hround(w+.25u); lft x18r=hround(.5w-1.25u); x12=.6[x11,x14]; x17=.5[x18,x15]; x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99]; y0=y10; y2=y12; y3=y13; y6=y16; y7=y17; y9=y19; bulb(12,11,10); bulb(17,18,19); % right bulbs filldraw stroke z12e{left}...z13e...{z99-z98}z14e; % upper right arc filldraw z14r--z15l--z15r--z14l--cycle; % right stem filldraw stroke z15e{z99-z98}...z16e...{left}z17e; % lower middle 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 x14l+.5stem+1.5u; filldraw stroke z20e--z21e; % crossbar penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 20,21,88,89,98,99); endchar; cmchar "Italic ligature fi"; beginchar(oct"014",6.5u#+.5max(1.5u#,stem#)+.5max(3.5u#,2flare#) +2letter_fit#,asc_height#,desc_depth#); italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#); adjust_fit(0,0); pickup fine.nib; .5[x88,x89]=.5(w-4u-2letter_fit); x89-x88=u; y88=h; y89=-d; numeric theta; 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); pos11(stem,0); rt x11r=hround(w-2.5u+.5stem); x12=x11; x14=w; hook_out(12,13,14); % closing hook x1r=x11r; lft x8r=hround-.35u; x2=.5[x1,x4]; x7=.6[x8,x5]; y9-.5flare=vround-.85d; bot y7r=-d-oo; y0+.5flare=vround(.85[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(2,1,0); bulb(7,8,9); % bulbs filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper arc filldraw z4r--z5l--z5r--z4l--cycle; % left stem filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower arc top y11=x_height; filldraw stroke z11e--z12e; % right stem pickup crisp.nib; pos20(bar,90); pos21(bar,90); top y20r=top y21r=x_height; lft x20=lft x4r-.5stem-u; x21=x11; filldraw stroke z20e--z21e; % crossbar penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,20,21,88,89); endchar; cmchar "Italic ligature fl"; beginchar(oct"015",7u#+.5max(1.5u#,stem#)+.5max(3.5u#,2flare#) +2letter_fit#,asc_height#,desc_depth#); italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#); adjust_fit(0,0); pickup fine.nib; .5[x88,x89]=.5(w-4.5u-2letter_fit); x89-x88=u; y88=h; y89=-d; numeric theta; 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); pos11(stem,0); rt x11r=hround(w-2.5u+.5stem); rt x1r=lft x11l; x12=x11; x14=w; hook_out(12,13,14); % closing hook lft x8r=hround-.35u; x2=.5[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; % left stem filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower arc top y11=h; filldraw stroke z11e--z12e; % right stem pickup crisp.nib; pos20(bar,90); pos21(bar,90); top y20r=top y21r=x_height; lft x20=lft x4r-.5stem-u; x21=x11; filldraw stroke z20e--z21e; % crossbar penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,20,21,88,89); endchar; cmchar "Italic ligature ffi"; beginchar(oct"016",11.75u#+.5max(1.5u#,stem#)+.5max(3.5u#,2flare#) +4letter_fit#,asc_height#,desc_depth#); italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#); adjust_fit(0,0); pickup fine.nib; z98-z88=z99-z89=z14-z4=z15-z5=(5u+2letter_fit,0); numeric theta,mid_f; mid_f=.5[x88,x99]=.5(w-4.25u-2letter_fit); x89-x88=u; y98=h; y99=-d; theta=angle(z88-z89); pos21(stem,0); rt x21r=hround(w-2.5u+.5stem); x22=x21; x24=w; hook_out(22,23,24); % closing hook 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(mid_f+1.75u); lft x8r=hround-.35u; x2=.5[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); % left bulbs filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper middle arc filldraw z4r--z5l--z5r--z4l--cycle; % left stem filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower left arc pos10(flare,0); pos11(hair,0); pos12(vair,90); pos13(.5[hair,stem],180); pos14(stem,theta+90); pos15(stem,theta-90); pos16(.5[hair,stem],0); pos17(vair,-90); pos18(hair,-180); pos19(flare,-180); x11r=x21r; lft x18r=hround(mid_f-1.25u); x12=.5[x11,x14]; x17=.5[x18,x15]; x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99]; y10+.5flare=vround .85[x_height,h]; y2=y12; y3=y13; y6=y16; y7=y17; y9=y19; bulb(12,11,10); bulb(17,18,19); % right bulbs filldraw stroke z12e{left}...z13e...{z99-z98}z14e; % upper right arc filldraw z14r--z15l--z15r--z14l--cycle; % middle stem filldraw stroke z15e{z99-z98}...z16e...{left}z17e; % lower middle arc top y21=x_height; filldraw stroke z21e--z22e; % right stem pickup crisp.nib; pos30(bar,90); pos31(bar,90); top y30r=top y31r=x_height; lft x30=lft x4r-.5stem-u; x31=x21; filldraw stroke z30e--z31e; % crossbar penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,30,31,88,89,98,99); endchar; cmchar "Italic ligature ffl"; beginchar(oct"017",12u#+.5max(1.5u#,stem#)+.5max(3.5u#,2flare#) +4letter_fit#,asc_height#,desc_depth#); italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#); adjust_fit(0,0); pickup fine.nib; z98-z88=z99-z89=z14-z4=z15-z5=(5u+2letter_fit,0); numeric theta,mid_f; mid_f=.5[x88,x99]=.5(w-4.5u-2letter_fit); x89-x88=u; y98=h; y99=-d; theta=angle(z88-z89); pos21(stem,0); rt x21r=hround(w-2.5u+.5stem); x22=x21; x24=w; hook_out(22,23,24); % closing hook 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(mid_f+1.25u); lft x8r=hround-.35u; x2=.5[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); % left bulbs filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper middle arc filldraw z4r--z5l--z5r--z4l--cycle; % left stem filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower left arc pos10(flare,0); pos11(hair,0); pos12(vair,90); pos13(.5[hair,stem],180); pos14(stem,theta+90); pos15(stem,theta-90); pos16(.5[hair,stem],0); pos17(vair,-90); pos18(hair,-180); pos19(flare,-180); rt x11r=lft x21l; lft x18r=hround(mid_f-1.25u); x12=.5[x11,x14]; x17=.5[x18,x15]; x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99]; y0=y10; y2=y12; y3=y13; y6=y16; y7=y17; y9=y19; bulb(12,11,10); bulb(17,18,19); % right bulbs filldraw stroke z12e{left}...z13e...{z99-z98}z14e; % upper right arc filldraw z14r--z15l--z15r--z14l--cycle; % middle stem filldraw stroke z15e{z99-z98}...z16e...{left}z17e; % lower middle arc top y21=h; filldraw stroke z21e--z22e; % right stem pickup crisp.nib; pos30(bar,90); pos31(bar,90); top y30r=top y31r=x_height; lft x30=lft x4r-.5stem-u; x31=x21; filldraw stroke z30e--z31e; % crossbar penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,30,31,88,89,98,99); endchar;