% exiligtb.mf
%
% (c) Copyright 1995, 1996, 1997 J"org Knappen
% (c) Copyright 1990, 1992 Norbert Schwarz
%
% This file is part of ecfonts version 1.0
%
% Please read the files 00readme.txt, 00inst.txt, 00error.txt, and
% copyrite.txt for further information
%
% You find some documentation in ecdoc.tex (needs LaTeX2e)
%
% Content:
%
%   ligtable and kerning for italic fonts
%
%      This file should not be called for monospaced fonts !
%
%  The following ligatures are integrated:
%
%   fi
%   fl
%   ff
%   ffi
%   ffl
%
%   --
%   ---
%   -<hyphenchar>
%   >>
%   <<
%   ``
%   ''
%   ,,
%   !` and ?`

version_check(1,0);  % |version_check| was introduced in dc1.3

ligtable
    "f":   "i"=:oct"034",
           "f"=:oct"033",
           "l"=:oct"035",
           "'" kern itc#,
           "`" kern itc#,
           oct"020" kern itc#,
           oct"021" kern itc#,
           "?" kern itc#,
           "!" kern itc#,
           ")" kern itc#,
           "]" kern itc#;
ligtable 
   oct"033":       % ff
          "i"=:oct"036",
          "l"=:oct"037",
          "'" kern itc#,
          "`" kern itc#,
          oct"020" kern itc#,
          oct"021" kern itc#,
          "?" kern itc#,
          "!" kern itc#,
          ")" kern itc#,
          "]" kern itc#;
ligtable
    "`":  "`"=:oct"020",
          oct"020" kern 2u#,
          "?" kern 2u#,
          "!" kern 2u#;

ligtable
    "'":  "'"=:oct"021",
          oct"021" kern 2u#,
          "?" kern 2u#,
          "!" kern 2u#;

ligtable
    "-":  "-" =: oct"025",
     oct"177" =: oct"177"; % <hyphen><hyphenchar> => <hyphenchar>

ligtable
    oct"025": "-"=:oct"026";  % "---"  => emdash

ligtable "<": "<" =: oct"023";     % "<<"
ligtable ">": ">" =: oct"024";     % ">>"
ligtable ",": "," =: oct"022";     % ",,"
ligtable "!": "`" =: oct"275";     % spanish shriek
ligtable "?": "`" =: oct"276";     % spanish query
%
%
def lig_o_table (expr k) =
             "o" kern k,  oct"256" kern k, oct"362" kern k, oct"363" kern k,
                          oct"364" kern k, oct"365" kern k, oct"366" kern k,
                          oct"367" kern k, oct"370" kern k
enddef;
%
%
def lig_a_table (expr k) =
           "a" kern k,    oct"240" kern k, oct"241" kern k, oct"340" kern k,
                          oct"341" kern k, oct"342" kern k, oct"342" kern k,
                          oct"343" kern k, oct"344" kern k, oct"345" kern k,
                          oct"346" kern k
enddef;
%
def lig_c_table (expr k) =
           "c" kern k,   oct"242" kern k, oct"243" kern k, oct"347" kern k
enddef;
%
def lig_e_table (expr k)=
             "e" kern k, oct"245" kern k, oct"246" kern k, oct"350" kern k,
                         oct"351" kern k, oct"352" kern k, oct"353" kern k
enddef;
%
def lig_n_table (expr k)=
             "n" kern k, oct"253" kern k, oct"254" kern k, oct"255" kern k,
             oct"361" kern k
enddef;
%
def lig_u_table (expr k)=
             "u" kern k, oct"266" kern k, oct"267" kern k, oct"371" kern k,
                         oct"372" kern k, oct"373" kern k, oct"374" kern k
enddef;
%
def lig_A_table (expr k) =
             "A" kern k, oct"200" kern k, oct"201" kern k, oct"300" kern k,
              oct"301" kern k, oct"302" kern k, oct"303" kern k,
              oct"304" kern k, oct"305" kern k, oct"306" kern k
enddef;
%
def lig_O_table (expr k) =
         "O" kern k,
                  oct"216" kern k,  oct"322" kern k,  oct"323" kern k,
                  oct"324" kern k,  oct"325" kern k,
                  oct"326" kern k,  oct"327" kern k,  oct"330" kern k
enddef;
%
def lig_CGQ_table (expr k)=
             "C" kern k, "G" kern k, oct"202" kern k, oct"203" kern k,
                    oct"207" kern k, oct"307" kern k, "Q" kern k
