%
% ldtexset.mf
%
%% Cyrillic font container with T2 encoding beta-support
%
% This file is future part of lxfonts package
% Version 3.5 // Patchlevel=0
% (c) O.Lapko
%
% 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 all this package as well) and to save it under the same name.
%
% Content:
%
% Special version of Computer Modern for \TeX's extended ASCII character set
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

LHver_check(3,5); % like |version_check| in ec

font_coding_scheme:="TeX extended ASCII/Cyr - "&enc_name;

input lxpseudo;

mode_setup; font_setup; mono_charic#:=0;
pseudo_setup;    % |pseudo_setup| from ec

if altcoding:
   input tsetsl;  % special symbols to be slanted
fi
slant:=0;      % the remaining characters will not be slanted
currenttransform:=identity yscaled aspect_ratio scaled granularity;

if altcoding:
   input romanu;  % upper case (majuscules)
   input romanl;  % lower case (minuscules)
   input romand;  % numerals
   input romanp;  % ampersand, question marks, currency sign
   input punct;  % punctuation symbols common to roman and italic text
   input tset;  % remaining special symbols of extended ASCII
fi

input lgcyru;	   % Cyrillic upper case (majuscules)
input lgcyrl;	   % Cyrillic lower case (minuscules)
input lgcyrsym;    % << >> ,, No
input lgcyracc;	   % Cyrillic accents
if old_cyr:
   input lgocyrac; % Cyrillic Old Slav accents & signs
fi

font_x_height x_height#;
if monospace: font_normal_space 9u#; % no stretching or shrinking
   font_quad 18u#;
   font_extra_space 9u#;
else: font_normal_space 6u#+2letter_fit#;
   font_normal_stretch 3u#; font_normal_shrink 2u#;
   font_quad 18u#+4letter_fit#;
   font_extra_space 2u#;
   k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
   %
   % Latin ligs & kerns:
   %   There are just the same ligs and kerns as in CM
   %   but they are built in more visible form
   TITLEfont:=false; SmallCapsfont:=false; ROMANfont:=true;
   if altcoding:
      ligtable "k":
         if serifs: "v": 
                    "a" kern -u#, fi\\
               "w": "e" kern k#,
                    "a" kern k#, 
                    "o" kern k#, 
                    "c" kern k#;
      ligtable "P": "A" kern kk#,
               "y": "o" kern k#,
                    "e" kern k#,
                    "a" kern k#,
                    "." kern kk#,
                    "," kern kk#;
      ligtable "F": "V": "W":
         if serifs: "o" kern kk#,
                    "e" kern kk#,
                    "u" kern kk#,
                    "r" kern kk#,
                    "a" kern kk#,
                    "A" kern kkk#,
              else: "o" kern k#,
                    "e" kern k#,
                    "u" kern k#,
                    "r" kern k#,
                    "a" kern k#,
                    "A" kern kk#, fi
          "K": "X": "O" kern k#,
                    "C" kern k#,
                    "G" kern k#,
                    "Q" kern k#;
      ligtable "T": "y" kern if serifs: k# else: kk# fi,
               "Y": "e" kern kk#,
                    "o" kern kk#,
                    "r" kern kk#,
                    "a" kern kk#,
                    "A" kern kk#,
                    "u" kern kk#;
      ligtable "O": "D":
                    "X" kern k#,
                    "W" kern k#,
                    "A" kern k#,
                    "V" kern k#,
                    "Y" kern k#;
      if serifs: 
         ligtable "h": "m": "n":
                    "t" kern k#, 
                    "u" kern k#,
                    "b" kern k#,
                    "y" kern k#,
                    "v" kern k#,
                    "w" kern k#;
         ligtable "c": 
                    "h" kern k#,
                    "k" kern k#;
      fi
      ligtable "o": "b": "p":
                    "e" kern -k#,
                    "o" kern -k#,
                    "x" kern k#,
                    "d" kern -k#,
                    "c" kern -k#,
                    "q" kern -k#,
               "a": if serifs: 
                          "v" kern k#,
                          "j" kern u#,
                    else: "r" kern k#, fi
               "t": "y" kern k#,
               "u": "w" kern k#;
      ligtable "A": if serifs: "R": fi\\
                    "t" kern k#,
                    "C" kern k#, 
                    "O" kern k#, 
                    "G" kern k#, 
                    "U" kern k#, 
                    "Q" kern k#,
               "L": "T" kern kk#,
                    "Y" kern kk#,
                    "V" kern kkk#,
                    "W" kern kkk#;
      ligtable "g": "j" kern -k#; % logjam
      ligtable "I": "I" kern -k#; % Richard III
   fi
   scantokens("input "&(substring(fonteq-2,fonteq) of param_base)&"liker"); % Cyrillic ligs & kerns
fi;
bye.
