summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/lh/base/lgrlig.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/base/lgrlig.mf')
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgrlig.mf175
1 files changed, 164 insertions, 11 deletions
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgrlig.mf b/Master/texmf-dist/fonts/source/lh/base/lgrlig.mf
index b1b5b50f363..e4f8889db40 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgrlig.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgrlig.mf
@@ -4,13 +4,13 @@
%% Cyrillic font container with T2 encoding beta-support
%
% This file is future part of lxfonts package
-% Version 3.4 // Patchlevel=1
+% Version 3.5 // Patchlevel=0
% (c) O.Lapko
%
-% This package belongs to the public domain under conditions similar to
+% This package is freeware product under conditions similar to
% those of D. E. Knuth specified for the Computer Modern family of fonts.
% In particular, only the authors are entitled to modify this file
-% and to save it under the same name.
+% (and all this package as well) and to save it under the same name.
%
% Content:
%
@@ -22,16 +22,10 @@
%
% i_dotl "19 i dotless
% j_dotl "1a j dotless
-% ff-ligs (lgrligff.mf)
+% ff-ligs
%
-LHver_check(3,4); % like |version_check| in ec
-
-if (roman_ec=true) and (old_cyr=false):
-
-input lgrligff;
-
-fi % roman_ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Lowercase Cyrillic letter dotless i";
cyrchar(i_dotl,5u#,x_height#,0);
@@ -73,5 +67,164 @@ else: pickup fine.nib; pos2'(stem',0); z2'=z2;
& term.e(6,7,left,1,4); fi % arc and terminal
penlabels(1,2,5,6,7); endchar;
+if (roman_ec=true) and (old_cyr=false): %relax
+else: endinput \\; fi
+
+numeric itc#; % modified italic correction on `f' and `ff'
+itc#=if serifs: max(0,flare#-.25u#) else: 1.25u# fi;
+
+lhchar "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;
+
+lhchar "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;
+
+lhchar "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;
+
+lhchar "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;
+
+lhchar "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;
%end of file