summaryrefslogtreecommitdiff
path: root/obsolete/fonts/wasy/lasychr.mf
blob: f68c97ee76d1d0762180592f3a92a733642f5f68 (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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
cmchar "Square subset sign";
compute_spread(5/4x_height#,3/2x_height#); % the spread of `$=$'
beginchar(hex"3C",14u#,v_center(spread#+rule_thickness#));
adjust_fit(0,0); pickup rule.nib;
lft x2=hround(1.5u+oo); x1=x4=hround(w-1.5u)+eps; x3=x2;
y1-y4=spread; y2=y1; y3=y4; y1=math_axis+.5spread;
draw z1--z2--z3--z4;  % bars and stem
labels(1,2,3,4); endchar;
 
% This character is an alteration of the square subset or equal to sign
% Changes:
%   1) changed position of y1 to be .5 of the spread above the math_axis
%   2) got rid of lower bar (points z8/z9,etc) and the extra spread#' amount
%      which was used in calculations for the lower bar
%   3) name and code number and height changed, otherwise essentially the same
 
cmchar "Square superset sign";
compute_spread(5/4x_height#,3/2x_height#); % the spread of `$=$'
beginchar(hex"3D",14u#,v_center(spread#+rule_thickness#));
adjust_fit(0,0); pickup rule.nib;
x1=x4=hround 1.5u-eps; rt x2=hround(w-1.5u-oo); x3=x2;
y1-y4=spread; y2=y1; y3=y4; y1=math_axis+.5spread;
draw z1--z2--z3--z4;  % bars and stem
labels(1,2,3,4); endchar;
 
% This character is an alteration of the square superset or equal to sign
% Changes:
%   1) changed position of y1 to be .5 of the spread above the math_axis
%   2) got rid of lower bar (points z8/z9,etc) and the extra spread#' amount
%      which was used in calculations for the lower bar
%   3) name and code number and height changed, otherwise essentially the same
 
