% Formal Script upper case letters:
% These letters were coded by R. A. Smith in the Fall of 1991,
% based upon the Formal Script designed by R. Hunter Middleton.
% Computer Modern parameters and macros are used.

% Character codes \0101 through \0132 and \0177 are generated.

% Initial version (1.0) September 1991.
def bulb(suffix $,$$,$$$) =
 z$$$r=z$$r; numeric dist; dist=y$r-y$$r;
 path_.l:=z$l{x$$r-x$r,0}...{0,y$$r-y$r}z$$l;
 filldraw path_.l--z$$r{0,y$r-y$$r}...{x$r-x$$r,0}z$r--cycle; % link
 path_.r:=z$$$l{-slant*dist,dist}..z$$$r{slant*dist,-dist}; % near-circle
 filldraw subpath(0,xpart(path_.r intersectiontimes path_.l)) of path_.r
  --z$$r{0,y$$r-y$r}..cycle; % bulb
 enddef;

cmchar "Script letter A";
beginchar("A",14u#,cap_height#,0);
italcorr h#*slant-3u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,110); pos3(vair,90); pos5(cap_curve,-20);
x1l=hround w-u; y1=.2h; x3=w-3u; y3=.08h; x5l=hround u; y5=.55h;
pos7(vair,-90); pos9(cap_hair,-180);
x7=2.5u; top y7l=.65h; x11l=10u; bot y9=0;
pos11(cap_stem,0); pos13(cap_hair,0);
x11r=x9l; bot y11=0; x13l=x11l; top y13=h+apex_o;
filldraw stroke z1e..{left}z3e...z5e{up}
...z7e{right}...{.5 slant,-1}z9e; % crossbar
filldraw stroke z11e--z13e; % right ascender
pos15(.5[vair,cap_curve],-90); pos17(cap_hair,0); pos19(cap_hair,0);
rt x15l=rt x13r; y15l=y13r; x17=8.5u; y17=.8h; x19=6u; y19=.25h;
pos21(vair,-90); pos23(vair,-180); pos25(flare,-180);
bot y21r=-oo; x21=3.5u; y25=.15h; lft x25r=hround u;
filldraw stroke z15e..z17e...{down}z19e...{left}z21e; % left ascender
bulb(21,23,25);
penlabels(1,3,5,7,9,11,13,15,17,19,21,23,25);
math_fit(-.15h#*slant,.2h#*slant);
endchar;


cmchar "Script letter B";
beginchar("B",17u#,cap_height#,0);
italcorr h#*slant-5.5u#;
adjust_fit(0,0); pickup fine.nib;
 pos1(cap_hair,-45); x1r=11u; top y1l=h;
pos2(cap_stem,0); pos3(vair,-90); pos4(hair,-180); pos5(flare,-180);
x2r=10u; y2=.3h; bot y3l=-oo; x3=6.5u; x5r=hround 3u; y5=.17h;
filldraw stroke z1e{-1,-1}...z2e{down}...{left}z3e; % stem
bulb(3,4,5);
pos6(vair,-270); pos8(vair,-180); pos10(vair,-90); pos12(cap_curve,0); %-15
pos14(vair,90); pos16(.5[cap_curve,cap_stem],180); pos18(vair,270);
pos20(cap_curve,360); pos22(vair,450); pos24(cap_hair,540);
pos26(vair,630); pos28(cap_curve,720); pos30(vair,750);
x6=13u; y6=.3h; x8r=11u; y8=.2h; x10=13.5u; bot y10r=-oo;
rt x12r=hround w-u; y12=.2h; x14=11u; y14=.52h;
x16l=10.5u; y16=.48h; x18=11u; y18=.44h; x20r=13.5u; y20=.65h;
x22=6u; top y22r=h+oo; lft x24r=hround u; y24=.7h;
x26=4.5u; y26=.4h; x28=6.5u; y28=.55h; x30=5.5u; y30=.8h;
filldraw stroke pulled_arc.e(6,8)&pulled_arc.e(8,10)&pulled_arc.e(10,12)
&pulled_arc.e(12,14)&pulled_arc.e(14,16)&pulled_arc.e(16,18)
&pulled_arc.e(18,20)&pulled_arc.e(20,22)&pulled_arc.e(22,24)
&pulled_arc.e(24,26)&pulled_arc.e(26,28)..{dir(130)}z30e;
%z6e{left}...z8e{down}...z10e{right}
%...z12e..z14e{left}...z16e{down}...z18e{right}
%...z20e{up}...z22e{left}...z24e{down}...z26e{right}
%...z28e{up}..z30e;
penlabels(1,2,3,4,5,6,8,10,12,14,16,18,20,22,24,26,28,30);
math_fit(-.15h#*slant-2u#,.3h#*slant);
endchar;

cmchar "Script letter C";
beginchar("C",16u#,cap_height#,0);
italcorr h#*slant-2.75u#;
adjust_fit(0,0); pickup fine.nib;
pos0(vair,210); pos1(cap_hair,180); pos2(vair,90);
pos3(cap_curve,0); pos4(vair,-90); pos5(cap_stem,-180);
pos6(vair,-270);
pos7(cap_hair,-360); pos8(vair,-450); pos9(cap_curve,-540); pos10(vair,-630);
lft x0r=12u; bot y0r=.1h;
x1=11u; bot y1=.25h; x2=12.25u; y2=.4h; x3=15u; y3=.15h;
x4=13u; y4=-oo; lft x5r=hround 7.5u; y5=.5h; x6=11.5u; top y6l=h+oo;
rt x7r=hround 14u; y7=.8h; x8=7u; bot y8r=.5h; lft x9r=hround u; y9=.8h;
x10=4u; y10=.95h;
filldraw stroke z0e..pulled_arc.e(1,2)&pulled_arc.e(2,3)&pulled_arc.e(3,4);
filldraw stroke pulled_arc.e(4,5)&pulled_arc.e(5,6)&pulled_arc.e(6,7);
filldraw stroke pulled_arc.e(7,8)&pulled_arc.e(8,9)&pulled_arc.e(9,10);
penlabels(1,2,3,4,5,6,7,8,9,10);
math_fit(-.8h#*slant,.35h#*slant);
endchar;

cmchar "Script letter D";
beginchar("D",15u#,cap_height#,0);
italcorr 0.8h#*slant-2.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,90); pos2(cap_stem,180); pos3(vair,90);
x1=hround w-3u; y1=0.8h;
x2=.5[x1,x3]; y2=.5[y1,y3];
x3=8u; bot y3l=-o;
pos4(cap_curve,0); pos5(vair,-90); pos6(vair,-90);
lft x4l=hround 5u; y4=y3+0.03h; x5=7u; y5=y3+0.06h; x6=w-2.5u; bot y6r=-o;
pos7(cap_hair,0); pos8(vair,90); pos9(cap_curve,180);
x7r=hround w-u; y7=0.33h; x8=5u; top y8r=h+oo; x9r=hround u; y9=0.75h;
pos10(vair,270); pos11(cap_hair,360); pos12(vair,380);
x10=5u; y10r=0.4h; x11r=7u; y11=0.6h; x12l=6u; y12r=0.8h;
filldraw stroke z1e{left}...z2e{down}...z3e{left}...z4e{up} % stem
...z5e{right}...z6e..z7e..z8e{left}...z9e{down} % bowl
...z10e{right}...z11e{up}..z12e; % flourish
penlabels(1,2,3,4,5,6,7,8,9,10,11,12);
math_fit(-4u#,.33h#*slant);
endchar;


cmchar "Script letter E";
beginchar("E",11u#,cap_height#,0);
italcorr .8h#*slant-2u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,-270); pos2(cap_hair,-180); pos3(vair,-90);
numeric light_stem; hv_curve=.5[cap_curve,cap_stem];
pos4(cap_hair,0); pos5(.3[vair,cap_curve],90); pos6(hv_curve,180);
pos7(vair,270); pos8(cap_hair,360); pos9(vair,450); pos10(hv_curve,540);
pos11(vair,630); pos12(cap_curve,720); pos13(vair,810);
pos14(vair,930);
x1=6u; top y1r=.9h; x2r=5u; y2=.8h; x3=7u; y3=.65h; x4=8u; y4=.75h;
x5=4u; top y5r=h+oo; lft x6r=hround 1.2u; y6=.8h; x7=5.5u; y7=.51h;
x8=6u; y8=.53h; x9=4.5u; y9=.57h; lft x10r=hround u; y10=.38h;
x11=7u; bot y11r=-oo; rt x12r=hround w-u; y12=.18h; x13=6u; y13=.38h;
x14r=5.5u; y14r=.15h;
filldraw stroke pulled_arc.e(1,2)&pulled_arc.e(2,3)&pulled_arc.e(3,4)
&pulled_arc.e(4,5)&pulled_arc.e(5,6)&pulled_arc.e(6,7)&pulled_arc.e(7,8)
&pulled_arc.e(8,9)&pulled_arc.e(9,10)&pulled_arc.e(10,11)&pulled_arc.e(11,12)
&pulled_arc.e(12,13)..{dir(300)}z14e;
%filldraw stroke z1e{left}...z2e{down}...z3e{right}...z4e{up}
%...z5e{left}...z6e{down}...z7e{right}...z8e{up}...z9e{left}
%...z10e{down}...z11e{right}...z12e{up}...z13e{left}..z14e;
math_fit(-.3h#*slant,.2h#*slant);
endchar;

cmchar "Script letter F";
beginchar("F",14u#,cap_height#,0);
italcorr h#*slant-2.0u#;
adjust_fit(0,0); pickup fine.nib;
pos1(cap_hair,-45); pos2(cap_curve,0); pos3(cap_stem,0); pos4(vair,-90);
pos5(hair,-180); pos6(flare,-180);
x1r=9.3u; y1=.85h; lft x2l=8u; y2=.65h; rt x3r=10u; y3=.3h;
x4=6.25u; bot y4l=-o; lft x6r=hround 2u; y6=.17h;
filldraw stroke z1e..z2e{down}...z3e{down}...{left}z4e; % stem
bulb(4,5,6);
pos7(cap_curve,90); rt x7=hround 12u; top y7r=.93h;
pos9(cap_curve,90); x9=5u; top y9=h+oo;
pos10(cap_hair,180); lft x10r=hround u; y10=.75h;
pos11(vair,270); x11=4u; bot y11r=.5h;
pos12(cap_curve,360); rt x12r=7u; y12=.65h;
pos13(vair,415); x13=5u; y13=.85h;
filldraw stroke z7e{left}...pulled_arc.e(9,10)&pulled_arc.e(10,11)
&pulled_arc.e(11,12)..z13e; % cap
pos14(cap_hair,0); pos15(vair,-90); pos16(cap_hair,0);
pos17(vair,90); pos18(.5[cap_hair,cap_curve],180);
pos19(.2[cap_curve,cap_stem],210);
lft x14l=hround 5u; y14=.28h; x15=9u; y15=.4h; rt x16r=hround 13u; y16=.5h;
x17=12u; top y17r=.58h; lft x18r=11u; y18=.45h; rt x19l=12.3u; bot y19r=.3h;
filldraw stroke pulled_arc.e(14,15)&pulled_arc.e(15,16)&pulled_arc.e(16,17)
&pulled_arc.e(17,18)..z19e; % bar
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13);
math_fit(-.15h#*slant-u#,.5h#*slant);
endchar;


cmchar "Script letter G";
beginchar("G",15.2u#,cap_height#,0);
italcorr .85h#*slant-2u#;
adjust_fit(0,0); pickup fine.nib;
pos0(vair,-270); pos1(cap_curve,-180); pos2(vair,-90); pos3(cap_curve,0);
pos4(vair,90); pos5(cap_stem,180); pos6(vair,270); pos7(vair,315);
x0=3.5u; y0=.95h; lft x1r=hround u; y1=.75h; x2=6.5u; bot y2r=vround .4h;
rt x3r=hround 12u; y3=.85h; x4=9.5u; top y4r=h+o; lft x5r=hround 6.7u;
y5=.6h; x6=10.5u; y6=.3h; x7=13u; y7=.6h;
filldraw stroke pulled_arc.e(0,1)&pulled_arc.e(1,2)&pulled_arc.e(2,3)
&pulled_arc.e(3,4)&pulled_arc.e(4,5)&pulled_arc.e(5,6)..{dir(45)}z7e;
pos8(cap_hair,-45); pos9(.2[cap_curve,cap_stem],0);
pos10(cap_stem,0); pos11(vair,-90);
pos12(hair,-180); pos13(flare,-180);
z8=z7; lft x9l=hround 12u; y9=.4h; rt x10r=hround 14.2u; y10=.12h;
x11=11.25u; bot y11l=-o; x13r=hround 7u; y13=.17h;
filldraw stroke z8e{dir(225)}..z9e{down}...z10e{down}...{left}z11e;
bulb(11,12,13);
penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13);
math_fit(-.75h#*slant,.5h#*slant-2u#);
endchar;

cmchar "Script letter H";
beginchar("H",17u#,cap_height#,0);
italcorr 0.8h#*slant;
adjust_fit(0,0); pickup fine.nib;
pos1(cap_hair,180); pos2(vair,90);
pos3(cap_stem,0); pos4(vair,-90);
pos5(cap_hair,-180); pos6(vair,-270);
pos7(cap_hair,-180);
x1l=hround w-u; y1=0.2h; x2=w-2.5u; bot y2l=-oo; x3=w-6u; y3=.4h;
x4=w-3.5u; top y4l=h+oo; x5l=hround w-u; y5=0.75h; x6=9u; y6=.55h;
x7r=hround 3u; y7=.35h;
filldraw stroke z1e{down}...z2e{left}...z3e{up}...z4e{right} % hook, rt stem
...z5e{down}...z6e{left}...{down}z7e; % crossbar
pos8(cap_hair,180); pos9(vair,90); pos10(cap_curve,0);
pos11(vair,90); pos12(cap_hair,180);
x8r=hround u; y8=.725h; x9=2u; top y9r=.9h; x10r=4u; y10=.75h;
x11=5u; bot y11l=.65h; x12r=7u; y12=.8h;
filldraw stroke z8e{up}...z9e{right}...z10e{down}...z11e{right}
...{up}z12e; % flourish
 pos13(cap_hair,-45); x13r=8u; top y13l=h+apex_o;
pos14(cap_stem,0); pos15(vair,-90); pos16(hair,-180); pos17(flare,-180);
x14=7u; y14=.3h; bot y15l=-o; x15=4.5u; x17r=hround u; y17=.17h;
filldraw stroke z13e..z14e{down}...{left}z15e; % left stem
bulb(15,16,17);
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17);
math_fit(-.15h#*slant,.2h#*slant);
endchar;


cmchar "Script letter I";
beginchar("I",11u#,cap_height#,0);
italcorr h#*slant-u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,135); pos2(cap_curve,180);
pos3(vair,270); pos4(cap_hair,360); pos5(vair,390);
pos6(cap_hair,-45); x6r=9u; top y6l=h+apex_o;
z1r=z6l; x2r=3u; y2=.7h; x3=8u; y3l=.35h; x4l=10u; y4=.5h;
x5r=9u; y5r=.7h;
filldraw stroke z1e{dir(210)}..pulled_arc.e(2,3)&pulled_arc.e(3,4)
..{dir(130)}z5e;
pos7(cap_stem,0); pos8(vair,-90); pos9(hair,-180); pos10(flare,-180);
x7l=7u; y7=.3h; bot y8r=-o; x8=4.5u; x10r=hround u; y10=.17h;
pos11(cap_curve,0); x11l=6.75u; y11=.67h;
filldraw stroke z6e..z11e{down}...z7e{down}...{left}z8e;
bulb(8,9,10);
penlabels(1,2,3,4,5,6,7,8,9,10,11);
math_fit(-.1h#*slant,.5h#*slant);
endchar;


cmchar "Script letter J";
beginchar("J",12u#,cap_height#,desc_depth#);
italcorr h#*slant-u#;
adjust_fit(.7d#*slant,0); pickup fine.nib;
pos1(vair,135); pos2(cap_curve,180);
pos3(vair,270); pos4(cap_hair,360); pos5(vair,390);
pos6(cap_hair,-45); x6r=9u; top y6l=h+apex_o;
z1r=z6l; x2r=3u; y2=.7h; x3=8u; y3l=.35h; x4l=10u; y4=.5h;
x5r=9u; y5r=.7h;
filldraw stroke z1e{dir(210)}..pulled_arc.e(2,3)&pulled_arc.e(3,4)
..{dir(130)}z5e;
pos7(cap_stem,0); pos8(vair,-90); pos9(hair,-180); pos10(hair,-180);
x7l=7u; y7=.25h; bot y8l=-d-o; x8=4.5u; rt x9r=hround 2u; y9=-.5d;
rt x10l=hround 11u; y10=.2h;
pos11(cap_curve,0); x11l=6.75u; y11=.67h; 
pos12(vair,-240); z12=.5[z9,z10];
filldraw stroke z6e..{down}z11e...{down}z7e&pulled_arc.e(7,8)
&pulled_arc.e(8,9)...z12e{dir(15)}...{up}z10e;
penlabels(1,2,3,4,5,6,7,8,9,10,11,12);
math_fit(0,.5h#*slant);
endchar;

cmchar "Script letter K";
beginchar("K",16u#,cap_height#,0);
italcorr h#*slant-1.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(cap_hair,180); pos2(vair,90);
pos3(.5[cap_curve,cap_stem],0); pos4(vair,90);
pos5(cap_hair,180); pos6(vair,270);
pos7(.75[cap_hair,cap_curve],360); pos8(vair,315);
x1l=hround w-u; y1=0.2h; x2=w-2.5u; bot y2l=-o; x3=w-6u; y3=.35h;
x4=8.5u; top y4l=.55h; x5l=8u; y5=0.475h; x6=8.5u; y6=.45h;
x7r=hround w-4u; y7=.825h; x8l=hround w-2u; top y8l=h;
filldraw stroke pulled_arc.e(1,2)&pulled_arc.e(2,3) % hook
&pulled_arc.e(3,4)&pulled_arc.e(4,5) % right leg
&pulled_arc.e(5,6)&pulled_arc.e(6,7)..z8e; % right arm
pos9(cap_hair,180); pos10(vair,90); pos11(cap_curve,0);
pos13(vair,90); pos12(cap_hair,180);
x9r=hround u; y9=.715h; x10=2u; top y10r=.9h; x11r=4u; y11=.75h;
x13=5u; bot y13l=.65h; x12r=7u; y12=.8h;
filldraw stroke pulled_arc.e(9,10)&pulled_arc.e(10,11)
&pulled_arc.e(11,13)&pulled_arc.e(13,12); % flourish
pos14(cap_hair,-45); x14r=8u; top y14l=h+apex_o;
pos15(cap_stem,0); pos16(vair,-90); pos17(hair,-180); pos18(flare,-180);
x15=7u; y15=.3h; bot y16l=-o; x16=4.5u; x18r=hround u; y18=.17h;
filldraw stroke z14e..z15e{down}...{left}z16e; % stem
bulb(16,17,18);
penlabels(1,2,3,4,5,6,7,8,9,10,11,13,12,14,15,16,17,18);
math_fit(-.15h#*slant,.2h#*slant);
endchar;

cmchar "Script letter L";
beginchar("L",15.5u#,cap_height#,0);
italcorr 0.75 h#*slant-u#;
adjust_fit(0,0); pickup fine.nib;
pos1(cap_hair,180); pos2(0.8[vair,cap_curve],90); 
pos3(vair,90);
x1l=hround w-u; y1=0.2h; x2=12u; bot y2l=-o; x3=4u; y3=0.12h;
pos4(cap_curve,180); pos5(vair,270); pos6(cap_stem,360);
x4r=hround 2u;  x5=5u; x6=8.5u;
y4=0.06h; bot y5r=-o; y6=0.3h;
pos7(vair,270); pos8(0.5[cap_hair,cap_curve],180); pos9(vair,90); 
x7=10u; top y7l=h+o; x8l=hround w-2.5u; y8=0.75h; x9=7u; y9r=.5h;
pos10(cap_curve,0); pos11(vair,-90);
x10l=hround u; y10=0.8h; x11=4u; top y11l=h;
filldraw stroke z1e{down}...z2e{left}...z3e{left} % foot
...z4e{down}...z5e{right}...z6e{up}...z7e{right}...z8e{down} % stem
...z9e{left}...z10e{up}..z11e; % flourish
penlabels(1,2,3,4,5,6,7,8,9,10,11);
math_fit(-2u#,.25h#*slant);
endchar;

cmchar "Script letter M";
beginchar("M",19u#,cap_height#,0);
italcorr h#*slant-4.25u#;
adjust_fit(0,0); pickup fine.nib;
pos1(cap_hair,-15); pos2(.6[cap_curve,cap_stem],0);
pos3(cap_stem,0); pos4(vair,90); pos5(cap_hair,180);
rt x1r=hround 14.25u; top y1=h+apex_o; lft x3l=hround 13u; y3=.25h;
x4=16u; y4=-o; top y5=.2h; rt x5l=hround 18u;
rt x2r=14u; y2=.8h; % should be intersectionpoint!
filldraw stroke z1e{dir(-105)}---z2e{down}...
% {down}z3e...{right}z4e..{up}z5e; % right descender
pulled_arc.e(3,4)&pulled_arc.e(4,5);
pos6(.2[vair,cap_stem],90); pos7(cap_stem,0); pos8(cap_hair,-20);
x6=10.25u; bot y6r=-apex_o; x8=9.5u; top y8=h+apex_o;
pos9(cap_hair,0); pos10(vair,-90); pos11(cap_hair,-180); pos12(flare,-180);
x9=6u; y9=.45h; x10=3.5u; bot y10r=-oo; lft x12r=hround u; y12=.13h;
filldraw stroke z8e{dir(-110)}..{dir(-100)}z9e..{left}z10e; % left descender
bulb(10,11,12);
x7l=8u; y7=.25h; pos15(.5[cap_curve,cap_stem],0);
rt x15r=hround 9.5u; y15=.8h;  % should be intersectionpoint!
pos13(cap_hair,165); z13=z1; pos14(cap_hair,180); x14=11.5u; y14=.45h;
filldraw stroke z13e{dir(-105)}...{dir(-98)}z14e...
% {left}z6e...{up}z7e
pulled_arc.e(6,7)...{up}z15e---{dir(70)}z8e;
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17);
math_fit(-.15h#*slant,.2h#*slant);
endchar;

cmchar "Script letter N";
beginchar("N",15u#,cap_height#,0);
italcorr h#*slant;
adjust_fit(0,0); pickup fine.nib;
pos1(.5[cap_hair,cap_curve],-60); pos2(cap_hair,0);
x1=14u; y1=h; lft x2l=hround 12u; y2=.65h;
pos4(cap_hair,0); pos5(cap_stem,0); x4l=13u; y4=0; x5=10u; y5=.5h;
pos6(cap_hair,0); x6l=6.75u; top y6=h;
filldraw stroke z1e{dir(-150)}..{down}z2e..z4e;
filldraw stroke z6e{down}..z5e..{dir(-80)}z4e;
pos7(cap_hair,0); pos8(vair,-90); pos9(hair,-180); pos10(flare,-180);
x7l=6.75u; y7=.3h; bot y8l=-o; x8=4.5u; x10r=hround u; y10=.17h;
filldraw stroke z6e...z7e...{left}z8e;
bulb(8,9,10);
penlabels(1,2,3,4,5,6,7,8,9,10);
math_fit(-.15h#*slant,.4h#*slant-u#);
endchar;

cmchar "Script letter O";
beginchar("O",11.5u#,cap_height#,0);
italcorr h#*slant-3u#;
adjust_fit(0,0); pickup fine.nib;
pos0(vair,-110); pos1(vair,-90); pos2(cap_hair,0);
pos3(vair,90); pos4(cap_stem,180); pos5(vair,270); pos6(cap_curve,360);
pos7(vair,450); pos8(cap_hair,540); pos9(cap_hair,570); x0=6u; y0=.7h;
x1=8.5u; y1=.65h; rt x2r=hround 10u; y2=.75h; x3=5u; top y3r=h+oo;
lft x4r=hround u; y4=.6h; x5=7.5u; bot y5r=-oo; rt x6r=hround 10.5u; y6=.3h;
x7=5.5u; y7=.8h; x8=3.7u; y8=.5h; x9=5u; y9=.17h;
filldraw stroke z0e{dir(-20)}..pulled_arc.e(1,2)
&pulled_arc.e(2,3)&pulled_arc.e(3,4)
&pulled_arc.e(4,5)&pulled_arc.e(5,6)&pulled_arc.e(6,7)&pulled_arc.e(7,8)
..{dir(-60)}z9e;
penlabels(0,1,2,3,4,5,6,7,8,9);
math_fit(-.3h#*slant,.5h#*slant);
endchar;

cmchar "Script letter P";
beginchar("P",16u#,cap_height#,0);
italcorr max(.8h#*slant-1.5u#,h#*slant-3u#);
adjust_fit(0,0); pickup fine.nib;
 pos1(cap_hair,-45); x1r=12u; top y1l=h;
pos2(cap_stem,0); pos3(vair,-90); pos4(cap_hair,-180); pos5(flare,-180);
x2l=10u; y2=.35h; bot y3l=-o; x3=6.5u; x5r=hround 3u; y5=.17h;
filldraw stroke z1e{-1,-1}...z2e{down}...{left}z3e; % stem
bulb(3,4,5);
pos14(vair,-270); pos16(cap_hair,-180); pos18(vair,-90);
pos20(.5[cap_curve,cap_stem],0); pos22(vair,90); pos24(cap_hair,180);
pos26(vair,270); pos28(.5[cap_hair,cap_curve],360); pos30(vair,390);
x6=13u; y6=.3h; x8r=11u; y8=.2h; x10=13.5u; bot y10r=-oo;
rt x12r=hround w-u; y12=.2h; x14=9u; y14=.62h;
x16l=8.5u; y16=.55h; x18=12u; y18=.4h; rt x20r=hround 15u; y20=.55h;
x22=6u; top y22r=h+o; lft x24r=hround u; y24=.7h;
x26=4.5u; y26=.4h; x28r=7u; y28=.65h; x30=5.5u; top y30r=.9h;
filldraw stroke pulled_arc.e(14,16)&pulled_arc.e(16,18)
&pulled_arc.e(18,20)&pulled_arc.e(20,22)&pulled_arc.e(22,24)
&pulled_arc.e(24,26)&pulled_arc.e(26,28)..{dir(130)}z30e;
penlabels(1,2,3,4,5,6,8,10,12,14,16,18,20,22,24,26,28,30);
math_fit(-.25h#*slant,.5h#*slant);
endchar;

cmchar "Script letter Q";
beginchar("Q",16u#,cap_height#,0);
italcorr max(.2h#*slant-.5u#,.8h#*slant-4.75u#);
adjust_fit(0,0); pickup fine.nib;
pos1(cap_hair,390); pos2(cap_curve,360); pos3(vair,270);
lft x1l=5u; y1l=.85h; rt x2r=hround 8u; y2=.6h; x3=5u; bot y3r=vround .42h;
pos4(cap_curve,180); pos5(vair,90); pos6(cap_stem,0);
lft x4r=hround u; y4=.75h; x5=5u; top y5r=h+o; rt x6r=hround 12u; y6=.5h;
filldraw stroke pulled_arc.e(6,5)&pulled_arc.e(5,4)&pulled_arc.e(4,3)
&pulled_arc.e(3,2)..{dir(150)}z1e; % flourish and top
pos7(vair,-90); pos8(.5[cap_hair,cap_curve],-180); pos9(cap_curve,-270);
pos10(.6[vair,cap_curve],-270); pos11(cap_hair,-180);
x7=5.5u; bot y7r=-o; lft x8r=hround 2u; y8=.12h; x9=4u; 
top y9r= vround (y8+cap_curve); x10=12.5u; bot y10l=-o; rt x11l=hround 15u;
y11=.2h;
filldraw stroke pulled_arc.e(6,7)&pulled_arc.e(7,8)&pulled_arc.e(8,9)..
pulled_arc.e(10,11); % bottom
penlabels(1,2,3,4,5,6,7,8,9,10,11);
math_fit(-.1h#*slant-u#,.2h#*slant);
endchar;

cmchar "Script letter R";
beginchar("R",17.5u#,cap_height#,0);
italcorr h#*slant-6u#;
adjust_fit(0,0); pickup fine.nib;
pos1(cap_hair,390); pos2(cap_curve,360); pos3(vair,270);
x1=5.5u; y1=.8h; rt x2r=hround 6.5u; y2=.55h;
x3=4.5u; bot y3r=vround .38h;
pos4(cap_hair,180); pos5(vair,90); pos6(cap_curve,0);
lft x4r=hround u; y4=.7h; x5=6u; top y5r=h+o; rt x6r=hround 13.5u; y6=.65h;
filldraw stroke pulled_arc.e(6,5)&pulled_arc.e(5,4)&pulled_arc.e(4,3)
&pulled_arc.e(3,2)..{dir(130)}z1e; % flourish and bowl top
pos7(vair,-90); pos8(cap_hair,-180); pos9(vair,-270); pos10(cap_stem,-360);
pos11(cap_stem,-360); pos12(vair,-450); pos13(cap_hair,-540);
x7=10u; bot y7r=vround .45h; lft x8r=hround 8.5u; y8=.5h;
x9=10.5u; top y9r=vround .52h; rt x10r=rt x11r=hround 13.2u; y10=.3h;
y11=.15h; x12=14.8u; bot y12r=-o; rt x13l=hround (w-u); y13=.2h;
filldraw stroke pulled_arc.e(10,9)&pulled_arc.e(9,8)&pulled_arc.e(8,7)
&pulled_arc.e(7,6); % inner loop
filldraw stroke z10e..pulled_arc.e(11,12)&pulled_arc.e(12,13); % leg
pos14(cap_hair,-45);
pos16(cap_stem,0); pos17(vair,-90);
pos18(cap_hair,-180); pos19(flare,-180);
x14r=11u; top y14l=h; x15r=8.8u; y15=.8h; x16r=10u; y16=.3h;
x17=6.5u; bot y17=-oo; x19r=hround 3u; y19=.17h;
filldraw stroke z14e{-1,-1}..{down}z16e...{left}z17e; % stem
bulb(17,18,19);
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19);
math_fit(-.2h#*slant-2.2u#,.2h#*slant);
endchar;

cmchar "Script letter S";
beginchar("S",12.5u#,cap_height#,0);
italcorr h#*slant-u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,-450); pos2(.5[cap_hair,cap_curve],-360); 
pos3(vair,-270); pos4(cap_hair,-180);
lft x1=5u; top y1l=.95h; lft x2r=hround u; y2=.75h; x3=7.5u; bot y3l=.45h;
rt x4l=hround 12u; y4=.75h;
pos5(vair,-90); x5r=10u; top y5l=h+oo;
pos6(cap_stem,0); x6l=7.75u; y6=.67h;
pos7(cap_stem,0); pos8(vair,-90); pos9(hair,-180); pos10(flare,-180);
x7l=7.5u; y7=.3h; bot y8l=-o; x8=4.5u; x10r=hround u; y10=.17h;
filldraw stroke pulled_arc.e(1,2)&pulled_arc.e(2,3)&pulled_arc.e(3,4)
&pulled_arc.e(4,5)..z6e{down}...z7e{down}...{left}z8e;
bulb(8,9,10);
penlabels(1,2,3,4,5,6,7,8,9,10,11);
math_fit(-.15h#*slant,.5h#*slant);
endchar;

cmchar "Script letter T";
beginchar("T",13u#,cap_height#,0);
italcorr h#*slant-1.0u#;
adjust_fit(0,0); pickup fine.nib;
pos1(cap_hair,-45); pos2(cap_curve,0); pos3(cap_stem,0); pos4(vair,-90);
pos5(hair,-180); pos6(flare,-180);
x1r=10.3u; y1=.85h; lft x2l=9u; y2=.65h; rt x3r=11u; y3=.3h;
x4=7.25u; bot y4l=-o; x6r=hround 3u; y6=.17h;
filldraw stroke z1e..z2e{down}...z3e{down}...{left}z4e; % stem
bulb(4,5,6);
pos7(cap_curve,90); rt x7=hround 12u; top y7r=.93h;
pos9(cap_curve,90); x9=5u; top y9=h+oo;
pos10(cap_hair,180); lft x10r=hround u; y10=.75h;
pos11(vair,270); x11=4u; bot y11r=.5h;
pos12(cap_curve,360); rt x12r=7u; y12=.65h;
pos13(vair,415); x13=5u; y13=.85h;
filldraw stroke z7e{left}...pulled_arc.e(9,10)&pulled_arc.e(10,11)
&pulled_arc.e(11,12)..z13e; % cap
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13);
math_fit(-.25h#*slant,.3h#*slant);
endchar;

cmchar "Script letter U";
beginchar("U",18.25u#,cap_height#,0);
italcorr .87h#*slant-1.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(cap_hair,390); pos2(cap_curve,360); pos3(vair,270);
lft x1l=4.5u; y1l=.85h; rt x2r=hround 6.5u; y2=.6h; x3=4u;
bot y3r=vround .43h;
pos4(cap_hair,180); pos5(vair,90); pos6(.5[cap_curve,cap_stem],0);
lft x4r=hround u; y4=.7h; x5=5u; top y5r=h+o; rt x6r=hround 10u; y6=.6h;
pos7(cap_stem,0); pos8(vair,90); pos9(cap_hair,180);
rt x7r=hround 10u; y7=.25h; x8=11u; bot y8l=-o;
lft x9r=hround 12.7u; y9=.2h; % should be intersectionpoint or tangent
filldraw stroke pulled_arc.e(6,5)&pulled_arc.e(5,4)&pulled_arc.e(4,3)
&pulled_arc.e(3,2)..{dir(120)}z1e; % flourish and bowl top
filldraw stroke z6e---pulled_arc.e(7,8)&pulled_arc.e(8,9);
pos10(cap_stem,0); pos11(cap_stem,0); pos12(vair,90); pos13(cap_hair,180);
rt x10r=hround 15u; y10=.87h; lft x11l=lft x9r; y11=.2h;
x12=15u; bot y12l=-o; rt x13l=hround 17.25u; y13=.18h;
filldraw stroke z10e..pulled_arc.e(11,12)&pulled_arc.e(12,13);
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13);
math_fit(-.5h#*slant-u#,.18h#*slant);
endchar;

cmchar "Script letter V";
beginchar("V",13.8u#,cap_height#,0);
italcorr h#*slant-.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(cap_hair,180); pos2(vair,90); pos3(cap_curve,0); pos4(vair,90);
pos5(cap_hair,180); pos5'(cap_hair,180);
lft x1r=hround u; y1=.68h; top y2r=vround .86h; x2=3u; lft x3l=hround 3.8u;
y3=.75h; bot y4l=vround .62h; x4=5.5u; x5r=6.7u; y5=.8h; 
x5'l=hround 7u; top y5'=h+apex_o;
filldraw stroke pulled_arc.e(1,2)...z3e{dir(-105)}
...pulled_arc.e(4,5); % flourish
pos6(cap_stem,180); pos7(cap_hair,180); pos8(cap_hair,180); 
pos9(.5[cap_hair,cap_curve],135);
x6=8.5u; y6=.5h; rt x7l=10u; bot y7=-apex_o; x8=11.5u; y8=.5h;
x9l=12.8u; top y9r=h;
filldraw stroke z5'e{dir(-105)}...z6e...{dir(-105)}z7e; % stem
filldraw stroke z7e{dir(80)}..{up}z8e..{(1,1)}z9e; % right arm
penlabels(1,2,3,4,5,5',6,7,8,9);
math_fit(-.68h#*slant,.5h#*slant-u#);
endchar;

cmchar "Script letter W";
beginchar("W",17.5u#,cap_height#,0);
italcorr h#*slant-.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(cap_hair,0); pos2(cap_stem,0); pos3(cap_hair,0);
x1l=hround 11u; x3l=hround 12.5u; x2=.5[x1,x3]; top y1=h+apex_o;
bot y3=-apex_o; y2=.5h;
filldraw stroke z1e{down}...z2e...{down}z3e; % inner left
pos4(cap_hair,0); x4=.5[x3,x5]; y4=.5h;
pos5(cap_hair,0); pos6(cap_stem,0); pos7(cap_hair,0);
x5l=hround 7u; x7l=hround 8.5u; x6=.5[x5,x7]; top y5=h+apex_o;
bot y7=-apex_o; y6=.5h;
filldraw stroke z1e{dir(-105)}...z4e...{dir(-105)}z7e; % inner right
filldraw stroke z5e{dir(-105)}...z6e...{dir(-105)}z7e; % right arm
pos8(cap_hair,180); pos9(vair,90); pos10(cap_curve,0);
pos11(vair,90); pos12(cap_hair,180);
x8r=hround u; y8=.725h; x9=2u; top y9r=.9h; x10r=4u; y10=.75h;
x11=5u; bot y11l=.65h; x12r=7u; y12=.8h;
filldraw stroke z8e{up}...z9e{right}...z10e{dir(-105)}...z11e{right}
...{up}z12e; % flourish
pos13(cap_hair,0); pos14(.5[cap_hair,cap_curve],-60);
lft x13l=hround 15u; y13=.5h; rt x14r=hround 16.5u; top y14l=h;
filldraw stroke z14e{dir(-150)}..{down}z13e..{dir(-105)}z3e;
penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13);
math_fit(-.725h#*slant,.5h#*slant-u#);
endchar;

cmchar "Script letter X";
beginchar("X",17u#,cap_height#,0);
italcorr h#*slant-2u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,405); pos2(cap_curve,360); pos3(vair,270); pos4(cap_hair,180);
pos5(vair,90); pos6(cap_stem,0); pos7(vair,-90); pos8(cap_hair,-180);
pos9(flare,-180);
lft x1l=4u; top y1r=.9h; rt x2r=hround 6u; y2=.65h; x3=4u; bot y3r=vround .5h;
lft x4r=hround u; y4=.8h; x5=3.75u; top y5r=h+o; rt x6r=hround 10u; y6=.45h;
x7=6.5u; bot y7r=-o; lft x9r=hround 3u; y9=.17h;
filldraw stroke z1e..pulled_arc.e(2,3)&pulled_arc.e(3,4)&pulled_arc.e(4,5)
&pulled_arc.e(5,6)&pulled_arc.e(6,7); % left side
bulb(7,8,9);
pos10(vair,90); pos11(vair,90); x10=7u; x11=11.5u; y10r=y11r=vround .5h;
filldraw stroke z10e..z11e; % crossbar
pos12(flare,0); pos13(cap_hair,0); pos14(vair,90); pos15(cap_hair,180);
pos16(vair,270); pos17(cap_hair,360);
rt x12r=hround 14u; y12=.95h; x14=12u; top y14r=h+o; z15l=z6r;
x16=14u; bot y16r=-o; rt x17r=hround 16u; y17=.25h;
bulb(14,13,12);
filldraw stroke pulled_arc.e(14,15)&pulled_arc.e(15,16)&pulled_arc.e(16,17);
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13);
math_fit(-.25h#*slant,.25h#*slant);
endchar;

cmchar "Script letter Y";
beginchar("Y",15u#,cap_height#,0);
italcorr h#*slant-.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,405); pos2(cap_curve,360); pos3(vair,270); pos4(cap_hair,180);
pos5(vair,90); pos6(cap_stem,0); pos7(cap_stem,0); pos8(vair,90);
pos9(cap_hair,180);
lft x1l=4u; top y1r=.9h; rt x2r=hround 6.5u; y2=.6h;
x3=4.5u; bot y3r=vround .4h;
lft x4r=hround u; y4=.7h; x5=5u; top y5r=h+o; rt x6r=hround 10u; y6=.7h;
rt x7r=hround 10u; y7=.5h; x8=11.5u; bot y8l=vround .27h; x9=13u; y9=.4h;
filldraw stroke z1e..pulled_arc.e(2,3)&pulled_arc.e(3,4)&pulled_arc.e(4,5)
&pulled_arc.e(5,6)---pulled_arc.e(7,8)&pulled_arc.e(8,9); % left side
pos10(vair,-45); pos11(cap_curve,0); pos12(cap_stem,0); pos13(vair,-90);
pos14(cap_hair,-180); pos15(flare,-180);
rt x10r=hround 14u; top y10l=h; lft x11l=hround 12u; y11=.8h;
rt x12r=hround 14u; y12=.35h; x13=10u; bot y13r=-o; lft x15r=hround 6u;
y15=.17h;
filldraw stroke z10e{dir(-135)}..z11e{down}...z12e{down}...{left}z13e;
bulb(13,14,15);
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
math_fit(-.6h#*slant,.35h#*slant);
endchar;

cmchar "Script letter Z";
beginchar("Z",16u#,cap_height#,0);
italcorr h#*slant-2.8u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,405); pos2(cap_curve,360); pos3(vair,270); pos4(cap_hair,180);
pos5(vair,90); pos6(cap_stem,0); pos7(cap_stem,0); pos8(vair,90);
pos9(cap_hair,180);
lft x1l=4u; top y1r=.85h; rt x2r=hround 6u; y2=.65h;
x3=4u; bot y3r=vround .5h;
lft x4r=hround u; y4=.75h; x5=4.5u; top y5r=h+o; rt x6r=hround 7.5u; y6=.85h;
rt x7r=hround 7.5u; y7=.75h; x8=9.5u; bot y8l=vround .7h;
rt x9l=hround 13.7u; y9=.85h;
pos10(vair,270); pos11(vair,-90); pos12(cap_stem,0); pos13(vair,-90);
pos14(cap_hair,-180); pos15(vair,-270); pos16(cap_curve,-270);
pos17(cap_hair,-180);
top y10l=h+oo; x10=11.5u; z11=z10; x12=10u; y12=.5h; x13=6.5u; bot y13r=-oo;
lft x14r=hround 4u; x15=6u; top y15r=vround .16h; x16=12.5u; bot y16l=-o;
y14=.075h; rt x17l=hround 15u; top y17=vround .2h;
filldraw stroke z1e..pulled_arc.e(2,3)&pulled_arc.e(3,4)&pulled_arc.e(4,5)
&pulled_arc.e(5,6)&pulled_arc.e(6,8)&pulled_arc.e(8,9)&pulled_arc.e(9,10);
filldraw stroke z11e{left}..{down}z12e..{left}z13e...{up}z14e...{right}z15e
...{right}z16e..{up}z17e; % stem and foot
pos18(vair,90); pos19(vair,90); x18=8u; x19=13u; y18r=y19r=vround .5h;
filldraw stroke z18e..z19e; % crossbar;
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19);
math_fit(max(-3u#,-.75h#*slant-u#),.2h#*slant);
endchar;

cmchar "Tie accent";
beginchar(oct"177",5u#,asc_height#,0);
italcorr 4/9[x_height#,asc_height#]*slant+4.5u#+2letter_fit#+.5hair#;
adjust_fit(if monospace:2u#,2u# else:serif_fit#,serif_fit# fi);
pickup fine.nib; pos1(hair,180); pos2(vround 1/5[vair,stem],90); pos3(hair,0);
lft x1r=hround(.5w-.5hair); x2=.5[x1,x3];
rt x3r=hround(w+4u+2letter_fit+.5hair);
y1=y3=4/9[x_height,asc_height]; top y2r=vround 8/9[x_height,asc_height];
filldraw stroke super_arc.e(1,2) & super_arc.e(2,3);  % arc
penlabels(1,2,3); endchar;