enddef;
%
def lig_U_table (expr k) =
         "U" kern k, oct"226" kern k, oct"227" kern k, oct"331" kern k,
                     oct"332" kern k, oct"333" kern k, oct"334" kern k
enddef;
%
def lig_cA_table =
             "A": oct"200": oct"300": oct"301": oct"302":
             oct"303": oct"304": oct"305"
enddef;
%
def lig_cO_table =
             "O": oct"216": oct"322": oct"323": oct"324": oct"325":
                  oct"326": oct"330"
enddef;

k#:=-.5u#; ku#:=-1u#; kk#:=-1.5u#; kkk#:=-2u#; % four degrees of kerning
%
ligtable boundarychar:
   oct"020" kern -kk#, oct"021" kern -kk#, oct"022" kern -kk#,
   oct"055" kern -kk#, oct"140" kern -kk#, oct"047" kern -kk#;

ligtable oct"022":
   oct"015" kern 2u#, "," kern 2u#,
         oct"015":
   oct"022" kern 2u#,
   "v" kern kk#, "w" kern kk#, 
   "T" kern kk#, "V" kern kkk#, "W" kern kkk#,
   "Y" kern kk#,  oct"230" kern kk#, oct"335" kern kk#,
   lig_O_table(k#), lig_CGQ_table(k#),
   boundarychar kern -kk#;

ligtable oct"020":
   oct"140" kern 2u#, oct"020" kern 2u#, boundarychar kern -kk#;

ligtable oct"021":
   oct"047" kern 2u#, oct"021" kern 2u#, boundarychar kern -kk#;

ligtable oct"024": % ">>"
   "." kern kk#, "," kern kk#;

ligtable
        "d": oct"244": "w": "l": oct"250": oct"251":   
                "l" kern +u#, oct"250" kern +u#, oct"251" kern +u#;
ligtable
        "F": "W": "V":    
                "o" kern kk#,
                "e" kern kk#, oct"246" kern kk#,
                "u" kern kk#,
                "r" kern kk#, "n" kern kk#, "v" kern kk#,
                "a" kern kk#, oct"241" kern kk#,
                lig_A_table(kkk#),
        "X":    lig_O_table(k#),
                lig_CGQ_table(k#);

ligtable 
       "K": "v" kern k#,
            "w" kern k#,
            lig_O_table(k#),
            lig_CGQ_table(k#);

ligtable
        "T": oct"224": oct"225":
                "y" kern kk#,
        "Y": oct"335": oct"230":
                "e" kern kk#,
                "o" kern kk#,
                "r" kern kk#,
                "a" kern kk#,
                "u" kern kk#,
        "P":   
                lig_A_table(kk#);
ligtable
        lig_cO_table:
        "D": oct"204": oct"320":
                "X" kern k#,
                "W" kern k#,
                lig_A_table(k#),
                "V" kern k#,
                "Y" kern k#, oct"230" kern k#, oct"335" kern k#;
ligtable
        lig_cA_table:
                "y" kern k#, oct"270" kern k#, oct"375" kern k#,
        oct"201": "R": oct"217":
                lig_n_table(k#),
                "l" kern k#, oct"250" kern k#, oct"251" kern k#,
                "r" kern k#,
                lig_u_table(k#),
                "m" kern k#,
                "t" kern k#, oct"264" kern k#, oct"265" kern k#,
                "i" kern k#, oct"355" kern k#,
                "h" kern k#,
                "b" kern k#,
                "k" kern k#,
                "v" kern k#,
                "w" kern k#,
                lig_CGQ_table(k#),
                lig_O_table(k#),
                lig_U_table(k#),
        "L": oct"210": oct"211":
                "T" kern kk#, oct"224" kern kk#, oct"225" kern kk#,
                "Y" kern kk#, oct"230" kern kk#, oct"335" kern kk#,
                "V" kern kkk#,
                "W" kern kkk#,
        "b":
        "c": oct"242": oct"243":
        "e": oct"245": oct"246": oct"350": oct"351": oct"352": oct"353":
        "o": oct"362": oct"363": oct"364": oct"365": oct"366":
        oct"376":
        "p":
        "r":    lig_e_table(-u#),
                lig_a_table(-u#),
                lig_o_table(-u#),
                "d" kern -u#,  oct"236" kern -u#,
                lig_c_table(-u#),
                "g" kern -u#,  oct"247" kern -u#,
                "q" kern -u#;
ligtable
        "n":    "'" kern kkk#;

ligtable oct"252": "'" kern -k#;

endinput;
