summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/lh/base/lgocyrac.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/base/lgocyrac.mf')
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgocyrac.mf140
1 files changed, 83 insertions, 57 deletions
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgocyrac.mf b/Master/texmf-dist/fonts/source/lh/base/lgocyrac.mf
index 9965a9cf47c..63613d40b59 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgocyrac.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgocyrac.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:
%
@@ -45,7 +45,7 @@
% tmatem
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Cyrillic sign thousands"; % ss uses SlavTeX form
cyrchar(thousands,if serifs:8u# else:7u# fi,x_height#,desc_depth#);
@@ -91,7 +91,7 @@ _zero:=1;
_one:=2; _two:=3; _three:=4; _four:=5; _five:=6; _six:=7;
%
pickup fine.nib; numeric stem[];
-stem0=if serifs: .8[hair,stem] else: fudged.hair-4stem_corr fi;
+stem0=max(currentbreadth+eps,if serifs: .8[hair,stem] else: fudged.hair-4stem_corr fi);
pos[_one](stem0,0); pos[_two](stem0,0);
pos[_three](stem0,0); pos[_four](stem0,0);
numeric middle_weight;
@@ -260,6 +260,7 @@ cyrchar(pneuac,9u#,min(asc_height#,2x_height#),0);
italcorr asc_height#*slant+.5dot_size#-2u#;
adjust_fit(0,0);
old_u:=u; u:=.75u;
+x_move:=0;
% classic acute
if serifs: pickup crisp.nib; x1+.5fudged.stem=hround(w-2u)+x_move;
x2=2/3[x1,w+x_move-x1+(w+x_move-9u)];
@@ -438,32 +439,41 @@ y_move:=x_height+oo; old_u:=u; u:=u*(acc_height/x_height);
ll=hround(.5w-5.25u); rr=hround(.5w+3.25u);
clearxy;
%
-if serifs:
+if hefty or (1/3hh<=1):
+ pickup pencircle scaled .5 fine;
+ pos1(max(currentbreadth+eps,if hefty: min(1/3 hh,2/3vair) else: flare fi),80);
+ pos2(max(currentbreadth+eps,if hefty: min(1/3 hh,2/3vair) else: vair fi),90);
+ pos3(max(currentbreadth+eps,if is_egyptian: 2/3 fi curve),180);
+ pos4(max(currentbreadth+eps,if hefty: min(1/3 hh,2/3vair) else: vair fi),270);
+ pos5(max(currentbreadth+.5+eps,if hefty: min(1/3 hh,2/3vair)+eps else: flare fi),275);
+ rt x1r=hround(rr-1.1u); x2=x4=.55[x3,x1];
+ lft x3r=ll+hround max(u,2u-.5curve); rt x5r=hround(rr-.9u);
+ top y1r=vround max(2/3hh+.25flare-eps,.9hh+oo)+y_move;
+ top y2r=hh+oo+y_move; y3=.52hh+y_move;
+ bot y4r=o+y_move+eps;
+ bot y5r=bot y4r+vround min(1/3hh-.25flare+eps,.15[oo,hh]);
+ y5l:=good.y y5l; x5l:=good.x x5l;
+ filldraw stroke rterm.e(2,1,right,.9,4) & super_arc.e(2,3)
+ & super_arc.e(3,4) & term.e(4,5,right,.8,4); % arc and terminals
+else:
pickup fine.nib; pos1(hair,0); pos2(vair,90);
pos3(curve,180); pos4(vair',270); pos5(hair,360);
- rt x1r=rt x5r=hround(rr-u); lft x3r=hround(ll+u); x2=x4=.55[x3,x1];
+ rt x1r=rt x5r=hround(rr-u); lft x3r=hround(ll+u);
+ x2=x4=min(x1l-eps,.55[x3,x1]);
top y2r=hh+oo+y_move; bot y4r=o+y_move; y3=.5[y2,y4];
- bot y1=min(vround max(.65hh,.75hh-.5vair),bot y2l-eps)+y_move;
+ bot y1=vround min(max(.65hh,.75hh-.5vair),bot y2l-eps)+y_move;
y5=max(good.y (.95(hh-y1)+y_move),y4l+eps-y_move)+y_move;
(x2l',y2l)=whatever[z2r,z1l]; x2l:=min(x2l',x2l+.5u);
(x4l',y4l)=whatever[z4r,z5l]; x4l:=min(x4l',x4l+.5u);
- filldraw stroke z1e{x2-x1,10(y2-y1)}
+ filldraw stroke z1e{x2-x1,5(y2-y1)}
...pulled_arc.e(2,3) & pulled_arc.e(3,4)...{up}z5e; % arc
pos6(.3[fine.breadth,cap_hair],0); x6r=x1r; top y6=hh+oo+y_move;
x1r-x1'=2cap_curve-fine; y1'=y1;
path upper_arc; upper_arc=z1{x2-x1,10(y2-y1)}..z2{left};
numeric t; t=xpart(upper_arc intersectiontimes (z6l--z1'));
filldraw z1r--z6r--z6l--subpath(t,0) of upper_arc--cycle; % barb
-else:
- pickup fine.nib; pos1(flare,80); pos2(vair,90);
- pos3(curve,180); pos4(vair,270); pos5(flare,275);
- rt x1r=hround(rr-1.1u); x2=x4=.55[x3,x1];
- lft x3r=ll+hround max(u,2u-.5cap_curve); rt x5r=hround(rr-.9u);
- top y1r=vround .9hh+oo+y_move; top y2r=hh+oo+y_move; y3=.5hh+y_move;
- bot y4r=o+y_move+eps; bot y5r=vround .15[oo,hh]+y_move; y5l:=good.y y5l; x5l:=good.x x5l;
- filldraw stroke rterm.e(2,1,right,.9,4) & super_arc.e(2,3)
- & super_arc.e(3,4) & term.e(4,5,right,.8,4); fi % arc and terminals
-endgroup;
+fi
+penlabels(1,2,3,4,5); endgroup;
penlabels(1,2,3,4); endchar;
@@ -490,22 +500,27 @@ bot y[_one]=bot y[_three]=
bot y[_four]l=min(bot y[_one]-.5y_move,x_height+o+.5y_move)-eps; x[_four]=w+eps;
forsuffixes e=l,r:
path p; p=z[_two]e{right}...{(x[_three]-x[_one]),-7acc_height}z[_three]e;
- z[_three]'e=point .8 of p; endfor
+ z[_three]'e=point 2/3 of p; endfor
filldraw stroke z[_one]e{(x[_three]-x[_one]),7acc_height}...
z[_two]e{right}...
{direction .8 of p}z[_three]'e...{right}z[_four]e; % stroke
%%%
%tlo_d
-stem2:=1/3[hair,fudged.stem];
-if not serifs: stem2:=max(fine.breadth,1/2[thin_join,vair]);
-stem1:=max(fine.breadth,thin_join); fi
-pos5(stem2,90); pos6(stem2,90); pos5'(stem1,90); pos7(stem1,-15); pos8(stem1,0);
+stem2:=1/3[hair,fudged.stem]; pickup pencircle scaled if hefty: .5 fi fine;
+if not serifs: stem2:=max(currentbreadth+eps,1/2[thin_join,vair]);
+stem1:=max(currentbreadth+eps,thin_join); fi
+pos5(max(currentbreadth+eps,if is_egyptian: 2/3 fi stem2),90);
+pos6(max(currentbreadth+eps,if is_egyptian: 2/3 fi stem2),90);
+pos5'(max(currentbreadth+eps,if hefty:1/2 fi stem1),90);
+pos7(max(currentbreadth+eps,if hefty: 1/2 fi stem1),-15);
+pos8(max(currentbreadth+eps,if hefty: 1/2 fi stem1),0);
bot y5'l=bot y[_four]l; top y5r=top y6r=top y5'r;
-z8l=z[_three]'l; x8-x[_four]=x7-x8; bot y7=bot y[_four]l;
+z8l=z[_three]'l;
+x8-x[_four]-eps=x7l-x8l; top y7l=min(top y5'r,y8)-eps;
rt x6=rt x[_four]+eps; lft x5=lft x7l-eps; x5'=.5[x5,x6];
-filldraw stroke z7e..{dir75}z8e;
-filldraw z6r--z5r--z5l{up}...z5'l...{down}z6l--cycle;
-penlabels(1,2,3,4); endchar;
+filldraw stroke z7e{right}..{dir60}z8e; %left "stem"
+filldraw z6r--z5r--z5l{up}...z5'l...{down}z6l--cycle; % "floor"
+penlabels(1,2,3,4,5,6,7,8); endchar;
lhchar "Cyrillic accent titlo with letter o";
cyrchar(tlo_o,10u#,min(asc_height#,2x_height#),0); %
@@ -547,7 +562,10 @@ y_move:=x_height+oo; old_u:=u; u:=u*(acc_height/x_height);
ll=hround(.5w-4.5u); rr=hround(.5w+3u);
clearxy;
%
-penpos1(vair,90); penpos3(vair,-90); penpos2(curve,180); penpos4(curve,0);
+penpos1(if hefty: min(1/4 hh,1/3vair) else: vair fi,90);
+penpos3(if hefty: min(1/4 hh,1/3vair) else: vair fi,-90);
+penpos2(if is_egyptian: 2/3 fi curve,180);
+penpos4(if is_egyptian: 2/3 fi curve,0);
x2r=hround max(ll+.5u,ll+1.25u-.5curve);
x4r=rr-(ll-x2r); x1=x3=.5[x2r,x4r]; y1r=hh+oo+y_move; y3r=o+y_move+eps;
y2=y4=.5[o,hh]-.5vair_corr+y_move; y2l:=y4l:=.52[o,hh]+y_move;
@@ -595,19 +613,25 @@ y_move:=x_height+oo; old_u:=u; u:=u*(acc_height/x_height);
ll=hround(.5w-4u); rr=hround(.5w+3u);
clearxy;
%
-pickup if serifs: tiny else: fine fi nib;
-pos1(stem2,0); pos2(stem2,0);
+pickup pencircle scaled if hefty: .5 fi fine;
+pos1(max(currentbreadth+eps, if is_egyptian: 2/3 fi stem2),0);
+pos2(max(currentbreadth+eps, if is_egyptian: 2/3 fi stem2),0);
lft x1l=lft x2l=hround (ll+2.5u-.5stem2); top y1=hh+y_move; bot y2=o+y_move+eps;
filldraw stroke z1e--z2e; % stem
-pickup if serifs: crisp else: fine fi nib;
-pos3(vair,90); pos4(vair,0);
-top y3r=hh+y_move; x3=x1; rt x4r=hround(rr-.45u);
-y4=good.y(y3l-if serifs: .15 fi beak)-eps;
-arm(3,4,e,beak_darkness,.2beak_jut); % upper arm and beak
-if serifs: save slab; slab:=max(crisp.breadth,Vround(vair-2vair_corr)); % lower.slab
+if not hefty: pickup if serifs: crisp else: fine fi nib; fi
+pos3(max(currentbreadth+eps, if hefty: min(1/3 hh,1/2stem2) else: vair fi),90);
+pos4(max(currentbreadth+eps, if hefty: min(1/3 hh,1/2stem2) else: vair fi),0);
+top y3r=hh+y_move; x3=x1; rt x4r=hround max(x3+vair+eps,rr-.45u)+eps;
+y4=good.y(y3l-if serifs: 1/6 fi beak)-eps;
+if hefty or (1/6beak<=1): filldraw stroke z3e--(x4r,y3e);
+else:
+arm(3,4,e,beak_darkness,.2beak_jut-eps); fi % upper arm and beak
+if serifs and (not hefty):
+ save slab; slab:=vair; old_crisp:=crisp; crisp:=.5crisp; % lower.slab
nodish_serif(1,2,a,1/3,.2jut,b,1/3,.1jut); % upper serif
- slab:=vair; % lower.slab
- dish_serif(2,1,c,1/3,.2jut,d,1/3,.2jut); fi % lower serif
+ dish_serif(2,1,c,1/3,.2jut,d,1/3,.2jut); % lower serif
+ crisp:=old_crisp; numeric old_crisp;
+fi
endgroup;
penlabels(1,2,3,4); endchar;
@@ -641,7 +665,7 @@ filldraw stroke z[_one]e{(x[_three]-x[_one]),7acc_height}...
%%%
%tlo_r
begingroup
-stem2:=1/3[hair,fudged.stem];
+stem2:=max(fine.breadth,1/3[hair,fudged.stem]-2stem_corr);
if not serifs: stem2:=max(fine.breadth,1/2[thin_join,vair]);
stem1:=max(fine.breadth,thin_join); fi
save curve; curve:=stem2;
@@ -652,31 +676,33 @@ y_move:=x_height+oo; old_u:=u; u:=u*(acc_height/x_height);
ll=hround(.5w-4.75u); rr=hround(.5w+3.25u);
clearxy;
%
-pickup if serifs: tiny else: fine fi nib;
-pos2(stem2,0); pos3'(stem2,0);
+pickup pencircle scaled if hefty: .5 fi fine;
+pos2(max(currentbreadth+eps,if is_egyptian: 2/3 fi stem2),0);
+pos3'(max(currentbreadth+eps,if is_egyptian: 2/3 fi stem2),0);
lft x2l=hround(ll+2.5u-.5stem2); bot y2=o+y_move+eps;
y3'=min(hh+1.5oo+y_move-vair-eps,1/3[.55hh,hh]+y_move); rt x3'r=rt x2r; z3'=z3;
filldraw stroke z2e--z3'e; %stem
-pickup fine.nib;
-pos3(stem2,180); pos4(vair,90);
-pos5(curve,0); pos6(vair,-90); pos7(if hefty: thin_join else: hair fi,-180);
-numeric edge; edge=rt x2r;
+pos3(max(currentbreadth+eps,if is_egyptian: 2/3 fi stem2),180);
+pos4(max(currentbreadth+eps,if is_egyptian: .5 fi vair),90);
+pos5(max(currentbreadth+eps,if is_egyptian: 2/3 fi stem2),0);
+pos6(max(currentbreadth+eps,if is_egyptian: .5 fi vair),-90);
+pos7(max(currentbreadth+eps,if is_egyptian: 1/3stem2 else: hair fi),-180);
x4l=rr-(.5(rr-ll)-.25serif_fit)+.5u; top y4r=hh+1.5oo+y_move;
rt x5r=hround min(rr-1.35u+.5curve,rr-.6u); y5=.25[hh,oo]+y_move;
-x6l=x4l-.2u; bot y6r=max(.4[oo,hh],.45[oo,hh]-oo)+y_move;
-rt x7l=tiny.rt x2r; y7=min(y3,y6+y4-y3);
+x6l=x4l-.2u; bot y6r=max(1/4[oo,hh],1/3[oo,hh]-oo)+y_move-eps;
+rt x7l=rt x2r; y7=min(y3,y6+y4-y3);
(x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x5r,x4]);
(x',y6r)=whatever[z7l,z6l]; x6r:=min(x',.5[x5r,x6]);
filldraw stroke z3e{up}...{right}z4e&super_arc.e(4,5)
&super_arc.e(5,6)&z6e{left}...{up}z7e; % bowl
-if serifs: save slab; slab:=max(crisp.breadth,Vround(vair-2vair_corr)); % lower.slab
+if serifs and (not hefty): save slab; slab:=tiny+eps; % lower.slab
dish_serif(2,3',b,1/3,.2jut,c,1/3,.2jut); fi % lower serif
-endgroup;
-penlabels(1,2,3,4); endchar;
+penlabels(1,2,3,4,5,6,7); endgroup;
+penlabels(1,2,3,4,5,6,7); endchar;
%
% Number symbols
%
-lhchar"Cyrillic Tma number symbol";
+lhchar"Cyrillic Tma number symbol (ten thousands)";
cyrchar(tma,20u#,body_height#,max(paren_depth#,desc_depth#));
autorounded;
adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;
@@ -685,7 +711,7 @@ lft x6=hround u; x2=w-x6; top y8=h+o; bot y4=-d-o;
circle_points; draw_circle; % circle
penlabels(1,2,3,4,5,6,7,8); endchar;
-lhchar"Cyrillic Legion number symbol";
+lhchar"Cyrillic Legion number symbol (hundred thousands)";
cyrchar(legion,20u#,body_height#,max(paren_depth#,desc_depth#));
autorounded;
adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;
@@ -699,7 +725,7 @@ enddef;
temp(1); temp(2); temp(3); temp(4); temp(5); temp(6); temp(7); temp(8);
penlabels(1,2,3,4,5,6,7,8); endchar;
-lhchar"Cyrillic Leodr number symbol";
+lhchar"Cyrillic Leodr number symbol (million)";
cyrchar(leodr,20u#,body_height#,max(paren_depth#,desc_depth#));
autorounded;
adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;
@@ -718,7 +744,7 @@ temp(1,6); temp(2,7); temp(3,8); temp(4,1);
temp(5,2); temp(6,3); temp(7,4); temp(8,5);
penlabels(1,2,3,4,5,6,7,8); endchar;
-lhchar"Cyrillic Vran number symbol";
+lhchar"Cyrillic Vran number symbol (ten millions)";
cyrchar(vran,20u#,body_height#,max(paren_depth#,desc_depth#));
autorounded;
adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;
@@ -732,7 +758,7 @@ enddef;
temp(1); temp(2); temp(3); temp(4); temp(5); temp(6); temp(7); temp(8);
penlabels(1,2,3,4,5,6,7,8); endchar;
-lhchar "Cyrillic koloda number symbol";
+lhchar "Cyrillic koloda number symbol (hundred millions)";
cyrchar(koloda,18u#,body_height#,max(paren_depth#,desc_depth#));%
italcorr h#*slant+.5vair#-1.5u#;
adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi);
@@ -760,7 +786,7 @@ filldraw stroke (z[_three]e+(-u,0))--z[_three]e{down}...z[_two]e{left}
...{up}z[_one]e--(z[_one]e+(u,0)); % stroke
penlabels(1,2,3); endchar;
-lhchar"Cyrillic Tma Tem number symbol";
+lhchar"Cyrillic Tma Tem number symbol (billion/milliard)";
cyrchar(tmatem,20u#,body_height#,max(paren_depth#,desc_depth#));
autorounded;
adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;