% Turkish font with full diacriticals, based on the
% Computer Modern Roman family of fonts (by D. E. Knuth, 1979--1985)
% Adapted for Turkish by P. A. MacKay, January, 1987.
% If command line includes |pxlfont=128;|, |use_pxl| becomes true
boolean use_pxl;
if unknown pxlfont: use_pxl:=false; else: use_pxl:=true; fi
% Use the roman questionmark for this class of fonts
% This will come out of romanp.mf if a 256-character font is being
% written, otherwise it will be supplied by conditional code in
% tkpnct.mf. This code is activated by a known value in |romquery|.
if use_pxl: romquery=oct"077";
else: spanish_shriek=oct"016"; spanish_query=oct"017"; fi
if not monospace: izafet_dot= if use_pxl: oct"0175" else: oct"0375" fi; fi
if ligs>0: font_coding_scheme:="TeX Turkish"
else: font_coding_scheme:="TeX typewriter Turkish" fi;
mode_setup; font_setup;
input romanu; % upper case (majuscules) unchanged for Turkish
input tkroml; % lower case (minuscules) romanl with dotless i
input romand; % numerals
if ligs>0: input comlig; fi % ligatures common with italic text
input tkpnct; % punctuation common to roman and italic (reduced set)
input aynhmz; % ayn and hamza, izafet dot |iff not monospace|
if use_pxl:
else:
input greeku; % upper case Greek letters
input romanp; % ampersand, question marks, currency sign
input romspl; % lowercase specials (dotless \i, ligature \ae, etc.)
input romspu; % uppercase specials (\AE, \OE, \O)
input accent; % accents common to roman and italic text
if ligs<=1: input romsub; fi % substitutes for ligatures
ligtable "!": "`" =: spanish_shriek;
ligtable "?": "`" =: spanish_query;
extra_endchar:=extra_endchar&"charcode:=charcode+code_offset";
code_offset:=128; % move accented chars into 128..255 region
fi
input tkdotu; % upper case with dotted diacriticals
input tkdotl; % lower case with dotted diacriticals
input tkaccu; % upper case with assorted accents
input tkaccl; % lower case with assorted accents
if ligs<=0: input tksub; fi % substitutes for ligatures
% A thoroughly mixed list of names for the accented characters.
% These follow English, Arabic and Turkish conventions rather arbitrarily
% Only the letters that appear more than once in the ligtable are coded here.
% The following ligtable entries are based on the entries in
% roman.mf. It has been necessary to extract many parts of the
% original entries in order to keep the ligature structure clear.
ligtable "k": "!"=:qaf, % new ligature---kerns from what follows
qaf: % remainder---kerns only
if serifs: "v": "a" kern -u#, hat_a kern -u#, fi\\
"w": "e" kern k#,
"a" kern k#, hat_a kern k#, "c" kern k#, chim kern k#,
"o" kern k#, dot_o kern k#, hat_o kern k#;
ligtable "T": "!"=:TTA, % new ligature---kerns from what follows
TTA: "y" kern if serifs: k# else: kk# fi, % remainder---kerns only
"Y": "e" kern kk#, "o" kern kk#, hat_o kern kk#, dot_o kern kk#,
"r" kern kk#, "a" kern kk#, hat_a kern kk#,
"A" kern kk#, HAT_A kern kk#,
"u" kern kk#, dot_u kern kk#, hat_u kern kk#;
ligtable "D": "="=:DHAL, "!"=:DAD, % new ligature---kerns from what follows
"X" kern k#, "W" kern k#, "A" kern k#, HAT_A kern k#,
"V" kern k#, "Y" kern k#;
ligtable "O": ":"=:DOT_O, % another new ligature in this group
DOT_O: DHAL: DAD: % remainder---kerns only
"X" kern k#, "W" kern k#, "A" kern k#, HAT_A kern k#,
"V" kern k#, "Y" kern k#;
ligtable "c": ":"=:chim, % new ligature---kerns from what follows
if serifs: "h" kern k#, hha kern k#, kha kern k#,
"k" kern k#, qaf kern k#; fi
ligtable "h": "="=:kha, "!"=:hha, % another new ligature in this group
if serifs: "t" kern k#, tta kern k#, "u" kern k#, dot_u kern k#,
"b" kern k#, "y" kern k#, "v" kern k#, "w" kern k#; fi
ligtable "n": "="=:gnaf, % another new ligature in this group
if serifs: "t" kern k#, tta kern k#,
"u" kern k#, dot_u kern k#, hat_u kern k#,
"b" kern k#, "y" kern k#, "v" kern k#, "w" kern k#; fi
if serifs: ligtable hha: kha: "m": gnaf: % remainder---kerns only
"t" kern k#, "u" kern k#, dot_u kern k#, hat_u kern k#,
"b" kern k#, "y" kern k#, "v" kern k#, "w" kern k#;
ligtable chim:
"h" kern k#, hha kern k#, kha kern k#,
"k" kern k#, qaf kern k#; fi
ligtable "o": ":"=:dot_o, "="=:hat_o, %new ligature---kerns from what follows
"e" kern -k#, "o" kern -k#, hat_o kern -k#, dot_o kern -k#, "x" kern k#,
"d" kern -k#, dhal kern -k#, dad kern -k#,
"c" kern -k#, chim kern -k#, "q" kern -k#,
if serifs: "v" kern k#, "j" kern u#, else: "r" kern k#, fi
"y" kern k#, "w" kern k#;
ligtable "a": "="=:hat_a, % another new ligature in this group
if serifs: "v" kern k#, "j" kern u#, else: "r" kern k#, fi
"y" kern k#, "w" kern k#;
ligtable "t": "!"=:tta, % another new ligature in this group
"y" kern k#, "w" kern k#;
ligtable "u": ":"=:dot_u, "="=:hat_u,
"w" kern k#; % another new ligature in this group
ligtable hat_o: dot_o: "b": "p": % remainder---kerns only
"e" kern -k#, "o" kern -k#, hat_o kern -k#, dot_o kern -k#, "x" kern k#,
"d" kern -k#, dhal kern -k#, dad kern -k#,
"c" kern -k#, chim kern -k#, "q" kern -k#,
hat_a: if serifs: "v" kern k#, "j" kern u#, else: "r" kern k#, fi
tta: "y" kern k#,
dot_u: hat_u: "w" kern k#;