summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/lh/base/lgt2upl.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/base/lgt2upl.mf')
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2upl.mf124
1 files changed, 86 insertions, 38 deletions
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2upl.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2upl.mf
index 39e06c0fed2..cb22ea99ce2 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2upl.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2upl.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=0
+% 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:
%
@@ -46,7 +46,7 @@
% schwa "ba "ba "ba "ba Schwa
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Lowercase Cyrillic letter g_hcrs - ghe hcrossed";
cyrchar(g_hcrs,8u#-.5width_adj#,x_height#,0);
@@ -61,9 +61,9 @@ top y3r=h; x3=x1; rt x4r=hround(w-.45u); y4=good.y(y3l-beak/1.4)-eps;
arm(3,4,e,beak_darkness,.4beak_jut); % upper arm and beak
if serifs:
save slab; 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
slab:=vair; % lower.slab
- dish_serif(2,1,c,1/3,jut,d,1/3,1.25jut); fi % lower serif
+ dish_serif(2,1,c,1/3,jut,d,1/3,1.25jut); fi % lower serif
%%%%%
% hstroke
bar_stroke(hround 1/3u-serif_fit,tiny.rt x1r+1.8u);
@@ -193,17 +193,18 @@ if serifs:
if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut;
else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi
save slab; slab:=vair; % lower.slab
- dish_serif(2,1,c,1/3,jut,d,1/3,jut); % lower left serif
+ dish_serif(2,1,c,1/3,jut,d,1/3,jut); % lower left serif
dish_serif(4,3,e,1/3,inner_jut,f,1/3,jut); fi % lower right serif
penlabels(1,2,3,4); endchar;
+iff not concrete:%
iff not specific:%
lhchar "Lowercase Cyrillic letter zh_dsc - zhe descender (`roman')";
cyrchar(zh_dsc,if serifs:10u# else:9.5u# fi % zhk_width: n_width;keng_width
,x_height#,if is_ogonek: desc_depth# else: sbeak# fi); %ldesc/og_depth
italcorr x_height#*slant-.2u#;
adjust_fit(w#-5u#+ %zhr_adj
- if monospace: 0 else: serif_fit# fi, %wlett_adj
+ if monospace: 0 else: serif_fit# fi, %wlett_adj
if monospace: 0 else: serif_fit# fi); %wlett_adj
begingroup
% lowerr_zh;
@@ -217,7 +218,7 @@ filldraw stroke z1e--z2e; % stem
save slab; % lower.slab
if serifs:
slab:=Vround(vair-vair_corr);% lower.slab
- dish_serif(1,2,a,1/3,jut,b,1/3,jut); % upper stem serif
+ dish_serif(1,2,a,1/3,jut,b,1/3,jut); % upper stem serif
slab:=vair; % lower.slab
dish_serif(2,1,c,1/3,jut,d,1/3,jut); fi% lower stem serif
% k_rbowl;zh%monospace:+.25u
@@ -402,6 +403,7 @@ penlabels(1,2,3,4,5,6,7,8,9,10,12,13); endchar;
% Ukrainian i moved up for LH font
+iff not concrete:%
iff not specific:%
lhchar "Lowercase Cyrillic letter k_dsc - ka descender (`roman')";
cyrchar(k_dsc,if serifs:10u# else:9.5u# fi % zhk_width: n_width;keng_width
@@ -418,7 +420,7 @@ filldraw stroke z1e--z2e; % stem
save slab; % lower.slab
if serifs:
slab:=Vround(vair-vair_corr); % lower.slab
- dish_serif(1,2,a,1/3,jut,b,1/3,jut); % upper stem serif
+ dish_serif(1,2,a,1/3,jut,b,1/3,jut); % upper stem serif
slab:=vair; % lower.slab
dish_serif(2,1,c,1/3,jut,d,1/3,jut); fi% lower stem serif
% k_rbowl;
@@ -474,6 +476,7 @@ else:
fi
penlabels(1,2,3,4,5,6); endchar;
+iff not concrete:%
iff not specific:%
lhchar "Lowercase Cyrillic letter k_beak - ka beak (`roman')";
cyrchar(k_beak,if serifs:10u# else:9.5u# fi % zhk_width: n_width;keng_width
@@ -601,11 +604,12 @@ if serifs:
else: rt x2r+inner_jut+.5u+1=x[_three]r; fi
save slab; slab:=Vround(vair-vair_corr); % lower.slab
dish_serif(3,4,e,2/3,up_inner_jut,f,1/2,right_jut)(dark); % upper diagonal serif
- dish_serif(1,2,a,1/3,jut,b,1/3,jut); % upper stem serif
+ dish_serif(1,2,a,1/3,jut,b,1/3,jut); % upper stem serif
slab:=vair; % lower.slab
dish_serif(2,1,c,1/3,jut,d,1/3,inner_jut); fi % lower stem serif
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); endchar;
+iff not concrete:%
lhchar "Lowercase Cyrillic letter l_tl - el tail";
cyrchar(l_tl,10u# % if not serifs:+.5width_adj# fi % dl_width;n_width
,x_height#,desc_depth#);
@@ -646,7 +650,7 @@ else:
if serifs:
x0=x3; y0=0;
numeric inner_jut; inner_jut=min(.5(lft x1l-rt x3r)-eps,.5jut);
- %dish_serif(2,1,a,1/3,jut,b,1/3,jut); %!!! %lower right serif
+ %dish_serif(2,1,a,1/3,jut,b,1/3,jut); %!!! %lower right serif
save slab; slab:=Vround(vair-vair_corr); %lower.slab
nodish_serif(1,2,c,1/3,inner_jut,d,1/3,jut); % upper right serif
nodish_serif(3,0,e,1/3,1.05jut,f,1/3,inner_jut); % upper left serif
@@ -667,7 +671,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);
@@ -706,10 +710,10 @@ if rt x1r+jut+.5u+1<=lft x3l-jut: inner_jut=jut;
save slab; % lower.slab
if serifs:
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
@@ -732,6 +736,49 @@ else:
fi
penlabels(1,2,3,4,5,6, 7,8,9); endchar;
+lhchar "Lowercase Cyrillic letter n_stl - saam en with tail";
+cyrchar(n_stl,10u# if not serifs:+.5width_adj# fi,x_height#, % n_width
+ if is_ogonek: desc_depth# else: sbeak# fi); %ldesc/og_depth
+italcorr x_height#*slant-serif_fit#+jut#-2u#+.5stem#; %d->x_height+jut
+adjust_fit(serif_fit#,
+ serif_fit# if not serifs:+.5(stem#-u#) fi) %dl_adj
+begingroup
+% lower_n;
+pickup tiny.nib; pos1(fudged.stem,0); pos2(fudged.stem,0);
+pos3(fudged.stem,0); pos4(fudged.stem,0);
+lft x1l=lft x2l=hround(2.5u-.5fudged.stem-eps); x3=x4=w-x1;
+top y1=top y3=h; bot y2=bot y4=0;
+filldraw stroke z1e--z2e; % left stem
+filldraw stroke z3e--z4e; % right stem
+bar_stroke(x1,x3); % bar
+%%%
+numeric inner_jut,right_jut; % for cyr_serif
+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; % lower.slab
+if serifs:
+ 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
+ slab:=vair; % lower.slab
+ 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/saam tail
+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,-inner_jut);
+ siam_serif(4,3,w,1/3,right_jut);
+else:
+ r_serif(4,3,o,1/3,inner_jut,p,1/3,beak_darkness,right_jut,.6beak_jut); % lower right descender
+fi
+endgroup;
+penlabels(1,2,3,4,5,6, 7,8,9); endchar;
+
lhchar "Lowercase Cyrillic letter n_tl - en tail";
cyrchar(n_tl,10u# if not serifs:+.5width_adj# fi,x_height#,desc_depth#); % n_width
italcorr .5x_height#*slant+min(.5curve#-.85u#,-.1u#); %p
@@ -750,10 +797,10 @@ 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(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); fi % lower left serif
+ dish_serif(2,1,c,1/3,jut,d,1/3,inner_jut); fi % lower left serif
%dish_serif(4,3,g,1/3,inner_jut,h,1/3,jut); fi %!!! % lower right serif
%%%%%
% l_tail(4);
@@ -771,7 +818,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);
@@ -869,10 +916,10 @@ if serifs:
prime_points_inside(1,2); prime_points_inside(4,3); prime_points_inside(6,5);
if rt x1'r+jut+.5u+1<=lft x4'l-jut: inner_jut=jut;
else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi
- dish_serif(6',5,e,1/3,jut,f,1/3,jut); % lower serif
+ dish_serif(6',5,e,1/3,jut,f,1/3,jut); % lower serif
save slab; slab:=Vround(vair-vair_corr); % lower.slab
- dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); % upper left serif
- dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); fi % upper right serif
+ dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); % upper left serif
+ dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); fi % upper right serif
%%%%%
penlabels(0,1,2,3,4,5,6); endchar;
@@ -904,10 +951,10 @@ if serifs:
prime_points_inside(1,2); prime_points_inside(4,3); prime_points_inside(6,5);
if rt x1'r+jut+.5u+1<=lft x4'l-jut: inner_jut=jut;
else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi
- dish_serif(6',5,e,1/3,jut,f,1/3,jut); % lower serif
+ dish_serif(6',5,e,1/3,jut,f,1/3,jut); % lower serif
save slab; slab:=Vround(vair-vair_corr); % lower.slab
- dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); % upper left serif
- dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); fi % upper right serif
+ dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); % upper left serif
+ dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); fi % upper right serif
%%%%%
% hcross
pickup crisp.nib; pos7(bar,90); pos8(bar,90);
@@ -955,11 +1002,11 @@ if serifs:
if rt x1'r+jut+.5u+1<=lft x2'l-jut-xjut: inner_jut1=jut;
else: rt x1'r+inner_jut1+.5u+1=lft x2'l-inner_jut1-xjut; fi
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
if is_ogonek:
- 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
fi
dish_serif(3',2,g,1/2,outer_jut+xjut,h,2/3,inner_jut2+xjut)(dark); fi % lower left serif
%%%%%
@@ -1021,13 +1068,12 @@ if serifs:
if rt x1'r+jut+.5u+1<=lft x2'l-jut-xjut: inner_jut1=jut;
else: rt x1'r+inner_jut1+.5u+1=lft x2'l-inner_jut1-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
%%%%%
-%%%%%
% l_tail(4);x_tail
_zero:=4;
_one:=7; _two:=8; _three:=9; _four:=10;
@@ -1035,16 +1081,17 @@ _one:=7; _two:=8; _three:=9; _four:=10;
% x_
pickup fine.nib;
stem3=hround (max(fine.breadth,.5[stem1,x[_zero]r-x[_zero]l]));
-x[_one]'r=x4r;
+x[_one]'r=hround x4r+eps;
penpos[_one]'(stem3,0); pos[_one](stem3,0); z[_one]=z[_one]';
-bot y[_one]=max(-1/3d,-d+vair')-eps;
-(x[_one]'l,y54')=whatever[z4l,z4l+dir angle(z4l-if serifs:z1l else:z34'fi)];
+bot y[_one]=max(-1/3d,min(y[_zero]r-.5,-d+vair'))-eps;
+(x[_one]'l,y54')=whatever[z[_zero]l,z[_zero]l+
+ dir angle(z[_zero]l-if serifs: z1l else: z34'fi)];
z54'=(x[_one]'l,y54');
-fill z54l{z4r-z1r}
- ..controls (z54')..
+fill z54l{z[_zero]r-z1r}
+ ..controls (x54'+eps,y54'+eps)..
{down}z[_one]'l--z[_one]'r{up}
- ..controls (z4r)..
- {z1r-z4r}z54r--cycle; %link
+ ..controls (x[_zero]r+eps,y[_zero]r+eps)..
+ {z1r-z[_zero]r}z54r--cycle; %link
% _x
if serifs:
numeric bulb_diam;
@@ -1052,7 +1099,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[_one]l-bulb_diam,%!!!
floor x[_one]-2.5u if monospace: / expansion_factor fi);%!!!
@@ -1067,6 +1114,7 @@ else:
filldraw stroke super_arc.e([_one],[_two])%!!!
& term.e([_two],[_three],left,.8,4); fi
%%%
+%r:=r-.5jut; %x_tl adjustment
penlabels(0,1,2,3,4,54,54',5,6,7',8); endchar;
lhchar "Lowercase Cyrillic letter ch_ldsc - che left descender";