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
|
% MSA symbols, bright style [1996/07/02 v1.0 (WaS)]
numeric circ_w#; %
circ_w#=2u#+body_height#+max(paren_depth#,desc_depth#);
cmchar "Yen symbol";
% Change (jk): Use correct pen for horizontal bars
compute_spread(.45x_height#, .55x_height#);
beginchar(oct"125",13u#,cap_height#,0); %% adapted from "Y"
italcorr cap_height#*slant+.45u#;
adjust_fit(cap_serif_fit#,cap_serif_fit#); numeric
left_stem,right_stem,outer_jut,dy,alpha;
left_stem=cap_stem-stem_corr; right_stem=min(cap_hair if
hefty:-2stem_corr fi,left_stem); outer_jut=.75cap_jut;
x1l=w-x4r=l+letter_fit+outer_jut+.05u;
x2l=x5l=hround(.5w-.5left_stem); x3r=x5r; y1=y4=h;
y2=y3=y5=.4h; dy=y1-y2; alpha=((x2l-x1l)++dy)/dy;
penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
penpos5(left_stem,0); penpos6(left_stem,0); x5=x6; y6=0;
z0=whatever[z1r,z2r]=whatever[z3l,z4l]; if
y0>y2+cap_notch_cut: y0:=y2+cap_notch_cut;
fill z0+.5right{up}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)--z5r
--diag_end(5r,6r,1,1,6l,5l)--z5l--diag_end(2l,1l,1,1,1r,2r){z2-z1}
...{down}z0+.5left--cycle; % diagonals and stem
else: fill z0--diag_end(0,4l,1,1,4r,3r)--z5r
--diag_end(5r,6r,1,1,6l,5l)--z5l
--diag_end(2l,1l,1,1,1r,0)--cycle; fi % diagonals & stem
if serifs: numeric inner_jut; pickup tiny.nib;
prime_points_inside(1,2); prime_points_inside(4,3);
prime_points_inside(6,5);
if rt x1'r+cap_jut+.5u+1<=lft x4'l-cap_jut:
inner_jut=cap_jut;
else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi
dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); % upper left serif
dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); % upper right serif
dish_serif(6',5,e,1/3,cap_jut,f,1/3,cap_jut); fi % lower serif
pickup pencircle scaled min(hair,vair);
x7=x9=x1l; x8=x10=x4r; y9=y10;
top y7=bar_height; y7=y8; draw z7--z8;
y9-y7=spread; draw z9--z10; % crossing bars
penlabels(0,1,2,3,4,5,6,1',2',3',4',5',6',7,8,9,10); endchar;
% the next characters have been taken from Joerg Knappen's TC fonts:
cmchar"Registered";
beginchar(oct"162",circ_w#,body_height#,max(paren_depth#,desc_depth#));
autorounded;
adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;
if .5w <> good.x .5w: change_width; fi
lft x6=hround u; x2=w-x6; top y8=h+o; bot y4=-d-o;
circle_points; draw_circle; % circle
labels(1,2,3,4,5,6,7,8);
clearxy; autorounding:=0;
numeric hh,ll,rr; hh=vround .7cap_height; ll=hround(.5w-6u);
rr=hround(.5w+6u);
pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0);
lft x1l=lft x2l=ll+hround max(2u,3u-.5cap_stem'); top y1=hh; bot y2=0;
filldraw stroke z1e--z2e; % stem
penpos3(cap_band,90); penpos4(cap_band,90);
penpos5(cap_curve if hefty:-3stem_corr fi,0);
penpos6(vair,-90); penpos7(vair,-90);
z3r=top z1; y4=y3; y5=.5[y4l,y6l]; y6=y7;
x7=x2; y7l=vround(.5hh+.5vair); x4=x6;
if serifs: x4=.5w-.5u; x5r=hround(rr-2.25u);
else: x4=.5w+.5u; x5r=hround(rr-u); fi
x4l:=x6l:=x4-.125cap_curve;
fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe
if serifs: pos6'(vair,-90); pos0(cap_stem,180);
pos8(cap_curve,180); pos9(vair,-90); pos10(hair,0);
z6'=z6; lft x0r=lft x8r=hround(x5-2/3u-.5cap_curve);
y8=1/3[y2,y7]; y0=3/5[y2,y7]; x9=.5[x8l,x10r];
bot y9r=-o; rt x10r=hround(rr-.25u); y10=1/3[y2,y7];
filldraw stroke z6'e{right}..z0e---z8e....z9e{right}..z10e{up}; % tail
nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
dish_serif(2,1,c,1/3,cap_jut,d,1/3,cap_jut); % lower serif
else: penpos8(cap_stem-2stem_corr,0); penpos9(cap_stem,0);
x8=x6+.5u; y8=y6; x9r=hround(rr-.5u); y9=0;
fill z8l--diag_end(8l,9l,.5,1,9r,8r)--z8r--cycle; fi % tail
penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar;
cmchar"circledS";
beginchar(oct"163",circ_w#,body_height#,max(paren_depth#,desc_depth#));
autorounded;
adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;
if .5w <> good.x .5w: change_width; fi
lft x6=hround u; x2=w-x6; top y8=h+o; bot y4=-d-o;
circle_points; draw_circle; % circle
labels(1,2,3,4,5,6,7,8);
clearxy; autorounding:=0;
numeric hh,ll,rr; hh=vround .7cap_height; ll=hround(.5w-5u);
rr=hround(.5w+5u);
numeric theta; theta=90-angle(50u,hh); slope:=-hh/50u; % angle at middle
numeric s_slab; s_slab=vround .2[slab,cap_stem];
numeric ess'; ess'=max(fine.breadth,cap_ess);
pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90);
pos0(ess',theta); pos7(s_slab,-90);
x2+x7=2x0=w; x7-x2=0; top y2l=hh+o; bot y7r=-o;
y0=.52hh; lft x3l=ll+hround u; rt x6r=hround(rr-u);
x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine;
ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r;
ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r;
filldraw stroke super_arc.e(2,3) & z3e{down}
..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke
pos1(1.2flare,-100); pos8(1.2flare,-100);
x1l=good.x(x1l+rr-1.75u-rt x1); lft x8r=ll+hround .8u;
top y1l=vround .93hh+o; bot y8r=vround .1hh-o;
filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal
filldraw stroke term.e(7,8,left,1,4); % lower arc and terminal
math_fit(0,.5ic#); penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10); endchar;
|