diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/base/lgcyrsym.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/lh/base/lgcyrsym.mf | 459 |
1 files changed, 459 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgcyrsym.mf b/Master/texmf-dist/fonts/source/lh/base/lgcyrsym.mf new file mode 100644 index 00000000000..c832b975264 --- /dev/null +++ b/Master/texmf-dist/fonts/source/lh/base/lgcyrsym.mf @@ -0,0 +1,459 @@ +% +% lgcyrsym.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: +% +% Glyphs for ec and Cyrillic symbols used with floating codes +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% List of signs X2 T2* +% +% palochka "0d "0d symbol Palochka +% openq Single German opening quote (looks like ,) +% angle_left "0e "0e Single left angle bracket +% lguillemet Single left guillemet +% angle_right "0f "0f Single right angle bracket +% rguillemet Single right guillemet +% +% dash "16 "16 Em dash/if monospace Hyphen +% wordmark "17 Compound word mark +% pmzero "18 "18 Zero for p mille sign (ec: "17) +% +% dbl_quotes "22 "22 Straight double quotes +% +% No "9d "9d Cyrillic symbol `Number' +% currency "9e "9e Cyrillic Currency sign +% section "9f "9f Section sign +% +% 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) +% +% T1/T2-outsiders: +% +% pound ("bf) Sterling sign +% + +LHver_check(3,4); % like |version_check| in ec + +lhchar "Cyrillic sign palochka (as latin I)"; +cyrchar(palochka,max(6u#,4u#+cap_stem#),cap_height#,0); +italcorr cap_height#*slant-.25u#; +adjust_fit(cap_serif_fit#,cap_serif_fit#); +pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); +lft x1l=lft x2l=hround(.5w-.5cap_stem); top y1=h; bot y2=0; +filldraw stroke z1e--z2e; % stem +if serifs: dish_serif(1,2,a,1/3,1.05cap_jut,b,1/3,1.05cap_jut); % upper serif + dish_serif(2,1,c,1/3,1.05cap_jut,d,1/3,1.05cap_jut); fi % lower serif +penlabels(1,2); endchar; + +lhchar "Cyrillic `German opening comma'"; +cyrchar(openq,5u#,pdot_diam#,comma_depth#); +adjust_fit(0,0); +x1-.5pdot_diam=hround(.5w-.5pdot_diam); y1-.5pdot_diam=0; +comma(1,a,pdot_diam,.2u,comma_depth); % dot and tail +penlabels(1); endchar; + +if unknown math_anglebrackets: + boolean math_anglebrackets; math_anglebrackets:=false; +fi + +lhchar "Single left angle bracket"; +cyrchar(angle_left,7u# if monospace: -u# fi,body_height#,paren_depth#); +italcorr body_height#*slant-.5u#; +adjust_fit(0,0); pickup fine.nib; +if math_anglebrackets: + left_angle(rule_thickness); +else: + pickup fine.nib; + pos1(fudged.hair,0); pos2(fudged.stem,0); pos3(fudged.hair,0); + x1=x3=hround(w-u)+eps; lft x2=hround(u)-eps; + top y1=h+eps; .5[y1,y3]=y2=good.y .5[-d+eps,h]; + filldraw stroke z1e--z2e--z3e; +fi +endchar; + +lhchar "Single right angle bracket"; +cyrchar(angle_right,7u# if monospace: -u# fi,body_height#,paren_depth#); +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); pickup fine.nib; +if math_anglebrackets: + right_angle(rule_thickness); +else: + pickup fine.nib; + pos1(fudged.hair,0); pos2(fudged.stem,0); pos3(fudged.hair,0); + x1=x3=hround(u)-eps; x2=hround(w-u)+eps; + top y1=h+eps; 0.5[y1,y3]=y2=good.y 0.5[-d+eps,h]; + filldraw stroke z1e--z2e--z3e; % right > +fi +labels(1,2,3); endchar; + +lhchar "Single left guillemet"; % jk +cyrchar(lguillemet,8u#,2bar_height#,0); +italcorr h#*slant-u#; +adjust_fit(0,0); + pickup fine.nib; + pos1(qvair,0); pos2(if monospace: qvair else: stem fi,0); pos3(qvair,0); + rt x1r=rt x3r=w-2u-eps; + lft x2l=hround(if not monospace: 2 fi\\ u)-eps; + bot y3=0; y2=good.y(h/2); top y1=2y2; + if not serifs or monospace: + filldraw stroke z1e--z2e--z3e; + else: + filldraw stroke + z1e{(x2e-x1e),1.8(y2e-y1e)}..{curl1}z2e{curl1}.. + {(x3e-x2e),1.8(y3e-y2e)}z3e; + fi + penlabels(1,2,3); +endchar; + +lhchar "Single right guillemet"; % jk +cyrchar(rguillemet,8u#,2bar_height#,0); +italcorr h#*slant-u#; +adjust_fit(0,0); + pickup fine.nib; + pos1(qvair,0); pos2(if monospace: qvair else: stem fi,0); pos3(qvair,0); + lft x1l=lft x3l=2u+eps; + rt x2r=w-hround(if not monospace: 2 fi\\ u)+eps; + bot y3=0; y2=good.y(h/2); top y1=2y2; + if not serifs or monospace: + filldraw stroke z1e--z2e--z3e; + else: + filldraw stroke + z1e{(x2e-x1e),1.8(y2e-y1e)}..{curl1}z2e{curl1}.. + {(x3e-x2e),1.8(y3e-y2e)}z3e; + fi +penlabels(1,2,3); endchar; + + +if unknown cyrdash: boolean cyrdash; cyrdash:=true; fi + +iff not monospace: +lhchar "Cyrillic Em dash";%oct"026" +cyrchar(dash,if cyrdash: 14.5u#%.8*18u# + else: 18u# fi + ,x_height#,0); +italcorr .61803x_height#*slant+.5u#; +adjust_fit(letter_fit#,letter_fit#); +pickup crisp.nib; pos1(vair,90); pos2(vair,90); +top y1r=top y2r=vround(.61803h+.5vair); +if cyrdash: + lft x1=.25u-eps; rt x2=w-.25u+eps; +else: + lft x1=-eps; rt x2=w+eps; +fi +filldraw stroke z1e--z2e; % bar +penlabels(1,2); endchar; + +iff monospace: +lhchar "Hyphen (instead of Cyrillic Em dash)";%oct"026" +cyrchar(dash,6u#,x_height#,0); +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +numeric thickness; thickness=if hefty:bar else:.75[hair,stem] fi; +pickup crisp.nib; pos1(thickness,90); pos2(thickness,90); +top y1r=top y2r=vround(.5h+.5thickness); rt x2=hround(w-u)+eps; +if monospace: x2=w-x1 else: lft x1=hround .2u-eps fi; +filldraw stroke z1e--z2e; % bar +penlabels(1,2); endchar; + +lhchar "Zero for p mille sign"; +cyrchar(pmzero,if serifs: + if monospace: 9u#+max(6u#,2fudge*(hair#+stem#)) else: 7u# fi else: 8u# fi, + body_height#,body_height#-asc_height#); +italcorr if hefty: .4asc_height#*slant-.5u# else: h#*slant-u# fi; +adjust_fit(0,0); pickup fine.nib; +numeric left_curve,right_curve; +left_curve=hround 5/6[fudged.hair,fudged.stem]; +right_curve=max(fine.breadth,hround(fudged.hair if hefty:-2stem_corr fi)); +pos1(vair,90); +pos2(left_curve,180); +pos3(vair,270); +pos4(right_curve,360); +bot y3r=-d; +rt x4r=hround(.5w +2.5u ); +lft x2r=hround(.5w -2.5u ) ; +top y1r=vround(if monospace: .3 else: .5 fi\\ asc_height); +x1=x3=.5[x2,x4]; y2=y4=.5[y1,y3]; +filldraw stroke pulled_super_arc.e(1,2)(superpull) + & pulled_super_arc.e(2,3)(superpull); % left half of lower bowl +filldraw stroke super_arc.e(3,4) & super_arc.e(4,1); % right half of lower bowl +penlabels(1,2,3,4); endchar; + +lhchar "Compound word mark"; +cyrchar(wordmark,0,x_height#,0); +zero_width; +endchar; + +% + +lhchar "Straight double quotes"; +cyrchar(dbl_quotes,9u#,asc_height#,0); +numeric top_width#,spread#; +top_width#=if serifs: flare# else: stem# fi; +spread#=max(3u#,top_width#+.5u#); define_pixels(spread); +italcorr asc_height#*slant+.5top_width#+.5spread#-4u#; +adjust_fit(0,0); +x1=x2; x3=x4=w-x1; x3-x1=spread+2; y1=y3; +y2=y4=max(.5[bar_height,x_height]+.5vair,h-x_height); +if serifs: pickup crisp.nib; pos1(flare,0); pos2(vair,0); + pos3(flare,0); pos4(vair,0); + y1+.5stem=h; filldraw circ_stroke z1e--z2e; % left stem and bulb + filldraw circ_stroke z3e--z4e; % right stem and bulb +else: pickup fine.nib; pos1(stem,0); pos2(vair,0); + pos3(stem,0); pos4(vair,0); + top y1=h; filldraw stroke z1e--z2e; % left stem + filldraw stroke z3e--z4e; fi % right stem +penlabels(1,2,3,4); endchar; + +% + +lhchar "Cyrillic symbol No."; %common +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; +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); +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); + 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; + 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 +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; + upper_notch=h-cap_notch_cut; lower_notch=cap_notch_cut; + x1'=rt x1r; z1'=whatever[z5l,z6l]; x4'=lft x4l; z4'=whatever[z5r,z6r]; + fill z5l.. + if y1'<upper_notch: {right}(x1'+1,upper_notch){down}... fi + {z6-z5}diag_in(5l,6l,1,6r)--z6r.. + if y4'>lower_notch: {left}(x4'-1,lower_notch){up}... fi + {z5-z6}diag_in(6r,5r,1,5l)--cycle; % diagonal +else: penpos5(whatever,0); penpos6(whatever,90); + z5l=z1l; z6l=z4l; + z7=z6l+(max(eps,cap_stem-3stem_corr-tiny),0) rotated (angle(z5l-z6l)-90); + z5r=z7+whatever*(z5l-z6l); z6r=z7+whatever*(z5l-z6l); + filldraw stroke z5e..z6e; fi % diagonal +if serifs: if hefty: serif(1,2,a,1/3,-cap_jut); % upper left serif + else: serif(5,6,a,1/3,-cap_jut); fi % 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); +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; +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; + +lhchar "Cyrillic Currency sign"; % from ec ... from rsym (wasy) +cyrchar(currency,1.13 min(asc_height#,9/7x_height#)+2u#, + min(asc_height#,9/7x_height#),0); +italcorr x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +x4 = good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=-oo; +circle_points; +z9 = 1.30[z5,z1]; +z10 = 1.30[z7,z3]; +z11 = 1.30[z1,z5]; +z12 = 1.30[z3,z7]; +draw_circle; +draw z1--z9; +draw z3--z10; +draw z5--z11; +draw z7--z12; +labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar; + +lhchar "Section sign"; % taken from DC/EC +cyrchar(section,6.5u#+max(1.5u#,stem#),asc_height#,desc_depth#); +adjust_fit(0,0); pickup fine.nib; +numeric s_slab; s_slab=if serifs:slab else:vround .2[slab,cap_stem] fi; +numeric ess'; ess'=max(fine.breadth,cap_ess); +numeric sstem; sstem=hround .5[s_slab,ess']-fine; +if sstem < fine.breadth: sstem:=fine.breadth; fi +pos2(vair,90); pos3(sstem,180); +pos4(ess',270); pos4'(vair,270); +pos5'(sstem,0); pos5(sstem,180); +pos6(ess',90); pos6'(vair,90); pos7(sstem,0); +pos8(vair,-90); +top y2r=h+oo; bot y8r=-d-oo; +y3=.52[y4,y2]; y5=.52[y4,y6]; y7=.52[y6,y8]; y5'=.52[y6,y4]; +y2-y4=y4-y6=y6-y8; +bot z4'=bot z4; top z6'=top z6; +lft x3r=hround 1.25u; +x2=x4=x6=x8=.5w; x5=x7=w-x3; x5'=x3; +if serifs: + pos0(stem,0); pos1(hair,0); pos9(hair,-180); pos10(stem,-180); + rt x1r=hround(w-1.5u); x9=w-x1; y2-y1=y9-y8=(y2-y8)/8; + bulb(2,1,0); bulb(8,9,10); % bulbs +else: + pos1(.6[slab,flare],-100); pos9(flare,-100); pos2'(vair,-90); + rt x1l=hround(w-1.3u); lft x9r=hround .8u; z2'=z2; + top y1l=vround .92asc_height+oo; bot y9r=vround .1asc_height-d-oo; + filldraw stroke term.e(2',1,right,.9,4); % upper arc and terminal + filldraw stroke term.e(8,9,left,.9,4); % lower arc and terminal +fi +filldraw stroke z2e{left}...z3e{down}...z4e{3(x5-x3),y5-y3} + ...z5e{down}...{left}z6'e; % upper stroke +filldraw stroke z4'e{left}...z5'e{down}...z6e{3(x7-x5'),y7-y5'} + ...z7e{down}...{left}z8e; % upper stroke +penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; + +% + +lhchar "Cyrillic `German Opening quotes' (looks like ,,)"; +cyrchar(baseqq,3u#+max(2u#,pdot_diam#),pdot_diam#,comma_depth#); +italcorr asc_height#*slant+pdot_diam#-4.1u#; +adjust_fit(.5u#,.5u#); +x2+.5pdot_diam=hround(w-.6u+.5pdot_diam); y2-.5pdot_diam=0; +x1=w-x2; y2=y1; +comma(1,a,pdot_diam,.25u,comma_depth); % left dot and tail +comma(2,b,pdot_diam,.25u,comma_depth); % right dot and tail +penlabels(1,2); endchar; + +lhchar "Cyrillic `French Opening Quotes' (looks like <<)"; +cyrchar_twice( % compilation of A.Shen's and ec (polish: pl_cud) quotes + if not hefty: flqq,10u#,2bar_height#,0 % ec metrics + else: flqq,12u#,2bar_height#,0 + fi); +adjust_fit(0,0); +pickup fine.nib; +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); +pos3(max(fine.breadth, + if serifs: qvair else: 7/8[vair,fudged.hair]-3stem_corr fi),0); +rt x1r=rt x3r= + hround(if hefty: .6 else: 2/3 fi w-shift_corr)-eps; +lft x2l=hround(if not monospace: 2 fi\\ u-shift_corr)-eps; +y2=good.y min(bar_height,.5x_height); top y1=vround 2y2; +y1-y2=y2-y3; +if hefty: + for i:=1,2,3: + forsuffixes $:=r, ,l: z[i]'$=z[i]$ + the_shift*right; endfor + endfor + 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); + z2'=z2+the_shift*right; + y1'-y2'=y2'-y3'=.8(y1-y2); + z1'=z2'+whatever*(z1r-z2r); z3'=z2'+whatever*(z2r-z3r); + filldraw stroke + z1e{(x2e-x1e),1.2(y2e-y1e)}..{curl1}z2e{curl1}.. + {(x3e-x2e),1.2(y3e-y2e)}z3e; % outer < + filldraw stroke + z1'e{(x2'e-x1'e),1.2(y2'e-y1'e)}..{curl1}z2'e{curl1}.. + {(x3'e-x2'e),1.2(y3'e-y2'e)}z3'e; % inner < +fi +% italic correction is set to |0| in |beginchar|, so let's correct it +corrital z1'r; +repeat_once; +penlabels(1,2,3,1',2',3'); endchar; + +lhchar "Cyrillic `French closing quotes'"; +cyrchar_twice( % compilation of A.Shen's and ec (polish: pl_cud) quotes + if not hefty: frqq,10u#,2bar_height#,0 % ec metrics + else: frqq,12u#,2bar_height#,0 + fi); +adjust_fit(0,0); +pickup fine.nib; +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); +pos3(max(fine.breadth, + if serifs: qvair else: 7/8[vair,fudged.hair]-3stem_corr fi),0); +lft x1l=lft x3l=w- + hround(if hefty: .6 else: 2/3 fi w-shift_corr)+eps; +rt x2r=w-hround(if not monospace: 2 fi\\ u-shift_corr)+eps; +y2=good.y min(bar_height,.5x_height); top y1=vround 2y2; +y1-y2=y2-y3; +if hefty: + for i:=1,2,3: + forsuffixes $:=r, ,l: z[i]'$=z[i]$ + the_shift*left; endfor + endfor + 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); + z2'=z2+the_shift*left; + y1'-y2'=y2'-y3'=.8(y1-y2); + z1'=z2'+whatever*(z1l-z2l); z3'=z2'+whatever*(z2l-z3l); + filldraw stroke + z1e{(x2e-x1e),1.2(y2e-y1e)}..{curl1}z2e{curl1}.. + {(x3e-x2e),1.2(y3e-y2e)}z3e; % outer < + filldraw stroke + z1'e{(x2'e-x1'e),1.2(y2'e-y1'e)}..{curl1}z2'e{curl1}.. + {(x3'e-x2'e),1.2(y3'e-y2'e)}z3'e; % inner < +fi +% italic correction is set to |0| in |beginchar|, so let's correct it +corrital z2r; +repeat_once; +penlabels(1,2,3,1',2',3'); endchar; + +lhchar "Sterling sign"; % from ec +cyrchar(pound,12u#,asc_height#,0); +adjust_fit(0,.75asc_height#*slant-.5u#); pickup fine.nib; +pos0(flare,0); pos1(hair,0); pos2(vair,90); pos3(stem,180); +pos4(stem,180); pos4'(stem,0); pos5(vair,-90); z4'=z4; +x2=2/3w-.5u; rt x3l=rt x4l=hround(.5w-u+.5stem); x5=2.5u; +y1=y3=.75h; top y2=h+oo; y4=.25h; bot y5r=-oo; +rt x1r=hround(w-1.5u); bulb(2,1,0); % bulb +filldraw stroke pulled_arc.e(2,3)..z4e; % stem +numeric light_stem; light_stem=2/3[vair,vstem]; +pos6(.5[hair,light_stem],-180); pos7(light_stem,-300); +pos8(light_stem,-300); pos9(hair,-180); +lft x6r=hround u; x7=3u; x8=w-3.5u; rt x9l=hround(w-u); +y6=.4[y5,y7]; top y7r=vround .2h; bot y8l=-oo; y9=good.y .2h; +filldraw stroke pulled_arc.e(4',5)...z6e{up}...z7e{right} + ..{right}z8e...{up}z9e; % loop and arm +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; + +endinput; +%end of file |