%Boisik Latin letters in italic form def mft = -.5bar_height#*slant enddef; charscription(10.5u,x_height,0)( path p[]; numeric tim[]; oblu:=2oblu; pos1(stem,0); pos2(stem,0); 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; math_fit(mft+.5u#,ic#+.5u#); 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; math_fit(-x_height#*slant,ic#); penlabels(1,2,3,4,5,6); endchar; iff known chars.sign_blank_b: bskchar "Blank italic b sign"; beginchar(chars.sign_blank_b,11.25u#,asc_height#,0); uni "0x2422"; 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; math_fit(mft,ic#); 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; math_fit(mft+.5u#,ic#); 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 y7y11l: 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 testdpi: save rundy; def rundy(expr p,t)suffix modifier:= if pair t: xpart(t) else: t fi enddef; fi filldraw subpath(0,rundy(p0,tim0).zpet) of p0 ..subpath(rundy(p1,tim1),infinity) of p1..cycle; infill subpath(0,rundy(p2,(tim2,f_obl)).zpet) of p2 ..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; math_fit(.5u#,ic#-1.5u#); 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; iff known chars.latin_g_alt: bskchar "The variant italic letter g"; beginchar(chars.latin_g_alt,9u#,x_height#,desc_depth#); uni "non"; italcorr x_height#*slant; adjust_fit(0,0); pickup tiny.nib; path p[]; numeric tim[]; oblu:=2oblu; pos1(stem,0); pos2(stem,0); x1=x2; rt x2r=w-u; top y1=bot y4l-hair; y2=-1/2d; pos3(hair,-90); pos3'(stem,-150); pos4(hair,90); pos5(curve,180); pos6(.5[hair,stem],-90); pos7(stem,0); x7=x1; y7=.5bar_height; top y4r=h+o; rt x4=lft x1l-hair; y5=bar_height; lft x5r=u; bot y6r=-o; x6=x4-u; x3=.5[x3',x1]; lft x3'r=u; bot y3r=-d-o; y3'l=.75[y3l,y2]; z3''=z3'l+.5stem*unitvector(z3'-z3); p0=z4r{left}..z5r..z6r..{up}z7r; p1=z3r{right}..z2r---z1r..z1l---z2l..{left}z3l..z3'l{up}..z3''..z3'r..{right}z3r; p2=z4l{left}..z5l..z6l..{up}z7l---z1l; (tim0,tim1)=p0 intersectiontimes p1; filldraw subpath(0,2) of p1..subpath(0,rundy(p0,tim0).zpet) of p0 ..subpath(rundy(p1,tim1),infinity) of p1&cycle; infill p2..cycle; math_fit(mft+u#,ic#-u#); penlabels(0,1,2,3,3',4,5,6,7); labels(3''); endchar; charscription(12u,asc_height,0)( numeric tim[]; oblu:=3oblu; path p[]; 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; math_fit(-u#,ic#); 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; math_fit(-u#,ic#); 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; math_fit(-u#,ic#); 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).alt; 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; math_fit(-.7x_height#*slant+u#,ic#+.75u#); 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); math_fit(-.7x_height#*slant+u#,ic#); 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).alt; 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; math_fit(desc_depth#*slant+u#,ic#-u#); 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); math_fit(desc_depth#*slant+u#,ic#-1.5u#); 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; math_fit(-u#,ic#-.5u#); 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.5u#; adjust_fit(serif_fit#,0); pickup tiny.nib; usechar; math_fit(-1.5u#,ic#); 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 1/3x_height#*slant; 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).alt; 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); math_fit(0,ic#); 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).alt; ital_hook(5,6); p0=z4r..z3r..{down}z2l; p0:=z4r{up}..{direction 1 of p0}z3r..{down}z2l; p1=z2r---z1r.._ik---z2l..z2'l..z2'r; (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 1/3x_height#*slant; adjust_fit(0,0); pickup tiny.nib; usechar; math_fit(0,ic#); 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; math_fit(mft,ic#); 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,-y2l) scaled .5 shifted (u+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); math_fit(0,ic#); endchar; iff known chars.latin_thorn: bskchar "The italic letter thorn"; beginchar(chars.latin_p,12u#,asc_height#,desc_depth#); uni "0x00FE"; 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'); math_fit(mft,ic#-.5u#); 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; math_fit(0,ic#-2u#); 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; math_fit(-.5u#,ic#-.5u#); 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; math_fit(-x_height#*slant,ic#-.5u#); 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).alt; ital_hook(4,5).alt; p0=reverse _ik---z2r..z6r..z7r---z3l..z3'l..z3'r..z3r---reverse _ih..{up}z7r; p1=z7l{down}..z6l..z2l---z1l; dl:=length p0; 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; math_fit(0,ic#); 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'); math_fit(-.25u#,ic#-.5u#); 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; math_fit(-.25u#,ic#-.5u#); 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 not testdpi:..z4'&z4'.. else:&z4l{up}..{down}z4r&fi z4r..z3'r..z3r---z1r..z1'r..z2r+left{dir-100}..z2'+left; p1=if not testdpi:z12'{z12l-z12'}.. fi z12l..z11'l..z11l---z13l..z13'l..z14l %if not testdpi:..z14'&z14'..else: &z14l{up}..{down}z14r&% fi z14r..z13'r..z13r---z11r..z11'r..z12r if not testdpi:..z12' fi; (tim0,tim1-4)=p0 intersectiontimes subpath (4,infinity) of p1; (tim2,tim3)=subpath (0,4) of p1 intersectiontimes p0; (tim4-4,tim5)=subpath(4,infinity) of p0 intersectiontimes p1; numeric node; node:=if not testdpi:9 else: 8 fi; (tim6-node,tim7-node)=subpath (node,infinity) of p1 intersectiontimes subpath(node,infinity) of p0; filldraw subpath(0,rundy(p0,tim0).zpet) of p0 ..reverse subpath(rundy(p1,tim2),rundy(p1,tim1).zpet) of p1 ..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'); math_fit(.5u#,ic#-.5u#); 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; math_fit(desc_depth#*slant,ic#-.5u#); 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; math_fit(0,ic#-.25u#); 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#, asc_height#, 0); uni "0x003F"; italcorr .5[asc_height#,x_height#]*slant; adjust_fit(punct_fit#,0); pickup tiny.nib; pos0(vair,-60); pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0); pos4(curve,0); pos5(hair,90); pos6(vair,120); lft x1r=u; y1=.5[h,x_height]+hair; top y2r=h+o; x2=.5w-hair; y0l=y1-2hair; x0=.35[x2,x1]; rt x3r=w-u; y3=.5[h,x_height]-hair; x4=x0; y4=bar_height; x5=.5w; bot y5l=2dot_size; x6-x5=x0-x1; y6-y5=y1-y0; 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_query_query: bskchar "Italic double question mark"; beginchar(chars.sign_query_query, 15u#, asc_height#, 0); uni "0x2047"; italcorr .5[asc_height#,x_height#]*slant; adjust_fit(0,0); pickup tiny.nib; pos0(vair,-60); pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0); pos4(curve,0); pos5(hair,90); pos6(vair,120); lft x1r=u; y1=.5[h,x_height]+hair; top y2r=h+o; x2=.5(w-7u)-hair; y0l=y1-2hair; x0=.35[x2,x1]; rt x3r=w-8u; y3=.5[h,x_height]-hair; x4=x0; y4=bar_height; x5=.5(w-7u); bot y5l=2dot_size; x6-x5=x0-x1; y6-y5=y1-y0; filldraw z6l{dir240}..z5l..z4l..z3l{up}..z2l{left}..z1l..{dir60}z0l ..{dir-120}z0r..z1r..{right}z2r..{down}z3r..z4r..z5r..{dir60}z6r ..cycle; filldraw (z6l{dir240}..z5l..z4l..z3l{up}..z2l{left}..z1l..{dir60}z0l ..{dir-120}z0r..z1r..{right}z2r..{down}z3r..z4r..z5r..{dir60}z6r ..cycle) shifted (w-u-x3r,0); bot z100=(x5,.5dot_size); z101=z100 shifted (w-u-x3r,0); dot(100); dot(101); penlabels(0,1,2,3,4,5,6); endchar; iff known chars.sign_query_exclam: bskchar "Italic question and exclamation mark"; beginchar(chars.sign_query_exclam, 13u#, asc_height#, 0); uni "0x2048"; italcorr .5[asc_height#,x_height#]*slant; adjust_fit(0,0); pickup tiny.nib; pos0(vair,-60); pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0); pos4(curve,0); pos5(hair,90); pos6(vair,120); lft x1r=u; y1=.5[h,x_height]+hair; top y2r=h+o; x2=.5(w-4u)-hair; y0l=y1-2hair; x0=.35[x2,x1]; rt x3r=w-5u; y3=.5[h,x_height]-hair; x4=x0; y4=bar_height; x5=.5(w-4u); bot y5l=2dot_size; x6-x5=x0-x1; y6-y5=y1-y0; filldraw z6l{dir240}..z5l..z4l..z3l{up}..z2l{left}..z1l..{dir60}z0l ..{dir-120}z0r..z1r..{right}z2r..{down}z3r..z4r..z5r..{dir60}z6r ..cycle; bot z100=(x5,.5dot_size); dot(100); bot z7=(w-2.5u,.5dot_size); dot(7); penpos8(dot_size,0); pos9(hair,0); x8=x9=x7; y8=h-.5stem; bot y9=dot_size+stem; y9r:=y9r+.5hair; filldraw z8l---z9l..{.5[z8,z8r]-z9r}z9r..{z8r-z9r}z8r..cycle; penlabels(0,1,2,3,4,5,6,8,9); endchar; iff known chars.sign_exclam_query: bskchar "Exclamation and italic question mark"; beginchar(chars.sign_exclam_query, 13u#, asc_height#, 0); uni "0x2049"; italcorr .5[asc_height#,x_height#]*slant; adjust_fit(0,0); pickup tiny.nib; pos0(vair,-60); pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0); pos4(curve,0); pos5(hair,90); pos6(vair,120); lft x1r=5u; y1=.5[h,x_height]+hair; top y2r=h+o; x2=4u+.5(w-4u)-hair; y0l=y1-2hair; x0=.35[x2,x1]; rt x3r=w-u; y3=.5[h,x_height]-hair; x4=x0; y4=bar_height; x5=.5(w-4u)+4u; bot y5l=2dot_size; x6-x5=x0-x1; y6-y5=y1-y0; filldraw z6l{dir240}..z5l..z4l..z3l{up}..z2l{left}..z1l..{dir60}z0l ..{dir-120}z0r..z1r..{right}z2r..{down}z3r..z4r..z5r..{dir60}z6r ..cycle; bot z100=(x5,.5dot_size); dot(100); bot z7=(2.5u,.5dot_size); dot(7); penpos8(dot_size,0); pos9(hair,0); x8=x9=x7; y8=h-.5stem; bot y9=dot_size+stem; y9r:=y9r+.5hair; filldraw z8l---z9l..{.5[z8,z8r]-z9r}z9r..{z8r-z9r}z8r..cycle; penlabels(0,1,2,3,4,5,6,8,9); endchar; iff known chars.sign_interrobang: bskchar "Italic interrobang mark"; beginchar(chars.sign_interrobang, 9u#, asc_height#, 0); uni "0x203D"; italcorr .5[asc_height#,x_height#]*slant; adjust_fit(punct_fit#,0); pickup tiny.nib; path p[]; numeric tim[]; pos0(vair,-60); pos1(.45[hair,stem],180); pos2(hair,90); pos3(curve,0); pos4(curve,0); pos5(hair,90); pos6(vair,120); penpos7(dot_size,0); pos8(hair,0); x7=x8=x5; lft x1r=u; y1=.5[h,x_height]+hair; top y2r=h+o; x2=.5w-hair; y0l=y1-2hair; x0=.35[x2,x1]; rt x3r=w-u; y3=.5[h,x_height]-hair; x4=x0; y4=bar_height; x5=.5w; bot y5l=2dot_size; x6-x5=x0-x1; y6-y5=y1-y0; y7=y2+o; bot y8=dot_size+stem; y8r:=y8r+.5hair; y7l:=y2l-o; p0:=z6l{dir240}..z5l..z4l..z3l{up}..z2l{left}..z1l..{dir60}z0l; p1:=z0r{dir-120}..z1r..{right}z2r..{down}z3r..z4r..z5r..{dir60}z6r; p2:=reverse (z7l---z8l..{.5[z7,z7r]-z8r}z8r..{z7r-z8r}z7r..cycle); p3:=subpath(-1,length p2-1) of p2; y7'=y2r+o; z7'=whatever[z8r,z7r]; p4:=z8r--z7'; p5:=z8l--z7l; (tim0,tim1)=p0 intersectiontimes subpath(0,3) of p2; (tim2,tim3-2)=p0 intersectiontimes subpath(2,4) of p2; (tim4-2,tim5)=subpath(2,infinity) of p0 intersectiontimes subpath(0,2) of p3; (tim6-3,tim7)=subpath(3,infinity) of p0 intersectiontimes subpath(0,1.75) of p3; (tim8,tim9)=subpath(0,3) of p1 intersectiontimes p2; (tim10-2,tim11)=subpath(2,3) of p1 intersectiontimes p2; (tim12-3,tim13)=subpath(3,4) of p1 intersectiontimes p2; (tim14-4,tim15)=subpath(4,6) of p1 intersectiontimes subpath(0,3) of p2; (tim16-2,tim17)=subpath(2,infinity) of p0 intersectiontimes p4; (tim18-3,tim19)=subpath(3,infinity) of p0 intersectiontimes p4; (tim20-3,tim21)=subpath(3,4) of p1 intersectiontimes p5; (tim22-4,tim23)=subpath(4,6) of p1 intersectiontimes p5; filldraw subpath(0,rundy(p0,tim0).zpet) of p0 ..{z8r-.5[z7,z7r]}z8r..z8l ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 ..subpath(rundy(p3,tim5),rundy(p3,tim7).zpet) of p3 ..subpath(rundy(p0,tim6),infinity) of p0 ..subpath(0,rundy(p1,tim8).zpet) of p1 ..subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 ..subpath(rundy(p1,tim10),rundy(p1,tim12).zpet) of p1 ..subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2 ..subpath(rundy(p1,tim14),infinity) of p1..cycle; oblu:=1.5oblu; infill subpath(rundy(p0,tim16),rundy(p0,tim18).zpet) of p0 ..subpath(rundy(p4,tim19).zpet,rundy(p4,tim17)) of p4..cycle; infill subpath(rundy(p1,tim20),rundy(p1,tim22).zpet) of p1 ..subpath(rundy(p5,tim23),rundy(p5,tim21).zpet) of p5..cycle; bot z100=(x5,.5dot_size); dot(100); penlabels(0,1,2,3,4,5,6,7,8); endchar; iff known chars.sign_turned_query: bskchar "Turned italic question mark"; beginchar(chars.sign_turned_query, 9u#, asc_height#-desc_depth#, desc_depth#); uni "non"; 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_gnaborretni: bskchar "Reversed italic interrobang mark"; beginchar(chars.sign_gnaborretni, 9u#, asc_height#-desc_depth#, desc_depth#); uni "non"; adjust_fit(0,0); pickup tiny.nib; path p[]; numeric tim[]; pos0(vair,120); pos1(.45[hair,stem],0); pos2(hair,-90); pos3(curve,180); pos4(curve,180); pos5(hair,-90); pos6(vair,-60); penpos7(dot_size,180); pos8(hair,180); x7=x8=x5; rt x1r=w-u; y1=-d+(asc_height-.5[asc_height,x_height])-hair; bot y2r=-d-o; x2=.5w+hair; y0l=y1+2hair; x0=.35[x2,x1]; lft x3r=u; y3=y1+2hair; x4=x0; y4=-d+(asc_height-bar_height); x5=.5w; top y5l=h-2dot_size; x6-x5=x0-x1; y6-y5=y1-y0; top z100=(x5,h-.5dot_size); dot(100); y7=y2r-o; top y8=h-dot_size-stem; y8r:=y8r-.5hair; y7l:=y2l+o; p0:=z6l{dir60}..z5l..z4l..z3l{down}..z2l{right}..z1l..{dir240}z0l; p1:=z0r{dir60}..z1r..{left}z2r..{up}z3r..z4r..z5r..{dir240}z6r; p2:=reverse (z7l---z8l..{.5[z7,z7r]-z8r}z8r..{z7r-z8r}z7r..cycle); p3:=subpath(-1,length p2-1) of p2; y7'=y2r-o; z7'=whatever[z8r,z7r]; p4:=z8r--z7'; p5:=z8l--z7l; (tim0,tim1)=p0 intersectiontimes subpath(0,3) of p2; (tim2,tim3-2)=p0 intersectiontimes subpath(2,4) of p2; (tim4-2,tim5)=subpath(2,infinity) of p0 intersectiontimes subpath(0,2) of p3; (tim6-3,tim7)=subpath(3,infinity) of p0 intersectiontimes subpath(0,1.75) of p3; (tim8,tim9)=subpath(0,3) of p1 intersectiontimes p2; (tim10-2,tim11)=subpath(2,3) of p1 intersectiontimes p2; (tim12-3,tim13)=subpath(3,4) of p1 intersectiontimes p2; (tim14-4,tim15)=subpath(4,6) of p1 intersectiontimes subpath(0,3) of p2; (tim16-2,tim17)=subpath(2,infinity) of p0 intersectiontimes p4; (tim18-3,tim19)=subpath(3,infinity) of p0 intersectiontimes p4; (tim20-3,tim21)=subpath(3,4) of p1 intersectiontimes p5; (tim22-4,tim23)=subpath(4,6) of p1 intersectiontimes p5; filldraw subpath(0,rundy(p0,tim0).zpet) of p0 ..{z8r-.5[z7,z7r]}z8r..z8l ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 ..subpath(rundy(p3,tim5),rundy(p3,tim7).zpet) of p3 ..subpath(rundy(p0,tim6),infinity) of p0 ..subpath(0,rundy(p1,tim8).zpet) of p1 ..subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 ..subpath(rundy(p1,tim10),rundy(p1,tim12).zpet) of p1 ..subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2 ..subpath(rundy(p1,tim14),infinity) of p1..cycle; oblu:=1.5oblu; infill subpath(rundy(p0,tim16),rundy(p0,tim18).zpet) of p0 ..subpath(rundy(p4,tim19).zpet,rundy(p4,tim17)) of p4..cycle; infill subpath(rundy(p1,tim20),rundy(p1,tim22).zpet) of p1 ..subpath(rundy(p5,tim23),rundy(p5,tim21).zpet) of p5..cycle; penlabels(0,1,2,3,4,5,6,7,8); endchar; iff known chars.sign_at: bskchar "Italic at sign"; beginchar(chars.sign_at, 16u#, asc_height#-.3desc_depth#, .6desc_depth#); uni "0x0040"; 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;