summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/boisik/bskletters-i.mf
diff options
context:
space:
mode:
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.mf3875
1 files changed, 3875 insertions, 0 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
new file mode 100644
index 00000000000..9e6b56d6e10
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/boisik/bskletters-i.mf
@@ -0,0 +1,3875 @@
+%Boisik Latin letters in italic form
+
+charscription(10.5u,x_height,0)(
+path p[]; numeric tim[]; oblu:=2oblu;
+pos1(stem,0); pos2(stem,0);
+x1=x2; rt x2r=w-2.5u;
+top y1=h-hair; y2=.35bar_height;
+pos4(hair,90); pos5(curve,180); pos6(.5[hair,stem],-90);
+pos7(stem,0); x7=x1; y7=.5bar_height;
+top y4r=h+o; x4=.5w+u; y5=bar_height; lft x5r=u;
+bot y6r=-o; x6=x4-u;
+p0=z4r{left}..z5r..z6r..{up}z7r;
+ital_hook(2,3);
+p1=_ih;
+p2=z4l{left}..z5l..z6l..{up}z7l---z1l;
+(tim0,tim1)=p0 intersectiontimes p1;
+filldraw subpath(rundy(p1,tim1),infinity) of p1---z1r
+ ..subpath(0,rundy(p0,tim0).zpet) of p0..cycle;
+infill p2..cycle;
+penlabels(0,1,2,4,5,6,7);
+);
+
+iff known chars.latin_a:
+bskchar "The italic letter a";
+beginchar(chars.latin_a,10.5u#,x_height#,0); uni "0x0061";
+italcorr x_height#*slant-1.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_aacute:
+bskchar "The italic letter a with acute";
+beginchar(chars.latin_aacute,10.5u#,asc_height#,0); uni "0x00E1";
+italcorr asc_height#*slant-1.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+.5[x100,x101]=x4; acute(100,101);
+endchar;
+
+iff known chars.latin_agrave:
+bskchar "The italic letter a with grave";
+beginchar(chars.latin_agrave,10.5u#,asc_height#,0); uni "0x00E0";
+italcorr x_height#*slant-1.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x1; grave(100,101);
+endchar;
+
+iff known chars.latin_aumlaut:
+bskchar "The italic letter a with umlaut";
+beginchar(chars.latin_aumlaut,10.5u#,asc_height#-dot_size#,0); uni "0x00E4";
+italcorr (asc_height#-dot_size#)*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+.5[x100,x101]=x6; x101-x100=1/3w; umlaut(100,101);
+endchar;
+
+iff known chars.latin_adoublegrave:
+bskchar "The italic letter a with doublegrave";
+beginchar(chars.latin_adoublegrave,10.5u#,asc_height#,0); uni "0x0201";
+italcorr x_height#*slant-.5u#;
+pickup tiny.nib;
+adjust_fit(0,0);
+usechar;
+x102-x100=3u;
+d_grave(100,101,102,103,x6);
+endchar;
+
+iff known chars.latin_acircumflex:
+bskchar "The italic letter a with circumflex";
+beginchar(chars.latin_acircumflex,10.5u#,asc_height#-.1x_height#,0); uni "0x00E2";
+italcorr .5[asc_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4;
+circumflex(100,101,102);
+endchar;
+
+iff known chars.latin_acaron:
+bskchar "The italic letter a with caron";
+beginchar(chars.latin_acaron,10.5u#,asc_height#,0); uni "0x01CE";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4;
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_abreve:
+bskchar "The italic letter a with breve";
+beginchar(chars.latin_abreve,10.5u#,asc_height#+apex_o#,0); uni "0x0103";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4; x102-x100=5u;
+breve(100,101,102);
+endchar;
+
+iff known chars.latin_ainvbreve:
+bskchar "The italic letter a with inverted breve";
+beginchar(chars.latin_ainvbreve,10.5u#,asc_height#,0); uni "0x0203";
+italcorr .5[asc_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4; x102-x100=5u;
+tieacc(100,101,102);
+endchar;
+
+iff known chars.latin_amacron:
+bskchar "The italic letter a with macron";
+beginchar(chars.latin_amacron,10.5u#,.5[asc_height#,x_height#],0); uni "0x0101";
+italcorr .5[asc_height#,x_height#]*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+macron(100,101);
+endchar;
+
+iff known chars.latin_atilde:
+bskchar "The italic letter a with tilde";
+beginchar(chars.latin_atilde,10.5u#,asc_height#,0); uni "0x00E3";
+italcorr asc_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101-x100=6u; lft x.tilde=x6;
+tilde(100,101);
+endchar;
+
+iff known chars.latin_aring:
+bskchar "The italic letter a with ring";
+beginchar(chars.latin_aring,10.5u#,asc_height#,0); uni "0x00E5";
+italcorr .5[asc_height#,x_height#]*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+lft x100=x4; x100-x101=1.3u;
+ring(100,101);
+endchar;
+
+iff known chars.latin_adotabove:
+bskchar "The italic letter a with dot above";
+beginchar(chars.latin_adotabove,10.5u#,asc_height#-.5dot_size#,0); uni "0x0227";
+italcorr x_height#*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x4;
+dotabove(100);
+endchar;
+
+iff known chars.latin_a_feminine:
+bskchar "Feminine ordinal indicator (superscript italic a)";
+beginchar(chars.latin_a_feminine,6.25u#,asc_height#-.5x_height#,0); uni "0x00AA";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+multiply(.85)(curve,hair,vair);
+usechar shifted (-u,-y6r) scaled .5 shifted (u+HH*slant,HH);
+endchar;
+
+iff known chars.latin_aogonek:
+bskchar "The italic letter a with ogonek";
+beginchar(chars.latin_a,10.5u#,x_height#,.85desc_depth#); uni "0x0105";
+italcorr x_height#*slant-1.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+path p[]; numeric tim[]; oblu:=2oblu;
+pos1(stem,0); pos2(stem,0);
+x1=x2; rt x2r=w-2.5u;
+top y1=h-hair; y2=.35bar_height;
+pos4(hair,90); pos5(curve,180); pos6(.5[hair,stem],-90);
+pos7(stem,0); x7=x1; y7=.5bar_height;
+pos8(stem,0); pos9(curve,0); pos10(hair,45); pos11(hair,160);
+top y4r=h+o; x4=.5w+u; y5=bar_height; lft x5r=u;
+bot y6r=-o; x6=x4-u;
+x8=x9l+1.5u; z8r=z2'l; x10-x9l=3u; rt x11l=x10+1.5u;
+y9=-.5d; bot y10l=-d; y11=-2/3d;
+p0=z4r{left}..z5r..z6r..{up}z7r;
+ital_hook(2,3);
+p1=_ih;
+p2=z4l{left}..z5l..z6l..{up}z7l---z1l;
+p3=z8l{z9l-z8r}..z9l...z10l..{z8-z9}z11l..z11r{z9-z8}..z10r..z9r..z8r;
+(tim2,tim3-2)=p1 intersectiontimes subpath(2,infinity) of p3;
+(tim4,tim5)=p0 intersectiontimes p1;
+filldraw subpath(rundy(p3,0),rundy(p3,tim3).zpet) of p3
+ ..subpath(rundy(p1,tim2),infinity) of p1---z1r
+ ..subpath(0,rundy(p0,tim4).zpet) of p0..cycle;
+infill p2..cycle;
+penlabels(0,1,2,4,5,6,7,8,9,10,11);
+endchar;
+
+iff known chars.latin_b:
+bskchar "The italic letter b";
+beginchar(chars.latin_b,11.25u#,asc_height#,0); uni "0x0062";
+italcorr bar_height#*slant;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+numeric tim[]; path p[]; oblu:=3oblu;
+pos1(stem,0); pos2(stem,0);
+x1=x2; lft x1l=2.75u;
+y1=h; y2=.5bar_height;
+ital_serif(1,2);
+pos3(.5[hair,stem],90); pos4(curve,180);
+pos5(hair,-90); pos6(stem,0);
+x3=.5[w-u,x2]-u; bot y3l=-o;
+rt x4l=w-u; y4=bar_height;
+x5=x3+1.5u; top y5l=x_height+o;
+x6=x2; y6=.5bar_height;
+p0=z2r--z1r;
+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;
+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";
+italcorr bar_height#*slant;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+numeric tim[]; path p[]; oblu:=3f_obl; oblu.light:=2f_obl;
+pos1(stem,0); pos2(stem,0);
+x1=x2; lft x1l=2.75u;
+y1=h; y2=.5bar_height;
+ital_serif(1,2);
+pos3(.5[hair,stem],90); pos4(curve,180);
+pos5(hair,-90); pos6(stem,0);
+x3=.5[w-u,x2]-u; bot y3l=-o;
+rt x4l=w-u; y4=bar_height;
+x5=x3+1.5u; top y5l=x_height+o;
+x6=x2; y6=.5bar_height;
+lft x7=.5u; x8=.5w+u; y8=.6[x_height,h]; y7=x_height;
+theta:=angle(z8-z7)+90;
+pos7(bar,theta); pos8(bar,theta);
+x7'l=x7'r=x1l; x8'l=x8'r=x1r; bskpoints(7,8,hair,hair);
+z7'l=whatever[z7l,z8l]; z8'l=whatever[z7l,z8l];
+z7'r=whatever[z7r,z8r]; z8'r=whatever[z7r,z8r];
+p0=z2r---obl(8'l,2r,8l).light---z8ll..z8r---obl(8'r,8r,1r).light---z1r;
+p1=z2l..z3l..z4l..{left}z5l..{down}z6l;
+(tim0,tim1)=p0 intersectiontimes p1;
+filldraw subpath(rundy(p0,tim0),infinity) of p0.._is
+ ---obl(7'r,1'',7r).light---z7rr..z7l
+ ---obl(7'l,7l,2l)---subpath(0,rundy(p1,tim1).zpet) of p1..cycle;
+infill z6r{down}..z3r..z4r..{left}z5r..cycle; labels(8ll,7rr);
+penlabels(1,2,3,4,5,6,7,7',8,8');
+endchar;
+
+charscription(9u,x_height,0)(
+numeric cend; cend:=stem;
+pos1(curve,0); pos2(hair,90); pos3(hair,270); pos4(cend,20);
+pos0(hair,135);
+lft x1l=u; y1=.5h; x2=.5w+u; x3=.5w+1.25u; bot y2l=-o; top y3l=h+o;
+rt x0l=w-u; y0=.25h;
+rt x4r=w-1.25u; top y4r=.9h;
+z4'=z4l+.75stem*unitvector(z4-z3);
+filldraw z0l{dir-100}..{left}z2l..z1l..{right}z3l..z4r..z4'..{up}z4l..
+ z3r{left}..z1r..{right}z2r..{dir80}z0r..cycle;
+penlabels(0,1,2,3,4); labels(4');
+);
+
+iff known chars.latin_c:
+bskchar "The italic letter c";
+beginchar(chars.latin_c,9u#,x_height#,0); uni "0x0063";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_ccaron:
+bskchar "The italic letter c with caron";
+beginchar(chars.latin_ccaron,9u#,asc_height#,0); uni "0x010D";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x3;
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_cacute:
+bskchar "The italic letter c with acute";
+beginchar(chars.latin_cacute,9u#,asc_height#,0); uni "0x0107";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x4;
+acute(100,101);
+endchar;
+
+iff known chars.latin_ccircumflex:
+bskchar "The italic letter c with circumflex";
+beginchar(chars.latin_ccircumflex,9u#,asc_height#-.1x_height#,0); uni "0x0109";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+lft x101=x3;
+circumflex(100,101,102);
+endchar;
+
+iff known chars.latin_cdotabove:
+bskchar "The italic letter c with dot above";
+beginchar(chars.latin_cdotabove,9u#,asc_height#-.5dot_size#,0); uni "0x010B";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x3;
+dotabove(100);
+endchar;
+
+iff known chars.latin_ccedilla:
+bskchar "The italic letter c with cedilla";
+beginchar(chars.latin_ccedilla,9u#,x_height#,.65desc_depth#); uni "0x00E7";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric cend, tim[]; cend:=stem;
+path p[];
+pos1(curve,0); pos2(hair,90); pos3(hair,270); pos4(cend,20);
+pos0(hair,135);
+pos5(.5stem,0); pos6(.5stem,0); pos7(.8stem,0); pos8(.5stem,-110);
+lft x1l=u; y1=.5h; x2=.5w+u; x3=.5w+1.25u; bot y2l=-o; top y3l=h+o;
+rt x0l=w-u; y0=.25h;
+rt x4r=w-1.25u; top y4r=.9h;
+z4'=z4l+.75stem*unitvector(z4-z3);
+x5r=x6r; z5r=z2l; y6=-hair; y7=-.5d;
+rt x7r-lft x8r=4u; x5r-lft x8r=2u; y8r=-d;
+p1:=z0l{dir-100}..{left}z2l..z1l..{right}z3l;
+p2:=z6r..{down}z7r..{left}z8r..{right}z8l..{up}z7l..z6l--z5l;
+p3:=z5r{down}..subpath (rundy(p2,(0,curve)),infinity) of p2;
+tim1=xpart(p1 intersectiontimes (z6l--(x6l,y2r)));
+filldraw subpath(0,rundy(p1,1).zpet) of p1..subpath(rundy(p3,0),rundy(p3,infinity).zpet) of p3..subpath(rundy(p1,tim1),infinity) of p1..z4r..z4'..{up}z4l..
+ z3r{left}..z1r..{right}z2r..{dir80}z0r..cycle;
+penlabels(0,1,2,3,4,5,6,7,8); labels(4');
+endchar;
+
+iff known chars.sign_cent:
+bskchar "Cent sign";
+beginchar(chars.sign_cent,9u#,asc_height#,comma_depth#); uni "0x00A2";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric cend, tim[]; cend:=stem;
+path p[];
+pos1(curve,0); pos2(hair,90); pos3(hair,270); pos4(cend,20);
+pos0(hair,135);
+lft x1l=u; y1=.5x_height; x2=.5w+u; x3=.5w+1.25u; bot y2l=-o; top y3l=x_height+o;
+rt x0l=w-u; y0=.25x_height;
+rt x4r=w-1.25u; top y4r=.9x_height;
+z4'=z4l+.75stem*unitvector(z4-z3);
+top z5=(x3,h); z6=(x3,-d); pos5(hair, angle(z6-z5)+90); pos6(hair,angle(z6-z5)+90);
+bskpoints(5,6,hair,hair);
+p0:=z0l{dir-100}..{left}z2l..z1l..{right}z3l..z4r..z4'..{up}z4l;
+p1:=z4l{up}..z3r{left}..z1r..{right}z2r..{dir80}z0r;
+p2:=z6ll---z5l;
+p3:=z5rr---z6r;
+(tim0,tim1)=p0 intersectiontimes p3;
+(tim2,tim3)=p0 intersectiontimes p2;
+(tim4-2,tim5)=subpath (2,infinity) of p0 intersectiontimes p2;
+(tim6-2,tim7)=subpath (2,infinity) of p0 intersectiontimes p3;
+(tim8,tim9)=p1 intersectiontimes p3;
+(tim10-2,tim11)=subpath(2,infinity) of p1 intersectiontimes p3;
+(tim12,tim13)=p1 intersectiontimes p2;
+(tim14-2,tim15)=subpath(2,infinity) of p1 intersectiontimes p2;
+filldraw subpath(0,rundy(p0,tim0).zpet) of p0
+ ..subpath(rundy(p3,tim1),infinity) of p3
+ ---subpath(0,rundy(p2,tim3).zpet) of p2
+ ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0
+ ..subpath(rundy(p2,tim5),infinity) of p2
+ ..subpath(0,rundy(p3,tim7).zpet) of p3
+ ..subpath(rundy(p0,tim6),infinity) of p0
+ ..subpath(0,rundy(p1,tim8).zpet) of p1
+ ..subpath(rundy(p3,tim9),rundy(p3,tim11).zpet) of p3
+ ..subpath(rundy(p1,tim10),infinity) of p1..cycle;
+infill subpath(rundy(p1,tim12),rundy(p1,tim14).zpet) of p1
+ ..subpath(rundy(p2,tim15),rundy(p2,tim13).zpet) of p2
+ ..cycle;
+penlabels(0,1,2,3,4,5,6); labels(4');
+endchar;
+
+iff known chars.sign_cent_old:
+bskchar "Old style cent sign";
+beginchar(chars.sign_cent,9u#,asc_height#,comma_depth#); uni "non";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric cend, tim[]; cend:=stem;
+path p[];
+pos1(curve,0); pos2(hair,90); pos3(hair,270); pos4(cend,20);
+pos0(hair,135);
+lft x1l=u; y1=.5x_height; x2=.5w+u; x3=.5w+1.25u; bot y2l=-o; top y3l=x_height+o;
+rt x0l=w-u; y0=.25x_height;
+rt x4r=w-1.25u; top y4r=.9x_height;
+z4'=z4l+.75stem*unitvector(z4-z3);
+z5=(w-u,h); z6=(u,-d); pos5(hair, angle(z6-z5)+90); pos6(hair,angle(z6-z5)+90);
+bskpoints(5,6,hair,hair);
+p0:=z0l{dir-100}..{left}z2l..z1l..{right}z3l..z4r..z4'..{up}z4l;
+p1:=z4l{up}..z3r{left}..z1r..{right}z2r..{dir80}z0r;
+p2:=z6ll---z5l;
+p3:=z5rr---z6r;
+(tim0,tim1)=p0 intersectiontimes p3;
+(tim2,tim3)=p0 intersectiontimes p2;
+(tim4-2,tim5)=subpath (2,infinity) of p0 intersectiontimes p2;
+(tim6-2,tim7)=subpath (2,infinity) of p0 intersectiontimes p3;
+(tim8,tim9)=p1 intersectiontimes p3;
+(tim10-2,tim11)=subpath(2,infinity) of p1 intersectiontimes p3;
+(tim12,tim13)=p1 intersectiontimes p2;
+(tim14-2,tim15)=subpath(2,infinity) of p1 intersectiontimes p2;
+filldraw subpath(0,rundy(p0,tim0).zpet) of p0
+ ..subpath(rundy(p3,tim1),infinity) of p3
+ ---subpath(0,rundy(p2,tim3).zpet) of p2
+ ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0
+ ..subpath(rundy(p2,tim5),infinity) of p2
+ ..subpath(0,rundy(p3,tim7).zpet) of p3
+ ..subpath(rundy(p0,tim6),infinity) of p0
+ ..subpath(0,rundy(p1,tim8).zpet) of p1
+ ..subpath(rundy(p3,tim9),rundy(p3,tim11).zpet) of p3
+ ..subpath(rundy(p1,tim10),infinity) of p1..cycle;
+infill subpath(rundy(p1,tim12),rundy(p1,tim14).zpet) of p1
+ ..subpath(rundy(p2,tim15),rundy(p2,tim13).zpet) of p2
+ ..cycle;
+penlabels(0,1,2,3,4,5,6); labels(4');
+endchar;
+
+charscription(11u,asc_height,0)(
+numeric tim[]; path p[]; oblu:=3oblu;
+pos1(stem,0); pos2(stem,0);
+x1=x2; rt x1r=w-2u; x1'l=x1l-2stem;
+y1=h; y2=.35bar_height;
+ital_serif(1,2); ital_hook(2,3);
+pos4(hair,-90); pos5(curve,180);
+pos6(.5[hair,stem],90); pos7(stem,0);
+x4=.5[u,x2]-u; bot y4r=-o;
+lft x5r=u; y5=bar_height;
+x6=x4+1.5u; top y6r=x_height+o;
+x7=x2; y7=bar_height;
+p0=z7l--reverse _is;
+p1=z7r{down}..z4r..z5r..{right}z6r..{down}z7r;
+p2=reverse _ih..z7l;
+(tim0,tim1)=p0 intersectiontimes p1;
+(tim2-1,tim3)=subpath(1,infinity) of p2 intersectiontimes p1;
+filldraw subpath(rundy(p0,tim0),infinity) of p0
+ ---subpath(0,rundy(p2,tim2).zpet) of p2
+ ..subpath(rundy(p1,tim3),rundy(p1,tim1).zpet) of p1
+ ..cycle;
+infill z7l{down}..z4l..z5l..{right}z6l..cycle;
+penlabels(1,2,4,5,6,7);
+);
+
+iff known chars.latin_d:
+bskchar "The italic letter d";
+beginchar(chars.latin_d,11u#,asc_height#,0); uni "0x0064";
+italcorr asc_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_dcaron:
+bskchar "The italic letter d with caron (treated like comma)";
+beginchar(chars.latin_dcaron,11u#,asc_height#,0); uni "0x010F";
+italcorr asc_height#*slant+1.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+y100''r=h; rt x100'''=w+.5u;
+comma(100,.75dot_size,.5hair,.75comma_depth);
+endchar;
+
+iff known chars.latin_dstroke:
+bskchar "The italic letter d with stroke";
+beginchar(chars.latin_dstroke,11u#,asc_height#,0); uni "0x0111";
+italcorr .4[x_height#,asc_height#]*slant+.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; path p[];
+pos1(stem,0); pos2(stem,0);
+pos8(bar,90); pos8'(bar,90); pos9(bar,90); pos9'(bar,90);
+x1=x2; rt x1r=w-2u; x1'l=x1l-2stem;
+y1=h; y2=.35bar_height;
+ital_serif(1,2); ital_hook(2,3);
+pos4(hair,-90); pos5(curve,180);
+pos6(.5[hair,stem],90); pos7(stem,0);
+x4=.5[u,x2]-u; bot y4r=-o;
+lft x5r=u; y5=bar_height;
+x6=x4+1.5u; top y6r=x_height+o;
+x7=x2; y7=bar_height;
+x9-x8=4u; y9=y9'=y8=y8'=.4[x_height,h]; .5[x8,x9]=x1;
+x8'=x1l; x9'=x1r; bskpoints(8,9,hair,hair);
+p0=z7l---obl(8'l,7l,8l)---z8l..z8rr---obl(8'r,8r,1l)---reverse _is
+ ---obl(9'r,1r,9r)---z9r..z9ll---obl(9'l,9l,2r);
+p1=z7r{down}..z4r..z5r..{right}z6r..{down}z7r;
+p2=reverse _ih..z7l;
+(tim0,tim1)=p0 intersectiontimes p1;
+(tim2-1,tim3)=subpath(1,infinity) of p2 intersectiontimes p1;
+oblu:=3oblu;
+filldraw subpath(rundy(p0,tim0),infinity) of p0
+ ---subpath(0,rundy(p2,tim2).zpet) of p2
+ ..subpath(rundy(p1,tim3),rundy(p1,tim1).zpet) of p1
+ ..cycle;
+infill z7l{down}..z4l..z5l..{right}z6l..cycle;
+penlabels(1,2,4,5,6,7,8,8',9,9'); labels(8rr,9ll);
+endchar;
+
+iff known chars.sign_dong:
+bskchar "Dong sign";
+beginchar(chars.sign_dong,11u#,asc_height#,2rule_thickness#+o#); uni "0x20AB";
+italcorr .4[x_height#,asc_height#]*slant+.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; path p[];
+pos1(stem,0); pos2(stem,0);
+pos8(bar,90); pos8'(bar,90); pos9(bar,90); pos9'(bar,90);
+pos10(rule_thickness,90); pos11(rule_thickness,90);
+x1=x2; rt x1r=w-2u; x1'l=x1l-2stem;
+y1=h; y2=.35bar_height;
+ital_serif(1,2); ital_hook(2,3);
+pos4(hair,-90); pos5(curve,180);
+pos6(.5[hair,stem],90); pos7(stem,0);
+x4=.5[u,x2]-u; bot y4r=-o;
+lft x5r=u; y5=bar_height;
+x6=x4+1.5u; top y6r=x_height+o;
+x7=x2; y7=bar_height;
+x8=.5[x5,x6]; rt x9=w-.5u; y9=y9'=y8=y8'=.4[x_height,h];
+x8'=x1l; x9'=x1r; bskpoints(8,9,hair,hair);
+bot y10l=bot y11l=-d; lft x10=u; rt x11=w-u;
+p0=z7l---obl(8'l,7l,8l)---z8l..z8rr---obl(8'r,8r,1l)---reverse _is
+ ---obl(9'r,1r,9r)---z9r..z9ll---obl(9'l,9l,2r);
+p1=z7r{down}..z4r..z5r..{right}z6r..{down}z7r;
+p2=reverse _ih..z7l;
+(tim0,tim1)=p0 intersectiontimes p1;
+(tim2-1,tim3)=subpath(1,infinity) of p2 intersectiontimes p1;
+oblu:=3oblu;
+filldraw subpath(rundy(p0,tim0),infinity) of p0
+ ---subpath(0,rundy(p2,tim2).zpet) of p2
+ ..subpath(rundy(p1,tim3),rundy(p1,tim1).zpet) of p1
+ ..cycle;
+infill z7l{down}..z4l..z5l..{right}z6l..cycle;
+filldraw bskrule(10,11,rule_thickness,rule_thickness);
+penlabels(1,2,4,5,6,7,8,8',9,9'); labels(8rr,9ll);
+endchar;
+
+iff known chars.latin_eth:
+bskchar "The italic letter eth";
+beginchar(chars.latin_eth,10u#,asc_height#,0); uni "0x00F0";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+path p[]; numeric tim[], theta; oblu:=2oblu;
+pos1(curve,0); pos2(hair,90); pos3(hair,180); pos4(hair,270);
+pos5(curve,180); pos6(hair,-90);
+lft x1l=u; y1=y3=.5x_height; x2=x4=.5w+.5hair; bot y2l=-o; .5[y4r,y2r]=y3;
+rt x5l=w-u; y5l=y3l+stem; top y6l=h+o; lft x6=u;
+p0=z2r{right}..z5r..{dir170}z6r; x3l=xpart (((w,y3)--(.5w,y3))intersectionpoint p0);
+p1=z2l{left}..z1l..z4l..{down}z3l;
+p2=z2r{right}..z5r..{dir170}z6r;
+z0=bsktouch(p1,right,p2,left);
+tim1=xpart(p1 intersectiontimes (z0--(x4,y0)));
+tim2=xpart(p2 intersectiontimes (z0--(w,y0)));
+p3:=z6l{dir-10}..z5l..{left}z2l;
+p4:=z2l{left}..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p2,tim2),infinity) of p2;
+tim0=xpart(p3 intersectiontimes ((0,.5[x_height,h])--(w,.5[x_height,h])));
+top y8=h; x8=.5[x5,x4]; z7=z8+5u*unitvector(((direction tim0 of p3) rotated -95));
+if y7<y4l+o: y7:=y7+hair; fi
+theta:=angle(z8-z7)+90;
+pos7(bar,theta); pos8(bar,theta); bskpoints(7,8,bar,bar);
+p5:=z7rr---z8r;
+p6:=z8ll---z7l;
+(tim3,tim4)=p3 intersectiontimes p5;
+(tim5,tim6)=p3 intersectiontimes p6;
+(tim7,tim8)=p4 intersectiontimes p6;
+(tim9,tim10)=p4 intersectiontimes p5;
+filldraw subpath(0,rundy(p3,tim3).zpet) of p3
+ ..subpath(rundy(p5,tim4),infinity) of p5
+ ..{z7l-z8l}z8ll..subpath(rundy(p3,(tim5,2hair)),infinity) of p3
+ ..subpath(0,rundy(p4,tim7).zpet) of p4
+ ..subpath(rundy(p6,tim8),infinity) of p6
+ ..subpath(0,rundy(p5,tim10).zpet) of p5
+ ..subpath(rundy(p4,tim9),infinity) of p4..cycle;
+infill z1r{up}..z4r..z3r..z2r..cycle;
+penlabels(1,2,3,4,5,6,7,8); labels(7rr,8ll);
+endchar;
+
+charscription(8.5u,x_height,0)(
+numeric tim[]; path p[]; oblu:=2oblu;
+pair esmer;
+pos1(curve,0); pos2(hair,90); pos3(hair,270);
+pos0(hair,135);
+lft x1l=u; y1=.5h; x2=.5w+u; x3=.5w+1.25u; bot y2l=-o; top y3l=h+o;
+rt x0l=w-u; y0=.2h;
+rt x4l=w-u; top y4l=.9h;
+pos4(.5[hair,stem],angle(z4l-z1)+180); pos5(hair,angle(z4-z1)+90);
+z5r=z1; esmer=(z1-z4) rotated -10;
+p1=z0l{dir-100}..{left}z2l..z1l..{right}z3l..z4l..{esmer}z5l;
+p2=z5r{-esmer}..z4r..z3r{left}..z1r..{right}z2r..{dir80}z0r;
+(tim1,tim2-2)=p1 intersectiontimes subpath(2,4) of p2;
+(tim3,tim4-1)=p2 intersectiontimes subpath(1,infinity) of p2;
+filldraw subpath(0,rundy(p1,tim1).zpet) of p1
+ ..subpath(rundy(p2,tim2),infinity) of p2..cycle;
+infill subpath(rundy(p2,tim3),rundy(p2,tim4).zpet) of p2..cycle;
+penlabels(0,1,2,3,4,5);
+);
+
+iff known chars.latin_e:
+bskchar "The italic letter e";
+beginchar(chars.latin_e,8.5u#,x_height#,0); uni "0x0065";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_eacute:
+bskchar "The italic letter e with acute";
+beginchar(chars.latin_eacute,8.5u#,asc_height#,0); uni "0x00E9";
+italcorr asc_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+x101=x3-u;
+usechar;
+acute(100,101);
+endchar;
+
+iff known chars.latin_ecaron:
+bskchar "The italic letter e with caron";
+beginchar(chars.latin_ecaron,8.5u#,asc_height#,0); uni "0x011B";
+italcorr asc_height#*slant+.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x3;
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_egrave:
+bskchar "The italic letter e with grave";
+beginchar(chars.latin_egrave,8.5u#,asc_height#,0); uni "0x00E8";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101r=x3;
+grave(100,101);
+endchar;
+
+iff known chars.latin_edoublegrave:
+bskchar "The italic letter e with double grave";
+beginchar(chars.latin_edoublegrave,8.5u#,asc_height#,0); uni "0x0205";
+italcorr asc_height#*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x102-x100=3u; x102r=x3;
+d_grave(100,101,102,103,whatever);
+endchar;
+
+iff known chars.latin_ecircumflex:
+bskchar "The italic letter e with circumflex";
+beginchar(chars.latin_ecircumflex,8.5u#,asc_height#-.1x_height#,0); uni "0x00EA";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x3;
+circumflex(100,101,102);
+endchar;
+
+iff known chars.latin_eumlaut:
+bskchar "The italic letter e with umlaut";
+beginchar(chars.latin_eumlaut,8.5u#,asc_height#-dot_size#,0); uni "0x00EB";
+italcorr (asc_height#-dot_size#)*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+.5[x100,x101]=x3; x101-x100=3u;
+umlaut(100,101);
+endchar;
+
+iff known chars.latin_emacron:
+bskchar "The italic letter e with macron";
+beginchar(chars.latin_emacron,8.5u#,.5[asc_height#,x_height#],0); uni "0x0113";
+italcorr .5[asc_height#,x_height#]*slant+.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x1r;
+macron(100,101);
+endchar;
+
+iff known chars.latin_edotabove:
+bskchar "The italic letter e with dot above";
+beginchar(chars.latin_edotabove,8.5u#,asc_height#-.5dot_size#,0); uni "0x0117";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x3;
+dotabove(100);
+endchar;
+
+iff known chars.latin_ebreve:
+bskchar "The italic letter e with breve";
+beginchar(chars.latin_ebreve,8.5u#,asc_height#,0); uni "0x0115";
+italcorr asc_height#*slant+.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x3; x102-x100=5u;
+breve(100,101,102);
+endchar;
+
+iff known chars.latin_einvbreve:
+bskchar "The italic letter e with inverted breve";
+beginchar(chars.latin_einvbreve,8.5u#,asc_height#+o#,0); uni "0x0207";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x3; x102-x100=5u;
+tieacc(100,101,102);
+endchar;
+
+iff known chars.latin_eogonek:
+bskchar "The italic letter e with ogonek";
+beginchar(chars.latin_e,8.5u#,x_height#,.85desc_depth#); uni "0x0119";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; path p[]; oblu:=2oblu;
+pair esmer;
+pos1(curve,0); pos2(hair,90); pos3(hair,270); pos0(hair,135);
+pos6(stem,0); pos7(curve,0); pos8(hair,45); pos9(hair,160);
+lft x1l=u; y1=.5h; x2=.5w+u; x3=.5w+1.25u; bot y2l=-o; top y3l=h+o;
+rt x0l=w-u; y0=.2h;
+rt x4l=w-u; top y4l=.9h;
+pos4(.5[hair,stem],angle(z4l-z1)+180); pos5(hair,angle(z4-z1)+90);
+z5r=z1; esmer=(z1-z4) rotated -10;
+x6=x7l+1.5u; z6r=z2l; x8-x7l=3u; rt x9l=x8+1.5u;
+y7=-.5d; bot y8l=-d; y9=-2/3d;
+p1=z0l{dir-100}..{left}z2l..z1l..{right}z3l..z4l..{esmer}z5l;
+p2=z5r{-esmer}..z4r..z3r{left}..z1r..{right}z2r..{dir80}z0r;
+(tim1,tim2-2)=p1 intersectiontimes subpath(2,4) of p2;
+(tim3,tim4-1)=p2 intersectiontimes subpath(1,infinity) of p2;
+tim0=xpart(p1 intersectiontimes((x6l,-o)--(x6l,y2r)));
+p3=reverse(z6l{z7l-z6r}..z7l...z8l..{z6-z7}z9l..z9r{z7-z6}..z8r..z7r..z6r);
+filldraw subpath(0,rundy(p1,1).zpet) of p1
+ ..subpath(rundy(p3,0),rundy(p3,infinity).zpet) of p3
+ ..subpath(rundy(p1,tim0),rundy(p1,tim1).zpet) of p1
+ ..subpath(rundy(p2,tim2),infinity) of p2..cycle;
+infill subpath(rundy(p2,tim3),rundy(p2,tim4).zpet) of p2..cycle;
+penlabels(0,1,2,3,4,5,6,7,8,9);
+endchar;
+
+iff known chars.latin_ecedilla:
+bskchar "The italic letter e with cedilla";
+beginchar(chars.latin_ecedilla,8.5u#,x_height#,.65desc_depth#); uni "0x0229";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; path p[]; oblu:=2oblu;
+pair esmer;
+pos1(curve,0); pos2(hair,90); pos3(hair,270); pos0(hair,135);
+pos6(.5stem,0); pos7(.5stem,0); pos8(.8stem,0); pos9(.5stem,-110);
+lft x1l=u; y1=.5h; x2=.5w+u; x3=.5w+1.25u; bot y2l=-o; top y3l=h+o;
+rt x0l=w-u; y0=.2h;
+rt x4l=w-u; top y4l=.9h;
+pos4(.5[hair,stem],angle(z4l-z1)+180); pos5(hair,angle(z4-z1)+90);
+z5r=z1; esmer=(z1-z4) rotated -10;
+x6r=x7r; z6r=z2l; y7=-hair; y8=-.5d;
+rt x8r-lft x9r=4u; x6r-lft x9r=2u; y9r=-d;
+p1=z0l{dir-100}..{left}z2l..z1l..{right}z3l..z4l..{esmer}z5l;
+p2=z5r{-esmer}..z4r..z3r{left}..z1r..{right}z2r..{dir80}z0r;
+p3=z7r..{down}z8r..{left}z9r..{right}z9l..{up}z8l..z7l--z6l;
+p4=z6r{down}..subpath (rundy(p2,(0,curve)),infinity) of p3;
+tim0=xpart(p1 intersectiontimes (z7l--(x6l,y2r)));
+(tim1,tim2-2)=p1 intersectiontimes subpath(2,4) of p2;
+(tim3,tim4-1)=p2 intersectiontimes subpath(1,infinity) of p2;
+filldraw subpath(0,rundy(p1,1).zpet) of p1
+ ..subpath(rundy(p4,0),rundy(p4,infinity).zpet) of p4..
+ subpath(rundy(p1,tim0),rundy(p1,tim1).zpet) of p1
+ ..subpath(rundy(p2,tim2),infinity) of p2..cycle;
+infill subpath(rundy(p2,tim3),rundy(p2,tim4).zpet) of p2..cycle;
+penlabels(0,1,2,3,4,5,6,7,8,9);
+endchar;
+
+iff known chars.latin_oe:
+bskchar "The italic letter oe";
+beginchar(chars.latin_oe,13.5u#,x_height#,0); uni "0x00E6";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; path p[]; oblu:=2oblu;
+pair esmer;
+pos1(curve,0); pos2(hair,90); pos3(hair,270);
+pos0(hair,135);
+pos6(curve,0); pos7(hair,90); pos8(curve,180); pos9(hair,270);
+lft x1l=6.5u; y1=.5h; x2=10.25u; x3-x2=.25u; bot y2l=bot y7l=-o; top y3l=top y9l=h+o;
+rt x0l=w-u; y0=.2h;
+rt x4l=w-u; top y4l=.9h;
+pos4(.5[hair,stem],angle(z4l-z1)+180); pos5(hair,angle(z4-z1)+90);
+z5r=z1; esmer=(z1-z4) rotated -10;
+lft x6l=u; x8=x1; y6=y8=.5h; .5[x7,x9]=.5[x6,x8]; x7=x9;
+x9r:=x9r+.25u; x7r:=x7r-.25u;
+p1=z0l{dir-100}..{left}z2l..z1l..{right}z3l..z4l..{esmer}z5l;
+p2=z5r{-esmer}..z4r..z3r{left}..z1r..{right}z2r..{dir80}z0r;
+p3=z8l{down}..z7l..z6l{up}..z9l..{down}z8l;
+(tim0,tim1)=p1 intersectiontimes p3;
+(tim2,tim3-2)=p3 intersectiontimes subpath(2,3) of p1;
+(tim4,tim5-2)=p1 intersectiontimes subpath(2,4) of p2;
+(tim6,tim7-1)=p2 intersectiontimes subpath(1,infinity) of p2;
+filldraw subpath(0,rundy(p1,tim0).zpet) of p1
+ ..subpath(rundy(p3,tim1),rundy(p3,tim2).zpet) of p3
+ ..subpath(rundy(p1,tim3),rundy(p1,tim4).zpet) of p1
+ ..subpath(rundy(p2,tim5),infinity) of p2..cycle;
+infill subpath(rundy(p2,tim6),rundy(p2,tim7).zpet) of p2..cycle;
+infill z6r{up}..z9r..{down}z8r..z7r..{up}cycle;
+penlabels(0,1,2,3,4,5,6,7,8,9);
+endchar;
+
+charscription(13u,x_height,0)(
+numeric tim[]; path p[]; oblu:=2oblu;
+pair esmer;
+pos1(curve,0); pos2(hair,90); pos3(hair,270);
+pos0(hair,135); pos6(stem,0); pos7(stem,0);
+pos9(hair,90); pos10(curve,180); pos11(.5[hair,stem],-90);
+pos12(stem,0);
+lft x1l=6u; y1=.5h; x2=10.25u; x3-x2=.25u; bot y2l=-o; top y3l=top y9r=h+o;
+rt x0l=w-u; y0=.2h;
+rt x4l=w-u; top y4l=.9h;
+x6=x7=x1; x12=x6; y12=.5bar_height;
+top y6=h-hair; y7=.35bar_height;
+x9=x7-u; y10=bar_height; lft x10r=u;
+bot y11r=-o; x11=x9-u;
+pos4(.5[hair,stem],angle(z4l-z1)+180); pos5(hair,angle(z4-z1)+90);
+z5r=z1; esmer=(z1-z4) rotated -10;
+p1=z0l{dir-100}..{left}z2l..z1l..{right}z3l..z4l..{esmer}z5l;
+p2=z5r{-esmer}..z4r..z3r{left}..z1r..{right}z2r..{dir80}z0r;
+p3=z12r---z6r..z9r{left}..z10r..z11r..{up}z12r;
+x8l=x0;
+ital_hook(7,8);
+p4=_ih;
+p5=z9l{left}..z10l..z11l..{up}z12l---z6l;
+(tim0,tim1)=p1 intersectiontimes p4;
+(tim2,tim3)=p4 intersectiontimes p3;
+(tim4-2,tim5)=subpath(2,infinity) of p1 intersectiontimes subpath (0,3) of p3;
+(tim6,tim7-2)=p1 intersectiontimes subpath(2,4) of p2;
+(tim8,tim9-1)=p2 intersectiontimes subpath(1,infinity) of p2;
+filldraw subpath(0,rundy(p1,tim0).zpet) of p1
+ ..(reverse subpath(rundy(p4,(tim2,f_obl)),rundy(p4,tim1).zpet) of p4)
+ ..(reverse subpath(rundy(p3,tim5),rundy(p3,(tim3,f_obl)).zpet) of p3)
+ ..subpath(rundy(p1,tim4),rundy(p1,tim6).zpet) of p1
+ ..subpath(rundy(p2,tim7),infinity) of p2..cycle;
+infill subpath(rundy(p2,tim8),rundy(p2,tim9).zpet) of p2..cycle;
+infill p5..cycle;
+penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12);
+);
+
+iff known chars.latin_ae:
+bskchar "The italic letter ae";
+beginchar(chars.latin_ae,13u#,x_height#,0); uni "0x0153";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_aemacron:
+bskchar "The italic ligature ae with macron";
+beginchar(chars.latin_aemacron,13u#,.5[asc_height#,x_height#],0); uni "0x01E3";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x3;
+macron(100,101);
+endchar;
+
+iff known chars.latin_aeacute:
+bskchar "The italic ligature ae with acute";
+beginchar(chars.latin_aeacute,13u#,asc_height#,0); uni "0x01FD";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x6r;
+acute(100,101);
+endchar;
+
+iff known chars.latin_f:
+bskchar "The italic letter f";
+beginchar(chars.latin_f,7u#,asc_height#,desc_depth#); uni "0x0066";
+italcorr asc_height#*slant+3.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+oblu:=2oblu;
+pos1(stem,0); pos2(stem,0); pos3(hair,-90);
+pos4(hair,-90); pos5(stem,-150); pos6(stem,30);
+x1=x2; x1=.5w;
+y2=-.5d; .5[y1,y2]=.5(h-d);
+bot y4r=-d-o; if monospace: lft x5r=0; x4=.5[x5,x2]; else: x4=.5u; lft x5r=x4-x1; fi y5l=.75[y4l,y2];
+z5'=z5l+.5stem*unitvector(z5-z4);
+top y3l=h+o; x6-x1=x2-x5; y6r=y3-1.5like_stem; x3=.5[x1,x6];
+z6'=z6+.25stem*unitvector(z6-z3);
+pos7(hair,90); pos8(hair,90); pos9(hair,90); pos10(hair,90);
+y7=y8=y9=y10=bot x_height;
+x1-x7=x10-x1; x8=x1l; x9=x1r; lft x7=.5u;
+filldraw z4r{right}..z2r---obl(9l,2r,10l)
+ ---z10l..z10r---obl(9r,10r,1r)---z1r
+ ..{right}z3r..z6l..z6'..z6r{up}..z3l{left}
+ ..z1l---obl(8r,1l,7r)---z7r..z7l
+ ---obl(8l,7l,2l)---z2l..{left}z4l..z5l{up}
+ ..z5'..z5r..cycle;
+penlabels(1,2,3,4,5,6,7,8,9,10); labels(5',6');
+endchar;
+
+iff known chars.latin_fi:
+bskchar "The italic ligature fi";
+beginchar(chars.latin_fi,12u#,asc_height#,desc_depth#); uni "0xFB01";
+italcorr asc_height#*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+oblu:=2oblu;
+pos1(stem,0); pos2(stem,0); pos3(hair,-90);
+pos4(hair,-90); pos5(stem,-150); penpos6(dot_size,0);
+pos11(stem,0); pos12(stem,0);
+x1=x2; x1=.5*7u;
+y2=-.5d; .5[y1,y2]=.5(h-d);
+bot y4r=-d-o; if monospace: x5=0; x4=.5[x2,x5]; else: x4=.5u; lft x5r=x4-x1; fi y5l=.75[y4l,y2];
+z5'=z5l+.5stem*unitvector(z5-z4);
+top y3l=h+o; if monospace: x6r=w-2u; else: x6-x1=x2-x5; fi
+y6r=y3-1.5like_stem; x3=.5[x1,x6];
+pos7(hair,90); pos8(hair,90); pos9(hair,90); pos10(hair,90);
+y7=y8=y9=y10=bot x_height;
+x1-x7=x10-x1; x8=x1l; x9=x1r; lft x7=.5u;
+x11r=x12r=x6;
+y11=x_height-.3bar_height; y12=.35bar_height;
+ital_hook(12,13);
+filldraw z4r{right}..z2r---obl(9l,2r,10l)
+ ---z10l..z11l---_ih---z11r
+ ..z10r---obl(9r,10r,1r)---z1r
+ ..{right}z3r..z6l{dir-120}..z6r{up}..z3l{left}
+ ..z1l---obl(8r,1l,7r)---z7r..z7l
+ ---obl(8l,7l,2l)---z2l..{left}z4l..z5l{up}
+ ..z5'..z5r..cycle;
+penlabels(0,1,2);
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12); labels(5');
+endchar;
+
+iff known chars.latin_fj:
+bskchar "The italic ligature fj";
+beginchar(chars.latin_fj,11u#,asc_height#,desc_depth#); uni "non";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+oblu:=2oblu;
+pos1(stem,0); pos2(stem,0); pos3(hair,-90);
+pos4(hair,-90); pos5(stem,-150); penpos6(dot_size,0);
+pos11(stem,0); pos12(stem,0);
+pos14(hair,-90); pos15(stem,-150);
+x1=x2; x1=.5*7u;
+y2=-.5d; .5[y1,y2]=.5(h-d);
+bot y4r=-d-o; if monospace: x5=0; x4=.5[x2,x5]; else: x4=.5u; lft x5r=x4-x1; fi y5l=.75[y4l,y2];
+z5'=z5l+.5stem*unitvector(z5-z4);
+top y3l=h+o; if monospace: x6r=w-2u; else: x6-x1=x2-x5; fi y6r=y3-1.5like_stem; x3=.5[x1,x6];
+z6'=z6+.25stem*unitvector(z6-z3);
+pos7(hair,90); pos8(hair,90); pos9(hair,90); pos10(hair,90);
+y7=y8=y9=y10=bot x_height;
+x1-x7=x10-x1; x8=x1l; x9=x1r; lft x7=.5u;
+x11=x12; rt x11r=w-u;
+y11=x_height-.3bar_height; y12=-.6d;
+bot y14r=-d-o; x15r=x2r+2hair; .5[x11,x15]=x14; y15l=.75[y14l,y12];
+z15'=z15l+.5stem*unitvector(z15-z14);
+filldraw z4r{right}..z2r---obl(9l,2r,10l)
+ ---z10l..z11l---z12l..{left}z14l
+ ..z15l{up}..z15'..z15r..z14r{right}..z12r---z11r
+ ..z10r---obl(9r,10r,1r)---z1r
+ ..{right}z3r..z6l{dir-120}..z6r{up}..z3l{left}
+ ..z1l---obl(8r,1l,7r)---z7r..z7l
+ ---obl(8l,7l,2l)---z2l..{left}z4l..z5l{up}
+ ..z5'..z5r..cycle;
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12,14,15); labels(5',6',15');
+endchar;
+
+charscription(12.5u,asc_height,desc_depth)(
+oblu:=2oblu;
+pos1(stem,0); pos2(stem,0); pos3(hair,-90);
+pos4(hair,-90); pos5(stem,-150); pos6(stem,30);
+pos11(stem,0); pos12(stem,0);
+x1=x2; x1=.5*7u;
+y2=-.5d; .5[y1,y2]=.5(h-d);
+bot y4r=-d-o; if monospace: x5=0; x4=.5[x2,x5]; else: x4=.5u; lft x5r=x4-x1; fi y5l=.75[y4l,y2];
+z5'=z5l+.5stem*unitvector(z5-z4);
+top y3l=h+o; if monospace: x6r=w-2.5u; else: x6-x1=x2-x5; fi y6r=y3-1.5like_stem; x3=.5[x1,x6];
+z5'=z5l+.5stem*unitvector(z5-z4);
+z6'=z6+.25stem*unitvector(z6-z3);
+pos7(hair,90); pos8(hair,90); pos9(hair,90); pos10(hair,90);
+y7=y8=y9=y10=bot x_height;
+x1-x7=x10-x1; x8=x1l; x9=x1r; lft x7=.5u;
+x11=x12=x6;
+y11=h; y12=.35bar_height;
+ital_hook(12,13);
+filldraw z4r{right}..z2r---obl(9l,2r,10l)
+ ---z10l..z10r---obl(9r,10r,1r)---z1r
+ ..{right}z3r..z11l+1.5curve*down---_ih
+ ---z11r---z11l+o*down..z3l{left}
+ ..z1l---obl(8r,1l,7r)---z7r..z7l
+ ---obl(8l,7l,2l)---z2l..{left}z4l..z5l{up}
+ ..z5'..z5r..cycle;
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12); labels(5',6');
+);
+
+iff known chars.latin_fl:
+bskchar "The italic ligature fl";
+beginchar(chars.latin_fl,12.5u#,asc_height#,desc_depth#); uni "0xFB02";
+italcorr asc_height#*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_flacute:
+bskchar "The italic ligature fl with acute";
+beginchar(chars.latin_flacute,12.5u#, asc_height#+.3x_height#, 0); uni "non";
+italcorr (asc_height#+.3x_height#)*slant;
+adjust_fit(0,serif_fit#);
+pickup tiny.nib;
+usechar;
+x101=x11l-hair; x100r=w-u; y101=asc_height+.75u;
+acute(100,101).capital;
+endchar;
+
+iff known chars.latin_flcaron:
+bskchar "The italic ligature fl with caron";
+beginchar(chars.latin_flcaron,12.5u#, asc_height#, 0); uni "non";
+italcorr asc_height#*slant+u#;
+adjust_fit(0,serif_fit#);
+pickup tiny.nib;
+usechar;
+y100''r=h; x100'''=w;
+comma(100,.75dot_size,.5hair,.75comma_depth);
+endchar;
+
+iff known chars.latin_ff:
+bskchar "The italic ligature ff";
+beginchar(chars.latin_ff,12.5u#,asc_height#,desc_depth#); uni "0xFB00";
+italcorr asc_height#*slant+2.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; oblu:=2oblu;
+path p[];
+pos1(stem,0); pos2(stem,0); pos3(hair,-90);
+pos4(hair,-90); pos5(stem,-150); pos6(stem,30);
+pos11(stem,0); pos12(stem,0); pos13(hair,-90);
+pos14(hair,-90); pos15(stem,-150); pos16(stem,30);
+x1=x2=.5*7u; x11=x12=x6;
+y2=y12=-.5d; .5[y1,y2]=.5(h-d); y11=y1;
+bot y4r=bot y14r=-d-o; if monospace: x5=0; x4=.5[x2,x5]; else: x4=.5u; lft x5r=x4-x1; fi y5l=y15l=.75[y4l,y2];
+x14=.5[x15,x11]; lft x15r=x2r+2hair; x16-x11=x12-x15; x13=.5[x11,x16];
+z5'=z5l+.5stem*unitvector(z5-z4);
+top y3l=top y13l=h+o; if monospace: x6=w-3u; else: x6-x1=x2-x5; fi y6r=y16r=y3-1.5like_stem; x3=.5[x1,x6];
+z6'=z6+.25stem*unitvector(z6-z3);
+z15'=z15l+.5stem*unitvector(z15-z14); z16'=z16+.25stem*unitvector(z16-z13);
+pos7(hair,90); pos8(hair,90); pos9(hair,90); pos10(hair,90);
+pos17(hair,90); pos18(hair,90); pos19(hair,90); pos20(hair,90);
+y7=y8=y9=y10=y17=y18=y19=y20=bot x_height;
+x1-x7=x10-x1; x8=x1l; x9=x1r; lft x7=.5u;
+x11-x17=x20-x11; x18=x11l; x19=x11r; lft x17=.5w;
+p0:=z4r{right}..z2r---obl(9l,2r,18l)---obl(18l,9l,12l)---z12l..{left}z14l
+ ..z15l{up} ..z15'..z15r..z14r{right}..z12r---obl(19l,12r,20l)---z20l
+ ..z20r---obl(19r,20r,11r)---z11r ..{right}z13r..z16l..z16'..z16r{up}
+ ..z13l{left}..{down}z11l;
+p1:=z6r{up}..{left}z3l..z1l---obl(8r,1l,7r)--z7r..z7l---obl(8l,7l,2l)
+ ---z2l..z4l{left}..{up}z5l..z5'..z5r..{right}z4r;
+(tim0-length p0 +2,tim1)=subpath (length p0-2,infinity) of p0 intersectiontimes p1;
+if y6l>y11l:
+ p2:=z11l---obl(18r,11l,9r)---obl(9r,18r,1r)---z1r..{right}z3r..z6l..z6';
+ p3:=z13l{left}..{down}z11l;
+else:
+ p2:=obl(9r,18r,1r)---z1r..{right}z3r..z6l..z6';
+ p3:=z13l{left}..{down}z11l---obl(18r,11l,9r);
+fi
+ (tim2,tim3)=p2 intersectiontimes p3;
+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
+ ..subpath(rundy(p3,(tim3,f_obl)),infinity) of p3..cycle;
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); labels(5',6',15',16');
+endchar;
+
+iff known chars.latin_ffi and not monospace:
+bskchar "The italic ligature ffi";
+beginchar(chars.latin_ffi,17.5u#,asc_height#,desc_depth#); uni "0xFB03";
+italcorr asc_height#*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; oblu:=2oblu;
+path p[];
+pos1(stem,0); pos2(stem,0); pos3(hair,-90);
+pos4(hair,-90); pos5(stem,-150); pos6(stem,30);
+pos11(stem,0); pos12(stem,0); pos13(hair,-90);
+pos14(hair,-90); pos15(stem,-150); penpos16(dot_size,0);
+pos21(stem,0); pos22(stem,0);
+x1=x2=.5*7u; x11=x12=x6;
+y2=y12=-.5d; .5[y1,y2]=.5(h-d); y11=y1;
+bot y4r=bot y14r=-d-o; x4=.5u; lft x5r=x4-x1; y5l=y15l=.75[y4l,y2];
+x14=.5[x15,x11]; lft x15r=x2r+2hair; x16-x11=4/3(x12-x15); x13=.5[x11,x16];
+z5'=z5l+.5stem*unitvector(z5-z4);
+top y3l=top y13l=h+o; x6-x1=x2-x5; y6r=y16r=y3-1.5like_stem; x3=.5[x1,x6];
+z6'=z6+.25stem*unitvector(z6-z3);
+z15'=z15l+.5stem*unitvector(z15-z14); z16'=z16+.25stem*unitvector(z16-z13);
+pos7(hair,90); pos8(hair,90); pos9(hair,90); pos10(hair,90);
+pos17(hair,90); pos18(hair,90); pos19(hair,90); pos20(hair,90);
+y7=y8=y9=y10=y17=y18=y19=y20=bot x_height;
+x1-x7=x10-x1; x8=x1l; x9=x1r; lft x7=.5u;
+x11-x17=x20-x11; x18=x11l; x19=x11r; lft x17=6u;
+x21r=x22r=x16; y21=x_height-.3bar_height; y22=.35bar_height;
+ital_hook(22,23).alt;
+p0:=z4r{right}..z2r---obl(9l,2r,18l)---obl(18l,9l,12l)---z12l..{left}z14l
+ ..z15l{up} ..z15'..z15r..z14r{right}..z12r---obl(19l,12r,20l)---z20l
+ ..z21l---_ih---z21r..z20r---obl(19r,20r,11r)---z11r ..{right}z13r
+ ..{dir-120}z16l..z16r{up}..z13l{left}..{down}z11l;
+p1:=z6r{up}..{left}z3l..z1l---obl(8r,1l,7r)--z7r..z7l---obl(8l,7l,2l)
+ ---z2l..z4l{left}..{up}z5l..z5'..z5r..{right}z4r;
+if y6l>y11l:
+ p2:=z11l---obl(18r,11l,9r)---obl(9r,18r,1r)---z1r..{right}z3r..z6l..z6';
+ p3:=z13l{left}..{down}z11l;
+else:
+ p2:=obl(9r,18r,1r)---z1r..{right}z3r..z6l..z6';
+ p3:=z13l{left}..{down}z11l---obl(18r,11l,9r);
+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
+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
+ ..subpath(rundy(p3,(tim3,f_obl)),infinity) of p3..cycle;
+}};
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22); labels(5',6',15',16');
+endchar;
+
+iff known chars.latin_ffl and not monospace:
+bskchar "The italic ligature ffl";
+beginchar(chars.latin_ffl,18u#,asc_height#,desc_depth#); uni "0xFB04";
+italcorr asc_height#*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; oblu:=2oblu;
+path p[];
+pos1(stem,0); pos2(stem,0); pos3(hair,-90);
+pos4(hair,-90); pos5(stem,-150); pos6(stem,30);
+pos11(stem,0); pos12(stem,0); pos13(hair,-90);
+pos14(hair,-90); pos15(stem,-150); penpos16(dot_size,0);
+pos21(stem,0); pos22(stem,0);
+x1=x2=.5*7u; x11=x12=x6;
+y2=y12=-.5d; .5[y1,y2]=.5(h-d); y11=y1;
+bot y4r=bot y14r=-d-o; x4=.5u; lft x5r=x4-x1; y5l=y15l=.75[y4l,y2];
+x14=.5[x15,x11]; lft x15r=x2r+2hair; x16-x11=4/3(x12-x15); x13=.5[x11,x16];
+z5'=z5l+.5stem*unitvector(z5-z4);
+top y3l=top y13l=h+o; x6-x1=x2-x5; y6r=y16r=y3-1.5like_stem; x3=.5[x1,x6];
+z6'=z6+.25stem*unitvector(z6-z3);
+z15'=z15l+.5stem*unitvector(z15-z14); z16'=z16+.25stem*unitvector(z16-z13);
+pos7(hair,90); pos8(hair,90); pos9(hair,90); pos10(hair,90);
+pos17(hair,90); pos18(hair,90); pos19(hair,90); pos20(hair,90);
+y7=y8=y9=y10=y17=y18=y19=y20=bot x_height;
+x1-x7=x10-x1; x8=x1l; x9=x1r; lft x7=.5u;
+x11-x17=x20-x11; x18=x11l; x19=x11r; lft x17=6u;
+x21=x22=x16; y21=h; y22=.35bar_height;
+ital_hook(22,23).alt;
+p0:=z4r{right}..z2r---obl(9l,2r,18l)---obl(18l,9l,12l)---z12l..{left}z14l
+ ..z15l{up} ..z15'..z15r..z14r{right}..z12r---obl(19l,12r,20l)---z20l
+ ..z20r---obl(19r,20r,11r)---z11r ..{right}z13r
+ ..z21l+1.5curve*down---_ih---z21r---z21l+o*down
+ ..z13l{left}..{down}z11l;
+p1:=z6r{up}..{left}z3l..z1l---obl(8r,1l,7r)--z7r..z7l---obl(8l,7l,2l)
+ ---z2l..z4l{left}..{up}z5l..z5'..z5r..{right}z4r;
+if y6l>y11l:
+ p2:=z11l---obl(18r,11l,9r)---obl(9r,18r,1r)---z1r..{right}z3r..z6l..z6';
+ p3:=z13l{left}..{down}z11l;
+else:
+ p2:=obl(9r,18r,1r)---z1r..{right}z3r..z6l..z6';
+ p3:=z13l{left}..{down}z11l---obl(18r,11l,9r);
+fi
+(tim0,tim1)=p0 intersectiontimes p1;
+(tim2,tim3)=p2 intersectiontimes p3;
+filldraw subpath(0,rundy(p0,tim0).zpet) of p0
+ ..subpath(rundy(p1,tim1),infinity) of p1..cycle;
+infill subpath(0,rundy(p2,(tim2,hair)).zpet) of p2
+ ..subpath(rundy(p3,(tim3,hair)),infinity) of p3..cycle;
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22); labels(5',6',15',16');
+endchar;
+
+charscription(10.5u,x_height,desc_depth)(
+path p[]; numeric tim[]; oblu:=2oblu;
+pos1(curve,0); pos2(hair,90); pos3(curve,180); pos4(hair,270);
+lft x1l=1.75u; rt x3l=w-2.25u; y1=y3=.5[y4l,y2l]; .5[x2,x4]=.5[x1,x3]; x2=x4;
+bot y2l=1/3bar_height+.25stem; top y4l=h+o; x4r:=x4r+.25u; x2r:=x2r-.25u;
+p0:=z1l{down}..z2l..{up}z3l..z4l..{down}z1l;
+tim1=xpart(p0 intersectiontimes ((0,y2l+tiny)--(w,y2l+tiny)));
+z5r=point tim1 of p0;
+tim2=xpart(p0 intersectiontimes ((x5r-hair+tiny,0)--(x5r-hair+tiny,h)));
+z5l=point tim2 of p0; z5=.5[z5l,z5r];
+lft z5'=(1.75u,0);
+pos6(stem,90); pos8(hair,270);
+y7l=-.5d; y6=0; x6=.5w; x6r:=x6r-.5hair;
+rt x7l=w-2u; x8=x2; bot y8r=-d;
+pos9(dot_size,180); lft x9r=u; top y9=-.5d;
+p1=subpath(0,.5tim2) of p0 .. z5l+hair*dir-130{dir-130}..z5'..{right}z6l..z7l..{left}z8l;
+pos7(stem,angle(direction 3 of p1)+90);
+y9'-y9=.1d; z9'=whatever[z9,z5];
+pos10(hair,135); pos11(hair,135); z11-z10=tiny*dir45;
+z10=(.5[z2,z4]--(w-u,h+u)) intersectionpoint p0;
+pos12(stem,45); pos12'(stem,45); x12r=w-u; y12l=y11l; z12'=z12+.5tiny*dir135;
+p2=.5[z2,z4]---z11l..{dir-60}z12'l--z12l;
+p3=z12r---z12'r..z11r---z10r--z10;
+p4=z8r{right}..z7r..{dir190}z6r..{dir30}z5r;
+(tim3,tim4)=p0 intersectiontimes p2;
+(tim5,tim6)=p3 intersectiontimes p0;
+filldraw p1..{(w,h)-z9l}z9l..z9'{left}..{down}z9r..
+ subpath(0,rundy(p4,(infinity,if bold_face: 1.5f_obl else: oblu fi)).zpet) of p4
+ ..subpath(rundy(p0,tim1),rundy(p0,tim3).zpet) of p0..
+ subpath(rundy(p2,1),infinity) of p2{dir0}..
+ subpath(0,rundy(p3,(2,hair)).zpet) of p3..
+ subpath(rundy(p0,(tim6, if bold_face: f_obl else: oblu fi)),infinity) of p0-- cycle;
+infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12,12'); labels(5',9');
+);
+
+iff known chars.latin_g:
+bskchar "The italic letter g";
+beginchar(chars.latin_g,10.5u#,x_height#,desc_depth#); uni "0x0067";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_gacute:
+bskchar "The italic letter g with acute";
+beginchar(chars.latin_gacute,10.5u#,asc_height#,desc_depth#); uni "0x01F5";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4-o;
+acute(100,101);
+endchar;
+
+iff known chars.latin_gcaron:
+bskchar "The italic letter g with caron";
+beginchar(chars.latin_gcaron,10.5u#,asc_height#,desc_depth#); uni "0x01E7";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4r;
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_gcircumflex:
+bskchar "The italic letter g with circumflex";
+beginchar(chars.latin_gcircumflex,10.5u#,asc_height#-.1x_height#,desc_depth#); uni "0x011D";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4r;
+circumflex(100,101,102);
+endchar;
+
+iff known chars.latin_gcedilla:
+bskchar "The italic letter g with cedilla (treated as comma)";
+beginchar(chars.latin_gcedilla,10.5u#,x_height#+.75comma_depth#+o#,desc_depth#); uni "0x0123";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+lft x100=x4; bot y100''r=x_height+2o;
+ammoc(100,.75dot_size,.5hair,.75comma_depth);
+endchar;
+
+iff known chars.latin_gdotabove:
+bskchar "The italic letter g with dot above";
+beginchar(chars.latin_gdotabove,10.5u#,asc_height#-.5dot_size#,desc_depth#); uni "0x0121";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x4;
+dotabove(100);
+endchar;
+
+iff known chars.latin_gbreve:
+bskchar "The italic letter g with breve";
+beginchar(chars.latin_gbreve,10.5u#,asc_height#,desc_depth#); uni "0x011F";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4r; x102-x100=5u;
+breve(100,101,102);
+endchar;
+
+charscription(12u,asc_height,0)(
+numeric tim[]; oblu:=3oblu;
+path p[];
+pos1(stem,0); pos2(stem,0); pos2'(.8stem,5);
+pos3(hair,90); pos4(stem,0); pos5(stem,0);
+x1=x2=x2'; x1l=2.5u;
+y1=h; y2=u; bot y2'=0;
+x4=x5; rt x4r=w-2u; y4=.5[bar_height,x_height]; y5=.35bar_height;
+top y3r=x_height+o; x3=.5[x2,x4]+.5u;
+ital_serif(1,2); ital_hook(5,6);
+p0=z4r..z3r..{down}z2l;
+p0:=z4r{up}..{direction 1 of p0}z3r..{down}z2l;
+p1=z2r---z1r.._is---z2l..z2'l..z2'r;
+(tim0,tim1)=p0 intersectiontimes p1;
+filldraw z2r{up}..z3l..z4l---_ih---subpath(0,rundy(p0,tim0).zpet) of p0
+ ..subpath(rundy(p1,tim1),infinity) of p1..{up}cycle;
+penlabels(1,2,2',3,4,5);
+);
+
+iff known chars.latin_h:
+bskchar "The italic letter h";
+beginchar(chars.latin_h,12u#,asc_height#,0); uni "0x0068";
+italcorr .5[bar_height#,x_height#]*slant-.75u#;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_hcaron:
+bskchar "The italic letter h with caron";
+beginchar(chars.latin_hcaron,12u#,asc_height#,0); uni "0x021F";
+italcorr .5[bar_height#,x_height#]*slant-.25u#;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+lft x101=x3+o; x102-x100=4.5u; y100=h+hair; y101l=1/4[x_height,y100]+hair;
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_hcircumflex:
+bskchar "The italic letter h with circumflex";
+beginchar(chars.latin_hcircumflex,12u#,asc_height#,0); uni "0x0125";
+italcorr .5[bar_height#,x_height#]*slant-.75u#;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+lft x101=x3+o; x102-x100=4.5u;
+circumflex(100,101,102);
+endchar;
+
+iff known chars.latin_hstroke:
+bskchar "The italic letter h with stroke";
+beginchar(chars.latin_hstroke,12u#, asc_height#, 0); uni "0x0127";
+italcorr .5[bar_height#,x_height#]*slant-.75u#;
+adjust_fit(serif_fit#,serif_fit#);
+pickup tiny.nib;
+numeric tim[];
+path p[];
+pos1(stem,0); pos2(stem,0); pos2'(.8stem,5);
+pos3(hair,90); pos4(stem,0); pos5(stem,0);
+pos7(bar,90); pos7'(bar,90); pos8(bar,90); pos8'(bar,90);
+x1=x2=x2'; x1l=2.5u;
+y1=h; y2=u; bot y2'=0;
+x4=x5; rt x4r=w-2u; y4=.5[bar_height,x_height]; y5=.35bar_height;
+top y3r=x_height+o; x3=.5[x2,x4]+.5u;
+ital_serif(1,2); ital_hook(5,6);
+x8-x7=4u; y8=y8'=y7=y7'=.4[x_height,h]; .5[x7,x8]=x1;
+x7'=x1l; x8'=x1r; bskpoints(7,8,hair,hair);
+p0=z4r..z3r..{down}z2l;
+p0:=z4r{up}..{direction 1 of p0}z3r..{down}z2l;
+p1=z2r---obl(8'l,2r,8l)---z8ll..z8r---obl(8'r,8r,1r)---z1r.._is
+ ---obl(7'r,1l,7r)---z7rr..z7l---obl(7'l,7l,2l)---z2l..z2'l..z2'r;
+(tim0,tim1)=p0 intersectiontimes p1;
+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;
+penlabels(1,2,2',3,4,5,7,7',8,8'); labels(7',8');
+endchar;
+
+iff known chars.latin_hbar:
+bskchar "The italic letter h with bar (Dirac constant)";
+beginchar(chars.latin_hbar,12u#, asc_height#, 0); uni "0x210F";
+italcorr .5[bar_height#,x_height#]*slant-.75u#;
+adjust_fit(serif_fit#,serif_fit#);
+pickup tiny.nib; oblu.more:=2f_obl;
+numeric tim[], theta;
+path p[];
+pos1(stem,0); pos2(stem,0); pos2'(.8stem,5);
+pos3(hair,90); pos4(stem,0); pos5(stem,0);
+x1=x2=x2'; x1l=2.5u;
+y1=h; y2=u; bot y2'=0;
+x4=x5; rt x4r=w-2u; y4=.5[bar_height,x_height]; y5=.35bar_height;
+top y3r=x_height+o; x3=.5[x2,x4]+.5u;
+ital_serif(1,2); ital_hook(5,6);
+x8-x7=4u; y8-y7=stem; .5[y7,y8]=.35[x_height,h]; .5[x7,x8]=x1;
+theta:=angle(z8-z7)+90;
+pos7(bar,theta); pos8(bar,theta);
+x7'l=x7'r=x1l; x8'l=x8'r=x1r; bskpoints(7,8,hair,hair);
+z7'l=whatever[z7l,z8l]; z8'l=whatever[z7l,z8l];
+z7'r=whatever[z7r,z8r]; z8'r=whatever[z7r,z8r];
+p0=z4r..z3r..{down}z2l;
+p0:=z4r{up}..{direction 1 of p0}z3r..{down}z2l;
+p1=z2r---obl(8'l,2r,8l)---z8ll..z8r---obl(8'r,8r,1r).more---z1r.._is
+ ---obl(7'r,1l,7r)---z7rr..z7l---obl(7'l,7l,2l).more---z2l..z2'l..z2'r;
+(tim0,tim1)=p0 intersectiontimes p1;
+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;
+penlabels(1,2,2',3,4,5,7,7',8,8'); labels(7',8');
+endchar;
+
+charscription(6u,x_height,0)(
+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);
+filldraw _ih---_ik---cycle;
+penlabels(0,1,2);
+);
+
+iff known chars.latin_dotless_i:
+bskchar "The italic dotless i";
+beginchar(chars.latin_dotless_i,6u#, x_height#, 0); uni "0x0131";
+italcorr x_height#*slant-2u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_i:
+bskchar "The italic letter i";
+beginchar(chars.latin_i,6u#, asc_height#-.5dot_size#, 0); uni "0x0069";
+italcorr (asc_height#-.5dot_size#)*slant-1.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+top z0=(x1l,h-.5dot_size); dot(0);
+endchar;
+
+iff known chars.latin_iacute:
+bskchar "The italic letter i with acute";
+beginchar(chars.latin_iacute,6u#, asc_height#, 0); uni "0x00ED";
+italcorr asc_height#*slant-1.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+x101=x1';
+usechar;
+acute(100,101);
+endchar;
+
+iff known chars.latin_igrave:
+bskchar "The italic letter i with grave";
+beginchar(chars.latin_igrave,6u#,asc_height#,0); uni "0x00EC";
+italcorr x_height#*slant-2u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x2l;
+grave(100,101);
+endchar;
+
+iff known chars.latin_idoublegrave:
+bskchar "The italic letter i with double grave";
+beginchar(chars.latin_idoublegrave,6u#,asc_height#,0); uni "0x0209";
+italcorr x_height#*slant-1.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x102-x100=2.25u; x103r=x2r;
+d_grave(100,101,102,103,whatever);
+endchar;
+
+iff known chars.latin_imacron:
+bskchar "The italic letter i with macron";
+beginchar(chars.latin_imacron,6u#,.5[asc_height#,x_height#],0); uni "0x012B";
+italcorr .5[asc_height#,x_height#]*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=.5[x2,x3]; x100=.5u;
+macron(100,101);
+endchar;
+
+iff known chars.latin_icircumflex:
+bskchar "The italic letter i with circumflex";
+beginchar(chars.latin_icircumflex,6u#,asc_height#-.1x_height#,0); uni "0x00EE";
+italcorr .5[asc_height#,x_height#]*slant+.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x2l;
+circumflex(100,101,102);
+endchar;
+
+iff known chars.latin_iumlaut:
+bskchar "The italic letter i with umlaut";
+beginchar(chars.latin_iumlaut,6u#,asc_height#-dot_size#,0); uni "0x00EF";
+italcorr (asc_height#-dot_size#)*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+.5[x100,x101]=x2l; x100-x101=1.8dot_size;
+umlaut(100,101);
+endchar;
+
+iff known chars.latin_ibreve:
+bskchar "The italic letter i with breve";
+beginchar(chars.latin_ibreve,6u#,asc_height#,0); uni "0x012D";
+italcorr asc_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x2l;
+breve(100,101,102);
+endchar;
+
+iff known chars.latin_iinvbreve:
+bskchar "The italic letter i with inverted breve";
+beginchar(chars.latin_iinvbreve,6u#,asc_height#,0); uni "0x020B";
+italcorr .5[x_height#,asc_height#]*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x2l;
+tieacc(100,101,102);
+endchar;
+
+iff known chars.latin_itilde:
+bskchar "The italic letter i with tilde";
+beginchar(chars.latin_itilde,6u#,asc_height#,0); uni "0x0129";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101-x100=5.5u; rt x.tilde=x2l;
+tilde(100,101);
+endchar;
+
+iff known chars.latin_icaron:
+bskchar "The italic letter i with caron";
+beginchar(chars.latin_icaron,6u#,asc_height#,0); uni "0x01D0";
+italcorr asc_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=.5[x1',x1l]; x102-x100=4.5u;
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_iogonek:
+bskchar "The italic letter i with ogonek";
+beginchar(chars.latin_i,6u#, asc_height#-.5dot_size#,.85desc_depth#); uni "0x012F";
+italcorr (asc_height#-.5dot_size#)*slant-1.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+path p[]; numeric tim[];
+pos1(stem,0); pos2(stem,0);
+pos5(stem,0); pos6(curve,0); pos7(hair,45); pos8(hair,160);
+.5[x1,x2]=.5w; x1-x2=0;
+y1=x_height-.3bar_height; y2=.35bar_height;
+x5=x6l+1.5u; z5l=z2'l; x7-x6l=3u; rt x8l=x7+1.5u;
+y6=-.5d; bot y7l=-d; y8=-2/3d;
+ital_kooh(1,4); ital_hook(2,3);
+p1:=z5l{z6l-z5r}..z6l...z7l..{z5-z6}z8l..z8r{z6-z5}..z7r..z6r..z5r;
+tim1=xpart(_ih intersectiontimes (z5r--(x5r,y2r)));
+filldraw subpath(0,rundy(_ih,1).zpet) of _ih
+ ..subpath(rundy(p1,0),rundy(p1,infinity).zpet) of p1
+ ..subpath(rundy(_ih,tim1),infinity) of _ih---_ik---cycle;
+top z0=(x1l,h-.5dot_size); dot(0);
+penlabels(0,1,2,5,6,7,8);
+endchar;
+
+charscription(5u,x_height,.75desc_depth)(
+numeric H; H=x_height;
+pos1(stem,0); pos2(stem,0);
+pos4(hair,-90); pos5(stem,-150);
+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);
+bot y4r=-d-o;
+y5l=.75[y4l,y2];
+z5'=z5l+.5stem*unitvector(z5-z4);
+filldraw z4r{right}..z2r---_ik---z2l..{left}z4l..z5l{up}..z5'..z5r..cycle;
+penlabels(0,1,2,4,5); labels(5');
+);
+
+iff known chars.latin_dotless_j:
+bskchar "The italic dotless j";
+beginchar(chars.latin_dotless_j,5u#,x_height#,.75desc_depth#); uni "non";
+italcorr x_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_j:
+bskchar "The italic letter j";
+beginchar(chars.latin_j,5u#,asc_height#-.5dot_size#,.75desc_depth#); uni "0x006A";
+italcorr (asc_height#-.5dot_size#)*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+top z0=(x1l,h-.5dot_size); dot(0);
+endchar;
+
+iff known chars.latin_jcircumflex:
+bskchar "The italic letter j with circumflex";
+beginchar(chars.latin_jcircumflex,5u#,asc_height#-.1x_height#,1.5like_cap_curve#); uni "0x0135";
+italcorr .5[asc_height#,x_height#]*slant+u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=.5[x1',x2l];
+circumflex(100,101,102);
+endchar;
+
+iff known chars.latin_ij:
+bskchar "The italic letter ij";
+beginchar(chars.latin_ij,9.5u#,asc_height#-.5dot_size#,desc_depth#); uni "0x0133";
+italcorr (asc_height#-.5dot_size#)*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric shift; shift:=w-5u;
+usechar shifted (shift*right);
+pos6(stem,0); pos7(stem,0);
+.5[x6,x7]=3u; x6-x7=0;
+y6=x_height-.3bar_height; y7=.35bar_height;
+lft x8l=6u;
+ital_kooh(6,9); ital_hook(7,8);
+filldraw _ih---_ik---cycle;
+top z0=(x1l+shift,h-.5dot_size); dot(0);
+top z10=(x6l,h-.5dot_size); dot(10);
+penlabels(6,7);
+endchar;
+
+charscription(10u,asc_height,0)(
+numeric tim[]; oblu:=3oblu;
+path p[];
+pos1(stem,0); pos2(stem,0); pos2'(.8stem,5);
+pos3(hair,130); pos3'(hair,-40); pos4(curve,60); pos5(stem,0);
+x1=x2=x2'; x1l=2.5u;
+y1=h; y2=u; bot y2'=0;
+rt x4r=w-u; top y4r=x_height+o; y5=.35bar_height;
+z4'=(x2r,.5[x_height,bar_height]);
+z7=(x2r,.8bar_height);
+z3=.4[z4',z4]+stem*(unitvector(z4-z4') rotated 90);
+z3'=.5[z7,z4]+stem*(unitvector(z4-z7) rotated -90);
+x5l=.4[x4,x2];
+ital_serif(1,2); ital_hook(5,6); x5'l:=x5'l+2hair; x5'r:=x5'r+2hair;
+z8'-z8=z5r-z5l; y8=x_height; z8=z5l+whatever*dir115;
+z4'''-z4'=(hair-currentbreadth)*down;
+z7-z7''=(.5[hair,stem]-currentbreadth)*down;
+p1=z2r---z1r.._is---z2l..z2'l..z2'r;
+p2=z7..z3'r..z4r..z3r..z4';
+p3=z6'..z6r..z5'r..z5r---z8';
+p4=z7''..z3'l..z4l..z3l..z4''';
+p5=z4'''--z7'';
+p6=z8---z5l..z5'l..z6l..z6';
+z9=bsktouch(subpath(1,infinity) of p2,left,p1,right);
+tim0-1=xpart(subpath(1,infinity) of p2 intersectiontimes (z9--(x3,y9)));
+tim1=xpart(p1 intersectiontimes (z9--(0,y9)));
+(tim2,tim3)=p2 intersectiontimes p3;
+(tim4,tim5)=p2 intersectiontimes p6;
+filldraw subpath(rundy(p1,tim1),infinity) of p1
+ ---z7+oblu*down
+ ..point .5tim4 of p2
+ ..subpath(rundy(p6,tim5),infinity) of p6
+ &subpath(0,rundy(p3,tim3).zpet) of p3
+ ..subpath(rundy(p2,tim2),rundy(p2,tim0).zpet) of p2..cycle;
+oblu:=f_obl;
+infill subpath(rundy(p4,0),rundy(p4,length p4).zpet) of p4
+ ..subpath(rundy(p5,0),rundy(p5,1).zpet) of p5..cycle;
+penlabels(1,2,2',3,3',4,5); labels(4',4''',7,7'',8,8');
+);
+
+iff known chars.latin_k:
+bskchar "The italic letter k";
+beginchar(chars.latin_k,10u#,asc_height#,0); uni "0x006B";
+italcorr x_height#*slant;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_kcaron:
+bskchar "The italic letter k with caron";
+beginchar(chars.latin_kcaron,10u#,asc_height#,0); uni "0x01E9";
+italcorr asc_height#*slant;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+x100=x1r+u; x102-x100=4.5u; y100=h+hair; y101l=1/4[x_height,y100]+hair;
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_kcedilla:
+bskchar "The italic letter k with cedilla (treated as comma)";
+beginchar(chars.latin_kcedilla,10u#,asc_height#,.75comma_depth#); uni "0x0137";
+italcorr x_height#*slant;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+lft x100=.5w; top y100''r=-o;
+comma(100,.75dot_size,.5hair,.75comma_depth);
+endchar;
+
+iff known chars.latin_kra:
+bskchar "The italic letter kra";
+beginchar(chars.latin_kra,11.5u#,x_height#,0); uni "0x0138";
+italcorr x_height#*slant-.25u#;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+oblu:=2oblu;
+pos1(stem,0); pos2(stem,0);
+pos3(whatever,0); pos5(whatever,0);
+bot y1=0; top y2=h; lft x1l=lft x2l=2u;
+rt x3r=w-3u; top y3=h; rt x5r=w-4u; y5=.35bar_height;
+y4r=.45h; x4r=x2r; z4l=z4r+(hair-tiny,0) rotated (angle(z3r-z4r)+90);
+z3l=z4l+whatever*(z3r-z4r);
+x6l=x4r+hair+.5u; z6l=whatever[z4r,z3r]; z6'=z6l+(stem-tiny,0) rotated (angle(z5r-z6l)+90);
+z5l=z6l+whatever*(z5r-z6'); z6r=whatever[z5r,z6']=whatever[z4r,z3r];
+x4'=x2r; z4'=whatever[z3l,z4l];
+ital_serif(2,1); ital_hook(5,7);
+_ih:=z5l..z5'l..z7l..z7'&z7'..z7r..z5'r..z5r;
+serif_bot(1); serifs_tl(3l); serifs_tr(3r);
+z4r'=z4r+.5u*down; z4r''=z4r+(u,0) rotated (angle(z3r-z4r));
+z6l'=z6l+(-u,0) rotated (angle(z3r-z4r));
+z6l''=z6l+(u,0) rotated (angle(z5l-z6l));
+z6r'=z6r+(u,0) rotated (angle(z5r-z6r)); z6r''=z6r+(u,0) rotated (angle(z3r-z4r));
+x2'''=x1r; z2'''=whatever[z3l,z4l];
+filldraw z1a{down}..{left}z1b..z1c---z1d..z1e{left}..z1f---z4r..z4r'' if x6l'>x4r'': ..z6l' fi
+ ..z6l''---z5l..z5'l..z7l..z7'&z7'..z7r..z5'r..z5r---z6r'..z6r''
+ ---diag_serif(3r,4r)..{dir0}z3r.c..z3r.a---z3l.a..z3l.c{dir0}..diag_serif(3l,4l)
+ ---obl(2''',3l,2r)---_is---cycle;
+penlabels(1,2,3,4,5,6); labels(2',2'',2''',2'''',4',4r',4r'',6l',6l'',6r',6r'');
+endchar;
+
+charscription(6.5u,asc_height,0)(
+pos1(stem,0); pos2(stem,0);
+x1=x2=.5w;
+y1=h; y2=.35bar_height;
+ital_serif(1,2); ital_hook(2,3);
+filldraw z2r--z1r.._is---_ih..cycle;
+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#;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_lacute:
+bskchar "The italic letter l with acute";
+beginchar(chars.latin_lacute,6.5u#, asc_height#+.3x_height#, 0); uni "0x013A";
+italcorr (asc_height#+.3x_height#)*slant;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+x101=x1l; x100r=w-u; y101=asc_height+.75u;
+acute(100,101).capital;
+endchar;
+
+iff known chars.latin_lcaron:
+bskchar "The italic letter l with caron (treated like comma)";
+beginchar(chars.latin_lcaron,6.5u# if bold_face: +.5u# fi, asc_height#, 0); uni "0x013E";
+italcorr asc_height#*slant+.25u#;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+y100''r=h; x100'''=w-.5u;
+comma(100,.75dot_size,.5hair,.75comma_depth);
+endchar;
+
+iff known chars.latin_ldot:
+bskchar "The italic letter l with middle dot";
+beginchar(chars.latin_l,6.5u#+dot_size#,asc_height#,0); uni "0x0140";
+italcorr x_height#*slant;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+top y100=x_height; x100+.5dot_size=w-u;
+dot(100);
+endchar;
+
+iff known chars.latin_lcedilla:
+bskchar "The italic letter l with cedilla (treated as comma)";
+beginchar(chars.latin_lcedilla,6.5u#,asc_height#,.75comma_depth#); uni "0x013C";
+italcorr asc_height#*slant-1.25u#;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+x100=x2'; top y100''r=-2o;
+comma(100,.75dot_size,.5hair,.75comma_depth);
+endchar;
+
+iff known chars.latin_ldotabove:
+bskchar "The italic letter l with dot above";
+beginchar(chars.latin_ldotabove,6.5u#,Acc_height#+o#,0); uni "non";
+italcorr Acc_height#*slant-1.25u#;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib;
+usechar;
+x100=x1;
+dotabove(100);
+endchar;
+
+iff known chars.latin_lslash:
+bskchar "The italic letter l with slash";
+beginchar(chars.latin_lslash,6.5u#, asc_height#, 0); uni "0x0142";
+italcorr asc_height#*slant-1.25u#;
+adjust_fit(serif_fit#,0);
+pickup tiny.nib; oblu.more:=2f_obl;
+numeric theta;
+pos1(stem,0); pos2(stem,0);
+x1=x2=.5w;
+y1=h; y2=.35bar_height;
+x5-x4=4u; .5[x4,x5]=x1; y5-y4=stem; .5[y4,y5]=.8[bar_height,x_height];
+theta=angle(z5-z4)+90;
+pos4(bar,theta); pos5(bar,theta);
+x4'l=x4'r=x1l; x5'l=x5'r=x1r;
+z4'l=whatever[z4l,z5l]; z5'l=whatever[z4l,z5l];
+z4'r=whatever[z4r,z5r]; z5'r=whatever[z4r,z5r];
+bskpoints(4,5,bar,bar);
+ital_serif(1,2); ital_hook(2,3);
+filldraw z2r---obl(5'l,2r,5l)---z5ll..z5r---obl(5'r,5r,1r).more
+ ---z1r.._is---obl(4'r,1l,4r)---z4rr..z4l
+ ---obl(4'l,4l,2l).more---_ih..cycle;
+penlabels(1,2,4,4',5,5');
+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#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; oblu:=3oblu;
+numeric H; H=x_height;
+path p[];
+pos1(stem,0); pos2(stem,0); pos2'(.8stem,5);
+pos3(hair,90); pos4(stem,0); pos5(stem,0);
+pos5'(.8stem,5); pos8(hair,90); pos9(stem,0);
+pos10(stem,0);
+x1=x2=x2'; x1l=2.5u;
+y1=H-.3bar_height; y2=u; bot y2'=0;
+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);
+p0=z4r..z3r..{down}z2l;
+p1=z2r---z1r.._ik---z2l..z2'l..z2'r;
+p2=z9r..z8r..{down}z5l;
+p2:=z9r{up}..{direction 1 of p2}z8r..{down}z5l;
+(tim0,tim1)=p0 intersectiontimes subpath(0,3) of p1;
+(tim2,tim3)=p2 intersectiontimes p0;
+if tim2<1: tim2:=xpart(p2 intersectiontimes ((z4l--z9l) shifted (.15hair*up)));
+ tim3:=xpart(p0 intersectiontimes ((z4r--z1r) shifted (.15hair*up)));
+fi
+filldraw z2r if monospace:---z1r else:{up}fi..z3l..z4l---z5l..z5'l..z5'r..z5r
+ if monospace:---z4r..else:{up}..fi{right}z8l..z9l
+ ---_ih---subpath(0,rundy(p2,tim2).zpet) of p2
+ ..subpath(rundy(p0,tim3),rundy(p0,tim0).zpet) of p0 if monospace:{left}fi
+ ..subpath(rundy(p1,tim1),infinity) of p1
+ ..{up}cycle;
+penlabels(1,2,2',3,4,5,5',8,9,10);
+endchar;
+
+charscription(11.5u,x_height,0)(
+numeric tim[]; oblu:=3oblu;
+numeric H; H=x_height;
+path p[];
+pos1(stem,0); pos2(stem,0); pos2'(.8stem,5);
+pos3(hair,90); pos4(stem,0); pos5(stem,0);
+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);
+p0=z4r..z3r..{down}z2l;
+p0:=z4r{up}..{direction 1 of p0}z3r..{down}z2l;
+p1=z2r---z1r.._ik---z2l..z2'l..z2'r;
+(tim0,tim1)=p0 intersectiontimes p1;
+filldraw z2r{up}..z3l..z4l---_ih---subpath(0,rundy(p0,tim0).zpet) of p0
+ ..subpath(rundy(p1,tim1),infinity) of p1..{up}cycle;
+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#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_ncaron:
+bskchar "The italic letter n with caron";
+beginchar(chars.latin_ncaron,11.5u#, asc_height#, 0); uni "0x0148";
+italcorr x_height#*slant-2u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=.6[x1,x3];
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_nacute:
+bskchar "The italic letter n with acute";
+beginchar(chars.latin_nacute,11.5u#,asc_height#,0); uni "0x0144";
+italcorr asc_height#*slant-2.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=.5[x3,x2r];
+acute(100,101);
+endchar;
+
+iff known chars.latin_napostrophe:
+bskchar "The italic letter n with apostrophe";
+beginchar(chars.latin_napostrophe,11.5u#,asc_height#+o#,0); uni "0x0149";
+italcorr x_height#*slant-2u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+lft x100=.5u; top y100=h-.5dot_size;
+comma(100,dot_size,.9hair,.8comma_depth);
+endchar;
+
+iff known chars.latin_ngrave:
+bskchar "The italic letter n with grave";
+beginchar(chars.latin_ngrave,11.5u#,asc_height#,0); uni "0x01F9";
+italcorr x_height#*slant-2u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x3;
+grave(100,101);
+endchar;
+
+iff known chars.latin_ntilde:
+bskchar "The italic letter n with tilde";
+beginchar(chars.latin_ntilde,11.5u#,asc_height#,0); uni "0x00F1";
+italcorr asc_height#*slant-2u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101-x100=6u; x.tilde=.5[x1r,x4l];
+tilde(100,101);
+endchar;
+
+iff known chars.latin_ncedilla:
+bskchar "The italic letter n with cedilla (treated as comma)";
+beginchar(chars.latin_ncedilla,11.5u#,x_height#,.75comma_depth#); uni "0x0146";
+italcorr x_height#*slant-2u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=.65[x2,x5]; top y100''r=-o;
+comma(100,.75dot_size,.5hair,.75comma_depth);
+endchar;
+
+iff known chars.latin_eng:
+bskchar "The italic letter eng";
+beginchar(chars.latin_eng,10u#, x_height#, desc_depth#); uni "0x014B";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; oblu:=3oblu;
+path p[];
+pos1(stem,0); pos2(stem,0); pos2'(.8stem,5);
+pos3(hair,90); pos4(stem,0); pos5(stem,0);
+pos7(hair,-90); pos8(stem,-150);
+x1=x2=x2'; x1l=2.5u;
+y1=x_height-.3bar_height; y2=u; bot y2'=0;
+x4=x5; rt x4r=w-u; y4=.5[bar_height,x_height]; y5=-.5d;
+top y3r=x_height+o; x3=.5[x2,x4]+.5u;
+ital_kooh(1,6);
+bot y7r=-d; top y8=y7+like_curve; lft x8r-x5=-5u; rt x5r-x7=3u;
+z8'=z8l+.5stem*unitvector(z8-z7);
+p0=z4r..z3r..{down}z2l;
+p0:=z4r{up}..{direction 1 of p0}z3r..{down}z2l;
+p1=z2r---z1r.._ik---z2l..z2'l..z2'r;
+(tim0,tim1)=p0 intersectiontimes p1;
+filldraw z2r{up}..z3l..z4l---z5l..{left}z7l..z8l{up}..z8'
+ ..z8r..z7r{right}..z5r---subpath(0,rundy(p0,tim0).zpet) of p0
+ ..subpath(rundy(p1,tim1),infinity) of p1..{up}cycle;
+penlabels(1,2,2',3,4,5,7,8); labels(8');
+endchar;
+
+charscription(10u,x_height,0)(
+pos1(curve,0); pos2(hair,90); pos3(curve,180); pos4(hair,270);
+lft x1l=u; rt x3l=w-u; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2=x4;
+bot y2l=-o; top y4l=h+o; x4r:=x4r+.25u; x2r:=x2r-.25u;
+filldraw z1l{down}..z2l..{up}z3l..z4l..{down}cycle;
+infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
+penlabels(1,2,3,4);
+);
+
+iff known chars.latin_o:
+bskchar "The italic letter o";
+beginchar(chars.latin_o,10u#,x_height#,0); uni "0x006F";
+italcorr .5x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_oacute:
+bskchar "The italic letter o with acute";
+beginchar(chars.latin_oacute,10u#,asc_height#,0); uni "0x00F3";
+italcorr asc_height#*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4l;
+acute(100,101);
+endchar;
+
+iff known chars.latin_oumlaut:
+bskchar "The italic letter o with umlaut";
+beginchar(chars.latin_oumlaut,10u#,asc_height#-dot_size#,0); uni "0x00F6";
+italcorr (asc_height#-dot_size#)*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+.5[x100,x101]=x4l; x101-x100=2/3(x3-x1);
+umlaut(100,101);
+endchar;
+
+iff known chars.latin_ocircumflex:
+bskchar "The italic letter o with circumflex";
+beginchar(chars.latin_ocircumflex,10u#,asc_height#-.1x_height#,0); uni "0x00F4";
+italcorr .5[asc_height#,x_height#]*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+numeric oblu; oblu:=hair;
+x101=x4r;
+circumflex(100,101,102);
+endchar;
+
+iff known chars.latin_ograve:
+bskchar "The italic letter o with grave";
+beginchar(chars.latin_ograve,10u#,asc_height#,0); uni "0x00F2";
+italcorr .5x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4+u;
+grave(100,101);
+endchar;
+
+iff known chars.latin_odoublegrave:
+bskchar "The italic letter o with double grave";
+beginchar(chars.latin_odoublegrave,10u#,asc_height#,0); uni "0x020D";
+italcorr .5x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x102-x100=3u; x102=x4;
+d_grave(100,101,102,103,whatever);
+endchar;
+
+iff known chars.latin_ocaron:
+bskchar "The italic letter o with caron";
+beginchar(chars.latin_ocaron,10u#,asc_height#,0); uni "0x01D2";
+italcorr asc_height#*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4r;
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_otilde:
+bskchar "The italic letter o with tilde";
+beginchar(chars.latin_otilde,10u#,asc_height#,0); uni "0x00F5";
+italcorr asc_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101-x100=6u;
+tilde(100,101);
+endchar;
+
+iff known chars.latin_omacron:
+bskchar "The italic letter o with macron";
+beginchar(chars.latin_omacron,10u#,.5[asc_height#,x_height#],0); uni "0x014D";
+italcorr .5[asc_height#,x_height#]*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+macron(100,101);
+endchar;
+
+iff known chars.latin_odotabove:
+bskchar "The italic letter o with dot above";
+beginchar(chars.latin_odotabove,10u#,asc_height#-.5dot_size#,0); uni "0x022F";
+italcorr .5x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x4;
+dotabove(100);
+endchar;
+
+iff known chars.latin_ohumlaut:
+bskchar "The italic letter o with Hungarian umlaut";
+beginchar(chars.latin_ohumlaut,10u#,asc_height#,0); uni "0x0151";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101-x100=3u; .5[x100,x101]=x4r+1.75u;
+h_umlaut(100,101,102,103,2u);
+endchar;
+
+iff known chars.latin_obreve:
+bskchar "The italic letter o with breve";
+beginchar(chars.latin_obreve,10u#,asc_height#+o#,0); uni "0x014F";
+italcorr asc_height#*slant-1.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4r; x102-x100=5u;
+breve(100,101,102);
+endchar;
+
+iff known chars.latin_oinvbreve:
+bskchar "The italic letter o with inverted breve";
+beginchar(chars.latin_oinvbreve,10u#,asc_height#+o#,0); uni "0x020F";
+italcorr .5[asc_height#,x_height#]*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4r; x102-x100=5u;
+tieacc(100,101,102);
+endchar;
+
+iff known chars.latin_o_masculine:
+bskchar "Masculine ordinal indicator (superscript latin o)";
+beginchar(chars.latin_o_masculine,6u#,asc_height#-.5x_height#,0); uni "0x00BA";
+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);
+endchar;
+
+charscription(10u,x_height,.85desc_depth)(
+path p[];
+pos1(curve,0); pos2(hair,90); pos3(curve,180); pos4(hair,270);
+pos5(stem,0); pos6(curve,0); pos7(hair,45); pos8(hair,160);
+lft x1l=u; rt x3l=w-u; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2=x4;
+bot y2l=-o; top y4l=h+o; x4r:=x4r+.25u; x2r:=x2r-.25u;
+x5=x6l+1.5u; x5=x2; x7-x6l=3u; rt x8l=x7+1.5u;
+bot y5=0; y6=-.5d; bot y7l=-d; y8=-2/3d;
+p0=z1l{down}..z2l..{up}z3l..z4l..{down}z1l;
+p1=z5l{z6l-z5r}..z6l...z7l..{z5-z6}z8l..z8r{z6-z5}..z7r..z6r..z5r;
+filldraw subpath(0,rundy(p0,(1,stem)).zpet) of p0
+ ..subpath(rundy(p1,(0,stem)),rundy(p1,infinity).zpet) of p1
+ ..subpath(rundy(p1,(1,stem)),infinity) of p0..cycle;
+infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
+penlabels(1,2,3,4,5,6,7,8);
+);
+
+iff known chars.latin_oogonek:
+bskchar "The italic letter o with ogonek";
+beginchar(chars.latin_oogonek,10u#,x_height#,.85desc_depth#); uni "0x01EB";
+italcorr .5x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_oogonekmacron:
+bskchar "The italic letter o with ogonek and macron";
+beginchar(chars.latin_oogonekmacron,10u#,.5[asc_height#,x_height#],.85desc_depth#); uni "0x01ED";
+italcorr .5[asc_height#,x_height#]*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+macron(100,101);
+endchar;
+
+charscription(10u,x_height,0)(
+numeric tim[]; path p[];
+oblu:=2oblu;
+pos1(curve,0); pos2(hair,90); pos3(curve,180); pos4(hair,270);
+lft x1l=u; rt x3l=w-u; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2=x4; bot y2l=-o; top y4l=h+o; x4r:=x4r+.25u; x2r:=x2r-.25u;
+z5=(w-u,h); z6=(u,0); pos5(hair, angle(z6-z5)+90); pos6(hair,angle(z6-z5)+90);
+z0r=.5[z5r,z6r]; z0l=.5[z5l,z6l];
+p0:=z1l{down}..z2l..z3l..z4l..{down}z1l;
+p1:=z1r{up}..z4r..z3r..z2r..{up}z1r;
+bskpoints(5,6,hair,hair);
+(tim1,tim2)=p0 intersectiontimes (z5l--z6l);
+(tim3,tim4)=p0 intersectiontimes (z6r--z5r);
+(tim5,tim6)=p0 intersectiontimes (z0r--z5r);
+(tim7,tim8)=p0 intersectiontimes (z5l--z0l);
+(tim11,tim12)=p1 intersectiontimes (z0r--z6r);
+(tim13,tim14)=p1 intersectiontimes (z0r--z5r);
+(tim15,tim16)=p1 intersectiontimes (z0l--z6l);
+(tim17,tim18)=p1 intersectiontimes (z5l--z0l);
+filldraw subpath (0,rundy(p0,tim1).zpet) of p0
+ ..subpath(rundy((z5l--z6ll),tim2),infinity) of (z5l--z6ll)
+ ..subpath(0,rundy(z6r--z5r,tim4).zpet) of (z6r--z5r)
+ ..subpath(rundy(p0,tim3),rundy(p0,tim5).zpet) of p0
+ ..subpath(rundy(z0r--z5r,tim6),infinity) of (z0r--z5rr)
+ ..subpath(0,rundy(z5l--z0l,tim8).zpet) of (z5l--z0l)
+ ..subpath(rundy(p0,tim7),infinity) of p0--cycle;
+infill subpath(0,rundy(z0r--z6r,tim12).zpet) of (z0r--z6r)
+ ..subpath(rundy(p1,tim11).zpet,rundy(p1,tim13)) of p1
+ ..subpath(rundy(z5r--z0r,tim14),infinity) of (z5r--z0r)--cycle;
+infill subpath (0, rundy(p1,tim17).zpet) of p1
+ ..subpath(rundy(z5l--z0l,tim18),infinity) of (z5l--z0l)
+ ..subpath(0,rundy(z0l--z6l,tim16).zpet) of (z0l--z6l)
+ ..subpath(rundy(p1,tim15),infinity) of p1--cycle;
+penlabels(0,1,2,3,4,5,6);
+);
+
+iff known chars.latin_oslash:
+bskchar "The italic letter o slash";
+beginchar(chars.latin_oslash,10u#,x_height#,0); uni "0x00F8";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_oslashacute:
+bskchar "The italic letter o slash with acute";
+beginchar(chars.latin_oslashacute,10u#,asc_height#,0); uni "0x01FF";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x4l;
+acute(100,101);
+endchar;
+
+iff known chars.latin_p:
+bskchar "The italic letter p";
+beginchar(chars.latin_p,12u#,.5[asc_height#,x_height#],desc_depth#); uni "0x0070";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; path p[]; oblu:=3oblu;
+pos1(stem,0); pos2(stem,0); pos11(stem,0);
+pos1'(1.3stem,10); pos7(hair,0); pos8(hair,-40);
+x1=x1'=x2=x11; lft x1l=2.75u;
+y1=x_height+o; y2=.5bar_height; bot y11=-d; top y1'r=h;
+pos3(.5[hair,stem],90); pos4(curve,180);
+pos5(hair,-90); pos6(stem,0);
+x3=.5[w-u,x2]-u; bot y3l=-o;
+rt x4l=w-u; y4=bar_height;
+x5=x3+1.5u; top y5l=x_height+o;
+x6=x2; y6=.5bar_height;
+serif_bot(11); forsuffixes $=11b,11c,11d,11e: x$:=x$+hair; endfor;
+p0=z2r---z1r..{up}z1'r..{down}z1'l;
+p1=z2l..z3l..z4l..{left}z5l..{down}z6l;
+p2=z11f--z2r;
+(tim0,tim1)=p0 intersectiontimes p1;
+(tim2,tim3)=p2 intersectiontimes p1;
+y7=ypart(point tim0 of p0)+stem; x7l=x1l;
+y8=3/4bar_height; lft x8l=.5u;
+p3=z8r{dir30}..z7r{up};
+p4=z7l---z11a;
+(tim4,tim5)=p3 intersectiontimes p4;
+filldraw subpath(rundy(p0,(tim0,2curve)),infinity) of p0
+ ..z7l..{dir-150}z8l
+ ..subpath(0,rundy(p3,tim4).zpet) of p3
+ ..subpath(rundy(p4,tim5),infinity) of p4
+ ..{left}z11b..z11c---z11d..{left}z11e
+ ..{up}subpath(0,rundy(p2,tim2).zpet) of p2
+ ..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);
+endchar;
+
+iff known chars.latin_thorn:
+bskchar "The italic letter thorn";
+beginchar(chars.latin_p,12u#,asc_height#,desc_depth#); uni "0x0070";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; path p[]; oblu:=3oblu;
+pos1(stem,0); pos2(stem,0); pos11(stem,0);
+pos1'(stem,0); pos7(hair,0); pos8(hair,-40);
+x1=x1'=x2=x11; lft x1l=2.75u;
+y1=x_height+o; y2=.5bar_height; bot y11=-d; top y1'r=h;
+ital_serif(1',2);
+pos3(.5[hair,stem],90); pos4(curve,180);
+pos5(hair,-90); pos6(stem,0);
+x3=.5[w-u,x2]-u; bot y3l=-o;
+rt x4l=w-u; y4=bar_height;
+x5=x3+1.5u; top y5l=x_height+o;
+x6=x2; y6=.5bar_height;
+serif_bot(11); forsuffixes $=11b,11c,11d,11e: x$:=x$+hair; endfor;
+p0=z2r---z1r..{up}_is;
+p1=z2l..z3l..z4l..{left}z5l..{down}z6l;
+p2=z11f--z2r;
+(tim0,tim1)=p0 intersectiontimes p1;
+(tim2,tim3)=p2 intersectiontimes p1;
+y7=ypart(point tim0 of p0)+stem; x7l=x1l;
+y8=3/4bar_height; lft x8l=.5u;
+p3=z8r{dir30}..z7r{up};
+p4=z7l---z11a;
+(tim4,tim5)=p3 intersectiontimes p4;
+filldraw subpath(rundy(p0,(tim0,2curve)),infinity) of p0
+ ..z7l..{dir-150}z8l
+ ..subpath(0,rundy(p3,tim4).zpet) of p3
+ ..subpath(rundy(p4,tim5),infinity) of p4
+ ..{left}z11b..z11c---z11d..{left}z11e
+ ..{up}subpath(0,rundy(p2,tim2).zpet) of p2
+ ..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);
+endchar;
+
+iff known chars.latin_q:
+bskchar "The italic letter q";
+beginchar(chars.latin_q,10.5u#,x_height#,desc_depth#); uni "0x0071";
+italcorr x_height#*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; path p[]; oblu:=3oblu;
+pos1(stem,0); pos2(stem,0);
+x1=x2; rt x1r=w-2u;
+y1=h; y2=-d; z1'=z1r+.5stem*dir60;
+serif_bot(2); forsuffixes $=2b,2c,2d,2e: x$:=x$-hair; endfor;
+pos4(hair,-90); pos5(curve,180);
+pos6(.5[hair,stem],90); pos7(stem,0);
+x4=.5[u,x2]-.5u; bot y4r=-o;
+lft x5r=u; y5=bar_height;
+x6=x4+u; top y6r=x_height+o;
+x7=x2; y7=bar_height;
+p0=z7l..{dir40}z1'{dir-120}..z1r---z2f..{right}z2e..z2d---z2c..{right}z2b..z2a---z7l;
+p1=z7r{down}..z4r..z5r..{right}z6r..{down}z7r;
+(tim0,tim1)=p0 intersectiontimes p1;
+(tim2-4,tim3)=subpath(4,infinity) of p0 intersectiontimes p1;
+filldraw subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0
+ ..subpath(rundy(p1,tim3),rundy(p1,tim1).zpet) of p1
+ ..cycle;
+infill z7l{down}..z4l..z5l..{right}z6l..cycle;
+penlabels(1,2,4,5,6,7); labels(1');
+endchar;
+
+charscription(9u if bold_face:+u fi,x_height, 0)(
+path p[]; numeric tim[]; oblu:=3oblu;
+pos1(stem,0); pos1'(.5[hair,stem],100); pos2(stem,0); pos2'(.8stem,5);
+pos3(stem,30); pos4(hair,90); pos5(hair,135); pos6(hair,180);
+pos7(hair,150); y7=x_height-.25bar_height; x7r=0;
+z7'=z7l+hair*dir(-110);
+x1l=3u; x2=x2'=x1; y1=bar_height; y2=u; bot y2'=0;
+top y1'r=h+o; x1'=1.5u;
+rt x3r=w-u; y3r=y4-.75like_stem;
+top z4r=(x3l-2hair,x_height+o);
+z3'=z3+.25stem*unitvector(z3-z4);
+x6l=x1r; y6=.8bar_height;
+z5=.75[z6,z4]+.75stem*(unitvector(z4-z6) rotated 90);
+z8=.6[z1,z1']+.6stem*(unitvector(z1'-z1) rotated -90); pos8(stem,angle(z1'-z1)-90);
+p1:=z2r---z6l..z5l..{right}z4l..z3l..z3'..z3r{up}..{dir180}z4r..z5r..{down}z6r;
+p2:=z1r{up}..z8r..{left}z1'r..z7r{dir-120}..z7'&z7'..z7l{dir60}..{right}z1'l..z8l..z1l---z2l..z2'l..z2'r..{up}z2r;
+(tim1-8,tim2)=subpath(8,infinity) of p1 intersectiontimes p2 if hppp<=300: shifted right fi;
+filldraw subpath(0,rundy(p1,tim1).zpet) of p1
+ ..subpath(rundy(p2,tim2),infinity) of p2---cycle;
+penlabels(1,1',2,2',3,4,5,6,7,8); labels(3',7');
+);
+
+iff known chars.latin_r:
+bskchar "The italic letter r";
+beginchar(chars.latin_r,9u# if bold_face: +u# fi, x_height#, 0); uni "0x0072";
+italcorr x_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_racute:
+bskchar "The italic letter r with acute";
+beginchar(chars.latin_racute,9u# if bold_face: +u# fi, asc_height#, 0); uni "0x0155";
+italcorr asc_height#*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x1r;
+acute(100,101);
+endchar;
+
+iff known chars.latin_rcaron:
+bskchar "The italic letter r with caron";
+beginchar(chars.latin_rcaron,9u# if bold_face: +u# fi, asc_height#, 0); uni "0x0159";
+italcorr asc_height#*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x1r;
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_rdoublegrave:
+bskchar "The italic letter r with double grave";
+beginchar(chars.latin_rdoublegrave,9u#,asc_height#,0); uni "0x0211";
+italcorr x_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x102-x100=3u;
+d_grave(100,101,102,103,x1);
+endchar;
+
+iff known chars.latin_rcedilla:
+bskchar "The italic letter r with cedilla (treated as comma)";
+beginchar(chars.latin_rcedilla,9u#,x_height#,.75comma_depth#); uni "0x0157";
+italcorr x_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x1; top y100''r=-2o;
+comma(100,.75dot_size,.5hair,.75comma_depth);
+endchar;
+
+iff known chars.latin_rinvbreve:
+bskchar "The italic letter r with inverted breve";
+beginchar(chars.latin_rinvbreve,9u#,asc_height#,0); uni "0x0213";
+italcorr x_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x1r; x102-x100=5u;
+tieacc(100,101,102);
+endchar;
+
+charscription(7u,x_height,0)(
+numeric theta;
+lft x1l=1.5u; rt x2r=w-1.2u;
+h-y1l=.9y2r=2.2u;
+theta=angle(z1l-z2r)-135;
+pos1(stem,theta); pos2(stem,theta);
+pos3(hair,-90); pos4(hair,-90);
+pos5(.75[hair,stem],30); pos6(.75[hair,stem],20);
+x3-o=x4=.5w; top y3l=h+o; bot y4l=-o;
+rt x5r=w-u; y5r=y3-.75like_stem;
+lft x6l=u; y6l=y4+like_stem;
+z5'=z5l+.25stem*unitvector(z5-z3);
+z6'=z6+.25stem*unitvector(z6-z4);
+filldraw z5r..z3l{left}..z1l..tension atleast 1.5..z2l
+ ..{left}z4l..z6r{up}..z6'..z6l..{right}z4r..z2r
+ ..tension atleast 1.5..z1r..{right}z3r..z5l..z5'..cycle;
+penlabels(0,1,2,3,4,5,6); labels(5',6');
+);
+
+iff known chars.latin_s:
+bskchar "The italic letter s";
+beginchar(chars.latin_s,7u#, x_height#, 0); uni "0x0073";
+italcorr x_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_scaron:
+bskchar "The italic letter s with caron";
+beginchar(chars.latin_scaron,7u#, asc_height#, 0); uni "0x0161";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x3; x100r=u;
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_scircumflex:
+bskchar "The italic letter s with circumflex";
+beginchar(chars.latin_scircumflex,7u#, asc_height#-.1x_height#, 0); uni "0x015D";
+italcorr .5[asc_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x3; x102-x100=5u;
+circumflex(100,101,102);
+endchar;
+
+iff known chars.latin_sacute:
+bskchar "The italic letter s with acute";
+beginchar(chars.latin_sacute,7u#, asc_height#, 0); uni "0x015B";
+italcorr asc_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x3;
+acute(100,101);
+endchar;
+
+iff known chars.latin_scommabelow:
+bskchar "The italic letter s with comma below";
+beginchar(chars.latin_scommabelow,7u#,x_height#,.75comma_depth#); uni "0x0219";
+italcorr x_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x4; top y100''r=-2o;
+comma(100,.75dot_size,.5hair,.75comma_depth);
+endchar;
+
+iff known chars.latin_scedilla:
+bskchar "The italic letter s with cedilla";
+beginchar(chars.latin_scedilla,7u#, x_height#, .65desc_depth#); uni "0x015F";
+italcorr x_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric theta, tim[];
+path p[];
+lft x1l=1.5u; rt x2r=w-1.2u;
+h-y1l=.9y2r=2.2u;
+theta=angle(z1l-z2r)-135;
+pos1(stem,theta); pos2(stem,theta);
+pos3(hair,-90); pos4(hair,-90);
+pos5(.75[hair,stem],30); pos6(.75[hair,stem],20);
+pos7(.5stem,0); pos8(.5stem,0); pos9(.8stem,0); pos10(.5stem,-110);
+x3-o=x4=.5w; top y3l=h+o; bot y4l=-o;
+rt x5r=w-u; y5r=y3-.75like_stem;
+lft x6l=u; y6l=y4+like_stem;
+z5'=z5l+.25stem*unitvector(z5-z3);
+z6'=z6+.25stem*unitvector(z6-z4);
+x7r=x8r; z7l=z4r; y8=-hair; y9=-.5d;
+rt x9r-lft x10r=4u; x7r-lft x10r=2u; y10r=-d;
+p1:=z6r{up}..z6'..z6l..{right}z4r..z2r..tension atleast 1.5..z1r..{right}z3r..z5l..z5';
+p2:=z8r..{down}z9r..{left}z10r..{right}z10l..{up}z9l..z8l--z7l;
+p3:=reverse(z7r{down}..subpath (rundy(p2,(0,curve)),infinity) of p2);
+tim1=xpart(p1 intersectiontimes (z8l--(x7l,y4l)));
+filldraw z5r..z3l{left}..z1l..tension atleast 1.5..z2l
+ ..{left}z4l..{up}z6r..subpath(0,rundy(p1,3).zpet) of p1
+ ..subpath(rundy(p3,0),rundy(p3,infinity).zpet) of p3
+ ..subpath(rundy(p1,tim1),infinity) of p1
+ ..cycle;
+penlabels(0,1,2,3,4,5,6,7,8,9,10); labels(5',6');
+endchar;
+
+iff known chars.latin_long_s:
+bskchar "The italic letter long s";
+beginchar(chars.latin_long_s,7u#,asc_height#,desc_depth#); uni "0x017F";
+italcorr asc_height#*slant+3.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+oblu:=2oblu;
+pos1(stem,0); pos2(stem,0); pos3(hair,-90);
+pos4(hair,-90); pos5(stem,-150); pos6(stem,30);
+x1=x2; x1=.5w;
+y2=-.5d; .5[y1,y2]=.5(h-d);
+bot y4r=-d-o; if monospace: lft x5r=0; x4=.5[x5,x2]; else: x4=.5u; lft x5r=x4-x1; fi y5l=.75[y4l,y2];
+z5'=z5l+.5stem*unitvector(z5-z4);
+top y3l=h+o; x6-x1=x2-x5; y6r=y3-1.5like_stem; x3=.5[x1,x6];
+z6'=z6+.25stem*unitvector(z6-z3);
+pos7(hair,90); pos8(hair,90);
+y7=y8=bot x_height;
+x8=x1l; lft x7=.5u;
+filldraw z4r{right}..z2r---z1r
+ ..{right}z3r..z6l..z6'..z6r{up}..z3l{left}
+ ..z1l---obl(8r,1l,7r)---z7r..z7l
+ ---obl(8l,7l,2l)---z2l..{left}z4l..z5l{up}
+ ..z5'..z5r..cycle;
+penlabels(1,2,3,4,5,6,7,8,9,10); labels(5',6');
+endchar;
+
+iff known chars.latin_eszet:
+bskchar "The italic german eszet";
+beginchar(chars.latin_eszet,10u#,asc_height#,desc_depth#); uni "0x00DF";
+italcorr .5[asc_height#,x_height#]*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric theta;
+oblu:=2oblu;
+pos1(stem,0); pos2(stem,0); pos3(hair,-90);
+pos4(hair,-90); pos5(stem,-150); pos6(hair,0);
+x1=x2; x1=3u;
+y2=-.5d; .5[y1,y2]=.5(h-d);
+bot y4r=-d-o; if monospace: lft x5r=0; x4=.5[x5,x2]; else: x4=.5u; lft x5r=x4-x1; fi
+y5l=.75[y4l,y2];
+z5'=z5l+.5stem*unitvector(z5-z4);
+top y3l=h+o; x6-x1=x2-x5; y6r=.5[y3,y12]; x3=.5[x1,x6];
+pos7(hair,90); pos8(hair,90);
+y7=y8=bot x_height;
+x8=x1l; lft x7=.75u;
+lft x10l=x1r+2u; rt x11r=w-u;
+x_height-y10l=.9y11r=2.2u;
+theta=angle(z10l-z11r)-135;
+pos10(stem,theta); pos11(stem,theta);
+pos12(hair,-90); pos13(hair,-90);
+pos14(.75[hair,stem],20);
+x12-o=x13=x3+1.2u; top y12l=x_height+o; bot y13l=-o;
+lft x14l=x1r+1.5u; y14l=y13+like_stem;
+z14'=z14+.25stem*unitvector(z14-z13);
+filldraw z4r{right}..z2r---z1r
+ ..{right}z3r..z6l
+ ..z12l{z8-z6}..z10l..tension atleast 1.5..z11l
+ ..{left}z13l..z14r{up}..z14'..z14l..{right}z13r..z11r
+ ..tension atleast 1.5..z10r..{z6-z8}z12r
+ ..z6r..z3l{left}
+ ..z1l---obl(8r,1l,7r)---z7r..z7l
+ ---obl(8l,7l,2l)---z2l..{left}z4l..z5l{up}
+ ..z5'..z5r..cycle;
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); labels(5',14');
+endchar;
+
+charscription(7.5u,.4[asc_height,x_height],0)(
+oblu:=2oblu;
+pos1(stem,0); pos1'(.8stem,5); pos2(stem,0);
+pos4(hair,90); pos4'(hair,90); pos5(hair,90); pos5'(hair,90);
+x1=x1'=x2=.5w;
+y1=h-u; top y1'=h; y2=.35bar_height;
+y4=y4'=y5=y5'=bot x_height; lft x4=u; rt x5=w-u;
+x4'=x1l; x5'=x1r;
+ital_hook(2,3).alt;
+filldraw z1l---obl(4'r,1l,4r)---z4r..z4l---obl(4'l,4l,2l)
+ ---_ih---obl(5'l,2r,5l)---z5l..z5r---obl(5'r,5r,1r)
+ ---z1r..z1'r..z1'l--cycle;
+penlabels(1,1',2,4,4',5,5');
+);
+
+iff known chars.latin_t:
+bskchar "The italic letter t";
+beginchar(chars.latin_t,7.5u#,.4[asc_height#,x_height#], 0); uni "0x0074";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_tcommabelow:
+bskchar "The italic letter t with comma below";
+beginchar(chars.latin_tcommabelow,7.5u#,.4[asc_height#,x_height#],.75comma_depth#); uni "0x021B";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x2'l; top y100''r=-2o;
+comma(100,.75dot_size,.5hair,.75comma_depth);
+endchar;
+
+iff known chars.latin_tcaron:
+bskchar "The italic letter t with caron (treated like comma)";
+beginchar(chars.latin_tcaron,7.5u# if bold_face: +.5u# fi, asc_height#, 0); uni "0x0165";
+italcorr asc_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+rt x100'''=w-u; top y100''r=h;
+comma(100,.75dot_size,.5hair,.75comma_depth);
+endchar;
+
+iff known chars.latin_tcedilla:
+bskchar "The italic letter t with cedilla";
+beginchar(chars.latin_tcedilla,7.5u#,.4[asc_height#,x_height#],.65desc_depth#); uni "0x0163";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; path p[];
+oblu:=2oblu;
+pos1(stem,0); pos1'(.8stem,5); pos2(stem,0);
+pos4(hair,90); pos4'(hair,90); pos5(hair,90); pos5'(hair,90);
+pos6(.5stem,0); pos7(.5stem,0); pos8(.8stem,0); pos9(.5stem,-110);
+x1=x1'=x2=.5w;
+y1=h-u; top y1'=h; y2=.35bar_height;
+y4=y4'=y5=y5'=bot x_height; lft x4=u; rt x5=w-u;
+x4'=x1l; x5'=x1r;
+x6r=x7r; z6l=z2'l; y7=-hair; y8=-.5d;
+rt x8r-lft x9r=4u; x6r-lft x9r=2u; y9r=-d;
+ital_hook(2,3).alt;
+p1:=z7r..{down}z8r..{left}z9r..{right}z9l..{up}z8l..z7l--z6l;
+p2:=reverse(z6r{down}..subpath (rundy(p1,(0,curve)),infinity) of p1);
+tim1=xpart(_ih intersectiontimes (z7l--(x6l,y2')));
+tim2=xpart(_ih intersectiontimes (z7r--(x6r,y2')));
+filldraw z1l---obl(4'r,1l,4r)---z4r..z4l---obl(4'l,4l,2l)
+ ---subpath(0,rundy(_ih,tim1).zpet) of _ih
+ ..subpath(rundy(p2,0),rundy(p2,infinity).zpet) of p2
+ ..subpath(rundy(_ih,tim2),infinity) of _ih---obl(5'l,2r,5l)---z5l..z5r---obl(5'r,5r,1r)
+ ---z1r..z1'r..z1'l--cycle;
+penlabels(1,1',2,4,4',5,5',6,7,8,9);
+endchar;
+
+iff known chars.latin_tstroke:
+bskchar "The italic letter t with stroke";
+beginchar(chars.latin_tstroke,7.5u#,.4[asc_height#,x_height#], 0); uni "0x0167";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+oblu:=2oblu;
+pos1(stem,0); pos1'(.8stem,5); pos2(stem,0);
+pos4(hair,90); pos4'(hair,90); pos5(hair,90); pos5'(hair,90);
+pos6(bar,90); pos6'(bar,90); pos7(bar,90); pos7'(bar,90);
+x1=x1'=x2=.5w;
+y1=h-u; top y1'=h; y2=.35bar_height;
+y4=y4'=y5=y5'=bot x_height; lft x4=u; rt x5=w-u;
+x4'=x1l; x5'=x1r;
+x7-x6=4u; y7=y7'=y6=y6'=bar_height; .5[x6,x7]=x1;
+x6'=x1l; x7'=x1r; bskpoints(6,7,.5bar,.5bar);
+ital_hook(2,3).alt;
+filldraw z1l---obl(4'r,1l,4r)---z4r..z4l---obl(4'l,4l,2l)
+ ---obl(6'r,4'l,6r)---z6rr..z6l---obl(6'l,6l,2l)
+ ---_ih---obl(7'l,2r,7l)---z7ll..z7r---obl(7'r,7r,1r)---obl(5'l,2r,5l)---z5l..z5r---obl(5'r,5r,1r)
+ ---z1r..z1'r..z1'l--cycle;
+penlabels(1,1',2,4,4',5,5',6,6',7,7'); labels(6rr,7ll);
+endchar;
+
+charscription(10.5u,x_height,0)(
+numeric H; H=x_height;
+numeric tim[], dl; path p[]; oblu:=2oblu;
+pos1(stem,0); pos2(stem,0);
+pos3(stem,0); pos3'(.8stem,5); pos4(stem,0);
+pos6(.5[hair,stem],90); pos7(hair,180);
+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;
+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;
+z8=bsktouch(subpath(dl-2,dl) of p0,left,p1,right);
+tim0-dl+2=xpart(subpath(dl-2,dl) of p0 intersectiontimes (z8--(w,y8)));
+tim1=xpart(p1 intersectiontimes (z8--(x6,y8)));
+filldraw subpath(0,rundy(p0,tim0).zpet) of p0
+ ..subpath(rundy(p1,tim1),infinity) of p1..cycle;
+penlabels(0,1,2,3,3',4,6,7);
+);
+
+iff known chars.latin_u:
+bskchar "The italic letter u";
+beginchar(chars.latin_u,10.5u#, x_height#, 0); uni "0x0075";
+italcorr x_height#*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_uacute:
+bskchar "The italic letter u with acute";
+beginchar(chars.latin_uacute,10.5u#, asc_height#, 0); uni "0x00FA";
+italcorr x_height#*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x6;
+acute(100,101);
+endchar;
+
+iff known chars.latin_uring:
+bskchar "The italic letter u with ring";
+beginchar(chars.latin_uring,10.5u#, asc_height#, 0); uni "0x016F";
+italcorr x_height#*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=.5[x1r,x3l]; lft x101=.5[x6,x2r];
+ring(100,101);
+endchar;
+
+iff known chars.latin_uumlaut:
+bskchar "The italic letter u with umlaut";
+beginchar(chars.latin_uumlaut,10.5u#, asc_height#-dot_size#, 0); uni "0x00FC";
+italcorr (asc_height#-dot_size#)*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+lft x100=x1r; rt x101=x3l;
+umlaut(100,101);
+endchar;
+
+iff known chars.latin_ugrave:
+bskchar "The italic letter u with grave";
+beginchar(chars.latin_ugrave,10.5u#,asc_height#,0); uni "0x00F9";
+italcorr x_height#*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=.5[x1r,x3l];
+grave(100,101);
+endchar;
+
+iff known chars.latin_udoublegrave:
+bskchar "The italic letter u with double grave";
+beginchar(chars.latin_udoublegrave,10.5u#,asc_height#,0); uni "0x0215";
+italcorr x_height#*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x102-x100=3u;
+d_grave(100,101,102,103,x6);
+endchar;
+
+iff known chars.latin_umacron:
+bskchar "The italic letter u with macron";
+beginchar(chars.latin_umacron,10.5u#,.5[asc_height#,x_height#],0); uni "0x016B";
+italcorr x_height#*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x1r; x101=x3l;
+macron(100,101);
+endchar;
+
+iff known chars.latin_ucaron:
+bskchar "The italic letter u with caron";
+beginchar(chars.latin_ucaron,10.5u#,asc_height#,0); uni "0x01D4";
+italcorr asc_height#*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=.5[x1,x3];
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_ucircumflex:
+bskchar "The italic letter u with circumflex";
+beginchar(chars.latin_ucircumflex,10.5u#,asc_height#-.1x_height#,0); uni "0x00FB";
+italcorr x_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=.5[x1,x3];
+circumflex(100,101,102);
+endchar;
+
+iff known chars.latin_ubreve:
+bskchar "The italic letter u with breve";
+beginchar(chars.latin_ubreve,10.5u#,asc_height#,0); uni "0x016D";
+italcorr asc_height#*slant-1.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x1; x102=x3;
+breve(100,101,102);
+endchar;
+
+iff known chars.latin_uinvbreve:
+bskchar "The italic letter u with inverted breve";
+beginchar(chars.latin_uinvbreve,10.5u#,asc_height#,0); uni "0x0217";
+italcorr x_height#*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x1; x102=x3;
+tieacc(100,101,102);
+endchar;
+
+iff known chars.latin_uhumlaut:
+bskchar "The italic letter u with Hungarian umlaut";
+beginchar(chars.latin_uhumlaut,10.5u#,asc_height#,0); uni "0x0171";
+italcorr asc_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101-x100=3u; .5[x100,x101]=x3l-o;
+h_umlaut(100,101,102,103,2u);
+endchar;
+
+iff known chars.latin_utilde:
+bskchar "The italic letter u with tilde";
+beginchar(chars.latin_utilde,10.5u#,asc_height#,0); uni "0x0169";
+italcorr asc_height#*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101-x100=6u;
+tilde(100,101);
+endchar;
+
+iff known chars.latin_uogonek:
+bskchar "The italic letter u with ogonek";
+beginchar(chars.latin_uogonek,10.5u#, x_height#, .85desc_depth#); uni "0x0173";
+italcorr x_height#*slant-.75u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[], dl; path p[]; oblu:=2oblu;
+pos1(stem,0); pos2(stem,0);
+pos3(stem,0); pos3'(.8stem,5); pos4(stem,0);
+pos6(.5[hair,stem],90); pos7(hair,180);
+pos8(stem,0); pos9(curve,0); pos10(hair,45); pos11(hair,160);
+x1=x2; lft x1l=2u; x3=x3'=x4; rt x3r=w-2u;
+y1=x_height-.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;
+x8=x9l+1.5u; z8r=z4'l; x10-x9l=3u; rt x11l=x10+1.5u;
+y9=-.5d; bot y10l=-d; y11=-2/3d;
+p0=reverse _ik---z2r..z6r..z7r---z3l..z3'l..z3'r..z3r---reverse _ih..{up}z7r;
+p1=z7l{down}..z6l..z2l---z1l;
+p2=reverse(z8l{z9l-z8r}..z9l...z10l..{z8-z9}z11l..z11r{z9-z8}..z10r..z9r..z8r);
+dl:=length p0;
+z12=bsktouch(subpath(dl-2,dl) of p0,left,p1,right);
+tim1=xpart(p1 intersectiontimes (z12--(x6,y12)));
+tim2=xpart(p0 intersectiontimes ((x8r,-2o)--(x8r,y6)));
+filldraw subpath(0,rundy(p0,tim2).zpet) of p0
+ ..subpath(rundy(p2,0),rundy(p2,infinity).zpet) of p2
+ ..subpath(rundy(p1,tim1),infinity) of p1..cycle;
+penlabels(0,1,2,3,3',4,6,7,8,9,10,11);
+endchar;
+
+iff known chars.latin_v:
+bskchar "The italic letter v";
+beginchar(chars.latin_v,11u#,x_height#,0); uni "0x0076";
+italcorr .5[bar_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+path p[];
+pos1(stem,0); pos2(curve,10); pos3(hair,90);
+pos6(.5[hair,stem],180); pos7(stem,240);
+top y1=h; x1=4u;
+lft x2l=2u; y2l=.4bar_height;
+bot y3l=-o; x3=.55w;
+rt x6l=w-u; y6=bar_height;
+top y7l=h+o; x7r=x6r-curve;
+z7'=z7+.25stem*unitvector(z7-z6);
+z1'=z1l+stem*unitvector(z2l-z1l);
+pos4(hair,170); pos5(curve,90); pos1'(1/3[hair,stem],angle(z1l-z2l));
+y4=y1'l-hair; lft x4r=0; top y5r=h+o; x5=1/3[x4,x1];
+p0=z1'l{left}..z5l..{dir-80}z4l;
+p1=reverse (z1'l{down}..z2l..{right}z3l);
+filldraw subpath(rundy(p0,0),infinity) of p0
+ ..{dir110}z4r..z5r..{right}z1'r..z1
+ ..z1r{down}..z2r..{right}z3r..{up}z6r
+ ..{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');
+endchar;
+
+charscription(15u,x_height,0)(
+numeric tim[]; oblu:=2oblu;
+path p[];
+pos1(stem,0); pos2(curve,10); pos3(hair,90);
+pos6(.5[hair,stem],180); pos7(stem,240);
+top y1=h; x1=4u;
+lft x2l=2u; y2l=.4bar_height;
+bot y3l=-o; x3=1/3w;
+rt x6l=w-u; y6=bar_height;
+top y7l=h+o; x7r=x6r-1.5curve;
+z7'=z7+.25stem*unitvector(z7-z6);
+z1'=z1l+stem*unitvector(z2l-z1l);
+pos4(hair,170); pos5(curve,90); pos1'(1/3[hair,stem],angle(z1l-z2l));
+y4=y1'l-hair; lft x4r=0; top y5r=h+o; x5=1/3[x4,x1];
+pos8(hair,180); pos9(hair,-90); pos10(.5[hair,stem],0); pos11(.5[hair,stem],90);
+y8=y10=.5bar_height; .5[x8,x10]=x9=.55w; x8-x10=1/8w; top y9l=.8x_height;
+.5[x3,x11]=.5w+.5u; y11l=y3l;
+p0=z1'l{left}..z5l..{dir-80}z4l;
+p1=z11l{left}..z10l..z9l..z8l..{left}z3l..z2l..{up}z1'l;
+p2=z3r{right}..z8r..z9r..z10r..{right}z11r;
+(tim0,tim1)=p2 intersectiontimes p1;
+(tim2,tim3-3)=p2 intersectiontimes subpath(3,4) of p1;
+(tim4,tim5)=subpath(0,1) of p1 intersectiontimes p2;
+(tim6,tim7-2)=subpath (0,1) of p1 intersectiontimes subpath (2,infinity) of p1;
+(tim8,tim9-2)=subpath(0,1) of p2 intersectiontimes subpath(2,infinity) of p2;
+filldraw subpath(rundy(p0,0),infinity) of p0
+ ..{dir110}z4r..z5r..{right}z1'r..z1..z1r{down}..z2r
+ ..subpath(0,rundy(p2,tim5).zpet) of p2
+ ..subpath(rundy(p1,tim4),rundy(p1,tim3).zpet) of p1
+ ..subpath(rundy(p2,tim2),infinity) of p2
+ ..z6r..{z7r-z6}z7r..z7'..{right}z7l..{dir-80}z6l
+ ..subpath(0,rundy(p1,tim6).zpet) of p1
+ ..subpath(rundy(p1,tim7),rundy(p1,length p1).zpet) of p1..cycle;
+infill subpath(rundy(p2,tim8),rundy(p2,tim9).zpet) of p2..cycle;
+penlabels(1,1',2,3,4,5,6,7,8,9,10,11); labels(7');
+);
+
+iff known chars.latin_w:
+bskchar "The italic letter w";
+beginchar(chars.latin_w,15u#,x_height#,0); uni "0x0077";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_wcircumflex:
+bskchar "The italic letter w with circumflex";
+beginchar(chars.latin_wcircumflex,15u#,asc_height#-.1x_height#,0); uni "0x0175";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x9;
+circumflex(100,101,102);
+endchar;
+
+iff known chars.latin_wgrave:
+bskchar "The italic letter w with grave";
+beginchar(chars.latin_wgrave,15u#,asc_height#,0); uni "0x1E81";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x9;
+grave(100,101);
+endchar;
+
+iff known chars.latin_wacute:
+bskchar "The italic letter w with acute";
+beginchar(chars.latin_wacute,15u#,asc_height#,0); uni "0x1E83";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=.5[x9,x10];
+acute(100,101);
+endchar;
+
+iff known chars.latin_wumlaut:
+bskchar "The italic letter w with umlaut";
+beginchar(chars.latin_wumlaut,15u#,asc_height#-dot_size#,0); uni "0x1E85";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x3; x101=x11;
+umlaut(100,101);
+endchar;
+
+iff known chars.latin_x:
+bskchar "The italic letter x";
+beginchar(chars.latin_x,11u#,x_height#,0); uni "0x0078";
+italcorr x_height#*slant+.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; oblu:=2oblu;
+path p[];
+pos1(stem,10); pos2(hair,150); pos1'(.5[hair,stem],100);
+pos3(stem,10); pos4(hair,150); pos3'(.5[hair,stem],90);
+pos11(.8stem,170); pos12(hair,30); pos11'(.5[hair,stem],80);
+pos13(.8stem,170); pos14(hair,30); pos13'(.5[hair,stem],90);
+y1=y11=bar_height; lft x1l=4u; x11r=w-x1r;
+x2r=.5u; y2=y12=h-.25bar_height; top y1'r=h+o=top y11'r; x1'=u; x11'=w-u; x12l=w-.25u;
+z2'=z2l+hair*dir(-110); z12'=z12l+hair*dir(-80);
+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;
+(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;
+(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
+ ..subpath(rundy(p0,tim3),rundy(p0,tim4).zpet) of p0
+ ..reverse subpath(0,rundy(p1,tim5).zpet) of p1
+ ..reverse subpath(rundy(p1,tim6),infinity) of p1
+ ..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');
+endchar;
+
+charscription(10.5u,x_height,desc_depth)(
+numeric tim[]; oblu:=2oblu;
+path p[];
+pos1(stem,10); pos2(hair,150); pos1'(.5[hair,stem],100);
+pos3(stem,10); pos4(hair,-40); pos5(.5[hair,stem],-90);
+pos6(stem,30); pos8(stem,0); pos9(stem,60);
+y1=bar_height; lft x1l=3.5u;
+x2r=0; y2=h-.25bar_height; top y1'r=h+o; x1'=u;
+z2'=z2l+hair*dir(-110);
+x3l=.5w; y3=0; y4=-.75d; z4=z3+whatever*dir-100;
+bot y5r=-d; x6l=.5u; x5=.5[x6,x4]; y6l=y5+like_stem;
+z6'=z6+.25stem*unitvector(z6-z5);
+rt x8r=w-u; y8=bar_height;
+top y9r=h+o; x9r=x8l-stem;
+z9'=z9+.25stem*unitvector(z9-z8);
+p0=z5r{right}..z4r..z3r---z1r..z1'r..z2r{dir-120}..z2'&
+ z2'..z2l{dir60}..z1'l..z1l---z3l..z4l..{left}z5l..z6r..z6'..z6l..{right}z5r;
+p1=z4r..{up}z8r..{left}z9r..z9'..{z8-z9l}z9l..{dir-80}z8l
+ ..{direction 11 of p0}z4l;
+(tim1,tim2)=p0 intersectiontimes p1;
+tim3-1=xpart(subpath(1,infinity) of p1 intersectiontimes ((0,-o)--(w,-o)));
+filldraw z5r{right}..z4r..subpath(1,rundy(p1,tim3).zpet) of p1..subpath(rundy(p0,2),infinity) of p0..cycle;
+penlabels(1,1',2,3,4,5,6,8,9); labels(2',6',9');
+);
+
+iff known chars.latin_y:
+bskchar "The italic letter y";
+beginchar(chars.latin_y,10.5u#,x_height#,desc_depth#); uni "0x0079";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_ygrave:
+bskchar "The italic letter y with grave";
+beginchar(chars.latin_ygrave,10.5u#,asc_height#,desc_depth#); uni "0x1EF3";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=.5[x1r,x9l];
+grave(100,101);
+endchar;
+
+iff known chars.latin_yacute:
+bskchar "The italic letter y with acute";
+beginchar(chars.latin_yacute,10.5u#,asc_height#,desc_depth#); uni "0x00FD";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x1;
+acute(100,101);
+endchar;
+
+iff known chars.latin_ymacron:
+bskchar "The italic letter y with macron";
+beginchar(chars.latin_ymacron,10.5u#,.5[asc_height#,x_height#],desc_depth#); uni "0x0233";
+italcorr .5[asc_height#,x_height#]*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=x8;
+macron(100,101);
+endchar;
+
+iff known chars.latin_yumlaut:
+bskchar "The italic letter y with umlaut";
+beginchar(chars.latin_yumlaut,10.5u#,asc_height#-dot_size#,desc_depth#); uni "0x00FF";
+italcorr bar_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=x1l-.5dot_size; x101=x9;
+umlaut(100,101);
+endchar;
+
+iff known chars.latin_ycircumflex:
+bskchar "The italic letter y with circumflex";
+beginchar(chars.latin_ycircumflex,10.5u#,asc_height#-.1x_height#,desc_depth#); uni "0x0177";
+italcorr .5[asc_height#,x_height#]*slant-u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+numeric oblu; oblu:=hair;
+x101=x3;
+circumflex(100,101,102);
+endchar;
+
+charscription(9.5u,x_height,0)(
+numeric alpha; oblu:=2oblu;
+path p[];
+lft x1l=u; bot y1l=0; rt x2r=w-u; top y2r=h;
+x2r-x2l=x1r-x1l;
+alpha=diag_ratio(2,stem,y2r-y1l,x2r-x1l);
+pos1(alpha*stem,0); pos2(alpha*stem,0);
+pos1'(.5[hair,stem],angle(z2-z1)); pos2'(.5[hair,stem],angle(z2-z1));
+pos3(hair,170); pos4(curve,90);
+pos5(hair,170); pos6(1.25curve,90);
+z1'=z1r+stem*unitvector(z2r-z1r);
+z2'=z2l+stem*unitvector(z1l-z2l);
+y3=y2'l-hair; lft x3r=u; top y4r=h+o; x4=1/3[x3,x2];
+bot y5=y1'r+hair; rt x5r=w-u; bot y6l=-o-.25curve; x6=1/3[x5,x1];
+p1=z1l{(z2-z1) rotated -5}..z2'l;
+p2=z2'l{left}..z4l..{dir-100}z3l;
+p3=z2r{(z1-z2)rotated 5}..z1'r;
+p4=z1'r{right}..z6r..{dir90}z5r;
+filldraw subpath(0,rundy(p1,1).zpet) of p1
+ ..subpath(rundy(p2,0),infinity) of p2
+ ..{dir90}z3r..z4r..{right}z2'r..z2
+ ..subpath(0,rundy(p3,1).zpet) of p3
+ ..subpath(rundy(p4,0),infinity) of p4
+ ..z5l{dir-80}..z6l..{left}z1'l..z1..cycle;
+penlabels(1,1',2,2',3,4,5,6);
+);
+
+iff known chars.latin_z:
+bskchar "The italic letter z";
+beginchar(chars.latin_z,9.5u#,x_height#,0); uni "0x007A";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.latin_zcaron:
+bskchar "The italic letter z with caron";
+beginchar(chars.latin_zcaron,9.5u#,asc_height#,0); uni "0x017E";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x101=.5[x3r,x2r];
+hacek(100,101,102);
+endchar;
+
+iff known chars.latin_zdotabove:
+bskchar "The italic letter z with dot above";
+beginchar(chars.latin_zdotabove,9.5u#,asc_height#-.5dot_size#,0); uni "0x017C";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+x100=.5[x3r,x2r];
+dotabove(100);
+endchar;
+
+iff known chars.latin_zacute:
+bskchar "The italic letter z with acute";
+beginchar(chars.latin_zacute,9.5u#,asc_height#,0); uni "0x017A";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+.25[x101,x100]=.5[x3r,x2r];
+acute(100,101);
+endchar;
+
+skal:=.5;
+charscription(figwu(if medieval: 9.5u else: 11u fi),medfigu,0)(
+numeric sair; sair=if medieval: vair else: hair fi;
+pos1(curve,0); pos2(sair,90); pos3(curve,180); pos4(sair,270);
+lft x1l=u; rt x3l=w-u; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2-x4=0; bot y2l=-o; top y4r=h+o;
+filldraw z1l{down}..z2l..z3l..z4l..{down}cycle;
+infill z1r{up}..z4r..z3r..z2r..{up}cycle;
+penlabels(1,2,3,4);
+);
+
+iff known chars.numeral_zero:
+bskchar "The italic numeral 0";
+beginchar(chars.numeral_zero,figw(if medieval: 9.5u else: 11u fi),medfig,0); uni "0x0030";
+italcorr .5x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.superscript_numeral_zero:
+bskchar "The superscript italic numeral 0";
+beginchar(chars.superscript_numeral_zero,if monofig: 5.5u# else: if medieval: 5.75u# else:6.5u#fi fi,asc_height#,0); uni "0x2070";
+adjust_fit(0,0);
+pickup tiny.nib;
+multiply(1.7skal)(curve,hair,vair);
+usechar shifted (-x1l,0) scaled skal shifted (u+(HH-skal*fig_height)*slant,HH-skal*fig_height);
+endchar;
+
+charscription(figwu(if medieval: 9.5u else: 11u fi),medfigu,0)(
+path p;
+numeric sair; sair=if medieval: vair else: hair fi;
+pos1(curve,0); pos2(sair,90); pos3(curve,180); pos4(sair,270);
+lft x1l=u; rt x3l=w-u; y1=y3=y0=.5h; .5[x2,x4]=.5[x1,x3]=x0; x2-x4=0; bot y2l=-o; top y4r=h+o;
+p:=z1r{up}..z4r..z3r..z2r..{up}cycle;
+z5=p intersectionpoint ((x0,.25[y4r,y3])--(w,.25[y4r,y3])); z6=z5+stem*unitvector(z0-z5); .5[z6,z7]=z0;
+pos6(hair,angle(z7-z6)+90); pos7(hair,angle(z7-z6)+90);
+filldraw z1l{down}..z2l..z3l..z4l..{down}cycle;
+infill p;
+filldraw bskrule(6,7,hair,hair);
+penlabels(0,1,2,3,4,5,6,7);
+);
+
+iff known chars.numeral_zero_slash:
+bskchar "The italic numeral 0 with slash";
+beginchar(chars.numeral_zero_slash,figw(if medieval: 9.5u else: 11u fi),medfig,0); uni "non";
+italcorr .5x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.superscript_numeral_zero_slash:
+bskchar "The superscript italic numeral 0 with slash";
+beginchar(chars.superscript_numeral_zero_slash,if monofig: 5.5u# else: if medieval: 5.75u# else:6.5u#fi fi,asc_height#,0); uni "non";
+adjust_fit(0,0);
+pickup tiny.nib;
+multiply(1.7skal)(curve,hair,vair);
+usechar shifted (-x1l,0) scaled skal shifted (u+(HH-skal*fig_height)*slant,HH-skal*fig_height);
+endchar;
+
+charscription(figwu(8u),medfigu,0)(
+oblu:=2.2f_obl;
+path p[];
+pos1(dig_stem,0); pos2(dig_stem,0);
+pos3(hair,90);
+x1=.5w; bot y1=0; x2=x1; top y2=h;
+lft x3=u; x4=x1l;
+y3=if medieval:.5[x_height,bar_height] else: .25[x_height,h] fi; y4=y2-hair;
+p1=z3l{right}..z4; p0=z4---one_serif(1);
+filldraw subpath(rundy(p0,0),infinity) of p0---z2r{dir200}..{left}z3r..
+ subpath(0,rundy(p1,1).zpet) of p1..cycle;
+penlabels(1,2,3); labels(4);
+);
+
+let _saved_char_one=_saved_char;
+numeric _saved_w_one; _saved_w_one:=_saved_w;
+
+iff known chars.numeral_one:
+bskchar "The italic numeral 1";
+beginchar(chars.numeral_one,figw(8u),medfig,0); uni "0x0031";
+italcorr x_height#*slant-2u#;
+adjust_fit(serif_fit#,serif_fit#);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.superscript_numeral_one:
+bskchar "The superscript italic numeral 1";
+beginchar(chars.superscript_numeral_one,if monofig: 5.5u# else: 5u# fi,asc_height#,0); uni "0x00B9";
+adjust_fit(0,0);
+pickup tiny.nib;
+multiply(1.7skal)(curve,hair,vair,serif_o,dig_stem);
+usechar shifted (-x3,0) scaled skal shifted (u+(HH-skal*fig_height)*slant,HH-skal*fig_height);
+endchar;
+
+charscription(figwu(if medieval: 9u else: 10u fi),medfigu,0)(
+path p[]; numeric tim[]; oblu:=2f_obl;
+pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0); pos4(hair,0); pos0(vair,-60);
+pos6(1.2curve,270); pos7(hair,-10);
+lft x1r=u; y1=2/3h+hair; top y2r=h+o; x2=.5w-hair; y0l=y1-2hair; x0=.35[x2,x1];
+rt x3r=w-if medieval:1.5\\ fi u; y3=2/3h; lft x4l=u; bot y4=-apex_o;
+p0:=z0l{dir60}..z0r{dir-120}..z1r..{right}z2r..{down}z3r..{down}z4r;
+tim0=xpart(p0 intersectiontimes ((0,y4+.1bar_height)--(w,y4+.1bar_height)));
+pos5(hair,angle(direction tim0 of p0)); z5=point tim0 of p0;
+bot y7=y5r+hair; rt x7r=w-u; y6=0; x6=1/2[x7,x4];
+p1=z5l{(x3-x4,.5bar_height)}..z6l..{dir80}z7l;
+z9=bsktouch(p0,right,p1,up);
+tim1=xpart(p0 intersectiontimes (z9--(0,y9)));
+tim2=xpart(p1 intersectiontimes (z9--(x9,0)));
+filldraw subpath(0,rundy(p0,tim1).zpet) of p0
+ ..subpath(rundy(p1,tim2),infinity) of p1..z7r{dir-100}..z6r
+ ..z4r..{up}z4l..z3l{up}..z2l{left}..z1l..cycle;
+penlabels(0,1,2,3,4,5,6,7,8);
+);
+
+iff known chars.numeral_two:
+bskchar "The numeral 2";
+beginchar(chars.numeral_two,figw(if medieval: 9u else: 10u fi),medfig,0); uni "0x0032";
+italcorr 2/3h#*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.superscript_numeral_two:
+bskchar "The superscript numeral 2";
+beginchar(chars.superscript_numeral_two,if monofig: 5.5u# else: if medieval: 5.5u# else: 6u# fi fi,asc_height#,0); uni "0x00B2";
+adjust_fit(0,0);
+pickup tiny.nib;
+multiply(1.7skal)(curve,hair,vair);
+usechar shifted (-x1r,0) scaled skal shifted (u+(HH-skal*fig_height)*slant,HH-skal*fig_height);
+endchar;
+
+iff known chars.fraction_one_half:
+bskchar "Fraction one half";
+beginchar(chars.fraction_one_half,5.5u#,asc_height#,0); uni "0x00BD";
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric zv; zv:=if medieval: .5 else: .4 fi;
+multiply(1.7zv)(curve,hair,vair);
+usechar shifted (-x2-hair,0) scaled zv shifted (.5WW,0);
+save x,y;
+let _saved_char=_saved_char_one;
+_saved_w:=_saved_w_one;
+usechar shifted -(x1,0) scaled zv shifted (.5WW+(HH-zv*fig_height)*slant,HH-zv*fig_height);
+pos10(hair,90); pos11(hair,90);
+lft x10=u; rt x11=w-u; y10=y11=if medieval: bar_height else: .5[x_height,bar_height] fi if bold_face: + .5hair fi;
+filldraw bskrule(10,11,hair,hair);
+penlabels(10,11);
+endchar;
+
+charscription(figwu(9.5u),medfigu,medfigdu)(
+numeric tim[]; oblu:=if bold_face: 2f_obl else: 4f_obl fi;
+path p[];
+pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0); pos4(.45[hair,stem],0); pos0(vair,-60);
+pos5(hair,90); pos6(curve,0); pos7(like_hair,270);
+lft x1r=1.5u; y1=y3+hair; top y2r=h+o; x2=.5w-hair; y0l=y3-hair; x0=.35[x2,x1];
+rt x3r=w-1.75u; y3=if medieval: 2/3h else: .8h fi; lft x4l=1.5u;
+bot y4l=.5(h-d); z4'=(x4l,y4l-like_hair);
+x5=.5w; y5=min(y4+stem,.5[x_height,bar_height]); rt x6r=w-u; y6=.5[y4,-d];
+x7=.55[x5,x4]; bot y7r=-d; rt x8r=u; y8=y7+1.5like_stem;
+p0=z4l{dir60}..{up}z3l..z2l{left}..z1l..{dir60}z0l;
+p1=z0l{dir60}..{dir-120}z0r..z1r..{right}z2r..z3r{down}..{dir-130}z4r..z4'..{dir40}z4l;
+p2=z4l..z5r..z6r..z7r..smitko(8,curve)..z7l..z6l..z5l..z4';
+p3=subpath(3,infinity) of p2;
+z9=bsktouch(p1,down,p2,up);
+tim1-3=xpart(subpath(3,infinity) of p1 intersectiontimes (z9--(x9,y3)));
+tim2=xpart(p2 intersectiontimes (z9--(x9,y6)));
+(tim3,tim4-3)=p1 intersectiontimes p3;
+filldraw p0..subpath(0,rundy(p1,tim1).zpet) of p1
+ ..subpath(rundy(p2,tim2),rundy(p2,(tim4,f_obl)).zpet) of p2
+ ..subpath(tim3,infinity) of p1
+ ..cycle;
+penlabels(0,1,2,3,4,5,6,7,8); labels(4',9);
+);
+
+let _saved_char_three=_saved_char;
+numeric _saved_w_three; _saved_w_three:=_saved_w;
+
+iff known chars.numeral_three:
+bskchar "The numeral 3";
+beginchar(chars.numeral_three,figw(9.5u),medfig,medfigd); uni "0x0033";
+italcorr if medieval: 2/3h# else: .8h# fi*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.superscript_numeral_three:
+bskchar "The superscript numeral 3";
+beginchar(chars.superscript_numeral_three,if monofig: 5.5u# else: 5.75u# fi,asc_height#,0); uni "0x00B3";
+adjust_fit(0,0);
+pickup tiny.nib;
+multiply(1.7skal)(curve,hair,stem,like_hair,like_stem);
+usechar shifted (-x8r,0) scaled skal shifted (u+(HH-skal*fig_height)*slant,HH-skal*fig_height);
+endchar;
+
+iff known chars.fraction_one_third:
+bskchar "Fraction one third";
+beginchar(chars.fraction_one_third,5.5u#,asc_height#,0); uni "0x2153";
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric zv; zv:=if medieval: .5 else: .4 fi;
+multiply(1.7zv)(curve,hair,stem,like_hair,like_stem);
+usechar shifted (-x2-hair,0) scaled zv shifted (.5WW,0);
+save x,y;
+let _saved_char=_saved_char_one;
+_saved_w:=_saved_w_one;
+usechar shifted -(x1,0) scaled zv shifted (.5WW+(HH-zv*fig_height)*slant,HH-zv*fig_height);
+pos10(hair,90); pos11(hair,90);
+lft x10=u; rt x11=w-u; y10=y11=if medieval: bar_height else: .5[x_height,bar_height] fi if bold_face: + .5hair fi;
+filldraw bskrule(10,11,hair,hair);
+penlabels(10,11);
+endchar;
+
+charscription(figwu(12u),medfigu,medfigdu)(
+path p[]; numeric tim[]; oblu:=2f_obl;
+pos1(stem,0); pos2(.95stem,0); pos3(hair,0); pos4(hair,90); pos5(stem,90);
+pos6(hair,0); pos8(hair,0);
+rt x1r= rt x2r=w-3.5u; bot y1=-d; top y2=if medieval: .45bar_height else: .9x_height fi;
+lft x3l=u; y3l=if medieval: -stem else: .5x_height fi;
+z4l=(x1r+hair,y3l); rt x5r=w-u; y5l=y3l; y3l:=y3l+hair;
+z2'=z2r+(stem-currentbreadth)*up; z4'=z4r+hair*up;
+top y6=h; x6r=x2l-o; z7l=z3l; pos7(stem,angle(z1-z3)); z7'=1/3[z7r,z4]; z7''=z7'+stem*right;
+x8=x6; y8l=h+apex_o;
+p0:=z1r---z2r..{up}z2'..z2l---z1l;
+p1:=z3r{z2-z3}..z4l..z5l..z5r..z4r..{z3-z2}z3l; p1:=subpath(0,3) of p1;
+p2:=z5r{z4-z5r}..z4'..{z3-z2}z3l;
+p3:=z8l..z6l{z7'-z6}..z7l;
+p4:=z7r..{z6-z7''}z6r..z8r;
+(tim0,tim1)=subpath(0,1) of p0 intersectiontimes p1;
+(tim2,tim3)=subpath(0,1) of p0 intersectiontimes p2;
+(tim4-1,tim5)=subpath(1,infinity) of p0 intersectiontimes p2;
+(tim6-1,tim7)=subpath(1,infinity) of p0 intersectiontimes p1;
+z9=bsktouch(p2,up,p4,left);
+tim8=xpart(p2 intersectiontimes (z9--(x9,-d)));
+tim9=xpart(p4 intersectiontimes (z9--(w,y9)));
+filldraw subpath(0,rundy(p0,tim0).zpet) of p0
+ ..subpath(rundy(p1,tim1),infinity) of p1
+ ..subpath(0,rundy(p2,tim3).zpet) of p2
+ ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0
+ ..subpath(rundy(p2,tim5),rundy(p2,tim8).zpet) of p2
+ ..subpath(rundy(p4,tim9),infinity) of p4..p3
+ ..subpath(0,rundy(p1,tim7).zpet) of p1
+ ..subpath(rundy(p0,tim6),infinity) of p0..cycle;
+penlabels(1,2,3,4,5,6,7,8); labels(2',4',7',7'',9);
+);
+
+let _saved_char_four=_saved_char;
+numeric _saved_w_four; _saved_w_four:=_saved_w;
+
+iff known chars.numeral_four:
+bskchar "The numeral 4";
+beginchar(chars.numeral_four,figw(12u),medfig,medfigd); uni "0x0034";
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.superscript_numeral_four:
+bskchar "The superscript numeral 4";
+beginchar(chars.superscript_numeral_four,if monofig: 5.5u# else: 7u# fi,asc_height#,0); uni "0x2074";
+adjust_fit(0,0);
+pickup tiny.nib;
+multiply(1.7skal)(curve,hair,vair,dig_stem);
+usechar shifted (-x3l,0) scaled skal shifted (u+(HH-skal*fig_height)*slant,HH-skal*fig_height);
+endchar;
+
+iff known chars.fraction_one_quarter:
+bskchar "Fraction one quarter";
+beginchar(chars.fraction_one_quarter,7u#,asc_height#,0); uni "0x00BC";
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric zv; zv:=if medieval: .5 else: .4 fi;
+multiply(1.7zv)(curve,hair,stem,like_hair,like_stem);
+usechar shifted (-.5w,0) scaled zv shifted (.5WW,0);
+save x,y;
+let _saved_char=_saved_char_one;
+_saved_w:=_saved_w_one;
+usechar shifted -(x1,0) scaled zv shifted (.5WW+(HH-zv*fig_height)*slant,HH-zv*fig_height);
+pos10(hair,90); pos11(hair,90);
+lft x10=u; rt x11=w-u; y10=y11=if medieval: bar_height else: .5[x_height,bar_height] fi if bold_face: +.5hair fi;
+filldraw bskrule(10,11,hair,hair);
+penlabels(10,11);
+endchar;
+
+iff known chars.fraction_three_quarters:
+bskchar "Fraction three quarters";
+beginchar(chars.fraction_three_quarters,7u#,asc_height#,0); uni "0x00BE";
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric zv; zv:=if medieval: .5 else: .4 fi;
+multiply(1.7zv)(curve,hair,stem,like_hair,like_stem);
+let _saved_char=_saved_char_four;
+_saved_w:=_saved_w_four;
+usechar shifted (-.5w,0) scaled zv shifted (.5WW,0);
+save x,y;
+let _saved_char=_saved_char_three;
+_saved_w:=_saved_w_three;
+usechar shifted -(x2+hair,if medieval: y7 else: 0 fi) scaled zv shifted (.5WW+(HH-zv*fig_height)*slant,HH-zv*fig_height);
+pos10(hair,90); pos11(hair,90);
+lft x10=u; rt x11=w-u; y10=y11=if medieval: bar_height else: .5[x_height,bar_height] fi if bold_face: +.5hair fi;
+filldraw bskrule(10,11,hair,hair);
+penlabels(10,11);
+endchar;
+
+charscription(figwu(if medieval: 10.5u else: 9.5u fi),medfigu,medfigdu)(
+numeric theta; theta=if medieval: 0 else: 10 fi;
+path p[]; numeric tim;
+oblu:=2f_obl;
+pos1(hair,0); pos1''(hair,0); pos2(hair,0); pos3(stem,65);
+pos4(hair,-90); pos5(curve,180); pos6(hair,90); pos7(hair,30);
+x1l=if monofig: 2u else: 3u fi; top y1l=h+apex_o; x2=x1;
+y2=if medieval: .2x_height else: .5[bar_height,x_height] fi; z3r=z2r; z2'=(x2r,.5[y4,y2]);
+x4=.5w; rt x5l=w-u;
+y4=y2+ if known superscript: .5\\fi (if not medieval: .8\\fi stem);
+y5=.48[y4,y6];
+x6=.5w-o; bot y6l=-d; z1''=.75[z1,z2]+o*right;
+lft x7l=u; y7=y6+.15x_height;
+x8=w-u; y8=y1+.5apex_o;
+z1'=z1r+if bold_face:.8\\fi curve*down;
+p0=z1l{down}..z1''l..{down}z2l..{down}z3l..(x3r,y3l)..{up}z3r..{up}z2r..{right}z4r..
+ {down}z5r..{left}z6r..z7r..z7l{(z6-z7) rotated -15}..z6l{right}..
+ {up}z5l;
+p1=z5l{up}..z4l..z2';
+p2=z2r{up}..z1''r..{up}z1r;
+p3=z1'..{dir(70-theta)}z8{dir(-140-theta)}..z1l;
+tim=xpart(p2 intersectiontimes ((0,y1')--(w,y1')));
+filldraw p0&subpath(0,rundy(p1,infinity).zpet) of p1..subpath (rundy(p2,0),rundy(p2,tim).zpet) of p2..
+subpath(rundy(p3,0),infinity) of p3&cycle;
+penlabels(1,2,3,4,5,6,7); labels(1',2',8);
+);
+
+iff known chars.numeral_five:
+bskchar "The numeral 5";
+beginchar(chars.numeral_five,figw(if medieval: 10.5u else: 9.5u fi),medfig,medfigd); uni "0x0035";
+italcorr medfig*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.superscript_numeral_five:
+bskchar "The superscript numeral 5";
+beginchar(chars.superscript_numeral_five,if monofig: 5.5u# else: if medieval: 6.25u# else: 5.75u#fi fi,asc_height#,0); uni "0x2075";
+adjust_fit(0,0);
+pickup tiny.nib; boolean superscript; superscript=true;
+multiply(1.7skal)(curve,hair,stem);
+usechar shifted (-x7r,0) scaled skal shifted (u+(HH-skal*fig_height)*slant,HH-skal*fig_height);
+endchar;
+
+charscription(figwu(10u),fig_height,0)(
+path p[]; numeric tim[]; oblu:=2oblu;
+pos1(vair,0); pos2(hair,90); pos3(curve,180); pos4(hair,270);
+pos5(curve,0); pos6(hair,-90); pos7(hair,210);
+rt x3l=w-u; y1=y3=.5x_height; x2=x4=.5w+.5hair; bot y2l=-o; .5[y4r,y2r]=y3;
+lft x5l=u; y5l=y1l+stem; top y6l=h+o; x6=.5w+.75stem;
+rt x7l=w-u; y7=y6r-.15x_height;
+p0=z2r{left}..z5r..{right}z6r; x1r=xpart (((0,y1)--(.5w,y1))intersectionpoint p0);
+p1=z2l{right}..z3l..z4l..{down}z1l;
+p2=z2r{left}..z5r..{right}z6r;
+z0=bsktouch(p1,left,subpath(.2,infinity) of p2,right);
+tim1=xpart(p1 intersectiontimes (z0--(x4,y0)));
+tim2=xpart(p2 intersectiontimes (z0--(0,y0)));
+filldraw z7r..z7l{(z6-z7) rotated -15}..{left}z6l..z5l..{right}z2l..
+ subpath(0,rundy(p1,tim1).zpet) of p1..
+ subpath(rundy(p2,tim2),infinity) of p2..cycle;
+infill z1r{up}..z4r..z3r..z2r..cycle;
+penlabels(0,1,2,3,4,5,6,7);
+);
+
+iff known chars.numeral_six:
+bskchar "The numeral 6";
+beginchar(chars.numeral_six,figw(10u),fig_height#,0); uni "0x0036";
+italcorr fig_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.superscript_numeral_six:
+bskchar "The superscript numeral 6";
+beginchar(chars.superscript_numeral_six,if monofig: 5.5u# else: 6u# fi,asc_height#,0); uni "0x2076";
+adjust_fit(0,0);
+pickup tiny.nib;
+multiply(1.7skal)(curve,hair,vair,stem);
+usechar shifted (-x5l,0) scaled skal shifted (u+(HH-skal*fig_height)*slant,HH-skal*fig_height);
+endchar;
+
+charscription(figwu(11u),medfigu,medfigdu)(
+path p; numeric tim[];
+pos1(hair,0); pos2(curve,0); pos3(curve,90); pos4(.35x_height,90); pos1'(hair,90);
+rt top z1r=(w-u,h); lft x2l=2.5u; top y2=-d+.5stem;
+y3r=y1r+.5stem=y4r;
+lft x4l=u; x3=x4r+2hair; x3l:=x3l+o;
+top y5r=y3; x5r=x5l=1/3[x3,x1']; y4r-y5r=1.5(y3l-y5l);
+p:=z2l{dir80}...{z1-z2r}z1l;
+y1-y0=hair-currentbreadth;
+tim1=xpart(p intersectiontimes ((0,y0)--(w,y0))); z1'=point tim1 of p + u*left;
+filldraw z1r{z2r-z1}...{dir-100}z2r..subpath(0,rundy(p,(tim1,curve)).zpet) of p..z1'l{left}
+ ..z5l..z3l..{z4l-z4r}z4l..z4l+left..z4..z4r&z4r..z5r..{right}z1'r--cycle;
+penlabels(1,1',2,3,4,5);
+);
+
+iff known chars.numeral_seven:
+bskchar "The numeral 7";
+beginchar(chars.numeral_seven,figw(11u),medfig,medfigd); uni "0x0037";
+italcorr medfig*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.superscript_numeral_seven:
+bskchar "The superscript numeral 7";
+beginchar(chars.superscript_numeral_seven,if monofig: 5.5u# else: 6.5u# fi,asc_height#,0); uni "0x2077";
+adjust_fit(0,0);
+pickup tiny.nib;
+multiply(1.7skal)(curve,hair,stem);
+usechar shifted (-x4l,0) scaled skal shifted (u+(HH-skal*fig_height)*slant,HH-skal*fig_height);
+endchar;
+
+charscription(figwu(8.5u),fig_height,0)(
+path p[]; numeric testem, tlstem, tim[]; oblu:=2f_obl;
+testem=.5[curve, hair]; tlstem=.75[curve,stem];
+pos1(testem,0); pos2(tlstem,180); pos3(tlstem,180); pos4(testem,0);
+pos5(vair,90); pos6(vair,90);
+lft x1l=u; rt x2l=w-u; x3r=u+hair; x4r=w-x3r; y1=y2=.27h; y3=y4=.76h;
+x5=x6=.5w; bot y5l=-o; top y6r=h+o; z0=whatever[z1,z4]=whatever[z2,z3];
+p0:=z6{left}..z3..z0..z2..{left}z5; pos0(curve,angle(direction 2 of p0)-90);
+p1=z6r{left}..z3r..z0r..z2r..z5r{left};
+p2=z4l{down}..z0{dir-160}..{down}z1l;
+p3=z5l{right}..z2l..z0l..z3l..{right}z6l;
+p4=z1r{up}..z0{dir20}..{up}z4r;
+p5=z6l{left}..z3l..z0l..z2l..z5l{left};
+(tim1,tim2)=p1 intersectiontimes p2;
+(tim3,tim4)=p3 intersectiontimes p4;
+(tim5,tim6)=p5 intersectiontimes p2;
+(tim7,tim8)=p1 intersectiontimes p4;
+filldraw subpath(0,rundy(p1,tim1).zpet) of p1..
+ subpath(rundy(p2,tim2),infinity) of p2..
+ subpath(0,rundy(p3,tim3).zpet) of p3..
+ subpath(rundy(p4,tim4),infinity) of p4..cycle;
+infill subpath(0,rundy(p5,tim5).zpet) of p5 ..
+ (reverse subpath(0,rundy(p2,tim6).zpet) of p2) .. cycle;
+infill subpath(rundy(p1,tim7),infinity) of p1..
+ subpath(0,rundy(p4,tim8).zpet) of p4..cycle;
+penlabels(0,1,2,3,4,5,6);
+);
+
+iff known chars.numeral_eight:
+bskchar "The numeral 8";
+beginchar(chars.numeral_eight,figw(8.5u),fig_height#,0); uni "0x0038";
+italcorr .76fig_height#*slant-.25u#;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.superscript_numeral_eight:
+bskchar "The superscript numeral 8";
+beginchar(chars.superscript_numeral_eight,if monofig: 5.5u# else: 5.25u# fi,asc_height#,0); uni "0x2078";
+adjust_fit(0,0);
+pickup tiny.nib;
+multiply(1.7skal)(curve,hair,vair,stem);
+usechar shifted (-x1l,0) scaled skal shifted (u+(HH-skal*fig_height)*slant,HH-skal*fig_height);
+endchar;
+
+charscription(figwu(10u),medfigu,medfigdu)(
+path p[]; numeric tim[]; oblu:=2oblu;
+pos1(vair,0); pos2(hair,-90); pos3(curve,180); pos4(hair,90);
+pos5(curve,0); pos6(hair,-90); pos7(hair,210);
+lft x3r=u; y1=y3; x2+.5hair=x4=.5w-.5hair; top y4r=h+o; .5[y4l,y2l]=y3; y2=if medieval:-hair else: h-x_height fi;
+rt x5r=w-u; y5r=y1r-stem;
+bot y6r=-d-o; x6=.5w-.75stem;
+lft x7r=u; y7=y6+.15x_height;
+p0=z4l{right}..z5l..{left}z6l; x1l=xpart (((.5w,y1)--(w,y1))intersectionpoint p0);
+p1=z2r{right}..z1r{up}..z4r..z3r;
+p2=z4l{right}..z5l..{left}z6l;
+z0=bsktouch(p1,right,p2,left);
+tim1=xpart(p1 intersectiontimes (z0--(.5w,y0)));
+tim2=xpart(p2 intersectiontimes (z0--(w,y0)));
+filldraw z7l..{(z6-z7) rotated -15}z7r..z6r{right}..z5r..z4r..z3r..{right}z2r..
+ subpath(0,rundy(p1,tim1).zpet) of p1..
+ subpath(rundy(p2,tim2),infinity) of p2..cycle;
+infill z1l{up}..z4l..z3l..z2l..cycle;
+penlabels(1,2,3,4,5,6,7);
+);
+
+iff known chars.numeral_nine:
+bskchar "The numeral 9";
+beginchar(chars.numeral_nine,figw(10u),medfig,medfigd); uni "0x0039";
+italcorr if medieval: .4x_height# else: (fig_height#-.5x_height#)fi*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+usechar;
+endchar;
+
+iff known chars.superscript_numeral_nine:
+bskchar "The superscript numeral 9";
+beginchar(chars.superscript_numeral_nine,if monofig: 5.5u# else: 6u# fi,asc_height#,0); uni "0x2079";
+adjust_fit(0,0);
+pickup tiny.nib;
+multiply(1.7skal)(curve,hair,vair);
+usechar shifted (-x3r,0) scaled skal shifted (u+(HH-skal*fig_height)*slant,HH-skal*fig_height);
+endchar;
+
+iff known chars.sign_query:
+bskchar "Italic question mark";
+beginchar(chars.sign_query, 9u#+punct_fit#, asc_height#, 0); uni "0x003F";
+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+punct_fit; y1=.5[h,x_height]+hair; top y2r=h+o; x2=.5(w-punct_fit)+punct_fit-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;
+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);
+penlabels(0,1,2,3,4,5,6);
+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";
+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,240);
+lft x1r=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];
+rt x3r=w-u; y3=-d+(asc_height-.5[asc_height,x_height])+hair; x4=x0; y4=-d+(asc_height-bar_height);
+x5=.5w; top y5l=h-2dot_size; x6-x5=x0-x1; y6-y5=y1-y0;
+filldraw z6l{dir120}..z5l..z4l..z3l{down}..z2l{left}..z1l..{dir-60}z0l
+ ..{dir150}z0r..z1r..{right}z2r..{up}z3r..z4r..z5r..{dir-60}z6r
+ ..cycle;
+top z100=(x5,h-.5dot_size); dot(100);
+penlabels(0,1,2,3,4,5,6);
+endchar;
+
+iff known chars.sign_spanish_query:
+bskchar "Reversed italic question mark";
+beginchar(chars.sign_spanish_query, 9u#, asc_height#-desc_depth#, desc_depth#); uni "0x00BF";
+adjust_fit(0,0);
+pickup tiny.nib;
+pos0(vair,120); pos1(.45[hair,stem],0); pos2(hair,-90); pos3(curve,180);
+pos4(curve,180); pos5(hair,-90); pos6(vair,-60);
+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;
+filldraw z6l{dir60}..z5l..z4l..z3l{down}..z2l{right}..z1l..{dir240}z0l
+ ..{dir60}z0r..z1r..{left}z2r..{up}z3r..z4r..z5r..{dir240}z6r
+ ..cycle;
+top z100=(x5,h-.5dot_size); dot(100);
+penlabels(0,1,2,3,4,5,6);
+endchar;
+
+iff known chars.sign_at:
+bskchar "Italic at sign";
+beginchar(chars.sign_at, 16u#, asc_height#-.3desc_depth#, .6desc_depth#); uni "0x0040";
+italcorr x_height#*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric H, W, shift; H:=.9x_height; W=.9*10.5u; oblu:=2oblu;
+path p[]; numeric tim[];
+shift=.5(w-W)+.5u;
+pos1(stem,0); pos2(stem,0);
+x1=x2; rt x2r=W-if monospace:1.5u else: 2u fi+shift;
+top y1=H-hair; y2=.35bar_height;
+pos4(hair,90); pos5(curve,180); pos6(.5[hair,stem],-90);
+pos7(stem,0); x7=x1; y7=.5bar_height;
+pos11(hair,0); pos12(hair,90); pos13(hair,180); pos14(hair,270); pos15(hair,0);
+top y4r=H+o; x4=.5W+u+shift; y5=.9bar_height; lft x5r=if monospace: .25u else: 1.5u fi +shift;
+bot y6r=-o; x6=x4-u;
+rt x11r=w if not monospace: -.5u fi; lft x13r=u; y11=y13=bar_height; y15=if monospace:-u else: 0fi; rt x15r=w;
+top y12r=h+o; bot y14r=-d+o; x12=x14-u=.5w;
+p0=z4r{left}..z5r..z6r..{up}z7r;
+ital_hook(2,3);
+p1=z2l{down}..z2'l..{up}z11r;
+p2=z4l{left}..z5l..z6l..{up}z7l---z1l;
+(tim0,tim1)=p0 intersectiontimes p1;
+filldraw subpath(rundy(p1,tim1),2) of p1..{left}z12r..z13r
+ ..{right}z14r..{z3'-.5[z15,z2']}z15r..z15l{.5[z15,z2']-z3'}
+ ..z14l{left}..z13l..{right}z12l..{down}z11l..z2'r..{up}z2r
+ ---z1r..subpath(0,rundy(p0,tim0).zpet) of p0..cycle;
+infill p2..cycle;
+penlabels(0,1,2,3,4,5,6,7,11,12,13,14,15);
+endchar;
+
+iff known chars.sign_ampersand:
+bskchar "Italic ampersand";
+beginchar(chars.sign_ampersand, 16u#, asc_height#, 0); uni "0x0026";
+italcorr .5[asc_height#,x_height#]*slant;
+adjust_fit(0,0);
+pickup tiny.nib;
+numeric tim[]; path p[]; oblu:=2oblu;
+pos1(cap_stem,0); pos2(cap_hair,90); pos3(.5[cap_hair,cap_stem],180);
+pos4(cap_hair,0); pos4'(cap_hair,60); pos4''(.5[cap_hair,cap_stem],-150);
+pos5(cap_curve,180); pos6(cap_hair,-90); pos7(cap_hair,0);
+pos8(cap_hair,30); pos9(cap_hair,-60); pos10(cap_hair,-60);
+pos11(cap_curve,-60); pos12(cap_curve,-60);
+rt x1=w-7u; top y2r=h+o; x2=.35w; lft x3r=2u;
+y3=.5[h,x_height]; y2-y1=3/4(x1-x2);
+bot y4=x_height; x4=x2+o; y5=.5y4;
+lft x5r=u; rt x6=if monospace:.6w else:.55w fi; bot y6r=-o;
+rt x7r=w-2.5u; y7=.35[bar_height,x_height];
+x4'=x4''=.5[x3,x4]; .5[y4',y4'']=y4; y4'-y4''=.5(x4-x3);
+z1'=z1+.2cap_curve*down+o*left; z1''=z1+.5(cap_curve-currentbreadth)*dir45;
+z8=z7+cap_stem*unitvector(z2-z7);
+.5[z9r,z10r]=z8; z10r-z9r=whatever*(dir45);
+lft x10r=w-2u; z12r=z10l+u*unitvector(z10-z8);
+z11l=z9r+u*unitvector(z8-z10);
+z8'=z8+1.5(cap_hair-currentbreadth)*unitvector(z8-z7);
+p0=z8l..z7l..{left}z6l..z5l..z4'l..z4l{down}..z4''l..z3l{up}..z2l..{down}z1l;
+p1=z1l{down}..z1'..z1r..z1''..z2r..{down}z3r..z4''r..{up}z4r..z4'r..z5r..{right}z6r..z7r..z8r;
+p2=z8r..z10r..z12l..{z9-z10}z10l...z8'...z9l..z11r..z9r{z10-z9}..z8l;
+(tim0,tim1-7)=subpath(0,6) of p1 intersectiontimes subpath (7,infinity) of p1;
+(tim2-3,tim3)=subpath(3,infinity) of p0 intersectiontimes p1;
+(tim4,tim5-4)=p1 intersectiontimes subpath(4,7) of p0;
+(tim6,tim7-4)=subpath(0,4) of p0 intersectiontimes subpath(4,infinity) of p0;
+filldraw subpath(0,rundy(p1,(tim0,f_obl)).zpet) of p1
+ ..subpath(rundy(p1,(tim1,f_obl)),rundy(p1,infinity).zpet) of p1
+ ..subpath(rundy(p2,0),rundy(p2,infinity).zpet) of p2
+ ..subpath(rundy(p0,0),rundy(p0,tim2).zpet) of p0
+ ..subpath(rundy(p1,tim3),rundy(p1,(tim4,1.2f_obl)).zpet) of p1
+ ..subpath(rundy(p0,tim5),infinity) of p0..cycle;
+oblu:=.5f_obl;
+infill subpath(rundy(p0,tim6),rundy(p0,tim7).zpet) of p0 ..cycle;
+penlabels(0,1,2,3,4,4',4'',5,6,7,8,9,10,11,12); labels(1',1'');
+endchar;
+