summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/lh/base
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-07-01 22:18:57 +0000
committerKarl Berry <karl@freefriends.org>2006-07-01 22:18:57 +0000
commit12e838406005e7d86054c1b4a605be7eb2f49080 (patch)
tree5f2ca548c1fb8a1e28eb34b3ad57396471ff7902 /Master/texmf-dist/fonts/source/lh/base
parenta8fc2d59858b6da806b0b23d7b41e2c8ea801c2a (diff)
lh fonts 3.5d update
git-svn-id: svn://tug.org/texlive/trunk@1738 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/base')
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/fikparm.mf107
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lcyrbeg.mf21
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lcyrdefs.mf140
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/ldbroman.mf184
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/ldcsc.mf10
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/ldroman.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/ldtexset.mf152
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/ldtextit.mf18
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/ldtitle.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lebroman.mf82
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lecsc.mf16
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/leroman.mf18
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/letextit.mf16
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgcspl.mf183
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgcsplff.mf192
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf18
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgcyri.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgcyrl.mf9
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgcyrsp.mf11
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgcyrsym.mf71
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgcyru.mf9
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgengsym.mf9
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgidigit.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgilig.mf233
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgiligff.mf242
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgitalp.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgocyrac.mf140
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgpunct.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgrdigit.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgrlig.mf175
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgrligff.mf184
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgromp.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgrusi.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgrusl.mf12
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgrusu.mf12
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2comi.mf14
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2coml.mf11
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2comu.mf13
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2loi.mf22
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2lol.mf136
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2lou.mf84
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2slvi.mf388
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2slvl.mf37
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2slvu.mf38
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2slxi.mf189
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2slxl.mf843
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2slxu.mf867
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2upi.mf10
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2upl.mf124
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgt2upu.mf83
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lkligtbl.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/llbligtb.mf231
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/llcligtb.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lliligtb.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/llmligtb.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/llrligtb.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/llvligtb.mf20
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lwnligs.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lxpseudo.mf27
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lycyracc.mf8
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lypseudo.mf20
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/nodraw.mf12
62 files changed, 2409 insertions, 3152 deletions
diff --git a/Master/texmf-dist/fonts/source/lh/base/fikparm.mf b/Master/texmf-dist/fonts/source/lh/base/fikparm.mf
index dcd04088cd1..7ce793a6b50 100644
--- a/Master/texmf-dist/fonts/source/lh/base/fikparm.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/fikparm.mf
@@ -4,13 +4,14 @@
%% 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=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:
%
@@ -45,9 +46,9 @@
%
-% defining LHver_check 3.4
+% defining LHver_check 3.5
%
-lh_maj_ver:=3; lh_min_ver:=4; % version identification
+lh_maj_ver:=3; lh_min_ver:=5; % version identification
def LHver_check(expr e,f)=
if e>lh_maj_ver: message "LH font warning: Obsolete base";
elseif e<lh_maj_ver: message "LH font warning: File from old release found";
@@ -66,9 +67,12 @@ if unknown fonteq:
def fonteq=2 enddef;
fi
-if unknown cmbright:
- if unknown ebbase: def cmbright=false enddef;
- else: def cmbright=true enddef;
+% -- set boolean for cmbright fonts (vvv)
+if unknown cmbright: boolean cmbright;
+ if unknown ebbase:
+ cmbright:=false;
+ ebbase:=0;
+ else: cmbright:=true;
fi;
fi
@@ -121,11 +125,14 @@ unic:=false;
boolean is_ogonek; is_ogonek=false;
% -- `true' not supported in current version
-boolean specific,kapitel;
-specific=false;
-kapitel:=false;
if unknown concrete:
- boolean concrete; concrete=false;
+ boolean concrete; concrete:=false;
+fi
+if unknown specific:
+ boolean specific; specific:=false;
+fi
+if unknown kapitel:
+ boolean kapitel; kapitel:=false;
fi
% -- set flags for ligature and kerning stuff
@@ -171,16 +178,9 @@ fi
boolean altcoding;
altcoding:= if wncoding or vfcoding: false else: true fi;
-% -- start base file
-if not cmbright:
-if (genmode="ex") or (genmode="ec"):
- if unknown exbase: input exbase; fi
-else:
- if unknown cmbase: input cmbase; fi
-fi
-fi
-
-if unknown ligs: newinternal ligs; fi % exbase, ebbase
+% -- start base file:
+% exbase won't loaded for run in small memory systems
+if unknown cmbase: input cmbase; fi
% -- additional macros for ec compatible mode
input lcyrbeg;
@@ -221,35 +221,39 @@ vardef use_driver @# (expr fonteq) =
ii:=ii-1;
ss:=substring(length(param_base)-ii,length(param_base)) of param_base;
if (genmode="ex") or (genmode="ec"):
-if concrete:
- gensize:=scantokens(ss);
- ss:="input eo"& (substring(fonteq+1,length(param_base)) of param_base);
-elseif cmbright:
- %gensize:=scantokens(ss);
- ss:="input eb"& (substring(fonteq+1,length(param_base)) of param_base);
-else:
+ exbase:=1; %!!! THAT'S TRICK: we don't need exbase at all
+% added flag for concrete
+ if concrete:
+ gensize:=scantokens(ss);
+ ss:="input eo"& (substring(fonteq+1,length(param_base)) of param_base);
+ elseif cmbright:
+ exbase:=1; %!!! THAT'S TRICK: we don't need exbase at all
+ gensize:=scantokens(ss);
+ ss:="input eb"& (substring(fonteq+1,length(param_base)) of param_base);
+ else:
% - set gensize for ec parameter files
- if (ss="8") or (ss="10"): % for EC slitex fonts
- gensize:=scantokens(ss);
- ss:="input "& (substring(0,fonteq-2) of param_base) & "ec"
- & (substring(fonteq,length(param_base)) of param_base);
- else:
- gensize:=scantokens(ss)/100;
- ss:="input ec" & (substring(fonteq,length(param_base)-ii) of param_base);
- fi
-fi
+ if (ss="8") or (ss="10"): % for EC slitex fonts
+ gensize:=scantokens(ss);
+ ss:="input "& (substring(0,fonteq-2) of param_base) & "ec"
+ & (substring(fonteq,length(param_base)) of param_base);
+ else:
+ gensize:=scantokens(ss)/100;
+ ss:="input ec" & (substring(fonteq,length(param_base)-ii) of param_base);
+ fi
+ fi
else:
% - set gensize for cm parameter files
- gensize:=scantokens(ss);
-if concrete:
- ss:="input "& "cc" & (substring(fonteq+1,length(param_base)) of param_base);
-else:
-% HERE could be cm or cc genmode: vvvvvvv
- ss:="input "& (substring(0,fonteq-2) of param_base) & genmode
- & (substring(fonteq,length(param_base)) of param_base);
-fi
+ gensize:=scantokens(ss);
+% added flag for concrete
+ if concrete:
+ ss:="input cc"& (substring(fonteq+1,length(param_base)) of param_base);
+ else:
+% HERE could be cm genmode: vvvvvvv
+ ss:="input "& (substring(0,fonteq-2) of param_base) & genmode
+ & (substring(fonteq,length(param_base)) of param_base);
+ fi
fi
-%show gensize,ss;
+ show gensize,ss;
%
% - set font_identifier
numeric true_pt#; true_pt#=pt#;
@@ -264,10 +268,10 @@ fi
% - input driver file
scantokens("input "&
if genmode="ex":
- if driver_name= "exroman" : "leroman"
+ if driver_name= "exroman" : "leroman" % also cmbright&ec (vvv)
+ elseif driver_name= "ebroman" : "lebroman" % cmbright&ec (vvv)
elseif driver_name= "extextit": "letextit"
elseif driver_name= "excsc" : "lecsc"
- elseif driver_name= "ebroman" : "leroman"
else: driver_name fi
elseif genmode="ec":
if driver_name= "exroman" : "ldroman"
@@ -276,11 +280,12 @@ fi
else: driver_name fi
else:
if driver_name= "roman" : "ldroman"
- elseif driver_name= "sroman" : "ldroman" % slitex must be true
- elseif driver_name= "broman" : "ldroman"
+ elseif driver_name= "sroman" : "ldroman" % slitex must be true
+ elseif driver_name= "broman" : "ldbroman" % cmbright (vvv)
elseif driver_name= "textit" : "ldtextit"
elseif driver_name= "title" : "ldtitle"
elseif driver_name= "csc" : "ldcsc"
+ elseif driver_name= "texset" : "ldtexset"
else: driver_name fi fi);
enddef;
diff --git a/Master/texmf-dist/fonts/source/lh/base/lcyrbeg.mf b/Master/texmf-dist/fonts/source/lh/base/lcyrbeg.mf
index b959d126440..2274cf207fc 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lcyrbeg.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lcyrbeg.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=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:
%
@@ -26,7 +26,7 @@
% ** macros for accenting moved in file lcyrdefs.mf
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
if unknown slitex:
boolean slitex; slitex := false; fi % |true| simulates behaviour of |sroman|
@@ -38,8 +38,16 @@ if unknown suppress_i_dot:
boolean suppress_i_dot; suppress_i_dot :=false; fi
if unknown hach_sharp:
boolean hach_sharp; hach_sharp:=false; fi
-if unknown classic_sharp_s:
- boolean classic_sharp_s; classic_sharp_s:=false; fi % Chooses shape of sharp s
+if unknown classic_sharp_s: boolean classic_sharp_s;
+ if ebbase=1:
+ classic_sharp_s:=true; % Chooses shape of sharp s (CMBRIGHT)
+ else:
+ classic_sharp_s:=false; % Chooses shape of sharp s
+ fi
+fi % Chooses shape of sharp s
+if unknown true_mono:
+ boolean true_mono; true_mono:=false; % |true| forces ligatures to monowidth
+fi
if unknown knuthian_ae:
boolean knuthian_ae; knuthian_ae:=false; fi % |true| reproduces cm italic \ae
if unknown fancy_thorn:
@@ -48,6 +56,7 @@ if unknown is_small_cap:
boolean is_small_cap; is_small_cap:=false; fi
tracingstats:=1; % Print statistics at the end of run
+
%
%
%
diff --git a/Master/texmf-dist/fonts/source/lh/base/lcyrdefs.mf b/Master/texmf-dist/fonts/source/lh/base/lcyrdefs.mf
index 8f7796d668f..bf1f279ed0e 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lcyrdefs.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lcyrdefs.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=2
% (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:
%
@@ -36,14 +36,14 @@
% (borrowed from exaccess)
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
let lhchar=\; % `|lhchar|' should precede each character
-%if roman_ec: % for inputed exrullett.mf and exrllett.mf
-% def version_check(expr e,f) = enddef;
-% let ecchar=\;
-%fi;
+if roman_ec: % for inputed exrullett.mf and exrllett.mf
+ def version_check(expr e,f) = enddef;
+ let ecchar=\;
+fi;
%
% defining cyrchar stuff - chars with floating codes
@@ -86,7 +86,7 @@ if unknown acc_height#: % emulation ecfonts parameter file
fi
-sbeak# := (if serifs: max(beak#,3/4desc_depth#) else: desc_depth# fi) /1.2;
+sbeak# := (if serifs: max(beak#,3/4desc_depth#) else: desc_depth# fi) /1.2;
cap_sbeak# := if serifs: max(beak#,3/4desc_depth#) else: desc_depth# fi;
%
@@ -95,20 +95,12 @@ cap_sbeak# := if serifs: max(beak#,3/4desc_depth#) else: desc_depth# fi;
%
let font_setup_ = font_setup;
-if unknown true_mono:
- boolean true_mono;
- if monospace: true_mono:=true; % |true| forces ligatures to monowidth
- else: true_mono:=false; %
- fi
-fi
-
def font_setup =
font_setup_;
define_whole_blacker_pixels(acc_height);
define_pixels(cap_sbeak,sbeak);
pickup pencircle scaled min(hair,vair);
extra_rule.nib:=savepen;
- if true_mono: let normal_adjust_fit=mono_adjust_fit; fi
enddef;
%
@@ -120,10 +112,10 @@ cyrcaph.cyrcaph = true;
%
% advanced cmbase's definitions: macros for cyr letter's drawing
-% set_bar_axis, bar_stroke
-% cyr_serif, l_serif, r_serif
-% cyrbulb
-% cbreve
+% set_bar_axis, bar_stroke
+% cyr_serif, l_serif, r_serif
+% cyrbulb
+% cbreve
% sets for bar axis in lowercase letters
%
@@ -198,14 +190,66 @@ vardef cyr_serif(suffix $,$$,@) % serif at |z$| for stroke from |z$$|
...{-jut,0}z@4--(x@4,y@1)--z@5--z@6--cycle; % descender
else:
filldraw z@6--z@5--(x@4,y@1)--z@4{jut,0}
- ...(beak_darkness+eps)[beak_corner,.5[z@3,z@4]]
- ...{z@2-z@1}z@3--z@2--z@1{-jut,0}
- ...(darkness+eps)[corner,.5[z@1,z@0]]{z@0-z@1}
- ...{z$$-z$}z@0--cycle; % descender
+ ...(beak_darkness+eps)[beak_corner,.5[z@3,z@4]]
+ ...{z@2-z@1}z@3--z@2--z@1{-jut,0}
+ ...(darkness+eps)[corner,.5[z@1,z@0]]{z@0-z@1}
+ ...{z$$-z$}z@0--cycle; % descender
fi
labels (@0,@1,@2,@3,@4,@5,@6);
enddef;
+vardef siam_serif(suffix $,$$,@) % serif at |z$| for stroke from |z$$|
+ (expr darkness,jut) =
+ if serifs:
+ pickup crisp.nib;
+ else:
+ pickup pencircle scaled (3/5[fine,crisp]+eps);
+ fi
+ numeric bracket_height,light_stem; pair downward;
+ bracket_height=bracket;
+ light_stem=hround (max(tiny.breadth,3/5[fudged.hair,fudged.stem]));
+ % for cyr_serif always |y$|<|y$$|
+ if (y$>y$$): errmessage ("`cyr_serif' placed only on the bottom"); fi
+ downward=z$-z$$;
+ y@0=min(y$+bracket_height,y$$)+eps;
+ top y@1-slab-eps=bot y@4+eps=tiny.bot y$;
+ if y@1>y@0: y@0:=y@1+eps; fi
+ bot y@2=bot y@3=vround(-d);
+ y@5=y@1; y@6=y@0;
+ z@5=whatever[z$,z$$]; z@6=whatever[z$,z$$];
+ if jut<0:
+ z@0+penoffset downward of currentpen =
+ z$l+penoffset downward of pen_[tiny.nib]+whatever*downward;
+ lft x@1=hround (tiny.lft x$l+jut)-eps;
+ if x@6<x@0+eps: x@6:=x@0+eps; fi
+ lft x@2=rt x@3-light_stem-eps=hround (lft x@1+beak_jut)-eps;
+ x@4=x$+.5(fudged.stem-3stem_corr-tiny)+eps;
+ else:
+ z@0-penoffset downward of currentpen =
+ z$r-penoffset downward of pen_[tiny.nib]-whatever*downward;
+ rt x@1=hround (tiny.rt x$r+jut)+eps;
+ if x@6>x@0-eps: x@6:=x@0-eps; fi
+ rt x@2=lft x@3+light_stem+eps=x@0+eps;
+ x@4=x$-.5(fudged.stem-3stem_corr-tiny)-eps;
+ fi
+ pair corner,beak_corner;
+ ypart corner=y@1; corner=z@0+whatever*downward;
+ ypart beak_corner=y@4; beak_corner=z@3+whatever*(z@1-z@2);
+ if jut<0:
+ filldraw z@0{z$-z$$}
+ ...(darkness+eps)[corner,.5[z@1,z@0]]{z@1-z@0}
+ ...{jut,0}z@1--z@2--z@3
+ --beak_corner
+ --z@4--(x@4,y@1)--z@5--z@6--cycle; % descender
+ else:
+ filldraw z@6--z@5--(x@4,y@1)--z@4
+ --beak_corner
+ --z@3--z@2--z@1{-jut,0}
+ ...(darkness+eps)[corner,.5[z@1,z@0]]{z@0-z@1}
+ ...{z$$-z$}z@0--cycle; % descender
+ fi
+ labels (@0,@1,@2,@3,@4,@5,@6,beak_corner);
+enddef;
%
% roman descenders
%
@@ -345,10 +389,13 @@ def hi = if is_small_cap: higher fi\\ enddef;
%!!!lhfonts: first goes umlaut for yo
vardef lowercase_umlaut(expr x_move,y_move,umlaut_one,umlaut_two,
umlaut_three,umlaut_four) =
+numeric dot_dist; dot_dist:=round(3.5u); % (CMBRIGHT)
pickup tiny.nib;
pos[umlaut_one](udot_diam,0);
pos[umlaut_two](udot_diam,90);
-x[umlaut_one]=x[umlaut_two]=x_move+.5w-1.75u if monospace:/expansion_factor fi ;
+%x[umlaut_one]=x[umlaut_two]=x_move+.5w-1.75u if monospace:/expansion_factor fi ;
+x[umlaut_one]=x[umlaut_two]=x_move+.5w-0.5dot_dist %(CMBRIGHT)
+ if monospace:/expansion_factor fi ; %(CMBRIGHT)
top y[umlaut_two]r=lc_trema_height;
y[umlaut_one]=y_move+.5[y[umlaut_two]l,y[umlaut_two]r];
dot([umlaut_one],[umlaut_two]); % left dot
@@ -356,16 +403,20 @@ pos[umlaut_three](udot_diam,0);
penpos[umlaut_four](y[umlaut_two]r-y[umlaut_two]l,90);
y[umlaut_three]=y[umlaut_four]=y[umlaut_one];
x[umlaut_three]=x[umlaut_four]=x[umlaut_one]
- +3.5u if monospace: /expansion_factor fi ;
+% +3.5u if monospace: /expansion_factor fi ;
+ +dot_dist if monospace: /expansion_factor fi ; % (CMBRIGHT)
dot([umlaut_three],[umlaut_four]); % right dot
enddef;
%
vardef uppercase_umlaut(expr x_move,y_move,umlaut_one,umlaut_two,
umlaut_three,umlaut_four) =
+numeric dot_dist; dot_dist:=round(3.5u); % (CMBRIGHT)
pickup tiny.nib;
pos[umlaut_one](udot_diam,0);
pos[umlaut_two](udot_diam,90);
-x[umlaut_one]=x[umlaut_two]=x_move+.5w-1.75u if monospace:/expansion_factor fi ;
+%x[umlaut_one]=x[umlaut_two]=x_move+.5w-1.75u if monospace:/expansion_factor fi ;
+x[umlaut_one]=x[umlaut_two]=x_move+.5w-0.5dot_dist %(CMBRIGHT)
+ if monospace:/expansion_factor fi ; %(CMBRIGHT)
top y[umlaut_two]r=vround(cap_height+dot_height#*hppp);
y[umlaut_one]=y_move+.5[y[umlaut_two]l,y[umlaut_two]r];
dot([umlaut_one],[umlaut_two]); % left dot
@@ -373,7 +424,8 @@ pos[umlaut_three](udot_diam,0);
penpos[umlaut_four](y[umlaut_two]r-y[umlaut_two]l,90);
y[umlaut_three]=y[umlaut_four]=y[umlaut_one];
x[umlaut_three]=x[umlaut_four]=x[umlaut_one]
- +3.5u if monospace: /expansion_factor fi ;
+% +3.5u if monospace: /expansion_factor fi ;
+ +dot_dist if monospace: /expansion_factor fi ; % (CMBRIGHT)
dot([umlaut_three],[umlaut_four]); % right dot
enddef;
%
@@ -1251,7 +1303,7 @@ vardef easy_ogonek (suffix penkind)(expr _one,_two,_three)=
bot y[_one]l=0 if known ogonek_move:+ogonek_move fi+eps;
numeric ogonek_move; % it's local
else:
- bot z[_one]l=(.5w,0+eps);
+ bot z[_one]l=(.5w,eps);
fi
pos[_one](max(ogonek_breadth,penkind+eps),0);
bot z[_three]'=(xpart z[_one]l-.5penkind,y_right-eps)+the_tip_pos;
@@ -1276,23 +1328,25 @@ vardef easy_ogonek (suffix penkind)(expr _one,_two,_three)=
angle(z[_one]-z[_three]) - if serifs: 90 else: 80 fi);
if known ogonek_pos:
if y[_one]'<y[_one]: path p; numeric t;
- if known join_angle:
+ if known join_angle:
prim_angle:=join_angle;
- else:
+ else:
p=z[_one]{dir the_pre_angle}...{(z[_three]-z[_one])}z[_two]
...{dir (the_post_angle)}z[_three];
t=ypart (((0,y[_one]')--(w,y[_one]')) intersectiontimes p);
- prim_angle:=angle(direction t of p);
- fi
+ prim_angle:=angle(direction t of p);
+ fi
filldraw stroke
- z[_one]'e{dir prim_angle}...{(z[_three]-z[_one])}z[_two]e
- ...{dir (the_post_angle)}z[_three]e; % ogonek stroke
+ z[_one]'e{dir prim_angle}...
+ {(z[_three]-z[_one])}z[_two]e...
+ {dir (the_post_angle)}z[_three]e; % ogonek stroke
else:
- prim_angle:=if known join_angle: join_angle else: the_pre_angle fi;
+ prim_angle:=if known join_angle: join_angle else: the_pre_angle fi;
filldraw stroke
- z[_one]'e{dir prim_angle}...z[_one]e{dir the_pre_angle}
- ...{(z[_three]-z[_one])}z[_two]e
- ...{dir (the_post_angle)}z[_three]e; % ogonek stroke
+ z[_one]'e{dir prim_angle}...
+ z[_one]e{dir the_pre_angle}...
+ {(z[_three]-z[_one])}z[_two]e...
+ {dir (the_post_angle)}z[_three]e; % ogonek stroke
fi
else:
filldraw stroke
@@ -1335,7 +1389,11 @@ def lc_hachek_accent(expr ref) =
x52=good.x ref;
x52-lft x51=rt x53-x52= hround(1.25accent_u + vair);
pos52(stem,0);
- bot y52=vround(max(2/3[h,hi.x_height],hi.x_height+o+hair));
+ if ebbase=1:%!!!
+ bot y52=vround(0.33[x_height,lc_hachek_height]);% (CMBRIGHT)
+ else:
+ bot y52=vround(max(2/3[h,hi.x_height],hi.x_height+o+hair));
+ fi
top y51 = top y53 = max(lc_hachek_height,top y52+eps); %!!!
z50 = whatever[z51r,z52r] = whatever[z52l,z53l];
y54l=y54r=y52;
diff --git a/Master/texmf-dist/fonts/source/lh/base/ldbroman.mf b/Master/texmf-dist/fonts/source/lh/base/ldbroman.mf
new file mode 100644
index 00000000000..f2637829f95
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/lh/base/ldbroman.mf
@@ -0,0 +1,184 @@
+%
+% ldbroman.mf
+%
+%% Cyrillic font container with T2 encoding beta-support
+%
+% This file is future part of lxfonts package
+% Version 3.5 // Patchlevel=0
+% (c) O.Lapko
+%
+% 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 all this package as well) and to save it under the same name.
+%
+% Content:
+%
+% The Computer Modern Roman family of fonts (by D. E. Knuth, 1979--1985)
+% Modified for the CM Bright fonts [1995/10/04 v0.997 WaS]
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+LHver_check(3,5); % like |version_check| in ec
+
+if ligs>1: font_coding_scheme:="TeX text/Cyr - "&enc_name;
+ if altcoding:
+ spanish_shriek=oct"074"; spanish_query=oct"076";
+ fi
+else: font_coding_scheme:=if ligs=0: "TeX typewriter text/Cyr - "&enc_name
+ else: "TeX text without f-ligs/Cyr - "&enc_name fi;
+ if altcoding:
+ spanish_shriek=oct"016"; spanish_query=oct"017";
+ fi
+fi
+
+input lxpseudo;
+
+
+mode_setup; font_setup;
+pseudo_setup; % |pseudo_setup| from ec
+define_pixels(sym_u);define_whole_vertical_pixels(sym_height);
+% lowres_fix(stem,cap_stem)1.12;
+
+if altcoding:
+ input romanu; % upper case (majuscules)
+ input bromanl; % lower case (minuscules)
+ input bgreeku; % upper case Greek letters
+ input romand; % numerals
+ input romanp; % ampersand, question marks, currency sign
+ input romspl; % lowercase specials (dotless \i, ligature \ae, etc.)
+ input romspu; % uppercase specials (\AE, \OE, \O)
+ input bpunct; % punctuation symbols common to roman and italic text
+ input baccent; % accents common to roman and italic text
+ if ligs>1: input bromlig; fi % letter ligatures
+ if ligs<=1: input romsub; fi % substitutes for ligatures
+fi
+
+if not vfcoding: % ligs for both altcoding and wncoding (dashes & quotes)
+ if ligs>0: input comlig; fi % ligatures common with italic text
+fi
+
+input lgcyru; % Cyrillic upper case (majuscules)
+input lgcyrl; % Cyrillic lower case (minuscules)
+input lgcyrsym; % << >> ,, No
+input lgcyracc; % Cyrillic accents
+if old_cyr:
+ input lgocyrac; % Cyrillic Old Slav accents & signs
+fi
+
+if wncoding: %Part used in WNCYR
+ input romand; % numerals
+ input lgpunct; % excerpts from punct.mf
+ input lgromp; % roman question mark
+ input lgrlig; % roman dotless i,j
+fi
+
+font_slant slant; font_x_height x_height#;
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+ if altcoding: input llmligtb; fi % input ligs for quotes
+ if wncoding : input lwnligs; fi % input ligs for Cyrillic letters in WNCYR
+else: font_normal_space 5.7u#+2letter_fit#;
+ font_normal_stretch 2.85u#; font_normal_shrink 1.9u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 1.9u#;
+ k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
+ %
+ % Latin ligs & kerns:
+ % There are just the same ligs and kerns as in CMBRIGHT
+ % but they are built in more visible form
+ TITLEfont:=false; SmallCapsfont:=false; ROMANfont:=true;
+ if altcoding:
+ ligtable "k":
+ if serifs: "v":
+ "a" kern -u#, fi\\
+ "w": "e" kern k#,
+ "a" kern k#,
+ "o" kern k#,
+ "c" kern k#;
+ ligtable "P": "A" kern kk#,
+ "y": "o" kern k#,
+ "e" kern k#,
+ "a" kern k#,
+ "." kern kk#,
+ "," kern kk#;
+ ligtable "F": "V": "W":
+ if serifs: "o" kern kk#,
+ "e" kern kk#,
+ "u" kern kk#,
+ "r" kern kk#,
+ "a" kern kk#,
+ "A" kern kkk#,
+ else: "o" kern k#,
+ "e" kern k#,
+ "u" kern k#,
+ "r" kern k#,
+ "a" kern k#,
+ "A" kern kk#, fi
+ "K": "X": "O" kern k#,
+ "C" kern k#,
+ "G" kern k#,
+ "Q" kern k#;
+ ligtable "T": "y" kern if serifs: k# else: kk# fi,
+ "Y": "e" kern kk#,
+ "o" kern kk#,
+ "r" kern kk#,
+ "a" kern kk#,
+ "A" kern kk#,
+ "u" kern kk#;
+ ligtable "O": "D":
+ "X" kern k#,
+ "W" kern k#,
+ "A" kern k#,
+ "V" kern k#,
+ "Y" kern k#;
+ if serifs:
+ ligtable "h": "m": "n":
+ "t" kern k#,
+ "u" kern k#,
+ "b" kern k#,
+ "y" kern k#,
+ "v" kern k#,
+ "w" kern k#;
+ ligtable "c":
+ "h" kern k#,
+ "k" kern k#;
+ fi
+ ligtable "o": "b": "p":
+ if known bx_kerning:
+ "e" kern -k#,
+ "o" kern -k#,
+ "d" kern -k#,
+ "c" kern -k#,
+ "q" kern -k#,
+ fi
+ "x" kern k#,
+ "a": if serifs:
+ "v" kern k#,
+ "j" kern u#,
+ else: "r" kern k#, fi
+ "t": "y" kern k#,
+ "u": "w" kern k#;
+ ligtable "A": if serifs: "R": fi\\
+ "t" kern k#,
+ "C" kern k#,
+ "O" kern k#,
+ "G" kern k#,
+ "U" kern k#,
+ "Q" kern k#,
+ "L": "T" kern kk#,
+ "Y" kern kk#,
+ "V" kern kkk#,
+ "W" kern kkk#;
+ ligtable "g": "j" kern -k#; % logjam
+ ligtable "I": "I" kern -k#; % Richard III
+ % there are ligature/kern programs for |"f"| in the {\tt romlig} file
+ % and for |"-"|, |"`"|, and |"'"| in the {\tt comlig} file
+ input llvligtb; % input ligs & kerns for quotes
+ fi
+ scantokens("input "&(substring(fonteq-2,fonteq) of param_base)&"liker"); % Cyrillic ligs & kerns
+fi
+
+bye.
+%end of file
diff --git a/Master/texmf-dist/fonts/source/lh/base/ldcsc.mf b/Master/texmf-dist/fonts/source/lh/base/ldcsc.mf
index b454ff0cfab..cdb899bcb61 100644
--- a/Master/texmf-dist/fonts/source/lh/base/ldcsc.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/ldcsc.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:
%
@@ -19,7 +19,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
font_coding_scheme:=if ligs=0: "TeX typewriter text/Cyr - "&enc_name
else: "TeX text without f-ligs/Cyr - "&enc_name fi;
@@ -166,7 +166,7 @@ is_small_cap:=true;
input lgcyru; % Cyrillic majuscules (in lowercase positions)
if wncoding: %Part used in WNCYR
- input lgcspl; % numerals
+ input lgcspl; % FF ligs
fi
if not monospace:
diff --git a/Master/texmf-dist/fonts/source/lh/base/ldroman.mf b/Master/texmf-dist/fonts/source/lh/base/ldroman.mf
index 32fbe85173a..d405be1a95f 100644
--- a/Master/texmf-dist/fonts/source/lh/base/ldroman.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/ldroman.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=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:
%
@@ -28,7 +28,7 @@
% There also used special letters UKR_I LAT_I etc in Cyrillic glyphs
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
if ligs>1: font_coding_scheme:="TeX text/Cyr - "&enc_name;
if altcoding:
diff --git a/Master/texmf-dist/fonts/source/lh/base/ldtexset.mf b/Master/texmf-dist/fonts/source/lh/base/ldtexset.mf
new file mode 100644
index 00000000000..3377120e69f
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/lh/base/ldtexset.mf
@@ -0,0 +1,152 @@
+%
+% ldtexset.mf
+%
+%% Cyrillic font container with T2 encoding beta-support
+%
+% This file is future part of lxfonts package
+% Version 3.5 // Patchlevel=0
+% (c) O.Lapko
+%
+% 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 all this package as well) and to save it under the same name.
+%
+% Content:
+%
+% Special version of Computer Modern for \TeX's extended ASCII character set
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+LHver_check(3,5); % like |version_check| in ec
+
+font_coding_scheme:="TeX extended ASCII/Cyr - "&enc_name;
+
+input lxpseudo;
+
+mode_setup; font_setup; mono_charic#:=0;
+pseudo_setup; % |pseudo_setup| from ec
+
+if altcoding:
+ input tsetsl; % special symbols to be slanted
+fi
+slant:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+
+if altcoding:
+ input romanu; % upper case (majuscules)
+ input romanl; % lower case (minuscules)
+ input romand; % numerals
+ input romanp; % ampersand, question marks, currency sign
+ input punct; % punctuation symbols common to roman and italic text
+ input tset; % remaining special symbols of extended ASCII
+fi
+
+input lgcyru; % Cyrillic upper case (majuscules)
+input lgcyrl; % Cyrillic lower case (minuscules)
+input lgcyrsym; % << >> ,, No
+input lgcyracc; % Cyrillic accents
+if old_cyr:
+ input lgocyrac; % Cyrillic Old Slav accents & signs
+fi
+
+font_x_height x_height#;
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+else: font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+ k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
+ %
+ % Latin ligs & kerns:
+ % There are just the same ligs and kerns as in CM
+ % but they are built in more visible form
+ TITLEfont:=false; SmallCapsfont:=false; ROMANfont:=true;
+ if altcoding:
+ ligtable "k":
+ if serifs: "v":
+ "a" kern -u#, fi\\
+ "w": "e" kern k#,
+ "a" kern k#,
+ "o" kern k#,
+ "c" kern k#;
+ ligtable "P": "A" kern kk#,
+ "y": "o" kern k#,
+ "e" kern k#,
+ "a" kern k#,
+ "." kern kk#,
+ "," kern kk#;
+ ligtable "F": "V": "W":
+ if serifs: "o" kern kk#,
+ "e" kern kk#,
+ "u" kern kk#,
+ "r" kern kk#,
+ "a" kern kk#,
+ "A" kern kkk#,
+ else: "o" kern k#,
+ "e" kern k#,
+ "u" kern k#,
+ "r" kern k#,
+ "a" kern k#,
+ "A" kern kk#, fi
+ "K": "X": "O" kern k#,
+ "C" kern k#,
+ "G" kern k#,
+ "Q" kern k#;
+ ligtable "T": "y" kern if serifs: k# else: kk# fi,
+ "Y": "e" kern kk#,
+ "o" kern kk#,
+ "r" kern kk#,
+ "a" kern kk#,
+ "A" kern kk#,
+ "u" kern kk#;
+ ligtable "O": "D":
+ "X" kern k#,
+ "W" kern k#,
+ "A" kern k#,
+ "V" kern k#,
+ "Y" kern k#;
+ if serifs:
+ ligtable "h": "m": "n":
+ "t" kern k#,
+ "u" kern k#,
+ "b" kern k#,
+ "y" kern k#,
+ "v" kern k#,
+ "w" kern k#;
+ ligtable "c":
+ "h" kern k#,
+ "k" kern k#;
+ fi
+ ligtable "o": "b": "p":
+ "e" kern -k#,
+ "o" kern -k#,
+ "x" kern k#,
+ "d" kern -k#,
+ "c" kern -k#,
+ "q" kern -k#,
+ "a": if serifs:
+ "v" kern k#,
+ "j" kern u#,
+ else: "r" kern k#, fi
+ "t": "y" kern k#,
+ "u": "w" kern k#;
+ ligtable "A": if serifs: "R": fi\\
+ "t" kern k#,
+ "C" kern k#,
+ "O" kern k#,
+ "G" kern k#,
+ "U" kern k#,
+ "Q" kern k#,
+ "L": "T" kern kk#,
+ "Y" kern kk#,
+ "V" kern kkk#,
+ "W" kern kkk#;
+ ligtable "g": "j" kern -k#; % logjam
+ ligtable "I": "I" kern -k#; % Richard III
+ fi
+ scantokens("input "&(substring(fonteq-2,fonteq) of param_base)&"liker"); % Cyrillic ligs & kerns
+fi;
+bye.
diff --git a/Master/texmf-dist/fonts/source/lh/base/ldtextit.mf b/Master/texmf-dist/fonts/source/lh/base/ldtextit.mf
index 3d6be4d1494..dbbd90dfdef 100644
--- a/Master/texmf-dist/fonts/source/lh/base/ldtextit.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/ldtextit.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=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:
%
@@ -19,7 +19,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
input lxpseudo;
@@ -29,15 +29,15 @@ pseudo_setup; % |pseudo_setup| from ec
if ligs>1: font_coding_scheme:="TeX text/Cyr - "&enc_name;
- spanish_shriek=oct"074"; spanish_query=oct"076";
- if altcoding:
+ if altcoding:
+ spanish_shriek=oct"074"; spanish_query=oct"076";
input italig; % letter ligatures
- fi
+ fi
else: font_coding_scheme:=if ligs=0: "TeX typewriter text/Cyr - "&enc_name
else: "TeX text without f-ligs/Cyr - "&enc_name fi;
- if altcoding:
+ if altcoding:
spanish_shriek=oct"016"; spanish_query=oct"017";
- fi
+ fi
fi
if altcoding:
diff --git a/Master/texmf-dist/fonts/source/lh/base/ldtitle.mf b/Master/texmf-dist/fonts/source/lh/base/ldtitle.mf
index 9da66a33785..1bdedd0b9e0 100644
--- a/Master/texmf-dist/fonts/source/lh/base/ldtitle.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/ldtitle.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=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,7 +22,7 @@
% This makes a short font (caps and digits only)
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
font_coding_scheme:="Caps and digits/Cyr - "&enc_name;
diff --git a/Master/texmf-dist/fonts/source/lh/base/lebroman.mf b/Master/texmf-dist/fonts/source/lh/base/lebroman.mf
new file mode 100644
index 00000000000..6b2074145d8
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/lh/base/lebroman.mf
@@ -0,0 +1,82 @@
+%
+% lebroman.mf
+%
+%% Cyrillic font container with T2 encoding beta-support
+%
+% This file is future part of lxfonts package
+% Version 3.5 // Patchlevel=0
+% (c) O.Lapko
+%
+% 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 all this package as well) and to save it under the same name.
+%
+% Content:
+%
+% Driver file, called by parameter files with roman style fonts
+% - modified EXROMAN.MF in European Computer Modern fonts (ec fonts)
+% CMBRIGHT modification
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+LHver_check(3,5); % like |version_check| in ec
+
+
+input lxpseudo;
+
+mode_setup; font_setup;
+pseudo_setup; % |pseudo_setup| from ec
+
+% upper part exr(u/l)(lett/west/east) changed to cyrillic glyphs
+%vvv
+if roman_ec:
+ input exrulett;
+ input ebrllett; % lower case (minuscules) % (CMBR)
+fi
+%<<<
+input lgcyru; % input Cyrillic Uppercase shapes
+input lgcyrl; % input Cyrillic Lowercase shapes
+
+input lgcyrsym; % floating symbols in Cyrillic
+input lgengsym; % latin symbols
+input lgromp; % roman & ?
+input lgrdigit; % roman digits
+input lgrlig; % roman dotless i j (and ff-ligatures)
+
+input lgcyracc; % accents
+if old_cyr:
+ input lgocyrac; % Cyrillic Old Slav accents & signs
+fi
+
+%
+% Fontparameter
+%
+font_coding_scheme:="TeX Cyrillic Font Encoding - "&enc_name;
+boundarychar:=oct"027";
+font_slant slant;
+font_x_height x_height#;
+font_cap_height cap_height#;
+font_asc_height asc_height#;
+font_acc_cap_height (cap_height#+acc_height#);
+font_desc_depth desc_depth#;
+font_max_height (max(asc_height#,body_height#,
+ cap_height#+acc_height#));
+font_max_depth (max(desc_depth#,paren_depth#,the_ogonek_depth#));
+% font_digit_width % set inside the digits file
+% font_cap_stem % set after the programme of the capital I
+font_baselineskip max(1.25*designsize,body_height#+paren_depth#);% (CMBR)
+ font_normal_space 5.7u#+2letter_fit#; % (CMBR)
+ font_normal_stretch 2.85u#; font_normal_shrink 1.9u#; %(CMBR)
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 1.9u#; % (CMBR)
+% input ebrligtb; % do the ligature programs %(CMBR)
+ TITLEfont:=false; SmallCapsfont:=false; ROMANfont:=true;
+ input llvligtb; % do the ligature programs, not for monospaced fonts
+ if roman_ec: input llbligtb; fi
+ k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
+ scantokens("input "&(substring(fonteq-2,fonteq) of param_base)&"liker"); % Cyrillic ligs & kerns
+bye.
+
+bye.
+%end of file
diff --git a/Master/texmf-dist/fonts/source/lh/base/lecsc.mf b/Master/texmf-dist/fonts/source/lh/base/lecsc.mf
index 12cb88e33d1..38128171e67 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lecsc.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lecsc.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=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:
%
@@ -19,7 +19,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
input lxpseudo;
@@ -97,18 +97,18 @@ endgroup;
%
font_coding_scheme:="TeX Cyrillic Font Encoding - "&enc_name;
boundarychar:=oct"027";
-font_slant slant;
+font_slant slant;
font_x_height x_height#;
font_cap_height cap_height#;
font_asc_height asc_height#;
-font_acc_cap_height (max(cap_height#+acc_height#,uc_acc_height#));
+font_acc_cap_height (cap_height#+acc_height#);
font_desc_depth desc_depth#;
font_max_height (max(asc_height#,body_height#,
- cap_height#+acc_height#,uc_acc_height#));
+ cap_height#+acc_height#));
font_max_depth (max(desc_depth#,paren_depth#,the_ogonek_depth#));
% font_digit_width % set inside the digits file
% font_cap_stem % set after the programme of the capital I
-font_baselineskip (1.2*designsize);
+font_baselineskip max(1.2*designsize,body_height#+paren_depth#);
if monospace: font_normal_space 9u#; % no stretching or shrinking
font_quad 18u#;
diff --git a/Master/texmf-dist/fonts/source/lh/base/leroman.mf b/Master/texmf-dist/fonts/source/lh/base/leroman.mf
index 03b582c717d..269663711a5 100644
--- a/Master/texmf-dist/fonts/source/lh/base/leroman.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/leroman.mf
@@ -1,16 +1,16 @@
%
-% lecsc.mf
+% leroman.mf
%
%% 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=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:
%
@@ -19,7 +19,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
input lxpseudo;
@@ -53,18 +53,18 @@ fi
%
font_coding_scheme:="TeX Cyrillic Font Encoding - "&enc_name;
boundarychar:=oct"027";
-font_slant slant;
+font_slant slant;
font_x_height x_height#;
font_cap_height cap_height#;
font_asc_height asc_height#;
-font_acc_cap_height (max(cap_height#+acc_height#,uc_acc_height#));
+font_acc_cap_height (cap_height#+acc_height#);
font_desc_depth desc_depth#;
font_max_height (max(asc_height#,body_height#,
- cap_height#+acc_height#,uc_acc_height#));
+ cap_height#+acc_height#));
font_max_depth (max(desc_depth#,paren_depth#,the_ogonek_depth#));
% font_digit_width % set inside the digits file
% font_cap_stem % set after the programme of the capital I
-font_baselineskip (1.2*designsize);
+font_baselineskip max(1.2*designsize,body_height#+paren_depth#);
if monospace: font_normal_space 9u#; % no stretching or shrinking
font_quad 18u#;
diff --git a/Master/texmf-dist/fonts/source/lh/base/letextit.mf b/Master/texmf-dist/fonts/source/lh/base/letextit.mf
index 19778443a90..7706524e18d 100644
--- a/Master/texmf-dist/fonts/source/lh/base/letextit.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/letextit.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=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:
%
@@ -19,7 +19,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
input lxpseudo;
@@ -61,18 +61,18 @@ fi
%
font_coding_scheme:="TeX Cyrillic Font Encoding - "&enc_name;
boundarychar:=oct"027";
-font_slant slant;
+font_slant slant;
font_x_height x_height#;
font_cap_height cap_height#;
font_asc_height asc_height#;
-font_acc_cap_height (max(cap_height#+acc_height#,uc_acc_height#));
+font_acc_cap_height (cap_height#+acc_height#);
font_desc_depth desc_depth#;
font_max_height (max(asc_height#,body_height#,
- cap_height#+acc_height#,uc_acc_height#));
+ cap_height#+acc_height#));
font_max_depth (max(desc_depth#,paren_depth#,the_ogonek_depth#));
% font_digit_width % set inside the digits file
% font_cap_stem % set after the programme of the capital I
-font_baselineskip (1.2*designsize);
+font_baselineskip max(1.2*designsize,body_height#+paren_depth#);
if monospace: font_normal_space 9u#; % no stretching or shrinking
font_quad 18u#;
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgcspl.mf b/Master/texmf-dist/fonts/source/lh/base/lgcspl.mf
index 10d16248635..71a402c5fe4 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgcspl.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgcspl.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:
%
@@ -20,16 +20,10 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% I,J
-% if roman_ec: FI,FL,FFI,FFL fi -- for T2* stuff only (lgcsplff.mf)
+% if roman_ec: FI,FL,FFI,FFL fi -- for T2* stuff only
%
-LHver_check(3,4); % like |version_check| in ec
-
-if roman_ec:
-
-input lgcsplff.mf
-
-fi % roman_ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Small Caps letter I";
cyrchar(i_dotl,max(6u#,4u#+cap_stem#),cap_height#,0);
@@ -63,5 +57,172 @@ else: filldraw stroke z1e--z2e; % stem
filldraw stroke z3e{down}....term.e(4,5,left,1,4); fi % arc and terminal
math_fit(0,.5ic#-.5u#); penlabels(1,2,3,4,5); endchar;
+if not roman_ec: endinput \\; fi
+
+lhchar "Small Caps letter FF";
+beginchar(oct"033",2(11.5u#-width_adj#),cap_height#,0);
+italcorr cap_height#*slant-.25u#;
+normal_adjust_fit(cap_serif_fit#,0);
+h:=vround(h-stem_corr);
+w':=11.5u-width_adj;
+pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
+lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
+filldraw stroke z1e--z2e; % stem
+pickup crisp.nib; pos3(slab,90); pos4(hair,0);
+top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps;
+arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
+pos5(cap_bar,-90); pos6(hair,0);
+top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1;
+pos0(cap_bar,90); pos7(hair,0);
+z0=z5; x6=x7; y6-y5l=y0l-y7;
+if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps;
+ rt x9r=hround(w'-.5u);
+else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi
+arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
+if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
+ dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif
+% the second F
+currentpicture:=currentpicture + currentpicture shifted (w',0);
+math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar;
+
+lhchar "Small Caps letter FI";
+beginchar(oct"034",11.5u#-width_adj#+max(6u#,4u#+cap_stem#),cap_height#,0);
+italcorr cap_height#*slant-.25u#;
+normal_adjust_fit(cap_serif_fit#,0);
+h:=vround(h-stem_corr);
+w':=11.5u-width_adj;
+pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
+lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
+filldraw stroke z1e--z2e; % stem
+pickup crisp.nib; pos3(slab,90); pos4(hair,0);
+top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps;
+arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
+pos5(cap_bar,-90); pos6(hair,0);
+top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1;
+pos0(cap_bar,90); pos7(hair,0);
+z0=z5; x6=x7; y6-y5l=y0l-y7;
+if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps;
+ rt x9r=hround(w'-.5u);
+else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi
+arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
+if serifs:
+ nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
+ dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif
+% the I
+xshift:=w';
+w':=w-xshift;
+pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0);
+lft x11l=lft x12l=hround(xshift+.5w'-.5cap_stem); top y11=h; bot y12=0;
+filldraw stroke z11e--z12e; % stem
+if serifs or slitex or monospace:
+ dish_serif(11,12,aa,1/3,1.05cap_jut,bb,1/3,1.05cap_jut); % upper serif
+ dish_serif(12,11,gg,1/3,1.05cap_jut,dd,1/3,1.05cap_jut); fi % lower serif
+math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar;
+
+lhchar "Small Caps letter FL";
+beginchar(oct"035",(11.5u#-width_adj#)+11u#-width_adj#,cap_height#,0);
+italcorr cap_height#*slant-.25u#;
+normal_adjust_fit(cap_serif_fit#,0);
+h:=vround(h-stem_corr);
+w':=11.5u-width_adj;
+pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
+lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
+filldraw stroke z1e--z2e; % stem
+pickup crisp.nib; pos3(slab,90); pos4(hair,0);
+top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps;
+arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
+pos5(cap_bar,-90); pos6(hair,0);
+top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1;
+pos0(cap_bar,90); pos7(hair,0);
+z0=z5; x6=x7; y6-y5l=y0l-y7;
+if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps;
+ rt x9r=hround(w'-.5u);
+else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi
+arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
+if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
+ dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif
+% the L
+xshift:=w';
+pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0);
+lft x11l=lft x12l=hround xshift+max(2u,3u-.5cap_stem); top y11=h; bot y12=0;
+filldraw stroke z11e--z12e; % stem
+pickup crisp.nib; pos13(slab,-90); pos14(hair,0);
+bot y13r=0; x13=x12; y14=y13l+7/6beak+eps; rt x14r=hround(w-.75u);
+arm(13,14,eee,1.2beak_darkness,beak_jut); % lower arm and beak
+if serifs: dish_serif(11,12,aaa,1/3,cap_jut,bbb,1/3,1.25cap_jut); % upper serif
+ nodish_serif(12,11,ccc,1/3,cap_jut,ddd,1/3,.5cap_jut); fi % lower serif
+math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar;
+
+lhchar "Small Caps letter FFI";
+beginchar(oct"036",2(11.5u#-width_adj#)+max(6u#,4u#+cap_stem#),cap_height#,0);
+italcorr cap_height#*slant-.25u#;
+normal_adjust_fit(cap_serif_fit#,0);
+h:=vround(h-stem_corr);
+w':=11.5u-width_adj;
+pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
+lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
+filldraw stroke z1e--z2e; % stem
+pickup crisp.nib; pos3(slab,90); pos4(hair,0);
+top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps;
+arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
+pos5(cap_bar,-90); pos6(hair,0);
+top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1;
+pos0(cap_bar,90); pos7(hair,0);
+z0=z5; x6=x7; y6-y5l=y0l-y7;
+if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps;
+ rt x9r=hround(w'-.5u);
+else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi
+arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
+if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
+ dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif
+% the second F
+currentpicture:=currentpicture + currentpicture shifted (w',0);
+% the I
+xshift:=2w';
+w':=w-xshift;
+pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0);
+lft x11l=lft x12l=hround(xshift+.5w'-.5cap_stem); top y11=h; bot y12=0;
+filldraw stroke z11e--z12e; % stem
+if serifs or slitex or monospace:
+ dish_serif(11,12,aa,1/3,1.05cap_jut,bb,1/3,1.05cap_jut); % upper serif
+ dish_serif(12,11,gg,1/3,1.05cap_jut,dd,1/3,1.05cap_jut); fi % lower serif
+math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar;
+
+lhchar "Small Caps letter FFL";
+beginchar(oct"037",2(11.5u#-width_adj#)+11u#-width_adj#,cap_height#,0);
+italcorr cap_height#*slant-.25u#;
+normal_adjust_fit(cap_serif_fit#,0);
+h:=vround(h-stem_corr);
+w':=11.5u-width_adj;
+pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
+lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
+filldraw stroke z1e--z2e; % stem
+pickup crisp.nib; pos3(slab,90); pos4(hair,0);
+top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps;
+arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
+pos5(cap_bar,-90); pos6(hair,0);
+top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1;
+pos0(cap_bar,90); pos7(hair,0);
+z0=z5; x6=x7; y6-y5l=y0l-y7;
+if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps;
+ rt x9r=hround(w'-.5u);
+else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi
+arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
+if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
+ dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif
+% the I
+currentpicture:=currentpicture + currentpicture shifted (w',0);
+% the L
+xshift:=2w';
+pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0);
+lft x11l=lft x12l=hround xshift+max(2u,3u-.5cap_stem); top y11=h; bot y12=0;
+filldraw stroke z11e--z12e; % stem
+pickup crisp.nib; pos13(slab,-90); pos14(hair,0);
+bot y13r=0; x13=x12; y14=y13l+7/6beak+eps; rt x14r=hround(w-.75u);
+arm(13,14,eee,1.2beak_darkness,beak_jut); % lower arm and beak
+if serifs: dish_serif(11,12,aaa,1/3,cap_jut,bbb,1/3,1.25cap_jut); % upper serif
+ nodish_serif(12,11,ccc,1/3,cap_jut,ddd,1/3,.5cap_jut); fi % lower serif
+math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar;
+
endinput;
%end of file
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgcsplff.mf b/Master/texmf-dist/fonts/source/lh/base/lgcsplff.mf
deleted file mode 100644
index 53147ac77de..00000000000
--- a/Master/texmf-dist/fonts/source/lh/base/lgcsplff.mf
+++ /dev/null
@@ -1,192 +0,0 @@
-%
-% lgcsplff.mf
-%
-%% Cyrillic font container with T2 encoding beta-support
-%
-% This file is future part of lxfonts package
-% Version 3.4 // Patchlevel=0
-% (c) O.Lapko
-%
-% This package belongs to the public domain 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.
-%
-% Content:
-%
-% Metafont program for the characters in positions of ligatures
-% for the "caps and small caps" fonts
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% if roman_ec: FI,FL,FFI,FFL fi -- for T2* stuff only
-%
-
-LHver_check(3,4); % like |version_check| in ec
-
-lhchar "Small Caps letter FF";
-beginchar(oct"033",2(11.5u#-width_adj#),cap_height#,0);
-italcorr cap_height#*slant-.25u#;
-normal_adjust_fit(cap_serif_fit#,0);
-h:=vround(h-stem_corr);
-w':=11.5u-width_adj;
-pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
-lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; % stem
-pickup crisp.nib; pos3(slab,90); pos4(hair,0);
-top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps;
-arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
-pos5(cap_bar,-90); pos6(hair,0);
-top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1;
-pos0(cap_bar,90); pos7(hair,0);
-z0=z5; x6=x7; y6-y5l=y0l-y7;
-if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps;
- rt x9r=hround(w'-.5u);
-else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi
-arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
-if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
- dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif
-% the second F
-currentpicture:=currentpicture + currentpicture shifted (w',0);
-math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar;
-
-lhchar "Small Caps letter FI";
-beginchar(oct"034",11.5u#-width_adj#+max(6u#,4u#+cap_stem#),cap_height#,0);
-italcorr cap_height#*slant-.25u#;
-normal_adjust_fit(cap_serif_fit#,0);
-h:=vround(h-stem_corr);
-w':=11.5u-width_adj;
-pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
-lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; % stem
-pickup crisp.nib; pos3(slab,90); pos4(hair,0);
-top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps;
-arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
-pos5(cap_bar,-90); pos6(hair,0);
-top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1;
-pos0(cap_bar,90); pos7(hair,0);
-z0=z5; x6=x7; y6-y5l=y0l-y7;
-if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps;
- rt x9r=hround(w'-.5u);
-else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi
-arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
-if serifs:
- nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
- dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif
-% the I
-xshift:=w';
-w':=w-xshift;
-pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0);
-lft x11l=lft x12l=hround(xshift+.5w'-.5cap_stem); top y11=h; bot y12=0;
-filldraw stroke z11e--z12e; % stem
-if serifs or slitex or monospace:
- dish_serif(11,12,aa,1/3,1.05cap_jut,bb,1/3,1.05cap_jut); % upper serif
- dish_serif(12,11,gg,1/3,1.05cap_jut,dd,1/3,1.05cap_jut); fi % lower serif
-math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar;
-
-lhchar "Small Caps letter FL";
-beginchar(oct"035",(11.5u#-width_adj#)+11u#-width_adj#,cap_height#,0);
-italcorr cap_height#*slant-.25u#;
-normal_adjust_fit(cap_serif_fit#,0);
-h:=vround(h-stem_corr);
-w':=11.5u-width_adj;
-pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
-lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; % stem
-pickup crisp.nib; pos3(slab,90); pos4(hair,0);
-top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps;
-arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
-pos5(cap_bar,-90); pos6(hair,0);
-top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1;
-pos0(cap_bar,90); pos7(hair,0);
-z0=z5; x6=x7; y6-y5l=y0l-y7;
-if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps;
- rt x9r=hround(w'-.5u);
-else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi
-arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
-if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
- dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif
-% the L
-xshift:=w';
-pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0);
-lft x11l=lft x12l=hround xshift+max(2u,3u-.5cap_stem); top y11=h; bot y12=0;
-filldraw stroke z11e--z12e; % stem
-pickup crisp.nib; pos13(slab,-90); pos14(hair,0);
-bot y13r=0; x13=x12; y14=y13l+7/6beak+eps; rt x14r=hround(w-.75u);
-arm(13,14,eee,1.2beak_darkness,beak_jut); % lower arm and beak
-if serifs: dish_serif(11,12,aaa,1/3,cap_jut,bbb,1/3,1.25cap_jut); % upper serif
- nodish_serif(12,11,ccc,1/3,cap_jut,ddd,1/3,.5cap_jut); fi % lower serif
-math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar;
-
-lhchar "Small Caps letter FFI";
-beginchar(oct"036",2(11.5u#-width_adj#)+max(6u#,4u#+cap_stem#),cap_height#,0);
-italcorr cap_height#*slant-.25u#;
-normal_adjust_fit(cap_serif_fit#,0);
-h:=vround(h-stem_corr);
-w':=11.5u-width_adj;
-pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
-lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; % stem
-pickup crisp.nib; pos3(slab,90); pos4(hair,0);
-top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps;
-arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
-pos5(cap_bar,-90); pos6(hair,0);
-top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1;
-pos0(cap_bar,90); pos7(hair,0);
-z0=z5; x6=x7; y6-y5l=y0l-y7;
-if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps;
- rt x9r=hround(w'-.5u);
-else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi
-arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
-if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
- dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif
-% the second F
-currentpicture:=currentpicture + currentpicture shifted (w',0);
-% the I
-xshift:=2w';
-w':=w-xshift;
-pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0);
-lft x11l=lft x12l=hround(xshift+.5w'-.5cap_stem); top y11=h; bot y12=0;
-filldraw stroke z11e--z12e; % stem
-if serifs or slitex or monospace:
- dish_serif(11,12,aa,1/3,1.05cap_jut,bb,1/3,1.05cap_jut); % upper serif
- dish_serif(12,11,gg,1/3,1.05cap_jut,dd,1/3,1.05cap_jut); fi % lower serif
-math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar;
-
-lhchar "Small Caps letter FFL";
-beginchar(oct"037",2(11.5u#-width_adj#)+11u#-width_adj#,cap_height#,0);
-italcorr cap_height#*slant-.25u#;
-normal_adjust_fit(cap_serif_fit#,0);
-h:=vround(h-stem_corr);
-w':=11.5u-width_adj;
-pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
-lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; % stem
-pickup crisp.nib; pos3(slab,90); pos4(hair,0);
-top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps;
-arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
-pos5(cap_bar,-90); pos6(hair,0);
-top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1;
-pos0(cap_bar,90); pos7(hair,0);
-z0=z5; x6=x7; y6-y5l=y0l-y7;
-if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps;
- rt x9r=hround(w'-.5u);
-else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi
-arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
-if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
- dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif
-% the I
-currentpicture:=currentpicture + currentpicture shifted (w',0);
-% the L
-xshift:=2w';
-pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0);
-lft x11l=lft x12l=hround xshift+max(2u,3u-.5cap_stem); top y11=h; bot y12=0;
-filldraw stroke z11e--z12e; % stem
-pickup crisp.nib; pos13(slab,-90); pos14(hair,0);
-bot y13r=0; x13=x12; y14=y13l+7/6beak+eps; rt x14r=hround(w-.75u);
-arm(13,14,eee,1.2beak_darkness,beak_jut); % lower arm and beak
-if serifs: dish_serif(11,12,aaa,1/3,cap_jut,bbb,1/3,1.25cap_jut); % upper serif
- nodish_serif(12,11,ccc,1/3,cap_jut,ddd,1/3,.5cap_jut); fi % lower serif
-math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar;
-
-endinput;
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf b/Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf
index 637f7883d79..fae5347a9cf 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgcyracc.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:
%
@@ -56,7 +56,7 @@
% Acomma - comma above letter
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
%accents
%
@@ -253,6 +253,7 @@ filldraw stroke z[_one]e{up}...
%
penlabels(1,2,3); endchar;
+if not more_letters: endinput \\; fi
%
% T2-outsiders
%
@@ -462,11 +463,12 @@ adjust_fit(0,0);
y[_four]+.5bulb_diam=-d+y_move+height;
pos[_four](bulb_diam,90);
pos[_one](vair,90); pos[_two](vair,0); pos[_three](vair,-45);
- z[_one]r=z[_four]r; rt x[_two]r=hround(x[_four]+.5bulb_diam
+ z[_one]r=z[_four]r;
+ rt x[_two]r=hround max(rt x[_one]+eps,x[_four]+.5bulb_diam
+if monospace:.28u / expansion_factor else:.25u fi)+2eps;
x[_three]=x[_four]-.5u if monospace: /expansion_factor fi;
- y[_two]=1/3[y[_one],y[_three]];
- bot y[_three]r=vround(y[_four]-(height-.5bulb_diam));
+ y[_two]=1/3[y[_one],y[_three]]+eps;
+ bot y[_three]r=vround min(bot y[_four]-.5,y[_four]-(height-.5bulb_diam))-eps;
y_:=ypart((z[_one]{right}...z[_two]{down}...z[_three])
intersectiontimes (z[_four]l{right}..{left}z[_four]r));
if y_<0: y_:=1; fi
@@ -477,4 +479,4 @@ adjust_fit(0,0);
endchar;
endinput;
-%end of file
+%end of file \ No newline at end of file
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgcyri.mf b/Master/texmf-dist/fonts/source/lh/base/lgcyri.mf
index a1cdaf67b19..3952056a53f 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgcyri.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgcyri.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=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:
%
@@ -18,7 +18,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
altaccent:=true; % for cyrillic breve
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgcyrl.mf b/Master/texmf-dist/fonts/source/lh/base/lgcyrl.mf
index fd9e69538cd..1110715840e 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgcyrl.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgcyrl.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=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:
%
@@ -18,7 +18,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
input lgrusl; % Russian letters
input lgt2coml; % Letters common for couple of encodings
@@ -38,6 +38,7 @@ if not old_cyr or unic:
fi
if other_cyr:
+ if concrete: input lgnoncl; fi % Cyrillic concrete letters
input lgunicl; % Unicode letters not included in T2
input lgcmodl; % modified letters
input lgcaccl; % accended letters
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgcyrsp.mf b/Master/texmf-dist/fonts/source/lh/base/lgcyrsp.mf
index 734cf04319a..aed89604c1f 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgcyrsp.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgcyrsp.mf
@@ -1,16 +1,16 @@
%
-% lgt2lou.mf
+% lgcyrsp.mf
%
%% 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=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:
%
@@ -24,8 +24,9 @@
% SP_NJE - Specisl title Nje
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
+iff not concrete:%
lhchar "Title Cyrillic letter LJE (Soft L)";
cyrchar(LJE_title,13.5u#,cap_height#,0); % DL_width:N_width
if is_small_cap: getcharcode(lje); fi;
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgcyrsym.mf b/Master/texmf-dist/fonts/source/lh/base/lgcyrsym.mf
index c832b975264..3f3e37f8fb9 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgcyrsym.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgcyrsym.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=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:
%
@@ -40,13 +40,14 @@
% baseqq "bd "bd German Opening quotes (looks like ,,) (ec: "12)
% flqq "be "be Cyrillic Opening Quotes (looks like <<) (ec: "13)
% frqq "bf "bf Cyrillic Closing Quotes (looks like >>) (ec: "14)
+% grqq - - German Closing quotes (looks like ``)
%
% T1/T2-outsiders:
%
% pound ("bf) Sterling sign
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Cyrillic sign palochka (as latin I)";
cyrchar(palochka,max(6u#,4u#+cap_stem#),cap_height#,0);
@@ -225,7 +226,7 @@ cyrchar(No,14.5u#+width_adj#,cap_height#,0);
italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
adjust_fit(if monospace: 0,0 else: cap_serif_fit#
if serifs: +.5(flare#+(cap_stem#-stem#))-.25u#,cap_serif_fit# else:,0 fi fi);
-full_w:=w; w:=if serifs: 10u else: 11.5u fi;
+full_w:=w; w:=if serifs: 9.5u+.5flare-.5fudged.hair else: 11.5u fi;
numeric thin_stem; thin_stem=hround(fudged.hair+stem_corr);
pickup tiny.nib; pos1(thin_stem,0); pos2(thin_stem,0);
pos3(thin_stem,0); pos4(thin_stem,0);
@@ -233,19 +234,21 @@ pickup tiny.nib; top y1=h;
if serifs: top y3=.79h; bot y2=.21h; else: top y3=h; bot y2=0; fi
bot y4=0;
x1=x2; x3=x4; x1l=w-x3r;
-rt x3r=hround min(w-2u,w-3u+.5fudged.cap_stem);
if serifs: numeric bulb_diam; bulb_diam=flare+(cap_stem-stem);
+ rt x3r=hround min(w-max(2u,bulb_diam-2thin_stem-letter_fit),w-3u+.5fudged.cap_stem)+eps;
pos21(thin_stem,-90); pos22(cap_hair,-180); pos23(bulb_diam,-180);
pos31(thin_stem,-90); z31'=z31;
pos31'(thin_stem,90); pos32(cap_hair,0); pos33(bulb_diam,0);
- y23=vround max(.05fig_height+.5bulb_diam,.1fig_height-.5flare)-o;%
- lft x23r=l+letter_fit+.15u; x33=w-x23; y33=h-y22;
+ y23=vround max(.05fig_height+.5bulb_diam,.1fig_height-.5bulb_diam)-o;%
+ lft x23r=min(l+letter_fit+.15u,rt x2r-bulb_diam-1)-eps; x33=w-x23; y33=h-y22;
x21=max(lft x23r+.5bulb_diam,.45[lft x23r,rt x2r]);
x31=w-x21; bot y21r=-oo; top y31l=h+oo;
bulb(21,22,23); bulb(31',32,33);
- filldraw stroke z1e--z2e & pulled_arc.e(2,21); % left stem
- filldraw stroke z4e--z3e & pulled_arc.e(3,31); % right stem
-else: filldraw stroke z1e--z2e; filldraw stroke z4e--z3e; fi
+ filldraw stroke z1e--z2e &{{interim superness:=more_super; super_arc.e(2,21)}}; % left stem
+ filldraw stroke z4e--z3e &{{interim superness:=more_super; super_arc.e(3,31)}}; % right stem
+else:
+ rt x3r=hround min(w-2u,w-3u+.5fudged.cap_stem);
+ filldraw stroke z1e--z2e; filldraw stroke z4e--z3e; fi
if hefty: penpos5(fudged.cap_stem,0); penpos6(fudged.cap_stem,0);
x5l=x1; x6r=x4; y5=h; y6=0;
numeric upper_notch,lower_notch;
@@ -266,18 +269,19 @@ if serifs: if hefty: serif(1,2,a,1/3,-cap_jut); % upper left serif
fi
w:=full_w;
penpos71(vair,90); penpos73(vair',-90);
-if serifs: x72r=x33+hround max(.25u,u-.4curve); x74r=hround(w-.5u);
+if serifs: x72r=x33+hround max(.1u,u-.75flare); x74r=hround(w-.5u);
else: x72r=x3+1.25u+hround max(0,.75u-.4curve); x74r=hround(w-u); fi
penpos72(min(1/3(x74r-x72r),.8curve),180);
penpos74(min(1/3(x74r-x72r),.8curve),0);
-x71=x73=.5[x72r,x74r]; y71r=h-3u+vround 1.5oo; y73r=x_height-3u-oo;
-y72=y74=.5[h,x_height]-3u-vair_corr; y72l:=y74l:=.52[h,x_height]-3u;
+x71=x73=.5[x72r,x74r]; y71r=h-max(3u,flare+(cap_stem-stem)+1.5oo)+vround 1.5oo;
+y73r=x_height-3u-oo;
+y72=y74=.5[y71r,y73r]-vair_corr; y72l:=y74l:=.52[h,x_height]-3u;
penstroke pulled_arc.e(71,72) & pulled_arc.e(72,73)
& pulled_arc.e(73,74) & pulled_arc.e(74,71) & cycle; % bowl
pickup fine.nib; pos81(bar,90); pos82(bar,90);
lft x81=x72r-.25fine; rt x82=x74r+.25fine; y81=y82=.8x_height-3u;
filldraw stroke z81e--z82e;
-penlabels(1,1',2,3,4,4',5,6,7); endchar;
+penlabels(1,1',2,3,4,4',5,6,7, 21,22,23, 31',32,33); endchar;
lhchar "Cyrillic Currency sign"; % from ec ... from rsym (wasy)
cyrchar(currency,1.13 min(asc_height#,9/7x_height#)+2u#,
@@ -356,8 +360,8 @@ numeric the_shift,shift_corr;
the_shift=hround(max(3u,1.7stem)); shift_corr=the_shift-3u;
pos1(max(fine.breadth,
if serifs: qvair else: 7/8[vair,fudged.hair]-3stem_corr fi),0);
-pos2(max(fine.breadth,if serifs:
- if monospace: qvair else: stem fi else:7/8[vair,fudged.hair] fi),0);
+pos2(max(fine.breadth,if serifs:
+ if hefty: qvair else: stem fi else:7/8[vair,fudged.hair] fi),0);
pos3(max(fine.breadth,
if serifs: qvair else: 7/8[vair,fudged.hair]-3stem_corr fi),0);
rt x1r=rt x3r=
@@ -372,9 +376,12 @@ if hefty:
filldraw stroke z1e--z2e--z3e; % outer <
filldraw stroke z1'e--z2'e--z3'e; % inner <
else:
- pos1'(qvair,0);
- pos2'(7/8 [hair,stem],0);
- pos3'(qvair,0);
+ pos1'(max(fine.breadth,
+ if serifs: qvair else: 7/8[vair,fudged.hair]-3stem_corr fi),0);
+ pos2'(max(fine.breadth,if serifs:
+ 2/3[vair,fudged.stem] else: 7/8[vair,fudged.hair] fi),0);
+ pos3'(max(fine.breadth,
+ if serifs: qvair else: 7/8[vair,fudged.hair]-3stem_corr fi),0);
z2'=z2+the_shift*right;
y1'-y2'=y2'-y3'=.8(y1-y2);
z1'=z2'+whatever*(z1r-z2r); z3'=z2'+whatever*(z2r-z3r);
@@ -401,8 +408,8 @@ numeric the_shift,shift_corr;
the_shift=hround(max(3u,1.7stem)); shift_corr=the_shift-3u;
pos1(max(fine.breadth,
if serifs: qvair else: 7/8[vair,fudged.hair]-3stem_corr fi),0);
-pos2(max(fine.breadth,if serifs:
- if monospace: qvair else: stem fi else:7/8[vair,fudged.hair] fi),0);
+pos2(max(fine.breadth,if serifs:
+ if hefty: qvair else: stem fi else:7/8[vair,fudged.hair] fi),0);
pos3(max(fine.breadth,
if serifs: qvair else: 7/8[vair,fudged.hair]-3stem_corr fi),0);
lft x1l=lft x3l=w-
@@ -417,9 +424,12 @@ if hefty:
filldraw stroke z1e--z2e--z3e; % outer <
filldraw stroke z1'e--z2'e--z3'e; % inner <
else:
- pos1'(qvair,0);
- pos2'(7/8 [hair,stem],0);
- pos3'(qvair,0);
+ pos1'(max(fine.breadth,
+ if serifs: qvair else: 7/8[vair,fudged.hair]-3stem_corr fi),0);
+ pos2'(max(fine.breadth,if serifs:
+ 2/3[vair,fudged.stem] else: 7/8[vair,fudged.hair] fi),0);
+ pos3'(max(fine.breadth,
+ if serifs: qvair else: 7/8[vair,fudged.hair]-3stem_corr fi),0);
z2'=z2+the_shift*left;
y1'-y2'=y2'-y3'=.8(y1-y2);
z1'=z2'+whatever*(z1l-z2l); z3'=z2'+whatever*(z2l-z3l);
@@ -455,5 +465,16 @@ pos10(bar,90); pos11(bar,90); x10=3u; x11=w-4.5u;
top y10r=top y11r=vround(.5h+.5bar); filldraw stroke z10e--z11e; % bar
penlabels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+iff (altcoding and (ligs <> 0)): % for CM
+lhchar "Cyrillic `German close quotes' (like English opening quotes)";
+cyrchar(grqq,7u#+max(2u#,dot_size#),asc_height#,0);
+italcorr asc_height#*slant+dot_size#-4.1u#;
+adjust_fit(0,0);
+x1-.5dot_size=hround .6u; y2+.5dot_size=h;
+x2-x1=hround(1.5u+max(2u,dot_size)); y2=y1;
+ammoc(1,a,dot_size,.25u,comma_depth); % left dot and tail
+ammoc(2,b,dot_size,.25u,comma_depth); % right dot and tail
+penlabels(1,2); endchar;
+
endinput;
%end of file
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgcyru.mf b/Master/texmf-dist/fonts/source/lh/base/lgcyru.mf
index 0437b340dd0..db98f47c14b 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgcyru.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgcyru.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=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:
%
@@ -18,7 +18,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
if is_small_cap: % for accents
%%% fine higher
@@ -52,6 +52,7 @@ if not old_cyr or unic:
fi
if other_cyr:
+ if concrete: input lgnoncu; fi % Cyrillic concrete letters
input lgunicu; % Unicode letters not included in T2
input lgcmodu; % modified letters
input lgcaccu; % accended letters
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgengsym.mf b/Master/texmf-dist/fonts/source/lh/base/lgengsym.mf
index 01397b58735..6f225541cef 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgengsym.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgengsym.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=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:
%
@@ -67,7 +67,7 @@
% "7f oct"177" - Hyphenchar
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Opening quotes";
beginchar(oct"020",3u#+max(2u#,pdot_diam#),asc_height#,0);
@@ -99,6 +99,7 @@ top y1r=top y2r=vround(.61803h+.5vair); lft x1=-eps; rt x2=w+eps;
filldraw stroke z1e--z2e; % bar
penlabels(1,2); endchar;
+
iff monospace:
lhchar "Hyphen";
beginchar(oct"025",6u#,x_height#,0);
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgidigit.mf b/Master/texmf-dist/fonts/source/lh/base/lgidigit.mf
index deb2b5d3efa..aecddeea507 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgidigit.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgidigit.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=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:
%
@@ -21,7 +21,7 @@
% italic numerals
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
% All digits have the same width
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgilig.mf b/Master/texmf-dist/fonts/source/lh/base/lgilig.mf
index 98bbe913b79..3b0072af4ba 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgilig.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgilig.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=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 (lgiligff.mf)
+% ff-ligs
%
-LHver_check(3,4); % like |version_check| in ec
-
-if (roman_ec=true) and (old_cyr=false):
-
-input lgiligff.mf
-
-fi %roman_ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Italic Cyrillic letter dotless i";
cyrchar(i_dotl,5u#,x_height#,0);
@@ -55,5 +49,222 @@ filldraw stroke z2e---z3e...{left}z4e; % stem and arc
bulb(4,5,6); % bulb
penlabels(0,1,2,3,4,5,6); endchar;
+if (roman_ec=true) and (old_cyr=false): %relax
+else: endinput \\; fi
+
+numeric itc; % modified italic correction on `f' and `ff'
+itc=(asc_height#-x_height#)*slant+.75u#;
+
+lhchar "Italic ligature ff";
+beginchar(oct"033",
+%if monospace: 12u# else:
+(5u#+max(1.5u#,stem#)+max(3.5u#,2flare#))+2letter_fit#, % fi,
+ asc_height#,desc_depth#);
+italcorr asc_height#*slant+.75u#;
+normal_adjust_fit(0,0); pickup fine.nib;
+z98-z88=z99-z89=z14-z4=z15-z5=(if monospace: 4.3u else: 4.8u fi +2letter_fit,0);
+.5[x88,x99]=.5w-.1u; x89-x88=u; y98=h; y99=-d;
+numeric theta; theta=angle(z88-z89);
+pos0(flare,0); pos1(hair,0); pos2(vair,90);
+pos3(.5[hair,stem],180); pos4(stem,theta+90);
+pos5(stem,theta-90); pos6(.5[hair,stem],0);
+pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
+if monospace: rt x1r=hround(.5w+.75u);
+else:
+ rt x1r=hround(.5w+1.25u);
+fi
+%if monospace: lft x8r=hround-.35u;
+%else:
+lft x8r=hround-.35u;
+%fi
+x2=.5[x1,x4]; x7=.6[x8,x5];
+y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
+y4=.25[x_height,h]; y5=.5[-d,y4];
+z4=whatever[z88,z89]; z5=whatever[z88,z89];
+x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
+bulb(2,1,0); bulb(7,8,9); % left bulbs
+filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper middle arc
+filldraw z4r--z5l--z5r--z4l--cycle; % left stem
+filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower left arc
+pos10(flare,0); pos11(hair,0); pos12(vair,90);
+pos13(.5[hair,stem],180); pos14(stem,theta+90);
+pos15(stem,theta-90); pos16(.5[hair,stem],0);
+pos17(vair,-90); pos18(hair,-180); pos19(flare,-180);
+rt x11r=hround(w+.25u);
+if monospace: lft x18r=hround(.5w-.75u);
+else: lft x18r=hround(.5w-1.25u); fi
+x12=.6[x11,x14]; x17=.5[x18,x15];
+x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99];
+y0=y10; y2=y12; y3=y13; y6=y16; y7=y17; y9=y19;
+bulb(12,11,10); bulb(17,18,19); % right bulbs
+filldraw stroke z12e{left}...z13e...{z99-z98}z14e; % upper right arc
+filldraw z14r--z15l--z15r--z14l--cycle; % right stem
+filldraw stroke z15e{z99-z98}...z16e...{left}z17e; % lower middle arc
+pickup crisp.nib; pos20(bar,90); pos21(bar,90);
+top y20r=top y21r=x_height;
+lft x20=lft x4r-.5stem-u; rt x21=rt x14l+.5stem+1.5u;
+filldraw stroke z20e--z21e; % crossbar
+penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
+ 20,21,88,89,98,99); endchar;
+
+lhchar "Italic ligature fi";
+beginchar(oct"034",if monospace: 4.5u# else: 6.5u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
+ +2letter_fit#,asc_height#,desc_depth#);
+italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
+normal_adjust_fit(0,0); pickup fine.nib;
+.5[x88,x89]=.5(w-if monospace: 2u else: 4u fi -2letter_fit); x89-x88=u; y88=h; y89=-d;
+numeric theta; theta=angle(z88-z89);
+pos0(flare,0); pos1(hair,0); pos2(vair,90);
+pos3(.5[hair,stem],180); pos4(stem,theta+90);
+pos5(stem,theta-90); pos6(.5[hair,stem],0);
+pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
+pos11(stem,0); rt x11r=hround(w-2.5u+.5stem);
+x12=x11; x14=w; hook_out(12,13,14); % closing hook
+x1r=x11r; lft x8r=hround-.35u; x2=.5[x1,x4]; x7=.6[x8,x5];
+y9-.5flare=vround-.85d; bot y7r=-d-oo;
+y0+.5flare=vround(.85[x_height,h]); top y2r=h+oo;
+y4=.25[x_height,h]; y5=.5[-d,y4];
+z4=whatever[z88,z89]; z5=whatever[z88,z89];
+x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
+bulb(2,1,0); bulb(7,8,9); % bulbs
+filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper arc
+filldraw z4r--z5l--z5r--z4l--cycle; % left stem
+filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower arc
+top y11=x_height; filldraw stroke z11e--z12e; % right stem
+pickup crisp.nib; pos20(bar,90); pos21(bar,90);
+top y20r=top y21r=x_height;
+lft x20=lft x4r-.5stem-u; x21=x11;
+filldraw stroke z20e--z21e; % crossbar
+penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,20,21,88,89); endchar;
+
+lhchar "Italic ligature fl";
+beginchar(oct"035",if monospace: 5u# else: 7u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
+ +2letter_fit#,asc_height#,desc_depth#);
+italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
+normal_adjust_fit(0,0); pickup fine.nib;
+.5[x88,x89]=.5(w-if monospace: 3.5u else: 4.5u fi -2letter_fit);
+x89-x88=u; y88=h; y89=-d;
+numeric theta; theta=angle(z88-z89);
+pos0(flare,0); pos1(hair,0); pos2(vair,90);
+pos3(.5[hair,stem],180); pos4(stem,theta+90);
+pos5(stem,theta-90); pos6(.5[hair,stem],0);
+pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
+pos11(stem,0); rt x11r=hround(w-2.5u+.5stem); rt x1r=lft x11l;
+x12=x11; x14=w; hook_out(12,13,14); % closing hook
+if monospace: lft x8r=hround-.55u;
+else: lft x8r=hround-.35u; fi
+x2=.5[x1,x4]; x7=.6[x8,x5];
+y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
+y4=.25[x_height,h]; y5=.5[-d,y4];
+z4=whatever[z88,z89]; z5=whatever[z88,z89];
+x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
+bulb(2,1,0); bulb(7,8,9); % bulbs
+filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper arc
+filldraw z4r--z5l--z5r--z4l--cycle; % left stem
+filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower arc
+top y11=h; filldraw stroke z11e--z12e; % right stem
+pickup crisp.nib; pos20(bar,90); pos21(bar,90);
+top y20r=top y21r=x_height;
+lft x20=lft x4r-.5stem-u; x21=x11;
+filldraw stroke z20e--z21e; % crossbar
+penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,20,21,88,89); endchar;
+
+lhchar "Italic ligature ffi";
+beginchar(oct"036",
+if monospace: 7.75u# else: 11.75u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
+ +4letter_fit#,asc_height#,desc_depth#);
+italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
+normal_adjust_fit(0,0); pickup fine.nib;
+z98-z88=z99-z89=z14-z4=z15-z5=(if monospace: 3u else: 5u fi +2letter_fit,0);
+numeric theta,mid_f;
+mid_f=.5[x88,x99]=.5(w-if monospace: 2.25u else: 4.25u fi -2letter_fit);
+x89-x88=u;
+y98=h; y99=-d; theta=angle(z88-z89);
+pos21(stem,0); rt x21r=hround(w-2.5u+.5stem);
+x22=x21; x24=w; hook_out(22,23,24); % closing hook
+pos0(flare,0); pos1(hair,0); pos2(vair,90);
+pos3(.5[hair,stem],180); pos4(stem,theta+90);
+pos5(stem,theta-90); pos6(.5[hair,stem],0);
+pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
+if monospace: rt x1r=hround(mid_f+u);
+else: rt x1r=hround(mid_f+1.75u); fi
+if monospace: lft x8r=hround -.65u;
+else: lft x8r=hround-.35u; fi
+x2=.5[x1,x4]; x7=.6[x8,x5];
+y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
+y4=.25[x_height,h]; y5=.5[-d,y4];
+z4=whatever[z88,z89]; z5=whatever[z88,z89];
+x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
+bulb(2,1,0); bulb(7,8,9); % left bulbs
+filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper middle arc
+filldraw z4r--z5l--z5r--z4l--cycle; % left stem
+filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower left arc
+pos10(flare,0); pos11(hair,0); pos12(vair,90);
+pos13(.5[hair,stem],180); pos14(stem,theta+90);
+pos15(stem,theta-90); pos16(.5[hair,stem],0);
+pos17(vair,-90); pos18(hair,-180); pos19(flare,-180);
+x11r=x21r; lft x18r=hround(mid_f-1.25u); x12=.5[x11,x14]; x17=.5[x18,x15];
+x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99];
+y10+.5flare=vround .85[x_height,h];
+y2=y12; y3=y13; y6=y16; y7=y17; y9=y19;
+bulb(12,11,10); bulb(17,18,19); % right bulbs
+filldraw stroke z12e{left}...z13e...{z99-z98}z14e; % upper right arc
+filldraw z14r--z15l--z15r--z14l--cycle; % middle stem
+filldraw stroke z15e{z99-z98}...z16e...{left}z17e; % lower middle arc
+top y21=x_height; filldraw stroke z21e--z22e; % right stem
+pickup crisp.nib; pos30(bar,90); pos31(bar,90);
+top y30r=top y31r=x_height;
+lft x30=lft x4r-.5stem-u; x31=x21;
+filldraw stroke z30e--z31e; % crossbar
+penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,30,31,88,89,98,99); endchar;
+
+lhchar "Italic ligature ffl";
+beginchar(oct"037",
+ if monospace: 8u# else: 12u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
+ +4letter_fit#,asc_height#,desc_depth#);
+italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
+normal_adjust_fit(0,0); pickup fine.nib;
+z98-z88=z99-z89=z14-z4=z15-z5=(if monospace: 3u else: 5u fi+2letter_fit,0);
+numeric theta,mid_f;
+mid_f=.5[x88,x99]=.5(w-if monospace: 2u else: 4.5u fi-2letter_fit); x89-x88=u;
+y98=h; y99=-d; theta=angle(z88-z89);
+pos21(stem,0); rt x21r=hround(w-2.5u+.5stem);
+x22=x21; x24=w; hook_out(22,23,24); % closing hook
+pos0(flare,0); pos1(hair,0); pos2(vair,90);
+pos3(.5[hair,stem],180); pos4(stem,theta+90);
+pos5(stem,theta-90); pos6(.5[hair,stem],0);
+pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
+if monospace: rt x1r=hround(mid_f+u);
+else: rt x1r=hround(mid_f+1.25u); fi
+lft x8r=hround-.35u;
+x2=.5[x1,x4]; x7=.6[x8,x5];
+y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
+y4=.25[x_height,h]; y5=.5[-d,y4];
+z4=whatever[z88,z89]; z5=whatever[z88,z89];
+x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
+bulb(2,1,0); bulb(7,8,9); % left bulbs
+filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper middle arc
+filldraw z4r--z5l--z5r--z4l--cycle; % left stem
+filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower left arc
+pos10(flare,0); pos11(hair,0); pos12(vair,90);
+pos13(.5[hair,stem],180); pos14(stem,theta+90);
+pos15(stem,theta-90); pos16(.5[hair,stem],0);
+pos17(vair,-90); pos18(hair,-180); pos19(flare,-180); rt x11r=lft x21l;
+lft x18r=hround(mid_f-1.25u); x12=.5[x11,x14]; x17=.5[x18,x15];
+x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99];
+y0=y10; y2=y12; y3=y13; y6=y16; y7=y17; y9=y19;
+bulb(12,11,10); bulb(17,18,19); % right bulbs
+filldraw stroke z12e{left}...z13e...{z99-z98}z14e; % upper right arc
+filldraw z14r--z15l--z15r--z14l--cycle; % middle stem
+filldraw stroke z15e{z99-z98}...z16e...{left}z17e; % lower middle arc
+top y21=h; filldraw stroke z21e--z22e; % right stem
+pickup crisp.nib; pos30(bar,90); pos31(bar,90);
+top y30r=top y31r=x_height;
+lft x30=lft x4r-.5stem-u; x31=x21;
+filldraw stroke z30e--z31e; % crossbar
+penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,30,31,88,89,98,99); endchar;
+
endinput;
%end of file
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgiligff.mf b/Master/texmf-dist/fonts/source/lh/base/lgiligff.mf
deleted file mode 100644
index 648b9fbb69f..00000000000
--- a/Master/texmf-dist/fonts/source/lh/base/lgiligff.mf
+++ /dev/null
@@ -1,242 +0,0 @@
-%
-% lgilig.mf
-%
-%% Cyrillic font container with T2 encoding beta-support
-%
-% This file is future part of lxfonts package
-% Version 3.4 // Patchlevel=0
-% (c) O.Lapko
-%
-% This package belongs to the public domain 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.
-%
-% Content:
-%
-% roman dotless i,j
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Special letters
-%
-% ff-ligs
-%
-
-LHver_check(3,4); % like |version_check| in ec
-
-numeric itc; % modified italic correction on `f' and `ff'
-itc=(asc_height#-x_height#)*slant+.75u#;
-
-lhchar "Italic ligature ff";
-beginchar(oct"033",
-%if monospace: 12u# else:
-(5u#+max(1.5u#,stem#)+max(3.5u#,2flare#))+2letter_fit#, % fi,
- asc_height#,desc_depth#);
-italcorr asc_height#*slant+.75u#;
-normal_adjust_fit(0,0); pickup fine.nib;
-z98-z88=z99-z89=z14-z4=z15-z5=(if monospace: 4.3u else: 4.8u fi +2letter_fit,0);
-.5[x88,x99]=.5w-.1u; x89-x88=u; y98=h; y99=-d;
-numeric theta; theta=angle(z88-z89);
-pos0(flare,0); pos1(hair,0); pos2(vair,90);
-pos3(.5[hair,stem],180); pos4(stem,theta+90);
-pos5(stem,theta-90); pos6(.5[hair,stem],0);
-pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
-if monospace: rt x1r=hround(.5w+.75u);
-else:
- rt x1r=hround(.5w+1.25u);
-fi
-%if monospace: lft x8r=hround-.35u;
-%else:
-lft x8r=hround-.35u;
-%fi
-x2=.5[x1,x4]; x7=.6[x8,x5];
-y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
-y4=.25[x_height,h]; y5=.5[-d,y4];
-z4=whatever[z88,z89]; z5=whatever[z88,z89];
-x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
-bulb(2,1,0); bulb(7,8,9); % left bulbs
-filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper middle arc
-filldraw z4r--z5l--z5r--z4l--cycle; % left stem
-filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower left arc
-pos10(flare,0); pos11(hair,0); pos12(vair,90);
-pos13(.5[hair,stem],180); pos14(stem,theta+90);
-pos15(stem,theta-90); pos16(.5[hair,stem],0);
-pos17(vair,-90); pos18(hair,-180); pos19(flare,-180);
-rt x11r=hround(w+.25u);
-if monospace: lft x18r=hround(.5w-.75u);
-else: lft x18r=hround(.5w-1.25u); fi
-x12=.6[x11,x14]; x17=.5[x18,x15];
-x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99];
-y0=y10; y2=y12; y3=y13; y6=y16; y7=y17; y9=y19;
-bulb(12,11,10); bulb(17,18,19); % right bulbs
-filldraw stroke z12e{left}...z13e...{z99-z98}z14e; % upper right arc
-filldraw z14r--z15l--z15r--z14l--cycle; % right stem
-filldraw stroke z15e{z99-z98}...z16e...{left}z17e; % lower middle arc
-pickup crisp.nib; pos20(bar,90); pos21(bar,90);
-top y20r=top y21r=x_height;
-lft x20=lft x4r-.5stem-u; rt x21=rt x14l+.5stem+1.5u;
-filldraw stroke z20e--z21e; % crossbar
-penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
- 20,21,88,89,98,99); endchar;
-
-lhchar "Italic ligature fi";
-beginchar(oct"034",if monospace: 4.5u# else: 6.5u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
- +2letter_fit#,asc_height#,desc_depth#);
-italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
-normal_adjust_fit(0,0); pickup fine.nib;
-.5[x88,x89]=.5(w-if monospace: 2u else: 4u fi -2letter_fit); x89-x88=u; y88=h; y89=-d;
-numeric theta; theta=angle(z88-z89);
-pos0(flare,0); pos1(hair,0); pos2(vair,90);
-pos3(.5[hair,stem],180); pos4(stem,theta+90);
-pos5(stem,theta-90); pos6(.5[hair,stem],0);
-pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
-pos11(stem,0); rt x11r=hround(w-2.5u+.5stem);
-x12=x11; x14=w; hook_out(12,13,14); % closing hook
-x1r=x11r; lft x8r=hround-.35u; x2=.5[x1,x4]; x7=.6[x8,x5];
-y9-.5flare=vround-.85d; bot y7r=-d-oo;
-y0+.5flare=vround(.85[x_height,h]); top y2r=h+oo;
-y4=.25[x_height,h]; y5=.5[-d,y4];
-z4=whatever[z88,z89]; z5=whatever[z88,z89];
-x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
-bulb(2,1,0); bulb(7,8,9); % bulbs
-filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper arc
-filldraw z4r--z5l--z5r--z4l--cycle; % left stem
-filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower arc
-top y11=x_height; filldraw stroke z11e--z12e; % right stem
-pickup crisp.nib; pos20(bar,90); pos21(bar,90);
-top y20r=top y21r=x_height;
-lft x20=lft x4r-.5stem-u; x21=x11;
-filldraw stroke z20e--z21e; % crossbar
-penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,20,21,88,89); endchar;
-
-lhchar "Italic ligature fl";
-beginchar(oct"035",if monospace: 5u# else: 7u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
- +2letter_fit#,asc_height#,desc_depth#);
-italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
-normal_adjust_fit(0,0); pickup fine.nib;
-.5[x88,x89]=.5(w-if monospace: 3.5u else: 4.5u fi -2letter_fit);
-x89-x88=u; y88=h; y89=-d;
-numeric theta; theta=angle(z88-z89);
-pos0(flare,0); pos1(hair,0); pos2(vair,90);
-pos3(.5[hair,stem],180); pos4(stem,theta+90);
-pos5(stem,theta-90); pos6(.5[hair,stem],0);
-pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
-pos11(stem,0); rt x11r=hround(w-2.5u+.5stem); rt x1r=lft x11l;
-x12=x11; x14=w; hook_out(12,13,14); % closing hook
-if monospace: lft x8r=hround-.55u;
-else: lft x8r=hround-.35u; fi
-x2=.5[x1,x4]; x7=.6[x8,x5];
-y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
-y4=.25[x_height,h]; y5=.5[-d,y4];
-z4=whatever[z88,z89]; z5=whatever[z88,z89];
-x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
-bulb(2,1,0); bulb(7,8,9); % bulbs
-filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper arc
-filldraw z4r--z5l--z5r--z4l--cycle; % left stem
-filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower arc
-top y11=h; filldraw stroke z11e--z12e; % right stem
-pickup crisp.nib; pos20(bar,90); pos21(bar,90);
-top y20r=top y21r=x_height;
-lft x20=lft x4r-.5stem-u; x21=x11;
-filldraw stroke z20e--z21e; % crossbar
-penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,20,21,88,89); endchar;
-
-lhchar "Italic ligature ffi";
-beginchar(oct"036",
-if monospace: 7.75u# else: 11.75u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
- +4letter_fit#,asc_height#,desc_depth#);
-italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
-normal_adjust_fit(0,0); pickup fine.nib;
-z98-z88=z99-z89=z14-z4=z15-z5=(if monospace: 3u else: 5u fi +2letter_fit,0);
-numeric theta,mid_f;
-mid_f=.5[x88,x99]=.5(w-if monospace: 2.25u else: 4.25u fi -2letter_fit);
-x89-x88=u;
-y98=h; y99=-d; theta=angle(z88-z89);
-pos21(stem,0); rt x21r=hround(w-2.5u+.5stem);
-x22=x21; x24=w; hook_out(22,23,24); % closing hook
-pos0(flare,0); pos1(hair,0); pos2(vair,90);
-pos3(.5[hair,stem],180); pos4(stem,theta+90);
-pos5(stem,theta-90); pos6(.5[hair,stem],0);
-pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
-if monospace: rt x1r=hround(mid_f+u);
-else: rt x1r=hround(mid_f+1.75u); fi
-if monospace: lft x8r=hround -.65u;
-else: lft x8r=hround-.35u; fi
-x2=.5[x1,x4]; x7=.6[x8,x5];
-y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
-y4=.25[x_height,h]; y5=.5[-d,y4];
-z4=whatever[z88,z89]; z5=whatever[z88,z89];
-x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
-bulb(2,1,0); bulb(7,8,9); % left bulbs
-filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper middle arc
-filldraw z4r--z5l--z5r--z4l--cycle; % left stem
-filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower left arc
-pos10(flare,0); pos11(hair,0); pos12(vair,90);
-pos13(.5[hair,stem],180); pos14(stem,theta+90);
-pos15(stem,theta-90); pos16(.5[hair,stem],0);
-pos17(vair,-90); pos18(hair,-180); pos19(flare,-180);
-x11r=x21r; lft x18r=hround(mid_f-1.25u); x12=.5[x11,x14]; x17=.5[x18,x15];
-x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99];
-y10+.5flare=vround .85[x_height,h];
-y2=y12; y3=y13; y6=y16; y7=y17; y9=y19;
-bulb(12,11,10); bulb(17,18,19); % right bulbs
-filldraw stroke z12e{left}...z13e...{z99-z98}z14e; % upper right arc
-filldraw z14r--z15l--z15r--z14l--cycle; % middle stem
-filldraw stroke z15e{z99-z98}...z16e...{left}z17e; % lower middle arc
-top y21=x_height; filldraw stroke z21e--z22e; % right stem
-pickup crisp.nib; pos30(bar,90); pos31(bar,90);
-top y30r=top y31r=x_height;
-lft x30=lft x4r-.5stem-u; x31=x21;
-filldraw stroke z30e--z31e; % crossbar
-penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
- 20,21,22,23,24,30,31,88,89,98,99); endchar;
-
-lhchar "Italic ligature ffl";
-beginchar(oct"037",
- if monospace: 8u# else: 12u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
- +4letter_fit#,asc_height#,desc_depth#);
-italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
-normal_adjust_fit(0,0); pickup fine.nib;
-z98-z88=z99-z89=z14-z4=z15-z5=(if monospace: 3u else: 5u fi+2letter_fit,0);
-numeric theta,mid_f;
-mid_f=.5[x88,x99]=.5(w-if monospace: 2u else: 4.5u fi-2letter_fit); x89-x88=u;
-y98=h; y99=-d; theta=angle(z88-z89);
-pos21(stem,0); rt x21r=hround(w-2.5u+.5stem);
-x22=x21; x24=w; hook_out(22,23,24); % closing hook
-pos0(flare,0); pos1(hair,0); pos2(vair,90);
-pos3(.5[hair,stem],180); pos4(stem,theta+90);
-pos5(stem,theta-90); pos6(.5[hair,stem],0);
-pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
-if monospace: rt x1r=hround(mid_f+u);
-else: rt x1r=hround(mid_f+1.25u); fi
-lft x8r=hround-.35u;
-x2=.5[x1,x4]; x7=.6[x8,x5];
-y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
-y4=.25[x_height,h]; y5=.5[-d,y4];
-z4=whatever[z88,z89]; z5=whatever[z88,z89];
-x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
-bulb(2,1,0); bulb(7,8,9); % left bulbs
-filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper middle arc
-filldraw z4r--z5l--z5r--z4l--cycle; % left stem
-filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower left arc
-pos10(flare,0); pos11(hair,0); pos12(vair,90);
-pos13(.5[hair,stem],180); pos14(stem,theta+90);
-pos15(stem,theta-90); pos16(.5[hair,stem],0);
-pos17(vair,-90); pos18(hair,-180); pos19(flare,-180); rt x11r=lft x21l;
-lft x18r=hround(mid_f-1.25u); x12=.5[x11,x14]; x17=.5[x18,x15];
-x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99];
-y0=y10; y2=y12; y3=y13; y6=y16; y7=y17; y9=y19;
-bulb(12,11,10); bulb(17,18,19); % right bulbs
-filldraw stroke z12e{left}...z13e...{z99-z98}z14e; % upper right arc
-filldraw z14r--z15l--z15r--z14l--cycle; % middle stem
-filldraw stroke z15e{z99-z98}...z16e...{left}z17e; % lower middle arc
-top y21=h; filldraw stroke z21e--z22e; % right stem
-pickup crisp.nib; pos30(bar,90); pos31(bar,90);
-top y30r=top y31r=x_height;
-lft x30=lft x4r-.5stem-u; x31=x21;
-filldraw stroke z30e--z31e; % crossbar
-penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
- 20,21,22,23,24,30,31,88,89,98,99); endchar;
-
-endinput;
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgitalp.mf b/Master/texmf-dist/fonts/source/lh/base/lgitalp.mf
index 4300d00c534..66f9b9289c2 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgitalp.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgitalp.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=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:
%
@@ -25,7 +25,7 @@
% * Spanish open question mark moved out
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
iff not wncoding:%
lhchar "Italic ampersand";
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;
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgpunct.mf b/Master/texmf-dist/fonts/source/lh/base/lgpunct.mf
index c87fde4ebde..eafc803ca90 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgpunct.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgpunct.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=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:
%
@@ -36,7 +36,7 @@
% "60 `
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Exclamation point";
beginchar("!",5u#+width_adj#,asc_height#,0);
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgrdigit.mf b/Master/texmf-dist/fonts/source/lh/base/lgrdigit.mf
index 23b5a724aa5..405477e49da 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgrdigit.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgrdigit.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=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:
%
@@ -21,7 +21,7 @@
% numerals 0 .. 9
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
% All digits have the same height, width, depth, and italic correction.
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
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgrligff.mf b/Master/texmf-dist/fonts/source/lh/base/lgrligff.mf
deleted file mode 100644
index 0b3256a4054..00000000000
--- a/Master/texmf-dist/fonts/source/lh/base/lgrligff.mf
+++ /dev/null
@@ -1,184 +0,0 @@
-%
-% lgrlig.mf
-%
-%% Cyrillic font container with T2 encoding beta-support
-%
-% This file is future part of lxfonts package
-% Version 3.4 // Patchlevel=0
-% (c) O.Lapko
-%
-% This package belongs to the public domain 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.
-%
-% Content:
-%
-% roman dotless i,j
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Special letters
-%
-% ff-ligs
-%
-
-LHver_check(3,4); % like |version_check| in ec
-
-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;
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgromp.mf b/Master/texmf-dist/fonts/source/lh/base/lgromp.mf
index c1475195d1f..4458ff6166f 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgromp.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgromp.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=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:
%
@@ -25,7 +25,7 @@
% * Spanish open question mark moved out
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
iff not wncoding:%
lhchar "Ampersand";
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgrusi.mf b/Master/texmf-dist/fonts/source/lh/base/lgrusi.mf
index f08f332bfae..85f12850d60 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgrusi.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgrusi.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=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:
%
@@ -23,7 +23,7 @@
% and n_width (russian letter n) at the end of `cyrchar...' line)
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Italic Russian letter a";
cyrchar(a,9u#,x_height#,0);
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgrusl.mf b/Master/texmf-dist/fonts/source/lh/base/lgrusl.mf
index e03c302404f..83f1a9688d3 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgrusl.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgrusl.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:
%
@@ -23,7 +23,7 @@
% and n_width (russian letter n) at the end of `cyrchar...' line)
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
if kapitel: input lgcrusl; fi
@@ -426,7 +426,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];
@@ -479,7 +479,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];
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgrusu.mf b/Master/texmf-dist/fonts/source/lh/base/lgrusu.mf
index 0ff385ef871..80766c6a9cf 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgrusu.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgrusu.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:
%
@@ -18,7 +18,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Uppercase Russian letter A";
cyrchar(A,13u#,cap_height#,0);
@@ -373,7 +373,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(slab+eps); y6=vround(h-slab-eps);
- alpha1=diag_ratio(1,stem1,y6-y5,x5r-x6l);
+ alpha1=diag_ratio(1,stem1,y5-y6,x5r-x6l);
penpos5(min(2fudged.cap_stem,alpha1*stem1),0);
penpos6(min(2fudged.cap_stem,alpha1*stem1),0);
x5'=lft x1l; z5'=whatever[z5l,z6l]; x6'=rt x4r; z6'=whatever[z5r,z6r];
@@ -422,7 +422,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(slab+eps); y6=vround(h-slab-eps);
- alpha1=diag_ratio(1,stem1,y6-y5,x5r-x6l);
+ alpha1=diag_ratio(1,stem1,y5-y6,x5r-x6l);
penpos5(min(2fudged.cap_stem,alpha1*stem1),0);
penpos6(min(2fudged.cap_stem,alpha1*stem1),0);
x5'=lft x1l; z5'=whatever[z5l,z6l]; x6'=rt x4r; z6'=whatever[z5r,z6r];
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2comi.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2comi.mf
index a0320e98e13..12fef153d3e 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2comi.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2comi.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=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:
%
@@ -43,7 +43,7 @@
% fita - - - - "b0 - - "1d Old Slav Fita
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Italic Cyrillic letter tshe (soft t - looks like barred h)";
cyrchar(tshe,9u#,asc_height#,0);
@@ -374,12 +374,6 @@ filldraw stroke z2e--z3e; % stem
lowercase_umlaut(0,0, 6,7,8,9);
penlabels(0,1,2,3,4,5,8,9); endchar;
-if old_cyr:
-lhchar "Italic Cyrillic letter ng - ligature enghe";
-cyrcharmoving(ng);
-fi\\;
-
-iff not old_cyr:
lhchar "Italic Cyrillic letter ng - ligature enghe";
cyrchar(ng,10u#,x_height#,0);
italcorr x_height#*slant+.5stem#-u#; %tau
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2coml.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2coml.mf
index fd047b31d23..b2cef9e2514 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2coml.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2coml.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:
%
@@ -43,7 +43,9 @@
% fita - - - - "b0 - - "1d Old Slav Fita
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
+
+if concrete: input lgcyrcl; fi % Cyrillic concrete letters
lhchar "Lowercase Cyrillic letter tshe (soft t - looks like barred h)";
cyrchar(tshe,10u#,asc_height#,0);
@@ -161,6 +163,7 @@ else:
& z6e{left}..z7e; fi % arc and terminal
penlabels(1,2,3,4,5,6,7); endchar;
+iff not concrete:%
lhchar "Lowercase Cyrillic letter lje (soft l)";
cyrchar(lje,10u# % if not serifs:+.5width_adj# fi % dl_width;n_width
,x_height#,0);
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2comu.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2comu.mf
index 5b03fcbce65..a0c2ea50ec0 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2comu.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2comu.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:
%
@@ -43,7 +43,9 @@
% FITA - - - - - "90 - - "15 Old Slav Fita
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
+
+if concrete: input lgcyrcu; fi % Cyrillic concrete letters
lhchar "Uppercase Cyrillic letter TSHE (Soft T - like Th)";
cyrchar(TSHE,13u#,cap_height#,0);
@@ -147,6 +149,8 @@ if slitex:
fi
%%%%%
penlabels(1,2,3,4,5,6,7,8); endchar;
+%for recognizing fontdimen 15
+if enc_name="X2": font_cap_stem cap_stem#; fi
lhchar "Uppercase Cyrillic letter LAT_J (as Latin J)";
cyrchar(LAT_J,9u#,cap_height#,0);
@@ -199,6 +203,7 @@ fi
uppercase_umlaut(0,0, 9,10,11,12);
penlabels(1,2,3,4,5,6,7,8, 9,10,11,12); endchar;
+iff not concrete:%
lhchar "Uppercase Cyrillic letter LJE (Soft L)";
cyrchar(LJE,13.5u#,cap_height#,0); % DL_width:N_width
if is_small_cap: getcharcode(lje); fi;
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2loi.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2loi.mf
index 6a3c662c4ca..c13577b0877 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2loi.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2loi.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=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:
%
@@ -63,7 +63,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
iff knuthian_ae:%
lhchar "Italic Cyrillic letter ae - ligature ae";
@@ -167,7 +167,7 @@ cyrbulb(7,8,9);
enddef;
ogonek_breadth:=xvair;
numeric tt; % the time...
- tt=if hefty: 2.8 else: 2.6 fi+eps;
+ tt=if hefty: 2.8 else: 2.7 fi+eps;
join_angle=angle((direction tt of p.r) rotated 180);
ogonek_pos=point tt of p.r+.5(the_pen-fine)*
unitvector((direction tt of p.r) rotated 90)-(ogonek_breadth-the_pen,0);
@@ -598,14 +598,11 @@ filldraw circ_stroke z6e--z7'e; % right stem
filldraw stroke z10e--z11e; % bar
%%%
pos12(vair,-90); pos13(hair,-180); pos14(flare,-180); pos5(stem,0);
-x5=x3; bot y5=-1/3d; bot y12r=-d-oo; y14-.5flare=-vround.9d;
-%x6=w-11/3u; lft x7r=min(x4-4u,lft x7r+x6-x7l+5u-eps);
-%x12=(x3+2.5u-.5stem)-10/3u; lft x13r=min(x3-10/3u,lft x13r+x12-x13l+13/3u-eps);%!!!
+x5=x3; bot y5=-1/3d; bot y12r=-d-oo; y14=-vround min(.9d+.5flare,y3)-eps;
x12=(x3+2.5u-.5stem)-9/3u; lft x14r=min(x3-8/3u,lft x13r+x12-x13l+11/3u-eps);%!!!
-%filldraw circ_stroke z3e--z5e{down}...{left}z12e; % right stem and hook
forsuffixes e=l,r:
- z12'e=((0,y14)--(w,y14)) intersectionpoint
- (z5e{down}...{left}z12e); endfor
+ z12'e=((-u,y14)--(w+u,y14)) intersectionpoint
+ (z3e--z5e{down}...{left}z12e); endfor
if lft x12'l>rt x14l+max(1,hround(1/3vair+.5)):
filldraw stroke z3e--z5e{down}...{left}z12e; % right stem and hook
else:
@@ -616,8 +613,7 @@ x12=(x3+2.5u-.5stem)-9/3u; lft x14r=min(x3-8/3u,lft x13r+x12-x13l+11/3u-eps);%!!
bulb(12,13,14); % bulb
penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar;
-iff serifs:
-lhchar "Lowercase Cyrillic letter delta - Lowercase Greek delta";
+lhchar "Italic Cyrillic letter delta - looks like lowercase Greek delta";
cyrchar(delta,8u#,asc_height#,0);
italcorr .9asc_height#*slant+.5hair#-1.5u#;
adjust_fit(0,0); pickup fine.nib;
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);
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2lou.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2lou.mf
index 2b4dfdf2490..91dd1af7a91 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2lou.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2lou.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:
%
@@ -31,12 +31,14 @@
% M_dsc "4c L - - "88 Em with descender
% ABH_HA "4e N - - "97 Abkhasian kha
% P_tl "4f O - - "80 Pe with tail
+%
% R_dsc "50 P - - "85 Er with descender
% LAT_Q "51 Q - - - Latin letter Q
% T_dsc "52 R - - "82 Te with descender
% TETSE "54 T - - "81 Ligature Te-Tse
% CH_vcrs "56 V "97 - - Che vertically crossed
% LAT_W "57 W - - - Latin letter W
+%
% N_ltl "1c - - "99 En with left tail
% DELTA "1e - "86 - Delta
% M_tl - - - "8e Em with tail
@@ -44,12 +46,13 @@
% S_acrs - - - "91 Es acute crossed
% G_crsdsc - - "80 - Ghe crossed with descender
% H_hcrs - - "94 - Kha horisontally crossed
+%
% SEMISN - - - "93 Semi Soft Sign
% I_shdsc - - - "94 I Short with descender
% R_tl - - - "9b Er with tail
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Uppercase Cyrillic letter AE - ligature AE";
cyrchar(AE,16u#,cap_height#,0);
@@ -222,6 +225,7 @@ else:
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 "Uppercase Cyrillic letter K_vcrs - KA vcrossed (`roman')";
cyrchar(K_vcrs,15u# if not serifs:+.5width_adj# fi, % N_width+1.5u
@@ -277,6 +281,7 @@ top y11-bot y9=.5cap_height; .52[y9,y11]=y7;
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 "Uppercase Cyrillic letter K_hcrs - KA hcrossed (`roman')";
cyrchar(K_hcrs,13.5u#,cap_height#,0); % N_width
@@ -326,18 +331,19 @@ if serifs:
pickup crisp.nib; numeric outer_jut;
outer_jut=if serifs: max(limit_dist,1.1cap_jut) else: 1.8u fi;
pos7(bar,90); pos8(bar,90);
-top y7r=top y8r=vround (min(.5[x_height,h]+.5bar,h-max(bracket,1.2slab))-eps);
+top y7r=top y8r=vround (min(1/3[x_height,h]+.5bar,h-max(bracket,1.2slab))-eps);
x7=x1r+1.15outer_jut; x8=hround 1/3u-cap_serif_fit;
filldraw stroke z7e--z8e; % cross bar
penlabels(1,2,3,4,5,6, 7,8); endchar;
+iff not concrete:%
lhchar "Uppercase Cyrillic letter L_dsc - EL descender";
cyrchar(L_dsc,13.5u#,cap_height#, % DL_width:N_width
if is_ogonek: desc_depth# else: cap_sbeak# fi); %udesc/og_depth
if is_small_cap: getcharcode(l_dsc); fi
italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
adjust_fit(cap_serif_fit# if not serifs:
- +\\.5(cap_stem#-u#),.5(cap_stem#-u#)+ else:,fi\\ cap_serif_fit#); %D_adj
+ +\\.5(cap_stem#-u#),.5(cap_stem#-u#)+ else:,fi\\ cap_serif_fit#); %D_adj
% upper_l;
pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
rt x1r=rt x2r=w-hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
@@ -385,19 +391,15 @@ if serifs:
nodish_serif(3,0,e,1/3,1.05cap_jut,f,1/3,inner_jut); % upper left serif
filldraw z.c0--z.c1--z.f1--z.f0--cycle; fi % upper inter_serif bar
%%%%%
-% uppercase descender/ogonek
-if is_ogonek:
- def the_pen=if known ogonek_pen: ogonek_pen
- elseif serifs: tiny elseif is_bold: fisp else: fine fi
- enddef;
- % |diag_end| refers to |tiny| pen, hence |tiny| in the following equation:
- ogonek_pos=(x2 if not serifs: l if is_bold: +.75tiny fi\\ fi,.5the_pen)
- if serifs and not is_egyptian: +(.5xvair,0) fi;
- easy_ogonek(the_pen,7,8,9); % ogonek
+% uppercase descender/saam tail
+numeric right_jut;
+right_jut=
+ if serifs: max(limit_dist,cap_jut) else: hround (r-rt x2r-.65u) fi;
+if unic:
+ %saam tail
+ serif(2,1,v,1/3,-cap_jut);
+ siam_serif(2,1,w,1/3,right_jut);
else:
- numeric right_jut;
- right_jut=
- if serifs: max(limit_dist,1.1cap_jut) else: hround (r-rt x2r-.65u) fi;
r_serif(2,1,x,1/3,cap_jut,y,1/3,beak_darkness,right_jut,beak_jut); % lower right descender
fi
penlabels(1,2,3,4,5,6, 7,8,9); endchar;
@@ -452,18 +454,14 @@ if serifs:
dish_serif(4,3,e,1/3,cap_jut,f,1/3,cap_jut); fi %!!! % lower right serif
fi
%%%%%
-% uppercase descender/ogonek
-if is_ogonek:
- def the_pen=if known ogonek_pen: ogonek_pen
- elseif serifs: tiny elseif is_bold: fisp else: fine fi
- enddef;
- % |diag_end| refers to |tiny| pen, hence |tiny| in the following equation:
- ogonek_pos=(x4 if not serifs: l if is_bold: +.4tiny fi\\ fi,.5the_pen)
- if serifs and not is_egyptian: +(.5xvair,0) fi;
- easy_ogonek(the_pen,9,10,11); % ogonek
+% uppercase descender/saam tail
+numeric right_jut;
+right_jut=if serifs: max(limit_dist,1.1cap_jut) else: hround (r-rt x4r-.65u) fi;
+if unic:
+ %saam tail
+ serif(4,3,v,1/3,-cap_jut);
+ siam_serif(4,3,w,1/3,right_jut);
else:
- numeric right_jut;
- right_jut=if serifs: max(limit_dist,1.1cap_jut) else: hround (r-rt x4r-.65u) fi;
r_serif(4,3,x,1/3,cap_jut,y,1/3,beak_darkness,right_jut,beak_jut); % lower right descender
fi
penlabels(0,1,1',2,3,3',4,5,6,7,8, 9,10,11); endchar;
@@ -865,14 +863,14 @@ 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]-2u if monospace: / expansion_factor fi;%2.5u
lft x[_four]r=-1/3u if monospace: / expansion_factor fi;%2.5u
%filldraw stroke z[_five]e--pulled_arc.e([_one],[_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,.5vair+.5):
filldraw stroke z[_five]e--pulled_arc.e([_one],[_two]);
else:
@@ -1004,7 +1002,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]-2.5u if monospace: / expansion_factor fi;
filldraw stroke z[_five]e--pulled_arc.e([_one],[_two]);
@@ -1267,7 +1265,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(slab+eps); y6=vround(h-slab-eps);
- alpha1=diag_ratio(1,stem1,y6-y5,x5r-x6l);
+ alpha1=diag_ratio(1,stem1,y5-y6,x5r-x6l);
penpos5(min(2fudged.cap_stem,alpha1*stem1),0);
penpos6(min(2fudged.cap_stem,alpha1*stem1),0);
x5'=lft x1l; z5'=whatever[z5l,z6l]; x6'=rt x4r; z6'=whatever[z5r,z6r];
@@ -1299,19 +1297,15 @@ if serifs:
dish_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut); fi % lower right serif
fi
%%%
-% uppercase descender/ogonek
-if is_ogonek:
- def the_pen=if known ogonek_pen: ogonek_pen
- elseif serifs: tiny elseif is_bold: fisp else: fine fi
- enddef;
- % |diag_end| refers to |tiny| pen, hence |tiny| in the following equation:
- ogonek_pos=(x4 if not serifs: l if is_bold: +.75tiny fi\\ fi,.5the_pen)
- if serifs and not is_egyptian: +(.5xvair,0) fi;
- easy_ogonek(the_pen,14,15,16); % ogonek
+% uppercase descender/saam tail
+if not serifs: inner_jut:=0; fi
+numeric right_jut;
+right_jut=if serifs: max(limit_dist,1.1cap_jut) else: hround (r-rt x4r-.65u) fi;
+if unic:
+ %saam tail
+ serif(4,3,v,1/3,-inner_jut);
+ siam_serif(4,3,w,1/3,right_jut);
else:
- if not serifs: inner_jut:=0; fi
- numeric right_jut;
- right_jut=if serifs: max(limit_dist,1.1cap_jut) else: hround (r-rt x4r-.65u) fi;
r_serif(4,3,g,1/3,inner_jut,h,1/3,beak_darkness,right_jut,beak_jut); % lower right descender
fi
%%%%%
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2slvi.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2slvi.mf
index 47078c5937d..b01b35ab11e 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2slvi.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2slvi.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=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:
%
@@ -50,7 +50,7 @@
% narrow_e used eps
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Italic Cyrillic letter ligature az - old a";
cyrcharmoving(az);
@@ -59,10 +59,93 @@ lhchar "Italic Cyrillic letter ligature i_az - iot az";
cyrcharmoving(i_az);
lhchar "Italic Cyrillic letter l_yus - little yus";
-cyrcharmoving(l_yus);
+%cyrcharmoving(l_yus);%restored for Unicode
+cyrchar(l_yus,11u#,x_height#,0);
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+adjust_fit(if monospace:-.5u# else:.5u# fi, %wbulb_adj
+ 0);
+% ital_amod;
+pickup fine.nib; pos1(vair,-90); pos2(hair,0); pos3(hair,0); pos4(vair,-90);
+pos5(hair,-180); pos6(flare,-180);
+pos1'(stem,180); pos10(stem,0);
+top y1l=h+oo; x1=.5[x3,x1']; x2=x3=3u; y3=.35h; y2=.75h;
+bot y4r=-oo; x4=lft x6r+flare; y6-.5flare=.1h; lft x6r=-.25u; z5r=z6r;
+y1'=.8h; x1'=x7; z10=z1';
+rt x7r=hround(w-2.5u+.5stem);
+bulb(4,5,6); % bulb
+x9=w; hook_out(7,8,9); % closing hook
+filldraw stroke z10e--z7e; % tie
+filldraw stroke pulled_arc.e(4,3) & super_arc.e(3,1)
+ & super_arc.e(1,1'); % right stem
+% stem&bar
+pos11(vair,90); pos12(vair,90);
+z11=((l,bar_height)..(w,bar_height)) intersectionpoint
+ (pulled_arc.r(4,3) & super_arc.r(3,1));
+z12=((0,bar_height)..(w,bar_height)) intersectionpoint (z10l..z7l);
+filldraw stroke z11e--z12e; % bar
+numeric stem[]; stem1=max(fine.breadth+eps,.7[thin_join,stem]);
+pos13(stem1,0); pos14(stem1,0);
+x13=x14=.5[x11,x12]; y13=y12; y14-.5stem1=0;
+filldraw circ_stroke z14e--z13e; % stem
+%%%
+penlabels(1,1',2,3,4,5,6,7,8,9,11,11',14,15);
+endchar;
lhchar "Italic Cyrillic letter il_yus - iotfied little yus";
-cyrcharmoving(il_yus);
+%cyrcharmoving(il_yus);%restored for Unicode
+cyrchar(il_yus,11u#,x_height#,0);
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+adjust_fit(if monospace: 3.5u#+else: 4.5u#+fi.5u#,
+ if monospace:-1.5u# else:0 fi); %rstem_adj
+% ital_amod;iot
+pickup fine.nib; pos1(vair,-90); pos2(hair,0); pos3(hair,0); pos4(vair,-90);
+pos5(hair,-180); pos6(flare,-180);
+pos1'(stem,180); pos10(stem,0);
+top y1l=h+oo; x1=.5[x3,x1']; x2=x3=3u-eps; y3=.35h; y2=.75h;
+bot y4r=-oo; lft x6r=-.25u;
+x4=min(lft x6r+flare,lft x3l-eps); y6-.5flare=.1h; z5r=z6r;
+y1'=min(.8h,bot y1l)-eps; z10=z1';
+rt x7r=hround (w-2.5u+.5stem)+eps;
+x1'=x7;
+bulb(4,5,6); % bulb
+% right_stem;
+_one:=7; _two:=8; _three:=9;
+if monospace: pos[_three](vair,90); pos[_one](stem,0);
+ x[_three]=good.x .5[x[_one],w]; bot y[_three]l=0; y[_one]=1/3h;
+ filldraw stroke z[_one]e{down}...{right}z[_three]e; % terminal
+else: x[_three]=w; hook_out([_one],[_two],[_three]); fi % opening hook
+filldraw stroke z10e--z7e; % tie
+if lft x1'r<x1: lft x1'r:=x1+eps; fi
+filldraw stroke pulled_arc.e(4,3) &
+ super_arc.e(3,1) & super_arc.e(1,1'); % right stem
+% stem&bar
+pos11(vair,90); pos12(vair,90);
+z11=((l,bar_height)..(w,bar_height)) intersectionpoint
+ (pulled_arc.r(4,3) & super_arc.r(3,1));
+z12=((0,bar_height)..(w,bar_height)) intersectionpoint (z10l..z7l);
+filldraw stroke z11e--z12e; % bar
+numeric stem[]; stem1=max(fine.breadth+eps,.7[thin_join,stem]);
+pos13(stem1,0); pos14(stem1,0);
+x13=x14=.5[x11,x12]; y13=y12; y14-.5stem1=0;
+filldraw circ_stroke z14e--z13e; % stem
+%%%
+% i half
+_one:=15; _two:=16; _three:=17; _four:=18; _five:=19; _six:=20;
+%
+pos[_four](stem,0);
+lft x[_four]l=l+letter_fit if not monospace: +hround(2.5u-.5stem) fi;
+y[_four]-.5stem=-oo; x[_three]=x[_four];
+if monospace:
+ pos[_three](stem,0); top y[_three]=h;
+else:
+ x[_one]=l+letter_fit; hook_in([_one],[_two],[_three]); fi % opening hook
+filldraw circ_stroke z[_four]e--z[_three]e; % stem
+pos[_five](vair,90); pos[_six](vair,90); %!!!
+x[_five]=x[_four]; x[_six]=x11; y[_five]=y[_six]=bar_height; %!!!
+filldraw stroke z[_five]e--z[_six]e; % bar %!!!
+%%%
+penlabels(1,1',2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20);
+endchar;
lhchar "Italic Cyrillic letter gerv - Glagolic letter";
cyrcharmoving(gerv);
@@ -113,16 +196,168 @@ lhchar "Italic Cyrillic letter izhe";
cyrcharmoving(izhe);
lhchar "Italic Cyrillic letter omga - omega";
-cyrcharmoving(omga);
+%cyrcharmoving(omga);%restored for Unicode
+cyrchar(omga,11u#,x_height#,0);
+italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.15u# fi; %o+.35u
+adjust_fit(if monospace:-.35u#,-.35u# else:0,0 fi); %bowl_adj
+% ital_omega;
+pickup fine.nib; pos2(stem,-180); lft x2r=hround.5u; y2=y4=y6=y8=bar_height;
+pos3(vair,-90); pos4(hair,0); pos5(vair,90);
+pos6(hair,180); pos7(vair,270); pos8(stem,360);
+bot y3r=bot y7r=-oo; top y5r=vround(.2[y4,h]+.5vair);
+x3=.5[x2,x4]; x7+.25u=.5[x6,x8]; rt x8r=hround(w-.5u);
+x5+.5stem=hround(.5[x2l,x8l]+.5stem)+eps;
+x5=.5[x4,x6]; rt x4r-lft x6r=min(stem,2hair)+2eps;
+y1+.5hair=h+oo; x1=min(x2l+1.25u,lft x6r); x9=w-x1; y9=y1;
+pos1(hair,angle(2(x1-x2),y1-y2)+90); pos9(hair,-angle(2(x1-x2),y1-y2)+90);
+if x4l<x6l: x4l:=x6l:=x5; fi
+filldraw stroke z1e...z2e{down}...z3e{right}
+ ...{up}z4e...{left}z5e; % left arc
+filldraw stroke z5e{left}...z6e{down}...
+ z7e{right}...{up}z8e...z9e; % right arc
+%%%
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
lhchar "Italic Cyrillic letter omga_rnd - omega round";
-cyrcharmoving(omga_rnd);
+%cyrcharmoving(omga_rnd);%restored for Unicode
+cyrchar(omga_rnd,11u#,x_height#,0); %f width
+italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi;
+adjust_fit(if monospace:0,0 else:-.35u#,-.35u#fi); pickup fine.nib;
+pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360);
+interim superness:=1.075 superness; %
+x1=x3=.5w; lft x2r=hround(1.5u-.5curve); x4=w-x2;
+top y1r=h+oo; y2=y4=.5[y1,y3]; bot y3r=-oo;
+filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
+ & pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl
+pickup crisp.nib;
+% dots
+numeric bulb_diam; bulb_diam=hround 7/8[hair,flare];
+z5=z1r; z6=z3r; x5'=x6'=x1; pos5(bulb_diam,0); pos6(bulb_diam,0);
+bot y5'=max(.5h+1,bot y1l-.7bulb_diam);
+top y6'=min(.5h-1,top y3l+.7bulb_diam);
+pos6'(min(bulb_diam,.7[hair,fudged.stem]),0);
+pos5'(min(bulb_diam,.7[hair,fudged.stem]),0);
+filldraw circ_stroke z5e--z5'e; filldraw circ_stroke z6e--z6'e; %dots
+penlabels(1,2,3,4); endchar;
lhchar "Italic Cyrillic letter ot - omega with te accent";
-cyrcharmoving(ot);
+%cyrcharmoving(ot);%restored for Unicode
+cyrchar(ot,11u#,x_height#+acc_height#,0);
+italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.15u# fi; %o+.35u
+adjust_fit(if monospace:-.35u#,-.35u# else:0,0 fi); %bowl_adj
+full_h:=h; h:=x_height;
+% ital_omega;
+pickup fine.nib; pos2(stem,-180); lft x2r=hround.5u; y2=y4=y6=y8=bar_height;
+pos3(vair,-90); pos4(hair,0); pos5(vair,90);
+pos6(hair,180); pos7(vair,270); pos8(stem,360);
+bot y3r=bot y7r=-oo; top y5r=vround(.2[y4,h]+.5vair);
+x3=.5[x2,x4]; x7+.25u=.5[x6,x8]; rt x8r=hround(w-.5u);
+x5+.5stem=hround(.5[x2l,x8l]+.5stem)+eps;
+x5=.5[x4,x6]; rt x4r-lft x6r=min(stem,2hair)+2eps;
+y1+.5hair=h+oo; x1=min(x2l+1.25u,lft x6r); x9=w-x1; y9=y1;
+pos1(hair,angle(2(x1-x2),y1-y2)+90); pos9(hair,-angle(2(x1-x2),y1-y2)+90);
+if x4l<x6l: x4l:=x6l:=x5; fi
+filldraw stroke z1e...z2e{down}...z3e{right}
+ ...{up}z4e...{left}z5e; % left arc
+filldraw stroke z5e{left}...z6e{down}...
+ z7e{right}...{up}z8e...z9e; % right arc
+%%%
+% the accent
+%%%%%
+% the accent
+% low_te(16);
+_zero:=5;
+_one:=10; _two:=11; _three:=12; _four:=13;
+_five:=14; _six:=15; _seven:=16; _eight:=17; _nine:=18;
+%
+if serifs: pickup crisp.nib;
+ else: pickup pencircle scaled min(.5fine,.15vair); fi
+numeric stem[]; stem1=if hefty: fudged.hair-2stem_corr else: .7[vair,stem] fi;
+stem2=if serifs: vair else: max(currentbreadth+eps,.6[thin_join,vair]) fi;
+stem3=if serifs: hair else: max(currentbreadth+eps,.6[thin_join,vair]) fi;
+pos[_one](stem1,0); pos[_two](stem1,0);
+lft x[_one]l=lft x[_two]l=hround(x[_zero]-.5stem1);
+numeric mid_thickness;
+mid_thickness=vround if serifs:1/4 else: 1/3 fi[vair,stem];
+bot y[_two]=bot y[_four]=bot y[_five]=
+ vround max(h+o+max(tiny,.5mid_thickness),1/3[h,h+acc_height]+o-.5mid_thickness);
+top y[_one]=top y[_three]r=max(h+acc_height,bot y[_two]+1.5vair);
+filldraw stroke z[_one]e--z[_two]e; % stem
+pos[_three](stem2,90); pos[_four](stem3,0); pos[_five](stem3,180);
+x[_three]=x[_one];
+rt x[_four]r=hround(x[_zero]+2.5u if monospace:/expansion_factor fi+.5vair);
+x[_four]-x[_three]=x[_three]-x[_five];
+z[_four]'=beak_darkness[(x[_four]l,y[_three]l),
+ .5[(x[_one]r,y[_three]l),z[_four]l] ];
+z[_five]'=beak_darkness[(x[_five]l,y[_three]l),
+ .5[(x[_one]l,y[_three]l),z[_five]l] ];
+filldraw z[_four]r--z[_four]l{up}...z[_four]'
+ ...{left}(x[_one]r,y[_three]l)--(x[_one]r,y[_three]l){left}...z[_five]'
+ ...{down}z[_five]l--z[_five]r---
+ (x[_five]r,y[_three]r)---(x[_four]r,y[_three]r)---cycle;
+%%%
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
-lhchar "Italic Cyrillic letter omga_tlo";
-cyrcharmoving(omga_tlo);
+lhchar "Italic Cyrillic letter omga_tlo - omega titlo";
+%cyrcharmoving(omga_tlo);%restored for Unicode
+cyrchar(omga_tlo,11u#,x_height#+acc_height#,0);
+italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.15u# fi; %o+.35u
+adjust_fit(if monospace:-.35u#,-.35u# else:0,0 fi); %bowl_adj
+full_h:=h; h:=x_height;
+% ital_omega;
+pickup fine.nib; pos2(stem,-180); lft x2r=hround.5u; y2=y4=y6=y8=bar_height;
+pos3(vair,-90); pos4(hair,0); pos5(vair,90);
+pos6(hair,180); pos7(vair,270); pos8(stem,360);
+bot y3r=bot y7r=-oo; top y5r=vround(.2[y4,h]+.5vair);
+x3=.5[x2,x4]; x7+.25u=.5[x6,x8]; rt x8r=hround(w-.5u);
+x5+.5stem=hround(.5[x2l,x8l]+.5stem)+eps;
+x5=.5[x4,x6]; rt x4r-lft x6r=min(stem,2hair)+2eps;
+y1+.5hair=h+oo; x1=min(x2l+1.25u,lft x6r); x9=w-x1; y9=y1;
+pos1(hair,angle(2(x1-x2),y1-y2)+90); pos9(hair,-angle(2(x1-x2),y1-y2)+90);
+if x4l<x6l: x4l:=x6l:=x5; fi
+filldraw stroke z1e...z2e{down}...z3e{right}
+ ...{up}z4e...{left}z5e; % left arc
+filldraw stroke z5e{left}...z6e{down}...
+ z7e{right}...{up}z8e...z9e; % right arc
+%%%
+% the accent
+h:=full_h;
+% low_palatal(expr .5w+u,0,-o);
+x_center:=.5w+u; x_move:=0; y_move:=-o;
+_one:=10; _two:=11; _three:=12; _four:=13;
+_five:=14; _six:=15; _seven:=16; _eight:=17; _nine:=18;
+%
+% frown part
+pickup fine.nib; numeric frown_width,flare_width;
+frown_width=max(fine.breadth,.6[thin_join,vair]);
+flare_width=max(fine.breadth,.5[thin_join,flare]);
+penpos[_one](frown_width,180); penpos[_three](frown_width,0);
+penpos[_two](frown_width,90);
+top y[_two]r=y_move+x_height+max(if serifs:.75 fi acc_height,frown_width+1);
+x[_two]=x_center-u; lft x[_one]r=hround(x[_two]-1.5u-0.5frown_width);
+rt x[_three]r=hround(x[_two]+1.5u+0.5frown_width);
+bot y[_one]=bot y[_three]=y_move+vround
+ max(x_height+oo+tiny,1/3[x_height,h]+oo-.5frown_width);
+%fill stroke z[_one]e{up}...z[_two]e{right}...{down}z[_three]e; % stroke
+% tilde part
+penpos[_five](frown_width,180); penpos[_seven](frown_width,90);
+penpos[_seven]'(flare_width,0);
+bot y[_six]l=y[_two]r+.5flare_width;
+rt x[_five]l=x[_one]r-.5flare_width;
+x[_six]=x[_two]+.25u; x[_six]-x[_five]l=x[_seven]'l-x[_six];
+rt x[_seven]=max(x[_six]+5.5u
+ if monospace:/expansion_factor fi,x[_three]r+.5frown_width);
+penpos[_six](flare_width,90);
+bot y[_five]=bot y[_seven]'=bot y[_one]; bot y[_seven]l=x_height+oo;
+forsuffixes e=l,r: path p.e;
+p.e=(x[_five]e,y[_five]e+.5fine){up}
+ ...z[_six]e{right}...{down}z[_seven]'e; endfor
+fill subpath(0,1.5) of p.l..tension.85..
+ {right}(x[_seven]l-.5fine,y[_seven]l)
+ ...z[_seven]...(x[_seven]r-.5fine,y[_seven]r){left}
+ ..tension.85..reverse subpath(0,1.6) of p.r...z[_five]...cycle; % stroke
+%%%
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
lhchar "Italic Cyrillic letter koppa (looks like c with tail)";
cyrchar(koppa,8u#,x_height#,desc_depth#);
@@ -141,7 +376,50 @@ ellipse_set(2l,3l,4l,5l); ellipse_set(2r,3r,4r,5r);
penlabels(0,1,2,3,4,5,6); endchar;
lhchar "Italic Cyrillic letter uk";
-cyrcharmoving(uk);
+%cyrcharmoving(uk);%restored for Unicode
+cyrchar(uk,9.75u#,asc_height#,0);
+italcorr asc_height#*slant-.5u#;
+adjust_fit(0,0);
+% ital_uk;
+numeric top_thickness,mid_thickness,bot_thickness,upper_side,lower_side,theta;
+top_thickness=max(fine.breadth,vround(slab-2vair_corr));
+bot_thickness=max(fine.breadth,vround(slab-vair_corr));
+x0=.5w; y0=if hefty:bar_height else:.7x_height fi; %h;%%%%%%%%%%%%%%
+pickup fine.nib; theta=90-angle(20u,h); slope:=-h/20u;
+upper_side=max(fine.breadth+eps,hround(.5[hair,stem]-stem_corr));
+lower_side=hround(.5[hair,stem]+stem_corr);
+if lower_side>1.2upper_side: upper_side:=lower_side; fi
+pos1(top_thickness,-90); pos6(bot_thickness,-90);
+x1=x6=.5w; top y1l=h+o; bot y6r=-o; pos0(cap_stem,theta);
+lft x2l=w-rt x8l=hround 1.25u; lft x7r=w-rt x5r=hround 1.75u;
+ x2r-x2l=stem-fine; x5r-x5l=lower_side-fine;%%%%%%%%%%%
+ellipse_set(1l,2l,3l,0l); ellipse_set(1r,2r,3r,0r);
+ellipse_set(6l,5l,4l,0l); ellipse_set(6r,5r,4r,0r);
+numeric tau; tau=max(.8,.20710678/(superness-.5));
+y2r:=vround(y2l+max(1,serif_drop)+eps);
+filldraw stroke z2e{down}
+ ..z3e---z4e..z5e{down}..tension atleast tau..z6e{left}; % S stroke
+pos7(lower_side,180); pos8(upper_side,180);
+y7=.5[y5l,y5r]; y8=.5[y2l,y2r]; pos9(vair,90); z9=z0;
+filldraw stroke z8e{down}
+ ..tension atleast tau and atleast 1..{-18u,-.618h}z9e; % upper right stroke
+filldraw stroke z6e{left}..tension atleast tau..z7e{up}
+ ..tension atleast tau and atleast 1..{18u,.5h}z9e;% lower left stroke
+% italic bulb
+z8'=z8; pos8'(upper_side,0);
+y1'+.5curve=h+oo; x1'=x8-max(u,.5u+.5curve); %+.5curve%y8+(x_height-bar_height); %%%%%%%%%%%
+numeric theta; theta=angle(4(x8'-x1'),y8'-y1'); pos1'(curve,theta+90);
+filldraw z1'l{dir theta}..tension atleast 1 and 1..{down}z8'l
+ --z8'r{up}...{-dir theta}z1'r..cycle; % bulb
+% from sloped serif
+if serif_drop>0:
+ pos12(slab,90); lft x12=x2l-.5jut-eps; y12r=y2r-serif_drop; z14=z2l;
+ filldraw z2r--z12r--z12l{right}
+ ...1/3[(x14,y12l),.5[z12l,z14] ]{z14-z12l}
+ ...{down}z14--(x2r,y14)--cycle; % sloped serif
+fi
+%%%%%
+penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
lhchar "Italic Cyrillic letter cherv - old che";
cyrcharmoving(cherv);
@@ -180,10 +458,92 @@ lhchar "Italic Cyrillic letter shta - old sh";
cyrcharmoving(shta);
lhchar "Italic Cyrillic letter ib_yus - iot big yus";
-cyrcharmoving(ib_yus);
+%cyrcharmoving(ib_yus);%restored for Unicode
+cyrchar(ib_yus,9u#,x_height#,0);
+italcorr 1/3x_height#*slant+.5hair#+.5u#; %h
+adjust_fit(if monospace: 4u#+else: 5u#+fi w#-5u#,
+ if monospace:-1.5u# else:0 fi); %rstem_adj
+% ital_yus;iot
+% itop_yus;
+pickup fine.nib;
+penpos1(fudged.stem,0); penpos2(fudged.hair,0);
+penpos3(fudged.stem,0); penpos4(fudged.hair,0);
+w-x2r=.24w; x2-x3=x3-x1; y1=h; y2=y1; y3=y4=bar_height;
+x3l=hround(2.5u-.5stem); x3r=x4r;
+z0=whatever[z4l,z2l]=whatever[z1r,z3r];
+if hefty: y0:=bar_height+.5fine;
+ fill z3l--diag_end(3l,1l,1,1,1r,3r){z3r-z1r}
+ ...{down}(x0-.5,y0)..(x0+.5,y0){up}...
+ {z2l-z4l}diag_end(4l,2l,1,1,2r,4r)--z4r--cycle; % diagonals
+else: fill z3l--diag_end(3l,1l,1,1,1r,3r)--z0--
+ diag_end(4l,2l,1,1,2r,4r)--z4r--cycle; fi % diagonals
+penpos5(fudged.stem,0); x5=x3; y5-.5stem=-oo;
+fill circ_stroke z5e--z3e; %middle stem
+z6'r=z1; z7'r=z2;
+z7'l=whatever[z4l,z2l]; z6'l=whatever[z1r,z3r]; y6'l=y7'l=vround(y1-vair)-eps;
+if x7'l<x6'l: x7'l:=x6'l+eps; fi
+fill stroke z6'e--z7'e; % upper bar
+% bowls
+pos8(vair,90); pos9(stem,0); pos10(vair,90); pos11(hair,180);
+pos12(stem,180); pos13(vair,90); pos14(hair,0); z8=z3;
+x11=hround(w+.5hair-eps)-.5hair; x11-x3=x3-x14; y11=y14=1/3x_height;
+lft x9l=hround(w-2.75u-.5stem); x9-x3=x3-x12; y9=y12=1/2y8;
+x10=hround(w-1.2u); x10-x3=x3-x13;
+bot y10l=bot y13l=if monospace: 0 else:-oo fi;
+filldraw stroke if not monospace:z14e{down}... fi
+ z13e{right}...z12e{up}...z8e{right}...z9e{down}...z10e{right}
+ if not monospace:...{up}z11e fi; % left lower diagonal
+%%%
+% i half
+_one:=15; _two:=16; _three:=17; _four:=18; _five:=19; _six:=20;
+%
+pos[_four](stem,0);
+lft x[_four]l=l+letter_fit if not monospace: +hround(2.5u-.5stem) fi;
+y[_four]-.5stem=-oo; x[_three]=x[_four];
+if monospace:
+ pos[_three](stem,0); top y[_three]=h;
+else:
+ x[_one]=l+letter_fit; hook_in([_one],[_two],[_three]); fi % opening hook
+filldraw circ_stroke z[_four]e--z[_three]e; % stem
+pos[_five](vair,90); pos[_six](vair,90); %!!!
+x[_five]=x[_four]; x[_six]=x8; y[_five]=y[_six]=bar_height; %!!!
+filldraw stroke z[_five]e--z[_six]e; % bar %!!!
+%%%
+penlabels(1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,178,19,20); endchar;
lhchar "Italic Cyrillic letter i_est - iot est (IC with mid-line)";
-cyrcharmoving(i_est);
+%cyrcharmoving(i_est);%restored for Unicode
+cyrchar(i_est,8u#,x_height#,0);
+italcorr if math_fitting:1/3x_height#*slant else:x_height#*slant-.5u# fi; %c+.5u
+adjust_fit(if monospace: 3u# else: 4.5u# fi +0.2u#,0);
+% ital_ukre;iot
+pickup fine.nib; pos0(flare,0); pos1(hair,0); pos2(vair,90);
+pos3(curve,180); pos4(vair,270); pos5(hair,320);
+x2=x4=.5(w+u); rt x1r=max(rt x2,hround(w-.5u))+eps;
+lft x3r=hround(1.5u-.5curve); x5r=good.x(w-eps); x6=x5;
+y1=.5[bar_height,h]; top y2r=h+oo; bulb(2,1,0); % bulb
+bot y4r=-oo; y3=.5[y2,y4]; top y5l=vround .5bar_height; y6=bar_height;
+path p; p=z4{right}..z5..z6;
+filldraw stroke pulled_arc.e(2,3)
+ & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc
+pos7(vair,90);
+y7=bar_height; rt x7=hround max(rt x2+1+eps,lft x0l-eps);
+% i half
+_one:=8; _two:=9; _three:=10; _four:=11; _five:=12; _six:=13;
+%
+pos[_four](stem,0);
+lft x[_four]l=l+letter_fit if not monospace: +hround(2.5u-.5stem) fi;
+y[_four]-.5stem=-oo; x[_three]=x[_four];
+if monospace:
+ pos[_three](stem,0); top y[_three]=h;
+else:
+ x[_one]=l+letter_fit; hook_in([_one],[_two],[_three]); fi % opening hook
+filldraw circ_stroke z[_four]e--z[_three]e; % stem
+pos[_five](vair,90); pos[_six](vair,90); %!!!
+x[_five]=x[_four]; x[_six]=x7; y[_five]=y[_six]=bar_height; %!!!
+filldraw stroke z[_five]e--z[_six]e; % bar %!!!
+%%%
+penlabels(1,1',2,3,4,5,6,7,8,9,10,11,12); endchar;
lhchar "Italic Cyrillic letter vnarrow_e";
cyrcharmoving(vnarrow_e);
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2slvl.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2slvl.mf
index 0db9b511d50..8fd935adc20 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2slvl.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2slvl.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:
%
@@ -51,7 +51,7 @@
% narrow_e used eps
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Lowercase Cyrillic letter az - old a";
cyrchar(az,9u#,x_height#,0);
@@ -159,8 +159,8 @@ else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)
--diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
penpos5(whatever,angle(z2-z1)); z5=whatever[z1,z2];
penpos6(whatever,angle(z3-z4)); z6=whatever[z3,z4]; y6=y5;
-if hefty: y5r else: y5 fi =.5y0;
-y5r-y5l=y6r-y6l=.6[thin_join,vair];
+if hefty: y5r else: y5 fi =.5y0; y5r-y5l=y6r-y6l=.6[thin_join,vair];
+forsuffixes $=l,r: if x5$>x6$: x5$:=x6$-eps; fi endfor;
penstroke z5e--z6e; % bar line
pickup tiny.nib; x7=.5[x5,x6]; top y7=y5; bot y8=0;
pos7(max(tiny.breadth+eps,.7[thin_join,stem]),0);
@@ -199,8 +199,8 @@ else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)
--diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
penpos5(whatever,angle(z2-z1)); z5=whatever[z1,z2];
penpos6(whatever,angle(z3-z4)); z6=whatever[z3,z4]; y6=y5;
-if hefty: y5r else: y5 fi =.5y0;
-y5r-y5l=y6r-y6l=.6[thin_join,vair];
+if hefty: y5r else: y5 fi =.5y0; y5r-y5l=y6r-y6l=.6[thin_join,vair];
+forsuffixes $=l,r: if x5$>x6$: x5$:=x6$-eps; fi endfor;
penstroke z5e--z6e; % bar line
pickup tiny.nib; x7=.5[x5,x6]; top y7=y5; bot y8=0;
pos7(max(tiny.breadth+eps,.7[thin_join,stem]),0);
@@ -381,7 +381,8 @@ if serifs: pos1(hair,180); pos0(flare,180); pos2'(vair,90); z2'=z2;
penpos16(.25[vair,curve],angle(z16-z14)+90);
z15l=z14l+whatever*(z14-z15); (x15r,y)=z14r+whatever*(z14-z15);
fill stroke z15e--z14e{z16r-z14}..{.5right}z16e; % diagonals
-else: pos1(min(right_curve,1.2flare)-.2tiny,175); pos2'(vair,90);
+else: pos1(max(currentbreadth+eps,min(right_curve,1.2flare)-.2tiny),175);
+ pos2'(vair,90);
z2'=z2; y1l=max(.76h,top y5r+eps);
filldraw stroke z1e{x2-x1,5(y2-y1)}...{right}z2'e;
pos10(vair,45);
@@ -592,7 +593,7 @@ _one:=8; _two:=9; _three:=10; _four:=11; _five:=12;
%
if serifs: pickup crisp.nib;
else: pickup pencircle scaled min(.5fine,.15vair); fi
-numeric stem[]; stem1=if hefty: fudged.hair-2stem_corr else: .7[vair,stem] fi;
+numeric stem[]; stem1=max(currentbreadth+eps,if hefty: fudged.hair-2stem_corr else: .7[vair,stem] fi);
stem2=if serifs: vair else: max(currentbreadth+eps,.6[thin_join,vair]) fi;
stem3=if serifs: hair else: max(currentbreadth+eps,.6[thin_join,vair]) fi;
pos[_one](stem1,0); pos[_two](stem1,0);
@@ -760,7 +761,7 @@ else:
bot_thickness=vair';
upper_side=max(fine.breadth,hround(.3[vair',stem]-stem_corr));
lower_side=hround(.3[vair',stem]+stem_corr); fi
- x0=.5w; y0=if serifs:.7x_height else:bar_height fi; %h;%%%%%%%%%%%%%%
+ x0=.5w; y0=if hefty:bar_height else:.7x_height fi; %h;%%%%%%%%%%%%%%
pickup fine.nib; theta=90-angle(20u,h); slope:=-h/20u;
if lower_side>1.2upper_side: upper_side:=lower_side; fi
pos1(top_thickness,-90); pos6(bot_thickness,-90);
@@ -772,7 +773,7 @@ x5r-x5l=lower_side-fine;
ellipse_set(1l,2l,3l,0l); ellipse_set(1r,2r,3r,0r);
ellipse_set(6l,5l,4l,0l); ellipse_set(6r,5r,4r,0r);
numeric tau; tau=max(.8,.20710678/(superness-.5));
-y2r:=vround(y2l+serif_drop+eps);
+y2r:=vround(y2l+max(1,serif_drop)+eps);
filldraw stroke z2e{down}
..z3e---z4e..z5e{down}..tension atleast tau..z6e{left}; % S stroke
pos7(lower_side,180); pos8(upper_side,180);
@@ -789,11 +790,13 @@ if serifs:
filldraw z1'l{dir theta}..tension atleast 1 and 1..{down}z8'l
--z8'r{up}...{-dir theta}z1'r..cycle; % bulb
% from sloped serif
- pos12(slab,90); lft x12=hround(x2l-.5jut-.5-eps);
- y12r=vround(y2r-serif_drop-eps); z14=(x2l,min(y2l-.5,y12)-eps);
- filldraw z2r--z12r--z12l{right}
- ...1/3[(x14,y12l),.5[z12l,z14] ]{z14-z12l}
- ...{down}z14--(x2r,y14)--cycle; % sloped serif
+ if serif_drop>0:
+ pos12(slab,90); lft x12=hround(x2l-max(1,.5jut)-.5-eps);
+ top y12r=vround(y2r-max(0,serif_drop)-eps); z14=(x2l,min(y2l-.5,y12)-eps);
+ filldraw z2r--z12r--z12l{right}
+ ...1/3[(x14,y12l),.5[z12l,z14] ]{z14-z12l}
+ ...{down}z14--(x2r,y14)--cycle; % sloped serif
+ fi
else: pos10(flare,225); x10r=x1; y10l=h+oo;
filldraw stroke z8e{up}...z10e; fi
%%%%%
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2slvu.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2slvu.mf
index 167cc669c6c..f418564a0ff 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2slvu.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2slvu.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:
%
@@ -50,7 +50,7 @@
% NARROW_E used EPS
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Uppercase Cyrillic letter ligature AZ - OLD A";
cyrchar(AZ,12u#,cap_height#,0);
@@ -146,8 +146,9 @@ else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)
--diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
penpos5(whatever,angle(z2-z1)); z5=whatever[z1r,z2r];
penpos6(whatever,angle(z3-z4)); z6=whatever[z3l,z4l]; y6=y5;
-if hefty: y5r else: y5 fi =.5y0;
-y5r-y5l=y6r-y6l=cap_band; penstroke z5e--z6e; % bar line
+if hefty: y5r else: y5 fi =.5y0; y5r-y5l=y6r-y6l=cap_band;
+forsuffixes $=l,r: if x5$>x6$: x5$:=x6$-eps; fi endfor;
+penstroke z5e--z6e; % bar line
pickup tiny.nib;
x7=.5[x5,x6]; top y7=y5; x8=x7; bot y8=0;
pos7(max(currentbreadth+eps,.5[cap_band,cap_stem]),0);
@@ -186,10 +187,11 @@ if y0<h-cap_notch_cut: y0:=h-cap_notch_cut;
...{up}z0+.5left--cycle; % left and right diagonals
else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)
--diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
-penpos5(whatever,angle(z2-z1)); z5=whatever[z1r,z2r];
-penpos6(whatever,angle(z3-z4)); z6=whatever[z3l,z4l]; y6=y5;
-if hefty: y5r else: y5 fi =.5y0;
-y5r-y5l=y6r-y6l=cap_band; penstroke z5e--z6e; % bar line
+penpos5(whatever,angle(z2-z1)); z5=whatever[z1r,z2r]-(eps,0);
+penpos6(whatever,angle(z3-z4)); z6=whatever[z3l,z4l]+(eps,0); y6=y5;
+if hefty: y5r else: y5 fi =.5y0; y5r-y5l=y6r-y6l=cap_band;
+forsuffixes $=l,r: if x5$>x6$: x5$:=x6$-eps; fi endfor;
+penstroke z5e--z6e; % bar line
pickup tiny.nib;
x7=.5[x5,x6]; top y7=y5; x8=x7; bot y8=0;
pos7(max(currentbreadth+eps,.5[cap_band,cap_stem]),0);
@@ -369,7 +371,7 @@ if serifs: pos0(flare+(cap_stem-stem),180); pos1(cap_hair,180);
pos16(.25[vair,curve],angle(z16-z14)+90);
z15l=z14l+whatever*(z14-z15); z15r=z14r+whatever*(z14-z15);
filldraw stroke z15e--z14e{z16r-z14}..{.5right}z16e; % hachek
-else: y1=.8h; pos1(min(cap_hair,1.2flare)-.2tiny,170);
+else: y1=.8h; pos1(max(currentbreadth+eps,min(cap_hair,1.2flare)-.2tiny),170);
filldraw stroke z1e{x2-x1,10(y2-y1)}...{right}z2e; % upper bowl
pos10(middle_weight,45);
filldraw stroke z10e{left}...z9e{z8e-z9e}; % tail
@@ -467,8 +469,8 @@ if serifs:
y1=h-vround max(.1fig_height+.5flare,.15fig_height-.5flare)+o;
x5=(.5w+eps);
rt x1r=hround min(.5w-max(
- if monospace:.67u,.55stem else:u,.7stem fi)+eps,lft x5l-1);
- x2=x4+if monospace:-fi.25u=hround (.67[lft x3r,rt x1r]);
+ if monospace:.67u,.55stem else:u,.7stem fi),lft x5l-1)+eps;
+ x2=x4+if monospace:-fi.25u=hround min(.67[lft x3r,rt x1r],rt x1r-.5)-eps;
{{less_tense; bulb(2,1,0)}}; % bulb
y5=max(good.y(.5bar_height-.9),y4l+vair');
(x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u);
@@ -563,8 +565,8 @@ if serifs:
y1=h-vround max(.1fig_height+.5flare,.15fig_height-.5flare)+o;
x5=(.5w+eps);
rt x1r=hround min(.5w-max(
- if monospace:.67u,.55stem else:u,.7stem fi)+eps,lft x5l-1);
- x2=x4+if monospace:-fi.25u=hround (.67[lft x3r,rt x1r]);
+ if monospace:.67u,.55stem else:u,.7stem fi),lft x5l-1)+eps;
+ x2=x4+if monospace:-fi.25u=hround min(.67[lft x3r,rt x1r],rt x1r-.5)-eps;
{{less_tense; bulb(2,1,0)}}; % bulb
y5=max(good.y(.5bar_height-.9),y4l+vair');
(x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u);
@@ -614,7 +616,7 @@ _one:=8; _two:=9; _three:=10; _four:=11; _five:=12;
%
if serifs: pickup crisp.nib;
else: pickup pencircle scaled min(.5fine,.15vair); fi
-numeric stem[]; stem1=if hefty: fudged.hair-2stem_corr else: .7[vair,stem] fi;
+numeric stem[]; stem1=max(currentbreadth+eps,if hefty: fudged.hair-2stem_corr else: .7[vair,stem] fi);
stem2=if serifs: vair else: max(currentbreadth+eps,.6[thin_join,vair]) fi;
stem3=if serifs: hair else: max(currentbreadth+eps,.6[thin_join,vair]) fi;
pos[_one](stem1,0); pos[_two](stem1,0);
@@ -661,8 +663,8 @@ if serifs:
top y2r=h+o; bot y4r=-o; lft x3r=hround u; y3=.5[y2,y4];
y1=h-vround max(.1fig_height+.5flare,.15fig_height-.5flare)+o; x5=(.5w+eps);
rt x1r=hround min(.5w-max(
- if monospace:.67u,.55stem else:u,.7stem fi)+eps,lft x5l-1);
- x2=x4+if monospace:-fi.25u=hround (.67[lft x3r,rt x1r]);
+ if monospace:.67u,.55stem else:u,.7stem fi),lft x5l-1)+eps;
+ x2=x4+if monospace:-fi.25u=hround min(.67[lft x3r,rt x1r],rt x1r-.5)-eps;
{{less_tense; bulb(2,1,0)}}; % bulb
y5=max(good.y(.5bar_height-.9),y4l+vair');
(x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u);
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2slxi.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2slxi.mf
deleted file mode 100644
index 63940e75808..00000000000
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2slxi.mf
+++ /dev/null
@@ -1,189 +0,0 @@
-%
-% lgt2slxi.mf
-%
-%% Cyrillic font container with T2 encoding beta-support
-%
-% This file is future part of lxfonts package
-% Version 3.4 // Patchlevel=1
-% (c) O.Lapko
-%
-% This package belongs to the public domain 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.
-%
-% Content:
-%
-% Italic Old Slav letters
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% List of letternames
-%
-% vnarrow_e
-% zelo
-% vuk
-% vi_a
-% izh_dgr
-% Vl_yus
-% izh_uml
-% olg
-% oery
-% ohrdsgn
-% oo_cdot
-% oo_cddot
-% Vizh
-% t_peter
-% zelo_m
-%
-
-LHver_check(3,4); % like |version_check| in ec
-
-lhchar "Italic Cyrillic letter vnarrow_e";
-cyrcharmoving(vnarrow_e);
-
-lhchar "Italic Cyrillic letter zelo";
-cyrcharmoving(zelo);
-
-lhchar "Italic Cyrillic letter vuk - variant uk";
-cyrcharmoving(vuk);
-
-lhchar "Italic Cyrillic letter vi_a - variant iot a";
-cyrcharmoving(vi_a);
-
-lhchar "Italic Cyrillic letter izh_dgr - izhitsa double grave";
-cyrchar_twice(izh_dgr,9.5u#,x_height#+acc_height#,0);
-italcorr x_height#*slant+.25u#;
-adjust_fit(.25u#,max(u#,.5u#+.5flare#)); %izhy_adj
-full_h:=h; h:=x_height;
-% ital_izh;
-numeric left_stem,right_stem,outer_jut,alpha,bulb_diam;
-left_stem=stem-stem_corr; bulb_diam=7/8[hair,flare];
-right_stem=min(hair if hefty:-2stem_corr fi,left_stem);
-outer_jut=.75jut; x1l=l+letter_fit+outer_jut+.25u; x4r=w-x1l; y1=y4=h;
-x2-x1=x4-x3; x2l+apex_corr=x3l; y2=y3=-apex_o;
-alpha=diag_ratio(2,right_stem,y1-y2,x4r-x1l-apex_corr);
-penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
-penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
-z0=whatever[z1r,z2r]=whatever[z3l,z4l];
-penpos4''(alpha*right_stem,0);
-penpos5(vair,90); penpos6(hair,0); penpos7(flare,0);
-x5=if serifs:.5[x4'',rt x6r] else: rt x6r fi; top y5r=h+oo;
-y4''=min(.9x_height,y5l-vair); z4''=whatever[z3,z4];
-rt x6r=hround(r-.5u-.5);
-y6=max(vround(top y5r-.5hair)-1-.5flare,
- min(bar_height+.5flare+2vair'+2,.9[bar_height,h]-.5flare));
-cyrbulb(5,6,7); % bulb
-penpos1'(alpha*left_stem,0); y1'=3/4x_height; z1'=whatever[z1,z2];
-x10=l+letter_fit; x10:=hround(x10-.5hair)+.5hair; y10=2/3x_height;
-penpos9(vair,90); y9r=x_height+oo; x9=min(x1l-.5,x10+u);
-if y0>cap_notch_cut:
- y0:=cap_notch_cut;
- fill z0+.5right{up}...{z4-z3}z4''l...{right}z5r--z5l{left}
- ...z4''r{z3-z4}--diag_end(4r,3r,1,1,2l,1l)--
- z1'l{z1-z2}...{left}z9l--z9r{right}
- ..tension atleast .75 and 1..{z2-z1}z1'r
- ...{down}z0+.5left--cycle; % left and right diagonals
-else:
- pickup pencircle scaled1;
- fill z0--z4''l{z4-z3}...{right}z5r--z5l{left}...{z3-z4}z4''r
- --diag_end(4r,3r,1,1,2l,1l)--
- z1'l{z1-z2}...{left}z9l--z9r{right}
- ..tension atleast .75 and 1..{z2-z1}z1'r
- --cycle; fi % left and right diagonals
-pickup fine.nib;
-pos9'(vair,90); z9'=z9; pos10(hair,180);
-filldraw stroke z10e{up}...z9'e{right};
-%%%
-% the accent
-if monospace: hpos_corr=-2u; put_gravis; hpos_corr=2u; put_gravis;
-else: hpos_corr=-1.5u; put_gravis; hpos_corr=1.5u; put_gravis; fi
-repeat_once;
-penlabels(0,1,2,3,4); endchar;
-
-lhchar "Italic Cyrillic letter Vl_yus - like crossed Delta";
-cyrcharmoving(Vl_yus);
-
-lhchar "Italic Cyrillic letter izh_uml - izhitsa umlaut";
-cyrchar(izh_uml,9.5u#,lc_trema_height#,0);
-italcorr x_height#*slant+.25u#;
-adjust_fit(.25u#,max(u#,.5u#+.5flare#)); %izhy_adj
-h:=x_height;
-% ital_izh;
-numeric left_stem,right_stem,outer_jut,alpha,bulb_diam;
-left_stem=stem-stem_corr; bulb_diam=7/8[hair,flare];
-right_stem=min(hair if hefty:-2stem_corr fi,left_stem);
-outer_jut=.75jut; x1l=l+letter_fit+outer_jut+.25u; x4r=w-x1l; y1=y4=h;
-x2-x1=x4-x3; x2l+apex_corr=x3l; y2=y3=-apex_o;
-alpha=diag_ratio(2,right_stem,y1-y2,x4r-x1l-apex_corr);
-penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
-penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
-z0=whatever[z1r,z2r]=whatever[z3l,z4l];
-penpos4''(alpha*right_stem,0);
-penpos5(vair,90); penpos6(hair,0); penpos7(flare,0);
-x5=if serifs:.5[x4'',rt x6r] else: rt x6r fi; top y5r=h+oo;
-y4''=min(.9x_height,y5l-vair); z4''=whatever[z3,z4];
-rt x6r=hround(r-.5u-.5);
-y6=max(vround(top y5r-.5hair)-1-.5flare,
- min(bar_height+.5flare+2vair'+2,.9[bar_height,h]-.5flare));
-cyrbulb(5,6,7); % bulb
-penpos1'(alpha*left_stem,0); y1'=3/4x_height; z1'=whatever[z1,z2];
-x10=l+letter_fit; x10:=hround(x10-.5hair)+.5hair; y10=2/3x_height;
-penpos9(vair,90); y9r=x_height+oo; x9=min(x1l-.5,x10+u);
-if y0>cap_notch_cut:
- y0:=cap_notch_cut;
- fill z0+.5right{up}...{z4-z3}z4''l...{right}z5r--z5l{left}
- ...z4''r{z3-z4}--diag_end(4r,3r,1,1,2l,1l)--
- z1'l{z1-z2}...{left}z9l--z9r{right}
- ..tension atleast .75 and 1..{z2-z1}z1'r
- ...{down}z0+.5left--cycle; % left and right diagonals
-else:
- pickup pencircle scaled1;
- fill z0--z4''l{z4-z3}...{right}z5r--z5l{left}...{z3-z4}z4''r
- --diag_end(4r,3r,1,1,2l,1l)--
- z1'l{z1-z2}...{left}z9l--z9r{right}
- ..tension atleast .75 and 1..{z2-z1}z1'r
- --cycle; fi % left and right diagonals
-pickup fine.nib;
-pos9'(vair,90); z9'=z9; pos10(hair,180);
-filldraw stroke z10e{up}...z9'e{right};
-%%%
-% the accent
-lowercase_umlaut(.5[x1,x4]-.5w,0, 11,12,13,14);
-penlabels(0,1,2,3,4,5,6,7,8,9,10, 11,12,13,14); endchar;
-
-lhchar "Italic Cyrillic letter olg - old soft el (elghe)";
-cyrcharmoving(olg);
-
-lhchar "Italic Cyrillic letter oery - old ery";
-cyrcharmoving(oery);
-
-lhchar "Italic Cyrillic letter ohrdsn - old hard sign";
-cyrcharmoving(ohrdsn);
-
-lhchar "Italic Cyrillic letter oo_cdot - old o cdot";
-cyrcharmoving(oo_cdot);
-
-lhchar "Italic Cyrillic letter oo_cddot - old o double cdot";
-cyrcharmoving(oo_cddot);
-
-lhchar "Italic Cyrillic letter vizh - Variant izhitsa";
-cyrcharmoving(vizh);
-
-lhchar "Italic Cyrillic letter t_peter -- looks like m";
-cyrcharmoving(t_peter);
-
-lhchar "Italic Cyrillic letter zelo_m -- variant zelo mirror";
-cyrcharmoving(zelo_m);
-
-lhchar "Italic Cyrillic letter izhei";
-cyrcharmoving(izhei);
-
-lhchar "Italic Cyrillic letter lo";
-cyrcharmoving(lo);
-
-lhchar "Italic Cyrillic letter mo";
-cyrcharmoving(mo);
-
-endinput;
-%end of file
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2slxl.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2slxl.mf
deleted file mode 100644
index 9960031cc3f..00000000000
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2slxl.mf
+++ /dev/null
@@ -1,843 +0,0 @@
-%
-% lgt2slxl.mf
-%
-%% Cyrillic font container with T2 encoding beta-support
-%
-% This file is future part of lxfonts package
-% Version 3.4 // Patchlevel=0
-% (c) O.Lapko
-%
-% This package belongs to the public domain 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.
-%
-% Content:
-%
-% Lowercase Old Slav letters
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% List of letternames
-%
-% vnarrow_e
-% zelo
-% vuk
-% vi_a
-% izh_dgr
-% Vl_yus
-% izh_uml
-% olg
-% oery
-% ohrdsgn
-% oo_cdot
-% oo_cddot
-% vizh
-% t_peter
-% zelo_m
-%
-
-LHver_check(3,4); % like |version_check| in ec
-
-lhchar "Lowercase Cyrillic letter variant narrow_e";
-cyrchar(vnarrow_e,7u#,x_height#,0); % eng
-italcorr x_height#*slant-.2u#;
-adjust_fit(if monospace: .5u#,-1.5u# else: 0,-u# fi);
-pickup fine.nib; pos2(vair',90); pos4(vair',270);
-x2=x4=.5(w+u); top y2r=vround(h+1.5oo); bot y4r=-oo;
-pos3(curve,180); lft x3r=hround max(.6u,1.35u-.5curve); y3=.5h; % eng
-if serifs: pos1(hair,0); pos0(flare,0);
- y1=min(bar_height+2vair'+2,.9[bar_height,h]-flare);
- pos5(hair,0); rt x1r=rt x5r=hround(w-.5u);
- y5=max(good.y(.5bar_height-.9),y4l+vair');
- (x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u);
- x6r=x6l+(x1r-x1l)=.5[x2r,x1r]+eps; x7r=x7l+(x5r-x5l)=.5[x4r,x5r]+eps;
- forsuffixes e=l,r: path pt.e,pb.e; numeric tt.e,tb.e;
- pt.e=z1e{x2-x1,5(y2-y1)}...{left}z2e;
- pb.e=z4e{right}..tension .9 and 1..{x5-x4,5(y5-y4)}z5e;
- tt.e=ypart(((x6e,0)--(x6e,h)) intersectiontimes pt.e);
- tb.e=ypart(((x7e,0)--(x7e,h)) intersectiontimes pb.e); endfor
- filldraw stroke subpath(tt.e,1) of pt.e &
- pulled_super_arc.e(2,3)(.7superpull) & pulled_super_arc.e(3,4)(.5superpull)
- & subpath(0,tb.e) of pb.e; % arc and lower terminal
-else: pos1(4/7[vair',flare],80);
- rt x1r=hround(w-.6u); top y1r=vround .82[bar_height,top y2r];
- pos5(.6[vair',flare],275); rt x5r=hround(w-.5u);
- y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
- x6r=x6l+.7(x1r-x1l)=.5[x2r,x1r]+eps; x7r=x7l+.7(x5r-x5l)=.5[x4r,x5r]+eps;
- forsuffixes e=l,r: path p.e,pt.e; numeric tt.e,tb.e;
- p.e=z4e{right}..tension .9 and 1..z5e;
- if angle direction 1 of p.e>75:
- p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi
- pt.e=term.e(2,1,right,.8,4); % upper terminal
- tt.e=ypart(((x6e,0)--(x6e,h+o+eps)) intersectiontimes pt.e);
- tb.e=ypart(((x7e,0)--(x7e,h+o+eps)) intersectiontimes p.e); endfor
- filldraw stroke subpath(0,tt.e) of pt.e; % upper terminal
- filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
- & pulled_super_arc.e(3,4)(.5superpull) & subpath(0,tb.e) of p.e; fi % arc and lower terminal
-% hstroke
-bar_stroke(x3l,0.85[x3l,x7l]-eps); %bar
-penlabels(1,1',2,3,4,5,6,7,8,9); endchar;
-
-lhchar "Lowercase Cyrillic letter zelo";
-cyrchar(zelo,8u#,x_height#,sbeak#);
-italcorr x_height#*slant-.5serif_fit#-.3u#;
-adjust_fit(0,.5serif_fit#);
-numeric arm_thickness[],z_stem;
-if hefty: arm_thickness1=Vround(vair-vair_corr); arm_thickness2=vair;
- z_stem=.6[vair,stem];
-else: arm_thickness1=vair; arm_thickness2=vair'; z_stem=.9[vair,stem]; fi
-pickup tiny.nib; rt x1r=rt x2r=hround(w-.8u); lft x3l=lft x4l=hround 1.25u;
-top y1=h; y2=min(y1,h-2/3arm_thickness1);
-bot y4=1/6h; y3=max(y4,2/3arm_thickness2);
-numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3));
-penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0);
-penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0);
-pair delta; delta=penoffset z3-z2 of currentpen;
-fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l
- ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r
- ---cycle; % diagonal
-pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180);
-top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.4)-eps;
-arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak
-if not serifs: pickup fine.nib; fi
-pos7(arm_thickness2,-90); pos8(max(currentbreadth+eps,.6[thin_join,vair]),180);
-bot y7r=tiny.bot y4; x7=x4r; x0=w+.75u; y0=y7l;
-z8l=z0+whatever*(z2-z3); bot y8=-d-o;
-path p; p=(z7l{right}.. .45[z0,.5[z7,z8]] ..{z3-z2}z8l);
-z9=point 1 of p; pos9(curve,angle(direction 1 of p)-90);
-filldraw stroke z7e{right}...z9e{z8-z7}...{z3-z2}z8e; % tail
-penlabels(1,2,3,4,5,6,7,8); endchar;
-
-lhchar "Lowercase Cyrillic letter Vuk -- variant uk";
-cyrchar(vuk,9u#,x_height#+acc_height#,0);
-italcorr .7x_height#*slant;
-adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); %o
-h:=.8x_height;
-% lower_o;
-penpos1(vair,90); penpos3(vair',-90); penpos2(curve,180); penpos4(curve,0);
-x2r=hround max(.5u,1.25u-.5curve);
-x4r=w-x2r; x1=x3=.5w; y1r=h+vround 1.5oo; y3r=-oo;
-y2=y4=.5h-vair_corr; y2l:=y4l:=.52h;
-penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
- & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl
-%%%%%
-% "hachek"
-if serifs:
- penpos14(1.2vair',90); penpos15(whatever,0);
- x14=x1; y14=h+oo-eps;
- x1-x15=x16-x1=good.x 3.25u; y15=y16=x_height+.5acc_height+oo;
- penpos16(.25[vair,curve],angle(z16-z14)+90);
- z15l=z14l+whatever*(z14-z15); (x15r,y)=z14r+whatever*(z14-z15);
- fill stroke z15e--z14e{z16r-z14}..{.5right}z16e; % diagonals
-else:
- pickup fine.nib;
- pos14(3/4[vair,hair],0); pos16(3/4[vair,hair],0);
- pos15(7/8[vair,fudged.stem],0);
- x1-x14=x16-x1+eps; y15=h+oo-eps; x15=x1;
- y14=y16=x_height+.35acc_height+oo; x14l=hround(rt x15r-3.5u-.5vair);
- z0=whatever[z14r,z15r]=whatever[z15l,z16l]; y0'=max(y1r,y1l+notch_cut);
- pair delta[];
- delta1=penoffset z15-z14 of currentpen;
- delta2=penoffset z16-z15 of currentpen;
- fill z15l---z14l+delta1..top z14l---top z14r..z14r-delta1
- if y0'<y0: {z0-z14r}...{down}(x0-1,y0')--(x0+1,y0'){up}...{z16l-z0}
- else: ---z0--- fi
- z16l-delta2..top z16l---top z16r..z16r+delta2---z15r--cycle; fi % diagonals
-%%%
-penlabels(1,2,3,4); endchar;
-
-% A from AE
-lhchar "Lowercase Cyrillic letter ligature vi_a - iot a";
-cyrchar(vi_a,8.5u#,x_height#,0);
-italcorr x_height#*slant-beak_jut#-.5u#;
-adjust_fit(if monospace: 4u# else: 4.75u# fi +serif_fit#,
- serif_fit#);
-numeric left_stem,amid_stem,outer_jut,alpha;
-amid_stem=max(tiny.breadth,hround .9[mfudged.hair,mfudged.stem]);
-pickup tiny.nib; pos1(amid_stem,0); pos2(amid_stem,0);
-rt x1r=rt x2r=hround(w-max(2u,3u-.5amid_stem));
-top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; % stem
-pos5(bar,-90); z0=z5;
-x5=x1; top y5l=vround(if hefty:.52 else:.48 fi\\[y2,y1]+.5bar);
-left_stem=if monospace:fudged.hair else: hair fi if hefty: -2stem_corr fi;
-outer_jut=.8jut; x11l=outer_jut+.35u-eps; y11=0;
-x12=x1l-apex_corr-if monospace:2 fi\\u; y12=h;
-alpha=diag_ratio(1,.5left_stem,y12-y11,x12-x11l);
-penpos11(alpha*left_stem,0); penpos12(alpha*left_stem,0);
-fill diag_end(12l,11l,1,1,11r,12r)
- --diag_end(11r,12r,1,1,12l,11l)--cycle; % diagonal
-y10=h-slab; z10=whatever[z11,z12];
-fill z10--(x1,y10)--(x1,h)--z12--cycle; % link
-penpos13(whatever,angle(z2-z1)); z13=whatever[z11,z12];
-penpos14(.6[thin_join,vair],90); x14=x0; y13l=y14l; y13r=y14r;
-if hefty: y14r=.4h; else: y14=y0; fi
-penstroke z13e--z14e; % bar line
-numeric t; t=slab;
-if serifs: numeric inner_jut; pickup tiny.nib;
- prime_points_inside(11,12);
- if rt x11'r+cap_jut+.5u+1<=lft x2l-.75cap_jut: inner_jut=cap_jut;
- else: rt x11'r+inner_jut+.5u+1=lft x2l-.75inner_jut; fi
- save slab; slab:=vair; % lower.slab
- dish_serif(11',12,i,1/2,outer_jut,j,.6,inner_jut)(dark); % lower left serif
- slab:=Vround(vair-vair_corr); % lower.slab
- nodish_serif(1,2,a,1/3,jut+x1l-x12,b,1/3,jut); % upper serif
- nodish_serif(2,1,c,1/3,.75inner_jut,d,1/3,jut); % lower middle serif
-fi
-%
-z15=whatever[z11,z12]; y15+.5bar+eps=min(8h,h-max(1.2slab,bracket))-eps;%t=slab
-% i_part(15);
-_zero:=15;
-_one:=16; _two:=17; _three:=18; _four:=19;
-%
-pickup tiny.nib; pos[_one](stem,0); pos[_two](stem,0);
-lft x[_one]l=lft x[_two]l=
- l+letter_fit+if not monospace: serif_fit+ fi hround(2.5u-.5stem-eps);
-top y[_one]=h; bot y[_two]=0;
-filldraw stroke z[_one]e--z[_two]e; % stem
-if serifs:
- slab:=Vround(vair-vair_corr); % lower.slab
- dish_serif([_one],[_two],s,1/3,jut,t,1/3,jut); % upper stem serif
- slab:=vair; % lower.slab
- dish_serif([_two],[_one],u,1/3,jut,v,1/3,jut); fi % lower stem serif
-x[_three]=x[_zero]; x[_four]=x[_one];
-y[_three]=y[_four]=y[_zero]; pickup fine.nib;
-penpos[_three](.6[thin_join,vair],90);
-penpos[_four](.6[thin_join,vair],90); %fi
-penstroke z[_three]e--z[_four]e; % bar
-%%%%%
-penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19); endchar;
-
-% for shape, see Knizhnay Shrift p 58 Bodoni, Parma 1818
-lhchar "Lowercase Cyrillic letter izh_dgr - izhitsa double grave";
-cyrchar_twice(izh_dgr,if serifs: 9.5u# else:9u# fi,x_height#,0);
-italcorr x_height#*slant+.25u#;
-adjust_fit(serif_fit# if monospace:+.5u#fi,
- if serifs: max(.75u#,.25u#+.5flare#) else:max(0,.5stem#-.5u#) fi); % lizh_adj
-begingroup
-% lower_izh;
-numeric left_stem,right_stem,outer_jut,alpha,bulb_diam;
-left_stem=stem-stem_corr; bulb_diam=7/8[hair,flare];
-right_stem=min(hair if hefty:-2stem_corr fi,left_stem);
-outer_jut=.75jut; x1l=l+letter_fit+outer_jut+.25u; x4r=w-x1l; y1=y4=h;
-x2-x1=x4-x3; x2l+apex_corr=x3l; y2=y3=-apex_o;
-alpha=diag_ratio(2,right_stem,y1-y2,x4r-x1l-apex_corr);
-penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
-penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
-z0=whatever[z1r,z2r]=whatever[z3l,z4l];
-penpos4'(alpha*right_stem,0); penpos5(vair,90);
-x5=if serifs: .5[x4',x6r] else:x6r fi; y5r=h+oo;
-x6r=hround(r-.35u);
-y6=max(vround(y5r-.25tiny-.5flare),
- min(bar_height+.5flare+2vair'+2,.9[bar_height,h]-.5flare)); %zh bulb h
-z4'=whatever[z3,z4]; y4'=min(y6-.5hair,8/5bar_height)-eps;
-if serifs: penpos6(hair,0); penpos7(flare,0);
- cyrbulb(5,6,7); fi % bulb
-if y0>cap_notch_cut: y0:=cap_notch_cut;
- fill z0+.5right{up}...{z4-z3}z4'l...{right}
- if serifs: z5r--z5l
- else:
- (.5[x4,x4r],y5r)--(fine.lft x5r,y5r)..(x5r,fine.bot y5r)--
- (x5l,fine.top y5l)..(fine.lft x5l,y5l) fi
- {left}...z4'r{z3-z4}
- --diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1}
- ...{down}z0+.5left--cycle; % left and right diagonals
-else: fill z0--z4'l{z4-z3}...{right}z5r--z5l{left}...{z3-z4}z4'r
- --diag_end(4r,3r,1,1,2l,1l)
- --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
-if serifs: numeric inner_jut; pickup tiny.nib;
- prime_points_inside(1,2);
- if rt x1'r+jut+.5u+1<=lft x4l-jut+.5tiny: inner_jut=jut;
- else: rt x1'r+inner_jut+.5u+1=lft x4l-inner_jut+.5tiny; fi
- save slab; slab:=Vround(vair-vair_corr); % lower.slab
- dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); fi % upper left serif
-%%%%%
-endgroup;
-% the accent
-if monospace: hpos_corr=-2u; put_gravis; hpos_corr=2u; put_gravis;
-else: hpos_corr=-1.5u; put_gravis; hpos_corr=1.5u; put_gravis; fi
-repeat_once;
-penlabels(0,1,2,3,4,5,6,7); endchar;
-
-lhchar "Lowercase Cyrillic letter Vl_yus - like crossed Delta";
-cyrchar(Vl_yus,10u#+2stem#,x_height#,0);
-adjust_fit(serif_fit#,serif_fit#);
-numeric left_stem,right_stem,outer_jut,alpha;
-right_stem=fudged.stem-stem_corr;
-left_stem=min(fudged.hair if hefty:-2stem_corr fi,right_stem);
-outer_jut=.75jut; x1l=w-x4r=l+letter_fit+.25u; y1=y4=0; %+outer_jut
-x2-x1=x4-x3; x3r=x2r+apex_corr; y2=y3=h+apex_o+apex_oo;
-alpha=diag_ratio(2,left_stem,y2-y1,x4r-x1l-apex_corr);
-penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
-penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
-z0=whatever[z1r,z2r]=whatever[z3l,z4l];
-if y0<h-notch_cut: y0:=h-notch_cut;
- fill z0+.5right{down}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)
- --diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1}
- ...{up}z0+.5left--cycle; % left and right diagonals
-else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)
- --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
-penpos5(whatever,angle(z2-z1)); z5=whatever[z1,z2];
-penpos6(whatever,angle(z3-z4)); z6=whatever[z3,z4]; y6=y5;
-if hefty: y5r else: y5 fi =.5y0;
-y5r-y5l=y6r-y6l=.6[thin_join,vair];
-penstroke z5e--z6e; % middle bar line
-penpos5'(whatever,angle(z2-z1)); z5'=whatever[z1,z2];
-penpos6'(whatever,angle(z3-z4)); z6'=whatever[z3,z4]; y6'=y5';
-bot y5'l=0; y5'r-y5'l=y6'r-y6'l=if hefty:max(.7slab,y5r-y5l) else: slab fi;
-penstroke z5'e--z6'e; % bar line
-penlabels(0,1,2,3,4,5,5',6,6'); endchar;
-
-% for shape, see Knizhnay Shrift p 58 Bodoni, Parma 1818
-lhchar "Lowercase Cyrillic letter izh_uml - izhitsa umlaut";
-cyrchar(izh_uml,if serifs: 9.5u# else:9u# fi,lc_trema_height#,0);
-italcorr x_height#*slant+.25u#;
-adjust_fit(serif_fit# if monospace:+.5u# fi,
- if serifs: max(.75u#,.25u#+.5flare#) else:max(0,.5stem#-.5u#) fi); % lizh_adj
-full_h:=h; h:=x_height;
-% lower_izh;
-numeric left_stem,right_stem,outer_jut,alpha,bulb_diam;
-left_stem=stem-stem_corr; bulb_diam=7/8[hair,flare];
-right_stem=min(hair if hefty:-2stem_corr fi,left_stem);
-outer_jut=.75jut; x1l=l+letter_fit+outer_jut+.25u; x4r=w-x1l; y1=y4=h;
-x2-x1=x4-x3; x2l+apex_corr=x3l; y2=y3=-apex_o;
-alpha=diag_ratio(2,right_stem,y1-y2,x4r-x1l-apex_corr);
-penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
-penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
-z0=whatever[z1r,z2r]=whatever[z3l,z4l];
-penpos4'(alpha*right_stem,0); penpos5(vair,90);
-x5=if serifs: .5[x4',x6r] else:x6r fi; y5r=h+oo;
-x6r=hround(r-.35u);
-y6=max(vround(y5r-.25tiny-.5flare),
- min(bar_height+.5flare+2vair'+2,.9[bar_height,h]-.5flare)); %zh bulb h
-z4'=whatever[z3,z4]; y4'=min(y6-.5hair,8/5bar_height)-eps;
-if serifs: penpos6(hair,0); penpos7(flare,0);
- cyrbulb(5,6,7); fi % bulb
-if y0>cap_notch_cut: y0:=cap_notch_cut;
- fill z0+.5right{up}...{z4-z3}z4'l...{right}
- if serifs: z5r--z5l
- else:
- (.5[x4,x4r],y5r)--(fine.lft x5r,y5r)..(x5r,fine.bot y5r)--
- (x5l,fine.top y5l)..(fine.lft x5l,y5l) fi
- {left}...z4'r{z3-z4}
- --diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1}
- ...{down}z0+.5left--cycle; % left and right diagonals
-else: fill z0--z4'l{z4-z3}...{right}z5r--z5l{left}...{z3-z4}z4'r
- --diag_end(4r,3r,1,1,2l,1l)
- --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
-if serifs: numeric inner_jut; pickup tiny.nib;
- prime_points_inside(1,2);
- if rt x1'r+jut+.5u+1<=lft x4l-jut+.5tiny: inner_jut=jut;
- else: rt x1'r+inner_jut+.5u+1=lft x4l-inner_jut+.5tiny; fi
- save slab; slab:=Vround(vair-vair_corr); % lower.slab
- dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); fi % upper left serif
-%%%%%
-% the accent
-lowercase_umlaut(.5[x1,x4]-.5w,0, 8,9,10,11);
-penlabels(0,1,2,3,4); endchar;
-
-lhchar "Lowercase Cyrillic letter ligature olg - old soft el (elghe)";
-cyrchar(olg,10u# % if not serifs:+.5width_adj# fi % dl_width;n_width
- ,x_height#,0);
-italcorr x_height#*slant-beak_jut#+.25u#; %Gamma->x_height+.5u#
-adjust_fit(serif_fit# if not serifs:+.5(stem#-u#) fi, %dl_adj
- if serifs: 2u# else: 3u# fi-.5width_adj#); % old_beak_adj
-% lower_l;
-pickup tiny.nib; pos1(fudged.stem,0); pos2(fudged.stem,0);
-rt x1r=rt x2r=w-hround (2.5u-.5fudged.stem-eps); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; %stem
-numeric light_hair,bot_vair,bulb_diam,left_jut;
-light_hair=if hefty:.5[vair,fudged.hair] else: fudged.hair fi;
-bot_vair=Vround(.5[vair,light_hair]);
-bulb_diam=hround 7/8[hair,flare];
-left_jut=
- if serifs: max(limit_dist,1.1jut) else: hround (w+serif_fit-rt x2r-.5u) fi;
-x3=1/3[w-rt x1r-(1/8left_jut),rt x1r] if not serifs: -.5(stem-u) fi +eps;
-if serifs:
- pos3(light_hair,0); pos4(light_hair,-90);
- pos6(bulb_diam,-180); pos5(hair,-180);
- top y3=h; y6-.5bulb_diam=.12desc_depth-eps; z6r=z5r;
- lft x6r=l+letter_fit+hround(.35u-.5);
- x4=max(lft x5r+.5bulb_diam,.4[lft x5r,rt x3r]);
- bot y4r=-1.5oo-eps; {{less_tense; bulb(4,5,6)}}; %bulb
- filldraw stroke z4e{right}
- ..controls (min(15/16[x4,x3],max(x4,lft x6r+1.75bulb_diam))+(x3e-x3),y4e)
- and (x3e,max(y4l,min(y6-.5,1/3h+eps))+1/3(y4e-y4))..{up}z3e; % left tail
-else:
- pos3'(vair,90); pos1'(vair,90);
- lft x3'=x3-.5light_hair; rt x1'=x1r; top y3'r=top y1'r=h;
- filldraw stroke z3'e--z1'e; % upper bar
- pickup fine.nib; pos3(light_hair,0); pos4(bot_vair,-90); pos5(bot_vair,-90);
- bot y5r=0; x4=.67[x3l,x5];
- lft x5=l+letter_fit+hround(.35u-.5); bot y4r=bot y5r; y3=y3';
- filldraw stroke z3e{down}..controls (x3e,y5e+.35h)
- and (min(7/8[x4e,x3e],x4e+2light_hair)+eps,y4e-eps)..{left}z4e--z5e; fi % left stem
-%%%
-if serifs:
- x0=x3; y0=0;
- numeric inner_jut; inner_jut=min(.5(lft x1l-rt x3r)-eps,.5jut);
- save slab; slab:=vair; % lower.slab
- dish_serif(2,1,a,1/3,jut,b,1/3,jut); %lower right serif
- slab:=Vround(vair-vair_corr); % lower.slab
- nodish_serif(1,2,c,1/3,inner_jut,d,1/3,.5jut); %!!! %upper right serif
- 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
-%%%%%
-% (old) lower right beak(2);
-if (serifs=false) and (old_cyr=true):
- pickup tiny.nib;
- pos7(vair,90); top y7r=h; x7=x2;
- pos8(vair,90); y8=y7; rt x8r=hround(r-.45u);
- filldraw stroke z7e--z8e; % horisontal
- pickup fine.nib; pos9(slab,0); pos10(slab,0);
- rt x9r=rt x10r=tiny.rt x8r; y9=y8r; bot y10=y8l-.7sbeak;
- filldraw stroke z9e--z10e; %vertical
-else:
- pickup crisp.nib;
- pos7(vair,90); top y7r=h; x7=x2; rt x8r=hround(r-.45u);
- pos8(hair,0); y8=good.y(y7l-beak/1.4)-eps;
- arm(7,8,i,beak_darkness,.4beak_jut); % upper arm and beak
-fi
-%%%
-penlabels(1,2,3,4,5,6,7,8,9,10); endchar;
-
-lhchar "Lowercase Cyrillic letter oery - old ery";
-cyrchar(oery,9u#,x_height#,0); % v_witdh
-italcorr x_height#*slant-serif_fit#+jut#-2u#+.5stem#; %d->x_height+jut
-adjust_fit(if serifs: 2u# else: 3u# fi-.5width_adj#, % old_beak_adj
- serif_fit#+4u#);
-pickup tiny.nib; pos1(fudged.stem,0); pos2(fudged.stem,0);
-lft x1l=lft x2l=hround (2.5u-.5fudged.stem); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; % stem
-if serifs:
- save slab; slab:=Vround(vair-vair_corr); % lower.slab
- nodish_serif(1,2,a,1/3,.5jut,b,1/3,.5jut); % upper serif
- slab:=vair; % lower.slab
- nodish_serif(2,1,c,1/3,jut,d,1/3,.5jut); fi % lower serif
-% lsftsn_bowl(2);
-_zero:=2;
-_one:=3; _two:=4; _three:=5; _four:=6; _five:=7;
-%
-set_bar_axis;
-penpos[_three](curve if hefty:-3stem_corr fi,0);
-penpos[_four](vair',-90); penpos[_five](vair',-90);
-z[_five]r=bot z[_zero]; y[_four]=y[_five];
-y[_three]=.5[y[_two]l,y[_four]l];
-y[_one]l=y[_two]l=y1.bh; y[_one]r=y[_two]r=y2.bh;
-x[_two]l=x[_two]r=x[_four]=w-3.75u; %.5v_width+.75u;
-x[_one]l=x[_one]r=x[_zero]; x[_three]r=hround(w-.6u);
-x[_two]l:=x[_four]l:=x[_two]r-.25curve;
-fill stroke
- {{if not serifs: interim superness:=more_super; fi
- z[_five]e..super_arc.e([_four],[_three])}} &
- super_arc.e([_three],[_two])..z[_one]e; % lobe
-%%%
-% (old) lower left beak(2);
-if (serifs=false) and (old_cyr=true):
- pickup tiny.nib;
- pos8(vair,90); top y8r=h; x8=x2;
- pos9(vair,90); y9=y8; lft x9r=l+letter_fit+hround.45u;
- filldraw stroke z8e--z9e; % horisontal
- pickup fine.nib; pos10(slab,0); pos11(slab,0);
- lft x10l=lft x11l=tiny.lft x9l; y10=y9r; bot y11=y8l-.7sbeak;
- filldraw stroke z10e--z11e; % vertical
-else:
- pickup crisp.nib;
- pos8(vair,90); top y8r=h; x8=x2; lft x9r=l+letter_fit+hround.45u;
- pos9(hair,180); y9=good.y(y8l-beak/1.4)-eps;
- arm(8,9,i,beak_darkness,-.4beak_jut); % upper arm and beak
-fi
-% I
-w:=w+4u; pickup tiny.nib; rt x12r=rt x13r=w-lft x1l; top y12=h; bot y13=0;
-pos12(fudged.stem,0); pos13(fudged.stem,0);
-filldraw stroke z12e--z13e; % stem
-if serifs:
- save slab; slab:=Vround(vair-vair_corr); % lower.slab
- dish_serif(12,13,e,1/3,jut,f,1/3,jut); % upper serif
- slab:=vair; % lower.slab
- dish_serif(13,12,g,1/3,jut,h,1/3,jut); fi % lower serif
-penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;
-
-lhchar "Lowercase Cyrillic letter ohrdsn - old hard sign";
-cyrchar(ohrdsn,9u#,x_height#,0); % v_witdh
-italcorr .5x_height#*slant+min(.5curve#-.85u#,-.1u#); %p
-adjust_fit(if serifs: 2u# else: 3u# fi-.5width_adj#, % old_beak_adj
- if monospace:.5u# else:0 fi);
-pickup tiny.nib; pos1(fudged.stem,0); pos2(fudged.stem,0);
-lft x1l=lft x2l=hround (2.5u-.5fudged.stem); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; % stem
-if serifs: save slab; slab:=Vround(vair-vair_corr); % lower.slab
- nodish_serif(1,2,a,1/3,.5jut,b,1/3,.5jut); % upper serif
- slab:=vair; % lower.slab
- nodish_serif(2,1,c,1/3,jut,d,1/3,.5jut); fi % lower serif
-% lsftsn_bowl(2);
-_zero:=2;
-_one:=3; _two:=4; _three:=5; _four:=6; _five:=7;
-%
-set_bar_axis;
-penpos[_three](curve if hefty:-3stem_corr fi,0);
-penpos[_four](vair',-90); penpos[_five](vair',-90);
-z[_five]r=bot z[_zero]; y[_four]=y[_five];
-y[_three]=.5[y[_two]l,y[_four]l];
-y[_one]l=y[_two]l=y1.bh; y[_one]r=y[_two]r=y2.bh;
-x[_two]l=x[_two]r=x[_four]=w-3.75u; %.5v_width+.75u;
-x[_one]l=x[_one]r=x[_zero]; x[_three]r=hround(w-.6u);
-x[_two]l:=x[_four]l:=x[_two]r-.25curve;
-fill stroke
- {{if not serifs: interim superness:=more_super; fi
- z[_five]e..super_arc.e([_four],[_three])}} &
- super_arc.e([_three],[_two])..z[_one]e; % lobe
-%%%
-% old lower left beak(2);
-if (serifs=false) and (old_cyr=true):
- pickup tiny.nib;
- pos8(vair,90); top y8r=h; x8=x2;
- pos9(vair,90); y9=y8; lft x9r=l+letter_fit+hround.45u;
- filldraw stroke z8e--z9e; % horisontal
- pickup fine.nib; pos10(slab,0); pos11(slab,0);
- lft x10l=lft x11l=tiny.lft x9l; y10=y9r; bot y11=y8l-.7sbeak;
- filldraw stroke z10e--z11e; % vertical
-else:
- pickup crisp.nib;
- pos8(vair,90); top y8r=h; x8=x2; lft x9r=l+letter_fit+hround.45u;
- pos9(hair,180); y9=good.y(y8l-beak/1.4)-eps;
- arm(8,9,i,beak_darkness,-.4beak_jut); % upper arm and beak
-fi
-penlabels(1,2,3,4,5,6,7,8,9,10,11); endchar;
-
-lhchar "Lowercase Cyrillic letter oo_cdot - old o cdot";
-cyrchar(oo_cdot,10u#,x_height#,0); %f width-u
-italcorr .7x_height#*slant;
-adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi);
-penpos1(vair,90); penpos3(vair',-90); penpos2(curve,180); penpos4(curve,0);
-if serifs: interim superness:=1.05 superness;
- else: interim superness:=1.075 superness; fi
-x2r=hround max(.5u,1.25u-.5curve);
-x4r=w-x2r; x1=x3=.5w; y1r=h+vround 1.5oo; y3r=-oo;
-y2=y4=.5h-vair_corr; y2l:=y4l:=.52h;
-penstroke pulled_arc.e(1,2)
- & pulled_arc.e(2,3) & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl
-% dot
-pickup tiny.nib;
-dot_diam:=min((lft x4l-rt x2l)-1,
- max(tiny.breadth,hround(max(dot_size,cap_curve)-2stem_corr)));
-pos5(dot_diam,0); pos5'(dot_diam,90);
-z5=z5'; x5=x1; y5=.5[y1,y3]; dot(5,5'); % dot
-penlabels(1,2,3,4); endchar;
-
-lhchar "Lowercase Cyrillic letter oo_cddot - old o double cdot";
-cyrchar(oo_cddot,11u#,x_height#,0); %f width - eps
-italcorr .7x_height#*slant;
-adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi);
-penpos1(vair,90); penpos3(vair',-90); penpos2(curve,180); penpos4(curve,0);
-if serifs: interim superness:=1.05 superness;
- else: interim superness:=1.075 superness; fi
-x2r=hround max(.5u,1.25u-.5curve);
-x4r=w-x2r; x1=x3=.5w; y1r=h+vround 1.5oo; y3r=-oo;
-y2=y4=.5h-vair_corr; y2l:=y4l:=.52h;
-penstroke pulled_arc.e(1,2)
- & pulled_arc.e(2,3) & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl
-% dots
-_one:=5; _two:=6; _three:=7; _four:=8;
-dot_diam:=min(.5(lft x4l-rt x2l)-1,
- max(tiny.breadth,hround(max(dot_size,cap_curve)-2stem_corr)));
-pickup tiny.nib;
-pos[_one](dot_diam,0); pos[_two](dot_diam,90);
-x[_one]=x[_two]=.5w-1.375u; y[_one]=y[_two]=.5[y1,y3];
-dot([_one],[_two]); % left dot
-pos[_three](dot_diam,0);
-penpos[_four](y[_two]r-y[_two]l,90);
-y[_three]=y[_four]=y[_one]; x[_three]=x[_four]=x[_one]+2.75u;
-dot([_three],[_four]); % right dot
-penlabels(1,2,3,4); endchar;
-
-lhchar "Lowercase Cyrillic letter vizh - variant izhitsa";
-cyrchar(vizh,if serifs:9.5u# else:9u# fi,x_height#,desc_depth#);
-italcorr x_height#*slant+.25u#;
-adjust_fit(serif_fit# if monospace:+\\.5u#,.5u#+ else:,fi\\ serif_fit#);
-%letter_old_u;
-numeric left_stem,right_stem,bot_stem,bot_vair,outer_jut;
-left_stem=fudged.stem-stem_corr; right_stem=fudged.hair if hefty:-2stem_corr fi;
-bot_stem=fudged.hair if hefty:-8stem_corr fi;
-bot_vair=Vround(if serifs: vair else:.5[vair,bot_stem] fi); outer_jut=.75jut;
-x1l=w-x4r=l+letter_fit+outer_jut+.25u; y1=y4r=h; y2=y3=0; x2l=x3l;
-numeric alpha,alpha[]; x9=3u; y9=bot_vair-d-oo;
-alpha1=diag_ratio(2,bot_stem,y1-y3,x4r-x1l-apex_corr);
-alpha2=diag_ratio(1,bot_stem,y1-y9,x4r-x9);
-if alpha1<alpha2: x2l-x1l=x4r-x3r+apex_corr; alpha=alpha1;
-else: alpha=alpha2; z3l=whatever[z9,z4r-(alpha*bot_stem,0)]; fi
-penpos3(alpha*bot_stem,0); penpos4(alpha*right_stem,0);
-alpha3=(y1++(x2l-x1l))/y1;
-penpos1(alpha3*left_stem,0); penpos2(alpha3*left_stem,0);
-z0=whatever[z1r,z2r]=z4l+whatever*(z3r-z4r);
-if y0>notch_cut: y0:=notch_cut;
- fill z0+.5right{up}...{z4r-z3r}diag_end(0,4l,1,1,4r,3r)
- --z3r--z2l--diag_end(2l,1l,1,1,1r,2r){z2-z1}
- ...{down}z0+.5left--cycle; % left and right diagonals
-else: fill z0--diag_end(0,4l,1,1,4r,3r)--z3r--z2l
- --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
-penpos5(alpha*bot_stem,0); z5r=whatever[z3r,z4r]; bot y5=-d;
-if serifs: fill stroke z3e---z5e; % straight arc
- numeric inner_jut; pickup tiny.nib;
- prime_points_inside(1,2); prime_points_inside(4,3); prime_points_inside(5,3);
- 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
- 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); % upper right serif
- slab:=vair; % lower.slab
- dish_serif(5',3,e,1/2,jut/1.2,f,.6,jut)(dark); % lower serif
-else:
- fill z3r---diag_end(3r,5r,.75,.75,5l,3l)---z3l--cycle; fi % straight arc
-penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
-
-lhchar "Lowercase Cyrillic letter t_peter - like flipped sh";
-cyrchar(t_peter,14.5u# if serifs:+.5width_adj# fi,x_height#,0);
-italcorr x_height#*slant-serif_fit#+jut#-2u#+.5stem#; %d->x_height+jut
-adjust_fit(if monospace: 0,0 else: serif_fit#,serif_fit# fi); %wlett_adj
-% lower_sh;flip
-if odd(fudged.stem-w): change_width; fi % symmetric & all three equal
-pickup tiny.nib;
-pos1(fudged.stem,0); pos2(fudged.stem,0); pos3(fudged.stem,0);
-pos4(fudged.stem,0); pos5(fudged.stem,0); pos6(fudged.stem,0);
-lft x1l=lft x2l=hround(2.5u-.5fudged.stem-eps); x3=x4=w-x1;
-top y1=top y3=top y5=h; bot y2=bot y4=bot y6=0;
-lft x5l=lft x6l=hround (.5[x1,x3]-.5fudged.stem); % middle stem point
-filldraw stroke z1e--z2e; % left stem
-filldraw stroke z3e--z4e; % right stem
-filldraw stroke z5e--z6e; % center stem
-if serifs:
- numeric inner_jut;
- if rt x1r+jut+.5u+1<=lft x5l-jut: inner_jut=jut;
- else: rt x1r+inner_jut+.5u+1=lft x5l-inner_jut; fi
- save slab; slab:=vair; % lower.slab
- dish_serif(2,1,c,1/3,jut,d,1/3,inner_jut); % lower left serif
- dish_serif(6,5,k,1/3,inner_jut,m,1/3,inner_jut); % lower center serif
- dish_serif(4,3,g,1/3,inner_jut,h,1/3,jut); % lower right serif
- inner_jut:=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_jut); % upper left serif
- nodish_serif(3,4,e,1/3,inner_jut,f,1/3,jut); % upper right serif
- nodish_serif(5,6,i,1/3,inner_jut,j,1/3,inner_jut); % upper center serif
- fill z.b0--z.b1--z.e1--z.e0--cycle; % upper inter_serif bar
-else:
- lft x2'= lft x2l; top y2'r=h; pos2'(vair,90);
- rt x4'=rt x4r; y4'=y2'; pos4'(vair,90);
- filldraw stroke z2'e--z4'e; fi
-penlabels(1,2,3,4,5,6); endchar;
-
-lhchar "Lowercase Cyrillic letter zelo_m - variant zelo mirror";
-cyrchar(zelo_m,7.1u#,x_height#,0);
-italcorr .7x_height#*slant;
-adjust_fit(if monospace: .4u#,.5u# else: if serifs:0 else:-.2u# fi,0 fi);
-numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle
-numeric s_slab; s_slab=if serifs: vair else: Vround .1[vair,stem] fi;
-numeric ess'; ess'=max(fine.breadth,ess);
-pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-100);
-pos0(ess',theta); pos7(s_slab,-90); x2l=x0=x7=.5w;
-top y2l=h+vround 1.5oo; bot y7r=-oo;
-y0-.5ess'=y7l+if serifs:.54 else: .52 fi\\(y2r-y7l-ess');
-lft x3l=hround .6u; rt x6r=hround(w-.6u);
-x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine;
-ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r;
-ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r;
-interim superness:=more_super;
-%mirror
-forsuffixes $ = 2l,2,2r,3l,3,3r,4l,4,4r,5l,5,5r,6l,6,6r,7l,7,7r:
- x$:=l+(r-x$); endfor;
-filldraw stroke super_arc.e(2,3) & z3e{down}
- ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke
-if serifs:
- pos1(hair,180); pos8(hair,180);
- rt x1l=hround(w-1.05u); lft x8r=hround .6u;
- bot y1=min(bot y2r,vround 1/5[top y5r,h]);
- top y8=max(top y7l,vround 5/6 bot y4l);
- forsuffixes $ = 1l,1,1r,8l,8,8r: x$:=l+(r-x$); endfor;
- filldraw stroke z1e{up}....{right}z2e; % upper arc
- filldraw stroke z7e{right}....{x8-x7,5(y8-y7)}z8e; % lower arc
- path upper_arc, lower_arc;
- upper_arc=z1{up}....{right}z2; lower_arc=z7{right}....{x8-x7,5(y8-y7)}z8;
- pos10(.3[fine.breadth,hair],180); pos9(.3[fine.breadth,hair],180);
- x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r;
- x1'-x1l=x8r-x8'=1.6curve-fine; y1'=y1; y8'=y8;
- numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1'));
- filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb
- t:=xpart(lower_arc intersectiontimes(z9r--z8'));
- filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb
-else:
- pos1(4/7[s_slab,flare],-100); pos8(flare,-100);
- x1l=good.x(x1l+w-u-rt x1); lft x8r=hround .5u;
- top y1l=vround(.93h+1.5oo); bot y8r=vround .1h-oo;
- forsuffixes $ = 1l,1,1r,8l,8,8r: x$:=l+(r-x$); endfor;
- filldraw stroke term.e(2,1,left,.9,4); % upper arc and terminal
- filldraw stroke term.e(7,8,right,1,4); fi % lower arc and terminal
-penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10); endchar;
-
-lhchar "Lowercase Cyrillic letter izhei";
-cyrchar(izhei,10u# if not serifs:+.5width_adj# fi,x_height#,0); % n_width
-italcorr x_height#*slant-serif_fit#+jut#-2u#+.5stem#; %d->x_height+jut
-adjust_fit(serif_fit#,serif_fit#);
-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
-numeric stem[],alpha[];
-x5=hround (rt x1r-.5)-eps; x6=hround (lft x3l+.5)+eps;
-y5=vround(.45h-eps); y6=vround(.65h-eps);
-stem1=7/8[thin_join,vair];
-penpos5(stem1,90); penpos6(stem1,90);
-fill stroke z5e--z6e; % diagonal
-if serifs:
- numeric inner_jut;
- 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
- slab:=vair; % lower.slab
- dish_serif(2,1,c,1/3,jut,d,1/3,inner_jut); % lower left serif
- dish_serif(4,3,g,1/3,inner_jut,h,1/3,jut); fi % lower right serif
-%%%%%
-penlabels(1,2,3,4,5,6); endchar;
-
-lhchar "Lowercase Cyrillic letter lo";
-cyrchar(lo,10u# % if not serifs:+.5width_adj# fi % dl_width;n_width
- ,x_height#,0);
-italcorr x_height#*slant-serif_fit#+jut#-2u#+.5stem#; %d->x_height+jut
-adjust_fit(serif_fit# if not serifs:+.5(stem#-u#) fi, %dl_adj
- if monospace: 9.5 else: 9 fi u#); %
-% lower_l;
-pickup tiny.nib; pos1(fudged.stem,0); pos2(fudged.stem,0);
-rt x1r=rt x2r=w-hround (2.5u-.5fudged.stem-eps); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; %stem
-numeric light_hair,bot_vair,bulb_diam,left_jut;
-light_hair=if hefty:.5[vair,fudged.hair] else: fudged.hair fi;
-bot_vair=Vround(.5[vair,light_hair]);
-bulb_diam=hround 7/8[hair,flare];
-left_jut=
- if serifs: max(limit_dist,1.1jut) else: hround (w+serif_fit-rt x2r-.5u) fi;
-x3=1/3[w-rt x1r-(1/8left_jut),rt x1r] if not serifs: -.5(stem-u) fi +eps;
-if serifs:
- pos3(light_hair,0); pos4(light_hair,-90);
- pos6(bulb_diam,-180); pos5(hair,-180);
- top y3=h; y6-.5bulb_diam=.12desc_depth-eps; z6r=z5r;
- lft x6r=l+letter_fit+hround(.35u-.5);
- x4=max(lft x5r+.5bulb_diam,.4[lft x5r,rt x3r]);
- bot y4r=-1.5oo-eps; {{less_tense; bulb(4,5,6)}}; %bulb
- filldraw stroke z4e{right}
- ..controls (min(15/16[x4,x3],max(x4,lft x6r+1.75bulb_diam))+(x3e-x3),y4e)
- and (x3e,max(y4l,min(y6-.5,1/3h+eps))+1/3(y4e-y4))..{up}z3e; % left tail
-else:
- pos3'(vair,90); pos1'(vair,90);
- lft x3'=x3-.5light_hair; rt x1'=x1r; top y3'r=top y1'r=h;
- filldraw stroke z3'e--z1'e; % upper bar
- pickup fine.nib; pos3(light_hair,0); pos4(bot_vair,-90); pos5(bot_vair,-90);
- bot y5r=0; x4=.67[x3l,x5];
- lft x5=l+letter_fit+hround(.35u-.5); bot y4r=bot y5r; y3=y3';
- filldraw stroke z3e{down}..controls (x3e,y5e+.35h)
- and (min(7/8[x4e,x3e],x4e+2light_hair)+eps,y4e-eps)..{left}z4e--z5e; fi % left stem
-%%%
-if serifs:
- x0=x3; y0=0;
- numeric inner_jut; inner_jut=min(.5(lft x1l-rt x3r)-eps,.5jut);
- save slab; slab:=vair; % lower.slab
- dish_serif(2,1,a,1/3,jut,b,1/3,jut); % lower right serif
- 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
- filldraw z.c0--z.c1--z.f1--z.f0--cycle; fi % upper inter_serif bar
-%%%
-%O_part
-full_w:=9u;
-_zero:=2;
-_one:=9; _two:=10; _three:=11; _four:=12; _five:=13; _six:=14;
-penpos[_one](vair,90); penpos[_three](vair',-90);
-penpos[_two](curve,180); penpos[_four](curve,0);
-x[_two]r=hround max(.5u,1.25u-.5curve);
-x[_four]r=full_w-x[_two]r; x[_one]=x[_three]=.5full_w;
-y[_one]r=h+vround 1.5oo; y[_three]r=-oo;
-y[_two]=y[_four]=.5h-vair_corr; y[_two]l:=y[_four]l:=.52h;
-%shift
-forsuffixes $ = [_one]l,[_one],[_one]r,[_two]l,[_two],[_two]r,
- [_three]l,[_three],[_three]r,[_four]l,[_four],[_four]r: x$:=x$+w; endfor;
-penstroke pulled_arc.e([_one],[_two]) & pulled_arc.e([_two],[_three])
- & pulled_arc.e([_three],[_four]) & pulled_arc.e([_four],[_one]) & cycle; % bowl
-%%%
-bar_stroke(x[_zero],x[_two]); % bar
-%%%%%
-penlabels(0,1,1',2,3,3',4,5,6);endchar;
-
-lhchar "Lowercase Cyrillic letter mo";
-cyrchar(mo,12u# if not serifs:+width_adj# fi,x_height#,0);
-italcorr x_height#*slant-serif_fit#+jut#-2u#+.5stem#; %d->x_height+jut
-adjust_fit(if monospace: 0,.5u# else: serif_fit#,9u# fi); %wlett_adj
-% lower_m;
-numeric stem[]; % thicknesses of the four strokes
-stem1=hround(fudged.hair+stem_corr);
-stem2=hround(fudged.stem-3stem_corr);
-stem3=min(stem2,hround (fudged.hair-2stem_corr));
-stem4=max(stem1,hround(fudged.stem-3stem_corr));
-pickup tiny.nib; pos1(stem1,0); pos2(stem1,0);
-pos3(stem4,0); pos4(stem4,0);
-x1=x2; x3=x4; x1l=w-x3r; rt x3r=hround (w-2.5u+.5stem4);
-top y1=top y3=h; bot y2=bot y4=0;
-filldraw stroke z1e--z2e; % left stem
-filldraw stroke z3e--z4e; % right stem
-penpos5(stem2,0); penpos6(stem2,0); penpos7(stem3,0); penpos8(stem3,0);
-x5l=x1; x6l=x7l; x8=lft x3l; x6-x5=x8-x7; y5=y8=h; y6=y7;
-if hefty:
- y6=if monospace: vround 1/3h else: oo fi;
- numeric upper_notch,lower_notch;
- upper_notch=h-notch_cut+eps; lower_notch=y5+notch_cut-eps;
- x1'=rt x1r; z1'=whatever[z5l,z6l]; x3'=lft x3l; z3'=whatever[z7r,z8r];
- z0=whatever[z5r,z6r]=whatever[z7l,z8l];
- fill z5l..
- if y1'<upper_notch: {right}(x1'+1,upper_notch){down}... fi
- {z6-z5}diag_in(5l,6l,1,6r)..diag_out(7l,1,7r,8r){z8-z7}
- if y3'<upper_notch: ...{up}(x3'-1,upper_notch){right} fi
- ..z8r--diag_out(8r,1,8l,7l){z7-z8}
- if y0<=lower_notch: ..{z7-z8}z0{z5-z6}..
- else: ...{down}(x0+.5+eps,lower_notch)--(x0-.5-eps,lower_notch){up}... fi
- {z5-z6}diag_in(6r,5r,1,5l)--cycle; % diagonals
-else:
- y6=0; z0=whatever[z5r,z6r]=whatever[z7l,z8l];
- fill z5l..{z6-z5}diag_in(5l,6l,1,6r)..diag_out(7l,1,7r,8r){z8-z7}
- ..z8r--diag_out(8r,1,8l,7l){z7-z8}..{z7-z8}z0{z5-z6}
- ..{z5-z6}diag_in(6r,5r,1,5l)--cycle; fi % diagonals
-%%%
-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
- slab:=vair; % lower.slab
- dish_serif(2,1,b,1/2,jut,c,1/2,jut)(dark); % lower left serif
- dish_serif(4,3,e,1/3,jut,f,1/3,jut); fi % lower right serif
-%%%
-%O_part
-full_w:=9u;
-_zero:=4;
-_one:=9; _two:=10; _three:=11; _four:=12; _five:=13; _six:=14;
-penpos[_one](vair,90); penpos[_three](vair',-90);
-penpos[_two](curve,180); penpos[_four](curve,0);
-x[_two]r=hround max(.5u,1.25u-.5curve);
-x[_four]r=full_w-x[_two]r; x[_one]=x[_three]=.5full_w;
-y[_one]r=h+vround 1.5oo; y[_three]r=-oo;
-y[_two]=y[_four]=.5h-vair_corr; y[_two]l:=y[_four]l:=.52h;
-%shift
-forsuffixes $ = [_one]l,[_one],[_one]r,[_two]l,[_two],[_two]r,
- [_three]l,[_three],[_three]r,[_four]l,[_four],[_four]r: x$:=x$+w; endfor;
-penstroke pulled_arc.e([_one],[_two]) & pulled_arc.e([_two],[_three])
- & pulled_arc.e([_three],[_four]) & pulled_arc.e([_four],[_one]) & cycle; % bowl
-%%%
-bar_stroke(x[_zero],x[_two]); % bar
-%%%%%
-penlabels(0,1,1',2,3,3',4,5,6,7,8); endchar;
-
-endinput;
-%end of file
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2slxu.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2slxu.mf
deleted file mode 100644
index bb3f5d3544f..00000000000
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2slxu.mf
+++ /dev/null
@@ -1,867 +0,0 @@
-%
-% lgt2slxu.mf
-%
-%% Cyrillic font container with T2 encoding beta-support
-%
-% This file is future part of lxfonts package
-% Version 3.4 // Patchlevel=1
-% (c) O.Lapko
-%
-% This package belongs to the public domain 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.
-%
-% Content:
-%
-% Uppercase Old Slav letters
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% List of letternames
-%
-% VNARROW_E
-% ZELO
-% VUK
-% VI_A upper
-% IZH_dgr
-% VL_YUS
-% IZH_uml
-% OLG
-% OERY
-% OHRDSN
-% OO_cdot
-% OO_cddot
-% VIZH
-% T_peter
-% ZELO_m
-%
-
-LHver_check(3,4); % like |version_check| in ec
-
-iff serifs:%
-lhchar "Uppercase Cyrillic letter variant NARROW_E - like Ukrainian E";
-cyrchar(VNARROW_E,13u#,cap_height#,0);
-if is_small_cap: getcharcode(vnarrow_e); fi
-italcorr cap_height#*slant-.5u#;
-adjust_fit(0,0);
-% upper_ukre;
-pickup fine.nib; pos1(cap_hair,0); pos2(cap_band,90);
-pos3(cap_curve,180); pos4(cap_band,270); pos5(hair,360);
-rt x1r=rt x5r=hround(w-u); lft x3r=hround u; x2=x4=.55[x3,x1];
-top y2r=h+o; bot y4r=-o; y3=.5h-vair_corr; y3l:=.52h;
-bot y1=min(vround.675h,bot y2l-eps);
-y5=max(good.y .95(h-y1),y4l+eps);
-(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)}...pulled_super_arc.e(2,3)(.5superpull)
- & pulled_super_arc.e(3,4)(.5superpull)...{up}z5e; % arc
-pos6(.3[fine.breadth,cap_hair],0); x6r=x1r; top y6=h+o;
-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
-% upukre_bar;
-numeric bar[]; y7=y8=y3;
-x7=x3l; x8=(min(lft x1l-.5hair,0.85[x3l,x1l]));
-if (serifs=true) and (bar#<=.5curve#):
- penpos7(cap_bar,90); penpos8(cap_bar,90);
- bar2=7/8[cap_bar,fudged.cap_stem-3stem_corr];
- penpos9(bar2,45); z9=.575[z7l,z8l];
- fill circ_stroke z8e{-2,-1}..{-2,1}z9e..{-2,-1}z7e; % curve /\/
-else:
- pickup fine.nib; pos7(cap_bar,90); pos8(cap_bar,90);
- filldraw stroke z7e--z8e; fi % bar --
-%%%%%
-penlabels(1,1',2,3,4,5,6); endchar;
-
-iff not serifs:%
-lhchar "Uppercase Cyrillic letter variant NARROW_E - like Ukrainian E";
-cyrchar(VNARROW_E,11.5u#,cap_height#,0);
-if is_small_cap: getcharcode(vnarrow_e); fi
-italcorr cap_height#*slant-.5u#;
-adjust_fit(0,0);
-% uppers_ukre;
-pickup fine.nib; pos1(1.2flare,80); pos2(slab,90);
-pos3(cap_curve,180); pos4(slab,270); pos5(flare,275);
-rt x1r=hround(w-1.1u); x2=x4=.5w+1.25u;
-lft x3r=hround max(u,2u-.5cap_curve); rt x5r=hround(w-.9u);
-top y1r=vround.95h+o; top y2r=h+o; y3=.5h;
-bot y4r=-o; bot y5r=vround .08h-o; 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);
-% uukres_bar;
-numeric bar[]; y6=y7=y3; x6=x3l; x7=(min(lft x1l-.5hair,0.85[x3l,x1l]));
-pickup fine.nib;
-bar1=if is_small_cap:max(fine.breadth+eps,.6[thin_join,vair]) else: cap_bar fi;
-pos6(bar1,90); pos7(bar1,90);
-filldraw stroke z6e--z7e; % bar --
-%%%%%
-penlabels(1,1',2,3,4,5,6); endchar;
-
-lhchar "Uppercase Cyrillic letter ZELO";
-cyrchar(ZELO,11u#,cap_height#,cap_sbeak#);
-if is_small_cap: getcharcode(zelo); fi
-italcorr cap_height#*slant-.5u#;
-adjust_fit(0,0);
-numeric arm_thickness[],z_stem;
-if hefty: arm_thickness1=Vround(slab-vair_corr); arm_thickness2=slab;
- z_stem=.8[vair,cap_stem];
-else: arm_thickness1=slab; arm_thickness2=cap_band;%vround(slab+vair_corr);
- z_stem=.9[vair,cap_stem]; fi
-pickup tiny.nib; x3l-.75u=x4l-.75u=w-x1r=w-x2r; lft x3l=hround 1.75u;
-top y1=h; y2=min(y1,h-2/3arm_thickness1);
-bot y4=1/6h; y3=max(y4,2/3arm_thickness2);
-numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l);
-penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0);
-penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0);
-pair delta; delta=penoffset z3-z2 of currentpen;
-fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l
- ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r
- ---cycle; % diagonal
-pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180);
-top y5r=h; x5=x1; lft x6r=hround 1.25u; y6=good.y(y5l-beak)-eps;
-arm(5,6,a,beak_darkness**.8,-.4beak_jut); % upper arm and beak
-if not serifs: pickup fine.nib; fi
-pos7(arm_thickness2,-90); pos8(max(currentbreadth+eps,.7[thin_join,vair]),180);
-bot y7r=tiny.bot y4; x7=x4r; x0=w+1.5u; y0=y7l;
-z8l=z0+whatever*(z2-z3); bot y8=-d-o;
-path p; p=(z7l{right}.. .45[z0,.5[z7,z8]] ..{z3-z2}z8l);
-z9=point 1 of p; pos9(cap_curve,angle(direction 1 of p)-90);
-filldraw stroke z7e{right}...z9e{z8-z7}...{z3-z2}z8e; % tail
-math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;
-
-lhchar "Uppercase Cyrillic letter VUK -- Variant UK";
-cyrchar(VUK,14u#-width_adj#,cap_height#+acc_height#,0);
-if is_small_cap: getcharcode(vuk); fi
-italcorr .7cap_height#*slant-.5u#; %O
-h:=.8cap_height;
-adjust_fit(0,0);
-% upper_o;
-penpos1(vair',90); penpos3(vround(vair+1.5vair_corr),-90);
-penpos2(cap_curve,180); penpos4(cap_curve,0);
-if monospace: x2r=hround 1.5u;
- interim superness:=sqrt superness; % make |"O"|, not |"0"|
-else: x2r=hround u; fi
-x4r=w-x2r; x1=x3=.5w; y1r=h+o; y3r=-o;
-y2=y4=.5h-vair_corr; y2l:=y4l:=.52h;
-penstroke pulled_super_arc.e(1,2)(.5superpull)
- & pulled_super_arc.e(2,3)(.5superpull)
- & pulled_super_arc.e(3,4)(.5superpull)
- & pulled_super_arc.e(4,1)(.5superpull) & cycle; % bowl
-%%%%%
-%"hachek"
-if serifs:
- penpos14(1.414vair',90); pos15(whatever,0); x14=x1; y14=h+o-eps;
- x1-x15=x16-x1=good.x 4.25u; top y15=top y16=cap_height+.35acc_height+o;
- pos16(.25[vair,cap_curve],angle(z16-z14)+90);
- z15l=z14l+whatever*(z14-z15); z15r=z14r+whatever*(z14-z15);
- filldraw stroke z15e--z14e{z16r-z14}..{.5right}z16e; % hachek
-else:
- pickup fine.nib;
- pos14(hair,0); pos16(hair,0); penpos15(fudged.stem,0);
- x1-x14=x16-x1; y15=h; x15=x1;
- top y14=top y16=cap_height+.5acc_height+o;
- lft x14l=hround(rt x15r-5u-.5vair);
- z0=whatever[z14r,z15r]=whatever[z15l,z16l];
- pair delta[];
- delta1=penoffset z15-z14 of currentpen;
- delta2=penoffset z16-z15 of currentpen;
- fill z15l---z14l+delta1..top z14l---top z14r..z14r-delta1
- ---z0---
- z16l-delta2..top z16l---top z16r..z16r+delta2---z15r--cycle; fi % hachek
-%%%
-penlabels(1,2,3,4,14,15,16); endchar;
-
-lhchar "Uppercase Cyrillic letter OT";
-% A from AE
-lhchar "Uppercase Cyrillic letter ligature VI_A - IOT A";
-cyrchar(VI_A,11u#,cap_height#,0);
-if is_small_cap: getcharcode(vi_a); fi
-italcorr cap_height#*slant-beak_jut#-.5u#;
-adjust_fit(.5u#+
- if monospace: 6.5u# else:
- max(5u#+.5cap_stem#,6u#)+cap_serif_fit# fi, %Ipart_adj+.5u
- cap_serif_fit#);
-numeric left_stem,amid_stem,outer_jut,alpha;
-amid_stem=max(tiny.breadth,hround .9[mfudged.hair,mfudged.cap_stem]);
-pickup tiny.nib; pos1(amid_stem,0); pos2(amid_stem,0);
-rt x1r=rt x2r=hround(w-max(2u,3u-.5amid_stem));
-top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; % stem
-pos5(cap_bar,-90); z0=z5;
-x5=x1; top y5l=vround(if hefty:.52 else:.48 fi\\[y2,y1]+.5cap_bar);
-left_stem=if monospace:fudged.hair else: cap_hair fi if hefty: -3stem_corr fi;
-outer_jut=.8cap_jut; x11l=outer_jut+.5u-eps; y11=0;
-x12=x1l-apex_corr-if monospace:2 fi\\u; y12=h;
-alpha=diag_ratio(1,.5left_stem,y12-y11,x12-x11l);
-penpos11(alpha*left_stem,0); penpos12(alpha*left_stem,0);
-fill diag_end(12l,11l,1,1,11r,12r)
- --diag_end(11r,12r,1,1,12l,11l)--cycle; % diagonal
-y10=h-slab; z10=whatever[z11,z12];
-fill z10--(x1,y10)--(x1,h)--z12--cycle; % link
-penpos13(whatever,angle(z2-z1)); z13=whatever[z11,z12];
-penpos14(cap_band,90); x14=x0; y13l=y14l; y13r=y14r;
-if hefty: y14r=.4h; else: y14=y0; fi
-penstroke z13e--z14e; % bar line
-if serifs: numeric inner_jut; pickup tiny.nib;
- prime_points_inside(11,12);
- if rt x11'r+cap_jut+.5u+1<=lft x2l-.75cap_jut: inner_jut=cap_jut;
- else: rt x11'r+inner_jut+.5u+1=lft x2l-.75inner_jut; fi
- dish_serif(11',12,i,1/2,outer_jut,j,.6,inner_jut)(dark); % lower left serif
- nodish_serif(1,2,a,1/3,cap_jut+x1l-x12,b,1/3,cap_jut); % upper serif
- nodish_serif(2,1,c,1/3,.75inner_jut,d,1/3,cap_jut); fi % lower middle serif
-%
-z15=whatever[z11,z12]; y15+.5cap_bar+eps=min(8h,h-max(1.2slab,bracket))-1-eps;
-%I_part(15);
-_zero:=15;
-_one:=16; _two:=17; _three:=18; _four:=19;
-%
-pickup tiny.nib; pos[_one](cap_stem,0); pos[_two](cap_stem,0);%pos
-lft x[_one]l=lft x[_two]l=
- l+letter_fit+if monospace:-.35u else: cap_serif_fit fi
- +hround max(2u,3u-.5cap_stem);
-top y[_one]=h; bot y[_two]=0;
-filldraw stroke z[_one]e--z[_two]e; % stem
-x[_three]=x[_one]; y[_three]=y[_zero];
-x[_four]=x[_zero]; y[_four]=y[_three];
-pos[_three](cap_bar,90); pos[_four](cap_bar,90);
-filldraw stroke z[_three]e--z[_four]e; % bar
-if serifs: dish_serif([_one],[_two],s,1/3,cap_jut,t,1/3,cap_jut);
- dish_serif([_two],[_one],u,1/3,cap_jut,v,1/3,cap_jut); fi
-%%%%%
-penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19); endchar;
-
-% for shape, see Knizhnay Shrift p 58 Bodoni, Parma 1818
-lhchar "Uppercase Cyrillic letter IZH_dgr - IZHITSA double grave";
-cyrchar_twice(IZH_dgr,13u#,cap_height#+acc_height#,0);
-if is_small_cap: getcharcode(izh_dgr); fi
-italcorr cap_height#*slant+.25u#;
-adjust_fit(cap_serif_fit#,
- if serifs: min(1.5u#,.5u#+(flare#+(cap_stem#-stem#))) %ccL_adj
- else:.5u#fi);
-full_h:=h; h:=cap_height;
-% upper_izh;
-numeric left_stem,right_stem,outer_jut,alpha;
-left_stem=cap_stem-stem_corr;
-right_stem=min(cap_hair if hefty:-2stem_corr fi,left_stem);
-outer_jut=.75cap_jut; x1l=w-x4r=l+letter_fit+outer_jut+.25u; y1=y4=h;
-x2-x1=x4-x3; x2l+apex_corr=x3l; y2=y3=-apex_o;
-alpha=diag_ratio(2,right_stem,y1-y2,x4r-x1l-apex_corr);
-penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
-penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
-z0=whatever[z1r,z2r]=whatever[z3l,z4l];
-x6=if serifs:.5[x5,x7r] else:x7r fi;
-penpos6(vair,90); y6r=h if serifs:+o fi;
-penpos5(alpha*right_stem,0);
-y5=min(.9cap_height,bot y6l-.5vair); z5=whatever[z3,z4];
-x7r=hround(r-.5u); penpos7(hair,0);
-y7=h-vround max(.05fig_height+.5flare,.1fig_height-.5flare)+o; z8r=z7r;
-penpos8(flare,0); if serifs: cyrbulb(6,7,8); fi
-if y0>cap_notch_cut: y0:=cap_notch_cut;
- fill z0+.5right{up}...{z4-z3}z5l...{right}
- if serifs: z6r--z6l
- else:
- (.5[x4,x4r],y6r)--(fine.lft x6r,y6r)..(x6r,fine.bot y6r)--
- (x6l,fine.top y6l)..(fine.lft x6l,y6l) fi
- {left}
- ....z5r{z3-z4}--diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1}
- ...{down}z0+.5left--cycle; % left and right diagonals
-else: fill z0--z5l{z4-z3}...{right}z6r--z6l{left}...{z3-z4}z5r
- --diag_end(4r,3r,1,1,2l,1l)
- --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
-if serifs: numeric inner_jut; pickup tiny.nib;
- prime_points_inside(1,2);
- if rt x1'r+cap_jut+.5u+1<=x4l-cap_jut: inner_jut=cap_jut;
- else: rt x1'r+inner_jut+.5u+1=x4l-inner_jut; fi
- dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); fi % left serif
-%%%%%
-% the accent
-if monospace:
- hpos_corr=-2u; put_gravis(cyrcaph);
- hpos_corr=2u; put_gravis(cyrcaph);
-else: hpos_corr=-1.5u; put_gravis(cyrcaph);
- hpos_corr=1.5u; put_gravis(cyrcaph); fi
-repeat_once;
-penlabels(0,1,2,3,4,5,6,7); endchar;
-
-lhchar "Uppercase Cyrillic letter VL_YUS - like crossed Delta";
-cyrchar(VL_YUS,13u#+2cap_stem#,cap_height#,0);
-if is_small_cap: getcharcode(Vl_yus); fi
-adjust_fit(cap_serif_fit#,cap_serif_fit#);
-numeric left_stem,right_stem,outer_jut,alpha;
-right_stem=cap_stem-stem_corr;
-left_stem=min(cap_hair if hefty: -3stem_corr fi,right_stem);
-outer_jut=.8cap_jut; x1l=w-x4r=l+letter_fit+.5u; y1=y4=0; %+outer_jut
-x2-x1=x4-x3; x3r=x2r+apex_corr; y2=y3=h+apex_o+apex_oo;
-alpha=diag_ratio(2,left_stem,y2-y1,x4r-x1l-apex_corr);
-penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
-penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
-z0=whatever[z1r,z2r]=whatever[z3l,z4l];
-if y0<h-cap_notch_cut: y0:=h-cap_notch_cut;
- fill z0+.5right{down}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)
- --diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1}
- ...{up}z0+.5left--cycle; % left and right diagonals
-else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)
- --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
-penpos5(whatever,angle(z2-z1)); z5=whatever[z1,z2];
-penpos6(whatever,angle(z3-z4)); z6=whatever[z3,z4]; y6=y5;
-if hefty: y5r else: y5 fi =.5y0;
-y5r-y5l=y6r-y6l=cap_band; penstroke z5e--z6e; % middle bar line
-penpos5'(whatever,angle(z2-z1)); z5'=whatever[z1,z2];
-penpos6'(whatever,angle(z3-z4)); z6'=whatever[z3,z4]; y6'=y5';
-bot y5'l=0; y5'r-y5'l=y6'r-y6'l=slab;
-penstroke z5'e--z6'e; % bar line
-penlabels(0,1,2,3,4,5,5',6,6'); endchar;
-%
-% for shape, see Knizhnay Shrift p 58 Bodoni, Parma 1818
-lhchar "Uppercase Cyrillic letter IZH_uml - IZHITSA umlaut";
-cyrchar(IZH_uml,13u#,cap_height#+acc_height#,0);
-if is_small_cap: getcharcode(izh_uml); fi
-italcorr cap_height#*slant+.25u#;
-adjust_fit(cap_serif_fit#,
- if serifs: min(1.5u#,.5u#+(flare#+(cap_stem#-stem#))) %ccL_adj
- else:.5u#fi);
-full_h:=h; h:=cap_height;
-% upper_izh;
-numeric left_stem,right_stem,outer_jut,alpha;
-left_stem=cap_stem-stem_corr;
-right_stem=min(cap_hair if hefty:-2stem_corr fi,left_stem);
-outer_jut=.75cap_jut; x1l=w-x4r=l+letter_fit+outer_jut+.25u; y1=y4=h;
-x2-x1=x4-x3; x2l+apex_corr=x3l; y2=y3=-apex_o;
-alpha=diag_ratio(2,right_stem,y1-y2,x4r-x1l-apex_corr);
-penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
-penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
-z0=whatever[z1r,z2r]=whatever[z3l,z4l];
-x6=if serifs:.5[x5,x7r] else:x7r fi;
-penpos6(vair,90); y6r=h if serifs:+o fi;
-penpos5(alpha*right_stem,0);
-y5=min(.9cap_height,bot y6l-.5vair); z5=whatever[z3,z4];
-x7r=hround(r-.5u); penpos7(hair,0);
-y7=h-vround max(.05fig_height+.5flare,.1fig_height-.5flare)+o; z8r=z7r;
-penpos8(flare,0); if serifs: cyrbulb(6,7,8); fi
-if y0>cap_notch_cut: y0:=cap_notch_cut;
- fill z0+.5right{up}...{z4-z3}z5l...{right}
- if serifs: z6r--z6l
- else:
- (.5[x4,x4r],y6r)--(fine.lft x6r,y6r)..(x6r,fine.bot y6r)--
- (x6l,fine.top y6l)..(fine.lft x6l,y6l) fi
- {left}
- ....z5r{z3-z4}--diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1}
- ...{down}z0+.5left--cycle; % left and right diagonals
-else: fill z0--z5l{z4-z3}...{right}z6r--z6l{left}...{z3-z4}z5r
- --diag_end(4r,3r,1,1,2l,1l)
- --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
-if serifs: numeric inner_jut; pickup tiny.nib;
- prime_points_inside(1,2);
- if rt x1'r+cap_jut+.5u+1<=x4l-cap_jut: inner_jut=cap_jut;
- else: rt x1'r+inner_jut+.5u+1=x4l-inner_jut; fi
- dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); fi % left serif
-%%%%%
-% the accent
-h:=full_h; uppercase_umlaut(.5[x1,x4]-.5w,0, 9,10,11,12);
-penlabels(0,1,2,3,4,5,6,7,8, 9,10,11,12); endchar;
-
-lhchar "Uppercase Cyrillic letter ligature OLG - Old soft EL (ELGHE)";
-cyrchar(OLG,13.5u#,cap_height#,0); % DL_width:N_width
-if is_small_cap: getcharcode(olg); fi;
-italcorr cap_height#*slant-beak_jut#; %Gamma+.25u
-adjust_fit(cap_serif_fit# if not serifs:+.5(cap_stem#-u#) fi, %DL_adj
- if not serifs:.5u#+ fi
- min(4.5u#-.5stem#,3.5u#)-.5width_adj#); % Beak_adj+.5u
-% upper_l;
-pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
-rt x1r=rt x2r=w-hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; %stem
-numeric bulb_diam; bulb_diam=flare+(cap_stem-stem);
-numeric light_hair,bot_vair,left_jut;
-light_hair=max(tiny.breadth,fudged.hair if hefty:-4stem_corr fi);
-left_jut=
- if serifs: max(limit_dist,1.1cap_jut)
- else: hround (w+cap_serif_fit-rt x2r-.65u) fi;
-bot_vair=Vround(.5[vair,light_hair]);
-x3=1/3[w-rt x1r-(1/6left_jut),rt x1r] if not serifs:-.5(cap_stem-u) fi+eps;
-if serifs:
- pos3(light_hair,0); pos4(light_hair,-90);
- pos6(bulb_diam,-180); pos5(cap_hair,-180);
- top y3=h; y6=1/6h-max(0,flare-stem-2vair_corr-.5); z6r=z5r;
- lft x6r=l+letter_fit+hround(.5u-.5);
- x4=max(lft x5r+.5bulb_diam,.4[lft x5r,rt x3r]); bot y4r=-o;
- filldraw stroke z4e{right}..
- controls (min(15/16[x4,x3],max(x4,lft x6r+2flare))+(x3e-x3)+eps,y4e)
- and (x3e,good.y(min(y6-.5,1/3h)+1/3(y4e-y4))-eps)..z3e; % left tail
- {{less_tense; bulb(4,5,6)}};
-else:
- pos3'(slab,90); pos1'(slab,90);
- lft x3'=x3-.5light_hair; rt x1'=x1r; top y3'r=top y1'r=h;
- filldraw stroke z3'e--z1'e;
- pickup fine.nib; pos3(max(fine.breadth,light_hair),0); pos4(bot_vair,-90); pos5(bot_vair,-90);
- bot y5r=0; x4=2/3[x3l,x5r]; lft x5=l+letter_fit+hround(.35u-.5);
- bot y4r=bot y5r; y3=y3'; x4l:=.25[x4,x5];
- path p;
- p=stroke z3{down}
- ..controls (x3,y5+.35h-eps) and (min(7/8[x4,x3],x5+2.5light_hair+.5u),y4)
- ..{left}z4--z5;
- z6=point .35 of p;
- pos6(max(fine.breadth,7/8[bot_vair,light_hair]),angle(direction .35 of p)+90);
- filldraw stroke z3e{down}...z6e{direction .35 of p}...{left}z4e--z5e; fi % arc
-%%%
-if serifs:
- x0=x3; y0=0;
- numeric inner_jut; inner_jut=min(.5(lft x1l-rt x3r)-eps,.5cap_jut);
- dish_serif(2,1,a,1/3,cap_jut,b,1/3,cap_jut); %lower right serif
- nodish_serif(1,2,c,1/3,inner_jut,d,1/3,cap_jut); %upper right serif
- nodish_serif(3,0,e,1/3,1.05cap_jut,f,1/3,inner_jut); %upper left serif
- filldraw z.c0--z.c1--z.f1--z.f0--cycle; fi % upper inter_serif bar
-%%%%%
-% (old) upper right beak(2);
-if (serifs=false) and (old_cyr=true):
- pickup tiny.nib;
- pos7(slab,90); top y7r=h; x7=x2;
- pos8(slab,90); y8=y7; rt x8r=hround(r-.65u);
- filldraw stroke z7e--z8e; % horisontal
- pickup fine.nib; pos9(.3[slab,cap_stem],0); pos10(.3[slab,cap_stem],0);
- rt x9r=rt x10r=tiny.rt x8r; y9=y8r; bot y10=y8l-sbeak;
- filldraw stroke z9e--z10e; % vertical
-else:
- pickup crisp.nib;
- pos7(slab,90); top y7r=h; x7=x2; rt x8r=hround(r-.65u);
- pos8(hair,0); y8=good.y(y7l-beak)-eps;
- arm(7,8,i,beak_darkness,.7beak_jut); % upper arm and beak
-fi
-penlabels(1,2,3,4,5,6,7,8,9,10); endchar;
-
-lhchar "Uppercase Cyrillic letter OERY - Old ERY";
-cyrchar(OERY,12.5u#,cap_height#,0); %V_width#=12.5u#
-if is_small_cap: getcharcode(oery); fi
-italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
-adjust_fit(if not serifs:.5u#+ fi
- min(4.5u#-.5stem#,3.5u#)-.5width_adj#, % Beak_adj+.5u
- cap_serif_fit#+4.5u#); %ERYadj
-numeric left_stem; left_stem=cap_stem-hround 2stem_corr;
-pickup tiny.nib; pos1(left_stem,0); pos2(left_stem,0);
-lft x1l=lft x2l=hround max(2u,3u-.5left_stem); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; % stem
-if serifs: nodish_serif(1,2,a,1/3,.5cap_jut,b,1/3,.5cap_jut); % upper serif
- nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi % lower serif
-% usftsn_bowl(2);
-_zero:=2;
-_one:=3; _two:=4; _three:=5; _four:=6; _five:=7;
-%
-pickup tiny.nib;
-penpos[_one](cap_bar,90);
-penpos[_three](cap_curve if hefty:-3stem_corr fi,0);
-penpos[_four](cap_band,-90); penpos[_five](cap_band,-90);
-z[_five]r=bot z[_zero]; y[_four]=y[_five];
-y[_three]=.5[y[_four],y[_two]];
-x[_one]=x[_zero]r; x[_three]r=hround(w-u);
-if (serifs=false) or (cap_bar#>.5cap_curve#) or (cap_bar<3):
- penpos[_two](cap_bar,90);
- x[_four]=.5[x[_zero],w-if serifs:1.5u else:2.5u fi]+.5u;
- y[_one]=y[_two]=.52h; x[_two]=x[_four];
-else: penpos[_two](1/18[cap_bar,cap_curve],90);
- x[_four]=.5[x[_zero],w-1.5u]+.5u;
- y[_one]l=y[_two]l-.35cap_bar=.52h-.5cap_bar;
- x[_two]=x[_four]-.35u; fi
-x[_two]l:=x[_two]l-.5u; x[_four]l:=x[_four]l-.5u;
-fill stroke z[_five]e..super_arc.e([_four],[_three])
- & super_arc.e([_three],[_two])..z[_one]e; % lobe
-%%%
-% (old) upper left beak(2);
-if (serifs=false) and (old_cyr=true):
- pickup tiny.nib;
- pos8(slab,90); top y8r=h; x8=x2;
- pos9(slab,90); y8=y9; lft x9r=l+letter_fit+hround.65u;
- filldraw stroke z8e--z9e; % horisontal
- pickup fine.nib; pos10(.3[slab,cap_stem],0); pos11(.3[slab,cap_stem],0);
- lft x10l=lft x11l=tiny.lft x9; y10=y9r; bot y11=y9l-sbeak;
- filldraw stroke z10e--z11e; % vertical
-else:
- pickup crisp.nib;
- pos8(slab,90); top y8r=h; x8=x2; lft x9r=l+letter_fit+hround.65u;
- pos9(hair,180); y9=good.y(y8l-beak)-eps;
- arm(8,9,i,beak_darkness,-.7beak_jut); % upper arm and beak
-fi
-% I
-w:=w+4.5u; pickup tiny.nib;
-rt x13r=rt x14r=w-hround max(2u,3u-.5stem);
-top y13=h; bot y14=0; pos13(cap_stem,0); pos14(cap_stem,0);
-filldraw stroke z13e--z14e;
-if serifs: dish_serif(13,14,e,1/3,cap_jut,f,1/3,cap_jut);
- dish_serif(14,13,g,1/3,cap_jut,h,1/3,cap_jut); fi
-penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;
-
-lhchar "Uppercase Cyrillic letter OHRDSN - Old HARD SIGN";
-cyrchar(OHRDSN,12.5u#,cap_height#,0); %V_width#=12.5u#
-if is_small_cap: getcharcode(ohrdsn); fi
-italcorr .52*.7cap_height#*slant-.5u#; % D*.52h
-adjust_fit(if not serifs:.5u#+ fi
- min(4.5u#-.5stem#,3.5u#)-.5width_adj#, % Beak_adj+.5u
- 0);
-numeric left_stem; left_stem=cap_stem-hround 2stem_corr;
-pickup tiny.nib; pos1(left_stem,0); pos2(left_stem,0);
-lft x1l=lft x2l=hround max(2u,3u-.5left_stem); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; % stem
-if serifs: nodish_serif(1,2,a,1/3,.5cap_jut,b,1/3,.5cap_jut); % upper serif
- nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi % lower serif
-% usftsn_bowl(2);
-_zero:=2;
-_one:=3; _two:=4; _three:=5; _four:=6; _five:=7;
-%
-pickup tiny.nib;
-penpos[_one](cap_bar,90);
-penpos[_three](cap_curve if hefty:-3stem_corr fi,0);
-penpos[_four](cap_band,-90); penpos[_five](cap_band,-90);
-z[_five]r=bot z[_zero]; y[_four]=y[_five];
-y[_three]=.5[y[_four],y[_two]];
-x[_one]=x[_zero]r; x[_three]r=hround(w-u);
-if (serifs=false) or (cap_bar#>.5cap_curve#) or (cap_bar<3):
- penpos[_two](cap_bar,90);
- x[_four]=.5[x[_zero],w-if serifs:1.5u else:2.5u fi]+.5u;
- y[_one]=y[_two]=.52h; x[_two]=x[_four];
-else: penpos[_two](1/18[cap_bar,cap_curve],90);
- x[_four]=.5[x[_zero],w-1.5u]+.5u;
- y[_one]l=y[_two]l-.35cap_bar=.52h-.5cap_bar;
- x[_two]=x[_four]-.35u; fi
-x[_two]l:=x[_two]l-.5u; x[_four]l:=x[_four]l-.5u;
-fill stroke z[_five]e..super_arc.e([_four],[_three])
- & super_arc.e([_three],[_two])..z[_one]e; % lobe
-%%%
-% (old) upper left beak(2);
-if (serifs=false) and (old_cyr=true):
- pickup tiny.nib;
- pos8(slab,90); top y8r=h; x8=x2;
- pos9(slab,90); y8=y9; lft x9r=l+letter_fit+hround.65u;
- filldraw stroke z8e--z9e; % horisontal
- pickup fine.nib; pos10(.3[slab,cap_stem],0); pos11(.3[slab,cap_stem],0);
- lft x10l=lft x11l=tiny.lft x9; y10=y9r; bot y11=y9l-sbeak;
- filldraw stroke z10e--z11e; % vertical
-else:
- pickup crisp.nib;
- pos8(slab,90); top y8r=h; x8=x2; lft x9r=l+letter_fit+hround.65u;
- pos9(hair,180); y9=good.y(y8l-beak)-eps;
- arm(8,9,i,beak_darkness,-.7beak_jut); % upper arm and beak
-fi
-penlabels(1,2,3,4,5,6,7,8,9,10,11); endchar;
-
-lhchar "Uppercase Cyrillic letter OO_cdot - Old O cdot";
-cyrchar(OO_cdot,15u#,cap_height#,0); %F width-u
-if is_small_cap: getcharcode(oo_cdot); fi
-italcorr .7cap_height#*slant-.5u#;
-adjust_fit(0,0);
-penpos1(vair',90); penpos3(vround(vair+1.5vair_corr),-90);
-penpos2(cap_curve,180); penpos4(cap_curve,0);
-if monospace: x2r=hround 1.5u;
- interim superness:=sqrt superness; % make |"O"|, not |"0"|
-else: if serifs: interim superness:=1.05 superness;
- else: interim superness:=1.075 superness; fi x2r=hround u; fi
-x4r=w-x2r; x1=x3=.5w; y1r=h+o; y3r=-o;
-y2=y4=.5h-vair_corr; y2l:=y4l:=.52h;
-penstroke pulled_super_arc.e(1,2)(.5superpull)
- & pulled_super_arc.e(2,3)(.5superpull)
- & pulled_super_arc.e(3,4)(.5superpull)
- & pulled_super_arc.e(4,1)(.5superpull) & cycle; % bowl
-% dot
-pickup tiny.nib;
-dot_diam:=min((lft x4l-rt x2l)-1,
-max(tiny.breadth,hround(max(dot_size,cap_curve)-2stem_corr)));
-pos5(dot_diam,0); pos5'(dot_diam,90);
-z5=z5'; x5=x1; y5=.5[y1,y3]; dot(5,5'); % dot
-penlabels(1,2,3,4, 5,5); endchar;
-
-lhchar "Uppercase Cyrillic letter OO_cddot - Old double cdot";
-cyrchar(OO_cddot,17u#,cap_height#,0); %F width+u
-if is_small_cap: getcharcode(oo_cddot); fi
-italcorr .7cap_height#*slant-.5u#;
-adjust_fit(0,0);
-penpos1(vair',90); penpos3(vround(vair+1.5vair_corr),-90);
-penpos2(cap_curve,180); penpos4(cap_curve,0);
-if monospace: x2r=hround 1.5u;
- interim superness:=sqrt superness; % make |"O"|, not |"0"|
-else: if serifs: interim superness:=1.05 superness;
- else: interim superness:=1.075 superness; fi x2r=hround u; fi
-x4r=w-x2r; x1=x3=.5w; y1r=h+o; y3r=-o;
-y2=y4=.5h-vair_corr; y2l:=y4l:=.52h;
-penstroke pulled_super_arc.e(1,2)(.5superpull)
- & pulled_super_arc.e(2,3)(.5superpull)
- & pulled_super_arc.e(3,4)(.5superpull)
- & pulled_super_arc.e(4,1)(.5superpull) & cycle; % bowl
-%
-_one:=5; _two:=6; _three:=7; _four:=8;
-dot_diam:=min(.5(lft x4l-rt x2l)-1,
-max(tiny.breadth,hround(max(dot_size,cap_curve)-2stem_corr)));
-pickup tiny.nib;
-pos[_one](dot_diam,0); pos[_two](dot_diam,90);
-x[_one]=x[_two]=max(x2l+.5dot_diam+1+eps,.5w-2.25u); y[_one]=y[_two]=.5[y1,y3];
-dot([_one],[_two]); % left dot
-pos[_three](dot_diam,0); penpos[_four](y[_two]r-y[_two]l,90);
-y[_three]=y[_four]=y[_one];
-x[_three]=x[_four]=min(x4r-.5dot_diam-1-eps,x[_one]+4u);
-dot([_three],[_four]); % right dot
-penlabels(1,2,3,4, 5,6,7,8); endchar;
-
-lhchar "Uppercase Cyrillic letter VIZH - variant IZHITSA";
-cyrcharmoving(VIZH); if is_small_cap: cyrcharmoving(vizh); fi
-
-lhchar "Uppercase Cyrillic letter T_peter -- like flipped SH";
-cyrchar(T_peter,19.75u#+width_adj#,cap_height#,0);
-if is_small_cap: getcharcode(t_peter); fi
-italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
-adjust_fit(if monospace: 0,0 else:cap_serif_fit#,cap_serif_fit# fi); %uwlett_adj
-% upper_sh;flip
-if odd(fudged.cap_stem-w): change_width; fi % symmetric & all three equal
-pickup tiny.nib;
-pos1(fudged.cap_stem,0); pos2(fudged.cap_stem,0);
-pos3(fudged.cap_stem,0); pos4(fudged.cap_stem,0);
-pos5(fudged.cap_stem,0); pos6(fudged.cap_stem,0);
-lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); x3=x4=w-x1;
-top y1=top y3=top y5=h; bot y2=bot y4=bot y6=0;
-lft x5l=lft x6l=hround (.5[x1,x3]-.5cap_stem); % middle stem point
-filldraw stroke z1e--z2e; % left stem
-filldraw stroke z3e--z4e; % right stem
-filldraw stroke z5e--z6e; % center stem
-numeric inner_jut,arm_thickness;
-arm_thickness=vround(slab+vair_corr);
-if serifs:
- begingroup
- save slab; slab:=arm_thickness; % bottom.bar.slab
- if rt x1r+cap_jut+.5u+1<=lft x5l-cap_jut: inner_jut=cap_jut;
- else: rt x1r+inner_jut+.5u+1=lft x5l-inner_jut; fi
- dish_serif(2,1,c,1/3,cap_jut,d,1/3,inner_jut); % lower left serif
- dish_serif(6,5,k,1/3,inner_jut,m,1/3,inner_jut); % lower center serif
- dish_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut); % lower right serif
- endgroup;
- inner_jut:=min(.5(lft x3l-rt x1r)-eps,.5cap_jut);
- nodish_serif(1,2,a,1/3,cap_jut,b,1/3,inner_jut); % upper left serif
- nodish_serif(3,4,e,1/3,inner_jut,f,1/3,cap_jut); % upper right serif
- nodish_serif(5,6,i,1/3,inner_jut,j,1/3,inner_jut); % upper center serif
- fill z.b0--z.b1--z.e1--z.e0--cycle; % upper inter_serif bar
-else:
- save slab; slab:=arm_thickness; % upper.bar.slab
- lft x2'= lft x2l; top y2'r=h; pos2'(slab,90);
- rt x4'=rt x4r; y4'=y2'; pos4'(slab,90);
- filldraw stroke z2'e--z4'e; fi % upper bar
-%%%%%
-penlabels(1,2,3,4,5,6); endchar;
-
-lhchar "Uppercase Cyrillic letter ZELO_m - Variant ZELO mirror";
-cyrchar(ZELO_m,10u#,cap_height#,0);
-if is_small_cap: getcharcode(zelo_m); fi
-italcorr .7cap_height#*slant-.5u#; %O
-adjust_fit(0,0);
-numeric theta; theta=90-angle(50u,h); slope:=-h/50u; % angle at middle
-numeric s_slab; s_slab=if serifs:slab else:vround .2[slab,cap_stem] fi;
-numeric ess'; ess'=max(fine.breadth,cap_ess);
-pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90);
-pos0(ess',theta); pos7(s_slab,-90);
-x2+x7=2x0=w; x7-x2=if serifs: u else: 0 fi; top y2l=h+o; bot y7r=-o;
-y0=.52h; lft x3l=hround u; rt x6r=hround(w-u);
-x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine;
-ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r;
-ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r;
-%mirror
-forsuffixes $ = 2l,2,2r,3l,3,3r,4l,4,4r,5l,5,5r,6l,6,6r,7l,7,7r:
- x$:=l+(r-x$); endfor;
-filldraw stroke super_arc.e(2,3) & z3e{down}
- ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke mirror
-if serifs:
- pos1(hair,180); pos8(hair,180);
- rt x1l=hround(w-1.5u); lft x8r=hround u;
- bot y1=vround 2/3h+1; top y8=vround 1/3h-1;
- %mirror
- forsuffixes $ = 1l,1,1r,8l,8,8r: x$:=l+(r-x$); y$:=y$; endfor;
- filldraw stroke z1e{x2-x1,10(y2-y1)}....{right}z2e; % upper arc mirror
- filldraw stroke z7e{right}....{up}z8e; % lower arc
- path upper_arc, lower_arc;
- upper_arc=z1{x2-x1,10(y2-y1)}....{right}z2;
- lower_arc=z7{right}....{up}z8;
- pos10(.3[fine.breadth,cap_hair],180); pos9(.3[fine.breadth,cap_hair],180);
- x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r;
- x1'-x1l=x8r-x8'=1.6cap_curve-fine; y1'=y1; y8'=y8;
- numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1'));
- filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb
- t:=xpart(lower_arc intersectiontimes(z9r--z8'));
- filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb
-else:
- pos1(1.2flare,-100); pos8(1.2flare,-100);
- x1l=good.x(x1l+w-1.75u-rt x1); lft x8r=hround .8u;
- top y1l=vround .93h+o; bot y8r=vround .1h-o;
- forsuffixes $ = 1l,1,1r,8l,8,8r: x$:=l+(r-x$); endfor;
- filldraw stroke term.e(2,1,left,.9,4); % upper arc and terminal
- filldraw stroke term.e(7,8,right,1,4); fi % lower arc and terminal
-penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10); endchar;
-
-lhchar "Uppercase Cyrillic letter IZHEI ";
-cyrchar(IZHEI,13.5u#,cap_height#,0); % N_width
-if is_small_cap: getcharcode(izhei); fi
-italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
-adjust_fit(cap_serif_fit#,cap_serif_fit#);
-pickup tiny.nib; pos1(fudged.cap_stem,0); pos2(fudged.cap_stem,0);
-pos3(fudged.cap_stem,0); pos4(fudged.cap_stem,0);
-lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); 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
-numeric stem[],alpha[];
-y5=vround(.4h-eps); y6=vround(.6h-eps);
-x5=hround (rt x1r-.5)-eps; x6=hround (lft x3l+.5)+eps;
-stem1=max(tiny.breadth,fudged.hair);
-penpos5(stem1,90); penpos6(stem1,90);
-fill stroke z5e--z6e; % diagonal
-if serifs:
- numeric inner_jut;
- if rt x1r+cap_jut+.5u+1<=lft x3l-cap_jut: inner_jut=cap_jut;
- else: rt x1r+inner_jut+.5u+1=lft x3l-inner_jut; fi
- dish_serif(1,2,a,1/3,cap_jut,b,1/3,inner_jut); % upper left serif
- dish_serif(2,1,c,1/3,cap_jut,d,1/3,inner_jut); % lower left serif
- dish_serif(3,4,e,1/3,inner_jut,f,1/3,cap_jut); % upper right serif
- dish_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut); fi % lower right serif
-%%%%%
-penlabels(1,2,3,4,5,6); endchar;
-
-lhchar "Uppercase Cyrillic letter LO";
-cyrchar(LO,13.5u#,cap_height#,0); % DL_width:N_width
-if is_small_cap: getcharcode(lo); fi
-italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
-adjust_fit(cap_serif_fit# if not serifs:+.5(cap_stem#-u#) fi, %DL_adj
- 13.5u#); %
-% upper_l;
-pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
-rt x1r=rt x2r=w-hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
-filldraw stroke z1e--z2e; %stem
-numeric bulb_diam; bulb_diam=flare+(cap_stem-stem);
-numeric light_hair,bot_vair,left_jut;
-light_hair=max(tiny.breadth,fudged.hair if hefty:-4stem_corr fi);
-left_jut=
- if serifs: max(limit_dist,1.1cap_jut)
- else: hround (w+cap_serif_fit-rt x2r-.65u) fi;
-bot_vair=Vround(.5[vair,light_hair]);
-x3=1/3[w-rt x1r-(1/6left_jut),rt x1r] if not serifs:-.5(cap_stem-u) fi+eps;
-if serifs:
- pos3(light_hair,0); pos4(light_hair,-90);
- pos6(bulb_diam,-180); pos5(cap_hair,-180);
- top y3=h; y6=1/6h-max(0,flare-stem-2vair_corr-.5); z6r=z5r;
- lft x6r=l+letter_fit+hround(.5u-.5);
- x4=max(lft x5r+.5bulb_diam,.4[lft x5r,rt x3r]); bot y4r=-o;
- filldraw stroke z4e{right}..
- controls (min(15/16[x4,x3],max(x4,lft x6r+2flare))+(x3e-x3)+eps,y4e)
- and (x3e,good.y(min(y6-.5,1/3h)+1/3(y4e-y4))-eps)..z3e; % left tail
- {{less_tense; bulb(4,5,6)}};
-else:
- pos3'(slab,90); pos1'(slab,90);
- lft x3'=x3-.5light_hair; rt x1'=x1r; top y3'r=top y1'r=h;
- filldraw stroke z3'e--z1'e;
- pickup fine.nib; pos3(max(fine.breadth,light_hair),0); pos4(bot_vair,-90); pos5(bot_vair,-90);
- bot y5r=0; x4=2/3[x3l,x5r]; lft x5=l+letter_fit+hround(.35u-.5);
- bot y4r=bot y5r; y3=y3'; x4l:=.25[x4,x5];
- path p;
- p=stroke z3{down}
- ..controls (x3,y5+.35h-eps) and (min(7/8[x4,x3],x5+2.5light_hair+.5u),y4)
- ..{left}z4--z5;
- z6=point .35 of p;
- pos6(max(fine.breadth,7/8[bot_vair,light_hair]),angle(direction .35 of p)+90);
- filldraw stroke z3e{down}...z6e{direction .35 of p}...{left}z4e--z5e; fi % arc
-%%%
-if serifs: x0=x3; y0=0;
- numeric inner_jut; inner_jut=min(.5(lft x1l-rt x3r)-eps,.5cap_jut);
- dish_serif(2,1,a,1/3,cap_jut,b,1/3,cap_jut); %lower right serif
- nodish_serif(1,2,c,1/3,inner_jut,d,1/3,cap_jut); %upper right serif
- nodish_serif(3,0,e,1/3,1.05cap_jut,f,1/3,inner_jut); %upper left serif
- filldraw z.c0--z.c1--z.f1--z.f0--cycle; fi % upper inter_serif bar
-%%%
-%O_part
-full_w:=13.5u;
-_zero:=2;
-_one:=7; _two:=8; _three:=9; _four:=10; _five:=11; _six:=12;
-penpos[_one](vair',90); penpos[_three](vround(vair+1.5vair_corr),-90);
-penpos[_two](cap_curve,180); penpos[_four](cap_curve,0);
-x[_two]r=hround u;
-x[_four]r=full_w-x[_two]r; x[_one]=x[_three]=.5full_w; y[_one]r=h+o; y[_three]r=-o;
-y[_two]=y[_four]=.5h-vair_corr; y[_two]l:=y[_two]l:=.52h;
-%shift
-forsuffixes $ = [_one]l,[_one],[_one]r,[_two]l,[_two],[_two]r,
- [_three]l,[_three],[_three]r,[_four]l,[_four],[_four]r: x$:=x$+w; endfor;
-penstroke pulled_super_arc.e([_one],[_two])(.5superpull)
- & pulled_super_arc.e([_two],[_three])(.5superpull)
- & pulled_super_arc.e([_three],[_four])(.5superpull)
- & pulled_super_arc.e([_four],[_one])(.5superpull) & cycle; % bowl
-%%%
-x[_five]=x[_zero]; y[_five]=y[_two];
-x[_six]=x[_two]; y[_six]=y[_five];
-pos[_five](cap_bar,90); pos[_six](cap_bar,90);
-filldraw stroke z[_five]e--z[_six]e; % bar
-%%%%%
-penlabels(0,1,2,3,3,4,5,6); endchar;
-
-lhchar "Uppercase Cyrillic letter MO";
-cyrchar(MO,16u#+width_adj#,cap_height#,0);
-if is_small_cap: getcharcode(mo); fi
-italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
-adjust_fit(cap_serif_fit#,13.5u#);
-% upper_m;
-numeric stem[]; % thicknesses of the four strokes
-stem1=hround(fudged.hair+stem_corr);
-stem2=hround(fudged.cap_stem-4stem_corr);
-stem3=hround(fudged.hair-stem_corr);
-stem4=hround(fudged.cap_stem-3stem_corr);
-if stem4<stem1: stem4:=stem1; fi
-pickup tiny.nib; pos1(stem1,0); pos2(stem1,0);
-pos3(stem4,0); pos4(stem4,0);
-x1=x2; x3=x4; x1l=w-x3r; rt x3r=hround min(w-2u,w-3u+.5stem4);
-top y1=top y3=h; bot y2=bot y4=0;
-filldraw stroke z1e--z2e; % left stem
-filldraw stroke z3e--z4e; % right stem
-penpos5(stem2,0); penpos6(stem2,0); penpos7(stem3,0); penpos8(stem3,0);
-x5l=x1; x6l=x7l; x8=lft x3l; x6-x5=x8-x7; y5=y8=h; y6=y7;
-if hefty:
- y6=if monospace: vround 1/3h else: o fi;
- numeric upper_notch,lower_notch;
- upper_notch=h-cap_notch_cut; lower_notch=y6+cap_notch_cut;
- x1'=rt x1r; z1'=whatever[z5l,z6l]; x3'=lft x3l; z3'=whatever[z7r,z8r];
- z0=whatever[z5r,z6r]=whatever[z7l,z8l];
- fill z5l..
- if y1'<upper_notch: {right}(x1'+1,upper_notch){down}... fi
- {z6-z5}diag_in(5l,6l,1,6r)..diag_out(7l,1,7r,8r){z8-z7}
- if y3'<upper_notch: ...{up}(x3'-1,upper_notch){right} fi
- ..z8r--diag_out(8r,1,8l,7l){z7-z8}
- if y0<=lower_notch: ..{z7-z8}z0{z5-z6}..
- else: ...{down}(x0+.5,lower_notch)--(x0-.5,lower_notch){up}... fi
- {z5-z6}diag_in(6r,5r,1,5l)--cycle; % diagonals
-else:
- y6=0; z0=whatever[z5r,z6r]=whatever[z7l,z8l];
- fill z5l..{z6-z5}diag_in(5l,6l,1,6r)..diag_out(7l,1,7r,8r){z8-z7}
- ..z8r--diag_out(8r,1,8l,7l){z7-z8}..{z7-z8}z0{z5-z6}
- ..{z5-z6}diag_in(6r,5r,1,5l)--cycle; fi % diagonals
-%%%
-if serifs:
- serif(1,2,a,1/3,-cap_jut); % upper left serif
- dish_serif(2,1,b,1/2,cap_jut,c,1/2,cap_jut)(dark); % lower left serif
- serif(3,4,d,1/3,cap_jut); % upper right serif
- dish_serif(4,3,e,1/3,cap_jut,f,1/3,cap_jut); fi % lower right serif
-%%%
-%O_part
-full_w:=13.5u;
-_zero:=4;
-_one:=9; _two:=10; _three:=11; _four:=12; _five:=13; _six:=14;
-penpos[_one](vair',90); penpos[_three](vround(vair+1.5vair_corr),-90);
-penpos[_two](cap_curve,180); penpos[_four](cap_curve,0);
-x[_two]r=hround u;
-x[_four]r=full_w-x[_two]r; x[_one]=x[_three]=.5full_w; y[_one]r=h+o; y[_three]r=-o;
-y[_two]=y[_four]=.5h-vair_corr; y[_two]l:=y[_two]l:=.52h;
-%shift
-forsuffixes $ = [_one]l,[_one],[_one]r,[_two]l,[_two],[_two]r,
- [_three]l,[_three],[_three]r,[_four]l,[_four],[_four]r: x$:=x$+w; endfor;
-penstroke pulled_super_arc.e([_one],[_two])(.5superpull)
- & pulled_super_arc.e([_two],[_three])(.5superpull)
- & pulled_super_arc.e([_three],[_four])(.5superpull)
- & pulled_super_arc.e([_four],[_one])(.5superpull) & cycle; % bowl
-%%%
-x[_five]=x[_zero]; y[_five]=y[_two];
-x[_six]=x[_two]; y[_six]=y[_five];
-pos[_five](cap_bar,90); pos[_six](cap_bar,90);
-filldraw stroke z[_five]e--z[_six]e; % bar
-%%%%%
-penlabels(0,1,1',2,3,3',4,5,6,7,8); endchar;
-
-endinput;
-%end of file
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2upi.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2upi.mf
index dd84a7f08c0..a53f7cb3af8 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2upi.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2upi.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:
%
@@ -51,7 +51,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 "Italic Cyrillic letter g_hcrs - ghe hcrossed"; % italic shape
cyrchar(g_hcrs,6.25u#,x_height#,0);
@@ -256,7 +256,7 @@ pair delta; delta=penoffset z3-z2 of currentpen;
fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l
---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r
---cycle; % diagonal
-pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180);
+pickup crisp.nib; pos5(max(currentbreadth+eps,arm_thickness1),90); pos6(hair,180);
top y5r=h; x5=x1; lft x6r=hround .75u;
bot y6=2/3x_height-.5fine;%max(good.y(top y5r-vair-beak/1.4)-eps,y3+1)
arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak
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";
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2upu.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2upu.mf
index bc7c6cefb98..b5520e23f55 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lgt2upu.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lgt2upu.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=2
% (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 @@
% SCHWA "9a "9a "9a "9a Schwa
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
lhchar "Uppercase Cyrillic letter G_hcrs - GHE hcrossed";
cyrchar(G_hcrs,if monospace: 9u# else: 11u# fi-width_adj#, %G_width
@@ -192,6 +192,7 @@ if serifs:
dish_serif(4,3,e,1/3,inner_jut,f,1/3,cap_jut); fi % lower left serif
penlabels(1,2,3,4); endchar;
+iff not concrete:%
iff not specific:%
lhchar "Uppercase Cyrillic letter ZH_dsc - ZHE descender (`roman')";
cyrchar(ZH_dsc,13.5u#,cap_height#, % N_width
@@ -376,6 +377,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 "Uppercase Cyrillic letter K_dsc - KA descender (`roman')";
cyrchar(K_dsc,13.5u#,cap_height#, % N_width
@@ -440,6 +442,7 @@ else:
fi
penlabels(1,2,3,4,5,6, 7,8,9); endchar;
+iff not concrete:%
iff not specific:%
lhchar "Uppercase Cyrillic letter K_beak - KA beak (`roman')";
cyrchar(K_beak,13.5u#,cap_height#,0); % N_width
@@ -566,6 +569,7 @@ if serifs:
dish_serif(2,1,c,1/3,cap_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); endchar;
+iff not concrete:%
lhchar "Uppercase Cyrillic letter L_tl - EL tail";
cyrchar(L_tl,13.5u#,cap_height#,desc_depth#); % DL_width:N_width
if is_small_cap: getcharcode(l_tl); fi
@@ -632,7 +636,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]-2.5u if monospace: / expansion_factor fi;
filldraw stroke z[_five]e--pulled_arc.e([_one],[_two]);
@@ -694,6 +698,50 @@ else:
fi
penlabels(1,2,3,4,5,6); endchar;
+lhchar "Uppercase Cyrillic letter N_stl - saam EN with tail";
+cyrchar(N_stl,13.5u#,cap_height#,
+ if is_ogonek: desc_depth# else: cap_sbeak# fi); %udesc/og_depth
+if is_small_cap: getcharcode(n_stl); fi
+italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
+adjust_fit(cap_serif_fit#,
+ cap_serif_fit# if not serifs:+.5(cap_stem#-u#) fi); %DL_adj
+% upper_n;
+pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
+pos3(cap_stem,0); pos4(cap_stem,0);
+lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); 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
+penpos5(cap_bar,90); penpos6(cap_bar,90);
+x5=x1; x6=x3; y5=y6=.52h;
+fill stroke z5e--z6e; % bar
+%%%
+if serifs:
+ numeric inner_jut;
+ if rt x1r+cap_jut+.5u+1<=lft x3l-cap_jut: inner_jut=cap_jut;
+ else: rt x1r+inner_jut+.5u+1=lft x3l-inner_jut; fi
+ dish_serif(1,2,a,1/3,cap_jut,b,1/3,inner_jut); % upper left serif
+ dish_serif(2,1,c,1/3,cap_jut,d,1/3,inner_jut); % lower left serif
+ dish_serif(3,4,e,1/3,inner_jut,f,1/3,cap_jut); % upper right serif
+ if is_ogonek:
+ dish_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut); fi % lower right serif
+fi
+%%%%%
+% uppercase descender/saam tail
+numeric right_jut;
+right_jut=if serifs: max(limit_dist,1.1cap_jut) else: hround (r-rt x4r-.65u) fi;
+if not serifs:
+ numeric arm_thickness; arm_thickness=vround(slab-vair_corr);
+ save slab; slab:=arm_thickness; fi %bottom.desc.slab
+if unic:
+ %saam tail
+ serif(4,3,v,1/3,-cap_jut);
+ siam_serif(4,3,w,1/3,right_jut);
+else:
+ r_serif(4,3,x,1/3,cap_jut,y,1/3,beak_darkness,right_jut,beak_jut); % lower right descender
+fi
+penlabels(1,2,3,4,5,6); endchar;
+
lhchar "Uppercase Cyrillic letter N_tl - EN tail";
cyrchar(N_tl,13.5u#,cap_height#,desc_depth#);
if is_small_cap: getcharcode(n_tl); fi
@@ -734,7 +782,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]-2.5u if monospace: / expansion_factor fi;
filldraw stroke z[_five]e--pulled_arc.e([_one],[_two]);
@@ -905,7 +953,7 @@ cyrchar(H_dsc,13u#,cap_height#,
if is_ogonek: desc_depth# else: cap_sbeak# fi); %udesc/og_depth
if is_small_cap: getcharcode(h_dsc); fi
italcorr cap_height#*slant-.25u#;
-adjust_fit(cap_serif_fit#,cap_serif_fit#);
+adjust_fit(cap_serif_fit#,cap_serif_fit#); %ZhDL_adj
% upper_h;
numeric stem[],outer_jut,xjut,alpha[];
stem1=cap_stem-2stem_corr; stem2=min(cap_hair,stem1);
@@ -982,7 +1030,7 @@ alpha1=diag_ratio(1,stem1,h,x4r-x1l);
alpha2=diag_ratio(1,stem2,h,x2r-x3l);
penpos1(alpha1*stem1,0); penpos2(alpha2*stem2,0);
penpos3(alpha2*stem2,0); penpos4(alpha1*stem1,0);
-numeric t; t=slab+bracket;
+numeric t; t=slab+bracket+eps;
forsuffixes e=l,r: z54e=(((0,t)--(w,t)) intersectionpoint (z4e--z1e)); endfor;
if hefty:
z0=whatever[z1,z4]=whatever[z2,z3];
@@ -1019,16 +1067,16 @@ _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=x[_zero]r;
+x[_one]'r=hround x[_zero]r+eps;
penpos[_one]'(stem3,0); pos[_one](stem3,0); z[_one]=z[_one]';
-bot y[_one]=max(-1/3d-eps,-d+if serifs: vair'else: slab fi);
-(x[_one]'l,y54')=whatever[z4l,z4l+dir angle(z4l-if serifs:z1l else:z34'fi)];
-z54'=(x[_one]'l,y54');
-fill z54l{z4r-z1r}
- ..controls (z54')..
+bot y[_one]=vround max(-1/3d,min(y[_zero]r-.5,-d+if serifs: vair'else: slab fi))-eps;
+(x[_one]'l,y54')=whatever[z4l,z4l+dir angle(z4l-if serifs:z1l else: z34'fi)];
+z54'=(x[_one]'l+eps,y54'+eps);
+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[_one]'r+eps,y[_zero]+eps)..
+ {z1r-z[_zero]r}z54r--cycle; %link
% _X
if serifs:
numeric bulb_diam;
@@ -1036,7 +1084,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[_one]-2.5u if monospace: / expansion_factor fi;%!!!
filldraw stroke pulled_arc.e([_one],[_two]);%!!!
@@ -1048,6 +1096,7 @@ else:
filldraw stroke super_arc.e([_one],[_two])%!!!
& term.e([_two],[_three],left,.8,4); fi
%%%
+%r:=r-.5cap_jut; %X_tl adjustment
penlabels(0,1,2,3,4,12,13,24,34,54,54', 5,6,7',8); endchar;
lhchar "Uppercase Cyrillic letter CH_ldsc - CHE left descender";
diff --git a/Master/texmf-dist/fonts/source/lh/base/lkligtbl.mf b/Master/texmf-dist/fonts/source/lh/base/lkligtbl.mf
index 0214dc8cc72..8a4de7d8049 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lkligtbl.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lkligtbl.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=0
% (c) A.Berdnikov
%
-% 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:
%
@@ -18,7 +18,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
if known loaded_lgligtbl: endinput; fi
loaded_lgligtbl:=1; % if known this file has been loaded
diff --git a/Master/texmf-dist/fonts/source/lh/base/llbligtb.mf b/Master/texmf-dist/fonts/source/lh/base/llbligtb.mf
new file mode 100644
index 00000000000..1fe8c4f6ffa
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/lh/base/llbligtb.mf
@@ -0,0 +1,231 @@
+%
+% llbligtb.mf
+%
+%% Cyrillic font container with T2 encoding beta-support
+%
+% This file is future part of lxfonts package
+% Version 3.5 // Patchlevel=0
+% (c) O.Lapko
+%
+% 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 all this package as well) and to save it under the same name.
+%
+% Content:
+%
+% Lig & kern data for Roman font (T2 CMBRIGHT)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+LHver_check(3,5); % like |version_check| in ec
+
+%
+% addtitional kern value
+%
+numeric itc#; % modified italic correction on `f' and `ff'%exrlig
+itc#=if serifs: max(0,flare#-.25u#) else: 1.25u# fi;
+
+%>>>!!!
+ligtable
+ "f": "i"=:oct"034",
+ "f"=:oct"033",
+ "l"=:oct"035",
+ "'" kern itc#,
+ "`" kern itc#,
+ oct"020" kern itc#,
+ oct"021" kern itc#,
+ "?" kern itc#,
+ "!" kern itc#,
+ ")" kern itc#,
+ "]" kern itc#;
+ligtable
+ oct"033": % ff
+ "i"=:oct"036",
+ "l"=:oct"037",
+ "'" kern itc#,
+ "`" kern itc#,
+ oct"020" kern itc#,
+ oct"021" kern itc#,
+ "?" kern itc#,
+ "!" kern itc#,
+ ")" kern itc#,
+ "]" kern itc#;
+%<<<!!!
+
+ligtable "k":
+ "W" kern kk#, %!!!
+ "V" kern kk#, %!!!
+ if serifs:
+ "v": "a" kern -u#,
+ fi\\
+ "w": "e" kern k#,
+ "a" kern k#,
+ "o" kern k#,
+ "c" kern k#;
+
+ligtable "P": "A" kern kk#,
+ "y": "o" kern k#,
+ "e" kern k#,
+ "a" kern k#,
+ "." kern kk#,
+ "," kern kk#;
+
+ligtable "F":
+ "V":
+ "W": if serifs:
+ "o" kern kk#,
+ "e" kern kk#,
+ "u" kern kk#,
+ "r" kern kk#,
+ "a" kern kk#,
+ "A" kern kkk#,
+ %>>>!!!
+ "y" kern kk#,
+ "v" kern kk#,
+ "s" kern kk#,
+ "c" kern kk#,
+ "d" kern kk#,
+ "g" kern kk#,
+ "m" kern kk#,
+ "n" kern kk#,
+ "p" kern kk#,
+ "w" kern kk#,
+ "z" kern kk#,
+ %<<<!!!
+ else:
+ "o" kern k#,
+ "e" kern k#,
+ "u" kern k#,
+ "r" kern k#,
+ "a" kern k#,
+ "A" kern kk#,
+ %>>>!!!
+ "y" kern k#,
+ "v" kern k#,
+ "s" kern k#,
+ "c" kern k#,
+ "d" kern k#,
+ "g" kern k#,
+ "m" kern k#,
+ "n" kern k#,
+ "p" kern k#,
+ "w" kern k#,
+ "z" kern k#,
+ %<<<!!!
+ fi
+% "K":
+ "X":
+ "O" kern k#,
+ "C" kern k#,
+ "G" kern k#,
+ "Q" kern k#;
+
+%>>>!!!
+ ligtable "K": if serifs:
+ "v" kern kk#,
+ "w" kern k#,
+ else:
+ "v" kern k#,
+ fi
+ "o" kern k#,
+ "C" kern k#,
+ "G" kern k#,
+ "Q" kern k#;
+%<<<!!!
+
+ligtable "T": "y" kern if serifs: k# else: kk# fi,
+ "Y": "e" kern kk#,
+ "o" kern kk#,
+ "r" kern kk#,
+ "a" kern kk#,
+ "A" kern kk#,
+ %>>>!!!
+ "n" kern kk#,
+ oct"031" kern kk#, % \i
+ "c" kern kk#,
+ "d" kern kk#,
+ "g" kern kk#,
+ "p" kern kk#,
+ "s" kern kk#,
+ "v" kern kk#,
+ "w" kern kk#,
+ "x" kern kk#,
+ "z" kern kk#,
+ %<<<!!!
+ "u" kern kk#;
+
+ligtable "O":
+ "D": "X" kern k#,
+ "W" kern k#,
+ "A" kern k#,
+ "V" kern k#,
+ "Y" kern k#;
+
+if serifs:
+ ligtable "h":
+ "m":
+ "n":
+ %>>>!!!
+ "W" kern kk#, "V" kern kk#,
+ %<<<!!!
+ "t" kern k#,
+ "u" kern k#,
+ "b" kern k#,
+ "y" kern k#,
+ "v" kern k#,
+ "w" kern k#;
+
+ ligtable "c": "h" kern k#,
+ "k" kern k#;
+fi
+
+ligtable "o":
+ "b":
+ "p":
+ if known bx_kerning: % (CMBR)
+ "e" kern -k#,
+ "o" kern -k#,
+ "d" kern -k#,
+ "c" kern -k#,
+ "q" kern -k#,
+ fi
+ "x" kern k#,
+ "a": if serifs: "v" kern k#,
+ "j" kern u#,
+ else: "r" kern k#, fi
+ "t": "y" kern k#,
+ "u": "w" kern k#;
+
+ligtable "A":
+ %>>>!!!
+ "y" kern if serifs: kk# else: k# fi,
+ "v" kern if serifs: kkk# else: k# fi,
+ "w" kern if serifs: kk# else: k# fi,
+ "c" kern k#,
+ "d" kern k#,
+ "e" kern k#,
+ "o" kern k#,
+ "q" kern k#,
+ %<<<!!!
+ if serifs: "R": fi\\ "t" kern k#,
+ "C" kern k#,
+ "O" kern k#,
+ "G" kern k#,
+ "U" kern k#,
+ "Q" kern k#,
+ "L": "T" kern kk#,
+ "Y" kern kk#,
+ "V" kern kkk#,
+ "W" kern kkk#;
+
+ligtable "g": "j" kern -k#; % logjam
+
+ligtable "I": "I" kern -k#; % Richard III
+
+%>>>!!!
+ligtable "e": "V" kern kk#; % eV
+%<<<!!!
+
+endinput;
+%end of file
diff --git a/Master/texmf-dist/fonts/source/lh/base/llcligtb.mf b/Master/texmf-dist/fonts/source/lh/base/llcligtb.mf
index b787c738898..c19b449c1c5 100644
--- a/Master/texmf-dist/fonts/source/lh/base/llcligtb.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/llcligtb.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=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:
%
@@ -18,7 +18,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
diff --git a/Master/texmf-dist/fonts/source/lh/base/lliligtb.mf b/Master/texmf-dist/fonts/source/lh/base/lliligtb.mf
index 9b71320faca..c88521b31d6 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lliligtb.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lliligtb.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=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:
%
@@ -18,7 +18,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
%
% addtitional kern value
diff --git a/Master/texmf-dist/fonts/source/lh/base/llmligtb.mf b/Master/texmf-dist/fonts/source/lh/base/llmligtb.mf
index d48f1497b4b..8dfc5f1b2ba 100644
--- a/Master/texmf-dist/fonts/source/lh/base/llmligtb.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/llmligtb.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=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:
%
@@ -36,7 +36,7 @@
% ``
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
if known spanish_shriek: % for CM fonts only
diff --git a/Master/texmf-dist/fonts/source/lh/base/llrligtb.mf b/Master/texmf-dist/fonts/source/lh/base/llrligtb.mf
index 886553d2bb6..3c1d53ab94c 100644
--- a/Master/texmf-dist/fonts/source/lh/base/llrligtb.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/llrligtb.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=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:
%
@@ -18,7 +18,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
%
% addtitional kern value
diff --git a/Master/texmf-dist/fonts/source/lh/base/llvligtb.mf b/Master/texmf-dist/fonts/source/lh/base/llvligtb.mf
index 902ea7a956a..b5dc5de6d73 100644
--- a/Master/texmf-dist/fonts/source/lh/base/llvligtb.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/llvligtb.mf
@@ -7,10 +7,10 @@
% Version 3.1 // 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:
%
@@ -19,7 +19,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
% The following ligatures are integrated:
%
@@ -90,7 +90,18 @@ if (altcoding and (ligs <> 0)) % for CM
setlig ([ASCII","],CYR_.baseqq); % ",,"
endligtable;
-fi % ligatures for cyrillic quotes
+% ligatures for closing cyrillic quotes in CM
+ beginligtable
+ labelchar ([oct"134"]);
+ setlig ([ASCII"`"],CYR_.grqq); % "```"
+ endligtable;
+
+ beginligtable
+ labelchar ([oct"042"]);
+ setlig ([ASCII"'"],CYR_.grqq); % "'''"
+ endligtable;
+
+fi
k#:=-.5u#; ku#:=-1u#; kk#:=-1.5u#; kkk#:=-2u#; % four degrees of kerning
@@ -116,6 +127,7 @@ if genmode="ex":
beginligtable
labelchar ([oct"021"]); %ec:''
+% setlig ([ASCII"'"],[oct"020"]); % "'''" - CM compatibility
setkern [2u#] ([oct"047"], %'
[oct"021"]);%ec:''
setkern [-kk#] (boundarychar);
diff --git a/Master/texmf-dist/fonts/source/lh/base/lwnligs.mf b/Master/texmf-dist/fonts/source/lh/base/lwnligs.mf
index ce7d9b745f2..9e0d4445e56 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lwnligs.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lwnligs.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=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:
%
@@ -18,7 +18,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
% ligatures for cyrillic quotes
beginligtable
diff --git a/Master/texmf-dist/fonts/source/lh/base/lxpseudo.mf b/Master/texmf-dist/fonts/source/lh/base/lxpseudo.mf
index aa7d9f921f3..5422fe60046 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lxpseudo.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lxpseudo.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=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:
%
@@ -24,13 +24,15 @@
% parameters with different values at each occuerence (like |theta|).
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
% Diameters of dots
%
numeric idot_diam#,udot_diam#,pdot_diam#;
-idot_diam#=max(dot_size#,cap_curve#); % dot of letters `i' and `j'
-udot_diam#=max(dot_size#,cap_curve#); % umlaut dots
+if ebbase<>1: %(CMBRIGHT)
+ idot_diam#=max(dot_size#,cap_curve#); % dot of letters `i' and `j'
+ udot_diam#=max(dot_size#,cap_curve#); % umlaut dots
+fi
pdot_diam#=if monospace: 5/4 fi\\ dot_size#; % punctuation dots
@@ -57,8 +59,11 @@ vardef limit_dist=5/4u enddef;
numeric lc_trema_height#;
% lc_trema_height# = min(cap_height#,9/7x_height#+.5max(dot_size#,cap_curve#));
-lc_trema_height# = min(cap_height#,9/7hi.x_height#+max(dot_size#,cap_curve#));
-
+if ebbase=1: %(CMBRIGHT)
+ lc_trema_height# = min(cap_height#,x_height#+ldot_height#);
+else:
+ lc_trema_height# = min(cap_height#,9/7hi.x_height#+max(dot_size#,cap_curve#));
+fi
% More parametrisations for accents from csaccent.mf (csfonts):
@@ -86,6 +91,12 @@ numeric cap_accent_height, cap_accent_height#;
cap_accent_height# = cap_height# + acc_height#;
def pseudo_setup =
+ if ebbase=1:%(CMBRIGHT)
+ idot_diam:=stem';
+ idot_diam#:=stem'/hppp;
+ udot_diam:=min(stem', hround(.85dot_size));
+ udot_diam#:=udot_diam/hppp;
+ fi
define_whole_blacker_pixels(idot_diam,udot_diam,pdot_diam);
define_whole_vertical_pixels(lc_trema_height);
define_whole_vertical_pixels(uc_acc_height,lc_acute_height,
diff --git a/Master/texmf-dist/fonts/source/lh/base/lycyracc.mf b/Master/texmf-dist/fonts/source/lh/base/lycyracc.mf
index 053856c787d..1e6c6e03348 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lycyracc.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lycyracc.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=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:
%
@@ -21,7 +21,7 @@
% Accents for capital letters
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
% A dirty trick, better left unseen. |cap_height| and |cap_height#|
% are restored at the end of this file.
diff --git a/Master/texmf-dist/fonts/source/lh/base/lypseudo.mf b/Master/texmf-dist/fonts/source/lh/base/lypseudo.mf
index 6deb4ac793d..aef1672edc8 100644
--- a/Master/texmf-dist/fonts/source/lh/base/lypseudo.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/lypseudo.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=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:
%
@@ -18,7 +18,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
% This file contains pseudoparameters which are not entered in the
% parameter files, but are computed from the initial parameter set.
@@ -29,8 +29,10 @@ LHver_check(3,4); % like |version_check| in ec
% Diameters of dots
%
numeric idot_diam#,udot_diam#,pdot_diam#;
-idot_diam#=max(dot_size#,cap_curve#); % dot of letters `i' and `j'
-udot_diam#=max(dot_size#,cap_curve#); % umlaut dots
+if ebbase<>1: %(CMBRIGHT)
+ idot_diam#=max(dot_size#,cap_curve#); % dot of letters `i' and `j'
+ udot_diam#=max(dot_size#,cap_curve#); % umlaut dots
+fi
pdot_diam#=if monospace: 5/4 fi\\ dot_size#; % punctuation dots
% |limit_dist| is used in |put_cross|
@@ -65,6 +67,12 @@ numeric cap_accent_height, cap_accent_height#;
cap_accent_height# = acc_height# + hi.x_height#;
def pseudo_setup=
+ if ebbase=1:%(CMBRIGHT)
+ idot_diam:=stem';
+ idot_diam#:=stem'/hppp;
+ udot_diam:=min(stem', hround(.85dot_size));
+ udot_diam#:=udot_diam/hppp;
+ fi
define_whole_blacker_pixels(idot_diam,udot_diam,pdot_diam);
define_whole_vertical_pixels(uc_acc_height,lc_acute_height,
lc_hachek_height);
diff --git a/Master/texmf-dist/fonts/source/lh/base/nodraw.mf b/Master/texmf-dist/fonts/source/lh/base/nodraw.mf
index ee9ee949671..57ac4dd2fb3 100644
--- a/Master/texmf-dist/fonts/source/lh/base/nodraw.mf
+++ b/Master/texmf-dist/fonts/source/lh/base/nodraw.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
-% (c) O.Lapko
+% Version 3.5 // Patchlevel=0
+% (c) A.Khodulev
%
-% 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:
%
@@ -18,7 +18,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
def addto text t = enddef; % Draw nothing
def filldraw text t = enddef;
@@ -68,10 +68,10 @@ def big_tilde = enddef;
def labels text t = enddef;
def penlabels text t = enddef;
+endinput;
vardef bar_stroke(expr left_jut,right_jut) = enddef;
vardef cyr_serif(suffix $,$$,@) % serif at |z$| for stroke from |z$$|
(expr darkness,beak_darkness,jut,beak_jut) =
enddef;
-endinput;
%end of file