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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
%% @metafontfile{
%% filename="serbspu.mf",
%% version="2.2",
%% date="04-JAN-1995",
%% filetype="Metafont: driver",
%% copyright="Copyright (C) Humanities and Arts Computing Center,
%% University of Washington;
%% all rights reserved. Copying of this file is
%% authorized only if either:
%% (1) you make absolutely no changes to your copy
%% including name; OR
%% (2) if you do make changes, you first rename it to some
%% other name.",
%% author="American Mathematical Society",
%% address="American Mathematical Society,
%% Technical Support, Electronic Products and Services,
%% P. O. Box 6248,
%% Providence, RI 02940,
%% USA",
%% telephone="401-455-4080 or (in the USA) 800-321-4AMS",
%% email="Internet: Tech-Support@Math.AMS.org",
%% codetable="ISO/ASCII",
%% checksum = "29666 183 765 8548"
%% keywords="amsfonts, tex, metafont , cyrillic ",
%% abstract="This is the driver file for use with
%% the cyrillic fonts in AMSFonts 2.2."
%% docstring = "The checksum field above contains a CRC-16
%% checksum as the first value, followed by the
%% equivalent of the standard UNIX wc (word
%% count) utility output of lines, words, and
%% characters. This is produced by Robert
%% Solovay's checksum utility.",
%% }
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%This is serbspu.mf containing serbian and other letters with offsets
%of 8 between upper and lower case.
%spu = separate upper and lower case.
cmchar "The Ukrainian letter I";
beginchar(oct"004",max(6u#,4u#+cap_stem#),cap_height#,0);
italcorr cap_height#*slant-.25u#;
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
lft x1l=lft x2l=hround(.5w-.5cap_stem); top y1=h; bot y2=0;
filldraw stroke z1e--z2e; % stem
if serifs: dish_serif(1,2,a,1/3,1.05cap_jut,b,1/3,1.05cap_jut); % upper serif
dish_serif(2,1,c,1/3,1.05cap_jut,d,1/3,1.05cap_jut); fi % lower serif
math_fit(0,.5ic#); penlabels(1,2); endchar;
cmchar "The Serbian letter Soft DJ (looks like Th with a tail)";
beginchar(oct"006",15.5u#-width_adj#,cap_height#,0);
italcorr cap_height#*slant-beak_jut#-.25u#;
adjust_fit(0,0);
% c part
h:=x_height; w:=6.5u;
pickup fine.nib; pos2(vair',90); pos4(vair',270);
x2=x4=.5(w+u); top y2r=vround h; bot y4r=0;
pos3(curve,180); lft x3r=hround max(.6u,1.35u-.5curve); y3=.5h;
if serifs: pos1(hair,0); pos0(flare,0);
y1=min(bar_height+.5flare+2vair'+2,.9[bar_height,h]-.5flare);
rt x1r=hround(w-.7u); bulb(2,1,0); % bulb
pos5(hair,0); lft x5l=w+1.5u; %rt x5r=hround(w+1.5u);
% y5=max(good.y(.5bar_height-.9),y4l+vair');
y5=.875y3;
(x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u);
filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
& pulled_super_arc.e(3,4)(.5superpull)
& pulled_super_arc.e(4,5)(.5superpull);
% ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e; % arc and lower terminal
else: pos1(4/7[vair',flare],80);
rt x1r=hround(w-.6u); top y1r=vround .82[bar_height,top y2r];
filldraw stroke term.e(2,1,right,.8,4); % upper terminal
%pos5(.6[vair',flare],275);
pos5(.6[vair',flare],360);
lft x5l=w+1.5u; %rt x5r=hround(w-.5u);
% y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
y5=.625y3;
% forsuffixes e=l,r: path p.e; p.e=z4e{right}..tension .9 and 1..z5e;
% if angle direction 1 of p.e>75:
% p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi endfor
filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
& pulled_super_arc.e(3,4)(.5superpull)
& pulled_super_arc.e(4,5)(.5superpull); fi
%& p.e; fi % arc and lower terminal
x99=.5w; y99=.5h; flip(99);
currentpicture:=nullpicture; clearxy;
% T part
h:=vround(cap_height-2stem_corr); w:=13u;
pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
lft x1l=lft x2l=hround(.5w-.5cap_stem); top y1=h; bot y2=0;
filldraw stroke z1e--z2e; % stem
pickup crisp.nib; pos3(slab,90); pos4(hair,0);
top y3r=h; x3=x1; rt x4r=hround(w-.65u); y4=good.y(y3l-.5beak)-eps;
arm(3,4,e,beak_darkness,.7beak_jut); % right arm and beak
pos5(hair,180); x5=w-x4; y5=y4;
arm(3,5,f,beak_darkness,-.7beak_jut); % left arm and beak
if serifs: dish_serif(2,1,c,1/3,1.414cap_jut,d,1/3,cap_jut); % lower serif
nodish_serif(1,2,a,1/3,.5cap_jut,b,1/3,.325cap_jut); fi % upper bracketing
addto currentpicture also V shifted(x2r+1.5u,0);
math_fit(-.75cap_height#*slant,ic#-2.5u#); penlabels(1,2,3,4,5,6); endchar;
cmchar "The Serbian letter Soft T";
beginchar(oct"007",13u#,cap_height#,0);
italcorr cap_height#*slant-beak_jut#-.25u#;
adjust_fit(0,.75u#);
h:=vround(h-2stem_corr);
pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
lft x1l=lft x2l=hround(.5w-.5cap_stem-u); top y1=h; bot y2=0;
filldraw stroke z1e--z2e; % stem
pickup crisp.nib; pos3(slab,90); pos4(hair,0);
top y3r=h; x3=x1; rt x4r=hround(w-1.65u); y4=good.y(y3l-.5beak)-eps;
arm(3,4,e,beak_darkness,.7beak_jut); % right arm and beak
pos5(hair,180); x5=w-x4-u; y5=y4;
arm(3,5,f,beak_darkness,-.7beak_jut); % left arm and beak
if serifs: dish_serif(2,1,c,1/3,cap_jut,d,1/3,.75cap_jut); % lower serif
nodish_serif(1,2,a,1/3,.5cap_jut,b,1/3,.5cap_jut); fi % upper bracketing
pickup tiny.nib;
pos33(stem,0); x33=hround(w-2.5u+.5stem);
h_stroke(2,q,33,34);
dish_serif(34,33,g,1/3,.75cap_jut,h,1/3,.75cap_jut);
math_fit(-.75cap_height#*slant,ic#-2.5u#);
penlabels(1,2,3,4,5,6,33,34); endchar;
cmchar "The Russian letter YO (looks like E umlaut)";
beginchar(oct"023",12u#-width_adj#,cap_height#,0);
% note height not adjusted for umlaut
italcorr cap_height#*slant-beak_jut#-.5u#;
adjust_fit(cap_serif_fit#,0);
h:=vround(h-stem_corr);
pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
filldraw stroke z1e--z2e; % stem
pickup crisp.nib; pos3(slab,90); pos4(hair,0);
top y3r=h; x3=x1; rt x4r=hround(w-u); y4=good.y(y3l-beak)-eps;
arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
pos5(cap_bar,-90); pos6(hair,0);
top y5l=vround(.52[y2,y1]+.5cap_bar); x5=x1;
pos0(cap_bar,90); pos7(hair,0);
z0=z5; x6=x7; y6-y5l=y0l-y7;
if serifs: rt x6r=hround(w-4.4u+.5hair); y6=good.y(y5l+.6beak)+eps;
rt x9r=hround(w-.5u);
else: rt x6r=hround(w-1.5u); y6=y5l+eps; rt x9r=hround(w-.75u); fi
arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
pos8(slab if not serifs:+2stem_corr fi,-90); pos9(hair,0);
bot y8r=0; x8=x2; y9=good.y(y8l+7/6beak)+eps;
arm(8,9,h,beak_darkness,1.5beak_jut); % lower arm and beak
if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi % lower serif
x51=.5w; y51=h; umlaut(51,q);
math_fit(0,.5ic#); penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
cmchar "The Old Russian letter YATZ";
beginchar(oct"043",12.5u#,body_height#,0);
italcorr .75cap_height#*slant-.5u#;
adjust_fit(2u#+cap_serif_fit#,0);
numeric left_stem,right_curve,middle_weight;
left_stem=cap_stem-hround 2stem_corr; middle_weight=.6vair+.5;
pickup tiny.nib; pos1(left_stem,0); pos2(left_stem,0);
lft x1l=lft x2l=hround max(2u,3u-.5left_stem); top y1=h; bot y2=0;
filldraw stroke z1e--z2e; % stem
penpos3(cap_band,90); penpos4(cap_band,90);
penpos6(middle_weight,-90); penpos7(middle_weight,-90);
penpos8(middle_weight,90); penpos9(middle_weight,90);
penpos5(right_curve-stem_corr,0); penpos10(right_curve,0);
penpos11(cap_band,-90); penpos12(cap_band,-90);
z3r=top z1; y4=y3; y5=.5[y4,y6]; y6=y7; y7l-y8l=vair;
z12r=bot z2; y11=y12; y10=.5[y11,y9]; y8=y9; .5[y7l,y8l]=.52h;
x4=x6; x9=x11=x4+.5u; x7=x8=x1; x9l:=x4+.25u;
x5r=hround(w-1.5u); x10r=hround(w-u);
if serifs: right_curve=cap_curve-stem_corr; x4=.5[x1,w-1.5u];
else: right_curve=cap_curve-3stem_corr; x4=.5[x1,w-2.5u];
x4l:=x4l-.5u; x9l:=x9l-.5u; fi
x6l:=x6l-.5u; x11l:=x11l-.5u;
fill stroke z8e..super_arc.e(9,10) & super_arc.e(10,11)..z12e; % lower lobe
if serifs: dish_serif(1,2,a,1/3,cap_jut,b,1/3,cap_jut); % upper serif
nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi % lower serif
pos53(slab,90); pos54(hair,0);
top y53r=.85h; x53=x1; rt x54r=hround(w-2.65u); y54=good.y(y53l-.5beak)-eps;
arm(53,54,m,beak_darkness,.7beak_jut); % right arm and beak
pos55(hair,180); x55=w-x54-4u; y55=y54;
arm(53,55,p,beak_darkness,-.7beak_jut); % left arm and beak
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;
|