% exrlig.mf % % (c) Copyright 1995, 1996, 1997 J"org Knappen % (c) Copyright 1990, 1992 Norbert Schwarz % % This file is part of ecfonts version 1.0 % % Please read the files 00readme.txt, 00inst.txt, 00error.txt, and % copyrite.txt for further information % % You find some documentation in ecdoc.tex (needs LaTeX2e) % % Content: % % roman style ligature characters % dotless i,j; ligatures fi, ff, fl, ffi, ffl version_check(1,0); % |version_check| was introduced in dc1.3 ecchar "Dotless letter i"; beginchar(oct"031",5u#,x_height#,0); italcorr x_height#*slant-serif_fit#+.5stem#-2u#; adjust_fit(serif_fit#+stem_shift# if monospace:+.25u#fi,serif_fit#-stem_shift#); pickup tiny.nib; pos1(stem',0); pos2(stem',0); if odd(w-stem'): change_width; fi lft x1l=hround(.5w-.5stem'); x1=x2; top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=0; filldraw stroke z1e--z2e; % stem if serifs or monospace: sloped_serif.l(1,2,a,1/3,.95jut,serif_drop); % upper serif fi if serifs: dish_serif(2,1,b,1/3,jut,c,1/3,.9jut); fi % lower serif penlabels(1,2); endchar; ecchar "Dotless letter j"; beginchar(oct"032",5.5u#,x_height#,desc_depth#); italcorr x_height#*slant-serif_fit#+.5stem#-2u#; adjust_fit(serif_fit#+2stem_shift# if monospace:+.5u# fi, serif_fit#-2stem_shift# if monospace:-.5u# fi); pickup tiny.nib; pos1(stem',0); pos2(stem',0); rt x1r=hround(.5w+.25u+.5stem'); x1=x2; top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=-1/3d; filldraw stroke z1e--z2e; % stem if serifs: sloped_serif.l(1,2,a,1/3,1.1jut,serif_drop); % upper serif pickup tiny.nib; pos5(vair,-90); pos6(hair,-180); pos7(flare,-180); x5=.5[x2,x6r]; bot y5r=-d-oo; y6-.5flare=-.88d; if monospace: lft x6r=0 else: z6r=z7r; rt x7l=floor .75u fi; (x,y5r)=whatever[z5l,z2l]; x5r:=max(x,.5[x6r,x5]); filldraw stroke z2e{down}...z5e{left}; bulb(5,6,7); % arc and bulb else: pickup fine.nib; pos2'(stem',0); z2'=z2; pos6(.2[vair,stem'],-90); pos7(vair,-90); lft x7r=hround -.75u; bot y7r=vround 5/6(-d-oo); x3r=x1r; top y4r=min(2x_height,h+1); (x,y7l)=whatever[z7r,(x1,min(h,asc_height))]; x7l:=x; z5r=z2'r; (x2'l,y5l)=whatever[z7l,z5r]; x5l=x2'l; y5=y5r; x6r=.5[x7r,x5r]; x6l:=.5[x7l,x5l]; bot y6r=-d-oo; filldraw stroke z2'e..{down}z5e & super_arc.e(5,6) & term.e(6,7,left,1,4); fi % arc and terminal penlabels(1,2,5,6,7); endchar; numeric itc#; % modified italic correction on `f' and `ff' itc#=if serifs: max(0,flare#-.25u#) else: 1.25u# fi; ecchar "The ligature fi"; beginchar(oct"034",10u#+2letter_fit#,asc_height#,0); italcorr asc_height#*slant-serif_fit#+.5if serifs:stem# else:dot_size# fi-2u#; normal_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(2x_height,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; ecchar "The ligature ff"; beginchar(oct"033",10.5u#+2letter_fit#,asc_height#,0); italcorr asc_height#*slant+if serifs:flare#-.25u# else: 1.25u# fi; normal_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; ecchar "The ligature fl"; beginchar(oct"035",10u#+2letter_fit#,asc_height#,0); italcorr asc_height#*slant-serif_fit#+.5stem#-2u#; normal_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; ecchar "The ligature ffi"; beginchar(oct"036",15u#+4letter_fit#,asc_height#,0); italcorr asc_height#*slant-serif_fit#+.5if serifs:stem# else:dot_size# fi-2u#; normal_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(2x_height,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; ecchar "The ligature ffl"; beginchar(oct"037",15u#+4letter_fit#,asc_height#,0); italcorr asc_height#*slant-serif_fit#+.5stem#-2u#; normal_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; endinput;