1
% tipapnct.mf: TIPA punctuation marks
2
% Copyright 1996-2003 FUKUI Rei
4
% This program may be distributed and/or modified under the
5
% conditions of the LaTeX Project Public License, either version 1.2
6
% of this license or (at your option) any later version.
7
% The latest version of this license is in
8
% http://www.latex-project.org/lppl.txt
9
% and version 1.2 or later is part of all distributions of LaTeX
10
% version 1999/12/01 or later.
12
% This program consists of all files listed in Manifest.txt.
14
% Version 1.2 2003/01/01
16
% This font is based on:
17
% Computer Modern font series by D. E. Knuth and
18
% TSIPA by KOBAYASHI Hajime, FUKUI Rei and SHIRAKAWA Shun.
21
cmchar "Exclamation point";
22
beginchar("!",5u#+width_adj#,asc_height#,0);
23
italcorr asc_height#*slant-2u#-.5width_adj#+.5dot_size#;
25
pickup tiny.nib; pos3(dot_size,0); pos4(dot_size,90);
26
lft x3l=hround(.5w-.5dot_size); bot y4l=0; z3=z4; dot(3,4); % dot
28
bot_width=if hefty:max(hround .8dot_size,fine.breadth) else: hair fi;
29
pickup fine.nib; pos1(dot_size,0); pos2(bot_width,0);
30
x1=x2=x3; bot y2=.25[top y4r,x_height]+1;
31
if square_dots: top y1=h;
32
filldraw stroke z1e--z2e; % stem
33
else: top z0=(x1,h+o); y1+.5dot_size=h+o;
34
filldraw z1r...z0...z1l---z2l--z2r---cycle; fi % stem and bulb
35
penlabels(0,1,2,3,4); endchar;
38
beginchar("'",5u#,asc_height#,0);
39
italcorr asc_height#*slant+.5dot_size#-2u#;
41
x1-.5dot_size=hround(.5w-.5dot_size); y1+.5dot_size=h;
42
if monospace: comma(1,a,dot_size,.28u,vround 1.5comma_depth); % large comma
43
else: comma(1,a,dot_size,.25u,comma_depth); fi % comma with increased jut
44
penlabels(1); endchar;
46
cmchar "Left parenthesis";
47
beginchar("(",CT(7u# if monospace: -u# fi,6.66u#),
48
CT(body_height#,asc_height#),CT(paren_depth#,.9desc_depth#));
49
italcorr body_height#*slant-.5u#;
50
adjust_fit(0,0); pickup fine.nib;
51
pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0);
52
rt x1r=rt x3r=hround(w-u); lft x2l=hround(x1-4u if monospace: +4/3u fi);
53
top y1=h; y2=.5[y1,y3]=math_axis;
54
filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e
55
...{3(x3e-x2e),y3-y2}z3e; % arc
56
penlabels(1,2,3); endchar;
58
cmchar "Right parenthesis";
59
beginchar(")",CT(7u# if monospace: -u# fi,6.66u#),
60
CT(body_height#,asc_height#),CT(paren_depth#,.9desc_depth#));
61
italcorr math_axis#*slant-.5u#;
62
adjust_fit(0,0); pickup fine.nib;
63
pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0);
64
lft x1l=lft x3l=hround u; rt x2r=hround(x1+4u if monospace: -4/3u fi);
65
top y1=h; y2=.5[y1,y3]=math_axis;
66
filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e
67
...{3(x3e-x2e),y3-y2}z3e; % arc
68
penlabels(1,2,3); endchar;
72
if low_asterisk:math_axis#+.5x_height# else: body_height# fi,0);
73
italcorr h#*slant-.75u#;
75
numeric ast_flare; ast_flare=hround .7[thin_join,stem];
76
x0=.5w; y0=h-.5x_height;
77
for d=-150 step 60 until 150: z[d]=z0+.5dir d xscaled 7.5u yscaled x_height;
78
numeric theta; theta=angle(z[d]-z0);
79
fill z0+.5(0,-thin_join)rotated theta
80
---z[d]+.5(-ast_flare,-ast_flare)rotated theta
81
..z[d]..z[d]+.5(-ast_flare,ast_flare)rotated theta
82
---z0+.5(0,thin_join)rotated theta--cycle; endfor % diagonal at angle |d|
83
labels(0,[-150],[-90],[-30],30,90,150); endchar;
86
beginarithchar("+"); pickup rule.nib;
87
x1=x2=good.x .5w; top y1=h+eps; .5[y1,y2]=math_axis;
88
lft x3=hround u-eps; x4=w-x3; y3=y4=math_axis;
90
draw z3--z4; % crossbar
91
labels(1,2,3,4); endchar;
94
numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
95
define_whole_blacker_pixels(dot_diam);
96
beginchar(",",5u#,dot_diam#,comma_depth#);
98
x1-.5dot_diam=hround(.5w-.5dot_diam); y1-.5dot_diam=0;
99
comma(1,a,dot_diam,.2u,comma_depth); % dot and tail
100
penlabels(1); endchar;
103
beginchar("-",6u#,x_height#,0);
104
italcorr .5x_height#*slant-.5u#;
106
numeric thickness; thickness=if hefty:bar else:.75[hair,stem] fi;
107
pickup crisp.nib; pos1(thickness,90); pos2(thickness,90);
108
top y1r=top y2r=vround(.5h+.5thickness); rt x2=hround(w-u)+eps;
109
if monospace: x2=w-x1 else: lft x1=hround .2u-eps fi;
110
filldraw stroke z1e--z2e; % bar
111
penlabels(1,2); endchar;
114
numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
115
define_whole_blacker_pixels(dot_diam);
116
beginchar(".",5u#,dot_diam#,0);
117
adjust_fit(0,0); pickup fine.nib;
118
pos1(dot_diam,0); pos2(dot_diam,90);
119
lft x1l=hround(.5w-.5dot_diam); bot y2l=0; z1=z2; dot(1,2); % dot
120
penlabels(1,2); endchar;
122
cmchar "Virgule (slash)";
123
beginchar("/",9u#,body_height#,paren_depth#);
124
italcorr body_height#*slant-.5u#;
125
adjust_fit(0,0); pickup rule.nib;
126
rt x1=hround(w-u)+eps; top y1=h+eps;
127
lft x2=hround u-eps; bot y2=-d-eps;
128
draw z1--z2; % diagonal
129
penlabels(1,2); endchar;
131
cmchar "Equals sign";
132
compute_spread(.45x_height#,.55x_height#);
133
beginchar("=",14u#,v_center(spread#+rule_thickness#));
134
italcorr h#*slant-.5u#;
135
adjust_fit(0,0); pickup rule.nib;
136
lft x1=hround u-eps; x3=x1; x2=x4=w-x1;
137
y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis;
138
draw z1--z2; % upper bar
139
draw z3--z4; % lower bar
140
labels(1,2,3,4); endchar;
142
cmchar "Question mark";
143
beginchar("?",8.5u#,asc_height#,0);
144
italcorr .8asc_height#*slant;
146
pickup tiny.nib; pos7(dot_size,0); pos8(dot_size,90);
147
lft x7l=hround(.5w-.25u-.5dot_size); bot y8l=0; z7=z8; dot(7,8); % dot
149
bot_width=if hefty:max(hround .8dot_size,fine.breadth) else: hair fi;
150
pickup fine.nib; pos2(vair,90); pos3(curve,0);
151
pos4(vair,-90); pos5(bot_width,0); pos6(bot_width,0);
152
x2=x4=x5=x6=x7; rt x3r=hround(w-u); bot y6=1+.25[top y8r,x_height];
153
top y2r=h+oo; y3=.75[y6,y2]; y4=.5[y6,y2]; y5=.1[y6,y2];
154
{{interim superness:=more_super;
155
filldraw stroke pulled_super_arc.e(2,3)(superpull)
156
& subpath (0,1) of super_arc.e(3,4) .. z5e---z6e\\}}; % arc and stem
157
if serifs: pos1(hair,180); pos0(flare,180);
158
lft x1r=hround u; y1=y3; bulb(2,1,0); % bulb
159
else: pos1(Vround 5/7[vair,flare],110);
160
lft x1r=hround u; top y1r=vround .9[y6,top y2r];
161
filldraw stroke term.e(2,1,left,1,4); fi % terminal
162
penlabels(0,1,2,3,4,5,6,7,8); endchar;
164
cmchar "Left bracket";
165
%numeric wd#; wd#=max(5u#,4.5u#+.5if hefty:stem# else:rule_thickness# fi);
166
% Modified on 2001/11/25 fkr
167
numeric wd#; wd#=max(5.5u#,5u#+.5if hefty:stem# else:rule_thickness# fi);
168
beginchar("[",CT(wd#,6.66u#),CT(body_height#,asc_height#),
169
CT(paren_depth#,.9desc_depth#));
170
italcorr body_height#*slant;
172
numeric top_thickness,side_thickness;
173
if hefty: top_thickness=vair;
174
side_thickness=max(crisp.breadth,stem-2stem_corr);
175
else: top_thickness=side_thickness=rule_thickness; fi;
176
if Times_Compat and serifs: side_thickness:=1.8side_thickness;
177
top_thickness:=.8top_thickness; fi
178
pickup crisp.nib; pos1(side_thickness,0); pos2(side_thickness,0);
179
top y1=h; bot y2=-d; lft x1l=lft x2l=hround(2.5u-.5side_thickness)-1-eps;
180
filldraw stroke z1e--z2e; % stem
181
pos3(top_thickness,90); pos4(top_thickness,90);
182
pos5(top_thickness,90); pos6(top_thickness,90);
183
x3=x5=x1l; rt x4=rt x6=ceiling(w-.4u)+eps; y3r=y4r=y1; y5l=y6l=y2;
184
filldraw stroke z3e--z4e; % upper bar
185
filldraw stroke z5e--z6e; % lower bar
186
penlabels(1,2,3,4,5,6); endchar;
188
cmchar "Right bracket";
189
%numeric wd#; wd#=max(5u#,4.5u#+.5if hefty:stem# else:rule_thickness# fi);
190
% Modified on 2001/11/25 fkr
191
numeric wd#; wd#=max(5.5u#,5u#+.5if hefty:stem# else:rule_thickness# fi);
192
beginchar("]",CT(wd#,6.66u#),CT(body_height#,asc_height#),
193
CT(paren_depth#,.9desc_depth#));
194
italcorr body_height#*slant-2u#+.5if hefty:stem# else:rule_thickness# fi;
196
numeric top_thickness,side_thickness;
197
if hefty: top_thickness=vair;
198
side_thickness=max(crisp.breadth,stem-2stem_corr);
199
else: top_thickness=side_thickness=rule_thickness; fi;
200
if Times_Compat and serifs: side_thickness:=1.8side_thickness;
201
top_thickness:=.8top_thickness; fi
202
pickup crisp.nib; pos1(side_thickness,0); pos2(side_thickness,0);
203
top y1=h; bot y2=-d; rt x1r=rt x2r=hround(w-2.5u+.5side_thickness)+1+eps;
204
filldraw stroke z1e--z2e; % stem
205
pos3(top_thickness,90); pos4(top_thickness,90);
206
pos5(top_thickness,90); pos6(top_thickness,90);
207
x3=x5=x1r; lft x4=lft x6=floor .4u-eps; y3r=y4r=y1; y5l=y6l=y2;
208
filldraw stroke z3e--z4e; % upper bar
209
filldraw stroke z5e--z6e; % lower bar
210
penlabels(1,2,3,4,5,6); endchar;
212
cmchar "Turned apostrophe";
213
beginchar("`",5u#,asc_height#,0);
214
italcorr asc_height#*slant+.5dot_size#-2u#;
216
x1-.5dot_size=hround(.5w-.5dot_size); y1+.5dot_size=h-comma_depth;
217
if monospace: ammoc(1,a,dot_size,.28u,vround 1.5comma_depth); % large ammoc
218
else: ammoc(1,a,dot_size,.25u,comma_depth); fi % normal ammoc
219
penlabels(1); endchar;