diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/base/lgt2loi.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/lh/base/lgt2loi.mf | 932 |
1 files changed, 932 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgt2loi.mf b/Master/texmf-dist/fonts/source/lh/base/lgt2loi.mf new file mode 100644 index 00000000000..6a3c662c4ca --- /dev/null +++ b/Master/texmf-dist/fonts/source/lh/base/lgt2loi.mf @@ -0,0 +1,932 @@ +% +% lgt2loi.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: +% +% Italic Cyrillic letters 0--127 for T2 encoding +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% List of letternames and their codes in T2 +% +% X2 T2A T2B T2C +% +% ae "61 a "ac - - Ligature AE +% tshe "62 b "a2 - - Tshe +% dje "63 c "a3 - - Dje +% abh_ch "64 d - - "b1 Abkhasian che (same as lower e with hook) +% abh_ch_dsc "65 e - - "b2 Abkhasian che descender +% k_vcrs "66 f "ab - - Ka vertically crossed +% k_hcrs "67 g - - "ab Ka horisontally crossed +% l_dsc "68 h - "aa "aa El with descender +% lat_i "69 i - - - Latin letter I (goes first for LH font) +% lat_j "6a j - - - Je - Latin letter J +% lje "6b k "a7 "a8 - Lje +% m_dsc "6c l - - "a8 Em with descender +% nje "6d m "bb "b9 - Nje +% abh_ha "6e n - - "b7 Abkhasian kha +% p_tl "6f o - - "a0 Pe with tail +% +% r_dsc "70 p - - "a5 Er with descender +% lat_q "71 q - - - Latin letter Q +% t_dsc "72 r - - "a2 Te with descender +% lat_s "73 s "af - - Dze - Latin letter S +% tetse "74 t - - "a1 Ligature Te-Tse +% dzhe "75 u "b6 - "b6 Dzhe +% ch_vcrs "76 v "b7 - - Che vertically crossed +% lat_w "77 w - - - Latin letter W +% yat "78 x - - - Yat +% b_yus "79 y - - - Big Yus +% izh "7a z - - - Izhitsa +% +% n_ltl "1d - - "b9 En with left tail +% delta "1f - "a6 - Delta +% m_tl - - - "ae Em with tail +% r_gcrs - - - "a6 Er grave crossed +% s_acrs - - - "b1 Es acute crossed +% g_crsdsc - - "a0 - Ghe crossed with descender +% h_hcrs - - "b4 - Kha horisontally crossed +% +% semisn - - - "b3 Semi Soft Sign +% i_shdsc - - - "b4 I Short with descender +% r_tl - - - "bb Er with tail +% + +LHver_check(3,4); % like |version_check| in ec + +iff knuthian_ae:% +lhchar "Italic Cyrillic letter ae - ligature ae"; +cyrchar(ae,13u#,x_height#,0); +italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#); +adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup fine.nib; +forsuffixes $=hair,stem: shaved$:=mfudged$; save $; $=shaved$; endfor +%numeric heavy_hair; heavy_hair=hround .2[hair,stem];%defined in lxpseudo +numeric light_stem; light_stem=hround .75[hair,stem]; +pos0(vair,-90); pos1(heavy_hair,0); pos2(vair,90); +pos3(light_stem,180); pos4(vair,270); pos5(hair,320); +x0=rt x3l; rt x1r=hround(w-1.5u+.5heavy_hair); x2=x4=.5(w+6u); +lft x3r=hround(.5w-.5light_stem); x5r=good.x(w-.5u); x6=x5; +y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo; +top y5l=vround(.5bar_height+.5); path p; p=z4{right}..z5..z6; +filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3) + & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc of e +pos7(light_stem,0); pos8(light_stem,0); +x7=x8=x3; y7+.5light_stem=h+oo; y8-.5light_stem=-oo; +pos7'(vair,-225); pos11(curve,-180); z7'=z7; +pos12(vair,-90); pos3'(hair,0); z3'=z3; +lft x11r=hround(1.5u-.5curve); x12=.5[x11,x3]; +y11=.3[y12,y7]; bot y12r=-oo; +filldraw stroke z7'e{3(x11-x7),y11-y7}...pulled_arc.e(11,12) + & pulled_arc.e(12,3'); % bowl of a +filldraw z7l---z8l..z8r---z7r..cycle; % stem +penlabels(0,1,2,3,4,5,6,7,8,11,12); endchar; + +iff not knuthian_ae: % borrowed from ec +lhchar "Italic Cyrillic letter ae - ligature ae"; +cyrchar(ae,13u#,x_height#,0); +italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#); +adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup fine.nib; +forsuffixes $=hair,stem: shaved$:=mfudged$; save $; $=shaved$; endfor +numeric light_stem; light_stem=hround .75[hair,stem]; +pos0(vair,-90); pos1(heavy_hair,0); pos2(vair,90); +pos3(light_stem,180); pos4(vair,270); pos5(hair,320); +x0=rt x3l; rt x1r=hround(w-1.5u+.5heavy_hair); x2=x4=.5(w+6u); +lft x3r=hround(.5w-.5light_stem); x5r=good.x(w-.5u); x6=x5; +y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo; +top y5l=vround(.5bar_height+.5); path p; p=z4{right}..z5..z6; +filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3) + & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc of e +pos7(light_stem,0); +x7=x3; y7+.5light_stem=h+oo; +pos7'(vair,-225); pos10(vair,-270); +pos11(curve,-180); z7'=z7; +pos12(vair,-90); pos3'(hair,0); z3'=z3; +lft x11r=hround(1.5u-.5curve); x10=x12=.5[x11,x3]; +top y10r=h+oo; y11=.52h; bot y12r=-oo; +filldraw stroke pulled_arc.e(3',10) & pulled_arc.e(10,11) + & pulled_arc.e(11,12) & pulled_arc.e(12,3'); % bowl of a +filldraw z7l---z3r..z3l---z7r..cycle; % stem +penlabels(0,1,2,3,4,5,6,7,10,11,12); endchar; + +lhchar "Italic Cyrillic letter abh_ch - lower e hook"; +cyrchar(abh_ch,8u#,x_height#,0); +italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#); +adjust_fit(max(2u#,1.5u#+.5flare#),0); +% ital_e; +pickup fine.nib; %numeric heavy_hair; heavy_hair=hround .2[hair,stem];%defined in lxpseudo +pos0(vair,-90); pos1(heavy_hair,0); pos2(vair,90); +pos3(curve,180); pos4(vair,270); pos5(hair,320); +x0=rt x3l; rt x1r=hround(w-1.5u+.5heavy_hair); x2=x4=.5(w+u); +lft x3r=hround(1.5u-.5curve); x5r=good.x(w-eps); x6=x5; +y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo; +top y5l=vround .5bar_height; path p; p=z4{right}..z5..z6; +filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3) + & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc +% bulb +y7=y3; x7=x3r; pos7(vair,-90); y9=.5[y3,y2]; +lft x9r=l+letter_fit+hround (.5u-.5); %l+.5u; +pos9(flare,-180); z8r=z9r; pos8(hair,-180); +cyrbulb(7,8,9); +penlabels(1,2,3,4,5,6,7,8,9); endchar; + +lhchar "Italic Cyrillic letter abh_ch_dsc - lower e hook ogonek"; +cyrchar(abh_ch_dsc,8u#,x_height#,desc_depth#); +italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#); +adjust_fit(max(2u#,1.5u#+.5flare#),0); +% ital_e; +pickup fine.nib; +%numeric heavy_hair; heavy_hair=hround .2[hair,stem];%defined in lxpseudo +pos0(vair,-90); pos1(heavy_hair,0); pos2(vair,90); +pos3(curve,180); pos4(vair,270); pos5(hair,320); +x0=rt x3l; rt x1r=hround(w-1.5u+.5heavy_hair); x2=x4=.5(w+u); +lft x3r=hround(1.5u-.5curve); x5r=good.x(w-eps); x6=x5; +y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo; +top y5l=vround .5bar_height; path p; p=z4{right}..z5..z6; +filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3) + & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc +% bulb +y7=y3; x7=x3r; pos7(vair,-90); y9=.5[y3,y2]; +lft x9r=l+letter_fit+hround (.5u-.5); %l+.5u; +pos9(flare,-180); z8r=z9r; pos8(hair,-180); +cyrbulb(7,8,9); +% descender-ogonek + path p.r; p.r=pulled_arc.r(3,4)...{direction 1 of p}z5r; + def the_pen= + if known ogonek_pen: ogonek_pen else: fine fi + enddef; + ogonek_breadth:=xvair; + numeric tt; % the time... + tt=if hefty: 2.8 else: 2.6 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); +easy_ogonek(the_pen,10,11,12); % ogonek +penlabels(1,2,3,4,5,6,7,8,9, 10,11,12); endchar; + +lhchar "Italic Cyrillic letter k_vcrs - ka vcrossed"; +cyrchar(k_vcrs,10u#,x_height#,0); %k+2u +italcorr x_height#*slant; +adjust_fit(if monospace:-1.5u# else: 0 fi,0); +pickup fine.nib; x2-.5stem=hround(2.5u-.5stem); +%ihalfstem; +if monospace: + pos2(stem,0); top y2=h; +else: + x0=0; hook_in(0,1,2); fi % opening hook +z2'=z2; pos2'(stem,0); x11=x2'; y11-.5stem=-oo; pos11(stem,0); +filldraw circ_stroke z11e--z2'e; % left stem +pos3(vair,90); pos3'(vair,90); x3=x11; y3=y3'=bar_height; x3'=.5[x11,x7]; +pos4(vair,90); x4=w-2u; top y4r=x_height+oo; +pos5(hair,0); pos6(flare,0); +rt x5r=hround(w-.5u); y5+.5flare=vround(bot y4l-.03x_height); +pos7(stem,0); pos8(vair,90); pos9(hair,180); +x9+.5hair=hround(w+.5hair-eps); y9=1/3x_height; +lft x7l=hround(w-2.75u-.5stem); y7=1/2y3; x8=w-1.2u; bot y8l=-oo; +filldraw stroke z3e{right}--z3'e{right}..{right}z4e; % upper diagonal +bulb(4,5,6); % bulb +filldraw stroke z3e{right}--z3'e{right}...z7e{down} + ...z8e{right}...{up}z9e; % lower diagonal +% vcross +pickup fine.nib; numeric middle_weight; +middle_weight=max(fine.breadth,.6[thin_join,vair]); +pos10(middle_weight,0); pos12(middle_weight,0); +lft x10l=lft x12l=hround(max(x3',.5[x3,x3'])-.5middle_weight+eps); +top y12-bot y10=.5x_height; .52[y10,y12]=y3; +filldraw stroke z10e--z12e; +penlabels(1,2,3,4,5,6,7,8,9); endchar; + +lhchar "Italic Cyrillic letter k_hcrs - ka hcrossed"; +cyrchar(k_hcrs,8u#,asc_height#,0); +italcorr x_height#*slant; +adjust_fit(0,0); +% ital_k;long stem +pickup tiny.nib; pos1(stem,0); pos2(stem,0); x1=x2; +lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; +filldraw circ_stroke z2e--z1e; % left stem +sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif +pickup fine.nib; pos3(vair,90); x3=x1; y3=bar_height; +pos4(vair,90); x4=w-2u; top y4r=x_height+oo; +filldraw stroke z3e{right}..{right}z4e; % upper diagonal +pos5(hair,0); pos6(flare,0); +rt x5r=hround(w-.5u); y5+.5flare=vround(bot y4l-.03x_height); +bulb(4,5,6); % bulb +pos7(stem,0); pos8(vair,90); pos9(hair,180); +x9+.5hair=hround(w+.5hair-eps); y9=1/3x_height; +lft x7l=hround(w-2.75u-.5stem); y7=1/2y3; x8=w-1.2u; bot y8l=-oo; +filldraw stroke z3e{right}...z7e{down} + ...z8e{right}...{up}z9e; % lower diagonal +% hcross +pickup crisp.nib; numeric outer_jut; +outer_jut=max(limit_dist,1.1jut); +pos10(bar,90); pos11(bar,90); +top y11r=top y10r=vround (min(.5[x_height,h]+.5bar,h-max(bracket,1.2slab))-eps); +x11=x1r+1.15outer_jut; lft x10=hround-.75u; +filldraw stroke z10e--z11e; % cross bar +penlabels(1,2,3,4,5,6,7,8,9, 10,11); endchar; + +lhchar "Italic Cyrillic letter l_dsc - el descender"; +cyrchar(l_dsc,9u#,x_height#,desc_depth#); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(.5u#,.1u#); %iserif_adj +% ital_l;dsc +pickup fine.nib; +pos1(vair,-90); pos2(stem,180); pos3(hair,0); pos10(stem,0); +pos4(vair,-90); pos5(hair,-180); pos6(flare,-180); +top y1l=h+oo; x1=.5[x3,x2]; +x3=3u; y3=.35h; +y6-.5flare=.1h; lft x6r=-.25u; z5r=z6r; +bot y4r=-oo; x4=max(.4[lft x6r,rt x3r],lft x6r+.5flare-eps); +y10=.8h; lft x10l=lft x7l=hround(w-2.5u-.5stem); z10=z2; +bulb(4,5,6); % bulb +filldraw stroke pulled_arc.e(4,3) + & super_arc.e(3,1) & super_arc.e(1,2); % left stem +pos8(vair,90); pos9(vair,180); pos7(stem,0); +x9=w; y9=y7=.4bar_height; x8=.5[x7,x9]; bot y8l=-oo; +filldraw circ_stroke z7e{-.5u,-x_height}...z8e{right}...{up}z9e; %closing hook +filldraw stroke z10e--z7e; % stem tail +%%% +% italic descender/ogonek +if is_ogonek: + def the_pen= + if known ogonek_pen: ogonek_pen else: fine fi + enddef; + path p.l; + p.l=z7l{-.5u,-x_height}...z8l{right}...{up}z9l; + ogonek_breadth:=xvair; + ogonek_pos=point .9 of p.l; + easy_ogonek(the_pen,11,12,13); % ogonek +else: + i_serif(9,x); +fi +penlabels(1,1',2,3,4,5,6,7,8,9,10, 11,12,13); endchar; + +lhchar "Italic Cyrillic letter m_dsc - m descender"; +cyrchar(m_dsc,13u#,x_height#,desc_depth#); +italcorr 1/3x_height#*slant+.5hair#+.5u#; %u +adjust_fit(if monospace:-.5u# else:.5u# fi, %wbulb_adj + .1u#); %iserif_adj +%ital_m;dsc +pickup fine.nib; +pos1(hair,0); pos6(stem,0); +pos2(hair,0); pos3(vair,-90); pos4(hair,-180); pos5(flare,-180); +x1=x2=3u; y2=.35h; top y1=h; bot y3r=-oo; lft x5r=-.25u; z4r=z5r; +x3=min(lft x5r+flare,lft x2l-eps); y5-.5flare=.1h; +bulb(3,4,5); % bulb +filldraw stroke pulled_arc.e(3,2) & z2e--z1e; % left stem +rt x7r=hround(w-2.5u+.5stem); %!!! x9=w; hook_out(7,8,9); % closing hook +pos7(stem,0); pos8(vair,90); pos9(vair,180); %!!! +x9=w; y9=y7=.4bar_height; x8=.5[x7,x9]; bot y8l=-oo; +filldraw circ_stroke z7e{-.5u,-x_height}...z8e{right}...{up}z9e; % closing hook +x6=x7; top y6=h; +filldraw stroke z6e--z7e; % right stem +% diagonals;m +numeric stem[]; % thicknesses of the strokes +stem1=hround(fudged.stem-stem_corr); +stem2=min(stem1,hround(fudged.hair-stem_corr)); +penpos10(stem1,0); penpos11(stem1,0); penpos12(stem2,0); penpos13(stem2,0); +x10l=lft x1l; x11l=x12l; x13l=lft x7l; x11-x10=x13-x12; +y10=y13=top y6; y11=y12; +if hefty: + y11=if monospace: vround 1/3h-.5stem1 else: oo fi; + numeric upper_notch,lower_notch; + upper_notch=h-notch_cut; lower_notch=y11+notch_cut; + x1'=rt x1r; z1'=whatever[z10l,z11l]; + x6'=lft x6l; z6'=whatever[z12r,z13r]; + z0=whatever[z10r,z11r]=whatever[z12l,z13l]; + fill z10l.. + if y1'<upper_notch: {right}(x1'+1,upper_notch){down}... fi + {z11-z10}diag_in(10l,11l,1,11r)..diag_out(12l,1,12r,13r){z13-z12} + if y6'<upper_notch: ...{up}(x6'-1,upper_notch){right} fi + ..z13r--diag_out(13r,1,13l,12l){z12-z13} + if y0<=lower_notch: ..{z12-z13}z0{z10-z11}.. + else: ...{down}(x0+.5,lower_notch)--(x0-.5,lower_notch){up}... fi + {z10-z11}diag_in(11r,10r,1,10l)--cycle; % diagonals +else: + y11=0; z0=whatever[z10r,z11r]=whatever[z12l,z13l]; + fill z10l..{z11-z10}diag_in(10l,11l,1,11r)..diag_out(12l,1,12r,13r){z13-z12} + ..z13r--diag_out(13r,1,13l,12l){z12-z13}..{z12-z13}z0{z10-z11} + ..{z10-z11}diag_in(11r,10r,1,10l)--cycle; fi % diagonals +% italic descender/ogonek +if is_ogonek: + def the_pen= + if known ogonek_pen: ogonek_pen else: fine fi + enddef; + path p.l; + p.l=z7l{-.5u,-x_height}...z8l{right}...{up}z9l; + ogonek_breadth:=xvair; + ogonek_pos=point .9 of p.l; + easy_ogonek(the_pen,14,15,16); % ogonek +else: + i_serif(9,x); +fi +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13, 14,15,16); +endchar; + +lhchar "Italic Cyrillic letter abh_ha - Abkhasian ha"; +cyrchar(abh_ha,9.25u#+width_adj#,x_height#,desc_depth#); +italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi; +adjust_fit(if monospace:0,0 else: -.35u#,-.35u# fi); %o +pickup fine.nib; +numeric right_curve,mid_curve; +right_curve=.7[.7[thin_join,vair],curve] if hefty:-stem_corr fi; +mid_curve=.5[.7[thin_join,vair],curve] if hefty:-2stem_corr fi; +penpos1(vair,90); penpos3(vair',-90); +penpos2(curve,180); penpos4(right_curve,0); +interim superness:=more_super; x2r=hround u; +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); +x5=if serifs:.5[x6,x4]else:.5[x6,x4]fi; +y5r=.5[y4,y1]; penpos5(.7[thin_join,vair],90); +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 + & pulled_super_arc.e(4,5)(.25superpull) + & pulled_super_arc.e(5,6)(.75superpull) + & pulled_super_arc.e(6,7)(.5superpull); % 6/4 bowl +fill z7l--z7r{right}..{up} + if fine.top y7r>fine.bot y7l: + (fine.rt x7,y7) + else: + (fine.rt x7,fine.top y7r)--(fine.rt x7,fine.bot y7l) + fi + {up}..{left} cycle; +z1'=z1; z4'=z4; pos1'(vair,90); pos4'(.75[.7[thin_join,vair],curve],0); +forsuffixes e=l,r: path quarta.e; +quarta.e=pulled_super_arc.e(1',4')(.5superpull); endfor +numeric quart; +quart=min( + ypart(quarta.r intersectiontimes ((0,top y5r+vair)--(w,top y5r+vair))), + ypart(quarta.r intersectiontimes ((rt x5,0)--(rt x5,h)))); +filldraw stroke subpath (0,.67) of quarta.e; %quart +penlabels(1,2,3,4,5,6,7); endchar; + +lhchar "Italic Cyrillic letter p_tl - pe tail"; +cyrchar(p_tl,13u#,x_height#,desc_depth#); %13.5 +italcorr (-.3x_height#+bar_height#)*slant; %o:.7h-(h-bar_height) +adjust_fit(if monospace:-1.5u#,-1.5u# else: 0,0 fi); +pickup fine.nib; +numeric shaved_stem; shaved_stem=mfudged.stem; save stem; stem=shaved_stem; +pos2(stem,0); x1=x2; +if monospace: + pos1(stem,0); lft x1l=hround(2.5u-.5stem); top y1=h; +else: + x0=0; lft x2l=hround(2.5u-.5stem); + hook_in(0,a,1); fi % opening hook +y2-.5stem=-oo; filldraw circ_stroke z2e--z1e; % left stem +x4+.5stem=hround(7u+.5stem); ital_arch(2,3,4); % left arch +pos5(stem,0); y5=y2; x5=x4; +filldraw circ_stroke z5e--z4e; % middle stem +% hook(4); +pos3'(vair,90); x3'=x4; y3'=bar_height; +lft x7l=hround(w-1.5u-.5stem); y7=.45y3'; pos7(stem,0); +pos9(vair,-90); pos10(hair,-180); pos11(flare,-180); pos8(stem,0); x8=x7; +bot y8=-1/3d; bot y9r=-d-oo; y11-.5flare=-vround.9d; +x9=w-11/3u; lft x10r=min(x7-4u,lft x10r+x9-x10l+4u-eps); +filldraw stroke z3'e{right}...z7e{down}---z8e...{left}z9e; +bulb(9,10,11); % bulb +penlabels(0,a,1,2,3,4,5,6,7,8,9,10,11); endchar; + +lhchar "Italic Cyrillic letter r_dsc (looks like p)"; +cyrchar(r_dsc,if monospace: 9u# else: 9.25u# fi,x_height#, % rusw + max(1.6desc_depth#,paren_depth#));%r_ddepth +italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi; %p +adjust_fit(0,if monospace:0 else:-.35u# fi); +full_d:=d; d:=vround min(desc_depth,max(vair+slab+oo+1+eps,full_d-max(.4desc_depth,.55beak)-slab));%r_dscs +% ital_r; +pickup fine.nib; +x0=0; x2-.5stem=hround(2.5u-.5stem); hook_in(0,1,2); % opening hook +pos4(hair,-180); pos5(vair,-90); pos6(curve,0); pos7(vair,90); +x4=x2; rt x6r=hround(w-1.5u+.5curve); x5=x7=.5[x4,x6]; +bot y5r=-oo; top y7r=h+oo; y4=y6=.5[y5,y7]; +filldraw stroke super_arc.e(4,5) & pulled_arc.e(5,6) + & pulled_arc.e(6,7) & super_arc.e(7,4); % bowl +pickup tiny.nib; pos2'(stem,0); pos3(stem,0); +z2=z2'; x3=x2; bot y3=-d; filldraw stroke z2'e--z3e; % stem +%%% +if is_ogonek: + dish_serif(3,2',a,1/3,.75jut,b,1/3,jut); % serif +fi +%%% +% r_descender/ogonek +if is_ogonek: + d:=d+desc_depth; + def the_pen= + if known ogonek_pen: ogonek_pen else: fine fi + enddef; + ogonek_breadth:=xvair; + ogonek_pos=(x3,y3+.5the_pen) if not is_egyptian: +(.5xvair,0) fi; + ogonek_move=bot y3; + easy_ogonek(the_pen,8,9,10); % ogonek + chardp:=d/hppp; +else: + d:=full_d; + numeric right_jut; right_jut=1.414jut; + r_serif(3,2',o,1/3,.75jut,p,1/3,beak_darkness,right_jut,.35beak_jut); % lower left serif +fi +penlabels(0,1,2,3,4,5,6,7, 8,9,10); endchar; + +lhchar "Italic Cyrillic letter lat_q"; +cyrchar(lat_q,8u#,x_height#,desc_depth#); +italcorr x_height#*slant+.5stem#-u#; +adjust_fit(0,0); pickup fine.nib; +pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); +x0=x4; x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); +x4+.5stem=hround(w-1.5u+.5stem)+eps; +top y1r=h+oo; bot y3r=-oo; y0=y2=.5[y1,y3]; +filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) + & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl +pickup tiny.nib; pos4(stem,0); pos5(stem,0); +x4=x5; x6=x5r; top y6=h+oo; bot y4=-d; +y5=ypart(((x4l,0)--(x4l,y6))intersectionpoint super_arc.r(0,1)); +filldraw z6{2(x5l-x6),y5-y6}...z5l---z4l--z4r--cycle; % stem +dish_serif(4,5,a,1/3,jut,b,1/3,jut); % serif +penlabels(0,1,2,3,4,5,6,7,8); endchar; + +lhchar "Italic Cyrillic letter t_dsc - te descender"; +cyrchar(t_dsc,15u#,x_height#,desc_depth#); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(if monospace:-1.5u# else: 0 fi,.1u#); %lstem_adj&iserif_adj +% ital_t; +begingroup +pickup fine.nib; numeric shaved_stem; shaved_stem=mfudged.stem; +save stem; stem=shaved_stem; pos2(stem,0); x1=x2; +% left stem_hook; +if monospace: + pos1(stem,0); lft x1l=hround(2.5u-.5stem); top y1=h; +else: + x0=0; lft x2l=hround(2.5u-.5stem); + hook_in(0,a,1); fi % opening hook +y2-.5stem=-oo; filldraw circ_stroke z2e--z1e; % left stem +x4+.5stem=hround(.5w+.5stem); ital_arch(2,3,4); % left arch +pos5(stem,0); y5=y2; x5=x4; +filldraw circ_stroke z5e--z4e; % middle stem +x7+.5stem=hround(w-2.5u+.5stem); ital_arch(5,6,7); % right arch +x8=x7-.25u; x9=w; y8=1/4x_height; y9=.4bar_height; +x8'=.5[x8,x9]-.25u; bot y8'l=-oo; +pos8(stem,0); pos8'(vair,90); pos9(vair,180); +filldraw stroke z7e{down}..{-u,-x_height}z8e...z8'e{right}...{up}z9e; % hook (7,8,9)(skewed) +endgroup; +% italic descender/ogonek +if is_ogonek: + def the_pen= + if known ogonek_pen: ogonek_pen else: fine fi + enddef; + path p.l; + p.l=z8l{-u,-x_height}...z8'l{right}...{up}z9l; + ogonek_breadth:=xvair; + ogonek_pos=point .9 of p.l; + easy_ogonek(the_pen,10,11,12); % ogonek +else: + z10=z9; pos10(hair,180); + i_serif(10,x); +fi +penlabels(0,a,1,2,3,4,5,6,7,8,9, 10,11,12); endchar; + +lhchar "Italic Cyrillic letter tetse - ligature tetse"; +cyrchar(tetse,10.75u#,x_height#,desc_depth#); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(max(2u#,u#+stem#),.1u#); %iserif_adj +pickup fine.nib; interim superness:=more_super; +x0=0; x2=x3; top y2=h; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); +pos2'(stem,-180); z2'=z2; pos4(vair,-90); pos5(hair,0); x4=.5[x3,x5]; +pos6(stem,0); rt x6r=hround(w-2.5u+.5stem); +x5=x6=x7; y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; y6+.5stem=h; +filldraw stroke + z2'e--super_arc.e(3,4)...{up}z5e; % left stem and arc +x9=w; y9=y7=.4bar_height; x8=.5[x7,x9]; bot y8l=-oo; +pos8(vair,90); pos9(vair,180); pos7(stem,0); +filldraw circ_stroke z6e--z7e; % right stem +filldraw circ_stroke z7e{-.5u,-x_height}...z8e{right}...{up}z9e; % hook(7,8,9) +% italic descender +i_serif(9,x); +% italic beak +pickup fine.nib; +pos10(stem,180); pos11(stem,180); pos12(vair,90); pos13(vair,90); +lft x10r=l+letter_fit if monospace:-.5stem else:+.25u fi; +y10-.5stem=2/3x_height-.5fine; +x13=0.6[x3,x7]; top y13r=top y12r=x_height; x11=x10; y11=bot y12l-.25flare; +x12-.25flare=rt x10l; x12r:=lft x10r+(top y12r-y11); +filldraw circ_stroke z10e{up}--z11e{up}...z12e{right}--z13e; % ital_beak; +penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13); endchar; + +lhchar "Italic Cyrillic letter ch_vcrs - che vcrossed"; +cyrchar(ch_vcrs,9.5u#,x_height#,0); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(0,0); +% ital_ch; +pickup fine.nib; interim superness:=more_super; +x2=x3; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); +% left shstem; +if monospace: + pos0(vair,90); x0=good.x .5[0,x2]; top y0l=h; y2=2/3h; pos2(stem,0); + filldraw stroke z2e{u,x_height}...{left}z0e; % terminal +else: + x0=0; hook_in(0,1,2)(skewed); fi % opening hook +pos2'(stem,-180); z2'=z2; +pos4(vair,-90); pos5(hair,0); x4=.5[x3,x5]; +pos6(stem,0); rt x6r=hround(w-2.5u+.5stem); +x5=x6=x7; x9=w; hook_out(7,8,9); % closing hook +bot y4r=.75bar_height; y5=.75h; y3=min(y2-eps,.7[y4,y5]); y6+.5stem=h; +filldraw stroke z2'e...super_arc.e(3,4)...{up}z5e; % left stem and arc +filldraw circ_stroke z6e--z7e; % right stem +%%% +% vcross +pickup fine.nib; numeric middle_weight; +middle_weight=max(fine.breadth,.6[thin_join,vair]); +pos10(middle_weight,0); pos11(middle_weight,0); +lft x10l=lft x11l=hround (x4-.5middle_weight); +top y11-bot y10=.5x_height; .5[y10,y11]=y4; +filldraw stroke z10e--z11e; +penlabels(0,1,2,3,4,5,6,7,8,9, 10,11); endchar; + +lhchar "Italic Cyrillic letter lat_w"; +cyrchar(lat_w,12u#,x_height#,0); +italcorr x_height#*slant; +adjust_fit(if monospace:-1.5u#,-u# else: 0,0 fi); +pickup fine.nib; interim superness:=more_super; begingroup +forsuffixes $=hair,stem: shaved$:=mfudged$; save $; $=shaved$; endfor +x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); +if monospace: + pos1(vair,90); x1=good.x .5[x0,x2]; top y1r=h; y2=2/3h; pos2(stem,0); + filldraw stroke z1e{right}...{-u,-x_height}z2e; +else: + hook_in(0,1,2)(skewed); fi % opening hook +pos2'(stem,-180); z2'=z2; +pos4(vair,-90); pos5(hair,0); +x4=.6[x2,x5]; x5=x6=x7; pos6(stem,-180); pos7(stem,-180); +y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; +rt x6l=hround(rt x6l+.5w+.75u-x6); y6+.5stem=h; y7=y3; +pos8(vair,-90); pos9(hair,0); +x8=w-2.75u; rt x9r=hround(w-.5u); bot y8r=-oo; y9=y5; +filldraw stroke z2'e{-u,-x_height} + ...super_arc.e(3,4)...{up}z5e; % left stem and arc +filldraw circ_stroke z6e..super_arc.e(7,8)...{up}z9e; % middle stem and arc +v_bulb(9,10); % closing bulb +endgroup; +penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; + +lhchar "Italic Cyrillic letter n_ltl - en with left tail"; +cyrchar(n_ltl,10u#,x_height#,desc_depth#); +italcorr 1/3x_height#*slant+.5hair#+.5u#; %u +adjust_fit(0,0); +pickup fine.nib; x2=x3; pos3(stem,0); lft x3l=hround(2.5u-.5stem); +%ihalfstemx; +if monospace: + pos2(stem,0); top y2=h; +else: + x0=0; hook_in(0,1,2); fi % opening hook +y3-.5stem=-oo; +filldraw stroke z3e--z2e; % left stem +x10=x3l; y10=y11=bar_height; pos10(vair,90); pos11(vair,90); +pos6(stem,0); rt x6r=hround(w-2.5u+.5stem); y6+.5stem=h; +x7=x6; x9=w; hook_out(7,8,9); % closing hook +z7'=z7; pos7'(stem,0); x11=x6l; +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);%!!! +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 + if lft x12'l>rt x14l+max(1,hround(1/3vair+.5)): + filldraw stroke z3e--z5e{down}...{left}z12e; % right stem and hook + else: + x12'l:=min(rt x14l+max(1,1/3vair+.5),rt x12'r-vair)+.5fine-eps; + filldraw z3r--z5r{down}...{left}z12r--z12l{right} + ..z12'l{up}..{up}z3l--cycle; + fi +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"; +cyrchar(delta,8u#,asc_height#,0); +italcorr .9asc_height#*slant+.5hair#-1.5u#; +adjust_fit(0,0); pickup fine.nib; +x0=-u; y0=1.1h; +numeric light_flare; light_flare=2/3[vair,flare]; +x1=w-2u-.5light_flare; y1=h-.5light_flare; +numeric theta; theta=angle (z1-z0); +pos1(light_flare,theta-90); pos2(.2[vair,light_flare],-90); pos3(vair,theta); +x2=x3+u; y2=h; +x4=x6=.5w+.5u; top y8r=x_height+oo; z4=z8; +pos6(vair,-90); pos7(stem,-180); pos8(vair,-270); +pos4(stem,angle(z4-z0)+90); pos5(stem,30); +z3=.5[.5[z1,z4],z0]; +y5+.1x_height=y7=.5[y6,y8]; bot y6=-oo; +lft x7r=hround(1.4u-.5stem); rt x5r=hround(w-u); +filldraw stroke z1e{z0-z1e}....z2e....z3e{(z0-z1)rotated 90} + ...z4e{z4e-.8[z4,z0]} + ....z5e{down}...pulled_arc.e(6,7) & pulled_arc.e(7,8); % hook and bowl +filldraw z1r{z1r-z0}...z1l{z0-z1l}--cycle; % bulb +math_fit(-.3x_height#*slant+.5curve#-u#,.7x_height#*slant-.5u#); +penlabels(0,1,2,3,4,5,6,7,8); endchar; + +lhchar "Italic Cyrillic letter m_tl - m tail"; +cyrchar(m_tl,12u#,x_height#,desc_depth#); +italcorr 1/3x_height#*slant+.5hair#+.5u#; %u +adjust_fit(if monospace:-.5u#,-u# else:.5u#,0 fi); %wbulb_adj +%ital_m;tl +pickup fine.nib; +pos1(hair,0); pos2(hair,0); pos3(vair,-90); pos4(hair,-180); +pos5(flare,-180); pos6(stem,0); +x1=x2=3u; top y1=h; y2=.35h; bot y3r=-oo; lft x5r=-.25u; z4r=z5r; +x3=min(lft x5r+flare,lft x2l-eps); y5-.5flare=.1h; +bulb(3,4,5); % bulb +filldraw stroke pulled_arc.e(3,2) & z2e--z1e; % left stem +pos7(stem,0); lft x7l=hround(w-1.5u-.5stem); %!!! % x9=w; hook_out(7,8,9); %!!! % closing hook +x6=x7; top y6=h; +%filldraw stroke z6e--z7e; %!!! % right stem +% diagonals;m +numeric stem[]; % thicknesses of the strokes +stem1=hround(fudged.stem-stem_corr); +stem2=min(stem1,hround(fudged.hair-stem_corr)); +penpos10(stem1,0); penpos11(stem1,0); penpos12(stem2,0); penpos13(stem2,0); +x10l=lft x1l; x11l=x12l; x13l=lft x7l; x11-x10=x13-x12; +y10=y13=top y6; y11=y12; +if hefty: y11=if monospace: vround 1/3h-.5stem1 else: oo fi; + numeric upper_notch,lower_notch; + upper_notch=h-notch_cut; lower_notch=y11+notch_cut; + x1'=rt x1r; z1'=whatever[z10l,z11l]; + x6'=lft x6l; z6'=whatever[z12r,z13r]; + z0=whatever[z10r,z11r]=whatever[z12l,z13l]; + fill z10l.. + if y1'<upper_notch: {right}(x1'+1,upper_notch){down}... fi + {z11-z10}diag_in(10l,11l,1,11r)..diag_out(12l,1,12r,13r){z13-z12} + if y6'<upper_notch: ...{up}(x6'-1,upper_notch){right} fi + ..z13r--diag_out(13r,1,13l,12l){z12-z13} + if y0<=lower_notch: ..{z12-z13}z0{z10-z11}.. + else: ...{down}(x0+.5,lower_notch)--(x0-.5,lower_notch){up}... fi + {z10-z11}diag_in(11r,10r,1,10l)--cycle; % diagonals +else: y11=0; z0=whatever[z10r,z11r]=whatever[z12l,z13l]; + fill z10l..{z11-z10}diag_in(10l,11l,1,11r)..diag_out(12l,1,12r,13r){z13-z12} + ..z13r--diag_out(13r,1,13l,12l){z12-z13}..{z12-z13}z0{z10-z11} + ..{z10-z11}diag_in(11r,10r,1,10l)--cycle; fi % diagonals +% hook; +pos8(vair,-90); pos9(hair,-180); pos9'(flare,-180); +bot y7=-1/3d; bot y8r=-d-oo; y9'-.5flare=-vround.9d; +x8=w-11/3u; lft x9r=min(x7-4u,lft x9r+x8-x9l+5u-eps); +filldraw stroke z6e--z7e{down}...{left}z8e; +bulb(8,9,9'); % bulb +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar; + +lhchar "Italic Cyrillic letter r_gcrs - r grave crossed"; +cyrchar(r_gcrs,if monospace:9u#else:9.25u#fi,x_height#,desc_depth#); % the Russian width +italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi; %p +adjust_fit(0,if monospace:0 else:-.35u#fi); +% ital_r; +pickup fine.nib; +x0=0; x2-.5stem=hround(2.5u-.5stem); hook_in(0,1,2); % opening hook +pos4(hair,-180); pos5(vair,-90); pos6(curve,0); pos7(vair,90); +x4=x2; rt x6r=hround(w-1.5u+.5curve); x5=x7=.5[x4,x6]; +bot y5r=-oo; top y7r=h+oo; y4=y6=.5[y5,y7]; +filldraw stroke super_arc.e(4,5) & pulled_arc.e(5,6) + & pulled_arc.e(6,7) & super_arc.e(7,4); % bowl +pickup tiny.nib; pos2'(stem,0); pos3(stem,0); +z2=z2'; x3=x2; bot y3=-d; filldraw stroke z2'e--z3e; % stem +dish_serif(3,2',a,1/3,.75jut,b,1/3,jut); % serif +%%%%% +path p; numeric unbalance,outer_jut; +p=z5{(x6,y5)-z5}...superness[(x5,y6),(x6,y5)]{z6-z5}...{z6-(x6,y5)}z6; +z8=point1.25 of p; +numeric unbalance,outer_jut; +unbalance=if monospace: 1 else: 1.1 fi; +% some funny fonts have an extremally small |jut|: +outer_jut=.5stem+if serifs: max(limit_dist,if hefty: .8 fi\\ jut) else: 1.7u fi; +put_cyrcross(x8,(y8-bar_height),-outer_jut,-unbalance*outer_jut); +%%% +penlabels(0,1,2,3,4,5,6,7, 8); endchar; + +lhchar "Italic Cyrillic letter s_acrs - s acute crossed"; +cyrchar(s_acrs,8u#,x_height#,0); +italcorr if math_fitting:1/3x_height#*slant else:x_height#*slant-u# fi; %c +adjust_fit(if monospace:0 else:-.35u#fi,0); +% ital_s; +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-u))+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 +%%%%% +pair outer_point; path p; numeric unbalance,outer_jut; +outer_point=superness[(x4r,y3r),(x3r,y4r)]; +p=z3{(x3,y4)-z3} + ...superpull[superness[(x4,y3),(x3,y4)],outer_point]{z4-z3}...{z4-(x3,y4)}z4; +z7=point.75 of p; +unbalance=.95; %if monospace: 1 else: 1.1 fi; +% some funny fonts have an extremally small |jut|: +outer_jut=.5stem+if serifs: max(limit_dist,if hefty: .8 fi\\ jut) else: 1.7u fi; +put_cyrcross(x7,(y7-bar_height),unbalance*outer_jut,outer_jut); +%%% +penlabels(0,1,2,3,4,5,6, 7); endchar; + +lhchar "Italic Cyrillic letter g_crsdsc - ghe hcrossed descender"; +cyrchar(g_crsdsc,6.25u#,x_height#,desc_depth#); +italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#); %e +adjust_fit(if monospace:u#,u# else: 0.5u#,0.5u# fi); +% ital_g; +pickup fine.nib; x0l=hround eps; x0'=x0; x5r=good.x(w-eps); x6=x5; +x2=.5w+2u; x3=.5w-2u; x1=x4=x7=.5[x3l,x2r]; y7=.5[y2,y3]; +h-y0=y5; top y5l=vround .5bar_height; y6=bar_height; y0'=h-bar_height; +h-y2=y3=1/4x_height; h-y1=y4; bot y4r=-oo; +pos0(hair,320); pos1(vair,270); pos2(stem,180); +pos3(stem,180); pos4(vair,270); pos5(hair,320); pos7(stem,135); +path p,p_; p=z0'..z0..z1{right}; p_=z4{right}..z5..z6; +filldraw stroke z0e{direction 1 of p} + ...z1e{right}...{down}z2e...z7e...z3e{down}...z4e{right} + ...{direction 1 of p_}z5e; % main stroke +%%% +% italic descender/ogonek +if is_ogonek: + def the_pen= + if known ogonek_pen: ogonek_pen else: fine fi + enddef; + p_.r=z3r{down}...z4r{right}...{direction 1 of p_}z5e; + ogonek_breadth:=xvair; + numeric tt; % the time... + tt=if hefty: 2.8 else: 2.6 fi; + 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); + easy_ogonek(the_pen,10,11,12); % ogonek +else: + z10=z5; pos10(hair,180); i_serif(10,x); +fi +% hstroke +bar_stroke(x0l+.05u,w-(x0l+.05u)); +penlabels(0,1,2,3,4,5,6,7,8,9, 10,11,12); endchar; + +lhchar "Italic Cyrillic letter h_hcrs - kha (looks like x)"; +cyrchar(h_hcrs,if monospace:6.5u# else:7.5u# fi+max(1.5u#,flare#), % !rusw + x_height#,0); +italcorr max(1/3x_height#*slant+.5hair#+.5u#,x_height#*slant+.25u#); %x +adjust_fit(if monospace: 0,0 else:0.25u#,0.25u#fi); +% ital_h; +pickup fine.nib; pos0(hair,180); pos1(vair,90); pos2(stem,0); +pos3(stem,-180); pos4(vair,-90); pos5(hair,0); +y0=y2=2/3h; y3=y5=1/3h; top y1r=h+oo; bot y4r=-oo; +rt x2r=hround(.5w+.5stem-eps); x2=x3; +x0-.5hair=hround-.5hair; x5+.5hair=hround(w+.5hair-eps); +x1=.5[x0,x2]; x4=.5[x3,x5]; +filldraw stroke z0e{up}...pulled_arc.e(1,2); % opening hook +filldraw z2l--z3r--z3l--z2r--cycle; % stem +filldraw stroke pulled_arc.e(3,4)...{up}z5e; % closing hook +pos3'(hair,180); pos6(hair,180); pos7(vair,90); pos8(hair,0); pos9(flare,0); +x3'l=x6l=x3l; y3'=y3; y6=3/4h; x7=.5[x8,x2]; top y7r=h+oo; +rt x8r=hround(w-.25u); y8+.5flare=vround(bot y7l-.03x_height); +filldraw stroke z3'e---z6e...{right}z7e; bulb(7,8,9); % upper link and bulb +pos2'(hair,0); pos16(hair,0); pos17(vair,-90); +pos18(hair,-180); pos19(flare,-180); +x2'l=x16l=x2l; y2'=y2; y16=1/4h; x17=.5[x18,x3]; bot y17r=-oo; +lft x18r=hround.25u; y18-.5flare=vround(top y17l+.03x_height); +filldraw stroke z2'e---z16e...{left}z17e; bulb(17,18,19); % lower link and bulb +%%% +% hstroke +bar_stroke(u,w-u); % bar +penlabels(0,1,2,3,4,5,6,7,8,9,16,17,18,19, 10,11); endchar; + +lhchar "Italic Cyrillic letter semisn - semi soft sign"; +cyrchar(semisn,if monospace: 9u# else: 9u# fi,x_height#+acc_height#,0); +italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi; +adjust_fit(if monospace:.5u#,.5u# else:0,0 fi); pickup tiny.nib; +pos1(stem,0); pos2(stem,0); x1=x2; +lft x1l=hround(2.5u-.5stem); top y1=h; y2=.6bar_height; +filldraw stroke z1e--z2e; % stem +sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif +pickup fine.nib; pos2'(stem,-180); pos3(vair,-90); +pos4(curve,0); pos5(vair,90); pos0(hair,180); +z0=z2=z2'; x3=x5=.5[x2,x4]; rt x4r=hround(w-u+.5curve); +bot y3r=-oo; top y5r=1.2bar_height+oo; y4=y2; +filldraw stroke pulled_arc.e(2',3) & pulled_arc.e(3,4) + & pulled_arc.e(4,5) & super_arc.e(5,0); % bowl +pos31(bar,90); pos32(bar,90); +lft x31=hround 1/3u if serifs:-serif_fit fi; x32=w-2.5u; +y31=y32=vround x_height+eps; +filldraw stroke z31e--z32e; +penlabels(0,1,2,3,4,5,31,32); endchar; + +lhchar "Italic Cyrillic letter i_shdsc - short i with descender"; +cyrchar(i_shdsc,10u#,x_height#+acc_height#,desc_depth#); +italcorr 1/3x_height#*slant+.5hair#+.5u#; %u +adjust_fit(0,.1u#); %iserif_adj +full_h:=h; h:=x_height; +% ital_c; +pickup fine.nib; interim superness:=more_super; +x2=x3+.25u; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); +% left shstem; +if monospace: + pos0(vair,90); x0=good.x .5[0,x2]; top y0l=h; y2=2/3h; + pos2(stem,0); filldraw stroke z2e{u,x_height}...{left}z0e; % terminal +else: + x0=0; hook_in(0,1,2)(skewed); fi % opening hook +pos2'(stem,-180); z2'=z2; +pos4(vair,-90); pos5(hair,0); x4=.5[x3,x5]; +pos6(stem,0); rt x6r=hround(w-2.5u+.5stem); +x5=x6=x7; y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; y6+.5stem=h; +filldraw stroke z2'e{-u,-x_height} + ...super_arc.e(3,4)...{up}z5e; % left stem and arc +x9=w; y9=y7=.4bar_height; x8=.5[x7,x9]; bot y8l=-oo; +pos8(vair,90); pos9(vair,180); pos7(stem,0); +filldraw circ_stroke z6e--z7e; % right stem +filldraw circ_stroke z7e{-.5u,-x_height}...z8e{right}...{up}z9e; % closing hook +% italic descender/ogonek +if is_ogonek: + def the_pen= + if known ogonek_pen: ogonek_pen else: fine fi + enddef; + path p.l; + p.l=z7l{-.5u,-x_height}...z8l{right}...{up}z9l; + ogonek_breadth:=xvair; + ogonek_pos=point .9 of p.l; + easy_ogonek(the_pen,17,18,19); % ogonek +else: + i_serif(9,x); +fi +% the accent +h:=full_h; cbreve(.5w,0, 10,11,12,13,14,15,16); +penlabels(0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15,16); endchar; + +lhchar "Italic Cyrillic letter r_tl (looks like p)"; +cyrchar(r_tl,if monospace: 9u# else: 9.25u# fi,x_height#, % rusw + max(1.6desc_depth#,paren_depth#));%r_ddepth +italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi; %p +adjust_fit(0,if monospace:0 else:-.35u# fi); +full_d:=d; d:=vround min(desc_depth,max(vair+slab+oo+1+eps,full_d-max(.4desc_depth,.55beak)-slab));%r_dscs +% ital_r; +pickup fine.nib; +x0=0; x2-.5stem=hround(2.5u-.5stem); hook_in(0,1,2); % opening hook +pos4(hair,-180); pos5(vair,-90); pos6(curve,0); pos7(vair,90); +x4=x2; rt x6r=hround(w-1.5u+.5curve); x5=x7=.5[x4,x6]; +bot y5r=-oo; top y7r=h+oo; y4=y6=.5[y5,y7]; +filldraw stroke super_arc.e(4,5) & pulled_arc.e(5,6) + & pulled_arc.e(6,7) & super_arc.e(7,4); % bowl +pickup tiny.nib; pos2'(stem,0); pos3(stem,0); +z2=z2'; x3=x2; bot y3=-d; filldraw stroke z2'e--z3e; % stem +%%% +dish_serif(3,2',a,1/3,.75jut,b,1/3,jut); % serif +%%% +% tail_part(2);%!!! +_zero:=2; +_one:=8; _two:=9; _three:=10; _four:=11; _five:=12; +_six:=13; _seven:=14; _eight:=15; _nine:=16; +% +pickup tiny.nib; +numeric bulb_diam; +bulb_diam=max(currentbreadth+eps, + min(full_d-d-.18desc_depth-1-eps,hround 7/8[hair,flare]));%!!! +y[_one]l=y[_two]l=vround min(if serifs:-.5d else: -d+vair fi,-oo-.6[thin_join,vair]-eps);%!!! +y[_one]r-y[_one]l=y[_two]r-y[_two]l=.6[thin_join,vair];%!!! +penpos[_three](max(currentbreadth+eps,curve if hefty:-3stem_corr fi),0); +y[_three]=.5[y[_one]r,-full_d];%!!! +x[_two]l=x[_two]r=w-4.75u; x[_one]l=x[_one]r=x[_zero]; +x[_three]r=hround(w-1.5u); x[_two]l:=x[_four]l:=x[_two]r-.25curve;%!!! +{{interim superness:=more_super; + fill stroke super_arc.e([_three],[_two])..z[_one]e}}; % lobe +if serifs: + z[_five]=z[_three]; pos[_five](curve if hefty:-3stem_corr fi,0); + pos[_six](vair,-90); bot y[_six]r=-full_d-oo; %!!! + y[_seven]-.5flare=-full_d+.15desc_depth;%!!! + pos[_seven](hair,-180); pos[_eight](bulb_diam,-180); + rt x[_eight]l=max(lft x[_zero]l-jut+bulb_diam, + floor x[_three]-2.5u if monospace: / expansion_factor fi);%!!! + z[_seven]r=z[_eight]r; + x[_six]=max(rt x[_eight]l,.6[x[_five],x[_seven]r]); + (x,y[_six]r)=whatever[z[_six]l,z[_five]l]; + x[_six]r:=max(x,.5[x[_seven]r,x[_six]]); + filldraw stroke super_arc.e([_five],[_six]); + bulb([_six],[_seven],[_eight]); % bulb +else: + pickup fine.nib; z[_five]=z[_three]; + pos[_five](max(fine.breadth,curve if hefty:-3stem_corr fi),0); + pos[_nine](vair',-90); pos[_six](.6[vair',flare],-105); + rt x[_six]r=x[_three]-3.5u; bot y[_six]r=-full_d;%!!! + bot y[_nine]r=-full_d-oo; x[_nine]=.35[x[_six]r,x[_three]r];%!!! + filldraw stroke super_arc.e([_five],[_nine]) + & term.e([_nine],[_six],left,.75,4); fi +%%% +penlabels(0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15,16); endchar; + +endinput; +%end of file |