diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf | 480 |
1 files changed, 480 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf b/Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf new file mode 100644 index 00000000000..637f7883d79 --- /dev/null +++ b/Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf @@ -0,0 +1,480 @@ +% +% lgcyracc.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: +% +% Accents +% - borrowed from ec fonts: "00--"0c +% + additional Cyrilic accents +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% List of accents +% +% Agrave "00 ` accent grave +% Aacute "01 ' accent acute +% Ahat "02 ^ accent circumflex +% Atilde "03 ~ accent tilde +% Aumlaut "04 accent umlaut +% Aacute_dbl "05 '' accent hungarian umlaut +% Aring "06 Scandinavian circle +% Ahachek "07 accent hacheck +% Abreve "08 accent breve +% Abar "09 accent macron (bar) +% Adot "0a accent dot +% Acedilla "0b cedilla +% Aogonek "0c ogonek +% +% Afrown "12 accent reversed breve +% Agrave_dbl "13 `` accent reversed hungaran umlaut +% Acyrbreve "14 Cyrilllic breve +% Ahcross "17 accent hor cross +% Agrave_cross "19 accent grave_cross +% Aacute_cross "1a accent acute_cross +% +% T2-outsiders +% +% Avcross - accent vert cross +% Abar_long - accent macron (bar) long +% Abreve_long - accent breve long +% Atilde_long - accent tilde long +% Adesc_lo - lowercase descender ? italic +% Adesc_up - uppercase descender +% Alcomma - comma below letter +% Atie - tie accent (like Afrown) +% Acomma - comma above letter +% + +LHver_check(3,4); % like |version_check| in ec + +%accents +% +lhchar "Grave accent"; +cyrchar_twice(Agrave,9u#,x_height#,0); % |put_gravis| changes the height +adjust_fit(0,0); +put_gravis; +repeat_once; +endchar; + +lhchar "Acute accent"; % using acute from plfonts +cyrchar_twice(Aacute,9u#,x_height#,0); % |put_accent| changes the height +italcorr h#*slant-if serifs: 1.5 fi u#; +adjust_fit(0,0); +put_accent; +repeat_once; +endchar; + +lhchar "Circumflex (hat) accent"; +cyrchar(Ahat,9u#,x_height#+acc_height#,0); +lowercase_hat(.5w,oo,0,1,2,3,4); +penlabels(0,1,2,3,4); endchar; + +lhchar "Tilde (squiggle) accent"; +cyrchar(Atilde,9u#,x_height#+acc_height#,0); +italcorr h#*slant-u#; +adjust_fit(0,0); +lowercase_tilde(0,0 if variant_g: -1/6acc_height fi,1,2,3,4,5); +penlabels(1,2,3,4,5); endchar; + +lhchar "Umlaut (double dot) accent"; +cyrchar(Aumlaut,9u#,lc_trema_height#,0); +italcorr h#*slant+.5udot_diam#-2.25u#; +adjust_fit(0,0); +lowercase_umlaut(0,0,1,2,3,4); penlabels(1,2,3,4); endchar; + +lhchar "Double acute accent (Long Hungarian umlaut accent)"; +cyrchar_twice(Aacute_dbl,9u#,x_height#+acc_height#,0); +italcorr h#*slant-u#; +adjust_fit(0,0); +if monospace: hpos_corr=-2u; put_accent; hpos_corr=2u; put_accent; +else: hpos_corr=-1.5u; put_accent; hpos_corr=1.5u; put_accent; fi +repeat_once; +endchar; + +lhchar "Scandinavian circle accent"; +cyrchar(Aring,13u#+4/3acc_height#*slant,x_height#+acc_height#,0); +adjust_fit(cap_serif_fit#,cap_serif_fit#); +lowercase_circle(.5w,vround(1/3[x_height,h]+apex_o),1,2,3,4); +penlabels(1,2,3,4); endchar; + +lhchar "Hachek (check) accent"; +cyrchar(Ahachek,9u#,x_height#+acc_height#,0); +adjust_fit(0,0); +lc_hachek_accent(.5w); +endchar; + +lhchar "Breve accent"; +cyrchar(Abreve,9u#,x_height#+acc_height#,0); +italcorr h#*slant+.5vair#-1.5u#; +adjust_fit(0,0); +lowercase_breve(.5w,0,1,2,3); +penlabels(1,2,3); endchar; + +lhchar "Macron (bar) accent"; +cyrchar(Abar,9u#,lc_trema_height#,0); +italcorr h#*slant-.75u#; +adjust_fit(0,0); +numeric macron_breadth; macron_breadth:=Vround .2[vair,stem]; +pickup if serifs: crisp.nib else: fine.nib fi; +pos1(macron_breadth,90); pos2(macron_breadth,90); +top y1r=top y2r=h+o; lft x1=w-rt x2=hround 1.25u; +filldraw stroke z1e--z2e; % bar +penlabels(1,2); endchar; + +lhchar "Dot accent"; +cyrchar_twice(Adot,5u#,x_height#+acc_height#,0); +italcorr h#*slant+.5idot_diam#-2u#; +adjust_fit(0,0); +put_dot(tiny,max(dot_size#,cap_curve#)); +repeat_once; +penlabels(1,2); endchar; + +lhchar "Cedilla accent"; +cyrchar(Acedilla,8u#,0,.875desc_depth#); +adjust_fit(0,0); +lowercase_cedilla(.5w,0,1,2,3,4,5); +penlabels(1,2,3,4,5); endchar; + +lhchar "Ogonek accent"; +cyrchar(Aogonek,5u#,0,desc_depth#); +italcorr 0; +adjust_fit(0,0); +%the_ogonek(.5w,0, 1,2,3); +% polish-like "easy_ogonek" instead of Computer Modern "the_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=(.5w if not serifs: +.5stem if is_bold: +.75tiny fi\\ fi,.5the_pen) + if serifs and not is_egyptian: +(.5xvair,0) fi; +easy_ogonek(the_pen, 1,2,3); % ogonek +penlabels(1,2,3); endchar; + +lhchar "Cyrillic accent hcross - horisontal cross"; +cyrchar(Ahcross,5u#,x_height#,0); +italcorr asc_height#*slant+.5dot_size#-2u#; +adjust_fit(0,0); +% hstroke +numeric outer_jut; +% 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; +bar_stroke(.5w-outer_jut,.5w+outer_jut); % bar +endchar; + +lhchar "Cyrillic accent vcross - vertical cross"; +cyrchar(Avcross,5u#,x_height#,0); +italcorr asc_height#*slant+.5dot_size#-2u#; +adjust_fit(0,0); +% vcross +if serifs: pickup crisp.nib; else: pickup fine.nib; fi +numeric middle_weight; +middle_weight=max(currentbreadth+eps,.6[thin_join,vair]); +pos1(middle_weight,0); pos2(middle_weight,0); +lft x1l=lft x2l=hround(.5w-.5middle_weight); +top y2-bot y1=.55x_height; .5[y1,y2]=bar_height; +filldraw stroke z1e--z2e; +endchar; + +lhchar "Cyrillic accent acute_cross - diagonal cross"; % cross from pl_ml (plfonts) +cyrchar_twice(Aacute_cross,5u#,x_height#,0); +italcorr asc_height#*slant-serif_fit#+.5stem#-2u#; +adjust_fit(serif_fit#,serif_fit#); +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(.5w,0,outer_jut,unbalance*outer_jut); +repeat_once; +endchar; + +lhchar "Cyrillic accent grave_cross - diagonal cross"; % cross from pl_ml (plfonts) +cyrchar_twice(Agrave_cross,5u#,x_height#,0); +italcorr asc_height#*slant-serif_fit#+.5stem#-2u#; +adjust_fit(serif_fit#,serif_fit#); +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(.5w,0,-outer_jut,-unbalance*outer_jut); +repeat_once; +endchar; + +lhchar "Cyrillic accent Agrave_dbl - double grave"; +cyrchar_twice(Agrave_dbl,9u#,x_height#+acc_height#,0); +italcorr h#*slant+.5vair#-1.5u#; +adjust_fit(0,0); +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; +endchar; + +lhchar "Cyrillic accent cyrillic breve"; +cyrchar(Acyrbreve,9u#,x_height#+acc_height#,0); +italcorr h#*slant+.5vair#-1.5u#; +adjust_fit(0,0); +cbreve(.5w,0, 1,2,3,4,5,6,7); +endchar; + +lhchar "Cyrillic frown accent"; +cyrchar(Afrown,9u#,x_height#+acc_height#,0); +italcorr h#*slant+.5vair#-1.5u#; +adjust_fit(0,0); +%!!! lowercase_breve flipped +x_center:=.5w; y_move:=0; _one:=1; _two:=2; _three:=3; +% +pickup crisp.nib; pos[_one](vair,180); +pos[_three](vair,0); +top y[_two]r=h+oo+eps; %!!!v +x[_two]=x_center; +lft x[_one]r=hround(x[_two]-2.5u + if monospace: /expansion_factor fi -0.5vair); +rt x[_three]r=hround(x[_two]+2.5u + if monospace: /expansion_factor fi +0.5vair); +numeric mid_thickness; mid_thickness=max(crisp.breadth,vround 1/3[vair,stem]);%!!! +bot y[_one]=bot y[_three]= %!!! + if serifs: max(2/3[x_height+acc_height,x_height],x_height+o+hair)-.5crisp + else: vround 2/3[x_height+acc_height,x_height] fi; +if y[_two]r<(y[_one]+.5crisp+eps): %!!! + y[_two]r:=y[_one]+.5crisp+eps; fi %!!! +pos[_two](mid_thickness,90); %!!! moved here after if +filldraw stroke z[_one]e{up}... + z[_two]e{right}...{down}z[_three]e; % stroke +% +penlabels(1,2,3); endchar; + +% +% T2-outsiders +% +lhchar"Cyrillic tie accent"; % centered +cyrchar(Atie,9u#,asc_height#,0); +italcorr 4/9[x_height#,asc_height#]*slant+4.5u#+2letter_fit#+.5hair#; +adjust_fit(if monospace:2u#,2u# else:serif_fit#,serif_fit# fi); +pickup fine.nib; pos1(hair,180); pos2(vround 1/5[vair,stem],90); +pos3(hair,0); +lft x1r=w-rt x3r=hround(2u-.5vair); x2=.5w; +y1=y3=4/9[x_height,asc_height]; top y2r=vround 8/9[x_height,asc_height]; +filldraw stroke super_arc.e(1,2) & super_arc.e(2,3); % arc +penlabels(1,2,3); endchar; + +lhchar "Cyrillic accent Abreve_long - long breve"; %accent width enlarged by 3u +cyrchar(Abreve_long,12u#,x_height#+acc_height#,0); +italcorr h#*slant+.5vair#-1.5u#; +adjust_fit(0,0); +x_center:=.5w; y_move:=0; +_one:=1; _two:=2; _three:=3; +pickup crisp.nib; pos[_one](vair,-180); +pos[_three](vair,0); +top y[_one]=top y[_three]=h; +x[_two]=x_center; +lft x[_one]r=hround(x[_two]-4.75u%!2.5u + if monospace: /expansion_factor fi -0.5vair); +rt x[_three]r=hround(x[_two]+4.75u%!2.5u + if monospace: /expansion_factor fi +0.5vair); +numeric mid_thickness; mid_thickness=vround 1/3[vair,stem]; +pos[_two](mid_thickness,-90); +bot y[_two]r= + vround max(x_height+o+tiny,1/3[x_height,h]+o-.5mid_thickness); +filldraw stroke z[_one]e{down}... + z[_two]e{right}...{up}z[_three]e; % stroke +endchar; + +lhchar "Cyrillic accent Abar_long - long bar"; %accent width enlarged by 3u +cyrchar(Abar_long,12u#,lc_trema_height#,0); +italcorr h#*slant-.75u#; +adjust_fit(0,0); +numeric macron_breadth; macron_breadth:=Vround .2[vair,stem]; +pickup if serifs: crisp.nib else: fine.nib fi; +pos1(macron_breadth,90); pos2(macron_breadth,90); +top y1r=top y2r=h+o; lft x1=w-rt x2=hround .5u;%!1.25u +filldraw stroke z1e--z2e; % bar +penlabels(1,2); endchar; + +lhchar "Cyrillic accent Adesc_up - uppercase descender"; +cyrchar(Adesc_up,5u#,pdot_diam#,cap_sbeak#); +adjust_fit(0,cap_serif_fit#); +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; +inner_jut:=.5cap_stem+eps; +numeric arm_thickness; arm_thickness=slab+vair_corr; +save slab,bracket; +bracket:=0; slab:=arm_thickness; % bottom.slab +numeric left_jut; +left_jut= + if serifs: max(limit_dist,if monospace: 1.414cap_jut else: 1.1cap_jut fi) + else: hround (r-rt x2r-.65u) fi; +cyr_serif(2,1,a,1/3,beak_darkness,left_jut,beak_jut); % right descender +endchar; + +lhchar "Cyrillic accent Adesc_lo - lowercase descender"; +cyrchar(Adesc_lo,5u#,pdot_diam#,sbeak#); +adjust_fit(0,serif_fit#); +pickup tiny.nib; +pos1(fudged.stem,0); pos2(fudged.stem,0); +lft x1l=lft x2l=hround (2.5u-.5fudged.stem-eps); +top y1=h; bot y2=0; +save slab,bracket; +bracket:=0; slab:=vair; % lower.slab +numeric left_jut; +left_jut=if serifs: + max(limit_dist,if monospace: 1.414jut else: 1.1jut fi) + else: hround (r-rt x2r-.5u) fi; +cyr_serif(2,1,a,1/3,beak_darkness,left_jut,.6beak_jut); % right descender +endchar; + +lhchar "Cyrillic accent Adesc_it - italic descender"; +cyrchar(Adesc_it,5u#,pdot_diam#,desc_depth#); +adjust_fit(0,.1u#); +pickup fine.nib; +pos1(vair,180); x1=.5w; y1=.4bar_height; +i_serif(1,x); +endchar; + +lhchar "Cyrillic accent Atilde_long - long tilde"; %accent width enlarged by 3u +cyrchar(Atilde_long,12u#,x_height#+acc_height#,0); +italcorr h#*slant+.5vair#-1.5u#; +adjust_fit(0,0); +x_move:=0; y_move:=0; +_one:=1; _two:=2; _three:=3; _four:=4; _five:=5; +h':=min(asc_height,10/7x_height+.5dot_size); +if serifs: numeric theta; + theta=angle(1/6( + 8.5u if monospace: /expansion_factor fi-vair),%!6u + 1/4(h'-x_height)); + pickup crisp.nib; + numeric mid_width; mid_width=.4[vair,stem]; + pos[_one](vair,theta+90); + pos[_two](vair,theta+90); + pos[_three](vair,theta+90); + pos[_four](vair,theta+90); + z[_two]-z[_one]= + z[_four]-z[_three]=(mid_width-crisp)*dir theta; + lft x[_one]r=hround(x_move+0.5w-5.25u if monospace: /expansion_factor fi);%!3u + rt x[_four]l=hround(x_move+0.5w+5.25u if monospace: /expansion_factor fi);%!3u + top y[_four]r=h'; + bot y[_one]l=vround(bot y[_one]l+ + min(2/3[x_height,h'],y[_three]l-.25vair)-top y[_one]r); + pair delta; + ypart delta=3(y[_three]l-y[_one]l); + delta=whatever*dir theta; + filldraw z[_one]l.. + controls(z[_one]l+ + delta)and(z[_three]l-delta)..z[_three]l..z[_four]l + --z[_four]r.. + controls(z[_four]r-delta)and(z[_two]r+delta).. + z[_two]r..z[_one]r--cycle; % stroke +else: + pickup fine.nib; + pos[_one](vair,180); + pos[_two](vair,90); + pos[_three](.5[vair,slab],90); + pos[_four](vair,90); + pos[_five](vair,180); + lft x[_one]r=hround (x_move + 0.5w-5.25u);%!3u + rt x[_five]l=hround (x_move + 0.5w+5.25u);%!3u + x[_two]-x[_one]= + x[_three]-x[_two]= + x[_four]-x[_three]=x[_five]-x[_four]; + bot y[_one]=bot y[_four]l=y_move+vround(.75[x_height,h]-vair); + top y[_two]r=top y[_five]=h+y_move; + y[_three]=.5[y[_two],y[_four]]; + filldraw stroke + z[_one]e{up}... + z[_two]e{right}.. + z[_three]e.. + {right}z[_four]e...{up}z[_five]e; fi % stroke +endchar; + +lhchar "Cyrillic accent Acomma - comma above letter"; +cyrchar(Acomma,5u#,x_height#+1.25acc_height#,0); +italcorr asc_height#*slant+.5dot_size#-2u#; +adjust_fit(0,0); +%ac_comma(0,0,1.25acc_height, 1,2,3,4,5)(above); +x_move:=0; y_move:=0; +depth:=1.25acc_height; +_zero:=1; _one:=2; _two:=3; _three:=4; _four:=5; +numeric height,bulb_diam; +height=if serifs: depth+.5fine-max(.27depth,o+hair) + else: vround(2/3depth) + fi; +bulb_diam=hround max(fine.breadth,min(dot_size,.55height)); +if square_dots: + % vertical above letter + pickup fine.nib; + pos[_one](vair,0); + pos[_two](.5[vair,stem],0); + top y[_two]=h+y_move; + bot y[_one]=vround(y[_two]-height); + x[_two]=x[_one]=.5w+x_move; + filldraw stroke z[_one]e--z[_two]e; % diagonal +else: + % comma above letter + pickup fine.nib; + x[_four]-.5bulb_diam=hround(.5w+x_move-.5bulb_diam); + y[_four]+.5bulb_diam=h+y_move; + 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 + +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_:=ypart((z[_one]{right}...z[_two]{down}...z[_three]) + intersectiontimes (z[_four]l{right}..{left}z[_four]r)); + if y_<0: y_:=1; fi + filldraw z[_four]r{left}..subpath (0,y_) + of (z[_four]l{right}..{left}z[_four]r)--cycle; % dot + filldraw stroke z[_one]e{right}...z[_two]e{down}...z[_three]e; % tail +fi +penlabels([_zero],[_one],[_two],[_three],[_four]); +endchar; + +lhchar "Cyrillic accent Alcomma - comma below letter"; +cyrchar(Alcomma,9u#,x_height#+1.25acc_height#,desc_depth#); +italcorr asc_height#*slant+.5dot_size#-2u#; +adjust_fit(0,0); +%ac_comma(0,0,1.25desc_depth,1,2,3,4,5); + x_move:=0; y_move:=0; depth:=1.25desc_depth; + _zero:=1; _one:=2; _two:=3; _three:=4; _four:=5; + numeric height,bulb_diam; + height=if serifs: depth+.5fine-max(.27depth,o+hair) else:.68depth fi; + bulb_diam=max(fine.breadth,min(dot_size,floor(.56height))); + if square_dots: pickup fine.nib; pos[_one](vair,0); + pos[_two](.5[vair,stem],0); + % comma below letter as sans serif cedilla + top y[_one]=-o-2; bot y[_two]=-d-o; + x[_two]=x[_one]-1.25u=.5w+x_move; + filldraw stroke z[_one]e--z[_two]e; % diagonal + else: pickup fine.nib; + x[_four]-.5bulb_diam=hround(.5w+x_move-.5bulb_diam); + 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 + +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_:=ypart((z[_one]{right}...z[_two]{down}...z[_three]) + intersectiontimes (z[_four]l{right}..{left}z[_four]r)); + if y_<0: y_:=1; fi + filldraw z[_four]r{left}..subpath (0,y_) + of (z[_four]l{right}..{left}z[_four]r)--cycle; % dot + filldraw stroke z[_one]e{right}...z[_two]e{down}...z[_three]e; fi % tail + penlabels([_zero],[_one],[_two],[_three],[_four]); +endchar; + +endinput; +%end of file |