diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/base')
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 |