summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/lh/base/lgt2lol.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/base/lgt2lol.mf')
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2lol.mf136
1 files changed, 63 insertions, 73 deletions
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2lol.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2lol.mf
index 640e6f715f8..4365d7d50f7 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2lol.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2lol.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=1
% (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:
%
@@ -52,7 +52,7 @@
% r_tl - - - "bb Er with tail
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Lowercase Cyrillic letter ae - ligature ae";
cyrchar(ae,13u#,x_height#,0);
@@ -231,6 +231,7 @@ easy_ogonek(the_pen,9,10,11); % ogonek
%%%
penlabels(0,1,2,3,4,5,6,7,8, 9,10,11); endchar;
+iff not concrete:%
iff not specific:%
lhchar "Lowercase Cyrillic letter k_vcrs - ka vcrossed (`roman')";
cyrchar(k_vcrs,11.5u# if not serifs:+.5width_adj# fi,
@@ -293,11 +294,12 @@ numeric middle_weight;
middle_weight=max(currentbreadth+eps,.6[thin_join,vair]);
pos9(middle_weight,0); pos11(middle_weight,0);
lft x9l=lft x11l=
- hround max(tiny.rt x1r+1,max(x5l-middle_weight,.5[tiny.rt x1r,x5l]));
+ hround max(tiny.rt x1r+1,max(x5l-middle_weight,.5[tiny.rt x1r,x5l]));
top y11-bot y9=.5x_height; .52[y9,y11]=.5[y7l,y7r];
filldraw stroke z9e--z11e; % cross bar
penlabels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+iff not concrete:%
iff not specific:%
lhchar "Lowercase Cyrillic letter k_hcrs - ka hcrossed (`roman')";
cyrchar(k_hcrs,10u#,asc_height#,0); % n_width
@@ -362,6 +364,7 @@ lft x7=hround 1/3u-serif_fit;
filldraw stroke z7e--z8e; % cross bar
penlabels(1,2,3,4,5,6, 7,8); endchar;
+iff not concrete:%
lhchar "Lowercase Cyrillic letter l_dsc - el descender";
cyrchar(l_dsc,10u# % if not serifs:+.5width_adj# fi % dl_width;n_width
,x_height#,if is_ogonek: desc_depth# else: sbeak# fi); %ldesc/og_depth
@@ -413,23 +416,18 @@ if serifs:
nodish_serif(3,0,e,1/3,1.05jut,f,1/3,inner_jut); % upper left serif
filldraw z.c0--z.c1--z.f1--z.f0--cycle; fi % upper inter_serif bar
%%%%%
-% lowercase descender/ogonek
-if is_ogonek:
- endgroup;
- def the_pen=
- if known ogonek_pen: ogonek_pen elseif serifs: tiny else: fine fi
- enddef;
- % |stem| was drawn by |tiny| pen, hence |tiny| in the following equation:
- ogonek_pos=(x2 if not serifs: l fi,.5the_pen)
- if serifs and not is_egyptian: +(.5xvair,0) fi;
- easy_ogonek(the_pen,7,8,9); % ogonek
+% lowercase descender/saam tail
+slab:=vair; % lower.slab
+numeric right_jut;
+right_jut=if serifs: max(limit_dist,1.1jut) else: hround (r-rt x2r-.5u) fi;
+if unic:
+ %saam tail
+ serif(2,1,v,1/3,-jut);
+ siam_serif(2,1,w,1/3,right_jut);
else:
- slab:=vair; % lower.slab
- numeric right_jut;
- right_jut=if serifs: max(limit_dist,1.1jut) else: hround (r-rt x2r-.5u) fi;
r_serif(2,1,o,1/3,jut,p,1/3,beak_darkness,right_jut,.6beak_jut); % lower right descender
- endgroup;
fi
+endgroup;
penlabels(1,2,3,4,5,6, 7,8,9);endchar;
lhchar "Lowercase Cyrillic letter m_dsc - m descender";
@@ -479,8 +477,8 @@ if serifs:
if rt x2r+jut+.5u+1+eps+.5stem3<=lft x4l-.5stem3-jut: inner_jut=jut;
else: rt x2r+inner_jut+.5u+1+eps+.5stem3=lft x4l-.5stem3-inner_jut; fi
slab:=Vround(vair-vair_corr); % lower.slab
- serif(1,2,a,1/3,-jut); % upper left serif
- serif(3,4,d,1/3,jut); % upper right serif
+ serif(1,2,a,1/3,-jut); % upper left serif
+ serif(3,4,d,1/3,jut); % upper right serif
slab:=vair; % lower.slab
dish_serif(2,1,b,1/2,jut,c,1/2,jut)(dark); % lower left serif
if is_ogonek:
@@ -488,23 +486,18 @@ if serifs:
fi
fi
%%%%%
-% lowercase descender/ogonek
-if is_ogonek:
- endgroup;
- def the_pen=
- if known ogonek_pen: ogonek_pen elseif serifs: tiny else: fine fi
- enddef;
- % |stem| was drawn by |tiny| pen, hence |tiny| in the following equation:
- ogonek_pos=(x4 if not serifs: l fi,.5the_pen)
- if serifs and not is_egyptian: +(.5xvair,0) fi;
- easy_ogonek(the_pen,9,10,11); % ogonek
+% lowercase descender/saam tail
+slab:=vair; % lower.slab
+numeric right_jut;
+right_jut=if serifs: max(limit_dist,1.1jut) else: hround (r-rt x4r-.5u) fi;
+if unic:
+ %saam tail
+ serif(4,3,v,1/3,-jut);
+ siam_serif(4,3,w,1/3,right_jut);
else:
- slab:=vair; % lower.slab
- numeric right_jut;
- right_jut=if serifs: max(limit_dist,1.1jut) else: hround (r-rt x4r-.5u) fi;
r_serif(4,3,o,1/3,jut,p,1/3,beak_darkness,right_jut,.6beak_jut); % lower right descender
- endgroup;
fi
+endgroup;
penlabels(0,1,1',2,3,3',4,5,6,7,8, 9,10,11); endchar;
lhchar "Lowercase Cyrillic letter abh_ha - Abkhazian ha";
@@ -520,10 +513,12 @@ interim superness:=hein_super;
x2r=hround max(.5u,1.25u-.5curve); %o
x4r=w-x2r; x1=x3=x6=.5w; y1r=h+vround 1.5oo; y3r=-oo;
y2=y4=.5h-vair_corr; y2l:=.52h;
-y7=-1/3d; rt x7=hround(w-.5u); penpos7(.7[thin_join,vair],270);
-y6=.5y5r; penpos6(mid_curve,180);
+y7=vround -1/3d-eps; rt x7=hround(w-.5u)+eps; penpos7(.7[thin_join,vair],270);
+penpos6(mid_curve,180);
x5=if serifs:.5[x6,x4]else:.5[x6,x4]fi;
-y5r=.5[y4,y1]; penpos5(.7[thin_join,vair],90);
+y5r=vround max(.5[y4,y1],y4+.7[thin_join,vair])+eps;
+penpos5(.7[thin_join,vair],90);
+y6=vround min(.5y5r,y5l-.5)-eps;
fill stroke pulled_super_arc.e(1,2)(.5superpull)
& pulled_super_arc.e(2,3)(.5superpull)
& pulled_super_arc.e(3,4)(.5superpull) % 3/4 bowl
@@ -560,12 +555,12 @@ if serifs:
if rt x1r+jut+.5u+1<=lft x3l-jut: inner_jut1=jut; % stay for tail serif
else: rt x1r+inner_jut1+.5u+1=lft x3l-inner_jut1; fi
save slab; slab:=vair; % lower.slab
- dish_serif(2,1,c,1/3,jut,d,1/3,inner_jut1); % lower left serif
- %dish_serif(4,3,g,1/3,inner_jut1,h,1/3,jut); %!!! % lower right serif
+ dish_serif(2,1,c,1/3,jut,d,1/3,inner_jut1); % lower left serif
+ %dish_serif(4,3,g,1/3,inner_jut1,h,1/3,jut); %!!! % lower right serif
inner_jut2=min(.5(lft x3l-rt x1r)-eps,.5jut);
slab:=Vround(vair-vair_corr); % lower.slab
- nodish_serif(1,2,a,1/3,jut,b,1/3,inner_jut2); % upper left serif
- nodish_serif(3,4,e,1/3,inner_jut2,f,1/3,jut); % upper right serif
+ nodish_serif(1,2,a,1/3,jut,b,1/3,inner_jut2); % upper left serif
+ nodish_serif(3,4,e,1/3,inner_jut2,f,1/3,jut); % upper right serif
filldraw z.b0--z.b1--z.e1--z.e0--cycle; % upper inter_serif bar
else:
lft x1'= lft x1l; top y1'r=h; pos1'(vair,90);
@@ -818,10 +813,10 @@ if serifs:
else: rt x1r+inner_jut+.5u+1=lft x3l-inner_jut; fi
%%%
save slab; slab:=Vround(vair-vair_corr); % lower.slab
- dish_serif(1,2,a,1/3,jut,b,1/3,inner_jut); % upper left serif
- dish_serif(3,4,e,1/3,inner_jut,f,1/3,jut); % upper right serif
+ dish_serif(1,2,a,1/3,jut,b,1/3,inner_jut); % upper left serif
+ dish_serif(3,4,e,1/3,inner_jut,f,1/3,jut); % upper right serif
slab:=vair; % lower.slab
- dish_serif(4,3,g,1/3,inner_jut,h,1/3,jut); % lower right serif
+ dish_serif(4,3,g,1/3,inner_jut,h,1/3,jut); % lower right serif
else:
fill stroke pulled_arc.e(2',5) & z5e{right}...{right}z6e; fi % arc
%%%%%
@@ -926,7 +921,7 @@ if serifs:
pos[_two](vair',-90); pos[_three](hair,-180);
pos[_four](bulb_diam,-180);
x[_two]=.5[x[_one],x[_three]r];
- bot y[_two]r=-d-oo; y[_three]-.5bulb_diam=-.85d;
+ bot y[_two]r=-d-oo; y[_three]-.5bulb_diam=vround max(-.85d,y[_two]r+eps)+eps;
z[_three]r=z[_four]r;
%rt x[_four]l=floor x[_zero]-1.5u if monospace: / expansion_factor fi); %2.5u
lft x[_four]r=-1/6u if monospace: / expansion_factor fi; %2.5u
@@ -934,7 +929,7 @@ if serifs:
x[_two]r:=max(x,.5[x[_three]r,x[_two]]);
forsuffixes e=l,r:
z[_one]'e=((0,y[_four])--(w,y[_four])) intersectionpoint
- (pulled_arc.e([_one],[_two])); endfor
+ (z[_five]e--pulled_arc.e([_one],[_two])); endfor
if lft x[_one]'l>rt x[_four]l+max(1,1/3vair+.5):
filldraw stroke z[_five]e--pulled_arc.e([_one],[_two]);
else:
@@ -1043,11 +1038,11 @@ if serifs: numeric inner_jut;
if rt x2r+jut+.5u+1+eps+.5stem3<=lft x4l-.5stem3-jut: inner_jut=jut;
else: rt x2r+inner_jut+.5u+1+eps+.5stem3=lft x4l-.5stem3-inner_jut; fi
save slab; slab:=Vround(vair-vair_corr); % lower.slab
- serif(1,2,a,1/3,-jut); % upper left serif
- serif(3,4,d,1/3,jut); % upper right serif
+ serif(1,2,a,1/3,-jut); % upper left serif
+ serif(3,4,d,1/3,jut); % upper right serif
slab:=vair; % lower.slab
- dish_serif(2,1,b,1/2,jut,c,1/2,jut)(dark); fi % lower left serif
- %dish_serif(4,3,e,1/3,jut,f,1/3,jut); fi %!!! % lower right serif
+ dish_serif(2,1,b,1/2,jut,c,1/2,jut)(dark); fi % lower left serif
+ %dish_serif(4,3,e,1/3,jut,f,1/3,jut); fi %!!! % lower right serif
%%%%%
% l_tail(4);
_zero:=4;
@@ -1064,7 +1059,7 @@ if serifs:
pos[_two](vair',-90); pos[_three](hair,-180);
pos[_four](bulb_diam,-180);
x[_two]=.5[x[_one],x[_three]r];
- bot y[_two]r=-d-oo; y[_three]-.5bulb_diam=-.85d;
+ bot y[_two]r=-d-oo; y[_three]-.5bulb_diam=vround max(-.85d,y[_two]r+eps)+eps;
z[_three]r=z[_four]r;
rt x[_four]l=max(x[_zero]l-bulb_diam,
floor x[_zero]-2.5u if monospace: / expansion_factor fi);
@@ -1182,7 +1177,7 @@ arm(3,4,e,beak_darkness,.4beak_jut); % upper arm and beak
save slab; % lower.slab
if serifs:
slab:=Vround(vair-vair_corr); % lower.slab
- nodish_serif(1,2,a,1/3,jut,b,1/3,.5jut); % upper serif
+ nodish_serif(1,2,a,1/3,jut,b,1/3,.5jut); % upper serif
if is_ogonek:
slab:=vair; % lower.slab
dish_serif(2,1,c,1/3,jut,d,1/3,1.25jut); fi %!!! % lower serif
@@ -1246,10 +1241,10 @@ if serifs:
if rt x3'r+jut+.5u+1<=lft x4'l-jut-xjut: inner_jut2=jut;
else: rt x3'r+inner_jut2+.5u+1=lft x4'l-inner_jut2-xjut; fi
save slab; slab:=Vround(vair-vair_corr); % lower.slab
- dish_serif(1',4,a,1/3,outer_jut,b,2/3,inner_jut1); % upper left serif
+ dish_serif(1',4,a,1/3,outer_jut,b,2/3,inner_jut1); % upper left serif
dish_serif(2',3,e,2/3,inner_jut1+xjut,f,1/2,outer_jut+xjut)(dark); % upper right serif
slab:=vair; % lower.slab
- dish_serif(4',1,c,2/3,inner_jut2,d,1/3,outer_jut); % lower right serif
+ dish_serif(4',1,c,2/3,inner_jut2,d,1/3,outer_jut); % lower right serif
dish_serif(3',2,g,1/2,outer_jut+xjut,h,2/3,inner_jut2+xjut)(dark); fi % lower left serif
%%%%%
% hstroke
@@ -1267,7 +1262,7 @@ if serifs:
save slab; slab:=Vround(vair-vair_corr); % lower.slab
sloped_serif.l(1,2,a,1/3,outer_jut,serif_drop); % upper serif
slab:=vair; % lower.slab
- nodish_serif(2,1,c,1/3,jut,d,1/3,.5jut); fi % lower serif
+ nodish_serif(2,1,c,1/3,jut,d,1/3,.5jut); fi % lower serif
%%%
% lsftsn_bowl(2);
_zero:=2;
@@ -1314,7 +1309,7 @@ if hefty: numeric upper_notch,lower_notch;
upper_notch=y6-cap_notch_cut-eps; lower_notch=y5+cap_notch_cut+eps;
if monospace:
x5r =rt x1r; x6l =lft x3l; y5=vround(vair'+eps); y6=vround(h-vair-eps);
- alpha1=diag_ratio(1,stem1,y6-y5,x5r-x6l);
+ alpha1=diag_ratio(1,stem1,y5-y6,x5r-x6l);
penpos5(min(2fudged.stem,alpha1*stem1),0);
penpos6(min(2fudged.stem,alpha1*stem1),0);
x5'=lft x1l; z5'=whatever[z5l,z6l]; x6'=rt x4r; z6'=whatever[z5r,z6r];
@@ -1341,30 +1336,25 @@ if serifs:
if rt x1r+jut+.5u+1<=lft x3l-jut: inner_jut=jut;
else: rt x1r+inner_jut+.5u+1=lft x3l-inner_jut; fi
save slab; slab:=Vround(vair-vair_corr); % lower.slab
- dish_serif(1,2,a,1/3,jut,b,1/3,inner_jut); % upper left serif
- dish_serif(3,4,e,1/3,inner_jut,f,1/3,jut); % upper right serif
+ dish_serif(1,2,a,1/3,jut,b,1/3,inner_jut); % upper left serif
+ dish_serif(3,4,e,1/3,inner_jut,f,1/3,jut); % upper right serif
slab:=vair; % lower.slab
- dish_serif(2,1,c,1/3,jut,d,1/3,inner_jut); % lower left serif
+ dish_serif(2,1,c,1/3,jut,d,1/3,inner_jut); % lower left serif
if is_ogonek:
dish_serif(4,3,g,1/3,inner_jut,h,1/3,jut); fi % lower right serif
fi
% lowercase descender
-if is_ogonek:
- endgroup;
- def the_pen=
- if known ogonek_pen: ogonek_pen elseif serifs: tiny else: fine fi
- enddef;
- % |stem| was drawn by |tiny| pen, hence |tiny| in the following equation:
- ogonek_pos=(x4 if not serifs: l fi,.5the_pen)
- if serifs and not is_egyptian: +(.5xvair,0) fi;
- easy_ogonek(the_pen,14,15,16); % ogonek
+if not serifs: inner_jut:=0; fi
+slab:=vair; % lower.slab
+right_jut:=if serifs: max(limit_dist,1.1jut) else: hround (r-rt x4r-.5u) fi;
+if unic:
+ %saam tail
+ serif(4,3,v,1/3,-jut);
+ siam_serif(4,3,w,1/3,right_jut);
else:
- if not serifs: inner_jut:=0; fi
- slab:=vair; % lower.slab
- right_jut:=if serifs: max(limit_dist,1.1jut) else: hround (r-rt x4r-.5u) fi;
r_serif(4,3,g,1/3,inner_jut,h,1/3,beak_darkness,right_jut,.6beak_jut); % lower right descender
- endgroup;
fi
+endgroup;
%%%%%
% the accent
h:=full_h; cbreve(.5w,0, 7,8,9,10,11,12,13);