diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/cm/romlig.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/public/cm/romlig.mf | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/cm/romlig.mf b/Master/texmf-dist/fonts/source/public/cm/romlig.mf new file mode 100644 index 00000000000..b837ac2e059 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/cm/romlig.mf @@ -0,0 +1,166 @@ +% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE romlig.mf BY D E KNUTH. +% IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED! + +% This file describes five roman ligatures that begin with `f' +% and puts them in code positions \0013--\0017. + +numeric itc#; % modified italic correction on `f' and `ff' +itc#=if serifs: max(0,flare#-.25u#) else: 1.25u# fi; + +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 "The ligature ff"; +beginchar(oct"013",10.5u#+2letter_fit#,asc_height#,0); +italcorr asc_height#*slant+if serifs:flare#-.25u# else: 1.25u# fi; +adjust_fit(0,0); +pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem'); +pos11(stem',0); rt x11r=hround(w-3u+.5stem'); +pickup fine.nib; numeric bulb_diam, inner_jut; +if serifs: bulb_diam=hround .8[stem,flare]; + pos2(bulb_diam,0); pos12(bulb_diam,0); + rt x2r=hround(rt x11r-stem_corr); lft x12l=hround(w-.75u+.5); + y2+.5bulb_diam=.85[x_height,h+oo]; y12+.5bulb_diam=.9[x_height,h+oo]; + if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut; + else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi +else: pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 6.25u; + pos12(5/7[vair,flare],90); y12=y2; rt x12=hround(w+.75u); fi +f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif +f_stroke(11,12,d,e,f,inner_jut,1.25jut); % right stem, arc, terminal, serif +pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1; +pos3(bar,90); pos4(bar,90); +rt x4=hround(w-1/3u); +if hefty: pos3'(bar,90); x3'-x1=x4-x11; y3'=y3; + pos4'(bar,90); x4'=x11; y4'=y4; + filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e; % bars +else: filldraw stroke z3e--z4e; fi % bar +penlabels(1,2,3,4,11,12); endchar; + +cmchar "The ligature fi"; +beginchar(oct"014",10u#+2letter_fit#,asc_height#,0); +italcorr asc_height#*slant-serif_fit#+.5if serifs:stem# else:dot_size# fi-2u#; +adjust_fit(0,serif_fit#); +pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem'); +pos11(stem',0); rt x11r=hround(w-2.5u+.5stem'); +pos12(stem',0); x11=x12; bot y12=0; +pickup fine.nib; numeric bulb_diam, inner_jut; +if serifs: bulb_diam=hround 1/4[.8[stem,flare],dot_size]; + pos2(bulb_diam,0); x2r=x12r; + y2+.5bulb_diam=.8[x_height,h+oo]; top y11=x_height+min(oo,serif_drop); + if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut; + else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi +else: bulb_diam=max(stem,dot_size); + pos2(6/7[vair,flare],90); top y2r=h; rt x2=hround 5.3u; + pickup tiny.nib; pos13(bulb_diam,0); pos14(bulb_diam,90); + x13=x11-.5; top y14r=min(10/7x_height+.5bulb_diam,h)+1; top y11=x_height; + if bot y14l-x_height<tiny: y14l:=min(y14r-eps,y11+2tiny); fi + x13=x14; y13=.5[y14l,y14r]; dot(13,14); % dot +fi; % this is the ligature we're drawing +f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif +pickup tiny.nib; filldraw stroke z11e--z12e; % right stem +pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1; +pos3(bar,90); pos4(bar,90); +if serifs: x4=x11; % bar will overlap upper right serif + sloped_serif.l(11,12,d,1/3,jut,min(oo,serif_drop)); % upper right serif + dish_serif(12,11,e,1/3,inner_jut,f,1/3,jut); % lower right serif +else: rt x4= hround 5.3u; fi +pickup crisp.nib; filldraw stroke z3e--z4e; % bar +penlabels(1,2,3,4,11,12,13,14); endchar; + +cmchar "The ligature fl"; +beginchar(oct"015",10u#+2letter_fit#,asc_height#,0); +italcorr asc_height#*slant-serif_fit#+.5stem#-2u#; +adjust_fit(0,serif_fit#); +pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem'); +pos11(stem',0); rt x11r=hround(w-2.5u+.5stem'); +pos12(stem',0); x11=x12; bot y12=0; top y11=h; +filldraw stroke z11e--z12e; % right stem +pickup fine.nib; numeric bulb_diam, inner_jut; +if serifs: bulb_diam=hround .8[stem,flare]; + pos2(bulb_diam,0); x2r=x11r-stem_corr; + y2+.5bulb_diam=.9[x_height,h+oo]; + sloped_serif.l(11,12,d,1/3,eps,max(serif_drop,oo)); % erase excess at top + if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut; + else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi +else: pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.3u; fi +f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif +pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1; +pos3(bar,90); pos4(bar,90); +if serifs: x4=x11; + dish_serif(12,11,e,1/3,inner_jut,f,1/3,jut); % lower right serif +else: rt x4= hround 5.3u; fi +pickup crisp.nib; filldraw stroke z3e--z4e; % bar +penlabels(1,2,3,4,11,12); endchar; + +cmchar "The ligature ffi"; +beginchar(oct"016",15u#+4letter_fit#,asc_height#,0); +italcorr asc_height#*slant-serif_fit#+.5if serifs:stem# else:dot_size# fi-2u#; +adjust_fit(0,serif_fit#); +pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem'); +pos11(stem',0); lft x11l=hround(.5w-.5stem'); +pos21(stem',0); rt x21r=hround(w-2.5u+.5stem'); +pos22(stem',0); x21=x22; bot y22=0; +pickup fine.nib; numeric bulb_diam, inner_jut; +if serifs: bulb_diam=hround 1/4[.8[stem,flare],dot_size]; + pos2(bulb_diam,0); x2r=x11r-stem_corr; + pos12(bulb_diam,0); x12r=x21r; + top y21=x_height+min(oo,serif_drop); + y2+.5bulb_diam=.8[x_height,h+oo]; y12=y2; + if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut; + else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi +else: bulb_diam=max(stem,dot_size); + pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.75u; + pos12(6/7[vair,flare],90); y12=y2; rt x12=hround(.5w+2.8u); + pickup tiny.nib; pos23(bulb_diam,0); pos24(bulb_diam,90); + x23=x21-.5; top y24r=min(10/7x_height+.5bulb_diam,h)+1; top y21=x_height; + if bot y24l-x_height<tiny: y24l:=min(y24r-eps,y21+2tiny); fi + x23=x24; y23=.5[y24l,y24r]; dot(23,24); fi % dot +f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif +f_stroke(11,12,d,e,f,inner_jut,inner_jut); % middle ditto +pickup tiny.nib; filldraw stroke z21e--z22e; % right stem +pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround.5u-1; +pos3(bar,90); pos4(bar,90); +if serifs: x4=x21; % bar will overlap upper right serif + sloped_serif.l(21,22,g,1/3,jut,min(oo,serif_drop)); % upper right serif + dish_serif(22,21,h,1/3,inner_jut,i,1/3,jut); % lower right serif +else: rt x4=hround(.5w+2.8u); fi +pickup crisp.nib; +if hefty: pos3'(bar,90); x3'-x1=x4-x11; y3'=y3; + pos4'(bar,90); x4'=x11; y4'=y4; + filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e; % bars +else: filldraw stroke z3e--z4e; fi % bar +penlabels(1,2,3,4,11,12,21,22,23,24); endchar; + +cmchar "The ligature ffl"; +beginchar(oct"017",15u#+4letter_fit#,asc_height#,0); +italcorr asc_height#*slant-serif_fit#+.5stem#-2u#; +adjust_fit(0,serif_fit#); +pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem'); +pos11(stem',0); lft x11l=hround(.5w-.5stem'); +pos21(stem',0); rt x21r=hround(w-2.5u+.5stem'); +pos22(stem',0); x21=x22; bot y22=0; top y21=h; +filldraw stroke z21e--z22e; % right stem +pickup fine.nib; numeric bulb_diam, inner_jut; +if serifs: bulb_diam=hround .8[stem,flare]; + pos2(bulb_diam,0); x2r=x11r-stem_corr; + pos12(bulb_diam,0); x12r=x21r-stem_corr; + y2+.5bulb_diam=.85[x_height,h+oo]; y12+.5bulb_diam=.9[x_height,h+oo]; + sloped_serif.l(21,22,g,1/3,eps,max(serif_drop,oo)); % erase excess at top + if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut; + else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi +else: pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.75u; + pos12(5/7[vair,flare],90); y12=y2; rt x12=hround(.5w+2.8u); fi +f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif +f_stroke(11,12,d,e,f,inner_jut,inner_jut); % middle ditto +pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround.5u-1; +pos3(bar,90); pos4(bar,90); +if serifs: dish_serif(22,21,h,1/3,inner_jut,i,1/3,jut); % lower right serif + pickup crisp.nib; x4=x21; +else: rt x4=hround(.5w+2.8u); fi +if hefty: pos3'(bar,90); x3'-x1=x4-x11; y3'=y3; + pos4'(bar,90); x4'=x11; y4'=y4; + filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e; % bars +else: filldraw stroke z3e--z4e; fi % bar +penlabels(1,2,3,4,11,12,21,22); endchar; |