diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/nont2/lgunicl.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/lh/nont2/lgunicl.mf | 221 |
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 |