summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf')
-rw-r--r--Master/texmf-dist/fonts/source/lh/base/lgcyracc.mf480
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