% tipa.mf: TIPA driver file
% Copyright 1996-2003 FUKUI Rei
%
% This program may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.2
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.2 or later is part of all distributions of LaTeX 
% version 1999/12/01 or later.
%
% This program consists of all files listed in Manifest.txt.
%
% Version 1.2 2003/01/01
%
% This file is based on:
%   Computer Modern font series by D. E. Knuth and
%   TSIPA by KOBAYASHI Hajime, FUKUI Rei and SHIRAKAWA Shun.
%

font_coding_scheme:="TeX IPA";

mode_setup;
font_setup;

input tipanew   % new materials for testing
input tipadiac  % accents and diacritics
input tipapnct  % punctuation marks
input tiparoml  % lower case (minuscules)
input tipasym1  % ipa symbols (1)
input tipasym2  % ipa symbols (2)
input tipasym3  % ipa symbols (3)
input tipasym4  % ipa symbols (4)
input tipagerm  % symbols for germanic languages
input tipatone  % parts of tone letters

smallcap_setup;
input tipasc    % ipa small capitals
restore_normal_setup;

font_slant slant; font_x_height x_height#;

% Modified on 2001/12/24 for the Times Roman compatibility;
% The values for Times_Compat are calculated from the data
% from ptmr7t.tfm.
if monospace:
 font_normal_space 9u#; % no stretching or shrinking
 font_quad 18u#;
 font_extra_space 9u#;
else:
 if Times_Compat:
  font_normal_space 5u#+2letter_fit#;
  font_normal_stretch 2.2u#; font_normal_shrink 1.2u#;
  font_quad 20u#+4letter_fit#;
  font_extra_space 1.2u#;
 else:
  font_normal_space 6u#+2letter_fit#;
  font_normal_stretch 3u#; font_normal_shrink 2u#;
  font_quad 18u#+4letter_fit#;
  font_extra_space 2u#;
 fi
fi

% ligatures made by ligtables

ligtable oct"047": oct"047" kern -1.5u#; % ' + ' -> ''
ligtable oct"140": oct"140" kern -1.5u#; % ` + ` => ``
ligtable "|": "|" =: oct"173"; % Pipe + Pipe -> Double Pipe
ligtable oct"042": oct"042" =: oct"177"; % Prim. Stress + Prim. Stress -> Sec. Stress

% kernings (need to modify)

numeric itc#; % modified italic correction on `f'
itc#=if serifs: max(0,flare#-.25u#) else: 1.25u# fi;

k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning

ligtable "f":
  "'" kern itc#, "?" kern itc#, "!" kern itc#, ")" kern itc#, "]" kern itc#;

ligtable "y":
  "o" kern k#, "e" kern k#, "a" kern k#, "." kern kk#, "," kern kk#,
  "2" kern -u#, "L" kern -u#, oct"300" kern -u#, oct"373" kern -u#;

ligtable "g":
 "j" kern -k#; % logjam

if serifs:

  ligtable "k":
    "a" kern -u#, "e" kern k#, "a" kern k#, "o" kern k#, "c" kern k#;

  ligtable "v":
    "a" kern -u#, "e" kern k#, "a" kern k#, "o" kern k#, "c" kern k#,
    "2" kern -u#, "L" kern -u#, oct"300" kern -u#, oct"373" kern -u#;

  ligtable "w":
    "e" kern k#, "a" kern k#, "o" kern k#, "c" kern k#,
    "2" kern -u#, "L" kern -u#, oct"300" kern -u#, oct"373" kern -u#;

  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#;

  ligtable "o": "b": "p":
    "e" kern -k#, "o" kern -k#, "x" kern k#, "d" kern -k#, "c" kern -k#,
    "q" kern -k#, "v" kern k#, "j" kern u#, "y" kern k#, "w" kern k#;

  ligtable "a":
    "v" kern k#, "j" kern u#, "y" kern k#, "w" kern k#;

  ligtable "t":
    "y" kern k#, "w" kern k#;

  ligtable "u":
    "w" kern k#;

else:

  ligtable "k":
    "e" kern k#, "a" kern k#, "o" kern k#, "c" kern k#;

  ligtable "w":
    "e" kern k#, "a" kern k#, "o" kern k#, "c" kern k#,
    "2" kern -u#, "L" kern -u#, oct"300" kern -u#, oct"373" kern -u#;

  ligtable "v":
    "2" kern -u#, "L" kern -u#, oct"300" kern -u#, oct"373" kern -u#;

  ligtable "o": "b": "p":
    "e" kern -k#, "o" kern -k#, "x" kern k#, "d" kern -k#, "c" kern -k#,
    "q" kern -k#, "r" kern k#, "y" kern k#, "w" kern k#;

  ligtable "a":
    "r" kern k#, "y" kern k#, "w" kern k#;

  ligtable "t":
    "y" kern k#, "w" kern k#;

  ligtable "u":
    "w" kern k#;

fi

ligtable "2": "L": oct"300": oct"373": % Turned V, SC A, Turned y, Turned W
  "v" kern -u#, "w" kern -u#, "y" kern -u#;

ligtable "S": oct"342": oct"344": oct"352": oct"301": oct"311":
  oct"323": oct"264": oct"331": % symbols with hooktop
  "b" kern -kk#, "f" kern -k#, "h" kern -kk#, "i" kern -kk#,
  "j" kern -kk#, "k" kern -kk#, "P" kern -kk#, "Q" kern -kk#,
  "]" kern -kk#, ")" kern -kk#;

ligtable oct"343": oct"355": oct"357": oct"365": oct"374": % symbols with right-tail
  "g" kern -k#, "j" kern -kk#, "p" kern -kk#, "y" kern -kk#, "S" kern -kk#,
  "B" kern -kk#, "J" kern -kk#, oct"351" kern -kk#, oct"361" kern -kk#,
  "]" kern -kk#, ")" kern -kk#;

ligtable "[": "(":
  "S" kern -kk#, oct"361" kern -kk#, "j" kern -kk#, oct"351" kern -kk#,
  oct"352" kern -kk#, oct"315" kern -kk#;

bye.
