summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/boisik/bskletters-i.mf
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-08-23 23:43:42 +0000
committerKarl Berry <karl@freefriends.org>2009-08-23 23:43:42 +0000
commit9c8a12c7a481e50886b68b686e6a7e1ae0d9e358 (patch)
tree8a9e7ad0eab763406a723a4464fee78e031a0079 /Master/texmf-dist/fonts/source/public/boisik/bskletters-i.mf
parent5233802c550f0cc1a8fb76ed9399eb1ce51e9600 (diff)
boisik 0.5 (21aug09)
git-svn-id: svn://tug.org/texlive/trunk@14833 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/boisik/bskletters-i.mf')
-rw-r--r--Master/texmf-dist/fonts/source/public/boisik/bskletters-i.mf274
1 files changed, 255 insertions, 19 deletions
diff --git a/Master/texmf-dist/fonts/source/public/boisik/bskletters-i.mf b/Master/texmf-dist/fonts/source/public/boisik/bskletters-i.mf
index 9e6b56d6e10..feefcf51b1c 100644
--- a/Master/texmf-dist/fonts/source/public/boisik/bskletters-i.mf
+++ b/Master/texmf-dist/fonts/source/public/boisik/bskletters-i.mf
@@ -1,5 +1,7 @@
%Boisik Latin letters in italic form
+def mft = -.5bar_height#*slant enddef;
+
charscription(10.5u,x_height,0)(
path p[]; numeric tim[]; oblu:=2oblu;
pos1(stem,0); pos2(stem,0);
@@ -27,6 +29,7 @@ italcorr x_height#*slant-1.25u#;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(mft+.5u#,ic#+.5u#);
endchar;
iff known chars.latin_aacute:
@@ -220,12 +223,13 @@ p1=z2l..z3l..z4l..{left}z5l..{down}z6l;
(tim0,tim1)=p0 intersectiontimes p1;
filldraw subpath(rundy(p0,tim0),infinity) of p0.._is---subpath(0,rundy(p1,tim1).zpet) of p1..cycle;
infill z6r{down}..z3r..z4r..{left}z5r..cycle;
+math_fit(-x_height#*slant,ic#);
penlabels(1,2,3,4,5,6);
endchar;
iff known chars.sign_blank_b:
bskchar "Blank italic b sign";
-beginchar(chars.sign_blank_b,11.25u#,asc_height#,0); uni "non";
+beginchar(chars.sign_blank_b,11.25u#,asc_height#,0); uni "0x2422";
italcorr bar_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
@@ -276,6 +280,7 @@ italcorr .5[bar_height#,x_height#]*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(mft,ic#);
endchar;
iff known chars.latin_ccaron:
@@ -468,6 +473,7 @@ italcorr asc_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(mft+.5u#,ic#);
endchar;
iff known chars.latin_dcaron:
@@ -622,6 +628,7 @@ italcorr .5[bar_height#,x_height#]*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(mft,ic#);
endchar;
iff known chars.latin_eacute:
@@ -924,6 +931,7 @@ filldraw z4r{right}..z2r---obl(9l,2r,10l)
..z1l---obl(8r,1l,7r)---z7r..z7l
---obl(8l,7l,2l)---z2l..{left}z4l..z5l{up}
..z5'..z5r..cycle;
+math_fit(desc_depth#*slant+2u#,x_height#*slant-1.5u#);
penlabels(1,2,3,4,5,6,7,8,9,10); labels(5',6');
endchar;
@@ -1145,7 +1153,7 @@ else:
fi
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3)=p2 intersectiontimes p3;
-{{ if dpi<=300: save rundy; def rundy(expr p,t)suffix modifier:= if pair t: xpart(t) else: t fi enddef; fi
+{{ if testdpi: save rundy; def rundy(expr p,t)suffix modifier:= if pair t: xpart(t) else: t fi enddef; fi
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
..subpath(rundy(p1,tim1),infinity) of p1..cycle;
infill subpath(0,rundy(p2,(tim2,f_obl)).zpet) of p2
@@ -1248,6 +1256,7 @@ italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(.5u#,ic#-1.5u#);
endchar;
iff known chars.latin_gacute:
@@ -1316,6 +1325,34 @@ x101=x4r; x102-x100=5u;
breve(100,101,102);
endchar;
+iff known chars.latin_g_alt:
+bskchar "The variant italic letter g";
+beginchar(chars.latin_g_alt,9u#,x_height#,desc_depth#); uni "non";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+path p[]; numeric tim[]; oblu:=2oblu;
+pos1(stem,0); pos2(stem,0);
+x1=x2; rt x2r=w-u;
+top y1=bot y4l-hair; y2=-1/2d;
+pos3(hair,-90); pos3'(stem,-150); pos4(hair,90);
+pos5(curve,180); pos6(.5[hair,stem],-90); pos7(stem,0);
+x7=x1; y7=.5bar_height;
+top y4r=h+o; rt x4=lft x1l-hair; y5=bar_height; lft x5r=u;
+bot y6r=-o; x6=x4-u;
+x3=.5[x3',x1]; lft x3'r=u; bot y3r=-d-o; y3'l=.75[y3l,y2];
+z3''=z3'l+.5stem*unitvector(z3'-z3);
+p0=z4r{left}..z5r..z6r..{up}z7r;
+p1=z3r{right}..z2r---z1r..z1l---z2l..{left}z3l..z3'l{up}..z3''..z3'r..{right}z3r;
+p2=z4l{left}..z5l..z6l..{up}z7l---z1l;
+(tim0,tim1)=p0 intersectiontimes p1;
+filldraw subpath(0,2) of p1..subpath(0,rundy(p0,tim0).zpet) of p0
+ ..subpath(rundy(p1,tim1),infinity) of p1&cycle;
+infill p2..cycle;
+math_fit(mft+u#,ic#-u#);
+penlabels(0,1,2,3,3',4,5,6,7); labels(3'');
+endchar;
+
charscription(12u,asc_height,0)(
numeric tim[]; oblu:=3oblu;
path p[];
@@ -1342,6 +1379,7 @@ italcorr .5[bar_height#,x_height#]*slant-.75u#;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
usechar;
+math_fit(-u#,ic#);
endchar;
iff known chars.latin_hcaron:
@@ -1392,6 +1430,7 @@ p1=z2r---obl(8'l,2r,8l)---z8ll..z8r---obl(8'r,8r,1r)---z1r.._is
oblu:=3oblu;
filldraw z2r{up}..z3l..z4l---_ih---subpath(0,rundy(p0,tim0).zpet) of p0
..subpath(rundy(p1,tim1),infinity) of p1..{up}cycle;
+math_fit(-u#,ic#);
penlabels(1,2,2',3,4,5,7,7',8,8'); labels(7',8');
endchar;
@@ -1424,6 +1463,7 @@ p1=z2r---obl(8'l,2r,8l)---z8ll..z8r---obl(8'r,8r,1r).more---z1r.._is
oblu:=3f_obl;
filldraw z2r{up}..z3l..z4l---_ih---subpath(0,rundy(p0,tim0).zpet) of p0
..subpath(rundy(p1,tim1),infinity) of p1..{up}cycle;
+math_fit(-u#,ic#);
penlabels(1,2,2',3,4,5,7,7',8,8'); labels(7',8');
endchar;
@@ -1432,7 +1472,7 @@ numeric H; H=x_height;
pos1(stem,0); pos2(stem,0);
.5[x1,x2]=.5w; x1-x2=0;
y1=H-.3bar_height; y2=.35bar_height;
-ital_kooh(1,4); ital_hook(2,3);
+ital_kooh(1,4).alt; ital_hook(2,3);
filldraw _ih---_ik---cycle;
penlabels(0,1,2);
);
@@ -1444,6 +1484,7 @@ italcorr x_height#*slant-2u#;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(-.7x_height#*slant+u#,ic#+.75u#);
endchar;
iff known chars.latin_i:
@@ -1454,6 +1495,7 @@ adjust_fit(0,0);
pickup tiny.nib;
usechar;
top z0=(x1l,h-.5dot_size); dot(0);
+math_fit(-.7x_height#*slant+u#,ic#);
endchar;
iff known chars.latin_iacute:
@@ -1597,7 +1639,7 @@ x1=x2; rt x1r=w-u;
y1=H-.3bar_height; y2=-1/2d;
if monospace: x5r=0; x4=.5[x5,x2]; x3r=u;
else: x4=u; lft x5r=x4-x1; fi
-ital_kooh(1,3);
+ital_kooh(1,3).alt;
bot y4r=-d-o;
y5l=.75[y4l,y2];
z5'=z5l+.5stem*unitvector(z5-z4);
@@ -1612,6 +1654,7 @@ italcorr x_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(desc_depth#*slant+u#,ic#-u#);
endchar;
iff known chars.latin_j:
@@ -1622,6 +1665,7 @@ adjust_fit(0,0);
pickup tiny.nib;
usechar;
top z0=(x1l,h-.5dot_size); dot(0);
+math_fit(desc_depth#*slant+u#,ic#-1.5u#);
endchar;
iff known chars.latin_jcircumflex:
@@ -1701,6 +1745,7 @@ italcorr x_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
usechar;
+math_fit(-u#,ic#-.5u#);
endchar;
iff known chars.latin_kcaron:
@@ -1768,10 +1813,11 @@ penlabels(1,2);
iff known chars.latin_l:
bskchar "The italic letter l";
beginchar(chars.latin_l,6.5u#, asc_height#, 0); uni "0x006C";
-italcorr asc_height#*slant-1.25u#;
+italcorr asc_height#*slant-1.5u#;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
usechar;
+math_fit(-1.5u#,ic#);
endchar;
iff known chars.latin_lacute:
@@ -1856,7 +1902,7 @@ endchar;
iff known chars.latin_m:
bskchar "The italic letter m";
beginchar(chars.latin_m,16u#,x_height#,0); uni "0x006D";
-italcorr x_height#*slant-2u#;
+italcorr 1/3x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; oblu:=3oblu;
@@ -1872,7 +1918,7 @@ x4=x5=x5'=.5w; y4=.5[bar_height,x_height];
rt x9r=w-2.5u; x10=x9; y10=.35bar_height; y9=y4;
y5=u; bot y5'=0; y8=y3; x8=.5[x4,x9]+.5u;
top y3r=x_height+o; x3=.5[x2,x4]+.5u;
-ital_kooh(1,7); ital_hook(10,11);
+ital_kooh(1,7).alt; ital_hook(10,11);
p0=z4r..z3r..{down}z2l;
p1=z2r---z1r.._ik---z2l..z2'l..z2'r;
p2=z9r..z8r..{down}z5l;
@@ -1889,6 +1935,7 @@ filldraw z2r if monospace:---z1r else:{up}fi..z3l..z4l---z5l..z5'l..z5'r..z5r
..subpath(rundy(p1,tim1),infinity) of p1
..{up}cycle;
penlabels(1,2,2',3,4,5,5',8,9,10);
+math_fit(0,ic#);
endchar;
charscription(11.5u,x_height,0)(
@@ -1901,7 +1948,7 @@ x1=x2=x2'; x1l=2.5u;
y1=H-.3bar_height; y2=u; bot y2'=0;
x4=x5; rt x4r=w-2.5u; y4=.5[bar_height,x_height]; y5=.35bar_height;
top y3r=x_height+o; x3=.5[x2,x4]+.5u;
-ital_kooh(1,7); ital_hook(5,6);
+ital_kooh(1,7).alt; ital_hook(5,6);
p0=z4r..z3r..{down}z2l;
p0:=z4r{up}..{direction 1 of p0}z3r..{down}z2l;
p1=z2r---z1r.._ik---z2l..z2'l..z2'r;
@@ -1914,10 +1961,11 @@ penlabels(1,2,2',3,4,5);
iff known chars.latin_n:
bskchar "The italic letter n";
beginchar(chars.latin_n,11.5u#, x_height#, 0); uni "0x006E";
-italcorr x_height#*slant-2u#;
+italcorr 1/3x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(0,ic#);
endchar;
iff known chars.latin_ncaron:
@@ -2030,6 +2078,7 @@ italcorr .5x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(mft,ic#);
endchar;
iff known chars.latin_oacute:
@@ -2171,7 +2220,7 @@ italcorr (asc_height#-.75x_height#)*slant;
adjust_fit(0,0);
pickup tiny.nib;
multiply(.85)(curve,hair,vair);
-usechar shifted (-x1l,-y4l) scaled .5 shifted (HH*slant,HH);
+usechar shifted (-x1l,-y2l) scaled .5 shifted (u+HH*slant,HH);
endchar;
charscription(10u,x_height,.85desc_depth)(
@@ -2302,11 +2351,12 @@ filldraw subpath(rundy(p0,(tim0,2curve)),infinity) of p0
..subpath(rundy(p2,tim3),rundy(p1,(tim1,1.5curve)).zpet) of p1..cycle;
infill z6r{down}..z3r..z4r..{left}z5r..cycle;
penlabels(1,1',2,3,4,5,6,7,8,11);
+math_fit(0,ic#);
endchar;
iff known chars.latin_thorn:
bskchar "The italic letter thorn";
-beginchar(chars.latin_p,12u#,asc_height#,desc_depth#); uni "0x0070";
+beginchar(chars.latin_p,12u#,asc_height#,desc_depth#); uni "0x00FE";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
@@ -2370,6 +2420,7 @@ filldraw subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0
..cycle;
infill z7l{down}..z4l..z5l..{right}z6l..cycle;
penlabels(1,2,4,5,6,7); labels(1');
+math_fit(mft,ic#-.5u#);
endchar;
charscription(9u if bold_face:+u fi,x_height, 0)(
@@ -2401,6 +2452,7 @@ italcorr x_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(0,ic#-2u#);
endchar;
iff known chars.latin_racute:
@@ -2484,6 +2536,7 @@ italcorr x_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(-.5u#,ic#-.5u#);
endchar;
iff known chars.latin_scaron:
@@ -2652,6 +2705,7 @@ italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(-x_height#*slant,ic#-.5u#);
endchar;
iff known chars.latin_tcommabelow:
@@ -2740,7 +2794,7 @@ x1=x2; lft x1l=2u; x3=x3'=x4; rt x3r=w-2u;
y1=H-.3bar_height; y2=y4=.35bar_height;
y3=h-u; top y3'=h; bot y6l=-o; x6=1/3[x2,x4];
x7r=x3l; y7=bar_height;
-ital_kooh(1,0); ital_hook(4,5).alt;
+ital_kooh(1,0).alt; ital_hook(4,5).alt;
p0=reverse _ik---z2r..z6r..z7r---z3l..z3'l..z3'r..z3r---reverse _ih..{up}z7r;
p1=z7l{down}..z6l..z2l---z1l;
dl:=length p0;
@@ -2759,6 +2813,7 @@ italcorr x_height#*slant-.75u#;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(0,ic#);
endchar;
iff known chars.latin_uacute:
@@ -2950,6 +3005,7 @@ filldraw subpath(rundy(p0,0),infinity) of p0
..{z7r-z6}z7r..z7'..{right}z7l..{down}z6l
..subpath(0,rundy(p1,length p1).zpet) of p1..cycle;
penlabels(1,1',2,3,4,5,6,7); labels(9');
+math_fit(-.25u#,ic#-.5u#);
endchar;
charscription(15u,x_height,0)(
@@ -2996,6 +3052,7 @@ italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(-.25u#,ic#-.5u#);
endchar;
iff known chars.latin_wcircumflex:
@@ -3061,12 +3118,14 @@ rt x3r=w-3.5u; y3=y13=.3bar_height; x13r=w-x3r;
rt x4l=w-.5u; top y4=y14=.4bar_height; bot y3'l=bot y13'l=-o; x3'=.45[x3,x4]; x13'=.45[x13,x14];
lft x14r=0;
z4'=z4r+hair*up; z14'=z14r+hair*up;
-p0=z2'..z2l{dir60}..z1'l..z1l---z3l..z3'l..z4l if dpi>300:..z4'&z4'.. else:&z4l{up}..{down}z4r& fi z4r..z3'r..z3r---z1r..z1'r..z2r+left{dir-100}..z2'+left;
-p1=if dpi>300:z12'.. fi z12l..z11'l..z11l---z13l..z13'l..z14l if dpi>300:..z14'&z14'..else:&z14l{up}..{down}z14r& fi z14r..z13'r..z13r---z11r..z11'r..z12r if dpi>300:..z12'fi;
+p0=z2'..z2l{dir60}..z1'l..z1l---z3l..z3'l..z4l if not testdpi:..z4'&z4'.. else:&z4l{up}..{down}z4r&fi z4r..z3'r..z3r---z1r..z1'r..z2r+left{dir-100}..z2'+left;
+p1=if not testdpi:z12'{z12l-z12'}.. fi z12l..z11'l..z11l---z13l..z13'l..z14l %if not testdpi:..z14'&z14'..else:
+&z14l{up}..{down}z14r&% fi
+z14r..z13'r..z13r---z11r..z11'r..z12r if not testdpi:..z12' fi;
(tim0,tim1-4)=p0 intersectiontimes subpath (4,infinity) of p1;
(tim2,tim3)=subpath (0,4) of p1 intersectiontimes p0;
(tim4-4,tim5)=subpath(4,infinity) of p0 intersectiontimes p1;
-numeric node; node:=if dpi>300:9 else: 8 fi;
+numeric node; node:=if not testdpi:9 else: 8 fi;
(tim6-node,tim7-node)=subpath (node,infinity) of p1 intersectiontimes subpath(node,infinity) of p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
..reverse subpath(rundy(p1,tim2),rundy(p1,tim1).zpet) of p1
@@ -3076,6 +3135,7 @@ filldraw subpath(0,rundy(p0,tim0).zpet) of p0
..subpath(rundy(p0,tim7),infinity) of p0
..cycle;
penlabels(1,1',2,3,3',4,11,11',12,13,13',14); labels(2',4',12',14');
+math_fit(.5u#,ic#-.5u#);
endchar;
charscription(10.5u,x_height,desc_depth)(
@@ -3110,6 +3170,7 @@ italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(desc_depth#*slant,ic#-.5u#);
endchar;
iff known chars.latin_ygrave:
@@ -3202,6 +3263,7 @@ italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
+math_fit(0,ic#-.25u#);
endchar;
iff known chars.latin_zcaron:
@@ -3746,16 +3808,16 @@ endchar;
iff known chars.sign_query:
bskchar "Italic question mark";
-beginchar(chars.sign_query, 9u#+punct_fit#, asc_height#, 0); uni "0x003F";
+beginchar(chars.sign_query, 9u#, asc_height#, 0); uni "0x003F";
italcorr .5[asc_height#,x_height#]*slant;
-adjust_fit(0,0);
+adjust_fit(punct_fit#,0);
pickup tiny.nib;
pos0(vair,-60); pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0);
pos4(curve,0); pos5(hair,90); pos6(vair,120);
-lft x1r=u+punct_fit; y1=.5[h,x_height]+hair; top y2r=h+o; x2=.5(w-punct_fit)+punct_fit-hair;
+lft x1r=u; y1=.5[h,x_height]+hair; top y2r=h+o; x2=.5w-hair;
y0l=y1-2hair; x0=.35[x2,x1];
rt x3r=w-u; y3=.5[h,x_height]-hair; x4=x0; y4=bar_height;
-x5=.5(w-punct_fit)+punct_fit; bot y5l=2dot_size; x6-x5=x0-x1; y6-y5=y1-y0;
+x5=.5w; bot y5l=2dot_size; x6-x5=x0-x1; y6-y5=y1-y0;
filldraw z6l{dir240}..z5l..z4l..z3l{up}..z2l{left}..z1l..{dir60}z0l
..{dir-120}z0r..z1r..{right}z2r..{down}z3r..z4r..z5r..{dir60}z6r
..cycle;
@@ -3763,6 +3825,128 @@ bot z100=(x5,.5dot_size); dot(100);
penlabels(0,1,2,3,4,5,6);
endchar;
+iff known chars.sign_query_query:
+bskchar "Italic double question mark";
+beginchar(chars.sign_query_query, 15u#, asc_height#, 0); uni "0x2047";
+italcorr .5[asc_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+pos0(vair,-60); pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0);
+pos4(curve,0); pos5(hair,90); pos6(vair,120);
+lft x1r=u; y1=.5[h,x_height]+hair; top y2r=h+o; x2=.5(w-7u)-hair;
+y0l=y1-2hair; x0=.35[x2,x1];
+rt x3r=w-8u; y3=.5[h,x_height]-hair; x4=x0; y4=bar_height;
+x5=.5(w-7u); bot y5l=2dot_size; x6-x5=x0-x1; y6-y5=y1-y0;
+filldraw z6l{dir240}..z5l..z4l..z3l{up}..z2l{left}..z1l..{dir60}z0l
+ ..{dir-120}z0r..z1r..{right}z2r..{down}z3r..z4r..z5r..{dir60}z6r
+ ..cycle;
+filldraw (z6l{dir240}..z5l..z4l..z3l{up}..z2l{left}..z1l..{dir60}z0l
+ ..{dir-120}z0r..z1r..{right}z2r..{down}z3r..z4r..z5r..{dir60}z6r
+ ..cycle) shifted (w-u-x3r,0);
+bot z100=(x5,.5dot_size); z101=z100 shifted (w-u-x3r,0);
+dot(100); dot(101);
+penlabels(0,1,2,3,4,5,6);
+endchar;
+
+iff known chars.sign_query_exclam:
+bskchar "Italic question and exclamation mark";
+beginchar(chars.sign_query_exclam, 13u#, asc_height#, 0); uni "0x2048";
+italcorr .5[asc_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+pos0(vair,-60); pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0);
+pos4(curve,0); pos5(hair,90); pos6(vair,120);
+lft x1r=u; y1=.5[h,x_height]+hair; top y2r=h+o; x2=.5(w-4u)-hair;
+y0l=y1-2hair; x0=.35[x2,x1];
+rt x3r=w-5u; y3=.5[h,x_height]-hair; x4=x0; y4=bar_height;
+x5=.5(w-4u); bot y5l=2dot_size; x6-x5=x0-x1; y6-y5=y1-y0;
+filldraw z6l{dir240}..z5l..z4l..z3l{up}..z2l{left}..z1l..{dir60}z0l
+ ..{dir-120}z0r..z1r..{right}z2r..{down}z3r..z4r..z5r..{dir60}z6r
+ ..cycle;
+bot z100=(x5,.5dot_size); dot(100);
+bot z7=(w-2.5u,.5dot_size); dot(7);
+penpos8(dot_size,0); pos9(hair,0); x8=x9=x7;
+y8=h-.5stem; bot y9=dot_size+stem; y9r:=y9r+.5hair;
+filldraw z8l---z9l..{.5[z8,z8r]-z9r}z9r..{z8r-z9r}z8r..cycle;
+penlabels(0,1,2,3,4,5,6,8,9);
+endchar;
+
+iff known chars.sign_exclam_query:
+bskchar "Exclamation and italic question mark";
+beginchar(chars.sign_exclam_query, 13u#, asc_height#, 0); uni "0x2049";
+italcorr .5[asc_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+pos0(vair,-60); pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0);
+pos4(curve,0); pos5(hair,90); pos6(vair,120);
+lft x1r=5u; y1=.5[h,x_height]+hair; top y2r=h+o; x2=4u+.5(w-4u)-hair;
+y0l=y1-2hair; x0=.35[x2,x1];
+rt x3r=w-u; y3=.5[h,x_height]-hair; x4=x0; y4=bar_height;
+x5=.5(w-4u)+4u; bot y5l=2dot_size; x6-x5=x0-x1; y6-y5=y1-y0;
+filldraw z6l{dir240}..z5l..z4l..z3l{up}..z2l{left}..z1l..{dir60}z0l
+ ..{dir-120}z0r..z1r..{right}z2r..{down}z3r..z4r..z5r..{dir60}z6r
+ ..cycle;
+bot z100=(x5,.5dot_size); dot(100);
+bot z7=(2.5u,.5dot_size); dot(7);
+penpos8(dot_size,0); pos9(hair,0); x8=x9=x7;
+y8=h-.5stem; bot y9=dot_size+stem; y9r:=y9r+.5hair;
+filldraw z8l---z9l..{.5[z8,z8r]-z9r}z9r..{z8r-z9r}z8r..cycle;
+penlabels(0,1,2,3,4,5,6,8,9);
+endchar;
+
+iff known chars.sign_interrobang:
+bskchar "Italic interrobang mark";
+beginchar(chars.sign_interrobang, 9u#, asc_height#, 0); uni "0x203D";
+italcorr .5[asc_height#,x_height#]*slant;
+adjust_fit(punct_fit#,0);
+pickup tiny.nib;
+path p[]; numeric tim[];
+pos0(vair,-60); pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0);
+pos4(curve,0); pos5(hair,90); pos6(vair,120);
+penpos7(dot_size,0); pos8(hair,0); x7=x8=x5;
+lft x1r=u; y1=.5[h,x_height]+hair; top y2r=h+o; x2=.5w-hair;
+y0l=y1-2hair; x0=.35[x2,x1];
+rt x3r=w-u; y3=.5[h,x_height]-hair; x4=x0; y4=bar_height;
+x5=.5w; bot y5l=2dot_size; x6-x5=x0-x1; y6-y5=y1-y0;
+y7=y2+o; bot y8=dot_size+stem; y8r:=y8r+.5hair; y7l:=y2l-o;
+p0:=z6l{dir240}..z5l..z4l..z3l{up}..z2l{left}..z1l..{dir60}z0l;
+p1:=z0r{dir-120}..z1r..{right}z2r..{down}z3r..z4r..z5r..{dir60}z6r;
+p2:=reverse (z7l---z8l..{.5[z7,z7r]-z8r}z8r..{z7r-z8r}z7r..cycle);
+p3:=subpath(-1,length p2-1) of p2;
+y7'=y2r+o; z7'=whatever[z8r,z7r];
+p4:=z8r--z7';
+p5:=z8l--z7l;
+(tim0,tim1)=p0 intersectiontimes subpath(0,3) of p2;
+(tim2,tim3-2)=p0 intersectiontimes subpath(2,4) of p2;
+(tim4-2,tim5)=subpath(2,infinity) of p0 intersectiontimes subpath(0,2) of p3;
+(tim6-3,tim7)=subpath(3,infinity) of p0 intersectiontimes subpath(0,1.75) of p3;
+(tim8,tim9)=subpath(0,3) of p1 intersectiontimes p2;
+(tim10-2,tim11)=subpath(2,3) of p1 intersectiontimes p2;
+(tim12-3,tim13)=subpath(3,4) of p1 intersectiontimes p2;
+(tim14-4,tim15)=subpath(4,6) of p1 intersectiontimes subpath(0,3) of p2;
+(tim16-2,tim17)=subpath(2,infinity) of p0 intersectiontimes p4;
+(tim18-3,tim19)=subpath(3,infinity) of p0 intersectiontimes p4;
+(tim20-3,tim21)=subpath(3,4) of p1 intersectiontimes p5;
+(tim22-4,tim23)=subpath(4,6) of p1 intersectiontimes p5;
+filldraw subpath(0,rundy(p0,tim0).zpet) of p0
+ ..{z8r-.5[z7,z7r]}z8r..z8l
+ ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0
+ ..subpath(rundy(p3,tim5),rundy(p3,tim7).zpet) of p3
+ ..subpath(rundy(p0,tim6),infinity) of p0
+ ..subpath(0,rundy(p1,tim8).zpet) of p1
+ ..subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2
+ ..subpath(rundy(p1,tim10),rundy(p1,tim12).zpet) of p1
+ ..subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2
+ ..subpath(rundy(p1,tim14),infinity) of p1..cycle;
+oblu:=1.5oblu;
+infill subpath(rundy(p0,tim16),rundy(p0,tim18).zpet) of p0
+ ..subpath(rundy(p4,tim19).zpet,rundy(p4,tim17)) of p4..cycle;
+infill subpath(rundy(p1,tim20),rundy(p1,tim22).zpet) of p1
+ ..subpath(rundy(p5,tim23),rundy(p5,tim21).zpet) of p5..cycle;
+bot z100=(x5,.5dot_size); dot(100);
+penlabels(0,1,2,3,4,5,6,7,8);
+endchar;
+
iff known chars.sign_turned_query:
bskchar "Turned italic question mark";
beginchar(chars.sign_turned_query, 9u#, asc_height#-desc_depth#, desc_depth#); uni "non";
@@ -3799,6 +3983,58 @@ top z100=(x5,h-.5dot_size); dot(100);
penlabels(0,1,2,3,4,5,6);
endchar;
+iff known chars.sign_gnaborretni:
+bskchar "Reversed italic interrobang mark";
+beginchar(chars.sign_gnaborretni, 9u#, asc_height#-desc_depth#, desc_depth#); uni "non";
+adjust_fit(0,0);
+pickup tiny.nib;
+path p[]; numeric tim[];
+pos0(vair,120); pos1(.45[hair,stem],0); pos2(hair,-90); pos3(curve,180);
+pos4(curve,180); pos5(hair,-90); pos6(vair,-60);
+penpos7(dot_size,180); pos8(hair,180); x7=x8=x5;
+rt x1r=w-u; y1=-d+(asc_height-.5[asc_height,x_height])-hair; bot y2r=-d-o; x2=.5w+hair;
+y0l=y1+2hair; x0=.35[x2,x1];
+lft x3r=u; y3=y1+2hair; x4=x0; y4=-d+(asc_height-bar_height);
+x5=.5w; top y5l=h-2dot_size; x6-x5=x0-x1; y6-y5=y1-y0;
+top z100=(x5,h-.5dot_size); dot(100);
+y7=y2r-o; top y8=h-dot_size-stem; y8r:=y8r-.5hair; y7l:=y2l+o;
+p0:=z6l{dir60}..z5l..z4l..z3l{down}..z2l{right}..z1l..{dir240}z0l;
+p1:=z0r{dir60}..z1r..{left}z2r..{up}z3r..z4r..z5r..{dir240}z6r;
+p2:=reverse (z7l---z8l..{.5[z7,z7r]-z8r}z8r..{z7r-z8r}z7r..cycle);
+p3:=subpath(-1,length p2-1) of p2;
+y7'=y2r-o; z7'=whatever[z8r,z7r];
+p4:=z8r--z7';
+p5:=z8l--z7l;
+(tim0,tim1)=p0 intersectiontimes subpath(0,3) of p2;
+(tim2,tim3-2)=p0 intersectiontimes subpath(2,4) of p2;
+(tim4-2,tim5)=subpath(2,infinity) of p0 intersectiontimes subpath(0,2) of p3;
+(tim6-3,tim7)=subpath(3,infinity) of p0 intersectiontimes subpath(0,1.75) of p3;
+(tim8,tim9)=subpath(0,3) of p1 intersectiontimes p2;
+(tim10-2,tim11)=subpath(2,3) of p1 intersectiontimes p2;
+(tim12-3,tim13)=subpath(3,4) of p1 intersectiontimes p2;
+(tim14-4,tim15)=subpath(4,6) of p1 intersectiontimes subpath(0,3) of p2;
+(tim16-2,tim17)=subpath(2,infinity) of p0 intersectiontimes p4;
+(tim18-3,tim19)=subpath(3,infinity) of p0 intersectiontimes p4;
+(tim20-3,tim21)=subpath(3,4) of p1 intersectiontimes p5;
+(tim22-4,tim23)=subpath(4,6) of p1 intersectiontimes p5;
+filldraw subpath(0,rundy(p0,tim0).zpet) of p0
+ ..{z8r-.5[z7,z7r]}z8r..z8l
+ ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0
+ ..subpath(rundy(p3,tim5),rundy(p3,tim7).zpet) of p3
+ ..subpath(rundy(p0,tim6),infinity) of p0
+ ..subpath(0,rundy(p1,tim8).zpet) of p1
+ ..subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2
+ ..subpath(rundy(p1,tim10),rundy(p1,tim12).zpet) of p1
+ ..subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2
+ ..subpath(rundy(p1,tim14),infinity) of p1..cycle;
+oblu:=1.5oblu;
+infill subpath(rundy(p0,tim16),rundy(p0,tim18).zpet) of p0
+ ..subpath(rundy(p4,tim19).zpet,rundy(p4,tim17)) of p4..cycle;
+infill subpath(rundy(p1,tim20),rundy(p1,tim22).zpet) of p1
+ ..subpath(rundy(p5,tim23),rundy(p5,tim21).zpet) of p5..cycle;
+penlabels(0,1,2,3,4,5,6,7,8);
+endchar;
+
iff known chars.sign_at:
bskchar "Italic at sign";
beginchar(chars.sign_at, 16u#, asc_height#-.3desc_depth#, .6desc_depth#); uni "0x0040";