%PDF- %PDF-
| Direktori : /proc/self/root/data/old/usr/share/texlive/texmf-dist/fonts/source/lh/base/ |
| Current File : //proc/self/root/data/old/usr/share/texlive/texmf-dist/fonts/source/lh/base/fikparm.mf |
%
% fikparm.mf
%
%% Cyrillic font container with T2 encoding beta-support
%
% This file is future part of lxfonts package
% Version 3.5 // Patchlevel=1
% (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:
%
% File with modified macros for font startup from polish fik_mik.mf
% (Bogus\l{}aw Jackowski and Marek Ry\'cko)
% and
% start of Lig & kerns block from lkligtbl.mf (Alexander Berdnikov)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Contents:
%
% |LHver_check| like exbase's |version_check|
% If unknown fonteq: def fonteq
% If unknown genmode: set genmode
% Set param_base (it could be reset in fontbegin file)
% Set flags for input glyph files (they could be reset in fontbegin file)
% Set flags for letter shapes: not supported by current version (-"-)
% Input fontbegin file (if necessary)
% Defining boolean altcoding
% Input cmbase and lcyrbeg (file with macros for ec param file)
% input lkligtbl.mf (ligs & kerns block of A.Berdnikov)
% Redefining `generate' macro
% Use_driver macro:
% input parameter file
% set font_identifier (and gensize for ec)
% input coding file
% input Cyrillic definitions file
% input driver file
%
% FINAL: START FONT -- use_driver(fonteq)
%
% defining LHver_check 3.5
%
lh_maj_ver:=3; lh_min_ver:=5; % version identification
def LHver_check(expr e,f)=
if e>lh_maj_ver: message "LH font warning: Obsolete base";
elseif e<lh_maj_ver: message "LH font warning: File from old release found";
else: % e=lh_maj_ver: OK
if f>lh_min_ver: message "LH font warning: Obsolete base";
elseif f<lh_min_ver: message "LH font warning: File from old release found";
else: % f=lh_min_ver: LH version is OK
fi
fi
enddef;
% changed fonteq with genmode must precede fikparm:
% -- set value of first letters to change
if unknown fonteq:
def fonteq=2 enddef;
fi
% -- set boolean for cmbright fonts (vvv)
if unknown cmbright: boolean cmbright;
if unknown ebbase:
cmbright:=false;
ebbase:=0;
else: cmbright:=true;
fi;
fi
% -- set genmode string: the name of first letters
if unknown genmode:
string genmode; genmode:="cm";
fi
if genmode="dc": genmode:="ec";
message "We use ec fonts only"; message "";
fi
% new booleans 2007 (3.5g)
% for mongolian italian otld with bar stroke;
% for lowercase yat with beak serifs
if unknown variant_obar: boolean variant_obar;
variant_obar:=false;
fi
if unknown variant_yat: boolean variant_yat;
variant_yat:=false;
fi
% -- |param_base| can be changed only in begin file
string param_base; param_base:=jobname;
% -- selfhelp
% fonteq -- *number* of first (two, three or even four) letters from
% current font which are changed to letters from a standard/popular font
% header to input necessary parameters; it's entered *only* in font headers;
% genmode -- *the name* of first two, three or even four letters from
% a standard/popular font header to input necessary parameters;
% it's entered both in font headers and in fontbegin file (if fonteq wasn't
% changed); it must consist of *fonteq* letters,
% param_base -- default: *jobname*;
% one may use encoding and kern&ligs data from another font data in case of
% changing param_base to necessary name (e.g. ll* virtual fonts use
% lh* 8-bit font data with `vfcoding:=true;' command); param_base must
% be changed *in fontbegin file only*.
%
% -- name of encoding for T2/X2
string enc_name;
% next booleans are used in ??begin files:
% -- set booleans for font stuff
boolean wncoding,vfcoding,roman_ec;
wncoding:=false;
vfcoding:=false;
roman_ec:=false;
% -- set flags for Cyrillic letter assortment
boolean more_letters,old_cyr,other_cyr,unic;
more_letters:=false;
old_cyr:=false;
other_cyr:=false;
unic:=false;
% -- set flags for letter shapes
% - put ogoneks instead of descenders?
boolean is_ogonek; is_ogonek=false;
% -- `true' not supported in current version
if unknown concrete:
boolean concrete; concrete:=false;
fi
if unknown specific:
boolean specific; specific:=false;
fi
if unknown kapitel:
boolean kapitel; kapitel:=false;
fi
% -- set flags for ligature and kerning stuff
boolean TITLEfont,SmallCapsfont,ROMANfont;
% there must stay jobname because data is read from started font header
% to check whether is the "standard LH" font;
if substring(fonteq-2,fonteq) of jobname = "lh":
% lh* fonts have not any additional parameters
enc_name:="LCY";
elseif substring(fonteq-2,fonteq) of jobname = "ll":
param_base:="lh" & (substring(fonteq,length(jobname)) of jobname);
vfcoding:=true;
enc_name:="LCY";
elseif substring(fonteq-2,fonteq) of jobname = "wn":
more_letters:=true; wncoding:=true;
enc_name:="WNCYR";
elseif substring(fonteq-2,fonteq) of jobname = "la":
roman_ec:=true; more_letters:=true;
genmode:="ex"; enc_name:="T2A";
elseif substring(fonteq-2,fonteq) of jobname = "lb":
roman_ec:=true; more_letters:=true;
genmode:="ex"; enc_name:="T2B";
elseif substring(fonteq-2,fonteq) of jobname = "lc":
roman_ec:=true; more_letters:=true;
genmode:="ex"; enc_name:="T2C";
elseif substring(fonteq-2,fonteq) of jobname = "ld":
roman_ec:=true; more_letters:=true; old_cyr:=true;
genmode:="ex"; enc_name:="T2D";
elseif substring(fonteq-2,fonteq) of jobname = "rx":
more_letters:=true;
genmode:="ex"; enc_name:="X2";
% elseif substring(fonteq-2,fonteq) of jobname = "rs":
% more_letters:=true; old_cyr:=true;
% genmode:="ex"; enc_name:="XS";
else: % for another non-standard fonts
enc_name:="Unknown"; % should be changed in fontbegin file
scantokens("input "
& substring(fonteq-2,fonteq) of jobname & "begin.mf");
fi
% -- must go after redefined booleans wncoding and vfcoding in ??begin.mf
boolean altcoding;
altcoding:= if wncoding or vfcoding: false else: true fi;
% -- start base file:
% exbase won't loaded for run in small memory systems
if unknown cmbase: input cmbase; fi
% -- additional macros for ec compatible mode
input lcyrbeg;
% -- if TFMonly: "kill" cmbase's drawing macros
if known TFMonly: input nodraw; fi % Only build TFM
% -- start macros for ligatures and kerning
input lkligtbl;
string driver_name,ss; numeric ii;
% -- set additional extra_endchar for SliTeX invisible fonts
% !!! WARNING:
% in icmcsc10.mf the line "extra_endchar:=..." must stay BEFORE "generate csc"
ss:=substring(0,fonteq-2) of param_base;
if (ss="i") or (ss="il"): extra_endchar := extra_endchar & "clearit;"; fi
% -- reset slitex boolean for SliTeX fonts
ss:=substring(0,fonteq-2) of param_base;
if (ss="l") or (ss="il"): slitex := true; fi
vardef generate @# = driver_name:=str @#; endgroup enddef;
% -- input parameter file
% set font_identfier
% then driver file
vardef use_driver @# (expr fonteq) =
%
% Start values
ii:=0;
forever: ii:=ii+1;
ss:=substring(length(param_base)-ii,length(param_base)-ii+1) of param_base;
exitif (ss<"0") or (ss>"9") or (ii>=length(param_base));
endfor;
%
% - input parameter file
ii:=ii-1;
ss:=substring(length(param_base)-ii,length(param_base)) of param_base;
if (genmode="ex") or (genmode="ec"):
exbase:=1; %!!! THAT'S TRICK: we don't need exbase at all
% added flag for concrete
if concrete:
gensize:=scantokens(ss);
ss:="input eo"& (substring(fonteq+1,length(param_base)) of param_base);
elseif cmbright:
exbase:=1; %!!! THAT'S TRICK: we don't need exbase at all
gensize:=scantokens(ss);
ss:="input eb"& (substring(fonteq+1,length(param_base)) of param_base);
else:
% - set gensize for ec parameter files
if (ss="8") or (ss="10"): % for EC slitex fonts
gensize:=scantokens(ss);
ss:="input "& (substring(0,fonteq-2) of param_base) & "ec"
& (substring(fonteq,length(param_base)) of param_base);
else:
gensize:=scantokens(ss)/100;
ss:="input ec" & (substring(fonteq,length(param_base)-ii) of param_base);
fi
fi
else:
% - set gensize for cm parameter files
gensize:=scantokens(ss);
% added flag for concrete
if concrete:
ss:="input cc"& (substring(fonteq+1,length(param_base)) of param_base);
else:
% HERE could be cm genmode: vvvvvvv
ss:="input "& (substring(0,fonteq-2) of param_base) & genmode
& (substring(fonteq,length(param_base)) of param_base);
fi
fi
show gensize,ss;
%
% - set font_identifier
numeric true_pt#; true_pt#=pt#;
pt#:=true_pt#; scantokens(ss); pt#:=true_pt#;
font_identifier:=substring(0,length(param_base)-ii) of param_base;
%
% - input encoding file
scantokens ("input "& (substring(fonteq-2,fonteq) of param_base) & "codes");
% - input Cyrillic definitions file
scantokens "input lcyrdefs";
%
% - input driver file
scantokens("input "&
if genmode="ex":
if driver_name= "exroman" : "leroman" % also cmbright&ec (vvv)
elseif driver_name= "ebroman" : "lebroman" % cmbright&ec (vvv)
elseif driver_name= "extextit": "letextit"
elseif driver_name= "excsc" : "lecsc"
else: driver_name fi
elseif genmode="ec":
if driver_name= "exroman" : "ldroman"
elseif driver_name= "extextit": "ldtextit"
elseif driver_name= "excsc" : "ldcsc"
else: driver_name fi
else:
if driver_name= "roman" : "ldroman"
elseif driver_name= "sroman" : "ldroman" % slitex must be true
elseif driver_name= "broman" : "ldbroman" % cmbright (vvv)
elseif driver_name= "textit" : "ldtextit"
elseif driver_name= "title" : "ldtitle"
elseif driver_name= "csc" : "ldcsc"
elseif driver_name= "texset" : "ldtexset"
else: driver_name fi fi);
enddef;
% START FONT
use_driver(fonteq);
endinput;
%end of file