summaryrefslogtreecommitdiff
path: root/fonts/amsfonts/source/cyrfont.mf
blob: 17aef09546bd2f2aca8c5d61f7be25767f700932 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
%% filename: cyrfont.mf
%% version: 2.2
%% date: 1995/01/04
%%
%% American Mathematical Society
%% Technical Support
%% Publications Technical Group
%% 201 Charles Street
%% Providence, RI 02904
%% USA
%% tel: (401) 455-4080
%%      (800) 321-4267 (USA and Canada only)
%% fax: (401) 331-3842
%% email: tech-support@ams.org
%%
%% Copyright 1995 Humanities and Arts Computing Center, University of
%% Washington.
%%
%% Unlimited copying and redistribution of this file are permitted as
%% long as this file is not modified.  Modifications, and distribution
%% of modified versions, are permitted, but only if the resulting file
%% is renamed.
%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Driver for WNCYR Washington Computer Modern Cyrillic

font_coding_scheme:=if ligs=0: "TeX typewriter text"
 else: "TeX text without f-ligatures" fi;
spanish_shriek=oct"016"; spanish_query=oct"017";

mode_setup; font_setup;

def cyrspread := 1.25dot_size enddef;

numeric cyrflwd; cyrflwd=2hair;
numeric cyrflht; if (designsize < 8pt): cyrflht=2slab; else: cyrflht=4slab; fi

input cyrmax.mf; %input macro file
input cyrilu; % input common shapes
input cyrspu; % and special uppercase forms
input cyrpunc; % and puctuation etc.
input serb; % serbian & other chars
input serbspu;
input cyrspl;  % and lowercase specials


font_slant slant; font_x_height x_height#;
if monospace: font_normal_space 9u#; % no stretching or shrinking
 font_quad 18u#;
 font_extra_space 9u#;
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

%%% fine lower
def lowerfit = -.15u enddef;
def cyrspread = 1.125dot_size enddef;
forsuffixes $= u, width_adj, cap_serif_fit, letter_fit,
 body_height, cap_height, x_height, bar_height, comma_depth,
 flare, cap_hair, stem, cap_stem, cap_curve, cap_ess,
 cap_jut, beak_jut, beak, slab, cap_bar, cap_band, cap_notch_cut,
 o, apex_o:  $.#:=lower.$.#; endfor
fudge:=lower.fudge;
font_setup; % now try again with |lower| settings
extra_endchar:=extra_endchar&"charcode:=charcode+code_offset";
code_offset:=ASCII"a" - ASCII"A";
numeric cyrflwd; cyrflwd=2hair;
numeric cyrflht; cyrflht=4slab;

% now input for lowercase of common shapes
input cyrilu;  % majuscules (in lowercase positions)

code_offset:=8;
input serb;  % serbs and other chars

 k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2.5u#; % three degrees of kerning
ligtable "K": "H"=:"H", "h"=:"H",
          oct"021": "H": oct"005" kern k#, oct"025" kern k#,
         "F" kern k#, "O" kern k#, "S" kern k#;
ligtable "T":  "S"=:"C", "s"=:"C",
          oct"024": "G": "U": "A" kern kkk#, 
         "D" kern kkk#, "L" kern kk#, "C" kern kk#, "a" kern kk#,
         "d" kern kk#, "e" kern kk#, "f" kern kk#, "o" kern kk#,
         oct"005" kern kk#, oct"015" kern kk#, oct"025" kern kk#,
         oct"035" kern kk#, "." kern kk#, "," kern kk#, ";" kern kk#;
ligtable "'": "'"=:oct"042";
ligtable "-": "-"=:oct"173";
ligtable oct"173": "-"=:oct"174";
ligtable "6": "h"=:"W", "H"=:"W";
ligtable "7": "h"=:"w";
ligtable "A": oct"000": oct"001": oct"136": oct"137": oct"024" kern kk#,
          oct"006" kern kk#, oct"007" kern kk#, "Q" kern kk#, oct"137" kern kk#;
ligtable "C": "1"=:oct"007", "H"=:"Q", "h"=:"Q";
ligtable "D": "1"=:oct"006", "2"=:oct"002", "3"=:oct"026",
              "J"=:oct"006", "j"=:oct"006";
ligtable "E": "0"=:oct"023", "1"=:oct"003", "2"=:oct"005";
ligtable "I": "0"=:oct"022", "1"=:oct"004";
ligtable "J": "1"=:oct"027", "2"=:oct"020";
ligtable "L": "1"=:oct"001", "J"=:oct"001", "j"=:oct"001";
ligtable "N": "0"=:oct"175", "1"=:oct"000", "J"=:oct"000", "j"=:oct"000";
ligtable "O": oct"003": "F": "O" kern -k#, "F" kern -k#, oct"005" kern -k#,
          oct"025": "H" kern k#, "A" kern k#, "U" kern k#, oct"024" kern k#,
          "T" kern k#;
ligtable "P": "1"=:oct"136", "2"=:oct"137";
ligtable "t": "s"=:"c",
         "R":  oct"005" kern k#, oct"025" kern k#,
      oct"034": "g": "u": oct"035" kern k#,
          "a" kern k#, "d" kern k#, "e" kern k#, "f" kern k#,
          "l" kern k#, "o" kern k#, "s" kern k#, oct"015" kern k#,
          oct"035" kern k#, "." kern kk#, "," kern kk#, ";" kern kk#;
          
ligtable "S": "H"=:"X", "h"=:"X";
ligtable "X": "Q"=:"W", "q"=:"W", "C"=:"6", "c"=:"6";
ligtable "Y": "A"=:oct"027", "a"=:oct"027", "U"=:oct"020", "u"=:oct"020";
ligtable "Z": "1"=:oct"021", "H"=:oct"021", "h"=:oct"021";
ligtable "[": "["=:oct"074";
ligtable "]": "]"=:oct"076";
ligtable "`": "`"=:oct"134";
ligtable "e": "0"=:oct"033", "1"=:oct"013", "2"=:oct"015",
          "b": "o": "r": "f":  "h" kern k#;
%         "b": "o": "r": "f": "o" kern -k#, "f" kern -k#, "e" kern -k#, "c" kern -k#,
ligtable "c": "1"=:oct"017", "h"=:"q";
ligtable "d": "1"=:oct"016", "2"=:oct"012", "3"=:oct"036", "j"=:oct"016";
ligtable "i": "0"=:oct"032", "1"=:oct"014";
ligtable "j": "1"=:oct"037", "2"=:oct"030";
ligtable "k": "h"=:"h";
ligtable "l": "1"=:oct"011", "j"=:oct"011";
ligtable "n": "1"=:oct"010", "j"=:oct"010";
ligtable "p": "1"=:oct"176", "2"=:oct"177";
ligtable "x": "q"=:"w", "c"=:"7";
ligtable "y": "a"=:oct"037", "u"=:oct"030";
ligtable "z": "1"=:oct"031", "h"=:oct"031";
ligtable "s": "h"=:"x",
              "m": "w": oct"012" kern -k#, oct"032" kern -k#, "c" kern -k#,
              "g" kern -k#, "i" kern -k#, "k" kern -k#, "m" kern -k#,
              "n" kern -k#, "p" kern -k#, "r" kern -k#, "v" kern -k#, "w" kern -k#,
              "x" kern -k#, "y" kern -k#, oct"176" kern -k#, oct"177" kern -k#;

bye.