summaryrefslogtreecommitdiff
path: root/fonts/amsfonts/source/cyrcsc.mf
blob: 2ba3cf1ae745982cd7c2d63a8943ca866cad23b2 (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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
%% filename: cyrcsc.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; cyrflht=4slab;

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

% now input for lowercase of common shapes
input cyrilu;  % majuscules (in lowercase positions)
input cyrspu;  % 'special' uppers not special in small caps

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

code_offset:=0;
cmchar "The letter smallcap dotless I";
beginchar(oct"75",14u#+width_adj#,cap_height#+3dot_size#,0);
italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
adjust_fit(cap_serif_fit#,cap_serif_fit#); h:=cap_height;
pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
pos3(cap_stem,0); pos4(cap_stem,0);
lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); x3=x4=w-x1;
top y1=top y3=h; bot y2=bot y4=0;
filldraw stroke z1e--z2e; % left stem
filldraw stroke z3e--z4e; % right stem
if serifs: penpos5(.85cap_stem,90); penpos6(.85cap_stem,90); 
else: penpos5(cap_stem,90); penpos6(cap_stem,90); fi
x5=x1r; x6=x3l; if serifs: y5=.1h; y6=.9h; else: bot y5l=0; top y6r=h; fi
fill stroke z5e--z6e;  % bar
if serifs: numeric inner_jut;
 if rt x1r+cap_jut+.5u+1<=lft x3l-cap_jut: inner_jut=cap_jut;
 else: rt x1r+inner_jut+.5u+1=lft x3l-inner_jut; fi
 dish_serif(1,2,a,1/3,cap_jut,b,1/3,inner_jut);  % upper left serif
 dish_serif(2,1,c,1/3,cap_jut,d,1/3,inner_jut); % lower left serif
 dish_serif(3,4,e,1/3,inner_jut,f,1/3,cap_jut);  % upper left serif
 dish_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut); fi  % lower left serif
x51=.5w; y51=h; h:=body_height+2dot_size; nucyrbrev(51,q);
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6); endchar;



 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#, "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 kkk#, ";" 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"034": "g": "u": oct"035" kern k#,
          "a" kern k#, "d" kern k#, "f" kern k#,
          "l" kern k#, "o" 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";
% following kerns seem not to actually work out
%         "b": "o": "r": "f": "o" kern -k#, "f" kern -k#, "e" kern -k#,
%          "c" kern -k#, "h" 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.