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

% Edited by Ariel Barton to produce better sans serif symbols

% Date: 2013/04/21

% Caps and Small Caps in Computer Modern Roman

font_coding_scheme:="The letters I, i, Pi, Xi";
spanish_shriek=oct"016"; spanish_query=oct"017";

mode_setup; font_setup;
cmchar "The letter I"; % Added serifs
beginchar("I",
	if known I_cap_jut: (cap_stem#+2I_cap_jut#+2u#),
	else: max(6u#,4u#+cap_stem#), fi
	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
if known I_cap_jut: if I_cap_jut > 0:
	pos3(slab,90); pos4(slab,90);
	rt x4r=(w-u); x3=w-x4;
	top y4r = top y3r = h;
	filldraw stroke z4e--z3e;
	pos5(slab,90); pos6(slab,90);
	x5=x3; x6=x4; y5=y6; bot y5l=0;
	filldraw stroke z5e--z6e;
fi fi
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6); endchar;

cmchar "Uppercase Greek Pi";
beginchar(oct"005",13u#+width_adj#,cap_height#,0);
italcorr 
	if hefty: cap_height#*slant
	else: cap_height#*slant-cap_serif_fit#+I_cap_jut#-2.5u#+min(.5cap_stem#,u#) fi;
adjust_fit(cap_serif_fit#,cap_serif_fit#); pickup tiny.nib;
h:=vround(h-stem_corr);
pos1(cap_stem,0); pos2(cap_stem,0); pos3(cap_stem,0); pos4(cap_stem,0);
lft x1l=lft x2l=hround if hefty: u+I_cap_jut else: max(2u,3u-.5cap_stem) fi; 
x3=x4=w-x1;
top y1=top y3=h; bot y2=bot y4=0;
filldraw stroke z1e--z2e; % left stem
filldraw stroke z3e--z4e; % right stem
penpos5(cap_bar,90); penpos6(cap_bar,90);
x5=x1; x6=x3; y5r=y6r=h;
fill stroke z5e--z6e;  % bar
if serifs: numeric inner_jut;
 if rt x1r+cap_jut+.5u+1<=lft x3l-cap_jut: inner_jut=cap_jut;
 else: rt x1r+inner_jut+.5u+1=lft x3l-inner_jut; fi
 nodish_serif(1,2,a,1/3,cap_jut,b,1/3,eps);  % upper left serif
 dish_serif(2,1,c,1/3,cap_jut,d,1/3,inner_jut); % lower left serif
 nodish_serif(3,4,e,1/3,eps,f,1/3,cap_jut);  % upper right serif
 dish_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut);  % lower right serif
else:
 nodish_serif(1,2,a,1/3,I_cap_jut,b,1/3,eps);  % upper left serif
 nodish_serif(3,4,e,1/3,eps,f,1/3,I_cap_jut);  % upper right serif
fi
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6); endchar;

cmchar "Uppercase Greek Xi";
beginchar(oct"004",12u#,cap_height#,0);
italcorr cap_height#*slant-.35u#;
adjust_fit(0,0);
h:=vround(h-2stem_corr);
numeric shaved_stem; shaved_stem=hround .9[vair,.85cap_stem];
if shaved_stem<crisp.breadth: shaved_stem:=crisp.breadth; fi
pickup crisp.nib; pos1(shaved_stem,90); pos2(if hefty: vair else: hair fi,0);
top y1r=h; x1=.5w; rt x2r=hround(w-.85u); y2=good.y(y1l-4/9I_beak)-eps;
pos3(if hefty: vair else: hair fi,180); x3=w-x2; y3=y2;
pos4(shaved_stem,-90); pos5(if hefty: vair else: hair fi,0);
bot y4r=0; x4=.5w; rt x5r=hround(w-.75u); y5=good.y(y4l+.5I_beak)+eps;
pos6(if hefty: vair else: hair fi,180); x6=w-x5; y6=y5;
begingroup save serifs; boolean serifs; serifs = true;
arm(1,2,a,.4beak_darkness,.3 beak_jut);  % upper right arm and beak
arm(1,3,b,.4beak_darkness,-.3 beak_jut);  % upper left arm and beak
arm(4,5,c,.4beak_darkness,.3beak_jut);  % lower right arm and beak
arm(4,6,d,.4beak_darkness,-.3beak_jut);  % lower left arm and beak
endgroup;
pos7(shaved_stem,90); pos8(shaved_stem,90);
lft x7=w-rt x8=hround if serifs: 2.5 else: 2 fi\\ u;
top y7r=top y8r=vround(.52h+.5shaved_stem);
filldraw stroke z7e--z8e;  % middle bar
if serifs: numeric xjut;
 if bot y2>top y7r+.75cap_jut: xjut=.5cap_jut;
 else: bot y2=top y7r+1.5xjut; fi
 pos11(hair,0); pos12(hair,0); y11=y12;
 pos13(hair,0); pos14(hair,0); y13=y14;
 lft x11l=lft x13l=w-rt x12r=w-rt x14r=hround 2.5u;
 top y11-bot y13=shaved_stem+2xjut; .5[y11,y13]=y7;
 filldraw stroke z11e--z13e; filldraw stroke z12e--z14e; fi  % middle serifs
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,11,12,13,14); endchar;

font_slant slant; font_x_height x_height#;
if monospace: font_normal_space 9u#; % no stretching or shrinking
 font_quad 18u#;
 font_extra_space 9u#;
else: font_normal_space 6u#+2letter_fit#;
 font_normal_stretch 3u#; font_normal_shrink 2u#;
 font_quad 18u#+4letter_fit#;
 font_extra_space 2u#;
 k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
 ligtable "I": "I" kern -k#; fi % Richard III
% ligature programs for |"-"|, |"`"|, and |"'"| are in the {\tt comlig} file

%%% fine lower
forsuffixes $= u, width_adj, cap_serif_fit, letter_fit,
 body_height, cap_height, x_height, bar_height, comma_depth,
 flare, cap_hair, stem, cap_stem, cap_curve, cap_ess,
 cap_jut, beak_jut, beak, slab, cap_bar, cap_band, cap_notch_cut,
 o, apex_o, I_cap_jut, I_beak:  $.#:=lower.$.#; endfor
fudge:=lower.fudge;
font_setup; % now try again with |lower| settings

cmchar "The letter I"; % Added serifs
beginchar("i",
	if known I_cap_jut: (cap_stem#+2I_cap_jut#+2u#),
	else: max(6u#,4u#+cap_stem#), fi
	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
if known I_cap_jut: if I_cap_jut > 0:
	pos3(slab,90); pos4(slab,90);
	rt x4r=(w-u); x3=w-x4;
	top y4r = top y3r = h;
	filldraw stroke z4e--z3e;
	pos5(slab,90); pos6(slab,90);
	x5=x3; x6=x4; y5=y6; bot y5l=0;
	filldraw stroke z5e--z6e;
fi fi
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6); endchar;


if not monospace:
 k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
 ligtable "i": "i" kern -k#; fi % skiing
bye.