cmchar "Diamond";
%beginchar(oct"063",2(.85asc_height#-math_axis#)+2u#,v_center(7u#));
beginchar(hex"33",2(.85asc_height#-math_axis#)+2u#,
          v_center(2(.85asc_height#-math_axis#)));
italcorr math_axis#*slant;
adjust_fit(0,0); pickup rule.nib;
numeric a; a=.85asc_height-math_axis;
x4=x8=good.x .5w; w:=r:=2x4; rt x2=w-lft x6=good.x(x4+a);
y2=y6=.5[y4,y8]=.5cap_height; top y8=good.y(y2+a);
draw z2--z4--z6--z8--cycle;
labels(2,4,6,8); endchar;
 
% This character is an alteration of the diamond operator
% The four tips are equidistant from the center point (.5w,math_axis),
%    this distance being half of the cap height
%    and related to that in the square character
%    slightly less though, since it looks too big if the actually have same
%    length
% Changes:
%   1) To the amount a, which gives the distance of the tips from the center
%   2) The width is related to the asc_height, so it changes with it
%   3) name and code number and width changed, otherwise essentially the same
%      The numbers stay the same, for any referencing
 
cmchar "Bowtie operator";
beginchar(hex"31",13u#,v_center(7u#));
italcorr math_axis#*slant;
adjust_fit(0,0); pickup rule.nib;
numeric a; a=round(1.1*math_axis);
x1=x4=good.x 1.5u; x2=x3=w-x1;
y1=y2=good.y(.5(cap_height-2a)); y3=y4=y1+2a;
draw z1--z3--z2--z4--cycle;
labels(1,2,3,4); endchar;
 
% Arbitrary width given
% Length of the bars at the edges are 2.2*math_axis length
%   and it's vertically aligned on the high, i.e., .5 cap height as opposed
%   to being aligned on the math axis
 
 
 
 
cmchar "Leads to character extension";
compute_spread(.45x_height#,.55x_height#);
beginchar(hex"3A",12u#,v_center(spread#+rule_thickness#));
adjust_fit(0,0); pickup rule.nib;
numeric a; a=round(.45math_axis);
y11=y13=y15=math_axis; y12-a=y14+a=good.y math_axis;
x11=0; x15=w; x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15];
path p; p=z12{right}...z13...z14{right};
draw z11{dir(-angle direction 1 of p)}...z12{right}...z13...
     z14{right}...z15{dir(-angle direction 1 of p)};
penlabels(11,12,13,14,15); endchar;
 
% This character is an extension to fit with the Leads to character with
%   arrowhead
% This character goes from edge to edge and a series of these can be linked
%   as desired.
% It has 2/3 the width of that character, and if this relation is kept, the
%   the curves should all match
 
 
 
cmchar "Leads to character with arrowhead";
compute_spread(.45x_height#,.55x_height#);
beginchar(hex"3B",18u#,v_center(spread#+rule_thickness#));
adjust_fit(0,0); pickup crisp.nib;
pos3(bar,0); pos4(bar,0);
y0=math_axis; rt x0=hround(w-u);
y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
z9=.381966[.5[z3,z4],z0];
numeric t[]; path p[];
(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r);
z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r);
filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r)
 --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle;
  % arrowhead
pickup rule.nib;
numeric a; a=round(.45math_axis);
y11=y13=y15=y16=y0; y12-a=y14+a=good.y math_axis;
%x11=0; x15=2/3w; z17=lft z10;
%x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15]; x16=.3[x15,x0];
x11=0; x15=0.7w; z17=lft z10;
x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15]; x16=.5[x15,x0];
path p; p=z12{right}...z13...z14{right};
draw z11{dir(-angle direction 1 of p)}...
       z12{right}...z13...z14{right}...z16{right}...z17;
penlabels(0,3,4,5,6,9,10,11,12,13,14,15,16); endchar;
 
% This character uses the rightward arrow arrowhead
% The width is the same as that of the regular arrow
% An extension character can be added for longer squiggles
 
 
cmchar "LASY \lhd triangle";
compute_spread(5/4x_height#,3/2x_height#);
beginchar(44,14u#,v_center(spread#+rule_thickness#));
italcorr h#*slant-u#;
adjust_fit(0,0); pickup rule.nib;
lft x2=hround 1.5u-eps; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
draw z1--z2--z3--cycle;  % triangle
labels(1,2,3); endchar;
 
% taken directly from CMR "less than" character
% the path was closed to make a triangle
 
cmchar "black LASY \lhd triangle";
compute_spread(5/4x_height#,3/2x_height#);
beginchar(16,14u#,v_center(spread#+rule_thickness#));
italcorr h#*slant-u#;
adjust_fit(0,0); pickup crisp.nib;
lft x2=hround 1.5u-eps; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
filldraw z1--z2--z3--cycle;  % triangle
labels(1,2,3); endchar;
 
 
cmchar "LASY \unlhd triangle";
compute_spread(.45x_height#,.55x_height#);
spread#':=spread#; spread':=spread; % the spread of `$=$'
compute_spread(5/4x_height#,3/2x_height#);
beginchar(45,14u#,v_center(spread#'+spread#+rule_thickness#));
italcorr h#*slant-u#;
adjust_fit(0,0); pickup rule.nib;
lft x2=hround 1.5u-eps; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]; top y1=h;
draw z1--z2--z3--cycle;  % triangle
x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9;  % bar
labels(1,2,3,8,9); endchar;
 
% taken directly from CMR "less than or equal to sign"
% the "less than" path was closed to make a triangle
 
 
 
cmchar "LASY \rhd triangle";
compute_spread(5/4x_height#,3/2x_height#);
beginchar(46,14u#,v_center(spread#+rule_thickness#));
italcorr math_axis#*slant-u#;
adjust_fit(0,0); pickup rule.nib;
rt x2=hround(w-1.5u)+eps; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
draw z1--z2--z3--cycle;  % triangle
labels(1,2,3); endchar;
 
% taken directly from CMR "greater than" character
% the path was closed to make a triangle
 
cmchar "black LASY \rhd triangle";
compute_spread(5/4x_height#,3/2x_height#);
beginchar(17,14u#,v_center(spread#+rule_thickness#));
italcorr math_axis#*slant-u#;
adjust_fit(0,0); pickup crisp.nib;
rt x2=hround(w-1.5u)+eps; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
filldraw z1--z2--z3--cycle;  % triangle
labels(1,2,3); endchar;
 
cmchar "LASY \unrhd triangle";
compute_spread(.45x_height#,.55x_height#);
spread#':=spread#; spread':=spread; % the spread of `$=$'
compute_spread(5/4x_height#,3/2x_height#);
beginchar(47,14u#,v_center(spread#'+spread#+rule_thickness#));
italcorr h#*slant-u#;
adjust_fit(0,0); pickup rule.nib;
lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
y1-y3=spread; y2=.5[y1,y3]; top y1=h;
draw z1--z2--z3--cycle;  % triangle
x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9;  % bar
labels(1,2,3,8,9); endchar;
 
% taken directly from CMR "greater than or equal to sign"
% the "greater than" path was closed to make a triangle
 
cmchar "upwards pointing black triangle";
compute_spread(5/4x_height#,3/2x_height#);
beginchar(hex"4B",spread#+rule_thickness#,v_center(11u#));
italcorr 0;
adjust_fit(0,0); pickup crisp.nib;
top y2= h+eps; y1=y3; y2-y1 = vround (h+d);
x1-x3=spread; x2=.5[x1,x3]=good.x .5w;
filldraw z1--z2--z3--cycle;  % triangle
labels(1,2,3); endchar;
 
cmchar "downwards pointing black triangle";
compute_spread(5/4x_height#,3/2x_height#);
beginchar(hex"4C",spread#+rule_thickness#,v_center(11u#));
italcorr 0;
adjust_fit(0,0); pickup crisp.nib;
bot y2= (-d)-eps; y1=y3; y1-y2 = vround (h+d);
x1-x3=spread; x2=.5[x1,x3]=good.x .5w;
filldraw z1--z2--z3--cycle;  % triangle
labels(1,2,3); endchar;