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
|
%*****************************************************************************
% Copyright (c) 1989 by N. N. Billawala
%*****************************************************************************
% puncts.mf punctuation: Spanish inverted !?
% 2 characters
iff OK "!": "Inverted exclamation point (Spanish)";
beginchar(inv_exclamation,I_w*width#+a_mono#,cap#,.5descender#);
min_limit(join_radius)(.5thin_stem.uc);
bot z1=(round(.5w),0);
z0=bot z1+(0,.5accent_dot_diameter);
top z3=(x1,h)//; pos3(stem.uc,-oblique);
onaline(0,3)(2); bot y2=max(bot y1+accent_dot_diameter+2,.3y3);
pos2(thin_stem.uc,-oblique);
ref1=dot.b(z1,accent_dot_diameter);
ref2=(z3--z3l)softjoin(z3l--z2l)softjoin(z2l--z2r)softjoin(z2r--z3r)
softjoin(z3r--z3)--cycle;
z10=(.5w,.5(cap-d));
p1=ref1 rotatedaround (z10,180);
p2=ref2 rotatedaround (z10,180);
showpoints(0,1,2,3);
adjust(v_a*fitbasis.uc#+m_a*a_mfit#,v_a*fitbasis.uc#+m_a*a_mfit#);
show_character; endchar;
% rotation of shape and slant of position with obliqueness
% Shape taken exactly from the exclamation point character, but rotated by 180
% degrees and shifted. This does throw the labels off though.
% Done this way, so that changes to one are more easily
% transferred to the other. Could also have altered reference points, which
% may still need to be done if the rounding turns out bad
iff OK "?": "Inverted question mark (Spanish)";
beginchar(inv_question_mark,.35width#+b_mono#,cap#,.5descender#); %.4width
min_limit(join_radius)(.5thin_stem.uc);
lft z1=(0,.9h)//;
rt z3r=(w,.75h)//; lft z3l=z3r-(stem.uc,0);
top y2r=bot y2l+max(1,major_curve.uc)=h+ov_t.uc;
good_x_for(2r)(z1,z3r,.5)a; good_x_for(2l)(z1+(bulb_thickness,0),z3l,.5)b;
bot z7=(.35w,0);
z8=bot z7+(0,.5accent_dot_diameter);
bot z6=(bot z7+(0,max(bot y7+accent_dot_diameter+2,.3y2r)))//;
multpos(5,6)(thin_stem.uc,-oblique);
onaline(6,8)(5); y5=max(y7+accent_dot_diameter+2,.35y2r);
z4l=.4[z5l,z3l]; z4r=.4[z5r,z3r];
ref1=(bulb.tl(z1,z2l,z2r,cs,max(1,.75bulb_thickness),90)soft i_t
z3l{downward} i_t z4l o_t z5l{downward}--z6l)softjoin(z6l--z6r)
softjoin(z6r-- z5r{upward} i_t z4r o_t z3r{upward} o_t z2r{left})--cycle;
ref2=dot.b(z7,accent_dot_diameter);
z10=(.5w,.5(cap-d));
p1=ref1 rotatedaround (z10,180);
p2=ref2 rotatedaround (z10,180);
showpoints(1,2,3,4,5,6,7,8,10);
adjust(v_C*fitbasis.uc#+m_a*b_mfit#,v_C*fitbasis.uc#+m_a*b_mfit#);
show_character; endchar;
% Shape taken exactly from the question mark character, but rotated by 180
% degrees and shifted. Fitting on left and right was switched.
% This does throw the labels off though.
% Done this way, so that changes to one are more easily
% transferred to the other. Could also have altered reference points, which
% may still need to be done if the rounding turns out bad
|