% ebrligtb.mf
% [= exrligtb.mf, changed by Walter Schmidt, see (CMBR)]
%
% (c) Copyright 1995, 1996, 1997 J"org Knappen
% (c) Copyright 1990, 1992 Norbert Schwarz
%
% This file is part of the EC Bright fonts version 1.0
%
% Content:
%
% ligtable and kerning programs for roman style 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_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;

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#,
   "j" kern -kkk#, oct"032" kern -kkk#, "g" kern -ku#, oct"247" kern -ku#,
   "y" kern -ku#, oct"270" kern -ku#, oct"375" kern -ku#,
   "v" kern kk#, "w" kern ku#, "V" kern kkk#, "W" kern kk#,
   "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
      "k":  "W" kern kk#, "V" kern kk#,
      if serifs: "v":    lig_a_table(-u#), fi
      "w": lig_e_table(k#),
           lig_a_table(k#),
           lig_o_table(k#),
           lig_c_table(k#);

ligtable
      "P":   lig_A_table(kk#),
      "y": oct"270": oct"375": % \"y, \'y  
             lig_o_table(k#),
             lig_e_table(k#),
             lig_a_table(k#),
             "." kern kk#,
             "," kern kk#;
ligtable
      "F":"V": "W":
           if serifs:
             "o" kern kk#,
             "a" kern kk#,
             "e" kern kk#,
             "y" kern kk#,
             "u" kern kk#,
             "r" kern kk#,
             "v" kern kk#,
             "s" kern kk#,
             "c" kern kk#,
             "d" kern kk#,
             "g" kern kk#,
             "m" kern kk#,
             "n" kern kk#,
             "p" kern kk#,
             "w" kern kk#,
             "z" kern kk#,
             oct"346" kern kk#,
             oct"370" kern kk#,
             lig_A_table(kkk#),
            else:
             "o" kern k#,
             "a" kern k#,
             "e" kern k#,
             "y" kern k#,
             "u" kern k#,
             "r" kern k#,
             "v" kern k#,
             "s" kern k#,
             "c" kern k#,
             "d" kern k#,
             "g" kern k#,
             "m" kern k#,
             "n" kern k#,
             "p" kern k#,
             "w" kern k#,
             "z" kern k#,
             oct"346" kern k#,
             oct"370" kern k#,
             lig_A_table(kk#),
            fi
       "X":  lig_O_table(k#),
             lig_CGQ_table(k#);

ligtable "K":  if serifs:
                 "v" kern kk#,
                 "w" kern k#,
               else:
                 "v" kern k#,
               fi 
               lig_o_table(k#),
               lig_CGQ_table(k#);

ligtable
       "T": oct"224": oct"225": % \v{T}, \c{T}
               "y" kern if serifs: k# else: kk# fi,
       "Y": oct"230": oct"335": % \"Y, \'Y
               "e" kern kk#,
               "o" kern kk#,
               "r" kern kk#,
               "a" kern kk#,
               "u" kern kk#,
               "n" kern kk#,
               oct"031" kern kk#, % \i
               "c" kern kk#, 
               "d" kern kk#,
               "g" kern kk#,
               "p" kern kk#,
               "s" kern kk#,
               "v" kern kk#,
               "w" kern kk#,
               "x" kern kk#,
               "z" kern kk#,
               lig_A_table(kk#);
ligtable
 "O": oct"216": oct"322": oct"323": oct"324": oct"325": oct"326": oct"330":
 "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#;
if serifs:
ligtable
       "m": "n": "h": 
               "W" kern kk#, "V" kern kk#,
       oct"253": oct"254": oct"255": oct"361": % \'n, \v{n}, \ng, \~n
               "t" kern k#,
               lig_u_table(k#),
               "b" kern k#,
               "y" kern k#,
               "v" kern k#,
               "w" kern k#;
ligtable
       "c": oct"242": oct"243": oct"347": % \'c, \v{c}, \c{c}
               "h" kern k#,
               "k" kern k#;
fi
ligtable
 "o": oct"256": oct"362": oct"363": oct"364": oct"365": oct"366": oct"370":
 "b": "p":
if known bx_kerning:  % (CMBR)
               lig_e_table(-k#),
               lig_o_table(-k#),
               "d" kern -k#,
               lig_c_table(-k#),
               "q" kern -k#,
fi
               "x" kern k#,
 "a": oct"240": oct"340": oct"341": oct"342": oct"343": oct"344": oct"345": 
              if serifs:
               "v" kern k#,
               "j" kern u#,
              else:
               "r" kern k#,
              fi
 "t": oct"264": oct"265":   
              "y" kern k#, oct"270" kern k#, oct"375" kern k#,
 "u": oct"266": oct"267": oct"371": oct"372": oct"373": oct"374":
              "w" kern k#;
ligtable
       lig_cA_table
              "y" kern if serifs: kk# else: k# fi,
              oct"270" kern if serifs: kk# else: k# fi,
              oct"375" kern if serifs: kk# else: k# fi,
       oct"202": %\k{A}
              "v" kern if serifs: kkk# else: k# fi, 
              "w" kern if serifs: kk# else: k# fi,
              lig_c_table(k#),
              "d" kern k#, oct"244" kern k#, 
              oct"236" kern k#, oct"360" kern k#,
              lig_e_table(k#),
              lig_o_table(k#),
              "q" kern k#,
  if serifs: "R":  oct"217": fi 
              "t" kern k#, oct"264" kern k#, oct"265" kern k#,
              lig_CGQ_table(k#),
              lig_O_table(k#),
              lig_U_table(k#),
  "L": oct"210": oct"211": oct"212":
       "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#;
ligtable "g": "j" kern -k#; % logjam
ligtable "I": "I" kern -k#; % Richard III
ligtable "e": "V" kern kk#; % eV
ligtable oct"241": % \k{a}
    if serifs: "g" kern -k# , "p" kern -k#, fi\\ "w" kern k#;
ligtable oct"252": % \l
     "'" kern -k#
       if not serifs: ,
         "a" kern k#, oct"241" kern k#, "c" kern k#, oct"242" kern k#,
         "d" kern k#, "e" kern k#, oct"246" kern k#, "g" kern k#,
         "o" kern k#, oct"363" kern k#, "s" kern k#, oct"261" kern k#
       fi;

endinput;
