summaryrefslogtreecommitdiff
path: root/fonts/sansmathfonts/source/sans-slantms.mf
blob: 608680e1fc4fe204f6758e94bafc0ee5b5d76020 (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
% Based on the Computer Modern source file slantms.mf by D E Knuth.

% Edited by Ariel Barton to produce better sans serif symbols

% Date: 2013/03/22

% This file contains miscellaneous symbols of math slant fonts.
% The character codes are \0100, \0140, and \0173--\0177.

cmchar "Partial differential sign";
beginchar(oct"100",10u#,asc_height#,0);
italcorr .7asc_height#*slant+.5curve#-1.5u#;
adjust_fit(0,0);
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;
x4=x6+.1u=.5w;
x2+if serifs: u else: 0.9u fi=.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;
if serifs: {{less_tense; bulb(2,1,0)}};  % arc and bulb
	else: filldraw stroke z0e{z0-z5}..z2e{right}; fi
math_fit(-.3x_height#*slant+.5curve#-u#,ic#-u#);
penlabels(0,1,2,3,4,5,6,7); endchar;

cmchar "Lowercase italic script l";
beginchar(oct"140",4.5u#+max(1.5u#,stem#),asc_height#,0);
italcorr .8asc_height#*slant-u#;
adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib;
pos1(hair,-45); 
if hefty: pos2(0.5[vair,hair],0); else: pos2(hair,0); fi 
pos3(vair,90);
pos4(stem,180); pos5(vair,270); pos6(hair,315);
lft x1l=hround(lft x1l-x1); rt x2r=hround(w-1.5u); x3=.5w;
lft x4r=hround .5u; x5=x3+.75u; x6=x1+w+1;
y1=y6=.125h; y2=.8h; top y3r=h+oo; y4=.5[y3,y5]; bot y5=-oo;
filldraw stroke z1e{10u,asc_height}...z2e{up}...pulled_arc.e(3,4)
 & pulled_arc.e(4,5)...z6e{10u,asc_height};  % bowl and hook
math_fit(0,ic#); penlabels(1,2,3,4,5,6); endchar;

% Dotless i and j are copied from romspl.mf
% except that the math_fit has been added
% and of course they are at different positions

cmchar "Dotless letter i";
beginchar(oct"173",5u#,x_height#,0);
italcorr x_height#*slant-serif_fit#+.5stem#-2u#;
adjust_fit(serif_fit#+stem_shift# if monospace:+.25u#fi,serif_fit#-stem_shift#);
pickup tiny.nib; pos1(stem',0); pos2(stem',0);
if odd(w-stem'): change_width; fi
lft x1l=hround(.5w-.5stem'); x1=x2;
top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=0;
filldraw stroke z1e--z2e;  % stem
if serifs: sloped_serif.l(1,2,a,1/3,.95jut,serif_drop);  % upper serif
 dish_serif(2,1,b,1/3,jut,c,1/3,.9jut); fi  % lower serif
math_fit(0,ic#); % What does this mean?
penlabels(1,2); endchar;

cmchar "Dotless letter j";
beginchar(oct"174",5.5u#,x_height#,desc_depth#);
italcorr x_height#*slant-serif_fit#+.5stem#-2u#;
adjust_fit(serif_fit#+2stem_shift# if monospace:+.5u# fi,
 serif_fit#-2stem_shift# if monospace:-.5u# fi);
pickup tiny.nib; pos1(stem',0); pos2(stem',0);
rt x1r=hround(.5w+.25u+.5stem'); x1=x2;
top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=-1/3d;
filldraw stroke z1e--z2e;  % stem
if serifs: sloped_serif.l(1,2,a,1/3,1.1jut,serif_drop);  % upper serif
 pickup tiny.nib; pos5(vair,-90); pos6(hair,-180); pos7(flare,-180);
 x5=.5[x2,x6r]; bot y5r=-d-oo; y6-.5flare=-.88d;
 if monospace: lft x6r=0 else: z6r=z7r; rt x7l=floor .75u fi;
 (x,y5r)=whatever[z5l,z2l]; x5r:=max(x,.5[x6r,x5]);
 filldraw stroke z2e{down}...z5e{left};  bulb(5,6,7); % arc and bulb
else: pickup fine.nib; pos2'(stem',0); z2'=z2;
 pos6(.2[vair,stem'],-90); pos7(vair,-90);
 lft x7r=hround -.75u; bot y7r=vround 5/6(-d-oo);
 x3r=x1r; top y4r=min(2x_height,h+1);
 (x,y7l)=whatever[z7r,(x1,min(h,asc_height))]; x7l:=x;
 z5r=z2'r; (x2'l,y5l)=whatever[z7l,z5r]; x5l=x2'l; y5=y5r;
 x6r=.5[x7r,x5r]; x6l:=.5[x7l,x5l]; bot y6r=-d-oo;
 filldraw stroke z2'e..{down}z5e & super_arc.e(5,6)
  & term.e(6,7,left,1,4); fi  % arc and terminal
math_fit(desc_depth#*slant,ic#); penlabels(1,2,5,6,7); endchar;

cmchar "Weierstrass p";
beginchar(oct"175",if hefty: 11.5u# else: 11u# fi,x_height#,desc_depth#);
italcorr .7x_height#*slant+.5stem#-u# if math_fitting:-.5u# fi;
adjust_fit(0,0); pickup fine.nib;
numeric midpoint; midpoint = w-5.5u;
numeric theta; theta=90-angle(8u,h); slope:=-h/8u;  % angle at middle
if serifs: pos2(vair,-90); else: pos2(vair,0); fi
pos1(vstem,theta); pos7(vair,-90);
if serifs: top y2l=h+o; else: y2l = h; fi
bot y7r=-d-o; y1=.4[-d,h];
x2+.5u=3u;
x1=x7-.5u=w-8u;
lft x3l=hround .5u; rt x6r=hround max(rt x7+.5,midpoint-.25u);
x3r-x3l=x6r-x6l=(hround .5[vair,vstem])-fine;
ellipse_set(2l,3l,4l,1l); ellipse_set(2r,3r,4r,1r); y3=y3r;
ellipse_set(7l,6l,5l,1l); ellipse_set(7r,6r,5r,1r); y6=y6r;
filldraw stroke 
	if serifs: super_arc.e(2,3) & z3e{down}
	else: z2e..z3e{down} fi
 ..z4e---z5e..z6e{down} & super_arc.e(6,7);  % flourish
pos8(hair,180); pos9(vair,90); pos10(stem,0);
pos11(vair,-90); pos12(hair,-180); 
if hefty: pos13(vair,-180);
else: pos13(.3[hair,flare],-180);
fi
rt x10r=hround(w-1.5u+.5stem); lft x12r=hround(midpoint-.5u);
rt x8l=hround (midpoint-3.25u); 
x9=x11=max(x12l+eps,midpoint+1.5u);
y8=0; top y9r=vround(.9h+o); y10=.5[y9,y11]; bot y11r=-oo;
filldraw stroke z7e{left}...z8e{up}...pulled_arc.e(9,10)
 & pulled_arc.e(10,11);  % stem and bowl
y13-.5(.6[hair,flare])=.15h; 
if serifs: bulb(11,12,13);  % bulb
else: z13r = z12r; filldraw stroke z11e{left}..z13e{up}; fi
math_fit(0,ic#); penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;

cmchar "Arrow (vector) accent";
beginchar(oct"176",9u#,asc_height#+.5rule_thickness#,0);
italcorr .7[x_height#,asc_height#]*slant;
adjust_fit(0,0); pickup rule.nib;
lft x1=hround .5u; x2=w-x1; y1=y2=good.y .7[x_height,asc_height];
draw z1--z2;  % bar
rt x3=rt x4=hround(x2-u);
y3=y2+.3(asc_height-x_height); y4=y2-.3(asc_height-x_height);
draw z3{x2-x3,2(y2-y3)}...{2(x2-x3),y2-y3}z2;  % upper point
draw z4{x2-x4,2(y2-y4)}...{2(x2-x4),y2-y4}z2;  % lower point
labels(1,2,3,4); endchar;

cmchar "Tie accent";
beginchar(oct"177",5u#,asc_height#,0);
italcorr 4/9[x_height#,asc_height#]*slant+4.5u#+2letter_fit#+.5hair#;
adjust_fit(if monospace:2u#,2u# else:serif_fit#,serif_fit# fi);
pickup fine.nib; pos1(hair,180); pos2(vround 1/5[vair,stem],90); pos3(hair,0);
lft x1r=hround(.5w-.5hair); x2=.5[x1,x3];
rt x3r=hround(w+4u+2letter_fit+.5hair);
y1=y3=4/9[x_height,asc_height]; top y2r=vround 8/9[x_height,asc_height];
filldraw stroke super_arc.e(1,2) & super_arc.e(2,3);  % arc
penlabels(1,2,3); endchar;