summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/lh/nont2/lgunicl.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/nont2/lgunicl.mf')
-rw-r--r--Master/texmf-dist/fonts/source/lh/nont2/lgunicl.mf221
1 files changed, 217 insertions, 4 deletions
diff --git a/Master/texmf-dist/fonts/source/lh/nont2/lgunicl.mf b/Master/texmf-dist/fonts/source/lh/nont2/lgunicl.mf
index 608af0c5109..4c9a6a83f5a 100644
--- a/Master/texmf-dist/fonts/source/lh/nont2/lgunicl.mf
+++ b/Master/texmf-dist/fonts/source/lh/nont2/lgunicl.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:
%
@@ -20,6 +20,8 @@
% List of letternames and their codes in Unicode
%
+% e_grv "50 E with grave
+% i_grv "5d I with grave
% gje "53 Ghe with acute
% kje "5c Ka with acute
% zh_brv "c2 Zhe with breve
@@ -33,6 +35,8 @@
% i_uml "e5 I with umlaut
% o_uml "e7 O with umlaut
% otld_uml "e8 O tilded with umlaut
+% ukre_uml -- Ukrainian E with umlaut
+% erev_uml "ed Erev with umlaut
% u_bar "ef U with macron (bar)
% u_uml "f1 U with umlaut
% u_dac "f3 U with double acute
@@ -40,7 +44,108 @@
% ery_uml "f9 Ery with umlaut
%
-LHver_check(3,4); % like |version_check| in ec
+LHver_check(3,5); % like |version_check| in ec
+
+if concrete: input lgnoncl; fi % Cyrillic concrete letters
+
+lhchar "Lowercase Cyrillic letter e_grv - e grave";
+cyrchar_twice(e_grv,7.25u#+max(.75u#,.5curve#),x_height#,0);
+italcorr .5[bar_height#,x_height#]*slant+.5min(curve#-1.5u#,0);
+adjust_fit(if monospace: .25u#,.5u# else: 0,0 fi);
+% lower_e;
+numeric left_curve,right_curve;
+left_curve=right_curve+6stem_corr=curve if not serifs: -3stem_corr fi;
+if right_curve<tiny.breadth: right_curve:=tiny.breadth; fi
+if left_curve<tiny.breadth: left_curve:=tiny.breadth; fi
+pickup tiny.nib; pos1(right_curve,0);
+pos2(vair,90); pos3(left_curve,180);
+y1=good.y bar_height; top y2r=h+vround 1.5oo; y0l=bot y1;
+rt x1r=hround min(w-.5u,w-u+.5right_curve);
+lft x3r=hround max(.5u,1.25u-.5left_curve); x2=.5w+.25u;
+{{interim superness:=more_super;
+ filldraw stroke super_arc.e(1,2)}}; % right bowl
+y3=.5[y2,y4]; bot y4r=-oo; x4=x2+.25u;
+if serifs:
+ pos4(vair',270); pos5(hair,360);
+ y5=max(good.y(.5bar_height-.9),y4l+vair); x5r=x1r;
+ (x,y4l)=whatever[z4r,z5]; x4l:=min(x,x4l+.5u);
+ filldraw stroke pulled_arc.e(2,3) & pulled_arc.e(3,4)
+ ...{x5-x4,5(y5-y4)}z5e; % left bowl, arc, and terminal
+else:
+ pos4(vair,270);
+ filldraw stroke super_arc.e(2,3) & super_arc.e(3,4); % left bowl and arc
+ pickup fine.nib; pos4'(vair,270); z4=z4';
+ pos5(.5[vair,flare],275); rt x5r=hround(w-.6u);
+ y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
+ filldraw stroke term.e(4',5,right,1,4); fi % terminal
+path testpath; testpath=super_arc.r(2,3) & super_arc.r(3,4);
+y1'r=y0r=y0l+.6[thin_join,vair]; y1'l=y0l; x1'l=x1'r=x1;
+forsuffixes $=l,r:
+ x0$=xpart(((0,y0$)--(x1,y0$)) intersectionpoint testpath); endfor
+fill stroke z0e--z1'e; % crossbar
+%%%%%
+% the accent
+hpos_corr=1.5u;
+put_gravis; repeat_once;
+penlabels(0,1,2,3,4,5); endchar;
+
+lhchar "Lowercase Cyrillic letter i_grv - i grave";
+cyrchar_twice(i_grv,10u# if not serifs:+.5width_adj# fi, % n_width
+ x_height#,0);
+italcorr x_height#*slant-serif_fit#+jut#-2u#+.5stem#; %d->x_height+jut
+adjust_fit(serif_fit#,serif_fit#);
+begingroup
+% lower_i;
+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[];
+if hefty: numeric upper_notch,lower_notch;
+ stem1=fudged.hair-2stem_corr;
+ 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,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];
+ x5l:=x5'; x6r:=x6'; y5l:=y5'; y6r:=y6';
+ else:
+ y5l=0; y6r=h; x5=x1r; x6=x3l; penpos5(stem1,0); penpos6(stem1,0);
+ fi
+ x2'=rt x1r; z2'=whatever[z5l,z6l]; x3'=lft x4l; z3'=whatever[z5r,z6r];
+ fill z5l..
+ if y2'>lower_notch: {right}(x2'+1,lower_notch){up}... fi
+ {z6-z5}diag_in(5l,6l,1,6r)--z6r..
+ if y3'<upper_notch: {left}(x3'-1,upper_notch){down}... fi
+ {z5-z6}diag_in(6r,5r,1,5l)--cycle; % diagonal
+else:
+ x5=hround (rt x1r-.5)-eps; x6=hround (lft x3l+.5)+eps;
+ y5l=vround(y2+bracket+eps); y6r=vround(y3-bracket-eps);
+ stem1=max(tiny.breadth,fudged.hair-2stem_corr);
+ alpha1=diag_ratio(1,stem1,x6-x5,top y6r-bot y5l);
+ penpos5(alpha1*stem1,90); penpos6(alpha1*stem1,90);
+ fill stroke z5e--z6e; fi % 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
+%%%%%
+endgroup;
+% the accent
+hpos_corr=0.75u;
+put_gravis; repeat_once;
+penlabels(1,2,3,4,5,6); endchar;
lhchar "Lowercase Cyrillic letter gje (g acute)";
cyrchar_twice(gje,8u#-.5width_adj#,x_height#,0);
@@ -65,6 +170,7 @@ endgroup;
hpos_corr=-u; put_accent; repeat_once;
penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
+iff not concrete:%
iff not specific:%
lhchar "Lowercase Cyrillic letter kje (k acute) (`roman')";
cyrchar_twice(kje,if serifs:10u# else:9.5u# fi % zhk_width: n_width;keng_width
@@ -122,6 +228,7 @@ endgroup;
hpos_corr=-u; put_accent; repeat_once;
penlabels(1,2,3,4,5,6); endchar;
+iff not concrete:%
iff not specific:%
lhchar "Lowercase Cyrillic letter zh_brv - zhe breve (`roman')";
cyrchar(zh_brv,if serifs:10u# else:9.5u# fi % zhk_width: n_width;keng_width
@@ -383,6 +490,7 @@ fill stroke z0e--z1'e; % crossbar
h:=full_h; lowercase_umlaut(0,0, 7,8,9,10);
penlabels(0,1,2,3,4,5,5'); endchar;
+iff not concrete:%
iff not specific:%
lhchar "Lowercase Cyrillic letter zh_uml - zhe umlaut (`roman')";
cyrchar(zh_uml,if serifs:10u# else:9.5u# fi % zhk_width: n_width;keng_width
@@ -678,6 +786,111 @@ fi
h:=full_h; lowercase_umlaut(0,0, 8,9,10,11);
penlabels(1,2,3,4); endchar;
+lhchar "Lowercase Cyrillic letter ukre_uml - Ukrainian e (C with mid-line)";
+cyrchar(ukre_uml,8u#,lc_trema_height#,0); % eng
+italcorr x_height#*slant-.2u#;
+adjust_fit(if monospace: .5u#,.5u# else: -.1u#,0 fi);
+full_h:=h; h:=x_height;
+% lower_ukre;
+set_bar_axis;
+pickup fine.nib; pos2(vair',90); pos3(curve,180); pos4(vair',270);
+x2=x4=(.5(w+u)); top y2r=vround(h+1.5oo); bot y4r=-oo;
+lft x3r=(hround max(.6u,1.35u-.5curve)); y3=.5h;
+if serifs:
+ pos1(hair,0); pos5(hair,360);
+ y1=min(y2.bh+.75flare-.25vair+eps,.9[bar_height,h]-.75flare);
+ 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);
+ filldraw stroke z1e{x2-x1,5(y2-y1)}...pulled_super_arc.e(2,3)(.7superpull)
+ & pulled_super_arc.e(3,4)(.5superpull)
+ ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e; % arc and lower terminal
+ pos6(.3[fine.breadth,hair],0); x6r=x1r; top y6=h+oo;
+ x1r-x1'=1.5curve; y1'=y1;
+ path upper_arc; upper_arc=z1{x2-x1,5(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:
+ pos1(4/7[vair',flare],80); pos5(.6[vair',flare],275);
+ rt x1r=hround(w-.6u);
+ top y1r=vround .82[bar_height,top y2r];
+ filldraw stroke term.e(2,1,right,.8,4); % upper terminal
+ rt x5r=hround(w-.5u);
+ y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
+ forsuffixes e=l,r: path p.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 endfor
+ filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
+ & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and lower terminal
+%%%
+% lukre_bar;
+if (serifs=true) and (bar#<=.5curve#):
+ x7r=x3l; x8r=min(lft x1l-.5hair,0.85[x3l,x1l]);
+ y7l=y8l=y1.bh; y7r=y8r=y2.bh; x7l=x7r; x8l=x8r;
+ numeric bar[];
+ bar2=7/8[bar,fudged.stem-2stem_corr];
+ penpos9(bar2,45); z9=.575[z7l,z8l];
+ fill circ_stroke z8e{-2,-1}..{-2,1}z9e..{-2,-1}z7e; % curve ~
+else:
+ bar_stroke(x3l,min(lft x1l-.5hair,0.85[x3l,x1l])); % bar --
+fi
+%%%%%
+h:=full_h; lowercase_umlaut(0,0, 10,11,12,13);
+penlabels(1,1',2,3,4,5,6,7,8,9); endchar;
+
+lhchar "Lowercase Cyrillic letter erev_uml - reverse e umlaut";
+cyrchar(erev_uml,8u#,lc_trema_height#,0); % eng
+italcorr x_height#*slant-.2u#;
+adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi);
+full_h:=h; h:=x_height;
+% lower_erev;
+set_bar_axis;
+pickup fine.nib; pos2(vair',90); pos3(curve,0); pos4(vair',-90);
+x2=x4=w-.5(w+u); top y2r=vround(h+1.5oo); bot y4r=-oo;
+rt x3r=w-hround max(.6u,1.35u-.5curve); y3=.5h; % eng
+if serifs:
+ pos1(hair,180); pos5(hair,-180);
+ y1=min(y2.bh+.75flare-.25vair+eps,.9[bar_height,h]-.75flare);
+ lft x1r=lft x5r=hround.5u;
+ y5=max(good.y(.5bar_height-.9),y4l+vair');
+ (x,y4l)=whatever[z4r,z5l]; x4l:=max(x,x4l-.5u);
+ filldraw stroke z1e{x2-x1,5(y2-y1)}...pulled_super_arc.e(2,3)(.7superpull)
+ & pulled_super_arc.e(3,4)(.5superpull)
+ ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e; % arc and lower terminal
+ pos6(.3[fine.breadth,hair],180); x6r=x1r; top y6=h+oo;
+ x1'-x1r=1.5curve; y1'=y1;
+ path upper_arc; upper_arc=z1{x2-x1,5(y2-y1)}..z2{right};
+ numeric t; t=xpart(upper_arc intersectiontimes (z6l--z1'));
+ filldraw z1r--z6r--z6l--subpath(t,0) of upper_arc--cycle; % barb
+else:
+ pos1(4/7[vair',flare],100); pos5(.6[vair',flare],-95);
+ lft x1r=good.x .6u; top y1r=vround .82[bar_height,top y2r];
+ filldraw stroke term.e(2,1,left,.8,4); % upper terminal
+ lft x5r=good.x .5u;
+ y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
+ forsuffixes e=l,r: path p.e; p.e=z4e{left}..tension .9 and 1..z5e;
+ if angle direction 1 of p.e<105:
+ p.e:=z4e{left}..tension atleast.9 and 1..{dir 105}z5e; fi
+ endfor
+ filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
+ & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and lower terminal
+%%%
+% lerev_bar;
+if (serifs=true) and (bar#<=.5curve#):
+ x7r=max(rt x1l+.5hair,0.85[x3l,x1l]); x8r=x3l;
+ y7l=y8l=y1.bh; y7r=y8r=y2.bh; x7l=x7r; x8l=x8r;
+ numeric bar[];
+ bar2=7/8[bar,fudged.stem-2stem_corr];
+ penpos9(bar2,45); z9=.475[z7l,z8l];
+ fill circ_stroke z7e{2,1}..{2,-1}z9e..{2,1}z8e; % curve /\/
+else:
+ bar_stroke(max(rt x1l+.5hair,0.85[x3l,x1l]),x3l); % bar --
+fi
+%%%%%
+% the accent
+h:=full_h; lowercase_umlaut(0,0, 10,11,12,13);
+penlabels(1,1',2,3,4,5,6,7,8,9, 10,11,12,13); endchar;
+
lhchar "Lowercase Cyrillic letter u_bar - u bar (macron)";
cyrchar(u_bar,if serifs:9.5u# else:9u# fi,
lc_trema_height#,desc_depth#); % eng