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