summaryrefslogtreecommitdiff
path: root/fonts/cm/mf/tsetsl.mf
blob: 74850bc45ae0b4d392344dda0c699b38d00348f7 (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
% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE tsetsl.mf BY D E KNUTH.
% IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED!

% Special slanted characters for ``extended ASCII character set'' fonts

% These characters were copied from {\tt greekl.mf} and {\tt italms.mf}
% with character positions changed and italic corrections added to the width.

% Codes \0002--\0003, \0007--\0012, and \0017 are generated.

cmchar "Lowercase Greek alpha for extended ASCII";
beginchar(oct"002",11u#,x_height#,0);
italcorr max(1/3x_height#*slant+.5hair#+.5u#,x_height#*slant-.5u#);
adjust_fit(0,ic#); pickup fine.nib;
pos0(hair,0); pos1(vair,-90); pos2(curve,-180); pos3(vair,-270);
z4=(w-3.25u,9/16h); z5=(w-2.75u,.5[vair,y4]);
numeric theta; theta=angle(z4-z5)-90;
pos4(stem,theta); pos5(stem,theta);
pos6(vair,90); pos7(hair,180);
rt x0r=hround(w-u); x1=x3=.5w-u; lft x2r=hround(1.5u-.5curve);
x6=w-u; x7+.5hair=hround(w+.5hair-eps);
top y0=vround .8[bar_height,h]; bot y1r=bot y6l=-oo;
y2=.5[y1,y3]; top y3r=h+oo; y7=1/4bar_height;
filldraw stroke z0e{down}...pulled_arc.e(1,2) & pulled_arc.e(2,3)
 ...z4e---z5e...z6e{right}...{up}z7e; % diagonal, bowl, and hook
penlabels(0,1,2,3,4,5,6,7); endchar;

cmchar "Lowercase Greek beta for extended ASCII";
beginchar(oct"003",9.5u#,asc_height#,desc_depth#);
italcorr .5[x_height#,asc_height#]*slant-u#;
adjust_fit(0,ic#); pickup fine.nib;
pos0(hair,180); pos1(hair,180); pos2(vair,90);
pos3(.8[hair,stem],0); pos4(vair,-90); pos5(hair,-180);
pos6(vair,-270); pos7(stem,-360); pos8(vair,-450); pos9(hair,-540);
x0=x1=x9; lft x0l=hround(1.5u-.5hair); x2=x4=x6=x8=.5w-.25u;
rt x3r=hround(w-1.75u); rt x7r=hround(w-u); rt x5l=hround(x4-u);
bot y0=-d; y1=top y6r=x_height; top y2r=h+oo; y3=.5[y2,y4];
y5=.5[y4,y6]; top y6r-bot y4r=vstem+eps; bot y8=-oo; y7=y9=.55[y6,y8];
if y6l<y4l: y6l:=y4l:=y5; fi
filldraw stroke z0e---z1e...pulled_arc.e(2,3)
 & pulled_arc.e(3,4)...{up}z5e;  % stem and upper bowl
filldraw stroke z5e{up}...pulled_arc.e(6,7)
 & pulled_arc.e(7,8)...{up}z9e;  % lower bowl
penlabels(0,1,2,3,4,5,6,7,8,9); endchar;

cmchar "Lowercase Greek pi for extended ASCII";
beginchar(oct"007",10u#,x_height#,0);
italcorr x_height#*slant+.5stem#-u#;
adjust_fit(0,ic#); pi_stroke; % hook and bar
pos4(hair,0); pos6(hair,0); x4=3.5u; x6=w-4u; y4=y6=y2;
x5=3u; x7=w-2.5u; y5=y7=.5stem-oo;
pair v[]; v1=(z4-z5) xscaled 3.14159; v2=(z6-z7) xscaled 3.14159;
pos5(stem,angle v1-90); pos7(stem,angle v2-90);
filldraw circ_stroke z5e{v1}...{up}z4e;  % left stem
filldraw circ_stroke z7e{v2}...{up}z6e;  % right stem
penlabels(1,2,3,4,5,6,7); endchar;

cmchar "Lowercase Greek lambda for extended ASCII";
beginchar(oct"010",10.5u#,asc_height#,0);
adjust_fit(0,0); pickup fine.nib;
pos1(vair,90); lft x1=hround .1u; top y1r=h;
x2=x1+2u; y2=.7[x_height,h]; x3=w-2u; bot y4=-oo; y3=max(.07h,y4+eps);
z4-(.25u,0)=whatever[z2,z3]; numeric theta; theta=angle(z2-z3)-90;
pos2(stem,theta); pos3(stem,theta); pos4(stem,0);
filldraw circ_stroke z1e{right}...z2e---z3e
 ...{2(x4e-x3e),y4e-y3e}z4e;  % long diagonal
y5=.5[bar_height,x_height]; z5=whatever[z2,z3];
x6=1.5u; y6-.5stem=-oo; pos5(hair,theta-90); pos6(stem,angle(z5-z6)-90);
filldraw circ_stroke z6e--z5e; % short diagonal
penlabels(1,2,3,4,5,6); endchar;

cmchar "Lowercase Greek gamma for extended ASCII";
beginchar(oct"011",10u#,x_height#,desc_depth#);
italcorr x_height#*slant-.5u#;
adjust_fit(0,ic#); pickup fine.nib;
pos1(hair,180); pos2(vstem+dw,90);
pos4(hair,0); pos5(vair,-90); pos6(hair,-180); pos7(hair,-180);
bot y1=.5772156649h; top y2r=h+oo; y4=y6=-.5d;
bot y5r=-d-o; top y7=h;
lft x1r=hround(.5u-.5hair); x2=3u; rt x4r=hround(w-2u); x5=.5[x4,x6];
rt x4r-lft x6r=hround 1/3[hair,stem]+eps; rt x7l=hround(w-u);
if x4l<x6l: x4l:=x6l:=x5; fi
pos3(hair,angle(z4-z2)+90); x3=superness[x2,x4]; y3=superness[y4,y2];
filldraw stroke z1e{up}...z2e{right}...z3e{z4-z2}
 ...z4e{down}...{left}z5e; % arc
filldraw stroke z5e{left}...z6e{up}..{2(x7-x6),y7-y6}z7e;  % stem
penlabels(1,2,3,4,5,6,7); endchar;

cmchar "Lowercase Greek delta for extended ASCII";
beginchar(oct"012",8u#,asc_height#,0);
italcorr .9asc_height#*slant+.5hair#-1.5u#;
adjust_fit(0,ic#); pickup fine.nib;
x0=-u; y0=1.05h;
numeric light_flare; light_flare=2/3[vair,flare];
x1=w-2u-.5light_flare; y1=h-.5light_flare;
numeric theta; theta=angle (z1-z0);
pos1(light_flare,theta-90); pos2(.2[vair,light_flare],-90); pos3(vair,theta);
x2=x3+u; y2=h;
x4=x6=.5w+.5u; top y8r=x_height+oo; z4=z8;
pos6(vair,-90); pos7(stem,-180); pos8(vair,-270);
pos4(stem,angle(z4-z0)+90); pos5(stem,30);
z3=.5[.5[z1,z4],z0];
y5+.1x_height=y7=.5[y6,y8]; bot y6=-oo;
lft x7r=hround(1.4u-.5stem); rt x5r=hround(w-u);
filldraw stroke z1e{z0-z1e}....z2e....z3e{(z0-z1)rotated 90}
 ...z4e{z4e-.8[z4,z0]}
 ....z5e{down}...pulled_arc.e(6,7) & pulled_arc.e(7,8);  % hook and bowl
filldraw z1r{z1r-z0}...z1l{z0-z1l}--cycle; % bulb
penlabels(0,1,2,3,4,5,6,7,8); endchar;

cmchar "Partial differential sign for extended ASCII";
beginchar(oct"017",10u#,asc_height#,0);
italcorr .7asc_height#*slant+.5curve#-1.5u#;
adjust_fit(0,ic#);
numeric top_thickness,bot_thickness,side_thickness,pull;
top_thickness=max(fine.breadth,vround(slab-2vair_corr));
bot_thickness=max(fine.breadth,vround(slab-vair_corr));
side_thickness=max(fine.breadth,hround 1/3[curve,cap_curve]);
pull=min(.25,1.5superpull);
pickup fine.nib; pos2(top_thickness,90);
pos3(side_thickness,0); pos4(bot_thickness,-90);
pos5(side_thickness,-180); pos6(vair,-270);
lft x5r=w-rt x3r=hround max(.75u,1.5u-.5side_thickness);
x4=x6+.1u=x2+u=.5w;
top y2r=h+o; y3=.5[y2,y4]; bot y4r=-o;
y5=.5[y4,y6]; top y6=vround 5/8h+o;
path p; {{interim superness:=more_super; p=pulled_super_arc.l(3,4)(pull)}};
numeric t; t=xpart(p intersectiontimes((x3r,y5)--(x4,y5)));
pos7(thin_join,0); z7l=point t of p;
(x,y6r)=whatever[z7l,z6l]; x6r:=max(x,.5[x5r,x6]);
filldraw stroke pulled_super_arc.e(2,3)(pull)
 & {{interim superness:=more_super; pulled_super_arc.e(3,4)(pull)}}
 & {{less_tense; pulled_super_arc.e(4,5)(pull) & pulled_super_arc.e(5,6)(pull)}}
 & z6e{right}...{direction t of p}z7e;  % arc and bowl
pos1(hair,180); pos0(flare,180);
lft x0r=min(lft x2-eps,hround 1.2u);
y0=vround min(.85h-.5flare,.8h+.5flare)+o;
{{less_tense; bulb(2,1,0)}};  % arc and bulb
math_fit(-.3x_height#*slant+.5curve#-u#,ic#-u#);
penlabels(0,1,2,3,4,5,6,7); endchar;