%Boisik letters in other forms (greek, calligraphic, one cyrilic) -- for math only!
numeric bbs; bbs:=if cap_hair+eps>tiny-eps: 2 else 1 fi; %correction for BB letters 
def mft = -.5bar_height#*slant enddef;

charscription(11u,cap_height,0)(
pos1(cap_stem,0); pos2(cap_stem,0);
bot y1=0; top y2=h; lft x1l= lft x2l=2u;
cap_serifs_bl(1l); cap_serifs_br(1r);
cap_serifs_tl(2l);
top y3r=h; rt x3r=w-u; 
numeric oldbeak; oldbeak:=beak; beak:=1.25beak;
filldraw z1l.b{down}..{left}z1l.c..z1l.a{right}..z1+ser_boule*up..
         {right}z1r.a..z1r.c{left}..z1r.b---(reverse arm_top_r_points(2r,3))
	 ---z2l.a..{right}z2l.c..z2l.b---cycle;
beak:=oldbeak;
penlabels(1,2);
);

iff known chars.greek_Gamma:
bskchar "The Greek letter Gamma";
beginchar(chars.greek_Gamma,11u#,cap_height#,0); uni "0x0393";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
usechar;
math_fit(0,ic#-5u#);
endchar;

iff known chars.greek_Gamma_BB:
bskchar "The blackboard-bold Greek letter Gamma";
beginchar(chars.greek_Gamma_BB,11u#,cap_height#,0); uni "0x213E";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
usechar;
bot z100=(x1l,y1l.c); top z101=(x2l,y2l.c);
infill obl(2r,2l,1r)---obl(1r,2r,1l)---z1l...obl(100,1l.c,2l)---obl(101,1l,2l.c)...z2l---cycle;
math_fit(0,ic#-4u#);
endchar;

iff known chars.greek_Gamma_SS:
bskchar "The sans-serif Greek letter Gamma";
beginchar(chars.greek_Gamma_SS,11u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
pos1(cap_stem,0); pos2(cap_stem,0); pos3(cap_hair,90);
bot y1=0; top y2=h; lft x1l= lft x2l=2u;
cap_serifs_bl(1l); cap_serifs_br(1r);
cap_serifs_tl(2l);
top y3r=h; rt x3r=w-u; z2'=(x2r,y3l);
oblu:=cap_hair;
filldraw z1l.b..z1..z1r.b---obl(2',1r,3l)---z3l+cap_stem*left...z3...z3r+cap_stem*left
	 ---z2..z2l.b---cycle;
penlabels(1,2,3); labels(2');
math_fit(0,ic#-4u#);
endchar;

charscription(12u,cap_height,0)(
path p;
pos1(cap_stem,0); pos2(cap_stem,0);
pos5(cap_bar,90); pos6(cap_bar,90); pos5'(ser_height,90); pos6'(1.21beak,90);
bot y1=0; top y2=h; 
top y3r=h; rt x3r=w-u;
lft x1l=lft x2l=2u;
y5=y5'=y6=y6'=.52[y1,y2]; x5=x2r+cap_hair; x6=x2r+3/8(x3-x2r); x5'=x2r; x6'-x6=1.5u;
cap_serifs_tl(2l); cap_serifs_bl(1l); cap_serifs_br_p(1r,1.1);
p=reverse arm_top_r_points(2r,3);
filldraw z1l.b{down}..{left}z1l.c..z1l.a{right}..z1+ser_boule*up..
         {right}z1r.a..{left}z1r.c..z1r.b---z5'l{dir80}..z5l---
	 z6l..z6'l+.5serif_o*left{down}..z6'l{dir87}..{dir93}z6'...z6r
	 ---z5r..{dir100}z5'r---p--z2l.a..{right}z2l.c..z2l.b---cycle;
penlabels(1,2,5,5',6,6');
);

iff known chars.greek_Digamma:
bskchar "The Greek letter Digamma";
beginchar(chars.greek_Digamma,12u#,cap_height#,0); uni "0x03DC";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
usechar;
math_fit(0,ic#-4u#);
endchar;

iff known chars.greek_Digamma_BB:
bskchar "The blackboard-bold Greek letter Digamma";
beginchar(chars.greek_Digamma_BB,12u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
usechar;
bot z100=(x1l,y1l.c); top z101=(x2l,y2l.c);
infill obl(2r,2l,1r)---obl(1r,2r,1l)---z1l...obl(100,1l.c,2l)---obl(101,1l,2l.c)...z2l---cycle;
math_fit(0,ic#-3u#);
endchar;

iff known chars.greek_Digamma_SS:
bskchar "The sans-serif Greek letter Digamma";
beginchar(chars.greek_Digamma_SS,12u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
path p;
pos1(cap_stem,0); pos2(cap_stem,0); pos3(cap_hair,90); 
pos5(cap_bar,90); pos6(cap_bar,90); pos5'(ser_height,90);
bot y1=0; top y2=h; 
top y3r=h; rt x3r=w-u;
lft x1l=lft x2l=2u;
y5=y5'=y6=y6'=.52[y1,y2]; x5=x2r+cap_hair; x6=x2r+3/8(x3-x2r); x5'=x2r; x6'-x6=1.5u;
cap_serifs_tl(2l); cap_serifs_bl(1l); cap_serifs_br_p(1r,1.1);
z2'=(x2r,y3l);
oblu:=cap_hair;
filldraw z1l.b{down}..z1..z1r.b---z5'l{dir80}..z5l---
	 z6l...z6'...z6r---z5r..{dir100}z5'r---obl(2',5'r,3l)---z3l+cap_stem*left
	 ...z3...z3r+cap_stem*left---z2..z2l.b---cycle;
penlabels(1,2,3,5,5',6); labels(2',6');
math_fit(0,ic#-3u#);
endchar;

charscription(14u,cap_height,0)(
numeric alpha, right_stem, left_stem, old_jut;
old_jut:=cap_jut;
{{ save cap_jut; cap_jut=old_jut-.5u;
lft x1l=1.5u; rt x2r=w-1.5u; bot y1l=bot y2r=0;
x3l=.5w; top y3l=h+apex_o;
left_stem=cap_hair;
right_stem=cap_stem;
alpha=diag_ratio(2,left_stem,y3l-y1l,x3l-x1l);
pos1(alpha*left_stem,0); pos2(alpha*right_stem,0);
pos1'(alpha*left_stem,0); pos2'(alpha*right_stem,0);
z1'l=z3l=z2'r;
z3'=whatever[z1'r,z1r]=whatever[z2'l,z2l]; y3'l=y3'r=y3'-.25[cap_hair,cap_stem]; 
z3'l=whatever[z3',z1r]; z3'r=whatever[z3',z2l];
cap_serifs_bl(1l); cap_serifs_br(1r); cap_serifs_br_p(2r,.8); cap_serifs_bl(2l);
filldraw z1l.a---z2r.a..{left}z2r.c..diag_serif(2r,3l)---z3l---
         diag_serif(1l,3l)..z1l.c{left}..cycle;
infill z2l.c{right}..diag_serif(2l,3')---z3'r...z3'l---diag_serif(1r,3')
       ..z1r.c---cycle;
penlabels(1,1',2,2',3,3');
}};
);

iff known chars.greek_Delta:
bskchar "The Greek letter Delta";
beginchar(chars.greek_Delta,14u#,cap_height#,0); uni "0x0394";
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
usechar;
endchar;

iff known chars.greek_Delta_BB:
bskchar "The blackboard-bold Greek letter Delta";
beginchar(chars.greek_Delta_BB,14u#,cap_height#,0); uni "non";
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
usechar;
numeric oblu.more; oblu.more:=2oblu;
bot y100=y2r.c; z100=whatever[z3l,z2r];
infill ifobl(3',3l,2l,2r,,more)---obl(100,3l,2r.c)..z2r---obl(2l,2r,3')---cycle;
labels(100);
endchar;

iff known chars.greek_Delta_SS:
bskchar "The sans-serif Greek letter Delta";
beginchar(chars.greek_Delta_SS,14u#,cap_height#,0); uni "non";
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
numeric alpha, right_stem, left_stem, old_jut;
old_jut:=cap_jut;
{{ save cap_jut; cap_jut=old_jut-.5u;
lft x1l=1.5u; rt x2r=w-1.5u; bot y1l=bot y2r=0;
x3l=.5w; top y3l=h+apex_o;
left_stem=cap_hair;
right_stem=cap_stem;
alpha=diag_ratio(2,left_stem,y3l-y1l,x3l-x1l);
pos1(alpha*left_stem,0); pos2(alpha*right_stem,0);
pos1'(alpha*left_stem,0); pos2'(alpha*right_stem,0);
z1'l=z3l=z2'r;
z3'=whatever[z1'r,z1r]=whatever[z2'l,z2l]; y3'l=y3'r=y3'-.25[cap_hair,cap_stem]; 
z3'l=whatever[z3',z1r]; z3'r=whatever[z3',z2l];
cap_serifs_bl(1l); cap_serifs_br(1r); cap_serifs_br_p(2r,.8); cap_serifs_bl(2l);
filldraw z1---z2...diag_serif(2r,3l)---z3l---
         diag_serif(1l,3l)...cycle;
infill z2l.c{right}..diag_serif(2l,3')---z3'r...z3'l---diag_serif(1r,3')
       ..z1r.c---cycle;
penlabels(1,1',2,2',3,3');
}};
endchar;

charscription(13u,cap_height,0)(
numeric alpha, right_stem, left_stem;
lft x1l=u; rt x2r=w-u; bot y1l=bot y2r=0;
x3l=.5w; top y3l=h+apex_o;
left_stem=cap_hair;
right_stem=cap_stem;
alpha=diag_ratio(2,left_stem,y3l-y1l,x3l-x1l);
pos1(alpha*left_stem,0); pos2(alpha*right_stem,0);
pos1'(alpha*left_stem,0); pos2'(alpha*right_stem,0);
z1'l=z3l=z2'r;
y1r:=y2l:=y1r+serif_o;
z3'=whatever[z1'r,z1r]=whatever[z2'l,z2l]; y3'l=y3'r=y3'-.25[cap_hair,cap_stem]; 
z3'l=whatever[z3',z1r]; z3'r=whatever[z3',z2l];
filldraw z1l---z2r--z3l--cycle;
infill (x1r+serif_o,y1r)--(x2l-serif_o,y2l)---z3'r...z3'l---cycle;
penlabels(1,2,3,3');
);

iff known chars.greek_Delta_alt:
bskchar "The Greek letter Delta alternative";
beginchar(chars.greek_Delta_alt,13u#,cap_height#,0); uni "non";
adjust_fit(0,0);
pickup tiny.nib;
usechar;
endchar;

iff known chars.greek_Delta_alt_BB:
bskchar "The blackboard-bold Greek letter Delta alternative";
beginchar(chars.greek_Delta_alt_BB,13u#,cap_height#,0); uni "non";
adjust_fit(0,0);
pickup tiny.nib;
usechar;
oblu:=2f_obl;
infill ifobl(3'r,3l,2l,2l,,)---ifobl(2r,2l,3l,3'r,,)---cycle;
endchar;

charscription(9u,cap_height,0)(
pos1(cap_stem,0); pos2(cap_stem,0);
pos3(cap_hair,90); pos4(cap_hair,90); pos5(ser_height,90);
bot y1=0; top y2=h; lft x1l=lft x2l=2u;
y3=y4=y5=.52h; x3=x1r.a; rt x4=w-u; x5=x1r;
cap_serifs_tl(2l); cap_serifs_tr(2r); cap_serifs_bl(1l); cap_serifs_br(1r);
filldraw z1l.b{down}..{left}z1l.c..z1l.a{right}..z1+ser_boule*up..{right}z1r.a
         ..z1r.c{left}..z1r.b---z5l{dir80}..z3l---z4l..z4r---z3r..{dir100}z5r
	 ---z2r.b..{right}z2r.c..z2r.a---z2l.a..{right}z2l.c..z2l.b---cycle;
penlabels(1,2,3,4,5);
);

iff known chars.greek_Heta:
bskchar "The Greek letter Heta";
beginchar(chars.greek_Heta,9u#,cap_height#,0); uni "0x0370";
italcorr .5cap_height#*slant;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
usechar;
math_fit(0,ic#-2u#);
endchar;

iff known chars.greek_Heta_BB:
bskchar "The blackboard-bold Greek letter Heta";
beginchar(chars.greek_Heta_BB,9u#,cap_height#,0); uni "non";
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
usechar;
bot z100=(x1l,y1l.c); top z101=(x2l,y2l.c);
infill obl(2r,2l,1r)---obl(1r,2r,1l)---z1l...obl(100,1l.c,2l)---obl(101,1l,2l.c)...z2l---cycle;
penlabels(1,2,3,4,5);
endchar;

iff known chars.greek_Heta_SS:
bskchar "The sans-serif Greek letter Heta";
beginchar(chars.greek_Heta_SS,9u#,cap_height#,0); uni "non";
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
pos1(cap_stem,0); pos2(cap_stem,0);
pos3(cap_hair,90); pos4(cap_hair,90); pos5(ser_height,90);
bot y1=0; top y2=h; lft x1l=lft x2l=2u;
y3=y4=y5=.52h; x3=x1r.a; rt x4=w-u; x5=x1r;
cap_serifs_tl(2l); cap_serifs_tr(2r); cap_serifs_bl(1l); cap_serifs_br(1r);
filldraw z1l.b..z1..z1r.b---z5l{dir80}..z3l---z4l..z4r---z3r..{dir100}z5r
	 ---z2r.b..z2..z2l.b---cycle;
penlabels(1,2,3,4,5);
endchar;

charscription(14u,cap_height,0)(
pos1(cap_curve,0); pos2(cap_hair,90); pos3(cap_curve,180); pos4(cap_hair,270);
lft x1l=u-o; rt x3l=w-u+o; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2-x4=.5u; bot y2l=-o; top y4l=h+o;
filldraw z1l{down}..z2l..z3l..z4l..{down}cycle;
infill z1r{up}..z4r..z3r..z2r..{up}cycle;
z5=.5[z4,z2];
pos6(.65beak,80); pos7(.65beak,85);
y6=y7=y5; .5[x6,x7]=x5; x7-x6=.47(x3r-x1r);
z6'r-z6r=z6'l-z6l=z7r-z7'r=z7l-z7'l=(serif_o,0);
y6l:=y6l-o; y7r:=y7r+o;
pos8(cap_hair,90); pos9(cap_hair,90); 
y8=y9; .5[z8,z9]=z5; x9-x8=1/3(x7-x6);
filldraw z8r..{dir80}z6'r..z6r---z6l..{dir80}z6'l..z8l---z9l
         ..{dir-95}z7'l..z7l---z7r..{dir-95}z7'r..z9r---cycle;
penlabels(1,2,3,4,5,6,6',7,7',8,9);
);

iff known chars.greek_Theta:
bskchar "The Greek letter Theta";
beginchar(chars.greek_Theta,14u#,cap_height#,0); uni "0x0398";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
math_fit(-.5cap_height#*slant+.5u#,.5cap_height#*slant);
endchar;

iff known chars.greek_Theta_BB:
bskchar "The blackboard-bold Greek letter Theta";
beginchar(chars.greek_Theta_BB,14u#,cap_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
path p[]; numeric tim[];
p100:=z4r..z1r{down}..z2r..z3r..cycle;
p101:=reverse z4l..z1l{down}..z2l..z3l..cycle;
oblu:=1.25bbw;
z100=bsktouch(subpath(0,1) of p100,bbs*up,p101,down);
z101=bsktouch(subpath(1,2) of p100,bbs*down,p101,up);
z102=bsktouch(subpath(3,4) of p100,bbs*up,p101,down);
z103=bsktouch(subpath(2,3) of p100,bbs*down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y1)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4l+5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y1)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2l-5)));
tim104=xpart(p100 intersectiontimes (z102--(x102,y1)));
tim105=xpart(p101 intersectiontimes (z102--(x102,y4l+5)));
tim106=xpart(p100 intersectiontimes (z103--(x103,y1)));
tim107=xpart(p101 intersectiontimes (z103--(x103,y2l-5)));
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103).zpet,rundy(p101,tim101)) of p101..cycle;
infill subpath(rundy(p100,tim104).zpet,rundy(p100,tim106)) of p100
       ..subpath(rundy(p101,tim107),rundy(p101,tim105).zpet) of p101..cycle;
labels(100,101,102,103); 
endchar;

iff known chars.greek_Theta_SS:
bskchar "The sans-serif Greek letter Theta";
beginchar(chars.greek_Theta_SS,14u#,cap_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
pos1(cap_curve,0); pos2(cap_hair,90); pos3(cap_curve,180); pos4(cap_hair,270);
lft x1l=u-o; rt x3l=w-u+o; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2-x4=.5u; bot y2l=-o; top y4l=h+o;
filldraw z1l{down}..z2l..z3l..z4l..{down}cycle;
infill z1r{up}..z4r..z3r..z2r..{up}cycle;
z5=.5[z4,z2];
pos6(.65beak,80); pos7(.65beak,85);
y6=y7=y5; .5[x6,x7]=x5; x7-x6=.47(x3r-x1r);
z6'r-z6r=z6'l-z6l=z7r-z7'r=z7l-z7'l=(serif_o,0);
y6l:=y6l-o; y7r:=y7r+o;
pos8(cap_hair,90); pos9(cap_hair,90); 
y8=y9; .5[z8,z9]=z5; x9-x8=(x7-x6);
filldraw z8r..z8l---z9l..z9r---cycle;
penlabels(1,2,3,4,5,6,6',7,7',8,9);
endchar;

charscription(13u,cap_height,0)(
numeric alpha, right_stem, left_stem;
lft x1l=2u; rt x2r=w-2u; bot y1l=bot y2r=0;
x3l=.5w; top y3l=h+apex_o;
left_stem=cap_hair;
right_stem=cap_stem;
alpha=diag_ratio(2,left_stem,y3l-y1l,x3l-x1l);
pos1(alpha*left_stem,0); pos2(alpha*right_stem,0);
pos1'(alpha*left_stem,0); pos2'(alpha*right_stem,0);
z1'l=z3l=z2'r;
z3'=whatever[z1'r,z1r]=whatever[z2'l,z2l]; y3'l=y3'r=y3'-.25[cap_hair,cap_stem]; 
z3'l=whatever[z3',z1r]; z3'r=whatever[z3',z2l];
cap_serifs_bl(1l); cap_serifs_br(1r); cap_serifs_br_p(2r,.8); cap_serifs_bl(2l);
filldraw z1l+ser_boule*up..{left}z1l.a{left}..{right}z1l.c..diag_serif(1l,3l)---z3l---
         diag_serif(2r,3l)..{right}z2r.c..z2r.a{left}..z2r+ser_boule*up..
	 {left}z2l.a..{right}z2l.c..diag_serif(2l,3')---z3'r...z3'l---
	 diag_serif(1r,3') ..z1r.c{right}..z1r.a{left}..cycle;
penlabels(1,1',2,2',3,3');
);

iff known chars.greek_Lambda:
bskchar "The Greek letter Lambda";
beginchar(chars.greek_Lambda,13u#,cap_height#,0); uni "0x039B";
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
usechar;
endchar;

iff known chars.greek_Lambda_BB:
bskchar "The blackboard-bold Greek letter Lambda";
beginchar(chars.greek_Lambda_BB,13u#,cap_height#,0); uni "non";
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
usechar;
numeric oblu.more; oblu.more:=2oblu;
bot y100=y2r.c; z100=whatever[z3l,z2r];
infill ifobl(3',3l,2r,2l,,more)---obl(100,3l,2r.c)..z2r---obl(2l,2r,3')---cycle;
labels(100);
endchar;

iff known chars.greek_Lambda_SS:
bskchar "The sans-serif Greek letter Lambda";
beginchar(chars.greek_Lambda_SS,13u#,cap_height#,0); uni "non";
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
numeric alpha, right_stem, left_stem;
lft x1l=2u; rt x2r=w-2u; bot y1l=bot y2r=0;
x3l=.5w; top y3l=h+apex_o;
left_stem=cap_hair;
right_stem=cap_stem;
alpha=diag_ratio(2,left_stem,y3l-y1l,x3l-x1l);
pos1(alpha*left_stem,0); pos2(alpha*right_stem,0);
pos1'(alpha*left_stem,0); pos2'(alpha*right_stem,0);
z1'l=z3l=z2'r;
z3'=whatever[z1'r,z1r]=whatever[z2'l,z2l]; y3'l=y3'r=y3'-.25[cap_hair,cap_stem]; 
z3'l=whatever[z3',z1r]; z3'r=whatever[z3',z2l];
cap_serifs_bl(1l); cap_serifs_br(1r); cap_serifs_br_p(2r,.8); cap_serifs_bl(2l);
filldraw z1...diag_serif(1l,3l)---z3l---
         diag_serif(2r,3l)...z2...diag_serif(2l,3')---z3'r...z3'l---
	 diag_serif(1r,3')...cycle;
penlabels(1,1',2,2',3,3');
endchar;

iff known chars.greek_Xi:
bskchar "The Greek letter Xi";
beginchar(chars.greek_Xi,13.5u#,cap_height#,0); uni "0x039E";
italcorr cap_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric ofs;
pos1(cap_stem,0); pos2(cap_stem,0);
bot y1=0; top y2=h; x1=x2=.5w;
cap_serifs_bl(1l); cap_serifs_br(1r);
top y3r=top y4r=h; rt x3r=w-u-o; lft x4r=u+o;
bot y5r=0; rt x5l=w-u;
{{ 
  numeric oldbeak, old_jut; oldbeak:=beak; old_jut=cap_jut; save beak, cap_jut;
  beak:=.9oldbeak; cap_jut:=if bold_face: .7\\ fi old_jut;
  p0:=reverse arm_top_r_points(2r,3).alt; p1:=arm_top_l_points(2l,4).alt;
  p2:=arm_bot_r_points(1r,5).alt; p2:=subpath(1, length(p2)-1) of p2;
}};
p3:=reverse (p2 reflectedabout (z1r.c,z1r.a));
ofs:=if monospace and (x3d-x2r<stem): 2.3 else: 1 fi;
filldraw subpath(ofs, infinity) of p0--subpath(0,length(p1)-ofs) of p1--cycle;
filldraw p2--(p3 shifted (2u-xpart(point 2 of p3),0))--cycle;
pos6(.65beak,90); pos7(.65beak,90);
y6=y7=.5h+o; .5[x6,x7]=.5w; x7-x6=.47(x3r-x4r);
z6'r-z6r=z6'l-z6l=z7r-z7'r=z7l-z7'l=(serif_o,0);
pos8(cap_hair,90); pos9(cap_hair,90); 
y8=y9; .5[z8,z9]=.5[z6,z7]; x9-x8=1/3(x7-x6);
filldraw z8r..{up}z6'r..z6r---z6l..{up}z6'l..z8l---z9l
         ..{down}z7'l..z7l---z7r..{down}z7'r..z9r---cycle;
penlabels(1,2,6,7,8,9);
math_fit(-.25u#,.5u#);
endchar;

iff known chars.greek_Xi_BB:
bskchar "The blackboard-bold Greek letter Xi";
beginchar(chars.greek_Xi_BB,13.5u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric ofs;
pos1(cap_stem,0); pos2(cap_stem,0);
bot y1=0; top y2=h; x1=x2=.5w;
cap_serifs_bl(1l); cap_serifs_br(1r);
top y3r=top y4r=h; rt x3r=w-u-o; lft x4r=u+o;
bot y5r=0; rt x5l=w-u;
{{ 
  numeric oldbeak, old_jut; oldbeak:=beak; old_jut=cap_jut; save beak, cap_jut, alt_cap_hair;
    beak:=.9oldbeak; cap_jut:=if bold_face: .7\\ fi old_jut; 
    alt_cap_hair:=if .5beak>cap_stem: cap_stem else: .4beak; fi;
  p0:=reverse arm_top_r_points(2r,3).alt; p1:=arm_top_l_points(2l,4).alt;
  p2:=arm_bot_r_points(1r,5).alt; 
  p2:=z5a{right}...z5b--z5r---z5l..{down}z5l.o&z5l.o..z5c...{left}z5d---z5e;
}};
p3:=reverse (p2 reflectedabout (z1r.c,z1r.a));
ofs:=if monospace and (x3d-x2r<stem): 2.3 else: 1 fi;
filldraw subpath(ofs, infinity) of p0--subpath(0,length(p1)-ofs) of p1--cycle;
filldraw p2--(p3 shifted (2u-xpart(point 2 of p3),0))--cycle;
pos6(.65beak,90); pos7(.65beak,90);
y6=y7=.5h+o; .5[x6,x7]=.5w; x7-x6=.47(x3r-x4r);
z6'r-z6r=z6'l-z6l=z7r-z7'r=z7l-z7'l=(serif_o,0);
pos8(cap_hair,90); pos9(cap_hair,90); 
y8=y9; .5[z8,z9]=.5[z6,z7]; x9-x8=1/3(x7-x6);
filldraw z8r..{up}z6'r..z6r---z6l..{up}z6'l..z8l---z9l
         ..{down}z7'l..z7l---z7r..{down}z7'r..z9r---cycle;
p100:=subpath(0,1) of p2;
p101:=subpath(5,infinity) of p2;
p102:=reverse (p100 reflectedabout (z1,z2));
p103:=reverse (p101 reflectedabout (z1,z2));
z100=(x5l.o,.5[y5,y5b]);
z101=z100 reflectedabout (z1,z2);
infill subpath(0,rundy(p100,infinity).zpet) of p100..{up}z100
       ..subpath(rundy(p101,0),infinity) of p101
       ---subpath(0,rundy(p103,infinity).zpet) of p103..{down}z101
       ..subpath(rundy(p102,0),infinity) of p102---cycle;
infill (x3a,y3d)..z3a---z4a..(x4a,y4d)---cycle;
penlabels(1,2,6,7,8,9); labels(100,101);
endchar;

iff known chars.greek_Xi_SS:
bskchar "The sans-serif Greek letter Xi";
beginchar(chars.greek_Xi_SS,12u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric ofs, tharm;
tharm:=if ((substring(0,5) of font_identifier_) = "BSKHC"): cap_stem else: cap_hair fi;
pos1(cap_stem,0); pos2(cap_stem,0); pos3(cap_hair,90); pos4(cap_hair,90);
pos5(tharm,-90); pos5'(tharm,-90);
bot y1=0; top y2=h; x1=x2=.5w;
cap_serifs_bl(1l); cap_serifs_br(1r);
top y3r=top y4r=h; rt x3r=w-u-o; lft x4r=u+o;
bot y5r=bot y5'r=0; rt x5l=w-u; lft x5'=u;
pos6(.65beak,90); pos7(.65beak,90);
y6=y7=.5h+o; .5[x6,x7]=.5w; x7-x6=.47(x3r-x4r);
z6'r-z6r=z6'l-z6l=z7r-z7'r=z7l-z7'l=(serif_o,0);
pos8(cap_hair,90); pos9(cap_hair,90); 
y8=y9; .5[z8,z9]=.5[z6,z7]; x9-x8=(x7-x6);
filldraw z8r..z8l---z9l..z9r---cycle;
filldraw z4l+cap_stem*right---z3l+cap_stem*left...z3...z3r+cap_stem*left
         ---z4r+cap_stem*right...z4...cycle;
filldraw z5'l+cap_stem*right---z5l+cap_stem*left...z5...z5r+cap_stem*left
         ---z5'r+cap_stem*right...z5'...cycle;
penlabels(1,2,3,4,5,5',6,7,8,9);
endchar;

charscription(13u,cap_height,0)(
pos1(cap_stem,0); pos2(cap_stem,0);
pos3(cap_stem,0); pos4(cap_stem,0);
bot y1=0; top y2=h;
lft x1l=lft x2l=2u;
cap_serifs_tl(2l); cap_serifs_tr(2r); cap_serifs_bl(1l); cap_serifs_br(1r);
bot y3=0; top y4=h;
rt x3r=rt x4r=w-2u;
cap_serifs_tl(4l); cap_serifs_tr(4r); cap_serifs_bl(3l); cap_serifs_br(3r);
filldraw z1l.b{down}..{left}z1l.c..z1l.a{right}..z1+ser_boule*up..
         {right}z1r.a..z1r.c{left}..z1r.b---z2r.b..z2r.c---z4l.c..z4l.b
	 ---z3l.b{down}..{left}z3l.c..z3l.a{right}..
	 z3+ser_boule*up..{right}z3r.a..z3r.c{left}..z3r.b---z4r.b..
	 {right}z4r.c..z4r.a---z2r.a---z2l.a..{right}z2l.c..z2l.b---cycle;
penlabels(1,2,3,4);
);

iff known chars.greek_Pi:
bskchar "The Greek letter Pi";
beginchar(chars.greek_Pi,13u#,cap_height#,0); uni "0x03A0";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
usechar;
endchar;

iff known chars.greek_Pi_BB:
bskchar "The blackboard-bold Greek letter Pi";
beginchar(chars.greek_Pi_BB,13u#,cap_height#,0); uni "0x213F";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
usechar;
bot z100=(x1l,y1l.c); top z101=(x2l,y2l.c);
bot z102=(x3r,y3r.c); top z103=(x4r,y4r.c);
infill obl(2r,2l,1r)---obl(1r,2r,1l)---z1l...obl(100,1l.c,2l)---obl(101,1l,2l.c)...z2l---cycle;
infill obl(4l,4r,3l)---obl(3l,4l,3r)---z3r...obl(102,3r.c,4r)---obl(103,3r,4r.c)...z4r---cycle;
endchar;

iff known chars.greek_Pi_SS:
bskchar "The sans-serif Greek letter Pi";
beginchar(chars.greek_Pi_SS,13u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
pos1(cap_stem,0); pos2(cap_stem,0);
pos3(cap_stem,0); pos4(cap_stem,0);
bot y1=0; top y2=h;
lft x1l=lft x2l=2u;
cap_serifs_tl(2l); cap_serifs_tr(2r); cap_serifs_bl(1l); cap_serifs_br(1r);
bot y3=0; top y4=h;
rt x3r=rt x4r=w-2u;
cap_serifs_tl(4l); cap_serifs_tr(4r); cap_serifs_bl(3l); cap_serifs_br(3r);
filldraw z1l.b...z1...z1r.b---z2r.b..z2r.c---z4l.c..z4l.b
	 ---z3l.b...z3...z3r.b---z4r.b..
	 z4---z2r.a---z2..z2l.b---cycle;
penlabels(1,2,3,4);
endchar;

charscription(13u,cap_height,0)(
path p[];
numeric alpha, top_stem; oblu:=2oblu;
pos1(cap_stem,0); pos2(cap_stem,0);
bot y1=0; top y2=h;
lft x1l=lft x2l-o=2u;
cap_serifs_bl(1l); cap_serifs_tl(2l); cap_serifs_br(1r); cap_serifs_tr(2r);
bot y3r=0; top y4r=h; rt x3r=w-u; x4r=w-2.5u; 
x5r=.5w-o; y5=.5[x_height,bar_height];
alpha=diag_ratio(2,cap_stem,y2-y5,x5r-x2r);
pos5(alpha*cap_stem,0);
alpha:=diag_ratio(2,cap_hair,y5-y1,x5r-x1r);
pos6(alpha*cap_hair,0); z5r=z6r;
p1:=arm_bot_r_points(1r,3).alt;
p2:=arm_top_r_points(2r,4);
y1'=y1l.b; z1'=z6l+whatever*(z3.f-z6r);
z5'=whatever[z2l.b,z5l]=whatever[z6l,z1'];
filldraw subpath(0, length(p1)-1) of p1..z3f---obl(5r,3f,2r.b)---
         z2r.b..(reverse subpath(0,length(p2)-1) of p2)---z2l.a..
	 {right}z2l.c..z2l.b---obl(5',2l.b,1')---z1'..{left}z1l.c..
	 z1l.a---cycle;
penlabels(1,2,5,6); labels(1',5');
);

iff known chars.greek_Sigma:
bskchar "The Greek letter Sigma";
beginchar(chars.greek_Sigma,13u#,cap_height#,0); uni "0x03A3";
italcorr cap_height#*slant-1.25u#;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
usechar;
math_fit(0,.5bar_height#*slant);
endchar;

iff known chars.greek_Sigma_BB:
bskchar "The blackboard-bold Greek letter Sigma";
beginchar(chars.greek_Sigma_BB,13u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-1.25u#;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
usechar;
y100=y101=y2; z100=whatever[z5',z2l.b]; z101=whatever[z2r.b,z5r];
infill ifobl(5r,5',101,100,,)---ifobl(100,101,5',5r,,)---cycle;
endchar;

iff known chars.greek_Sigma_SS:
bskchar "The sans-serif Greek letter Sigma";
beginchar(chars.greek_Sigma_SS,13u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-1.25u#;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
path p[];
numeric alpha, top_stem; oblu:=2oblu;
pos1(cap_stem,0); pos2(cap_stem,0); pos3(cap_hair,-90); pos4(cap_hair,90);
bot y1=0; top y2=h;
lft x1l=lft x2l-o=2u;
cap_serifs_bl(1l); cap_serifs_tl(2l); cap_serifs_br(1r); cap_serifs_tr(2r);
bot y3r=0; top y4r=h; rt x3r=w-u; x4r=w-2.5u; z3'=(x1r,y3l); z2'=(x2r+oblu,y4l);
x5r=if ((substring(0,5) of font_identifier_)="BSKHC"): .5[x4,x2r] else: .5w-o fi;
y5=.5[x_height,bar_height];
alpha=diag_ratio(2,cap_stem,y2-y5,x5r-x2r);
pos5(alpha*cap_stem,0);
alpha:=diag_ratio(2,cap_hair,y5-y1,x5r-x1r);
pos6(alpha*cap_hair,0); z5r=z6r;
y1'=y1l.b; z1'=z6l+whatever*(z3'-z6r);
z5'=whatever[z2l.b,z5l]=whatever[z6l,z1'];
filldraw z3r+cap_stem*left...z3...z3l+cap_stem*left---obl(3',3,5r)---obl(5r,3',2r.b)---
         z2r.b..z2'---z4l+cap_stem*left...z4...z4r+cap_stem*left---z2
	 ..z2l.b---obl(5',2l.b,1')---z1'..z1---cycle;
penlabels(1,2,3,4,5,6); labels(1',2',3',5');
endchar;

charscription(14u,cap_height,0)(
path p[]; numeric tim[]; oblu:=2oblu;
pos1(cap_stem,0); pos2(cap_stem,0);
pos3(cap_hair,210); pos3'(cap_curve,-90);
pos4(cap_hair,-30); pos4'(cap_curve,-90);
x1=x2=.5w; bot y1=0; top y2=x_height;
x3l=w-u; y3=y4+o=.1[x_height,h]; top y3'l=top y4'l=h+o; 
x3'=.45[x2,x3]; x4'=.5[x2,x4]; x4l=u;
cap_serifs_bl(1l); cap_serifs_br(1r);
p0=z3l{up}..{left}z3'l..{down}z2l;
p1=z2r{up}..z4'l{left}..{down}z4l;
(tim1,tim2)=p0 intersectiontimes p1;
filldraw z2l---z1l.b..{left}z1l.c..z1l.a{right}..z1+ser_boule*up..
         {right}z1r.a..z1r.c{left}..z1r.b---z2r...z3'r..{down}z3r
	 ..subpath(0,rundy(p0,tim1).zpet) of p0
	 ..subpath(rundy(p1,tim2),infinity) of p1..z4r{up}..z4'r...cycle;
penlabels(1,2,3,3',4,4');
);

iff known chars.greek_Upsilon:
bskchar "The Greek letter Upsilon";
beginchar(chars.greek_Upsilon,14u#,cap_height#,0); uni "0x03A5";
italcorr x_height#*slant+.5u#;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
math_fit(-x_height#*slant,ic#-4u#);
endchar;

iff known chars.greek_Upsilon_BB:
bskchar "The blackboard-bold Greek letter Upsilon";
beginchar(chars.greek_Upsilon_BB,14u#,cap_height#,0); uni "non";
italcorr x_height#*slant+.5u#;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
p100:=p1;
p101:=z4r{up}..z4'r..{down}z2l;
z100=bsktouch(p100,right,p101,left);
tim100=xpart(p100 intersectiontimes (z100--(0,y100)));
tim101=xpart(p101 intersectiontimes (z100--(x4',y100)));
bot z101=(x1l,y1l.c);
oblu.f:=f_obl;
oblu:=bbw;
infill subpath(0,rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),infinity) of p101
       ---obl(101,2l,1l.c).f...z1l
       ---if (x1r-x1l)>oblu: obl(1r,1l,2r) else: z1..z1r+oblu*up fi---cycle;
labels(100,101);
math_fit(0,ic#-3u#);
endchar;

iff known chars.greek_Upsilon_SS:
bskchar "The sans-serif Greek letter Upsilon";
beginchar(chars.greek_Upsilon_SS,14u#,cap_height#,0); uni "non";
italcorr x_height#*slant+.5u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=2oblu;
pos1(cap_stem,0); pos2(cap_stem,0);
pos3(cap_hair,210); pos3'(cap_curve,-90);
pos4(cap_hair,-30); pos4'(cap_curve,-90);
x1=x2=.5w; bot y1=0; top y2=x_height;
x3l=w-u; y3=y4+o=.1[x_height,h]; top y3'l=top y4'l=h+o; 
x3'=.45[x2,x3]; x4'=.5[x2,x4]; x4l=u;
cap_serifs_bl(1l); cap_serifs_br(1r);
p0=z3l{up}..{left}z3'l..{down}z2l;
p1=z2r{up}..z4'l{left}..{down}z4l;
(tim1,tim2)=p0 intersectiontimes p1;
filldraw z2l---z1l.b...z1...z1r.b---z2r...z3'r..{down}z3r
	 ..subpath(0,rundy(p0,tim1).zpet) of p0
	 ..subpath(rundy(p1,tim2),infinity) of p1..z4r{up}..z4'r...cycle;
penlabels(1,2,3,3',4,4');
math_fit(0,ic#-3u#);
endchar;

charscription(13u,cap_height,0)(
path p[]; numeric tim[]; oblu:=2oblu;
pos1(cap_curve,0); pos2(cap_hair,90); pos3(cap_curve,180); pos4(cap_hair,270);
pos5(cap_stem,0); pos6(cap_stem,0);
lft x1l=u-o; rt x3l=w-u+o; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2-x4=.5u; .5[y2,y4]=top y1;
y2=1/3x_height if bold_face: +.5cap_hair fi; bot y5=0; top y6=h;
x5=x6=.5w;
{{
  numeric old_serif; old_serif:=ser_height;
  save ser_heigth;
  ser_height:= if bold_face: .6\\fi old_serif;
  cap_serifs_tl(6l); cap_serifs_tr(6r); cap_serifs_bl(5l); cap_serifs_br(5r);
}};
p1:=z1l{down}..z2l..z3l..z4l..{down}cycle;
p2:=z1r{up}..z4r..z3r..z2r..{up}cycle;
p3:=z5l.b{down}..{left}z5l.c..z5l.a{right}..z5+ser_boule*up..
    {right}z5r.a..z5r.c{left}..{up}z5r.b;
p4:=z6r.b{up}..{right}z6r.c..z6r.a---z6l.a..{right}z6l.c..{down}z6l.b;
p5:=z6l.b--z5l.b;
p6:=z6r.b--z5r.b;
tim1=xpart(p1 intersectiontimes (z5r.b--z6r.b));
tim2=xpart(p1 intersectiontimes (z6r.b--(x6r.b,y1)));
tim3=xpart(p1 intersectiontimes (z6l.b--(x6l.b,y1)));
tim4=xpart(p1 intersectiontimes (z5l.b--z6l.b));
(tim5,tim6)=p2 intersectiontimes p5;
(tim7,tim8)=p2 intersectiontimes subpath(.5,1) of p5;
(tim9,tim10)=p2 intersectiontimes p6;
(tim11,tim12)=p2 intersectiontimes subpath(.5,1) of p6;
z0=directionpoint right of p1;
filldraw if y0<y5r.b+tiny: subpath(rundy(p3,0),rundy(p3,infinity).zpet) of fi p3
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1..p4
	 ..subpath(rundy(p1,tim3),length(p1)) of p1
	 ..subpath(0,rundy(p1,tim4).zpet) of p1..cycle;
infill subpath(0,rundy(p2,tim5).zpet) of p2
       ..subpath(rundy(p5,tim6),rundy(p5,tim8).zpet) of p5
       ..subpath(rundy(p2,tim7),length(p2)) of p2&cycle;
infill subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2
       ..subpath(rundy(p6,tim12).zpet,rundy(p6,tim10)) of p6..cycle;
penlabels(1,2,3,4,5,6);
);

iff known chars.greek_Phi:
bskchar "The Greek letter Phi";
beginchar(chars.greek_Phi,13u#,cap_height#,0); uni "0x03A6";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
math_fit(-.5cap_height#*slant,0);
endchar;

iff known chars.greek_Phi_BB:
bskchar "The blackboard-bold Greek letter Phi";
beginchar(chars.greek_Phi_BB,13u#,cap_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
p100:=z4r..z1r{down}..z2r..z3r..cycle;
p101:=reverse z4l..z1l{down}..z2l..z3l..cycle;
oblu:=1.25bbw;
z100=bsktouch(subpath(0,1) of p100,bbs*up,p101,down);
z101=bsktouch(subpath(1,2) of p100,bbs*down,p101,up);
z102=bsktouch(subpath(3,4) of p100,bbs*up,p101,down);
z103=bsktouch(subpath(2,3) of p100,bbs*down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y1)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4l+5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y1)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2l-5)));
tim104=xpart(p100 intersectiontimes (z102--(x102,y1)));
tim105=xpart(p101 intersectiontimes (z102--(x102,y4l+5)));
tim106=xpart(p100 intersectiontimes (z103--(x103,y1)));
tim107=xpart(p101 intersectiontimes (z103--(x103,y2l-5)));
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103).zpet,rundy(p101,tim101)) of p101..cycle;
infill subpath(rundy(p100,tim104).zpet,rundy(p100,tim106)) of p100
       ..subpath(rundy(p101,tim107),rundy(p101,tim105).zpet) of p101..cycle;
oblu:=f_obl;
bot z104=(x5l,y5l.c); z105=(x6l,y6l.c);
infill obl(6r,6l,5r)---obl(5r,6r,5l)---z5l...obl(104,5l.c,6l)---obl(105,5l,6l.c)...z6l---cycle;
labels(100,101,102,103,104,105); 
endchar;

iff known chars.greek_Phi_SS:
bskchar "The sans-serif Greek letter Phi";
beginchar(chars.greek_Phi_SS,12u#,cap_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[], thc; oblu:=2oblu;
thc=if ((substring(0,5) of font_identifier_)="BSKHC"): cap_hair else: cap_curve fi;
pos1(thc,0); pos2(cap_hair,90); pos3(thc,180); pos4(cap_hair,270);
pos5(cap_stem,0); pos6(cap_stem,0);
lft x1l=u-o; rt x3l=w-u+o; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2-x4=.5u; .5[y2,y4]=top y1;
y2=1/3x_height if bold_face: +.5cap_hair fi; bot y5=0; top y6=h;
x5=x6=.5w;
{{
  numeric old_serif; old_serif:=ser_height;
  save ser_heigth;
  ser_height:= if bold_face: .6\\fi old_serif;
  cap_serifs_tl(6l); cap_serifs_tr(6r); cap_serifs_bl(5l); cap_serifs_br(5r);
}};
p1:=z1l{down}..z2l..z3l..z4l..{down}cycle;
p2:=z1r{up}..z4r..z3r..z2r..{up}cycle;
p3:=z5l.b{down}...z5...{up}z5r.b;
p4:=z6r.b{up}...z6...{down}z6l.b;
p5:=z6l.b--z5l.b;
p6:=z6r.b--z5r.b;
tim1=xpart(p1 intersectiontimes (z5r.b--z6r.b));
tim2=xpart(p1 intersectiontimes (z6r.b--(x6r.b,y1)));
tim3=xpart(p1 intersectiontimes (z6l.b--(x6l.b,y1)));
tim4=xpart(p1 intersectiontimes (z5l.b--z6l.b));
(tim5,tim6)=p2 intersectiontimes p5;
(tim7,tim8)=p2 intersectiontimes subpath(.5,1) of p5;
(tim9,tim10)=p2 intersectiontimes p6;
(tim11,tim12)=p2 intersectiontimes subpath(.5,1) of p6;
filldraw p3..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1..p4..
         subpath(rundy(p1,tim3),length(p1)) of p1..
	 subpath(0,rundy(p1,tim4).zpet) of p1..cycle;
infill subpath(0,rundy(p2,tim5).zpet) of p2 ..
       subpath(rundy(p5,tim6),rundy(p5,tim8).zpet) of p5..
       subpath(rundy(p2,tim7),length(p2)) of p2 & cycle;
infill subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 ..
       subpath(rundy(p6,tim12).zpet,rundy(p6,tim10)) of p6..cycle;
penlabels(1,2,3,4,5,6);
endchar;

charscription(14u,cap_height,0)(
path p[]; numeric tim[]; oblu:=2oblu;
pos1(cap_stem,0); pos2(cap_stem,0);
pos3(cap_hair,90); pos4(cap_hair,90);
pos5(cap_curve,0); pos6(cap_curve,180);
pos7(cap_hair,90); pos8(cap_hair,90);
x1=x2=.5w; top y2=h; bot y1=0;
y3l=y4l=top .55bar_height; y5=y6=.5[bar_height,x_height]; top y7r=top y8r=.55[x_height,h]; 
x3=x1l; x4=x1r; x3-x5=y5-y3r; x6-x4=y6-y4r; 
lft x7l=u; rt x8r=w-u;
cap_serifs_tl(2l); cap_serifs_tr(2r); cap_serifs_bl(1l); cap_serifs_br(1r);
p1:=z3r{left}..{up}z5r..{left}z7r;
p2:=z7l{right}..{down}z5l..{right}z3l;
p3:=z1l.b{down}..{left}z1l.c..z1l.a{right}..z1+ser_boule*up..
    {right}z1r.a..z1r.c{left}..{up}z1r.b;
p4:=z2r.b{up}..{right}z2r.c..z2r.a---z2l.a..{right}z2l.c..{down}z2l.b;
p5:=z4l{right}..{up}z6l..{right}z8l;
p6:=z8r{left}..{down}z6r..{left}z4r;
filldraw subpath(0,rundy(p2,length(p2)).zpet) of p2..p3..
         subpath(rundy(p5,0),infinity) of p5..
	 subpath(0,rundy(p6,length(p6)).zpet) of p6..(x1r,y4r+oblu)---p4
	 ---(x1l,y3r+oblu)..subpath(rundy(p1,0),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8);
);

iff known chars.greek_Psi:
bskchar "The Greek letter Psi";
beginchar(chars.greek_Psi,14u#,cap_height#,0); uni "0x03A8";
italcorr .5[x_height#,cap_height#]*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
math_fit(-.7cap_height#*slant,0);
endchar;

iff known chars.greek_Psi_BB:
bskchar "The blackboard-bold Greek letter Psi";
beginchar(chars.greek_Psi_BB,14u#,cap_height#,0); uni "non";
italcorr .5[x_height#,cap_height#]*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
oblu:=1.25bbw;
p100=p1;
p101=p2;
p102=p5;
p103=p6;
z100=bsktouch(p100,bbs*down,subpath(0,1) of p101,up);
z101=bsktouch(subpath(0,1) of p100,bbs*down,p101,up);
z102=bsktouch(p102,bbs*up,subpath(0,1) of p103,down);
z103=bsktouch(subpath(0,1) of p102,bbs*up,p103,down);
tim100=xpart(p100 intersectiontimes (z100--(x100,h)));
tim101=xpart(p101 intersectiontimes (z100--(x100,0)));
tim102=xpart(p100 intersectiontimes (z101--(x101,h)));
tim103=xpart(p101 intersectiontimes (z101--(x101,0)));
tim104=xpart(p102 intersectiontimes (z102--(x102,x_height)));
tim105=xpart(p103 intersectiontimes (z102--(x102,h)));
tim106=xpart(p102 intersectiontimes (z103--(x103,0)));
tim107=xpart(p103 intersectiontimes (z103--(x103,h)));
infill subpath(rundy(p100,tim102),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),rundy(p101,tim103).zpet) of p101..cycle;
infill subpath(rundy(p102,tim106),rundy(p102,tim104).zpet) of p102
       ..subpath(rundy(p103,tim105),rundy(p103,tim107).zpet) of p103..cycle;
oblu:=f_obl;
bot z104=(x1l,y1l.c); z105=(x2l,y2l.c);
infill obl(2r,2l,1r)---obl(1r,2r,1l)---z1l...obl(104,1l.c,2l)---obl(105,1l,2l.c)...z2l---cycle;
labels(100,101,102,103,104,105);
endchar;

iff known chars.greek_Psi_SS:
bskchar "The sans-serif Greek letter Psi";
beginchar(chars.greek_Psi_SS,13u#,cap_height#,0); uni "non";
italcorr .5[x_height#,cap_height#]*slant;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[], thc; oblu:=2oblu;
thc=if ((substring(0,5) of font_identifier_)="BSKHC"): cap_hair else: cap_curve fi;
pos1(cap_stem,0); pos2(cap_stem,0);
pos3(cap_hair,90); pos4(cap_hair,90);
pos5(thc,0); pos6(thc,180);
pos7(cap_hair,90); pos8(cap_hair,90);
x1=x2=.5w; top y2=h; bot y1=0;
y3l=y4l=top .55bar_height; y5=y6=.5[bar_height,x_height]; top y7r=top y8r=.55[x_height,h]; 
x3=x1l; x4=x1r; x3-x5=y5-y3r; x6-x4=y6-y4r; 
lft x7l=u; rt x8r=w-u;
cap_serifs_tl(2l); cap_serifs_tr(2r); cap_serifs_bl(1l); cap_serifs_br(1r);
p1:=z3r{left}..{up}z5r..{left}z7r;
p2:=z7l{right}..{down}z5l..{right}z3l;
p3:=z1l.b{down}...z1...{up}z1r.b;
p4:=z2r.b{up}...z2...{down}z2l.b;
p5:=z4l{right}..{up}z6l..{right}z8l;
p6:=z8r{left}..{down}z6r..{left}z4r;
filldraw subpath(0,rundy(p2,length(p2)).zpet) of p2..p3..
         subpath(rundy(p5,0),infinity) of p5..
	 subpath(0,rundy(p6,length(p6)).zpet) of p6..(x1r,y4r+oblu)---p4
	 ---(x1l,y3r+oblu)..subpath(rundy(p1,0),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8);
endchar;

charscription(14u,cap_height,0)(
path p[];
pos1(cap_curve,0); pos2(cap_hair,90); pos3(cap_curve,180); pos4(cap_hair,270);
pos5(cap_hair,0); pos6(cap_hair,180);
pos5'(cap_hair,0); pos6'(cap_hair,180);
lft x1l=u+o; x3l=w-x1l; y1=y3=x_height; 
.5[x2,x4]=.5[x1,x3]; x2-x4=.5u; bot y2l=-o; top y4l=h+o;
.5[x5,x6]=x2; y5=y6=.5bar_height; x6-x5=.35(x3r-x1r);
z5'-z5=z6'-z6=o*down;
x7r=x6l; x7l=x5l; y7l=y7r=0;
bot y8r=bot y9r=0; rt x8l=w-u; lft x9l=u;
{{ numeric oldbeak; oldbeak:=beak; save beak; numeric beak; beak:=.65oldbeak;
p0=arm_bot_r_points(7r,8).alt; y8f:=.5[y8f,y8d];
p1=arm_bot_l_points(7l,9).alt; y9f:=.5[y9f,y9d];
}};
filldraw z5'l{z1-z5}..z1l..z4l..z3l..{z6-z3}z6'l..z8f...z8d...z8c..
         z8l.o&z8l.o{up}..z8l---z8r--z8b...z8a---z7r..z6r{z3-z6}..
	 z3r..z4r..z1r..z5r{z5-z1}..z7l---z9a...z9b--z9r---z9l..
	 {down}z9l.o&z9l.o..z9c...z9d..z9f..cycle;
penlabels(1,2,3,4,5,5',6,6',7);
);

iff known chars.greek_Omega:
bskchar "The Greek letter Omega";
beginchar(chars.greek_Omega,14u#,cap_height#,0); uni "0x03A9";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
math_fit(0,.5bar_height#*slant);
endchar;

iff known chars.greek_Omega_BB:
bskchar "The blackboard-bold Greek letter Omega";
beginchar(chars.greek_Omega_BB,14u#,cap_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
numeric tim[];
oblu:=1.25bbw;
p100:=z5'l{z1-z5}..z1l..z4l..z3l..{z6-z3}z6'l;
p101:=z6r{z3-z6}..z3r..z4r..z1r..{z5-z1}z5r;
z100=bsktouch(subpath(0,1) of p100,bbs*right,p101,left);
z101=bsktouch(subpath(0,2) of p100,bbs*down,p101,up);
z102=bsktouch(subpath(2,infinity) of p100,bbs*down,p101,up);
z103=bsktouch(p100,bbs*left,subpath(0,1) of p101,right);
tim100=xpart(p100 intersectiontimes (z100--(0,y100)));
tim101=xpart(p101 intersectiontimes (z100--(x4,y100)));
tim102=xpart(p100 intersectiontimes (z101--(x101,h+u)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y1)));
tim104=xpart(p100 intersectiontimes (z102--(x102,h+u)));
tim105=xpart(p101 intersectiontimes (z102--(x102,y3)));
tim106=xpart(p100 intersectiontimes (z103--(w,y103)));
tim107=xpart(p101 intersectiontimes (z103--(x4,y103)));
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103),rundy(p101,tim101).zpet) of p101..cycle;
infill subpath(rundy(p100,tim104),rundy(p100,tim106).zpet) of p100
       ..subpath(rundy(p101,tim107),rundy(p101,tim105).zpet) of p101..cycle;
labels(100,101,102,103);
endchar;

iff known chars.greek_Omega_SS:
bskchar "The sans-serif Greek letter Omega";
beginchar(chars.greek_Omega_SS,14u#,cap_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
path p[];
pos1(cap_curve,0); pos2(cap_hair,90); pos3(cap_curve,180); pos4(cap_hair,270);
pos5(cap_hair,0); pos6(cap_hair,180);
pos5'(cap_hair,0); pos6'(cap_hair,180);
pos8(cap_hair,-90); pos9(cap_hair,-90);
lft x1l=u+o; x3l=w-x1l; y1=y3=x_height; 
.5[x2,x4]=.5[x1,x3]; x2-x4=.5u; bot y2l=-o; top y4l=h+o;
.5[x5,x6]=x2; y5=y6=.5bar_height; x6-x5=.35(x3r-x1r);
z5'-z5=z6'-z6=o*down;
x7r=x6l; x7l=x5l; bot y7l=bot y7r=0;
bot y8r=bot y9r=0; rt x8l=w-u; lft x9l=u;
filldraw z5'l{z1-z5}..z1l..z4l..z3l..{z6-z3}z6'l..(x7r,y8l)---z8l+cap_stem*left
         ...z8...z8r+cap_stem*left---z7r..z6r{z3-z6}..z3r..z4r..z1r..z5r{z5-z1}
	 ..z7l---z9r+cap_stem*right...z9...z9l+cap_stem*right---(x7l,y9l)..cycle;
penlabels(1,2,3,4,5,5',6,6',7,8,9);
endchar;

charscription(14u,cap_height,0)(
path p[]; numeric tim[], theta;
pos0(cap_hair,180); pos1(cap_hair,90); pos3(cap_hair,-90); pos0'(cap_hair,180);
lft x0r=u; y0=2/3[x_height,h]; top y1r=h+o; bot y3=0; x1=4u; x3=.5w-u;
y0'=h-y0; x3-x0'=x1-x0;
y2=x_height; rt x2=w-u-.5cap_curve;
p0:=z0..z1..z2..{left}z3..z0'; theta=angle(direction 2 of p0)+90; pos2(cap_curve,theta);
p1:=z0r..z1r..z2r..z3r{left}..z0'r;
p2:=z0'l..z3l{right}..z2l..z1l..z0l;
pos4(cap_hair,theta-90); pos5(cap_hair,theta-90);
z4=p0 intersectionpoint ((0,1/2[x_height,h])--(w,1/2[x_height,h]));
z5=p0 intersectionpoint ((0,1/2[x_height,bar_height])--(w,1/2[x_height,bar_height]));
pos6(cap_stem,theta-100); pos7(cap_stem,theta-80);
pos6'(.5[cap_hair,cap_stem],theta-90); pos7'(.5[cap_hair,cap_stem],theta-90);
x4-x6=.4w; z6r=z4l+whatever*dir(theta+5); 
z7l=z5r-abs(z6r-z4l)*dir(theta+5);
z6'l=z6l+1/3(z4l-z6l)+.5hair*dir(theta-90);
z7'r=z7r+1/3(z5r-z7r)+.5hair*dir(theta+90);
p3:=reverse(z4l---z6'l..z6l&z6l..z6r..z6'r---z4r);
p4:=z5r---z7'r..z7r&z7r..z7l..z7'l---z5l;
(tim0,tim1)=p2 intersectiontimes p4;
(tim2,tim3-1)=p2 intersectiontimes subpath(1,infinity) of p4;
(tim4,tim5)=p2 intersectiontimes p3;
(tim6,tim7-1)=p2 intersectiontimes subpath(1,infinity) of p3;
oblu:=2oblu;
filldraw subpath(0,rundy(p2,tim0).zpet) of p2
         ..subpath(rundy(p4,tim1),rundy(p4,tim3).zpet) of p4
	 ..subpath(rundy(p2,tim2),rundy(p2,tim4).zpet) of p2
	 ..subpath(rundy(p3,tim5),rundy(p3,tim7).zpet) of p3
	 ..subpath(rundy(p2,tim6),infinity) of p2..p1..cycle;
penlabels(0,0',1,2,3,4,5,6,6',7,7');
);

iff known chars.greek_Sampi:
bskchar "The Greek letter Sampi";
beginchar(chars.greek_Sampi,14u#,cap_height#,0); uni "0x03E0";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
math_fit(-x_height#*slant,0);
endchar;

iff known chars.greek_Sampi_BB:
bskchar "The blackboard-bold Greek letter Sampi";
beginchar(chars.greek_Sampi_BB,14u#,cap_height#,0); uni "non";
adjust_fit(0,0);
pickup tiny.nib;
usechar;
p100=subpath(1,3) of p1;
p101=subpath(1,3) of p2;
z100=bsktouch(subpath(0,1) of p100,bbs*down,p101,up);
z101=bsktouch(p100,bbs*up,subpath(0,1) of p101,down);
tim100=xpart(p100 intersectiontimes (z100--(x100,2h)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y2)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y3r-u-5)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2)));
oblu:=bbw;
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103),rundy(p101,tim101).zpet) of p101..cycle;
labels(100,101);
endchar;

iff known chars.greek_Sampi_SS:
bskchar "The sans-serif Greek letter Sampi";
beginchar(chars.greek_Sampi_SS,13u#,cap_height#,0); uni "non";
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[], theta;
pos0(cap_hair,180); pos1(cap_hair,90); pos3(cap_hair,-90); pos0'(cap_hair,180);
lft x0r=u; y0=2/3[x_height,h]; top y1r=h+o; bot y3=0; x1=4u; x3=.5w-u;
y0'=h-y0; x3-x0'=x1-x0;
y2=x_height; rt x2=w-u-.5cap_curve;
p0:=z0..z1..z2..{left}z3..z0'; theta=angle(direction 2 of p0)+90; pos2(cap_curve,theta);
p1:=z0r..z1r..z2r..z3r{left}..z0'r;
p2:=z0'l..z3l{right}..z2l..z1l..z0l;
pos4(cap_hair,theta-90); pos5(cap_hair,theta-90);
z4=p0 intersectionpoint ((0,1/2[x_height,h])--(w,1/2[x_height,h]));
z5=p0 intersectionpoint ((0,1/2[x_height,bar_height])--(w,1/2[x_height,bar_height]));
pos6(cap_hair,theta-100); pos7(cap_hair,theta-80);
pos6'(cap_hair,theta-90); pos7'(cap_hair,theta-90);
x4-x6=.4w; z6r=z4l+whatever*dir(theta+10); 
z7l=z5r-abs(z6r-z4l)*dir(theta+5);
z6'l=z6l+1/3(z4l-z6l);
z7'r=z7r+1/3(z5r-z7r);
p3:=reverse(z4l---z6l&z6l..z6r---z4r);
p4:=z5r---z7r&z7r..z7l---z5l;
(tim0,tim1)=p2 intersectiontimes p4;
(tim2,tim3-1)=p2 intersectiontimes subpath(1,infinity) of p4;
(tim4,tim5)=p2 intersectiontimes p3;
(tim6,tim7-1)=p2 intersectiontimes subpath(1,infinity) of p3;
oblu:=2oblu;
filldraw subpath(0,rundy(p2,tim0).zpet) of p2
         ..subpath(rundy(p4,tim1),rundy(p4,tim3).zpet) of p4
	 ..subpath(rundy(p2,tim2),rundy(p2,tim4).zpet) of p2
	 ..subpath(rundy(p3,tim5),rundy(p3,tim7).zpet) of p3
	 ..subpath(rundy(p2,tim6),infinity) of p2..p1..cycle;
penlabels(0,0',1,2,3,4,5,6,6',7,7');
endchar;

charscription(14u,cap_height,0)(
pos1(cap_stem,0); pos2(cap_stem,0);
pos3(cap_stem,0); pos4(cap_stem,0); pos5(cap_stem,0); pos6(cap_stem,0);
bot y1=bot y3=bar_height; top y2=top y4=h; bot y5=0; y6=y2l.c;
lft x1l=lft x2l=2u; rt x3r=rt x4r=w-2u; x5=x6=.5w;
cap_serifs_tl(2l); cap_serifs_tr(2r); cap_serifs_bl(1l); 
cap_serifs_tl(4l); cap_serifs_tr(4r); cap_serifs_br(3r);
cap_serifs_bl(5l); cap_serifs_br(5r);
{{ numeric old_jut; old_jut:=cap_jut; save cap_jut; cap_jut:=.75old_jut;
   cap_serifs_bl(3l); cap_serifs_br(1r);
}};
filldraw z1l.b{down}..{left}z1l.c..z1l.a{right}..z1+ser_boule*up..{right}z1r.a
         ..z1r.c{left}..z1r.b---z2r.b..z2r.c---obl(6l,2r.c,5l)---z5l.b..{left}z5l.c
	 ..z5l.a{right}..z5+ser_boule*up..{right}z5r.a..z5r.c{left}..z5r.b
	 ---obl(6r,5r,4l.c)---z4l.c..z4l.b---z3l.b{down}..{left}z3l.c..z3l.a{right}
	 ..z3+ser_boule*up..{right}z3r.a..z3r.c{left}..z3r.b---z4r.b..{right}z4r.c
	 ..z4r.a---z2r.a---z2l.a..{right}z2l.c..z2l.b---cycle;
penlabels(1,2,3,4,5,6);
);

iff known chars.greek_Varsampi:
bskchar "The Archaic Greek letter Sampi";
beginchar(chars.greek_Varsampi,14u#,cap_height#,0); uni "0x0372";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
usechar;
math_fit(-bar_height#*slant,u#);
endchar;

iff known chars.greek_Varsampi_BB:
bskchar "The blackboard-bold Archaic Greek letter Sampi";
beginchar(chars.greek_Varsampi_BB,14u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
usechar;
bot z100=(x1l,y1l.c); top z101=(x2l,y2l.c);
bot z102=(x3r,y3r.c); top z103=(x4r,y4r.c);
infill obl(2r,2l,1r)---obl(1r,2r,1l)---z1l...obl(100,1l.c,2l)---obl(101,1l,2l.c)...z2l---cycle;
infill obl(4l,4r,3l)---obl(3l,4l,3r)---z3r...obl(102,3r.c,4r)---obl(103,3r,4r.c)...z4r---cycle;
infill ifobl(6r,6l,5r,5l,,)---ifobl(5l,5r,6l,6r,,)--cycle;
endchar;

iff known chars.greek_Varsampi_SS:
bskchar "The sans-serif Archaic Greek letter Sampi";
beginchar(chars.greek_Varsampi_SS,14u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
numeric thc;
thc=if ((substring(0,5) of font_identifier_)="BSKHC"): cap_hair else: cap_stem fi;
pos1(thc,0); pos2(thc,0);
pos3(thc,0); pos4(thc,0); pos5(cap_stem,0); pos6(cap_stem,0);
bot y1=bot y3=bar_height; top y2=top y4=h; bot y5=0; y6=y2l.c;
lft x1l=lft x2l=2u; rt x3r=rt x4r=w-2u; x5=x6=.5w;
cap_serifs_tl(2l); cap_serifs_tr(2r); cap_serifs_bl(1l); 
cap_serifs_tl(4l); cap_serifs_tr(4r); cap_serifs_br(3r);
cap_serifs_bl(5l); cap_serifs_br(5r);
{{ numeric old_jut; old_jut:=cap_jut; save cap_jut; cap_jut:=.75old_jut;
   cap_serifs_bl(3l); cap_serifs_br(1r);
}};
filldraw z1l.b{down}...z1...z1r.b---z2r.b..z2r.c---obl(6l,2r.c,5l)---z5l.b...z5
	 ...z5r.b---obl(6r,5r,4l.c)---z4l.c..z4l.b---z3l.b...z3...z3r.b---z4r.b
	 ...z4---z2...z2l.b---cycle;
penlabels(1,2,3,4,5,6);
endchar;

charscription(14u,cap_height,desc_depth)(
path p[]; numeric tim[]; oblu:=2oblu;
pos1(cap_curve,0); pos2(cap_hair,90); pos3(cap_curve,180); pos4(cap_hair,270);
pos5(cap_stem,0); pos6(cap_stem,0);
lft x1l=u-o; rt x3l=w-u+o; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2-x4=.5u; bot y2l=-o; top y4l=h+o;
x5=x6=x2; y5=y2; bot y6=-d;
cap_serifs_bl(6l); cap_serifs_br(6r);
p0=z1l{down}..z2l..z3l..z4l..{down}z1l;
p1=z5l---z6l.b..{left}z6l.c..{right}z6l.a..z6+ser_boule*up..{right}z6r.a..z6r.c{left}..z6r.b---z5r;
(tim0,tim1)=p0 intersectiontimes subpath(0,1) of p1;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0&cycle;
infill z1r{up}..z4r..z3r..z2r..{up}cycle;
penlabels(1,2,3,4,5,6);
);

iff known chars.greek_Qoppa:
bskchar "The Archaic Greek letter Qoppa";
beginchar(chars.greek_Qoppa,14u#,cap_height#,desc_depth#); uni "0x03D8";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
math_fit(-.5cap_height#*slant,ic#-2u#);
endchar;

iff known chars.greek_Qoppa_BB:
bskchar "The blackboard-bold Archaic Greek letter Qoppa";
beginchar(chars.greek_Qoppa_BB,14u#,cap_height#,desc_depth#); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
path p[]; numeric tim[];
p100:=z4r..z1r{down}..z2r..z3r..cycle;
p101:=reverse z4l..z1l{down}..z2l..z3l..cycle;
oblu:=1.25bbw;
z100=bsktouch(subpath(0,1) of p100,bbs*up,p101,down);
z101=bsktouch(subpath(1,2) of p100,bbs*down,p101,up);
z102=bsktouch(subpath(3,4) of p100,bbs*up,p101,down);
z103=bsktouch(subpath(2,3) of p100,bbs*down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y1)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4l+5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y1)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2l-5)));
tim104=xpart(p100 intersectiontimes (z102--(x102,y1)));
tim105=xpart(p101 intersectiontimes (z102--(x102,y4l+5)));
tim106=xpart(p100 intersectiontimes (z103--(x103,y1)));
tim107=xpart(p101 intersectiontimes (z103--(x103,y2l-5)));
bot z104=(x6l,y6l.c);
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103).zpet,rundy(p101,tim101)) of p101..cycle;
infill subpath(rundy(p100,tim104).zpet,rundy(p100,tim106)) of p100
       ..subpath(rundy(p101,tim107),rundy(p101,tim105).zpet) of p101..cycle;
oblu:=f_obl;
infill ifobl(5l,5r,6l,6r,,)---obl(6r,5r,6l)---z6l...obl(104,6l.c,5l)---cycle;
labels(100,101,102,103,104); 
endchar;

iff known chars.greek_Qoppa_SS:
bskchar "The sans-serif Archaic Greek letter Qoppa";
beginchar(chars.greek_Qoppa_SS,14u#,cap_height#,desc_depth#); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=2oblu;
pos1(cap_curve,0); pos2(cap_hair,90); pos3(cap_curve,180); pos4(cap_hair,270);
pos5(cap_stem,0); pos6(cap_stem,0);
lft x1l=u-o; rt x3l=w-u+o; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2-x4=.5u; bot y2l=-o; top y4l=h+o;
x5=x6=x2; y5=y2r; bot y6=-d;
cap_serifs_bl(6l); cap_serifs_br(6r);
p0=z1l{down}..z2l..z3l..z4l..{down}z1l;
p1=z5l---z6l.b..z6..z6r.b---z5r;
(tim0,tim1)=p0 intersectiontimes subpath(0,1) of p1;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0&cycle;
infill z1r{up}..z4r..z3r..z2r..{up}cycle;
penlabels(1,2,3,4,5,6);
endchar;

charscription(13.3u,cap_height,.75desc_depth)(
path p[]; numeric tim[], sersh;
sersh=.15tiny;
pos1(cap_curve,0); pos2(cap_stem,90); pos3(cap_hair,180); pos4(cap_hair,270);
pos6(cap_stem,90); pos7(cap_hair,0); pos8(cap_stem,-90); pos8'(.9cap_stem,-90);
lft x1l=u-o; rt x3r=w-u; y1=y3=.5h; x2=x4=.5[x1,x3]; bot y2l=-o; top y4l=h+o;
y6=y2; rt x7r=w-u; bot y8r=-d; x7-x6=.5(y6-y8); x8=.5[x2,x6]; y7=.5[y6,y8];
z8'r=z8r+cap_stem*right;
p0:=z1r{down}..z2r..z3r..z4r..{down}cycle;
p1:=z1l{down}..z2l..z3l..z4l..{down}cycle;
z5'=((.5w,y3+.2h)--(2w,y3+.2h)) intersectionpoint p0; tim1= ypart(((.5w,y3+.2h)--(2w,y3+.2h)) intersectiontimes reverse p0);
z5'a=z5'+serif_o*right; z5'b=(x5'a-sersh,h+o); z5'c=(.35[x4,x3r],y3);
z5'd=(z5'c--z5'b) intersectionpoint p1; z5'e=.35[z5'b,z5'd];
tim3=ypart(((.5w,y5'e+.15ser_height)--(w,y5'e+.15ser_height)) intersectiontimes p1);
filldraw subpath(-1,tim1) of reverse p0..z5'a--z5'b---z5'e..subpath (tim3,5) of p1
         ---z6l..{down}z7l..z8'l..z8l..z8r---z8'r..{up}z7r..z6r---cycle;
penlabels(1,2,3,4,6,7,8,8'); labels(5,5',5'a,5'b,5'c,5'd,5'e);
);

iff known chars.greek_Stigma:
bskchar "The Greek letter Stigma";
beginchar(chars.greek_Stigma,13.3u#,cap_height#,.75desc_depth#); uni "0x03DA";
italcorr cap_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
math_fit(-.5cap_height#*slant,0);
endchar;

iff known chars.greek_Stigma_BB:
bskchar "The blackboard-bold Greek letter Stigma";
beginchar(chars.greek_Stigma_BB,13.3u#,cap_height#,.75desc_depth#); uni "non";
italcorr cap_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
p100:=subpath(-1,1) of p0---z6r..{down}z7r;
p101:=reverse (subpath(-1,1) of p1---z6l..{down}z7l);
oblu:=1.25bbw;
z100=bsktouch(subpath(0,1) of p100,bbs*up,p101,down);
z101=bsktouch(p100,bbs*left,subpath(0,1) of p101,right);
tim100=xpart(p100 intersectiontimes (z100--(x100,y1)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4l+5)));
tim102=xpart(p100 intersectiontimes (z101--(w,y101)));
tim103=xpart(p101 intersectiontimes (z101--(0,y101)));
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103),rundy(p101,tim101).zpet) of p101..cycle;
labels(100,101);
endchar;

iff known chars.greek_Stigma_SS:
bskchar "The sans-serif Greek letter Stigma";
beginchar(chars.greek_Stigma_SS,13.3u#,cap_height#,.75desc_depth#); uni "non";
italcorr cap_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[], sersh;
sersh=.15tiny;
pos1(cap_curve,0); pos2(cap_stem,90); pos4(cap_hair,270);
pos3(if ((substring(0,5) of font_identifier_)="BSKHC"):1.2\\fi cap_hair,180);
pos6(cap_stem,90); pos7(cap_hair,0); pos8(cap_stem,-90); pos8'(.9cap_stem,-90);
lft x1l=u-o; rt x3r=w-u; y1=y3=.5h; x2=x4=.5[x1,x3]; bot y2l=-o; top y4l=h+o;
y6=y2; rt x7r=w-u; bot y8r=-d; x7-x6=.5(y6-y8); x8=.5[x2,x6]; y7=.5[y6,y8];
z8'r=z8r+if ((substring(0,5) of font_identifier_)="BSKHC"):.5\\ fi cap_stem*right;
if ((substring(0,5) of font_identifier_)="BSKHC"):
  p0:=z1r{down}..z2r..z3r..{left}z4r..{down}cycle;
  p1:=z1l{down}..z2l..z3l..{left}z4l..{down}cycle;
else:
  p0:=z1r{down}..z2r..z3r..z4r..{down}cycle;
  p1:=z1l{down}..z2l..z3l..z4l..{down}cycle;
fi
tim1= ypart(((.5w,y3+.2h)--(2w,y3+.2h)) intersectiontimes reverse p0);
tim3= ypart(((.5w,y3+.2h)--(2w,y3+.2h)) intersectiontimes p1);
filldraw subpath(-1,tim1) of reverse p0..subpath (tim3,5) of p1
         ---z6l..{down}z7l..z8'l..z8l..z8r---z8'r..{up}z7r..z6r---cycle;
penlabels(1,2,3,4,6,7,8,8');
endchar;

iff known chars.greek_alpha:
bskchar "The Greek letter alpha";
beginchar(chars.greek_alpha,10.5u#,x_height#,0); uni "0x03B1";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos0(hair,-90); pos1(.5[stem,hair],0); pos2(.5[stem,hair],0);
pos3(hair,-90); pos4(curve,180); pos5(hair,90);
pos6(hair,0); pos7(hair,90); pos8(stem,180);
top y0l=h; x0=w-u;
rt x1r=w-1.5u; x2=x1-stem; top y1=h-u; y2=.5bar_height;
x3=.5x2; x5=.55x1; bot y3r=-o; top y5r=h+o;
lft x4r=u; y4=bar_height; y6=.55bar_height; x6=x2;
x7=w-2u; bot y7l=-o; lft x8l=w-u; y8=.75curve;
z8'=z8+.2stem*right+o*up; z8''=z8+.5(stem-currentbreadth)*dir225;
p0=z0r{left}..z1r...z2r..z3r..z4r..z5r..z6r..{right}z7r..z8''..z8r;
p1=z8r..z8'..z8l..z7l{left}..z6l..z5l..z4l..z3l..z2l---z1l..z0l;
(tim0,tim1-5)=p0 intersectiontimes subpath (5,infinity) of p0;
(tim2,tim3)=p1 intersectiontimes p0;
(tim4-4,tim5-6)=subpath(4,infinity) of p0 intersectiontimes subpath (6,infinity) of p1;
(tim6,tim7-7)=subpath(0,6) of p1 intersectiontimes subpath (7,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0..subpath(rundy(p0,tim1),infinity) of p0
         ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),rundy(p0,(tim4,.5bar_height)).zpet) of p0
	 ..subpath(rundy(p1,(tim5,.5bar_height)),infinity) of p1..cycle;
infill subpath (rundy(p1,tim6),rundy(p1,tim7).zpet) of p1..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(8',8'');
math_fit(mft,.5u#);
endchar;

iff known chars.greek_alpha_BB:
bskchar "The blackboard-bold Greek letter alpha";
beginchar(chars.greek_alpha_BB,10.5u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos0(hair,-90); pos1(.5[stem,hair],0); pos2(.5[stem,hair],0);
pos3(hair,-90); pos4(cap_stem,180); pos5(hair,90);
pos6(hair,0); pos7(hair,90); pos8(stem,180);
top y0l=h; x0=w-u;
rt x1r=w-1.5u; x2=x1-stem; top y1=h-u; y2=.5bar_height;
lft x3=.5x2; lft x5=.55x1; bot y3r=-o; top y5r=h+o;
lft x4r=u; y4=bar_height; y6=.55bar_height; x6=x2;
x7=w-2u; bot y7l=-o; lft x8l=w-u; y8=.75curve;
z8'=z8+.2stem*right+o*up; z8''=z8+.5(stem-currentbreadth)*dir225;
p0=z0r{left}..z1r...z2r..z3r..z4r..z5r..z6r..{right}z7r..z8''..z8r;
p1=z8r..z8'..z8l..z7l{left}..z6l..z5l..z4l..z3l..z2l---z1l..z0l;
(tim0,tim1-5)=p0 intersectiontimes subpath (5,infinity) of p0;
(tim2,tim3)=p1 intersectiontimes p0;
(tim4-4,tim5-6)=subpath(4,infinity) of p0 intersectiontimes subpath (6,infinity) of p1;
(tim6,tim7-7)=subpath(0,6) of p1 intersectiontimes subpath (7,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0..subpath(rundy(p0,tim1),infinity) of p0
         ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),rundy(p0,(tim4,.5bar_height)).zpet) of p0
	 ..subpath(rundy(p1,(tim5,.5bar_height)),infinity) of p1..cycle;
infill subpath (rundy(p1,tim6),rundy(p1,tim7).zpet) of p1..cycle;
p100=subpath(3,5) of p0;
p101=subpath(5,7) of p1;
z100=bsktouch(p100,up,p101,down);
z101=bsktouch(p100,down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y3r-u-5)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y2)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y5r+u+5)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y4)));
oblu:=bbw;
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103),rundy(p101,tim101).zpet) of p101..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(8',8'',100,101);
endchar;

iff known chars.greek_alpha_SS:
bskchar "The sans-serif Greek letter alpha";
beginchar(chars.greek_alpha_SS,10.5u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos0(hair,0); pos1(.5[stem,hair],0); pos2(.5[stem,hair],0);
pos3(hair,-90); pos4(curve,180); pos5(hair,90);
pos6(hair,0); pos7(hair,0); pos8(stem,180);
top y0l=h; x0r=w-u;
rt x1r=w-1.5u; x2=x1-stem; top y1=h-u; y2=.5bar_height;
x3=.5x2; x5=.55x1; bot y3r=-o; top y5r=h+o;
lft x4r=u; y4=bar_height; y6=.75bar_height; x6=x2;
x7=w-u; bot y7l=-o; lft x8l=w-u; y8=.75curve;
z8'=z8+.2stem*right+o*up; z8''=z8+.5(stem-currentbreadth)*dir225;
p0=z0r..z1r...z2r..z3r..z4r..z5r..z6r..{z7-z6}z7r;
p1=z7l{z6-z7}..z6l..z5l..z4l..z3l..z2l---z1l..z0l;
(tim0,tim1-5)=p0 intersectiontimes subpath (5,infinity) of p0;
(tim2,tim3)=p1 intersectiontimes p0;
(tim4-4,tim5-4)=subpath(4,infinity) of p0 intersectiontimes subpath (3,infinity) of p1;
(tim6,tim7-4)=subpath(0,3) of p1 intersectiontimes subpath (4,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0..subpath(rundy(p0,tim1),infinity) of p0
         ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),rundy(p0,(tim4,.5bar_height)).zpet) of p0
	 ..subpath(rundy(p1,(tim5,.5bar_height)),infinity) of p1..cycle;
infill subpath (rundy(p1,tim6),rundy(p1,tim7).zpet) of p1..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(8',8'');
endchar;

iff known chars.greek_beta:
bskchar "The Greek letter beta";
beginchar(chars.greek_beta,9u#,asc_height#,desc_depth#); uni "0x03B2";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(hair,180); pos2(hair,180);
pos3(hair,90); pos4(stem,0); pos5(hair,180); pos5'(hair,120); pos5''(.5[hair,stem],-30);
pos6(curve,-30); pos7(hair,-90); pos8(stem,180);
lft x1r=lft x2r=u; y1=-d; y2=.5[h,x_height]; 
x3=.5w-stem; top y3r=h+o; rt x4r=w-2.5u; rt x6r=w-u; 
y5=.25[x_height,bar_height]; y4=.5[x_height,h]; y6=.5[y5,0];
x5=x3; x7=.5[x2l,x6]; bot y7r=-o;
x5'=x5''=.5[x4,x5]; .5[y5',y5'']=y5; y5'-y5''=.5(x4-x5);
x8r=x2l+stem; y8=.25bar_height;
z8'=z8+.2stem*right+o*down; z8''=z8+.5(stem-currentbreadth)*dir135;
p0=z1r---z2r..z3r..z4r..z5''r..z5r..z5'r..z6r..{left}z7r..z8r..z8''..z8l{down}..z8';
p1=z8'..z7l{right}..z6l..z5'l..z5l..z5''l..z4l..z3l..z2l---z1l;
(tim0,tim1-5)=subpath (0,4) of p0 intersectiontimes subpath (5,infinity) of p0;
(tim2,tim3-4)=subpath(0,3) of p1 intersectiontimes subpath(4,infinity) of p1;
tim4-3=xpart(subpath(3,5) of p0 intersectiontimes p1);
(tim5-6,tim6-5)=subpath(6,infinity) of p0 intersectiontimes subpath (5,infinity) of p1;
tim7=xpart(subpath(0,3) of p1 intersectiontimes subpath (4,infinity) of p1);
filldraw subpath(0,rundy(p0,(tim0,hair)).zpet) of p0
         ..subpath(rundy(p0,(tim1,hair)),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim4),rundy(p0,tim5).zpet) of p0
	 ..subpath(rundy(p1,tim6),infinity) of p1..cycle;
oblu:=f_obl;
infill subpath(rundy(p1,tim6).zpet,rundy(p1,tim7)) of p1..cycle;
penlabels(0,1,2,3,4,5,5',5'',6,7,8); labels(8',8'');
math_fit(desc_depth#*slant,ic#);
endchar;

iff known chars.greek_beta_BB:
bskchar "The blackboard-bold Greek letter beta";
beginchar(chars.greek_beta_BB,9.5u#,asc_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(.8cap_stem,180); pos2(.8cap_stem,180);
pos3(hair,90); pos4(stem,0); pos5(hair,180); pos5'(hair,120); pos5''(.5[hair,stem],-30);
pos6(cap_stem,-30); pos7(hair,-90); pos8(stem,180);
lft x1r=lft x2r=u; y1=-d; y2=.5[h,x_height]; 
x3=.5w-stem; top y3r=h+o; rt x4r=w-2.5u; rt x6r=w-u; 
y5=.25[x_height,bar_height]; y4=.5[x_height,h]; y6=.5[y5,0];
x5=x3; x7=.5[x2l,x6]; bot y7r=-o;
x5'=x5''=.5[x4,x5]; .5[y5',y5'']=y5; y5'-y5''=.5(x4-x5);
x8r=x2l+stem; y8=.25bar_height;
z8'=z8+.2stem*right+o*down; z8''=z8+.5(stem-currentbreadth)*dir135;
p0=z1r---z2r..z3r..z4r..z5''r..z5r..z5'r..z6r..{left}z7r..z8r..z8''..z8l{down}..z8';
p1=z8'..z7l{right}..z6l..z5'l..z5l..z5''l..z4l..z3l..z2l---z1l;
(tim0,tim1-5)=subpath (0,4) of p0 intersectiontimes subpath (5,infinity) of p0;
(tim2,tim3-4)=subpath(0,3) of p1 intersectiontimes subpath(4,infinity) of p1;
tim4-3=xpart(subpath(3,5) of p0 intersectiontimes p1);
(tim5-6,tim6-5)=subpath(6,infinity) of p0 intersectiontimes subpath (5,infinity) of p1;
tim7=xpart(subpath(0,3) of p1 intersectiontimes subpath (4,infinity) of p1);
filldraw subpath(0,rundy(p0,(tim0,hair)).zpet) of p0
         ..subpath(rundy(p0,(tim1,hair)),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim4),rundy(p0,tim5).zpet) of p0
	 ..subpath(rundy(p1,tim6),infinity) of p1..z1+tiny*down..cycle;
oblu:=f_obl;
infill subpath(rundy(p1,tim6).zpet,rundy(p1,tim7)) of p1..cycle;
p100=subpath(0,2) of p0;
p101=subpath(7,infinity) of p1;
p102=subpath(5,infinity) of p0;
p103=subpath(0,4) of p1;
z100=bsktouch(p100,down,p101,up);
z101=bsktouch(p102,up,p103,down);
tim100=xpart(p100 intersectiontimes (z100--(x100,y3r+u)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y2)));
tim102=xpart(p102 intersectiontimes (z101--(x101,-d)));
tim103=xpart(p103 intersectiontimes (z101--(x101,y6)));
oblu:=.8bbw;
infill subpath(0,rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),infinity) of p101..z1+tiny*down..cycle;
infill subpath(rundy(p0,tim1),rundy(p0,tim102+5).zpet) of p0
       ..subpath(rundy(p103,tim103),rundy(p103,tim2).zpet) of p103..cycle;
penlabels(0,1,2,3,4,5,5',5'',6,7,8); labels(8',8'',100,101);
endchar;

iff known chars.greek_beta_SS:
bskchar "The sans-serif Greek letter beta";
beginchar(chars.greek_beta_SS,9u#,asc_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(hair,180); pos2(hair,180);
pos3(hair,90); pos4(stem,0); pos5(hair,180); pos5'(hair,120); pos5''(.5[hair,stem],-30);
pos6(curve,-30); pos7(hair,-90); pos8(hair,-90);
lft x1r=lft x2r=u; y1=-d; y2=.5[h,x_height]; 
x3=.5w-stem; top y3r=h+o; rt x4r=w-2.5u; rt x6r=w-u; 
y5=.25[x_height,bar_height]; y4=.5[x_height,h]; y6=.5[y5,0];
x5=x3; x7=.5[x2l,x6]; bot y7r=-o;
x5'=x5''=.5[x4,x5]; .5[y5',y5'']=y5; y5'-y5''=.5(x4-x5);
x8r=x2l+stem; y8r=y7r;
z8'=z8+.2stem*right+o*down; z8''=z8+.5(stem-currentbreadth)*dir135;
p0=z1r---z2r..z3r..z4r..z5''r..z5r..z5'r..z6r..{left}z7r..z8r..{right}z8l;
p1=z8l---z7l..z6l..z5'l..z5l..z5''l..z4l..z3l..z2l---z1l;
(tim0,tim1-5)=subpath (0,4) of p0 intersectiontimes subpath (5,infinity) of p0;
(tim2,tim3-4)=subpath(0,3) of p1 intersectiontimes subpath(4,infinity) of p1;
tim4-3=xpart(subpath(3,5) of p0 intersectiontimes p1);
(tim5-6,tim6-5)=subpath(6,infinity) of p0 intersectiontimes subpath (5,infinity) of p1;
tim7=xpart(subpath(0,3) of p1 intersectiontimes subpath (4,infinity) of p1);
filldraw subpath(0,rundy(p0,(tim0,hair)).zpet) of p0
         ..subpath(rundy(p0,(tim1,hair)),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim4),rundy(p0,tim5).zpet) of p0
	 ..subpath(rundy(p1,tim6),infinity) of p1..cycle;
oblu:=f_obl;
infill subpath(rundy(p1,tim6).zpet,rundy(p1,tim7)) of p1..cycle;
penlabels(0,1,2,3,4,5,5',5'',6,7,8); labels(8',8'');
endchar;

iff known chars.greek_beta_curved:
bskchar "The Greek letter beta (curved version)";
beginchar(chars.greek_beta_curved,9u#,asc_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos0(curve,180); pos1(hair,180); pos2(hair,180);
pos3(hair,90); pos4(stem,0); pos5(hair,180); pos5'(hair,120); pos5''(.5[hair,stem],-30);
pos6(curve,-30); pos7(hair,-90); pos8(stem,180);
lft x1r=lft x2r=u; y1=-d+curve; y2=.5[h,x_height]; y0=-d; x0l=x1r-o;
x3=.5w-stem; top y3r=h+o; rt x4r=w-2.5u; rt x6r=w-u; 
y5=.25[x_height,bar_height]; y4=.5[x_height,h]; y6=.5[y5,0];
x5=x3; x7=.5[x2l,x6]; bot y7r=-o;
x5'=x5''=.5[x4,x5]; .5[y5',y5'']=y5; y5'-y5''=.5(x4-x5);
x8r=x2l+stem; y8=.25bar_height;
z8'=z8+.2stem*right+o*down; z8''=z8+.5(stem-currentbreadth)*dir135;
p0=z1r---z2r..z3r..z4r..z5''r..z5r..z5'r..z6r..{left}z7r..z8r..z8''..z8l{down}..z8';
p1=z8'..z7l{right}..z6l..z5'l..z5l..z5''l..z4l..z3l..z2l---z1l;
(tim0,tim1-5)=subpath (0,4) of p0 intersectiontimes subpath (5,infinity) of p0;
(tim2,tim3-4)=subpath(0,3) of p1 intersectiontimes subpath(4,infinity) of p1;
tim4-3=xpart(subpath(3,5) of p0 intersectiontimes p1);
(tim5-6,tim6-5)=subpath(6,infinity) of p0 intersectiontimes subpath (5,infinity) of p1;
tim7=xpart(subpath(0,3) of p1 intersectiontimes subpath (4,infinity) of p1);
filldraw z0r..subpath(0,rundy(p0,(tim0,hair)).zpet) of p0
         ..subpath(rundy(p0,(tim1,hair)),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim4),rundy(p0,tim5).zpet) of p0
	 ..subpath(rundy(p1,tim6),infinity) of p1..z0l..z0r&cycle;
oblu:=f_obl;
infill subpath(rundy(p1,tim6).zpet,rundy(p1,tim7)) of p1..cycle;
penlabels(0,1,2,3,4,5,5',5'',6,7,8); labels(8',8'');
math_fit(desc_depth#*slant,ic#);
endchar;

iff known chars.greek_varbeta:
bskchar "The Greek letter beta---alternative";
beginchar(chars.greek_varbeta,9.5u#,asc_height#,0); uni "0x03D0";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,180); pos2(hair,90); pos3(hair,0); pos4(hair,180);
pos4'(hair,120); pos4''(.5[hair,stem],-30);
pos5(curve,-30); pos6(hair,-90);
lft x1r=u; y1=.5h;
x2=x4=.5w-.5stem; top y2r=h+o; rt x3r=w-2.5u; rt x5r=w-u; 
y4=.25[x_height,bar_height]; y3=.5[x_height,h]; y5=.5[y4,0];
x6=.5[x1l,x5]; bot y6r=-o;
x4'=x4''=.5[x3,x4]; .5[y4',y4'']=y4; y4'-y4''=.5(x3-x4);
p0=z1r..z2r..z3r..z4''r..z4r..z4'r..z5r..{left}z6r..cycle;
p1=z1l..z6l{right}..z5l..z4'l..z4l..z4''l..z3l..z2l..cycle;
(tim0,tim1-5)=subpath (0,4) of p0 intersectiontimes subpath (5,length p0) of p0;
(tim2,tim3-4)=subpath(0,3) of p1 intersectiontimes subpath(4,length p1) of p1;
tim4-2=xpart(subpath(2,4) of p0 intersectiontimes p1);
(tim5-5,tim6-4)=subpath(5,length p0) of p0 intersectiontimes subpath (4,length p1) of p1;
tim7=xpart(subpath(0,3) of p1 intersectiontimes subpath (4,length p1) of p1);
filldraw subpath(0,rundy(p0,(tim0,hair)).zpet) of p0
         ..subpath(rundy(p0,(tim1,hair)),length p0) of p0&cycle;
infill	 subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim4),rundy(p0,tim5).zpet) of p0
	 ..subpath(rundy(p1,tim6),length p1) of p1..cycle;
oblu:=f_obl;
infill subpath(rundy(p1,tim6).zpet,rundy(p1,tim7)) of p1..cycle;
penlabels(0,1,2,3,4,4',4'',5,6);
math_fit(-.5asc_height#*slant,ic#);
endchar;

iff known chars.greek_varbeta_BB:
bskchar "The blackboard-bold Greek letter beta---alternative";
beginchar(chars.greek_varbeta_BB,10u#,asc_height#,0); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(cap_stem,180); pos2(hair,90); pos3(hair,0); pos4(hair,180);
pos4'(hair,120); pos4''(.5[hair,stem],-30);
pos5(cap_stem,-30); pos6(hair,-90);
lft x1r=u; y1=.5h;
x2=x4=.5w; top y2r=h+o; rt x3r=w-2.5u; rt x5r=w-u; 
y4=.25[x_height,bar_height]; y3=.5[x_height,h]; y5=.5[y4,0];
x6=.5[x1l,x5]; bot y6r=-o;
x4'=x4''=.5[x3,x4]; .5[y4',y4'']=y4; y4'-y4''=.5(x3-x4);
p0=z1r..z2r..z3r..z4''r..z4r..z4'r..z5r..{left}z6r..cycle;
p1=z1l..z6l{right}..z5l..z4'l..z4l..z4''l..z3l..z2l..cycle;
(tim0,tim1-5)=subpath (0,4) of p0 intersectiontimes subpath (5,length p0) of p0;
(tim2,tim3-4)=subpath(0,3) of p1 intersectiontimes subpath(4,length p1) of p1;
tim4-2=xpart(subpath(2,4) of p0 intersectiontimes p1);
(tim5-5,tim6-4)=subpath(5,length p0) of p0 intersectiontimes subpath (4,length p1) of p1;
tim7=xpart(subpath(0,3) of p1 intersectiontimes subpath (4,length p1) of p1);
filldraw subpath(0,rundy(p0,(tim0,hair)).zpet) of p0
         ..subpath(rundy(p0,(tim1,hair)),length p0) of p0&cycle;
infill	 subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim4),rundy(p0,tim5).zpet) of p0
	 ..subpath(rundy(p1,tim6),length p1) of p1..cycle;
oblu:=f_obl;
infill subpath(rundy(p1,tim6).zpet,rundy(p1,tim7)) of p1..cycle;
p100=subpath(-1,1) of p0;
p101=subpath(-1,1) of p1;
p102=subpath(5,infinity) of p0;
p103=subpath(0,3) of p1;
z100=bsktouch(p100,down,p101,up);
z101=bsktouch(p100,up,p101,down);
z102=bsktouch(p102,up,p103,down);
tim100=xpart(p100 intersectiontimes (z100--(x100,2h)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y1)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y6r-u-5)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y1)));
tim104=xpart(p102 intersectiontimes (z102--(x102,-d)));
tim105=xpart(p103 intersectiontimes (z102--(x102,y5)));
oblu:=.8bbw;
infill subpath(rundy(p100,tim102),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),rundy(p101,tim103).zpet) of p101..cycle;
infill subpath(rundy(p0,tim1),rundy(p0,tim104+5).zpet) of p0
       ..subpath(rundy(p103,tim105),rundy(p103,tim2).zpet) of p103..cycle;
penlabels(0,1,2,3,4,4',4'',5,6); labels(100,101,102);
endchar;

iff known chars.greek_varbeta_SS:
bskchar "The sans-serif Greek letter beta---alternative";
beginchar(chars.greek_varbeta_SS,9.5u#,asc_height#,0); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,180); pos2(hair,90); pos3(hair,0); pos4(hair,180);
pos4'(hair,120); pos4''(.5[hair,stem],-30);
pos5(curve,-30); pos6(hair,-90);
lft x1r=u; y1=.5h;
x2=x4=.5w-.5stem; top y2r=h+o; rt x3r=w-2.5u; rt x5r=w-u; 
y4=.25[x_height,bar_height]; y3=.5[x_height,h]; y5=.5[y4,0];
x6=.5[x1l,x5]; bot y6r=-o;
x4'=x4''=.5[x3,x4]; .5[y4',y4'']=y4; y4'-y4''=.5(x3-x4);
p0=z1r..z2r..z3r..z4''r..z4r..z4'r..z5r..{left}z6r..cycle;
p1=z1l..z6l{right}..z5l..z4'l..z4l..z4''l..z3l..z2l..cycle;
(tim0,tim1-5)=subpath (0,4) of p0 intersectiontimes subpath (5,length p0) of p0;
(tim2,tim3-4)=subpath(0,3) of p1 intersectiontimes subpath(4,length p1) of p1;
tim4-2=xpart(subpath(2,4) of p0 intersectiontimes p1);
(tim5-5,tim6-4)=subpath(5,length p0) of p0 intersectiontimes subpath (4,length p1) of p1;
tim7=xpart(subpath(0,3) of p1 intersectiontimes subpath (4,length p1) of p1);
filldraw subpath(0,rundy(p0,(tim0,hair)).zpet) of p0
         ..subpath(rundy(p0,(tim1,hair)),length p0) of p0&cycle;
infill	 subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim4),rundy(p0,tim5).zpet) of p0
	 ..subpath(rundy(p1,tim6),length p1) of p1..cycle;
oblu:=f_obl;
infill subpath(rundy(p1,tim6).zpet,rundy(p1,tim7)) of p1..cycle;
penlabels(0,1,2,3,4,4',4'',5,6);
endchar;

iff known chars.greek_gamma:
bskchar "The Greek letter gamma";
beginchar(chars.greek_gamma,11u#,x_height#,desc_depth#); uni "0x03B3";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos0(hair,150);
pos1(stem,90); pos2(hair,0); pos3(hair,0); pos4(hair,-90); pos5(hair,180);
pos6(hair,180); pos7(hair,135); 
x1=.5[u,x2]; top y1r=h+o; lft x0r=u; y0=bar_height; z0'=(x0r,y0l);
x2=.75w; x3=w-2.5u; y3=-3/4d; y2=.5bar_height; bot y4r=-d; y3-y4=2(x3-x4);
.3[x5,x3]=x4; y5=y3;
x6r=x2r; y6=y2;
top y7r=h; rt x7=w-u; 
p0=z0r..z1r..z2r...z3r..z4r..z5r..z6r..{dir45}z7r;
p1=z7l{dir-135}..z6l..z5l..z4l..z3l...z2l..z1l..z0l;
(tim0,tim1-5)=subpath(0,3) of p0 intersectiontimes subpath(5,infinity) of p0;
(tim2,tim3-1)=subpath(0,2) of p1 intersectiontimes subpath (1,3) of p0;
(tim4-4,tim5-4)=subpath(4,infinity) of p0 intersectiontimes subpath(4,infinity) of p1;
filldraw subpath(0,rundy(p0,(tim0,.7(y7r-y2))).zpet) of p0
         ..subpath(rundy(p0,(tim1,.7(y7r-y2))),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),rundy(p0,tim4).zpet) of p0
	 ..subpath(rundy(p1,tim5),infinity) of p1
	 &z0l..z0'..cycle;
penlabels(0,1,2,3,4,5,6,7); labels(0');
math_fit(-bar_height#*slant-.5u#,0);
endchar;

iff known chars.greek_gamma_BB:
bskchar "The blackboard-bold Greek letter gamma";
beginchar(chars.greek_gamma_BB,11u#,x_height#,desc_depth#); uni "0x213D";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos0(hair,150);
pos1(stem,90); pos2(hair,0); pos3(hair,0); pos4(hair,-90); pos5(hair,180);
pos6(hair,180); pos7(hair,135); 
x1=.5[u,x2]; top y1r=h+o; lft x0r=u; y0=bar_height; z0'=(x0r,y0l);
x2=.75w; x3=w-2.5u; y3=-3/4d; y2=.5bar_height; bot y4r=-d; y3-y4=2(x3-x4);
.3[x5,x3]=x4; y5=y3;
x6r=x2r; y6=y2;
top y7r=h; rt x7=w-u; 
p0=z0r..z1r..z2r...z3r..z4r..z5r..z6r..{dir45}z7r;
p1=z7l{dir-135}..z6l..z5l..z4l..z3l...z2l..z1l..z0l;
(tim0,tim1-5)=subpath(0,3) of p0 intersectiontimes subpath(5,infinity) of p0;
(tim2,tim3-1)=subpath(0,2) of p1 intersectiontimes subpath (1,3) of p0;
(tim4-4,tim5-4)=subpath(4,infinity) of p0 intersectiontimes subpath(4,infinity) of p1;
filldraw subpath(0,rundy(p0,(tim0,.7(y7r-y2))).zpet) of p0
         ..subpath(rundy(p0,(tim1,.7(y7r-y2))),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(4,rundy(p0,tim4).zpet) of p0 shifted ((cap_stem-hair-currentbreadth)*left)
	 ..z1l..z0l&z0l..z0'..cycle;
infill subpath(rundy(p1,1),rundy(p1,tim2).zpet) of p1..subpath(rundy(p0,tim3),4) of p0..subpath(4,rundy(p0,6).zpet) of p0 shifted ((cap_stem-hair-currentbreadth)*left)..cycle;
penlabels(0,1,2,3,4,5,6,7); labels(0');
endchar;

iff known chars.greek_gamma_SS:
bskchar "The sans-serif Greek letter gamma";
beginchar(chars.greek_gamma_SS,11u#,x_height#,desc_depth#); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos0(hair,150);
pos1(stem,90); pos2(hair,0); pos3(hair,0); pos4(hair,-90); pos5(hair,180);
pos6(hair,180); pos7(hair,135); 
x1=.5[u,x2]; top y1r=h+o; lft x0r=u; y0=bar_height; z0'=(x0r,y0l);
x2=.75w; x3r=x6l; y3=-3/4d; y2=.5bar_height; bot y4r=-d; y3-y4=2(x3-x4);
.3[x5,x3]=x4; y5=y3;
x6r=x2r; y6=y2;
top y7r=h; rt x7=w-u; 
p0=z0r..z1r..z2r...z3r..z4r..z5r..z6r..{dir45}z7r;
p1=z7l{dir-135}..z6l..z5l..z4l..z3l...z2l..z1l..z0l;
(tim0,tim1-5)=subpath(0,3) of p0 intersectiontimes subpath(5,infinity) of p0;
(tim2,tim3-1)=subpath(0,2) of p1 intersectiontimes subpath (1,3) of p0;
(tim4-4,tim5-4)=subpath(4,infinity) of p0 intersectiontimes subpath(4,infinity) of p1;
filldraw subpath(0,rundy(p0,(tim0,.7(y7r-y2))).zpet) of p0
         ..subpath(rundy(p0,(tim1,.7(y7r-y2))),infinity) of p0
	 ..subpath(0,rundy(p1,1).zpet) of p1---z3r..z4r...z5r---z2l
	 ..subpath(rundy(p1,5),infinity) of p1..cycle;
penlabels(0,1,2,3,4,5,6,7); labels(0');
endchar;

iff known chars.greek_gamma_curved:
bskchar "The Greek letter gamma (curved version)";
beginchar(chars.greek_gamma_curved,11u#,x_height#,desc_depth#); uni "non";
italcorr x_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos0(stem,150);
pos1(hair,90); pos2(stem,0); pos3(.9stem,0); pos4(hair,-90); pos5(hair,180);
pos6(hair,180); pos7(hair,90); pos8(stem,0);
x1=.5[u,x2]; top y1r=h+o; lft x0r=u; y0=y1-stem; z0'=(x0r,y0l);
x3=x2=.5w-.5stem; y3=-2/3d; y2=bar_height; bot y4r=-d; y3-y4=4/3(x3-x4);
.3[x5,x3]=x4; y5=-1/2d; x6=.35[x2l,x8]; y6=y2;
x7=x8-stem; top y7r=.25[h,bar_height]; rt x8r=w-u; y8=y7-stem;
z8'=z8+.2stem*down+o*left; z8''=z8+.5(stem-currentbreadth)*dir45;
p0=z0r..z1r..z2r---z3r..z4r..z5r..z6r..{right}z7r..{down}z8r..z8'..{up}z8l;
p1=z8l{up}..{left}z7l..z6l..z5l..z4l..z3l---z2l..z1l..z0l;
(tim0,tim1-5)=subpath(0,3) of p0 intersectiontimes subpath(5,infinity) of p0;
(tim2,tim3-1)=p1 intersectiontimes subpath(1,3) of p0;
(tim4-4,tim5-5)=subpath(4,infinity) of p0 intersectiontimes subpath(5,infinity) of p1;
(tim6,tim7-5)=subpath(0,4) of p1 intersectiontimes subpath(5,infinity) of p1;
filldraw subpath(0,rundy(p0,(tim0,y7r-y2)).zpet) of p0
         ..subpath(rundy(p0,(tim1,y7r-y2)),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),rundy(p0,tim4).zpet) of p0
	 ..subpath(rundy(p1,tim5),infinity) of p1
	 &z0l..z0'..cycle;
oblu:=x3l-x5;
infill subpath(rundy(p1,tim6),rundy(p1,tim7).zpet) of p1..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(0',8',8'');
math_fit(-.5u#,ic#-3u#);
endchar;

iff known chars.greek_digamma:
bskchar "The Greek letter digamma";
beginchar(chars.greek_digamma,9u#,x_height#,desc_depth#); uni "0x03DD";
italcorr x_height#*slant-.5u#;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
pos1(hair,0); pos2(hair,0); pos3(curve,100);
pos3'(stem,90); pos4(stem,90); pos5(curve,90); pos5'(stem,80);
lft x1l=lft x2l=u; bot y1=-d; top y2=h-hair; top y3r=top y3'r=h; rt x3l=w-1.25u;
x3'=1/3[x2,x3]; x4=x1r; y4=.25bar_height; y5'r=y4r; y5=y5';
x5-x4=.85(x3-x2); x5'=1/3[x4,x5];
y2r:=y2r-stem+currentbreadth;
bskpoints(1,2,0,hair);
filldraw z1l---obl(2l,1l,3'r)---z3'r..{dir-10}z3r..{dir200}z3l..z3'l
         ---obl(2r,3'l,1r)---obl(4r,2r,5'r)---z5'r..{right}z5r..z5l{dir190}
	 ..z5'l---obl(4l,5'l,1r)---z1rr..cycle;
penlabels(1,2,3,3',4,5,5'); labels(1rr);
math_fit(0,-.5u#);
endchar;

iff known chars.greek_digamma_BB:
bskchar "The blackboard-bold Greek letter digamma";
beginchar(chars.greek_digamma_BB,9.5u#,x_height#,desc_depth#); uni "non";
italcorr x_height#*slant;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
pos1(.8cap_stem,0); pos2(.8cap_stem,0); pos3(curve,100);
pos3'(stem,90); pos4(stem,90); pos5(curve,90); pos5'(stem,80);
lft x1l=lft x2l=u; bot y1=-d; top y2=h-hair; top y3r=top y3'r=h; rt x3l=w-1.25u;
x3'=1/3[x2,x3]; x4=x1r; y4=.25bar_height; y5'r=y4r; y5=y5';
x5-x4=.85(x3-x2); x5'=1/3[x4,x5];
y2r:=y2r-stem+currentbreadth;
bskpoints(1,2,0,hair);
filldraw z1l---obl(2l,1l,3'r)---z3'r..{dir-10}z3r..{dir200}z3l..z3'l
         ---obl(2r,3'l,1r)---obl(4r,2r,5'r)---z5'r..{right}z5r..z5l{dir190}
	 ..z5'l---obl(4l,5'l,1r)---z1rr..cycle;
penlabels(1,2,3,3',4,5,5'); labels(1rr);
z100=(x2r,y2);
infill ifobl(2l,2r,1l,1r,,)---z1rr..z1l---cycle;
endchar;

iff known chars.greek_digamma_SS:
bskchar "The sans-serif Greek letter digamma";
beginchar(chars.greek_digamma_SS,9u#,x_height#,desc_depth#); uni "non";
italcorr x_height#*slant;
adjust_fit(cap_serif_fit#,0);
pickup tiny.nib;
pos1(hair,0); pos2(hair,0); pos3(curve,100);
pos3'(stem,90); pos4(stem,90); pos5(curve,90); pos5'(stem,80);
lft x1l=lft x2l=u; bot y1=-d; top y2=h-.2hair; top y3r=top y3'r=h; rt x3l=w-1.25u;
x3'=1/3[x2,x3]; x4=x1r; y4=.25bar_height; y5'r=y4r; y5=y5';
x5-x4=.85(x3-x2); x5'=1/3[x4,x5];
y2r:=y2r-stem+currentbreadth;
bskpoints(1,2,0,hair);
filldraw z1l---obl(2l,1l,3'r)---z3'r..{dir-10}z3r..{dir200}z3l..z3'l
         ---obl(2r,3'l,1r)---obl(4r,2r,5'r)---z5'r..{right}z5r..z5l{dir190}
	 ..z5'l---obl(4l,5'l,1r)---z1rr..cycle;
penlabels(1,2,3,3',4,5,5'); labels(1rr);
endchar;

iff known chars.greek_delta:
bskchar "The Greek letter delta";
beginchar(chars.greek_delta,9u#,asc_height#,0); uni "0x03B4";
italcorr .5[x_height#,asc_height#]*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,0); pos2(hair,90); pos3(stem,180); pos4(hair,270); pos5(hair,180);
pos6(stem,180); pos7(hair,180); pos8(hair,90); pos9(stem,0);
lft x1l=u; rt x3l=w-u; y1=y3=.5y4; .5[x1,x3]=x2; x4=x2-stem;
bot y2l=-o; y4l=.9x_height; z5l=z3r; y6=x_height; x6=.25[x3,x4];
y7=h-curve; x7=x4; top y8r=h+o; x8=.5[x4,x6];
rt x9r=w-u; y9''-y8r=2/3(x8-x9);
z9'=z9+.2stem*down+o*left; z9''=z9+.5(stem-currentbreadth)*dir45;
p0=z3r..z6r..z7r..{right}z8r..z9''..z9r{down}..z9'..z9l..{left}z8l;
p1=z8l{left}....z7l..z6l..z3l..z2l..{up}z1l..z4l..z5l;
z0=bsktouch(subpath(0,2) of p0,left,subpath(5,infinity) of p1,right);
tim0=xpart(subpath(0,2) of p0 intersectiontimes (z0--(w,y0)));
tim1-5=xpart(subpath(5,infinity) of p1 intersectiontimes (z0--(x4,y0)));
filldraw subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0..cycle;
infill z1r{up}..z4r..z5l..z2r..{up}cycle;
penlabels(1,2,3,4,5,6,7,8,9); labels(9',9'');
math_fit(mft,u#);
endchar;

iff known chars.greek_delta_BB:
bskchar "The blackboard-bold Greek letter delta";
beginchar(chars.greek_delta_BB,9.5u#,asc_height#,0); uni "non";
italcorr .5[x_height#,asc_height#]*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(cap_stem,0); pos2(hair,90); pos3(cap_stem,180); pos4(hair,270); pos5(hair,180);
pos6(.8cap_stem,180); pos7(hair,180); pos8(hair,90); pos9(stem,0);
lft x1l=u; rt x3l=w-u; y1=y3=.5y4; .5[x1,x3]=lft x2; x4=x2-stem;
bot y2l=-o; y4l=.9x_height; z5l=z3r; y6=x_height; x6=.25[x3,x4];
y7=h-curve; x7=x4; top y8r=h+o; x8=.5[x4,x6];
rt x9r=w-u; y9''-y8r=2/3(x8-x9);
z9'=z9+.2stem*down+o*left; z9''=z9+.5(stem-currentbreadth)*dir45;
p0=z3r..z6r..z7r..{right}z8r..z9''..z9r{down}..z9'..z9l..{left}z8l;
p1=z8l{left}....z7l..z6l..z3l..z2l..{up}z1l..z4l..z5l;
z0=bsktouch(subpath(0,2) of p0,left,subpath(5,infinity) of p1,right);
tim0=xpart(subpath(0,2) of p0 intersectiontimes (z0--(w,y0)));
tim1-5=xpart(subpath(5,infinity) of p1 intersectiontimes (z0--(x4,y0)));
filldraw subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0..cycle;
infill z1r{up}..z4r..z5l..z2r..{up}cycle;
p100=subpath(4,6) of p1;
p101=subpath(0,3) of (z4r..{down}z1r..z2r..z5l..cycle);
p102=subpath(1,4) of p1;
p103=subpath(0,2) of p0;
z100=bsktouch(p100,up,p101,down);
z101=bsktouch(p100,down,p101,up);
z102=bsktouch(p102,up,p101,down);
z103=bsktouch(p102,left,p103,right);
tim100=xpart(p100 intersectiontimes (z100--(x100,y2l-5)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y1)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y4l+5)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y1)));
tim104=xpart(p102 intersectiontimes (z102--(if boldmath:x2 else:x102 fi,y2l-5)));
tim105=xpart(p101 intersectiontimes (z102--(if boldmath:x2 else:x102 fi,y1)));
tim106=xpart(p102 intersectiontimes (z103--(w,y103)));
tim107=xpart(p103 intersectiontimes (z103--(0,y103)));
tim108=xpart(p103 intersectiontimes ((x2,y3)--(w,y3)));
oblu:=bbw;
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103),rundy(p101,tim101).zpet) of p101..cycle;
infill subpath(rundy(p102,tim106),rundy(p102,tim104).zpet) of p102
       ..subpath(rundy(p101,tim105),rundy(p101,3).zpet) of p101
       ..subpath(rundy(p103,tim108),rundy(p103,tim107).zpet) of p103..cycle;
penlabels(1,2,3,4,5,6,7,8,9); labels(9',9'',100,101,102,103);
endchar;

iff known chars.greek_delta_SS:
bskchar "The sans-serif Greek letter delta";
beginchar(chars.greek_delta_SS,9u#,asc_height#,0); uni "non";
italcorr .5[x_height#,asc_height#]*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,0); pos2(hair,90); pos3(stem,180); pos4(hair,270); pos5(hair,180);
pos6(stem,180); pos7(hair,180); pos8(hair,90); pos9(hair,90);
lft x1l=u; rt x3l=w-u; y1=y3=.5y4; .5[x1,x3]=x2; x4=x2-stem;
bot y2l=-o; y4l=.9x_height; z5l=z3r; y6=x_height; x6=.25[x3,x4];
y7=h-curve; x7=x4; top y8r=h+o; x8=.5[x4,x6];
rt x9r=w-u; top y9r=bot y8r;
p0=z3r..z6r..z7r..{right}z8r---z9r..z9l---z8l;
p1=z8l{left}....z7l..z6l..z3l..z2l..{up}z1l..z4l..z5l;
z0=bsktouch(subpath(0,2) of p0,left,subpath(5,infinity) of p1,right);
tim0=xpart(subpath(0,2) of p0 intersectiontimes (z0--(w,y0)));
tim1-5=xpart(subpath(5,infinity) of p1 intersectiontimes (z0--(x4,y0)));
filldraw subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0..cycle;
infill z1r{up}..z4r..z5l..z2r..{up}cycle;
penlabels(1,2,3,4,5,6,7,8,9);
endchar;

iff known chars.greek_epsilon:
bskchar "The Greek letter epsilon";
beginchar(chars.greek_epsilon,7.2u#,x_height#,0); uni "0x03F5";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,0); pos2(hair,90); pos3(stem,180);
pos4(hair,-90); pos5(vair,-45);
pos6(hair,90); pos7(hair,90);
rt x1=w-u; top y2r=h+o; x2=.5w+u; lft x3r=u; 
y3=bar_height-.5stem; y1=.35[x_height,bar_height];
x4=x2+o; bot y4r=-o;
rt x5=w-u; y5=.15bar_height; 
y6=y7=y3; x6=x3; x7=x1l;
z1'=z1+.2stem*down+o*left; z1''=z1+.5(stem-currentbreadth)*dir45;
bskpoints(6,7,hair,hair);
p0=z5l..z4l..z3l{up}..z2l..{down}z1l..z1'..z1r..z1''..z2r..{down}z3r..z4r..z5r;
p1=z6l---z7ll..z7r---z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2-1,tim3)=subpath(1,infinity) of p1 intersectiontimes p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),infinity) of p0..cycle;
penlabels(0,1,2,3,4,5,6,7); labels(1',1'',7ll);
math_fit(mft,ic#-u#);
endchar;

iff known chars.greek_epsilon_BB:
bskchar "The blackboard-bold Greek letter epsilon";
beginchar(chars.greek_epsilon_BB,7.2u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,0); pos2(hair,90); pos3(cap_stem,180);
pos4(hair,-90); pos5(vair,-45);
pos6(hair,90); pos7(hair,90);
rt x1=w-u; top y2r=h+o; x2=.5w+u; lft x3r=u; 
y3=bar_height-.5stem; y1=.35[x_height,bar_height];
x4=x2+o; bot y4r=-o;
rt x5=w-u; y5=.15bar_height; 
y6=y7=y3; x6=x3; x7=x1l;
z1'=z1+.2stem*down+o*left; z1''=z1+.5(stem-currentbreadth)*dir45;
bskpoints(6,7,hair,hair);
p0=z5l..z4l..z3l{up}..z2l..{down}z1l..z1'..z1r..z1''..z2r..{down}z3r..z4r..z5r;
p1=z6l---z7ll..z7r---z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2-1,tim3)=subpath(1,infinity) of p1 intersectiontimes p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),infinity) of p0..cycle;
p100=subpath(8,10) of p0;
p101=subpath(1,3) of p0;
z100=bsktouch(p100,up,p101,down);
z101=bsktouch(p100,down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y4r-u-5)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y3)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y2r+u+5)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y3)));
oblu:=bbw;
infill subpath(rundy(p100,tim102),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),rundy(p101,tim103).zpet) of p101..cycle;
penlabels(0,1,2,3,4,5,6,7); labels(1',1'',7ll,100,101);
endchar;

iff known chars.greek_epsilon_SS:
bskchar "The sans-serif Greek letter epsilon";
beginchar(chars.greek_epsilon_SS,7.2u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(hair,90); pos2(hair,90); pos3(stem,180);
pos4(hair,-90); pos5(vair,-45);
pos6(hair,90); pos7(hair,90);
rt x1=w-u; top y2r=h+o; x2=.5w+u; lft x3r=u; top y1r=y2r;
y3=bar_height-.5stem; 
x4=x2+o; bot y4r=-o;
rt x5=w-u; y5=.15bar_height; 
y6=y7=y3; x6=x3; x7=x1l;
bskpoints(6,7,hair,hair);
p0=z5l..z4l..z3l{up}..z2l...{right}z1l..z1r{left}...z2r..{down}z3r..z4r..z5r;
p1=z6l---z7ll..z7r---z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2-1,tim3)=subpath(1,infinity) of p1 intersectiontimes p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),infinity) of p0..cycle;
penlabels(0,1,2,3,4,5,6,7); labels(7ll);
endchar;

iff known chars.greek_epsilon_turned:
bskchar "The turned Greek letter epsilon";
beginchar(chars.greek_epsilon_turned,7.2u#,x_height#,0); uni "non";
italcorr x_height#*slant-u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,180); pos2(hair,-90); pos3(stem,0);
pos4(hair,90); pos5(vair,135);
pos6(hair,-90); pos7(hair,-90);
lft x1=u; bot y2r=-o; x2=.5w-u; rt x3r=w-u; 
y3=x_height-bar_height+.5stem; y1=x_height-.35[x_height,bar_height];
x4=x2-o; top y4r=h+o;
lft x5=u; y5=x_height-.15bar_height; 
y6=y7=y3; x6=x3; x7=x1l;
z1'=z1+.2stem*up+o*right; z1''=z1+.5(stem-currentbreadth)*dir225;
bskpoints(6,7,hair,hair);
p0=z5l..z4l..z3l{down}..z2l..{up}z1l..z1'..z1r..z1''..z2r..{up}z3r..z4r..z5r;
p1=z6l---z7ll..z7r---z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2-1,tim3)=subpath(1,infinity) of p1 intersectiontimes p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),infinity) of p0..cycle;
penlabels(0,1,2,3,4,5,6,7); labels(1',1'',7ll);
math_fit(-.5u#,.5u#);
endchar;

iff known chars.greek_epsilon_turned_BB:
bskchar "The blackboard-bold turned Greek letter epsilon";
beginchar(chars.greek_epsilon_turned_BB,7.2u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,180); pos2(hair,-90); pos3(cap_stem,0);
pos4(hair,90); pos5(vair,135);
pos6(hair,-90); pos7(hair,-90);
lft x1=u; bot y2r=-o; x2=.5w-u; rt x3r=w-u; 
y3=x_height-bar_height+.5stem; y1=x_height-.35[x_height,bar_height];
x4=x2-o; top y4r=h+o;
lft x5=u; y5=x_height-.15bar_height; 
y6=y7=y3; x6=x3; x7=x1l;
z1'=z1+.2stem*up+o*right; z1''=z1+.5(stem-currentbreadth)*dir225;
bskpoints(6,7,hair,hair);
p0=z5l..z4l..z3l{down}..z2l..{up}z1l..z1'..z1r..z1''..z2r..{up}z3r..z4r..z5r;
p1=z6l---z7ll..z7r---z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2-1,tim3)=subpath(1,infinity) of p1 intersectiontimes p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),infinity) of p0..cycle;
p100=subpath(8,10) of p0;
p101=subpath(1,3) of p0;
z100=bsktouch(p100,down,p101,up);
z101=bsktouch(p100,up,p101,down);
tim100=xpart(p100 intersectiontimes (z100--(x100,y4r+u+5)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y3)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y2r-u-5)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y3)));
oblu:=bbw;
infill subpath(rundy(p100,tim102),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),rundy(p101,tim103).zpet) of p101..cycle;
penlabels(0,1,2,3,4,5,6,7); labels(1',1'',7ll,100,101);
endchar;

iff known chars.greek_epsilon_turned_SS:
bskchar "The sans-serif turned Greek letter epsilon";
beginchar(chars.greek_epsilon_turned_SS,7.2u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(hair,-90); pos2(hair,-90); pos3(stem,0);
pos4(hair,90); pos5(vair,135);
pos6(hair,-90); pos7(hair,-90);
lft x1=u; bot y2r=-o; x2=.5w-u; rt x3r=w-u; bot y1r=y2r;
y3=x_height-bar_height+.5stem;
x4=x2-o; top y4r=h+o;
lft x5=u; y5=x_height-.15bar_height; 
y6=y7=y3; x6=x3; x7=x1l;
bskpoints(6,7,hair,hair);
p0=z5l..z4l..z3l{down}..z2l...{left}z1l..z1r{right}...z2r..{up}z3r..z4r..z5r;
p1=z6l---z7ll..z7r---z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2-1,tim3)=subpath(1,infinity) of p1 intersectiontimes p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),infinity) of p0..cycle;
penlabels(0,1,2,3,4,5,6,7); labels(7ll);
endchar;

iff known chars.greek_varepsilon:
bskchar "The Greek letter epsilon---alternative";
beginchar(chars.greek_varepsilon,8u#,x_height#,0); uni "0x03B5";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,0); pos2(hair,90); pos3(.5[hair,stem],180);
pos4(hair,0); pos4'(hair,60); pos4''(.5[hair,stem],-150);
pos5(curve,180); pos6(hair,-90); pos7(vair,-45);
rt x1=w-u; top y2r=h+o; x2=.5w+u; lft x3r=1.75u; 
y3=.65[x_height,bar_height]; y1=.5[x_height,bar_height];
1/3[y4,y3]=bar_height; x4=x2-hair; y5=.5bar_height; 
lft x5r=u; x6=x2+o; bot y6r=-o;
rt x7=w-u; y7=.25bar_height; 
x4'=x4''=.5[x3,x4]; .5[y4',y4'']=y4; y4'-y4''=.5(x4-x3);
z1'=z1+.2curve*down+o*left; z1''=z1+.5(curve-currentbreadth)*dir45;
p0=z7l..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..{down}z5r..z6r..z7r;
(tim0,tim1-7)=subpath(0,6) of p1 intersectiontimes subpath (7,infinity) of p1;
(tim2,tim3-5)=p0 intersectiontimes subpath(5,7) of p1;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,infinity) of p0;
(tim6,tim7-4)=subpath(0,4) of p0 intersectiontimes subpath(4,infinity) of p0;
filldraw subpath(0,rundy(p1,(tim0,hair)).zpet) of p1
         ..subpath(rundy(p1,(tim1,hair)),infinity) of p1
	 ..{direction infinity of p1}z7r..{direction 0 of p0}z7l
	 ..subpath(0,rundy(p0,tim2).zpet) of p0
	 ..subpath(rundy(p1,tim3),rundy(p1,(tim4,1.2hair)).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); labels(1',1'');
math_fit(mft,ic#-u#);
endchar;

iff known chars.greek_varepsilon_BB:
bskchar "The blackboard-bold Greek letter epsilon---alternative";
beginchar(chars.greek_varepsilon_BB,8u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,0); pos2(hair,90); pos3(.5[hair,cap_stem],180);
pos4(hair,0); pos4'(hair,60); pos4''(.5[hair,stem],-150);
pos5(cap_stem,180); pos6(hair,-90); pos7(vair,-45);
rt x1=w-u; top y2r=h+o; x2=.5w+u; lft x3r=1.75u; 
y3=.65[x_height,bar_height]; y1=.5[x_height,bar_height];
1/3[y4,y3]=bar_height; x4=x2; y5=.5bar_height; 
lft x5r=u; x6=x2+o; bot y6r=-o;
rt x7=w-u; y7=.25bar_height; 
x4'=x4''=.5[x3,x4]; .5[y4',y4'']=y4; y4'-y4''=.5(x4-x3);
z1'=z1+.2curve*down+o*left; z1''=z1+if boldmath: .75 else: .5\\fi(curve-currentbreadth)*dir45;
p0=z7l..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..{down}z5r..z6r..z7r;
(tim0,tim1-7)=subpath(0,6) of p1 intersectiontimes subpath (7,infinity) of p1;
(tim2,tim3-5)=p0 intersectiontimes subpath(5,7) of p1;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,infinity) of p0;
(tim6,tim7-4)=subpath(0,4) of p0 intersectiontimes subpath(4,infinity) of p0;
filldraw subpath(0,rundy(p1,(tim0,hair)).zpet) of p1
         ..subpath(rundy(p1,(tim1,hair)),infinity) of p1
	 ..{direction infinity of p1}z7r..{direction 0 of p0}z7l
	 ..subpath(0,rundy(p0,tim2).zpet) of p0
	 ..subpath(rundy(p1,tim3),rundy(p1,(tim4,1.2hair)).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;
p100=subpath(8,10) of p1;
p101=subpath(1,4) of p0;
p102=subpath(4,6) of p1;
p103=subpath(5,7) of p0;
z100=bsktouch(p100,up,p101,down);
z101=bsktouch(p102,down,p103,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y6r-u-5)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y5)));
tim102=xpart(p100 intersectiontimes ((0,y4)--(x4',y4)));
tim103=xpart(p101 intersectiontimes ((0,y4)--(x4',y4)));
tim104=xpart(p102 intersectiontimes (z101--(x101,y2r+u+5)));
tim105=xpart(p103 intersectiontimes (z101--(x101,y3)));
tim106=xpart(p102 intersectiontimes ((0,y4)--(x4',y4)));
tim107=xpart(p103 intersectiontimes ((0,y4)--(x4',y4)));
oblu:=bbw;
infill subpath(rundy(p100,tim102),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),rundy(p101,tim103).zpet) of p101..cycle;
oblu:=.5bbw;
infill subpath(rundy(p102,tim104),rundy(p102,tim106).zpet) of p102
       ..subpath(rundy(p103,tim107),rundy(p103,tim105).zpet) of p103..cycle;
penlabels(0,1,2,3,4,4',4'',5,6,7); labels(1',1'',100,101);
endchar;

iff known chars.greek_varepsilon_SS:
bskchar "The sans-serif Greek letter epsilon---alternative";
beginchar(chars.greek_varepsilon_SS,8u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,0); pos2(hair,90); pos3(.5[hair,stem],180);
pos4(hair,0); pos4'(hair,60); pos4''(.5[hair,stem],-150);
pos5(curve,180); pos6(hair,-90); pos7(vair,-45);
rt x1=w-u; top y2r=h+o; x2=.5w+u; lft x3r=1.75u; 
y3=.65[x_height,bar_height]; y1=.5[x_height,bar_height];
1/3[y4,y3]=bar_height; x4=x2-hair; y5=.5bar_height; 
lft x5r=u; x6=x2+o; bot y6r=-o;
rt x7=w-u; y7=.25bar_height; 
x4'=x4''=.5[x3,x4]; .5[y4',y4'']=y4; y4'-y4''=.5(x4-x3);
z1'=z1+.2curve*down+o*left; z1''=z1+.5(curve-currentbreadth)*dir45;
p0=z7l..z6l..z5l..z4'l..z4l{down}..z4''l..z3l{up}..z2l..{down}z1l;
p1=z1l{down}..z1r{up}..z2r..{down}z3r..z4''r..{up}z4r..z4'r..{down}z5r..z6r..z7r;
(tim0,tim1-5)=subpath(0,6) of p1 intersectiontimes subpath (5,infinity) of p1;
(tim2,tim3-3)=p0 intersectiontimes subpath(3,5) of p1;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,infinity) of p0;
(tim6,tim7-4)=subpath(0,4) of p0 intersectiontimes subpath(4,infinity) of p0;
filldraw subpath(0,rundy(p1,(tim0,hair)).zpet) of p1
         ..subpath(rundy(p1,(tim1,hair)),infinity) of p1
	 ..{direction infinity of p1}z7r..{direction 0 of p0}z7l
	 ..subpath(0,rundy(p0,tim2).zpet) of p0
	 ..subpath(rundy(p1,tim3),rundy(p1,(tim4,1.2hair)).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); labels(1',1'');
endchar;

iff known chars.greek_zeta:
bskchar "The Greek letter zeta";
beginchar(chars.greek_zeta,9u#,asc_height#,.5desc_depth#); uni "0x03B6";
italcorr asc_height#*slant-1.25u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(hair,90); pos2(stem,180); pos0(hair,0); pos7(hair,180);
pos3(curve,240); pos4(hair,180); pos5(hair,100); pos6(stem,0);
pos8(hair,-90);
lft x2r=u; top y1r=h-stem; y2=x_height-.5d; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0r=w-2u; y0=y1-.5stem; x3=.5w; y3=.5bar_height-.5d;
x6=x5-stem; y6=y5+.5stem; x7=x1-stem; top y7=h;
x8=.5[x1,x0]; .5[y8,y1]=y0;
z6'=z6+.2stem*up+o*left; z6''=z6+.5(stem-currentbreadth)*dir-45;
p0=z7r{down}..z8r..z0r..z1r..z2r..z3r..z4r..z5r..z6''..z6'..z6l;
p1=z6l..z5l..z4l..z3l..z2l..z1l..z0l..z8l..{up}z7l;
(tim0,tim1-1)=p0 intersectiontimes subpath(1,infinity) of p0;
(tim2,tim3)=p1 intersectiontimes subpath (0,1) of p0;
(tim4-1,tim5-7)=subpath(1,infinity) of p0 intersectiontimes subpath(7,infinity) of p1;
(tim6-7,tim7)=subpath(7,infinity) of p1 intersectiontimes subpath(0,6) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p0,tim1),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),rundy(p0,(tim4,hair)).zpet) of p0
	 ..subpath(rundy(p1,(tim5,hair)),infinity) of p1..cycle;
infill subpath(rundy(p1,tim7),rundy(p1,tim6).zpet) of p1..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(0',0'',6',6'');
math_fit(mft-.5u#,0);
endchar;

iff known chars.greek_zeta_BB:
bskchar "The blackboard-bold Greek letter zeta";
beginchar(chars.greek_zeta_BB,9u#,asc_height#,.5desc_depth#); uni "non";
italcorr asc_height#*slant-1.25u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(hair,90); pos2(.8cap_stem,180); pos0(hair,0); pos7(hair,180);
pos3(cap_stem,240); pos4(hair,180); pos5(hair,100); pos6(stem,0);
pos8(hair,-90);
lft x2r=u; top y1r=h-stem; y2=x_height-.5d; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0r=w-2u; y0=y1-.5stem; x3=.5w; top y3=.5bar_height-.5d+.25cap_stem;
x6=x5-stem; y6=y5+.5stem; x7=x1-stem; top y7=h;
x8=.5[x1,x0]; .5[y8,y1]=y0;
z6'=z6+.2stem*up+o*left; z6''=z6+.5(stem-currentbreadth)*dir-45;
p0=z7r{down}..z8r..z0r..z1r..z2r..z3r..z4r..z5r..z6''..z6'..z6l;
p1=z6l..z5l..z4l..z3l..z2l..z1l..z0l..z8l..{up}z7l;
(tim0,tim1-1)=p0 intersectiontimes subpath(1,infinity) of p0;
(tim2,tim3)=p1 intersectiontimes subpath (0,1) of p0;
(tim4-1,tim5-7)=subpath(1,infinity) of p0 intersectiontimes subpath(7,infinity) of p1;
(tim6-7,tim7)=subpath(7,infinity) of p1 intersectiontimes subpath(0,6) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p0,tim1),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),rundy(p0,(tim4,hair)).zpet) of p0
	 ..subpath(rundy(p1,(tim5,hair)),infinity) of p1..cycle;
infill subpath(rundy(p1,tim7),rundy(p1,tim6).zpet) of p1..cycle;
p100=subpath(3,6) of p0;
p101=subpath(2,5) of p1;
z100=bsktouch(p100,dir15,p101,dir-135);
z101=bsktouch(p100,dir-45,p101,dir135);
tim100=xpart(p100 intersectiontimes (z100--(x100,y4)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y2)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y7)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2)));
oblu:=bbw;
infill subpath(rundy(p100,tim102),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),rundy(p101,tim103).zpet) of p101..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(0',0'',6',6'',100,101);
endchar;

iff known chars.greek_zeta_SS:
bskchar "The sans-serif Greek letter zeta";
beginchar(chars.greek_zeta_SS,9u#,asc_height#,.5desc_depth#); uni "non";
italcorr asc_height#*slant-1.25u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(hair,90); pos2(stem,180); pos0(hair,0); pos7(hair,180);
pos3(curve,240); pos4(hair,180); pos5(hair,100); pos6(hair,90);
pos8(hair,-90);
lft x2r=u; top y1r=h-stem; y2=x_height-.5d; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0r=w-2u; y0=y1-.5stem; x3=.5w; y3=.5bar_height-.5d;
x6=x5-stem; y6=y5; x7=x1-stem; top y7=h;
x8=.5[x1,x0]; .5[y8,y1]=y0;
p0=z7r{down}..z8r..z0r..z1r..z2r..z3r..z4r..z5r---z6r;
p1=z6l---z5l..z4l..z3l..z2l..z1l..z0l..z8l..{up}z7l;
(tim0,tim1-1)=p0 intersectiontimes subpath(1,infinity) of p0;
(tim2,tim3)=p1 intersectiontimes subpath (0,1) of p0;
(tim4-1,tim5-7)=subpath(1,infinity) of p0 intersectiontimes subpath(7,infinity) of p1;
(tim6-7,tim7)=subpath(7,infinity) of p1 intersectiontimes subpath(0,6) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p0,tim1),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),rundy(p0,(tim4,hair)).zpet) of p0
	 ..subpath(rundy(p1,(tim5,hair)),infinity) of p1..cycle;
infill subpath(rundy(p1,tim7),rundy(p1,tim6).zpet) of p1..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(0',0'');
endchar;

iff known chars.greek_eta:
bskchar "The Greek letter eta";
beginchar(chars.greek_eta,9.5u#,x_height#,desc_depth#); uni "0x03B7";
italcorr x_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[];
pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0);
pos5(stem,180); pos6(stem,180); pos7(hair,-90);
top y2r=x_height+o; 
x3=x4; lft x1l=.5u; lft x3=1/3w;
y3=y1-hair=bar_height; 
z2=z1+whatever*dir70; y4=hair; z4'=(x4r,y4r-hair);
y5=y3; y6=-d; rt x5l=w-u; x6=x5; x7=.55[x5l,x3r]; top y7r=h+o;
bskpoints(5,6,hair,hair);
p0=z1l{z1-z4}..z2l..z3l---z4l...z4'...z4r---z3r..z7r..z5r
   ---z6r..z6ll---z5l..z7l..z3l;
p1=z4r---z3r..z2r..{z4-z1}z1r;
(tim0-7,tim1)=subpath (7,infinity) of p0 intersectiontimes p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,8',9,10); labels(6ll);
math_fit(-u#,.5u#);
endchar;

iff known chars.greek_eta_BB:
bskchar "The blackboard-bold Greek letter eta";
beginchar(chars.greek_eta_BB,9.5u#,x_height#,desc_depth#); uni "non";
italcorr x_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[];
pos1(vair,180); pos2(hair,90); pos3(.8cap_stem,0); pos4(.8cap_stem,0);
pos5(.8cap_stem,180); pos6(.8cap_stem,180); pos7(hair,-90);
top y2r=x_height+o; 
x3=x4; lft x1l=.5u; lft x3=1/3w;
y3=y1-hair=bar_height; 
z2=z1+whatever*dir70; y4=hair; z4'=(x4r,y4r-hair);
y5=y3; y6=-d; rt x5l=w-u; x6=x5; x7=.55[x5l,x3r]; top y7r=h+o;
bskpoints(5,6,hair,hair);
p0=z1l{z1-z4}..z2l..z3l---z4l...z4'...z4r---z3r..z7r..z5r
   ---z6r..z6ll---z5l..z7l..z3l;
p1=z4r---z3r..z2r..{z4-z1}z1r;
(tim0-7,tim1)=subpath (7,infinity) of p0 intersectiontimes p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),infinity) of p1..cycle;
p100=subpath(1,3) of p0;
p101=subpath(0,2) of p1;
p102=subpath(7,9) of p0;
p103=subpath(10,12) of p0;
z100=bsktouch(p100,dir45,p101,dir-135);
z101=bsktouch(p102,dir45,p103,dir-135);
tim100=xpart(p100 intersectiontimes (z100--z1));
tim101=xpart(p101 intersectiontimes (z100--(x100,y2r+u+5)));
tim102=xpart(p102 intersectiontimes (z101--(x101-1,y5)));
tim103=xpart(p103 intersectiontimes (z101--(x101-1,y2r+u+5)));
oblu:=bbw;
infill subpath(rundy(p100,tim100),infinity) of p100..z4'
       ..subpath(0,rundy(p101,tim101).zpet) of p101..cycle;
infill subpath(rundy(p102,tim102),infinity) of p102
       ..subpath(0,rundy(p103,tim103).zpet) of p103..cycle;
penlabels(1,2,3,4,5,6,7,8,8',9,10); labels(6ll,100,101);
endchar;

iff known chars.greek_eta_SS:
bskchar "The sans-serif Greek letter eta";
beginchar(chars.greek_eta_SS,9.5u#,x_height#,desc_depth#); uni "non";
italcorr x_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[];
pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0);
pos5(stem,180); pos6(stem,180); pos7(hair,-90);
top y2r=x_height+o; 
x3=x4; lft x1l=.5u; lft x3=1/3w;
y3=y1-hair=bar_height; 
z2=z1+whatever*dir70; y4=hair; z4'=(x4r,y4r-hair);
y5=y3; y6=-d; rt x5l=w-u; x6=x5; x7=.55[x5l,x3r]; top y7r=h+o;
bskpoints(5,6,hair,hair);
p0=z2l{right}..z3l---z4l...z4'...z4r---z3r..z7r..z5r
   ---z6r..z6ll---z5l..z7l..z3l;
p1=z4r---z3r..{left}z2r;
(tim0-7,tim1)=subpath (7,infinity) of p0 intersectiontimes p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,8',9,10); labels(6ll);
endchar;

iff known chars.greek_heta:
bskchar "The Greek letter heta";
beginchar(chars.greek_heta,8u#,x_height#,0); uni "0x0371";
italcorr x_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[];
pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0);
pos5(bar,90); pos6(bar,90);
top y2r=x_height+o; 
x3=x4; lft x1l=.5u; lft x3=3u;
y3=y1-hair=y5=y6=bar_height; 
z2=z1+whatever*dir70; y4=hair; z4'=(x4r,y4r-hair);
x5=x3r; rt x6=w-u;
p0=z1l{z1-z4}..z2l..z3l---z4l...z4'...z4r---obl(5l,4r,6l)---z6l..z6r---z5r+oblu*right;
p1=z4r---z3r..z2r..{z4-z1}z1r;
filldraw p0..subpath(rundy(p1,1),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6); labels(4');
math_fit(-u#,.5u#);
endchar;

iff known chars.greek_heta_BB:
bskchar "The blackboard-bold Greek letter heta";
beginchar(chars.greek_heta_BB,8u#,x_height#,0); uni "non";
italcorr x_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[];
pos1(vair,180); pos2(hair,90); pos3(.8cap_stem,0); pos4(.8cap_stem,0);
pos5(bar,90); pos6(bar,90);
top y2r=x_height+o; 
x3=x4; lft x1l=.5u; lft x3=3u;
y3=y1-hair=y5=y6=bar_height; 
z2=z1+whatever*dir70; y4=cap_hair; z4'=(x4r,y4r-hair);
x5=x3r; rt x6=w-u;
p0=z1l{z1-z4}..z2l..z3l---z4l...z4'...z4r---obl(5l,4r,6l)---z6l..z6r---z5r+oblu*right;
p1=z4r---z3r..z2r..{z4-z1}z1r;
filldraw p0..subpath(rundy(p1,1),infinity) of p1..cycle;
p100=subpath(1,3) of p0;
p101=subpath(0,2) of p1;
z100=bsktouch(p100,dir45,p101,dir-135);
tim100=xpart(p100 intersectiontimes (z100--z1));
tim101=xpart(p101 intersectiontimes (z100--(x100,y2r+u+5)));
oblu:=bbw;
infill subpath(rundy(p100,tim100),infinity) of p100..z4'
       ..subpath(0,rundy(p101,tim101).zpet) of p101..cycle;
penlabels(1,2,3,4,5,6); labels(4',100);
endchar;

iff known chars.greek_heta_SS:
bskchar "The sans-serif Greek letter heta";
beginchar(chars.greek_heta_SS,8u#,x_height#,0); uni "non";
italcorr x_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[];
pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0);
pos5(bar,90); pos6(bar,90);
top y2r=x_height+o; 
x3=x4; lft x1l=.5u; lft x3=3u;
y3=y1-hair=y5=y6=bar_height; 
z2=z1+whatever*dir70; y4=hair; z4'=(x4r,y4r-hair);
x5=x3r; rt x6=w-u;
p0=z2l{right}..z3l---z4l...z4'...z4r---obl(5l,4r,6l)---z6l..z6r---z5r+oblu*right;
p1=z4r---z3r..{left}z2r;
filldraw p0..subpath(rundy(p1,1),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6); labels(4');
endchar;

iff known chars.greek_eta_curved:
bskchar "The Greek letter eta (curved version)";
beginchar(chars.greek_eta_curved,9.5u#,x_height#,desc_depth#); uni "non";
italcorr x_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[];
pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0);
pos5(stem,180); pos6(stem,180); pos7(hair,-90); pos8(hair,-90);
pos8'(.5[hair,stem],-90);
top y2r=x_height+o; 
x3=x4; lft x1l=.5u; lft x3=1/3w;
y3=y1-hair=bar_height; 
z2=z1+whatever*dir70; y4=hair; z4'=(x4r,y4r-hair);
y5=y3; y6=-d+4/3(x8-x6); rt x5l=w-u; x6l=x5r; x7=.55[x5l,x3r]; top y7r=h+o;
x8=w; bot y8r=bot bot y8'r=-d; x8'=w+u;
p0=z1l{z1-z4}..z2l..z3l---z4l..z4'..z4r---z3r..z7r..{down}z5r
   ...z6r..{right}z8r..z8'r..z8'l..z8l{left}..z6l...{up}z5l..z7l..z3l;
p1=z4r---z3r..z2r..{z4-z1}z1r;
(tim0-7,tim1)=subpath (7,infinity) of p0 intersectiontimes p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,8',9,10);
math_fit(-u#,.5u#);
endchar;

charscription(9.5u,asc_height,0)(
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,0); pos2(hair,90); pos3(stem,180); pos4(hair,270);
pos5(hair,90); pos6(.5[hair,stem],90); pos7(hair,90);
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;
z5=z1+.25stem*down; z7=z3+.25stem*up; z6=.5[z5,z7];
p0=z5l..z6l..z7l;
p1=z5r..z6r..z7r;
p2=z1r{up}..z4r..{down}z3r..z2r..{up}z1r;
p3=z2r..{up}z1r..z4r..{down}z3r..z2r;
(tim0,tim1)=subpath(0,1) of p0 intersectiontimes p2;
(tim2-1,tim3)=subpath(1,2) of p0 intersectiontimes p2;
(tim4,tim5)=subpath(0,1) of p1 intersectiontimes p3;
(tim6-1,tim7)=subpath(1,2) of p1 intersectiontimes p3;
filldraw z1l{down}..z2l..{up}z3l..z4l..{down}cycle;
infill subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0
       ..subpath(rundy(p2,tim3),rundy(p2,tim1).zpet) of p2..cycle;
infill subpath(rundy(p1,tim4),rundy(p1,tim6).zpet) of p1
       .. reverse subpath(rundy(p3,tim5),rundy(p3,tim7).zpet) of p3
       ..cycle;
penlabels(1,2,3,4,5,6,7);
);

iff known chars.greek_theta:
bskchar "The Greek letter theta";
beginchar(chars.greek_theta,9.5u#,asc_height#,0); uni "0x03B8";
italcorr .75asc_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
math_fit(-.5asc_height#*slant,ic#-1.5u#);
endchar;

iff known chars.greek_theta_SS:
bskchar "The sans-serif Greek letter theta";
beginchar(chars.greek_theta_SS,9.5u#,asc_height#,0); uni "non";
italcorr .75asc_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
endchar;

iff known chars.greek_theta_BB:
bskchar "The blackboard-bold Greek letter theta";
beginchar(chars.greek_theta_BB,9.75u#,asc_height#,0); uni "non";
italcorr .75asc_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(cap_stem,0); pos2(hair,90); pos3(.8cap_stem,180); pos4(hair,270);
pos5(hair,90); pos6(.5[hair,stem],90); pos7(hair,90);
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;
z5=z1+.25stem*down; z7=z3+.25stem*up; z6=.5[z5,z7];
p0=z5l..z6l..z7l;
p1=z5r..z6r..z7r;
p2=z1r{up}..z4r..{down}z3r..z2r..{up}z1r;
p3=z2r..{up}z1r..z4r..{down}z3r..z2r;
(tim0,tim1)=subpath(0,1) of p0 intersectiontimes p2;
(tim2-1,tim3)=subpath(1,2) of p0 intersectiontimes p2;
(tim4,tim5)=subpath(0,1) of p1 intersectiontimes p3;
(tim6-1,tim7)=subpath(1,2) of p1 intersectiontimes p3;
filldraw z1l{down}..z2l..{up}z3l..z4l..{down}cycle;
infill subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0
       ..subpath(rundy(p2,tim3),rundy(p2,tim1).zpet) of p2..cycle;
infill subpath(rundy(p1,tim4),rundy(p1,tim6).zpet) of p1
       .. reverse subpath(rundy(p3,tim5),rundy(p3,tim7).zpet) of p3
       ..cycle;
p100:=z4r..z1r{down}..z2r..z3r..cycle;
p101:=reverse z4l..z1l{down}..z2l..z3l..cycle;
oblu:=1.25bbw;
z100=bsktouch(subpath(0,1) of p100,up,p101,down);
z101=bsktouch(subpath(1,2) of p100,down,p101,up);
z102=bsktouch(subpath(3,4) of p100,up,p101,down);
z103=bsktouch(subpath(2,3) of p100,down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y1)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4l+5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y1)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2l-5)));
tim104=xpart(p100 intersectiontimes (z102--(x102,y1)));
tim105=xpart(p101 intersectiontimes (z102--(x102,y4l+5)));
tim106=xpart(p100 intersectiontimes (z103--(x103,y1)));
tim107=xpart(p101 intersectiontimes (z103--(x103,y2l-5)));
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103).zpet,rundy(p101,tim101)) of p101..cycle;
infill subpath(rundy(p100,tim104).zpet,rundy(p100,tim106)) of p100
       ..subpath(rundy(p101,tim107),rundy(p101,tim105).zpet) of p101..cycle;
penlabels(1,2,3,4,5,6,7); labels(100,101,102,103);
endchar;

iff known chars.greek_vartheta:
bskchar "The Greek letter theta---alternative";
beginchar(chars.greek_vartheta,9u#,asc_height#,0); uni "0x03D1";
italcorr x_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0); pos5(hair,90);
pos6(curve,180); pos7(hair,-90);
pos8(hair,-30); pos8'(hair,30); pos9(hair,90); 
top y2r=x_height; bot y5l=-o; x5=.5[x4l,x6];
x3=x4l; lft x1l=.5u; x3l-x1r=max(curve,1.5u);
y2l-y1=1.5(x3-x1); y3=.35[y1,y2]; 
z2=z1+whatever*dir60;
y4-y5=y2-y3; rt x6l=w-1.75u; y6=bar_height; 
top y7=h+o; x7=x5; 
y8=2/3[x_height,h]; 1/4[x8,x6]=x7;
y9=.35[x_height,bar_height]; x9=w-u;
p0=z1r{up}..z2r..z3r..z4r..z5r..{up}z6r..{left}z7r..z8r..{z9-z3}z9r;
p1=z9l{z3-z9}..z8l..{right}z7l..{down}z6l..z5l..z4l..z3l..z2l..{down}z1l;
(tim0,tim1)=subpath(0,6) of p0 intersectiontimes subpath(0,1) of p1;
(tim2-2,tim3-7)=subpath(2,infinity) of p1 intersectiontimes subpath(7,infinity) of p0;
(tim4-2,tim5)=subpath (2,infinity) of p1 intersectiontimes subpath(0,1) of p1;
tim6=xpart(p0 intersectiontimes subpath (0,1) of p1);
tim7-7=ypart(subpath (0,6) of p0 intersectiontimes subpath(7,infinity) of p0);
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..{z9-z4}z9r..z9l{z4-z9}
	 ..subpath(rundy(p1,(tim4,hair)),infinity) of p1..cycle;
infill subpath (rundy(p0,tim6),rundy(p0,tim7).zpet) of p0..cycle;
penlabels(1,2,3,4,5,6,7,8,9);
math_fit(-bar_height#*slant+.25u#,ic#-u#);
endchar;

iff known chars.greek_vartheta_BB:
bskchar "The blackboard-bold Greek letter theta---alternative";
beginchar(chars.greek_vartheta_BB,10u#,asc_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0); pos5(hair,90);
pos6(cap_stem,180); pos7(hair,-90);
pos8(hair,-30); pos8'(hair,30); pos9(hair,90); 
top y2r=x_height; bot y5l=-o; rt x5=.5[x4l,x6];
x3=x4l; lft x1l=.5u; x3l-x1r=max(curve,1.5u);
y2l-y1=1.5(x3-x1); y3=.35[y1,y2]; 
z2=z1+whatever*dir60;
y4-y5=y2-y3; rt x6l=w-1.75u; y6=bar_height; 
top y7=h+o; x7=x5; 
y8=2/3[x_height,h]; 1/4[x8,x6]=x7;
y9=.35[x_height,bar_height]; x9=w-u;
p0=z1r{up}..z2r..z3r..z4r..z5r..{up}z6r..{left}z7r..z8r..{z9-z3}z9r;
p1=z9l{z3-z9}..z8l..{right}z7l..{down}z6l..z5l..z4l..z3l..z2l..{down}z1l;
(tim0,tim1)=subpath(0,6) of p0 intersectiontimes subpath(0,1) of p1;
(tim2-2,tim3-7)=subpath(2,infinity) of p1 intersectiontimes subpath(7,infinity) of p0;
(tim4-2,tim5)=subpath (2,infinity) of p1 intersectiontimes subpath(0,1) of p1;
tim6=xpart(p0 intersectiontimes subpath (0,1) of p1);
tim7-7=ypart(subpath (0,6) of p0 intersectiontimes subpath(7,infinity) of p0);
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..{z9-z4}z9r..z9l{z4-z9}
	 ..subpath(rundy(p1,(tim4,hair)),infinity) of p1..cycle;
infill subpath (rundy(p0,tim6),rundy(p0,tim7).zpet) of p0..cycle;
p100=subpath(4,6) of p0;
p101=subpath(2,4) of p1;
z100=bsktouch(p100,up,p101,down);
z101=bsktouch(p100,down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--z8));
tim101=xpart(p101 intersectiontimes (z100--(x100,y7l+u+5)));
tim102=xpart(p100 intersectiontimes (z101--z3));
tim103=xpart(p101 intersectiontimes (z101--(x101,y5l-u-5)));
oblu:=bbw;
infill subpath(rundy(p100,tim102),rundy(p100,tim100).zpet) of p100
       ..reverse subpath(rundy(p101,tim103).zpet,rundy(p101,tim101)) of p101..cycle;
penlabels(1,2,3,4,5,6,7,8,9); labels(100,101);
endchar;

iff known chars.greek_vartheta_SS:
bskchar "The sans-serif Greek letter theta---alternative";
beginchar(chars.greek_vartheta_SS,9u#,asc_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(vair,180); pos2(hair,0); pos3(stem,0); pos4(stem,0); pos5(hair,90);
pos6(curve,180); pos7(hair,-90);
pos8(hair,-30); pos8'(hair,30); pos9(hair,90); 
top y2=x_height; bot y5l=-o; x5=.5[x3,x6];
if boldmath:lft x4l=x3l; else: x4l=x3; fi; 
lft x1l=.5u; x3l-x1r=max(curve,1.5u);
y2l-y1=1.5(x3-x1); y3=.35[y1,y2]; 
x2l=x3l; 
y4-y5=y2-y3; rt x6l=w-1.75u; y6=bar_height; 
top y7=h+o; x7=x5; 
y8=2/3[x_height,h]; 1/4[x8,x6]=x7;
y9=.35[x_height,bar_height]; x9=w-u;
p0=z2r---z3r..z4r..z5r..{up}z6r..{left}z7r..z8r..{z9-z3}z9r;
p1=z9l{z3-z9}..z8l..{right}z7l..{down}z6l..z5l..z4l..z3l---z2l;
(tim0,tim1)=subpath(0,5) of p0 intersectiontimes subpath(0,1) of p1;
(tim2-2,tim3-6)=subpath(2,infinity) of p1 intersectiontimes subpath(6,infinity) of p0;
(tim4-2,tim5)=subpath (2,infinity) of p1 intersectiontimes subpath(0,1) of p1;
tim6=xpart(p0 intersectiontimes subpath (0,1) of p1);
tim7-6=ypart(subpath (0,5) of p0 intersectiontimes subpath(6,infinity) of p0);
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..{z9-z4}z9r..z9l{z4-z9}
	 ..subpath(rundy(p1,(tim4,hair)),infinity) of p1..cycle;
infill subpath (rundy(p0,tim6),rundy(p0,tim7).zpet) of p0..cycle;
penlabels(1,2,3,4,5,6,7,8,9);
endchar;

iff known chars.greek_iota:
bskchar "The Greek letter iota";
beginchar(chars.greek_iota,6u#,x_height#,0); uni "0x03B9";
adjust_fit(serif_fit#,0);
pickup tiny.nib;
path p[];
pos1(stem,0); pos2(stem,0); pos2'(1.1stem,0);
pos3(hair,90); pos4(hair,0);
lft x1l=x2l=1.5u; top y1=h; y2=.5y4; y2'=bar_height; x2'l=.25[x1,x1l];
rt x4r=w-u; top y4=.5bar_height; bot y3l=0; x3=.5[x4,x2];
drop_serif(1,jut); x1b:=.5[x1a,x1l];
p0=z2r..z2'r..z1r;
filldraw z1r..{x1l-x1r,-.25serif_drop}z1.a&z1.a{z1b-z1a}..z1.b
         ..z2'l..{-direction 0 of p0}z2l..z3l..{up}z4r..{down}z4l
	 ..z3r..p0&cycle;
penlabels(1,2,2',3,4);
math_fit(-x_height#*slant+u#,0);
endchar;

iff known chars.greek_iota_BB:
bskchar "The blackboard-bold Greek letter iota";
beginchar(chars.greek_iota_BB,6.5u#,x_height#,0); uni "non";
adjust_fit(serif_fit#,0);
pickup tiny.nib;
path p[];
pos1(.8cap_stem,0); pos2(.8cap_stem,0); pos2'(.9cap_stem,0);
pos3(hair,90); pos4(hair,0);
lft x1l=x2l=1.5u; top y1=h; y2=.5y4; y2'=bar_height; x2'l=.25[x1,x1l];
rt x4r=w-u; top y4=.5bar_height; bot y3l=0; lft x3=.5[x4,x2];
drop_serif(1,jut); x1b:=.5[x1a,x1l];
p0=z2r..z2'r..z1r;
filldraw z1r..{x1l-x1r,-.25serif_drop}z1.a&z1.a{z1b-z1a}..z1.b
         ..z2'l..{-direction 0 of p0}z2l..z3l..{up}z4r..{down}z4l
	 ..z3r..p0&cycle;
numeric tim[];
p100=subpath(0,4) of (z1.a{z1b-z1a}..z1.b..z2'l..{-direction 0 of p0}z2l..z3l..{up}z4r);
p101=subpath(1,infinity) of (z4l{down}..z3r..p0);
z100=bsktouch(p100,up,p101,down);
tim100=xpart(p100 intersectiontimes (z100--(x100,y3l-2u-5)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4)));
oblu:=bbw;
infill subpath(rundy(p100,0),rundy(p100,(tim100,.8bbw)).zpet) of p100
       ..subpath(rundy(p101,(tim101,.8bbw)),rundy(p101,length(p101)).zpet) of p101
       ..z1l+tiny*down..cycle;
penlabels(1,2,2',3,4); labels(100);
endchar;

iff known chars.greek_iota_SS:
bskchar "The sans-serif Greek letter iota";
beginchar(chars.greek_iota_SS,6u#,x_height#,0); uni "non";
adjust_fit(-.5u#,0);
pickup tiny.nib;
path p[];
pos1(stem,0); pos2(stem,0); pos2'(1.1stem,0);
pos3(hair,90); pos4(hair,0);
lft x1l=x2l=1.5u; top y1=h; y2=.5y4; y2'=bar_height; x2'l=.25[x1,x1l];
rt x4r=w-u; top y4=.5bar_height; bot y3l=0; x3=.5[x4,x2];
drop_serif(1,jut);
p0=z2r..z2'r..z1r;
filldraw z1r{left}..{down}z1.b
         ..z2'l..{-direction 0 of p0}z2l..z3l..{up}z4r..{down}z4l
	 ..z3r..p0&cycle;
penlabels(1,2,2',3,4);
endchar;

iff known chars.greek_iota_turned:
bskchar "The turned Greek letter iota";
beginchar(chars.greek_iota_turned,6u#,x_height#,0); uni "0x2129";
adjust_fit(serif_fit#,0);
italcorr x_height#*slant;
pickup tiny.nib;
path p[];
pos1(stem,180); pos2(stem,180); pos2'(1.1stem,180);
pos3(hair,-90); pos4(hair,180);
rt x1l=x2l=w-1.5u; bot y1=0; y2=.5(x_height+y4); y2'=x_height-bar_height; x2'l=.25[x1,x1l];
lft x4r=u; bot y4=x_height-.5bar_height; top y3l=h; x3=.5[x4,x2];
z1a=z1l+(jut,.5serif_drop); z1b=(x1l,y1a+.25serif_drop); x1b:=.5[x1a,x1l];
p0=z2r..z2'r..z1r;
filldraw z1r..{x1l-x1r,.25serif_drop}z1.a&z1.a{z1b-z1a}..z1.b..z2'l
         ..{-direction 0 of p0}z2l..z3l..{down}z4r..{up}z4l..z3r..p0&cycle;
penlabels(1,2,2',3,4); labels(1a,1b);
math_fit(-bar_height#*slant,ic#-.75u#);
endchar;

iff known chars.greek_iota_turned_BB:
bskchar "The blackboard-bold turned Greek letter iota";
beginchar(chars.greek_iota_turned_BB,6u#,x_height#,0); uni "non";
adjust_fit(serif_fit#,0);
italcorr x_height#*slant;
pickup tiny.nib;
path p[];
pos1(.8cap_stem,180); pos2(.8cap_stem,180); pos2'(.9cap_stem,180);
pos3(hair,-90); pos4(hair,180);
rt x1l=x2l=w-1.5u; bot y1=0; y2=.5(x_height+y4); y2'=x_height-bar_height; x2'l=.25[x1,x1l];
lft x4r=u; bot y4=x_height-.5bar_height; top y3l=h; x3=.5[x4,x2];
z1a=z1l+(jut,.5serif_drop); z1b=(x1l,y1a+.25serif_drop); x1b:=.5[x1a,x1l];
p0=z2r..z2'r..z1r;
filldraw z1r..{x1l-x1r,.25serif_drop}z1.a&z1.a{z1b-z1a}..z1.b..z2'l
         ..{-direction 0 of p0}z2l..z3l..{down}z4r..{up}z4l..z3r..p0&cycle;
numeric tim[];
p100=subpath(0,4) of (z1.a{z1b-z1a}..z1.b..z2'l..{-direction 0 of p0}z2l..z3l..{down}z4r);
p101=subpath(1,infinity) of (z4l{up}..z3r..p0);
z100=bsktouch(p100,down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y3l+2u+5)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4)));
oblu:=bbw;
infill subpath(rundy(p100,0),rundy(p100,(tim100,.8bbw)).zpet) of p100
       ..subpath(rundy(p101,(tim101,.8bbw)),rundy(p101,length(p101)).zpet) of p101
       ..z1l+tiny*up..cycle;
penlabels(1,2,2',3,4); labels(1a,1b,100);
endchar;

iff known chars.greek_iota_turned_SS:
bskchar "The sans-serif turned Greek letter iota";
beginchar(chars.greek_iota_turned_SS,6u#,x_height#,0); uni "non";
adjust_fit(0,-.5u#);
italcorr x_height#*slant;
pickup tiny.nib;
path p[];
pos1(stem,180); pos2(stem,180); pos2'(1.1stem,180);
pos3(hair,-90); pos4(hair,180);
rt x1l=x2l=w-1.5u; bot y1=0; y2=.5(x_height+y4); y2'=x_height-bar_height; x2'l=.25[x1,x1l];
lft x4r=u; bot y4=x_height-.5bar_height; top y3l=h; x3=.5[x4,x2];
z1a=z1l+(jut,.5serif_drop); z1b=(x1l,y1a+.25serif_drop);
p0=z2r..z2'r..z1r;
filldraw z1r{right}..z1.b{up}..z2'l
         ..{-direction 0 of p0}z2l..z3l..{down}z4r..{up}z4l..z3r..p0&cycle;
penlabels(1,2,2',3,4); labels(1a,1b);
endchar;

iff known chars.greek_kappa:
bskchar "The Greek letter kappa";
beginchar(chars.greek_kappa,8.5u#,x_height#,0); uni "0x03BA";
italcorr x_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,0); pos2(stem,0); pos2'(1.1stem,0);
pos3(hair,-90); pos4(hair,-90); pos5(stem,0); 
lft x1l=lft x2l=1.5u; top y1=h; y2=.25bar_height; y2'=bar_height; x2'l=.25[x1,x1l];
x4l=.5u; y4r=y3; bot y3l=0; x3=.5[x4,x2];
bot y5=0; rt x5r=w-2u; serifs_br(5r); z5'b=z5r.b+(hair-currentbreadth)*right;
drop_serif(1,jut); x1b:=.5[x1a,x1l];
pos6(hair,90); top y6r=h+o; x7-x6=y6-y7;
pos7(curve,0); z7'=z7+.2curve*down+o*left; z7''=z7+.5(curve-currentbreadth)*dir45;
y7=h-stem; rt x7r=w-.75u;
pos2''(.5[hair,stem],angle(z6l-z2'r)+90); z2''r=z2'r;
pos6'(hair,180); y6'=y7; z6'=whatever[z6,z2''];
p0=z2r..z2'r..z1r;
p1=z2''l{right}..{up}z6'l..z6l{right}..z7l..z7'..z7r{up}..z7''..{left}z6r..{down}z6'r..{left}z2''r;
p2=z2'l---diag_serif(5r,2'l)..z5r---z5r.a..{left}z5r.c
   ..z5r.bb+(stem-currentbreadth)*right---z2'l+(stem-currentbreadth)*right;
(tim0,tim1)=p0 intersectiontimes p2;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw z1r..{x1l-x1r,-.25serif_drop}z1.a&z1.a{z1b-z1a}..z1.b
         ..z2'l..{-direction 0 of p0}z2l..z3l..{z4-z3}z4l..{z3-z4}z4r..z3r
	 ..subpath(0,rundy(p0,tim0).zpet) of p0
	 ..subpath(rundy(p2,tim1),rundy(p2,(length p2,curve)).zpet) of p2
	 ..subpath(rundy(p1,(0,curve)),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0&cycle;
penlabels(1,2,2',2'',3,4,5,6,6',7); labels(7',7'');
endchar;

iff known chars.greek_kappa_BB:
bskchar "The blackboard-bold Greek letter kappa";
beginchar(chars.greek_kappa_BB,9u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(.8cap_stem,0); pos2(.8cap_stem,0); pos2'(.9cap_stem,0);
pos3(hair,-90); pos4(hair,-90); pos5(.8cap_stem,0); 
lft x1l=lft x2l=1.5u; top y1=h; y2=.25bar_height; y2'=bar_height; x2'l=.25[x1,x1l];
x4l=.5u; y4r=y3; bot y3l=0; rt x3=.4[x4,x2];
bot y5=0; rt x5r=w-2u; serifs_br(5r); z5'b=z5r.b+(hair-currentbreadth)*right;
drop_serif(1,jut); x1b:=.5[x1a,x1l];
pos6(hair,90); top y6r=h+o; x7-x6=y6-y7;
pos7(curve,0); z7'=z7+.2curve*down+o*left; z7''=z7+.5(curve-currentbreadth)*dir45;
y7=h-stem; rt x7r=w-.75u;
pos2''(.5[hair,stem],angle(z6l-z2'r)+90); z2''r=z2'r;
pos6'(hair,180); y6'=y7; z6'=whatever[z6,z2''];
p0=z2r..z2'r..z1r;
p1=z2''l{right}..{up}z6'l..z6l{right}..z7l..z7'..z7r{up}..z7''..{left}z6r..{down}z6'r..{left}z2''r;
p2=z2'l---diag_serif(5r,2'l)..z5r---z5r.a..{left}z5r.c
   ..z5r.bb+(.8cap_stem-currentbreadth)*right---z2'l+(.8cap_stem-currentbreadth)*right;
(tim0,tim1)=p0 intersectiontimes p2;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw z1r..{x1l-x1r,-.25serif_drop}z1.a&z1.a{z1b-z1a}..z1.b
         ..z2'l..{-direction 0 of p0}z2l..z3l..{z4-z3}z4l..{z3-z4}z4r..z3r
	 ..subpath(0,rundy(p0,tim0).zpet) of p0
	 ..subpath(rundy(p2,tim1),rundy(p2,(length p2,curve)).zpet) of p2
	 ..subpath(rundy(p1,(0,curve)),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0&cycle;
p100=subpath(0,4) of (z1.a{z1b-z1a}..z1.b..z2'l..{-direction 0 of p0}z2l..z3l..{z4-z3}z4l);
p101=subpath(1,infinity) of (z4r{z3-z4}..z3r..p0);
z100=bsktouch(p100,down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y2')));
tim101=xpart(p101 intersectiontimes (z100--(x100,y3r-u-5)));
oblu:=bbw;
infill subpath(rundy(p100,0),rundy(p100,(tim100,.8bbw)).zpet) of p100
       ..subpath(rundy(p101,(tim101,.8bbw)),rundy(p101,length(p101)).zpet) of p101
       ..z1l+tiny*down..cycle;
penlabels(1,2,2',2'',3,4,5,6,6',7); labels(7',7'',100);
endchar;

iff known chars.greek_kappa_SS:
bskchar "The sans-serif Greek letter kappa";
beginchar(chars.greek_kappa_SS,8u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(-.5u#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,0); pos2(stem,0); pos2'(1.1stem,0);
pos3(stem,0); pos4(hair,-90); pos5(stem,0); 
lft x1l=lft x2l=1.5u; top y1=h; y2=.25bar_height; y2'=bar_height; x2'l=.25[x1,x1l];
x4l=.5u; y4r=y3; bot y3l=0; x3r=x2;
bot y5=0; rt x5r=w-u; serifs_br(5r); z5'b=z5r.b+(hair-currentbreadth)*right;
drop_serif(1,jut);
pos6(hair,120); top y7r=h+o; x6=.5[x7,x2];
pos7(hair,120); 
rt x7r=w-.75u; z7=z6+whatever*dir30;
pos2''(.5[hair,stem],angle(z6l-z2'r)+90); z2''r=z2'r;
p0=z2r..z2'r..z1r;
p1=z2''l{right}...z6l...z7l&z7l{dir30}..z7r&z7r...z6r...{left}z2''r;
p3:=diag_serif(5r,2'l);
p2=z2'l---z5r
   ..z5r.bb+(stem-currentbreadth)*right---z2'l+(stem-currentbreadth)*right;
(tim0,tim1)=p0 intersectiontimes p2;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw z1r{left}..{down}z1.b
         ..z2'l..{-direction 0 of p0}z2l...z3l..z3r
	 ...subpath(0,rundy(p0,tim0).zpet) of p0
	 ..subpath(rundy(p2,tim1),rundy(p2,(length p2,curve)).zpet) of p2
	 ..subpath(rundy(p1,(0,curve)),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0&cycle;
penlabels(1,2,2',2'',3,4,5,6,7);
endchar;

iff known chars.greek_varkappa:
bskchar "The Greek letter kappa---alternative";
beginchar(chars.greek_varkappa,12u#,x_height#,0); uni "0x03F0";
italcorr x_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[], theta; path p[]; oblu:=2oblu;
x1=2u+.5stem; x2=w-2u-.5stem; bot y1=.4stem; top y2=h+o-.5stem;
lft bot z1'r=(u,0); rt top z2'l=(w-u,h);
theta:=angle(z2-z1);
pos1(.8stem,theta-90); pos2(stem,theta-90);
pos1'(stem,-90); pos2'(stem,-90);
pos3(hair,theta-90); pos4(curve,75); pos5(hair,theta+90);
pos6(hair,theta-90); pos7(curve,105); pos8(hair,theta+90);
z3r=z1l; top y4r=h+o; x4=2u; lft x5r=u; y4-y5=1.2(x4-x5);
z6l=z2r; bot y7l=-o; x7=w-x4; rt x8l=w-u; y8-y7=1.2(x8-x7);
p0:=z1'l..z1l{dir(theta+10)}..{dir(theta-10)}z2l..z2'l..z2'r..z2r{dir(theta+170)}..{dir(theta+190)}z1r..z1'r..cycle;
p1:=z3l{dir(theta+10)}..z4l{left}..{down}z5l--z5r{up}..z4r{right}..{dir(theta+180)}z3r;
p2:=z6r{dir(theta+190)}..{right}z7r..{up}z8r..{down}z8l..z7l{left}..{dir(theta)}z6l;
z10=bsktouch(subpath(3,infinity) of p1,right,p0,up);
z11=bsktouch(subpath(5,infinity) of p0,right,subpath(1,infinity) of p2,up);
tim0=xpart(subpath(0,2) of p0 intersectiontimes (z10--(x10,0)));
tim1-1=xpart(subpath(1,infinity) of p1 intersectiontimes (z10--(0,y10)));
tim2-1=xpart(subpath(1,infinity) of p2 intersectiontimes (z11--(w,bar_height)));
tim3-5=xpart(subpath(5,infinity) of p0 intersectiontimes (z11--(x11,h)));
filldraw subpath(rundy(p1,0),rundy(p1,tim1).zpet) of p1
         ..subpath(rundy(p0,tim0),rundy(p0,5).zpet) of p0
	 ..subpath(rundy(p2,0),rundy(p2,tim2).zpet) of p2
	 ..subpath(rundy(p0,tim3),length p0) of p0..cycle;
penlabels(1,1',2,2',3,4,5,6,7,8); labels(10,11,12,13);
math_fit(-.5u#,0);
endchar;

iff known chars.greek_varkappa_BB:
bskchar "The blackboard-bold Greek letter kappa---alternative";
beginchar(chars.greek_varkappa_BB,12u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[], theta; path p[]; oblu:=2oblu;
x1=2u+.4cap_stem; x2=w-2u-.4cap_stem; bot y1=.4cap_stem; top y2=h+o-.4cap_stem;
lft bot z1'r=(u,0); rt top z2'l=(w-u,h);
theta:=angle(z2-z1);
pos1(.8cap_stem,theta-90); pos2(.8cap_stem,theta-90);
pos1'(.8cap_stem,-90); pos2'(.8cap_stem,-90);
pos3(hair,theta-90); pos4(curve,75); pos5(hair,theta+90);
pos6(hair,theta-90); pos7(curve,105); pos8(hair,theta+90);
z3r=z1l; top y4r=h+o; x4=2u; lft x5r=u; y4-y5=1.2(x4-x5);
z6l=z2r; bot y7l=-o; x7=w-x4; rt x8l=w-u; y8-y7=1.2(x8-x7);
p0:=z1'l..z1l{dir(theta+10)}..{dir(theta-10)}z2l..z2'l..z2'r..z2r{dir(theta+170)}..{dir(theta+190)}z1r..z1'r..cycle;
p1:=z3l{dir(theta+10)}..z4l{left}..{down}z5l--z5r{up}..z4r{right}..{dir(theta+180)}z3r;
p2:=z6r{dir(theta+190)}..{right}z7r..{up}z8r..{down}z8l..z7l{left}..{dir(theta)}z6l;
z10=bsktouch(subpath(3,infinity) of p1,right,p0,up);
z11=bsktouch(subpath(5,infinity) of p0,right,subpath(1,infinity) of p2,up);
tim0=xpart(subpath(0,2) of p0 intersectiontimes (z10--(x10,0)));
tim1-1=xpart(subpath(1,infinity) of p1 intersectiontimes (z10--(0,y10)));
tim2-1=xpart(subpath(1,infinity) of p2 intersectiontimes (z11--(w,bar_height)));
tim3-5=xpart(subpath(5,infinity) of p0 intersectiontimes (z11--(x11,h)));
filldraw subpath(rundy(p1,0),rundy(p1,tim1).zpet) of p1
         ..subpath(rundy(p0,tim0),rundy(p0,5).zpet) of p0
	 ..subpath(rundy(p2,0),rundy(p2,tim2).zpet) of p2
	 ..subpath(rundy(p0,tim3),length p0) of p0..cycle;
penlabels(1,1',2,2',3,4,5,6,7,8); labels(10,11,12,13);
infill subpath(rundy(p0,0),rundy(p0,4).zpet) of p0
       ..subpath(rundy(p0,5),rundy(p0,length p0).zpet) of p0..cycle;
endchar;

iff known chars.greek_varkappa_SS:
bskchar "The sans-serif Greek letter kappa---alternative";
beginchar(chars.greek_varkappa_SS,11u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[], theta; path p[]; oblu:=2oblu;
x1=2u+.5stem; x2=w-2u-.5stem; bot y1=.4stem; top y2=h+o-.5stem;
lft bot z1'r=(u,0); rt top z2'l=(w-u,h);
theta:=angle(z2-z1);
pos1(.8stem,theta-90); pos2(stem,theta-90);
pos1'(stem,-90); pos2'(stem,-90);
pos3(hair,theta-90); pos4(curve,0); pos5(hair,theta+90);
pos6(hair,theta-90); pos7(curve,0); pos8(hair,theta+90);
z3r=z1l; top y4r=h; x4=2u; lft x5r=u; y4-y5=1.2(x4-x5);
z6l=z2r; bot y7l=0; x7=w-x4; rt x8l=w-u; y8-y7=1.2(x8-x7);
p0:=z1'l..z1l{dir(theta+10)}..{dir(theta-10)}z2l..z2'l..z2'r..z2r{dir(theta+170)}..{dir(theta+190)}z1r..z1'r..cycle;
p1:=z3l{dir(theta+10)}..{up}z4l..z4r{down}..{dir(theta+180)}z3r;
p2:=z6r{dir(theta+190)}..{down}z7r..{up}z7l..{dir(theta)}z6l;
z10=bsktouch(subpath(2,infinity) of p1,right,p0,up);
z11=bsktouch(subpath(5,infinity) of p0,right,subpath(1,infinity) of p2,up);
tim0=xpart(subpath(0,2) of p0 intersectiontimes (z10--(x10,0)));
tim1-1=xpart(subpath(1,infinity) of p1 intersectiontimes (z10--(0,y10)));
tim2-1=xpart(subpath(1,infinity) of p2 intersectiontimes (z11--(w,bar_height)));
tim3-5=xpart(subpath(5,infinity) of p0 intersectiontimes (z11--(x11,h)));
filldraw subpath(rundy(p1,0),rundy(p1,tim1).zpet) of p1
         ..subpath(rundy(p0,tim0),rundy(p0,5).zpet) of p0
	 ..subpath(rundy(p2,0),rundy(p2,tim2).zpet) of p2
	 ..subpath(rundy(p0,tim3),length p0) of p0..cycle;
penlabels(1,1',2,2',3,4,5,6,7,8); labels(10,11,12,13);
endchar;

iff known chars.greek_lambda:
bskchar "The Greek letter lambda";
beginchar(chars.greek_lambda,10u#,asc_height#,0); uni "0x03BB";
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[], thstem; path p[]; oblu:=2oblu;
x1r=w-1.5u; y1r=curve; x2l=2.5u; top y2l=h-curve;
thstem:=stem/sind(angle(z2l-z1r));
pos1(thstem,0); pos2(thstem,0);
pos3(hair,90); pos4(hair,90); pos5(hair+o,90);
pos6(hair,0); pos7(stem,0); pos8(curve,-10);
bot y1'=0; z1'=whatever[z2l,z1l]+.5(x1-x1l)*right;
bot y3l=-o; x3=w; top y4r=h+o;
lft x5=o; y5r=y4r; x4=.5x2l;
y6=x_height; z6r=whatever[z1r,z2r];
y7=curve; bot y8r=0; lft x7l=u; lft x8l=u;
p0=z2l---z1l..z1'..{right}z3l..{left}z3r..z1r---z2r..z4r---z5r..z5l---z4l;
p1=z6l{dir225}..{down}z7l---z8l..z8r---z7r{up}..{dir45}z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(1',5',5'');
endchar;

iff known chars.greek_lambda_BB:
bskchar "The blackboard-bold Greek letter lambda";
beginchar(chars.greek_lambda_BB,10u#,asc_height#,0); uni "non";
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[], thstem; path p[]; oblu:=2oblu;
x1r=w-1.5u; y1r=curve; x2l=2.5u; top y2l=h-curve;
thstem:=.8cap_stem/sind(angle(z2l-z1r));
pos1(thstem,0); pos2(thstem,0);
pos3(hair,90); pos4(hair,90); pos5(hair+o,90);
pos6(hair,0); pos7(stem,0); pos8(curve,-10);
bot y1'=0; z1'=whatever[z2l,z1l]+.5(x1-x1l)*right;
bot y3l=-o; x3=w; top y4r=h+o;
lft x5=o; y5r=y4r; x4=.5x2l;
y6=x_height; z6r=whatever[z1r,z2r];
y7=curve; bot y8r=0; lft x7l=u; lft x8l=u;
p0=z2l---z1l..z1'..{right}z3l..{left}z3r..z1r---z2r..z4r---z5r..z5l---z4l;
p1=z6l{dir225}..{down}z7l---z8l..z8r---z7r{up}..{dir45}z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0..cycle;
p100=z3r{left}..z1r---z2r..z4r---z5r;
p101=z5l---z4l..z2l---z1l..z1'..{right}z3l;
z100=bsktouch(subpath(0,2) of p100,down,p101,up);
z101=bsktouch(p100,down,subpath(1,2) of p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y1)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y3l-5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y4r+5)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2l)));
oblu:=bbw;
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103),rundy(p101,tim101).zpet) of p101..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(1',5',5'',100,101);
endchar;

iff known chars.greek_lambda_SS:
bskchar "The sans-serif Greek letter lambda";
beginchar(chars.greek_lambda_SS,10u#,asc_height#,0); uni "non";
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[], thstem; path p[]; oblu:=2oblu;
x1r=w-1.5u; y1r=curve; x2l=2.5u; top y2l=h-curve;
thstem:=stem/sind(angle(z2l-z1r));
pos1(thstem,0); pos2(thstem,0);
pos3(hair,90); pos4(thstem,0); pos5(hair+o,90);
pos6(hair,0); pos7(stem,0); pos8(curve,-10);
bot y1'=-o; z1'=whatever[z2l,z1l]+.5(x1-x1l)*right;
bot y3l=-o; x3=w; top y4r=h;
lft x5=o; y5r=y4r; z4r=whatever[z2r,z1r];
y6=x_height; z6r=whatever[z1r,z2r];
y7=curve; bot y8r=0; lft x7l=u; lft x8l=u;
p0=z2l---z1l...z1'...z1r---z4r..z4l;
p1=z6l{dir225}..{down}z7l---z8l..z8r---z7r{up}..{dir45}z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0---cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(1',5',5'');
endchar;

iff known chars.greek_lambda_bar:
bskchar "The Greek letter lambda with bar";
beginchar(chars.greek_lambda_bar,10u#,asc_height#,0); uni "non";
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[], thstem; path p[]; oblu:=2oblu; oblu.light:=f_obl;
x1r=w-1.5u; y1r=curve; x2l=2.5u; top y2l=h-curve;
thstem:=stem/sind(angle(z2l-z1r));
pos1(thstem,0); pos2(thstem,0);
pos3(hair,90); pos4(hair,90); pos5(hair+o,90);
pos6(hair,0); pos7(stem,0); pos8(curve,-10);
pos9(bar,90); pos10(bar,90);
bot y1'=0; z1'=whatever[z2l,z1l]+.5(x1-x1l)*right;
bot y3l=-o; x3=w; top y4r=h+o;
lft x5=o; y5r=y4r; x4=.5x2l;
y6=x_height; z6r=whatever[z1r,z2r];
y7=curve; bot y8r=0; lft x7l=u; lft x8l=u;
x10-x9=5u; y10=y9=.5[x_height,y2]; .5[z9,z10]=whatever[z1,z2];
y9'r=y10'r=y9r; y9'l=y10'l=y9l;
z9'l=whatever[z2l,z1l]; z9'r=whatever[z2l,z1l]; 
z10'l=whatever[z2r,z1r]; z10'r=whatever[z2r,z1r]; 
bskpoints(9,10,hair,hair);
p0=z2l---obl(9'r,2l,9r)---z9rr..z9l---obl(9'l,9l,1l)---z1l..z1'..{right}z3l..{left}z3r
   ..z1r---obl(10'l,1r,10l)---z10ll..z10r---obl(10'r,10r,2r).light
   ---z2r..z4r---z5r..z5l---z4l;
p1=z6l{dir225}..{down}z7l---z8l..z8r---z7r{up}..{dir45}z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0..cycle;
penlabels(0,1,2,3,4,5,6,7,8,9,9',10,10'); labels(1',5',5'',9rr,10ll);
endchar;

iff known chars.greek_lambda_slash:
bskchar "The Greek letter lambda with slash";
beginchar(chars.greek_lambda_slash,10u#,asc_height#,0); uni "non";
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[], thstem, theta; path p[]; oblu:=2oblu; oblu.light:=f_obl;
x1r=w-1.5u; y1r=curve; x2l=2.5u; top y2l=h-curve;
thstem:=stem/sind(angle(z2l-z1r));
pos1(thstem,0); pos2(thstem,0);
pos3(hair,90); pos4(hair,90); pos5(hair+o,90);
pos6(hair,0); pos7(stem,0); pos8(curve,-10);
bot y1'=0; z1'=whatever[z2l,z1l]+.5(x1-x1l)*right;
bot y3l=-o; x3=w; top y4r=h+o;
lft x5=o; y5r=y4r; x4=.5x2l;
y6=x_height; z6r=whatever[z1r,z2r];
y7=curve; bot y8r=0; lft x7l=u; lft x8l=u;
x10-x9=4.5u; y10-y9=stem; y9=.5[x_height,y2]; .5[z9,z10]=whatever[z1,z2];
theta:=angle(z10-z9)+90;
pos9(bar,theta); pos10(bar,theta);
z9'l=whatever[z9l,z10l]=whatever[z2l,z1l]; z9'r=whatever[z9r,z10r]=whatever[z2l,z1l]; 
z10'l=whatever[z9l,z10l]=whatever[z2r,z1r]; z10'r=whatever[z9r,z10r]=whatever[z2r,z1r]; 
bskpoints(9,10,hair,hair);
p0=z2l---obl(9'r,2l,9r)---z9rr..z9l---obl(9'l,9l,1l)---z1l..z1'..{right}z3l..{left}z3r
   ..z1r---obl(10'l,1r,10l)---z10ll..z10r---obl(10'r,10r,2r).light
   ---z2r..z4r---z5r..z5l---z4l;
p1=z6l{dir225}..{down}z7l---z8l..z8r---z7r{up}..{dir45}z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0..cycle;
penlabels(0,1,2,3,4,5,6,7,8,9,9',10,10'); labels(1',5',5'',9rr,10ll);
endchar;

iff known chars.greek_lambda_curved:
bskchar "The Greek letter lambda (curved version)";
beginchar(chars.greek_lambda_curved,10u#,asc_height#,0); uni "non";
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[], thstem; path p[]; oblu:=2oblu;
x1r=w-1.5u; y1r=curve; x2l=2.5u; top y2l=h-curve;
thstem:=stem/sind(angle(z2l-z1r));
pos1(thstem,0); pos2(thstem,0);
pos3(hair,90); pos4(hair,90); pos5(stem,180);
pos6(hair,0); pos7(stem,0); pos8(curve,-10);
bot y1'=0; z1'=whatever[z2l,z1l]+.5(x1-x1l)*right;
bot y3l=-o; x3=w; top y4r=h+o;
lft x5r=0; y5=y4-curve; x4=.5[x2l,x5r];
y6=x_height; z6r=whatever[z1r,z2r];
y7=curve; bot y8r=0; lft x7l=u; lft x8l=u;
z5'=z5+.2curve*up+o*right; z5''=z5+.5(curve-currentbreadth)*dir225;
p0=z2l---z1l..z1'..{right}z3l..{left}z3r..z1r---z2r..{left}z4r..z5r..z5''..z5l..z5'..{right}z4l;
p1=z6l{dir225}..{down}z7l---z8l..z8r---z7r{up}..{dir45}z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(1',5',5'');
endchar;

iff known chars.greek_lambda_curved_bar:
bskchar "The Greek letter lambda with bar (curved version)";
beginchar(chars.greek_lambda_curved_bar,10u#,asc_height#,0); uni "non";
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[], thstem; path p[]; oblu:=2oblu; oblu.light:=f_obl;
x1r=w-1.5u; y1r=curve; x2l=2.5u; top y2l=h-curve;
thstem:=stem/sind(angle(z2l-z1r));
pos1(thstem,0); pos2(thstem,0);
pos3(hair,90); pos4(hair,90); pos5(stem,180);
pos6(hair,0); pos7(stem,0); pos8(curve,-10);
pos9(bar,90); pos10(bar,90);
bot y1'=0; z1'=whatever[z2l,z1l]+.5(x1-x1l)*right;
bot y3l=-o; x3=w; top y4r=h+o;
lft x5r=0; y5=y4-curve; x4=.5[x2l,x5r];
y6=x_height; z6r=whatever[z1r,z2r];
y7=curve; bot y8r=0; lft x7l=u; lft x8l=u;
z5'=z5+.2curve*up+o*right; z5''=z5+.5(curve-currentbreadth)*dir225;
x10-x9=5u; y10=y9=.5[x_height,y2]; .5[z9,z10]=whatever[z1,z2];
y9'r=y10'r=y9r; y9'l=y10'l=y9l;
z9'l=whatever[z2l,z1l]; z9'r=whatever[z2l,z1l]; 
z10'l=whatever[z2r,z1r]; z10'r=whatever[z2r,z1r]; 
bskpoints(9,10,hair,hair);
p0=z2l---obl(9'r,2l,9r)---z9rr..z9l---obl(9'l,9l,1l)---z1l..z1'..{right}z3l..{left}z3r
   ..z1r---obl(10'l,1r,10l)---z10ll..z10r---obl(10'r,10r,2r).light
   ---z2r..{left}z4r..z5r..z5''..z5l..z5'..{right}z4l;
p1=z6l{dir225}..{down}z7l---z8l..z8r---z7r{up}..{dir45}z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(1',5',5'');
endchar;

iff known chars.greek_lambda_curved_slash:
bskchar "The Greek letter lambda with slash (curved version)";
beginchar(chars.greek_lambda_curved_slash,10u#,asc_height#,0); uni "non";
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[], thstem; path p[]; oblu:=2oblu; oblu.light:=f_obl;
x1r=w-1.5u; y1r=curve; x2l=2.5u; top y2l=h-curve;
thstem:=stem/sind(angle(z2l-z1r));
pos1(thstem,0); pos2(thstem,0);
pos3(hair,90); pos4(hair,90); pos5(stem,180);
pos6(hair,0); pos7(stem,0); pos8(curve,-10);
bot y1'=0; z1'=whatever[z2l,z1l]+.5(x1-x1l)*right;
bot y3l=-o; x3=w; top y4r=h+o;
lft x5r=0; y5=y4-curve; x4=.5[x2l,x5r];
y6=x_height; z6r=whatever[z1r,z2r];
y7=curve; bot y8r=0; lft x7l=u; lft x8l=u;
x10-x9=4.5u; y10-y9=stem; y9=.5[x_height,y2]; .5[z9,z10]=whatever[z1,z2];
theta:=angle(z10-z9)+90;
pos9(bar,theta); pos10(bar,theta);
z9'l=whatever[z9l,z10l]=whatever[z2l,z1l]; z9'r=whatever[z9r,z10r]=whatever[z2l,z1l]; 
z10'l=whatever[z9l,z10l]=whatever[z2r,z1r]; z10'r=whatever[z9r,z10r]=whatever[z2r,z1r]; 
bskpoints(9,10,hair,hair);
z5'=z5+.2curve*up+o*right; z5''=z5+.5(curve-currentbreadth)*dir225;
p0=z2l---obl(9'r,2l,9r)---z9rr..z9l---obl(9'l,9l,1l)---z1l..z1'..{right}z3l..{left}z3r
   ..z1r---obl(10'l,1r,10l)---z10ll..z10r---obl(10'r,10r,2r).light
   ---z2r..{left}z4r..z5r..z5''..z5l..z5'..{right}z4l;
p1=z6l{dir225}..{down}z7l---z8l..z8r---z7r{up}..{dir45}z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0..cycle;
penlabels(0,1,2,3,4,5,6,7,8); labels(1',5',5'');
endchar;

iff known chars.greek_mu:
bskchar "The Greek letter mu";
beginchar(chars.greek_mu,10.5u#,x_height#,desc_depth#); uni "0x03BC";
italcorr x_height#*slant-.75u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2hair;
pos1(stem,0); pos2(stem,0); pos2'(stem,0);
pos3(stem,0); 
pos6(hair,0); pos7(hair,90); pos8(hair,180); pos9(stem,180);
pos10(stem,0); pos11(stem,0); pos12(hair,90); pos13(.5[stem,hair],90);
lft x1l=lft x2l=1.5u; top y1=h; y2=0;
x3l=if slant=0: x2l else: x2 fi; bot y3=-d+o;
rt x10r=w-2u; y6=y8=bar_height; bot y7l=-o; x7=.5w;
x6=x2; top y9=h; x9=x10;
z8r=z10l; x11=x10; y11=curve; rt x13=w-.5u; bot y12l=bot bot y13l=-o; x12=.5[x13,x10];
bskpoints(9,10,hair,hair); bskpoints(3,1,hair,hair);
p0=z1r..z1l---z3l..z3rr---z1r;
p1=z12l{right}..z13l..z13r..{left}z12r..z11r---z9l..{down}z9rr---z10l..z7r..{up}z6r;
p2=z6l{down}..z7l..{up}z8l;
p3=z10l{down}..z11l..{right}z12l;
z0=bsktouch(subpath(2,infinity) of p0,right,p2,down);
tim0-2=xpart(subpath(2,infinity) of p0 intersectiontimes (z0--(0,x0)));
tim1=xpart(p2 intersectiontimes (z0--(x0,h)));
z14=bsktouch(p2,down,p3,left);
tim2=xpart(p2 intersectiontimes (z14--(x14,h)));
tim3=xpart(p3 intersectiontimes (z14--(w,y14)));
(tim4,tim5-2)=p1 intersectiontimes subpath(2,infinity) of p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p2,tim1),rundy(p2,tim2).zpet) of p2
	 ..subpath(rundy(p3,tim3),infinity) of p3
	 ..subpath(0,rundy(p1,tim4).zpet) of p1
	 ..subpath(rundy(p0,tim5),infinity) of p0..cycle;
penlabels(1,2,3,6,7,8,9,10,11,12,13); labels(0,9rr,3rr,14);
endchar;

iff known chars.greek_mu_BB:
bskchar "The blackboard-bold Greek letter mu";
beginchar(chars.greek_mu_BB,10.75u#,x_height#,desc_depth#); uni "non";
italcorr x_height#*slant-.75u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2hair;
pos1(.8cap_stem,0); pos2(.8cap_stem,0); pos2'(.8cap_stem,0);
pos3(.8cap_stem,0); 
pos6(hair,0); pos7(hair,90); pos8(hair,180); pos9(.8cap_stem,180);
pos10(.8cap_stem,0); pos11(.8cap_stem,0); pos12(hair,90); pos13(.5[stem,hair],90);
lft x1l=lft x2l=1.5u; top y1=h; y2=0;
x3l=if slant=0: x2l else: x2 fi; bot y3=-d+o;
rt x10r=w-2u; y6=y8=bar_height; bot y7l=-o; x7=.5w;
x6=x2; top y9=h; x9=x10;
z8r=z10l; x11=x10; y11=curve; rt x13=w-.5u; bot y12l=bot bot y13l=-o; x12=.5[x13,x10];
bskpoints(9,10,hair,hair); bskpoints(3,1,hair,hair);
p0=z1r..z1l---z3l..z3rr---z1r;
p1=z12l{right}..z13l..z13r..{left}z12r..z11r---z9l..{down}z9rr---z10l..z7r..{up}z6r;
p2=z6l{down}..z7l..{up}z8l;
p3=z10l{down}..z11l..{right}z12l;
z0=bsktouch(subpath(2,infinity) of p0,right,p2,down);
tim0-2=xpart(subpath(2,infinity) of p0 intersectiontimes (z0--(0,x0)));
tim1=xpart(p2 intersectiontimes (z0--(x0,h)));
z14=bsktouch(p2,down,p3,left);
tim2=xpart(p2 intersectiontimes (z14--(x14,h)));
tim3=xpart(p3 intersectiontimes (z14--(w,y14)));
(tim4,tim5-2)=p1 intersectiontimes subpath(2,infinity) of p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p2,tim1),rundy(p2,tim2).zpet) of p2
	 ..subpath(rundy(p3,tim3),infinity) of p3
	 ..subpath(0,rundy(p1,tim4).zpet) of p1
	 ..subpath(rundy(p0,tim5),infinity) of p0..cycle;
p100=subpath(3,5) of p1;
p101=z9rr---z10l---z11l..{right}z12l;
z100=bsktouch(p100,down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(w,y100)));
tim101=xpart(p101 intersectiontimes (z100--(0,y100)));
oblu:=f_obl;
infill subpath(rundy(p101,0),rundy(p101,tim101).zpet) of p101
       ..subpath(rundy(p100,tim100),rundy(p100, length p100).zpet) of p100..cycle;
infill subpath(rundy(p0,1),rundy(p0,2).zpet) of p0
       ..subpath(rundy(p0,3),rundy(p0,4).zpet) of p0..cycle;
penlabels(1,2,3,6,7,8,9,10,11,12,13); labels(0,9rr,3rr,14,100);
endchar;

iff known chars.greek_mu_SS:
bskchar "The sans-serif Greek letter mu";
beginchar(chars.greek_mu_SS,10.5u#,x_height#,desc_depth#); uni "non";
italcorr x_height#*slant-.75u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2hair;
pos1(stem,0); pos2(stem,0); pos2'(stem,0);
pos3(stem,0); 
pos6(hair,0); pos7(hair,90); pos8(hair,180); pos9(stem,180);
pos10(stem,0); pos11(stem,0); pos12(hair,90); pos13(.5[stem,hair],90);
lft x1l=lft x2l=1.5u; top y1=h; y2=0;
x3l=if slant=0: x2l else: x2 fi; bot y3=-d+o;
rt x10r=w-2u; y6=y8=bar_height; bot y7l=-o; x7=.5w;
x6=x2; top y9=h; x9=x10;
z8r=z10l; x11=x10; y11=curve; rt x13=w-.5u; bot y12l=bot bot y13l=-o; x12=.5[x13,x10];
bskpoints(9,10,hair,hair); bskpoints(3,1,hair,hair);
p0=z1r..z1l---z3l..z3rr---z1r;
p1=z12l{right}..z13l..z13r..{left}z12r..z11r---z9l..{down}z9rr---z10l..z7r..{up}z6r;
p2=z6l{down}..z7l..{up}z8l;
p3=z10l{down}..z11l..{right}z12l;
z0=bsktouch(subpath(2,infinity) of p0,right,p2,down);
tim0-2=xpart(subpath(2,infinity) of p0 intersectiontimes (z0--(0,x0)));
tim1=xpart(p2 intersectiontimes (z0--(x0,h)));
z14=bsktouch(p2,down,p3,left);
tim2=xpart(p2 intersectiontimes (z14--(x14,h)));
tim3=xpart(p3 intersectiontimes (z14--(w,y14)));
(tim4,tim5-2)=p1 intersectiontimes subpath(2,infinity) of p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p2,tim1),1) of p2
	 ..subpath(rundy(p1,4),rundy(p1,tim4).zpet) of p1
	 ..subpath(rundy(p0,tim5),infinity) of p0..cycle;
penlabels(1,2,3,6,7,8,9,10,11,12,13); labels(0,9rr,3rr,14);
endchar;

iff known chars.greek_mu_curved:
bskchar "The Greek letter mu (curved version)";
beginchar(chars.greek_mu_curved,11u#,x_height#,desc_depth#); uni "non";
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2hair;
pos1(stem,0); pos2(stem,0); pos2'(1.1stem,0);
pos3(stem,0); pos4(hair,90); pos5(stem,70);
pos6(hair,0); pos7(hair,90); pos8(hair,180); pos9(curve,180);
pos10(stem,0); pos11(stem,0); pos12(hair,90); pos13(.5[stem,hair],90);
lft x1l=x2l=1.5u; top y1=h; y2=0; y2'=bar_height; x2'l=.25[x1,x1l];
x3=x2; y3=-d+1.5curve; bot y4l=-d; x4-x3r=y3-y4; y5l=y4; x5-x4=stem;
drop_serif(1,jut); x1b:=.5[x1a,x1l];
rt x10r=w-2u; y6=y8=bar_height; bot y7l=-o; x7=.5w;
x6=x2; top y9''=x_height+o; x9-x8=.35(y8-y9);
z9'=z9+.2curve*down+o*left; z9''=z9+.5(curve-currentbreadth)*dir135;
z8l=z10l; x11r=x10; y11=curve; rt x13=w-.5u; bot y12l=bot bot y13l=-o; x12=.5[x13,x10];
p0=z1r..{x1l-x1r,-.25serif_drop}z1.a&z1.a{z1b-z1a}..z1.b..z2'l
   ..z2l..z3l..{right}z4l..z5l..z5r..z4r{left}..z3r..z2r..z2'r..z1r;
p1=z12l{right}..z13l..z13r..{left}z12r..z11r..z10r..z9l..{down}z9r..z9'..{down}z8r..z7r..{up}z6r;
p2=z6l{down}..z7l..{up}z8l;
p3=z10l{down}..z11l..{right}z12l;
z0=bsktouch(subpath(5,infinity) of p0,right,p2,down);
tim0-5=xpart(subpath(5,infinity) of p0 intersectiontimes (z0--(0,x0)));
tim1=xpart(p2 intersectiontimes (z0--(x0,h)));
z14=bsktouch(p2,down,p3,left);
tim2=xpart(p2 intersectiontimes (z14--(x14,h)));
tim3=xpart(p3 intersectiontimes (z14--(w,y14)));
(tim4,tim5-5)=p1 intersectiontimes subpath(5,infinity) of p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p2,tim1),rundy(p2,tim2).zpet) of p2
	 ..subpath(rundy(p3,tim3),infinity) of p3
	 ..subpath(0,rundy(p1,tim4).zpet) of p1
	 ..subpath(rundy(p0,tim5),infinity) of p0..cycle;
penlabels(1,2,2',3,4,5,6,7,8,9,10,11,12,13); labels(0,9',9'',14);
endchar;

iff known chars.greek_nu:
bskchar "The Greek letter nu";
beginchar(chars.greek_nu,8.5u#,x_height#,0); uni "0x03BD";
italcorr x_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,0); pos2(stem,0); pos2'(1.1stem,0);
pos3(stem,-10); 
lft x1l=lft x2l=1.5u; top y1=h; bot y2=0; y2'=bar_height; x2'l=.25[x1,x1l];
rt x3r=w-u; top y3l=h;
drop_serif(1,jut); x1b:=.5[x1a,x1l];
p0=z2r..z2'r..z1r;
tim0=xpart(p0 intersectiontimes ((0,y2r+hair-currentbreadth)--(w,y2r+hair-currentbreadth)));
p1=z3l{down}..point tim0 of p0;
filldraw z2r..{up}z3r..subpath(0,rundy(p1,1).zpet) of p1
         ..subpath(rundy(p0,tim0),infinity) of p0&z1r..{x1l-x1r,-.25serif_drop}z1.a
	 &z1.a{z1b-z1a}..z1.b..z2'l..{-direction 0 of p0}z2l--cycle;
penlabels(1,2,2',3);
math_fit(-x_height#*slant+u#,-u#);
endchar;

iff known chars.greek_nu_BB:
bskchar "The blackboard-bold Greek letter nu";
beginchar(chars.greek_nu_BB,9u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(.8cap_stem,0); pos2(.8cap_stem,0); pos2'(.9cap_stem,0);
pos3(stem,-10); 
lft x1l=lft x2l=1.5u; top y1=h; bot y2=0; y2'=bar_height; x2'l=.25[x1,x1l];
rt x3r=w-u; top y3l=h;
drop_serif(1,jut); x1b:=.5[x1a,x1l];
p0=z2r..z2'r..z1r;
tim0=xpart(p0 intersectiontimes ((0,y2r+hair-currentbreadth)--(w,y2r+hair-currentbreadth)));
p1=z3l{down}..point tim0 of p0;
filldraw z2r..{up}z3r..subpath(0,rundy(p1,1).zpet) of p1
         ..subpath(rundy(p0,tim0),infinity) of p0&z1r..{x1l-x1r,-.25serif_drop}z1.a
	 &z1.a{z1b-z1a}..z1.b..z2'l..{-direction 0 of p0}z2l--cycle;
p100=z1.a{z1b-z1a}..z1.b..z2'l..{-direction 0 of p0}z2l;
p101=p0;
oblu:=bbw;
infill subpath(rundy(p100,0),rundy(p100,(infinity,.8bbw)).zpet) of p100
       ..subpath(rundy(p101,(0,.8bbw)),rundy(p101,length(p101)).zpet) of p101
       ..z1l+tiny*down..cycle;
penlabels(1,2,2',3);
endchar;

iff known chars.greek_nu_SS:
bskchar "The sans-serif Greek letter nu";
beginchar(chars.greek_nu_SS,8.5u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(-.5u#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,0); pos2(stem,0); pos2'(1.1stem,0);
pos3(stem,-10); 
lft x1l=lft x2l=1.5u; top y1=h; bot y2=0; y2'=bar_height; x2'l=.25[x1,x1l];
rt x3r=w-u; top y3l=h;
drop_serif(1,jut);
p0=z2r..z2'r..z1r;
tim0=xpart(p0 intersectiontimes ((0,y2r+hair-currentbreadth)--(w,y2r+hair-currentbreadth)));
p1=z3l{down}..point tim0 of p0;
filldraw z2r..{up}z3r..subpath(0,rundy(p1,1).zpet) of p1
         ..subpath(rundy(p0,tim0),infinity) of p0&z1r{left}..{down}z1.b..z2'l..{-direction 0 of p0}z2l--cycle;
penlabels(1,2,2',3);
endchar;

iff known chars.greek_xi:
bskchar "The Greek letter xi";
beginchar(chars.greek_xi,9u#,asc_height#,.5desc_depth#); uni "0x03BE";
italcorr asc_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(hair,90); pos2(stem,180); pos0(hair,0); pos7(stem,180);
pos3(curve,240); pos4(hair,180); pos5(hair,100); pos6(stem,0);
pos8(hair,-90); pos9(hair,90); pos10(hair,0); pos11(hair,-90);
pos12(hair,180);
lft x2r=u; top y1r=.35[x_height,bar_height]; y2=.5x_height; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0r=w-2u; y0=y1-stem; x3=.5w; y3=.5bar_height-.5d;
x6=x5-stem; y6=y5+.5stem; lft x7r=1.5u; y7=.35[y1,y9];
x8=.25[x1,x0]; .25[y8,y1]=y0; top y9r=h-.75stem; x10-x9=x0-x1;
z6'=z6+.2stem*up+o*left; z6''=z6+.5(stem-currentbreadth)*dir-45;
rt x10r=w-u; y10=y9-.5stem; y10=.5[y11,y9]; x11=.5[x9,x10];
top y12=h; x12=x9-stem;
p0=z12r..z11r..z10r..z9r..z7r{down}..z8r..{up}z0r..z1r..z2r..z3r..z4r..z5r..z6''..z6'..z6l;
p1=z6l..z5l..z4l..z3l..z2l..z1l..{down}z0l..z8l..{up}z7l..z9l..z10l..z11l..z12l;
(tim0,tim1-5)=p0 intersectiontimes subpath(5,infinity) of p0;
(tim2,tim3-4)=p1 intersectiontimes subpath (4,5) of p0;
(tim4-5,tim5-7)=subpath(5,infinity) of p0 intersectiontimes subpath(7,infinity) of p1;
(tim6-7,tim7)=subpath(7,infinity) of p1 intersectiontimes subpath(0,6) of p1;
(tim8,tim9-1)=p0 intersectiontimes subpath(1,infinity) of p0;
(tim10,tim11)=p1 intersectiontimes subpath(0,1) of p0;
(tim12-2,tim13)=subpath(2,4) of p0 intersectiontimes p1;
(tim14-8,tim15-11)=subpath(8,10) of p1 intersectiontimes subpath(11,infinity) of p1;
filldraw subpath(0,rundy(p0,tim8).zpet) of p0..subpath(rundy(p0,tim9),rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p0,tim1),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),rundy(p0,(tim4,hair)).zpet) of p0
	 ..subpath(rundy(p1,(tim5,hair)),rundy(p1,tim10).zpet) of p1
	 ..subpath(rundy(p0,tim11),rundy(p0,(tim12,hair)).zpet) of p0
	 ..subpath(rundy(p1,(tim13,hair)),infinity) of p1..cycle;
infill subpath(rundy(p1,tim7),rundy(p1,tim6).zpet) of p1..cycle;
infill subpath(rundy(p1,tim14),rundy(p1,tim15).zpet) of p1..cycle;
penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12); labels(0',0'',6',6'');
math_fit(mft,0);
endchar;

iff known chars.greek_xi_BB:
bskchar "The blackboard-bold Greek letter xi";
beginchar(chars.greek_xi_BB,9u#,asc_height#,.5desc_depth#); uni "non";
italcorr asc_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(hair,90); pos2(.8cap_stem,180); pos0(hair,0); pos7(.8cap_stem,180);
pos3(cap_stem,240); pos4(hair,180); pos5(hair,100); pos6(stem,0);
pos8(hair,-90); pos9(hair,90); pos10(hair,0); pos11(hair,-90);
pos12(hair,180);
lft x2r=u; top y1r=.35[x_height,bar_height]; y2=.5x_height; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0r=w-2u; y0=y1-stem; x3=.5w; y3=.5bar_height-.5d;
x6=x5-stem; y6=y5+.5stem; lft x7r=1.5u; y7=.35[y1,y9];
x8=.25[x1,x0]; .25[y8,y1]=y0; top y9r=h-.75stem; x10-x9=x0-x1;
z6'=z6+.2stem*up+o*left; z6''=z6+.5(stem-currentbreadth)*dir-45;
rt x10r=w-u; y10=y9-.5stem; y10=.5[y11,y9]; x11=.5[x9,x10];
top y12=h; x12=x9-stem;
p0=z12r..z11r..z10r..z9r..z7r{down}..z8r..{up}z0r..z1r..z2r..z3r..z4r..z5r..z6''..z6'..z6l;
p1=z6l..z5l..z4l..z3l..z2l..z1l..{down}z0l..z8l..{up}z7l..z9l..z10l..z11l..z12l;
(tim0,tim1-5)=p0 intersectiontimes subpath(5,infinity) of p0;
(tim2,tim3-4)=p1 intersectiontimes subpath (4,5) of p0;
(tim4-5,tim5-7)=subpath(5,infinity) of p0 intersectiontimes subpath(7,infinity) of p1;
(tim6-7,tim7)=subpath(7,infinity) of p1 intersectiontimes subpath(0,6) of p1;
(tim8,tim9-1)=p0 intersectiontimes subpath(1,infinity) of p0;
(tim10,tim11)=p1 intersectiontimes subpath(0,1) of p0;
(tim12-2,tim13-11)=subpath(2,4) of p0 intersectiontimes subpath(11,infinity) of p1;
(tim14-8,tim15-11)=subpath(8,10) of p1 intersectiontimes subpath(11,infinity) of p1;
filldraw subpath(0,rundy(p0,tim8).zpet) of p0
         ..subpath(rundy(p0,tim9),rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p0,tim1),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),rundy(p0,(tim4,hair)).zpet) of p0
	 ..subpath(rundy(p1,(tim5,hair)),rundy(p1,tim10).zpet) of p1
	 ..subpath(rundy(p0,tim11),rundy(p0,(tim12,hair)).zpet) of p0
	 ..subpath(rundy(p1,(tim13,hair)),infinity) of p1..cycle;
infill subpath(rundy(p1,tim7),rundy(p1,tim6).zpet) of p1..cycle;
infill subpath(rundy(p1,tim14),rundy(p1,tim15).zpet) of p1..cycle;
p100=subpath(7,10) of p0;
p101=subpath(2,5) of p1;
p102=subpath(3,5) of p0;
p103=subpath(7,10) of p1;
z100=bsktouch(p100,down,p101,up);
z101=bsktouch(p100,right,subpath(0,1) of p101,left);
z102=bsktouch(p102,down,p103,up);
tim100=xpart(p100 intersectiontimes (z100--(0,y100)));
tim101=xpart(p101 intersectiontimes (z100--(w,y100)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y4)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2)));
tim104=xpart(p102 intersectiontimes (z102--(0,y102)));
tim105=xpart(p103 intersectiontimes (z102--(x11,y102)));
tim106=xpart(p102 intersectiontimes ((0,.5[y1,y0])--(x8,.5[y1,y0])));
tim107=xpart(p103 intersectiontimes ((0,.5[y1,y0])--(x8,.5[y1,y0])));
oblu:=bbw;
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103),rundy(p101,tim101).zpet) of p101..cycle;
infill subpath(rundy(p102,tim104),rundy(p102,tim106).zpet) of p102
       ..subpath(rundy(p103,tim107),rundy(p103,tim105).zpet) of p103..cycle;
penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12); labels(0',0'',6',6'',100,101,102);
endchar;

iff known chars.greek_xi_SS:
bskchar "The sans-serif Greek letter xi";
beginchar(chars.greek_xi_SS,9u#,asc_height#,.5desc_depth#); uni "non";
italcorr asc_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(hair,90); pos2(stem,180); pos0(hair,0); pos7(stem,180);
pos3(curve,240); pos4(hair,180); pos5(hair,100); pos6(hair,90);
pos8(hair,-90); pos9(hair,90); pos10(hair,0); pos11(hair,-90);
pos12(hair,180);
lft x2r=u; top y1r=.35[x_height,bar_height]; y2=.5x_height; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0r=w-2u; y0=y1-stem; x3=.5w; y3=.5bar_height-.5d;
x6=x5-stem; y6=y5; lft x7r=1.5u; y7=.35[y1,y9];
x8=.25[x1,x0]; .25[y8,y1]=y0; top y9r=h-.75stem; x10-x9=x0-x1;
rt x10r=w-u; y10=y9-.5stem; y10=.5[y11,y9]; x11=.5[x9,x10];
top y12=h; x12=x9-stem;
p0=z12r..z11r..z10r..z9r..z7r{down}..z8r..{up}z0r..z1r..z2r..z3r..z4r..z5r---z6r;
p1=z6l---z5l..z4l..z3l..z2l..z1l..{down}z0l..z8l..{up}z7l..z9l..z10l..z11l..z12l;
(tim0,tim1-5)=p0 intersectiontimes subpath(5,infinity) of p0;
(tim2,tim3-4)=p1 intersectiontimes subpath (4,5) of p0;
(tim4-5,tim5-7)=subpath(5,infinity) of p0 intersectiontimes subpath(7,infinity) of p1;
(tim6-7,tim7)=subpath(7,infinity) of p1 intersectiontimes subpath(0,6) of p1;
(tim8,tim9-1)=p0 intersectiontimes subpath(1,infinity) of p0;
(tim10,tim11)=p1 intersectiontimes subpath(0,1) of p0;
(tim12-2,tim13)=subpath(2,4) of p0 intersectiontimes p1;
(tim14-8,tim15-11)=subpath(8,10) of p1 intersectiontimes subpath(11,infinity) of p1;
filldraw subpath(0,rundy(p0,tim8).zpet) of p0..subpath(rundy(p0,tim9),rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p0,tim1),infinity) of p0
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),rundy(p0,(tim4,hair)).zpet) of p0
	 ..subpath(rundy(p1,(tim5,hair)),rundy(p1,tim10).zpet) of p1
	 ..subpath(rundy(p0,tim11),rundy(p0,(tim12,hair)).zpet) of p0
	 ..subpath(rundy(p1,(tim13,hair)),infinity) of p1..cycle;
infill subpath(rundy(p1,tim7),rundy(p1,tim6).zpet) of p1..cycle;
infill subpath(rundy(p1,tim14),rundy(p1,tim15).zpet) of p1..cycle;
penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12); labels(0',0'',6',6'');
endchar;

charscription(9u,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;
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.greek_omicron:
bskchar "The Greek letter omicron";
beginchar(chars.greek_omicron,9u#,x_height#,0); uni "0x03BF";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
endchar;

iff known chars.greek_omicron_SS:
bskchar "The sans-serif Greek letter omicron";
beginchar(chars.greek_omicron_SS,9u#,x_height#,0); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
endchar;

iff known chars.greek_omicron_BB:
bskchar "The blackboard-bold Greek letter omicron";
beginchar(chars.greek_omicron_BB,9u#,x_height#,0); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
pos1(cap_stem,0); pos2(hair,90); pos3(cap_stem,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;
filldraw z1l{down}..z2l..{up}z3l..z4l..{down}cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
path p[]; numeric tim[];
p100:=z4r..z1r{down}..z2r..z3r..cycle;
p101:=reverse z4l..z1l{down}..z2l..{up}z3l..cycle;
oblu:=1.25bbw;
z100=bsktouch(subpath(0,1) of p100,up,p101,down);
z101=bsktouch(subpath(1,2) of p100,down,p101,up);
z102=bsktouch(subpath(3,4) of p100,up,p101,down);
z103=bsktouch(subpath(2,3) of p100,down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y1)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4l+5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y1)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2l-5)));
tim104=xpart(p100 intersectiontimes (z102--(x102,y1)));
tim105=xpart(p101 intersectiontimes (z102--(x102,y4l+5)));
tim106=xpart(p100 intersectiontimes (z103--(x103,y1)));
tim107=xpart(p101 intersectiontimes (z103--(x103,y2l-5)));
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103).zpet,rundy(p101,tim101)) of p101..cycle;
infill subpath(rundy(p100,tim104).zpet,rundy(p100,tim106)) of p100
       ..subpath(rundy(p101,tim107),rundy(p101,tim105).zpet) of p101..cycle;
penlabels(1,2,3,4); labels(100,101,102,103);
endchar;

iff known chars.greek_pi:
bskchar "The Greek letter pi";
beginchar(chars.greek_pi,11u#,x_height#,0); uni "0x03C0";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,180); pos2(stem,90); pos3(stem,90); 
pos4(hair,90); pos5(curve,10); pos6(.5[hair,stem],0); 
pos7(.5[hair,stem],0); pos8(curve,-10); pos8'(.5[curve,stem],0);
lft x1r=u; y1=y2l-stem;
rt x4l=w-u; .5[x2,x3]=.5w; x3-x2=.5(w-u);
top y2r=top y3r=h; y4r=y3r; x2l:=x2l+.5stem; 
x5=x6r; bot y5l=0; y5r:=y5r+o;
z6r=z3; y7=y6; x7l=x2+stem; bot y8=0; x8r=x7l;
y8'=.5bar_height; z8'l=whatever[z8l,z7l]+.5hair*right;
y6l:=y6l-o;
p0=z1r..z2r---z4r..z4l{down}..z3l..{left}z2l..{dir-60}z1l..{dir150}z1r;
p1=reverse(z6l{down}..{dir-70}z5l..(x5r,0)..z5r{dir130}..{up}z6r);
p2=reverse(z7l---z8'l..z8l&z8l..z8r..z8'r---z7r);
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath (1,infinity) of p1;
(tim4,tim5)=p0 intersectiontimes p2;
(tim6,tim7-1)=p0 intersectiontimes subpath(1,infinity) of p2;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,(tim2,2hair)),rundy(p0,(tim4,2hair)).zpet) of p0
	 ..subpath(rundy(p2,tim5),rundy(p2,tim7).zpet) of p2
	 ..subpath(rundy(p0,tim6),infinity) of p0&cycle;
penlabels(1,2,3,4,5,6,7,8,8');
math_fit(-.5[x_height#,bar_height#]*slant,-.5u#);
endchar;

iff known chars.greek_pi_BB:
bskchar "The blackboard-bold Greek letter pi";
beginchar(chars.greek_pi_BB,11u#,x_height#,0); uni "0x213C";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,180); pos2(stem,90); pos3(stem,90); 
pos4(hair,90); pos5(cap_stem,10); pos6(.5[hair,cap_stem],0); 
pos7(.5[hair,cap_stem],0); pos8(cap_stem,-10); pos8'(.5[curve,cap_stem],0);
lft x1r=u; y1=y2l-stem;
rt x4l=w-u; .5[x2,x3]=.5w; x3-x2=.5(w-u);
top y2r=top y3r=h; y4r=y3r; x2l:=x2l+.5stem; 
x5=x6r; bot y5l=1.5o; y5r:=y5r+o;
z6r=z3; y7=y6; x7l=x2+stem; bot y8=0; x8r=x7l;
y8'=.5bar_height; z8'l=whatever[z8l,z7l]+.5hair*right;
y6l:=y6l-o;
p0=z1r..z2r---z4r..z4l{down}..z3l..{left}z2l..{dir-60}z1l..{dir150}z1r;
p1=reverse(z6l{down}..{dir-70}z5l..(x5r,0)..z5r{dir130}..{up}z6r);
p2=reverse(z7l---z8'l..z8l&z8l..z8r..z8'r---z7r);
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath (1,infinity) of p1;
if tim2=-1: tim2:=4; tim3:=length(p1); fi
(tim4,tim5)=p0 intersectiontimes p2;
(tim6,tim7-1)=p0 intersectiontimes subpath(1,infinity) of p2;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 if not boldmath:..subpath(rundy(p0,(tim2,2hair)),rundy(p0,(tim4,2hair)).zpet) of p0 fi
	 ..subpath(rundy(p2,tim5),rundy(p2,tim7).zpet) of p2
	 ..subpath(rundy(p0,tim6),infinity) of p0&cycle;
p100=subpath(0,rundy(p2,3).zpet) of p2..subpath(rundy(p2,3),infinity) of p2;
oblu:=1.25bbw;
tim100=ypart(p0 intersectiontimes p100);
tim101-1=ypart(p0 intersectiontimes subpath(1,infinity) of p100);
infill subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1..cycle;
infill subpath(rundy(p100,tim100),rundy(p100,tim101).zpet) of p100..cycle;
penlabels(1,2,3,4,5,6,7,8,8');
endchar;

iff known chars.greek_pi_SS:
bskchar "The sans-serif Greek letter pi";
beginchar(chars.greek_pi_SS,11u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,180); pos2(stem,90); pos3(stem,90); 
pos4(hair,90); pos5(curve,10); pos6(.5[hair,stem],0); 
pos7(.5[hair,stem],0); pos8(curve,0); pos8'(curve,0);
lft x1r=u; y1=y2l-stem;
rt x4l=w-u; .5[x2,x3]=.5w; x3-x2=.5(w-u);
top y2r=top y3r=h; y4r=y3r; x2l:=x2l+.5stem; 
x5=x6; bot y5l=o; 
z6r=z3; y7=y6; x7l=x2+stem; bot y8=0; x8=x7;
y8'=.5bar_height; z8'l=whatever[z8l,z7l];
y6l:=y6l-o;
p0=z1r..z2r---z4r..z4l{down}..z3l---z2l..{dir-60}z1l..{dir150}z1r;
p1=reverse(z6l{down}..{down}z5l..z5r{up}..{up}z6r);
p2=reverse(z7l---z8'l..z8l&z8l..z8r...z8'r---z7r);
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath (1,infinity) of p1;
(tim4,tim5)=p0 intersectiontimes p2;
(tim6,tim7-1)=p0 intersectiontimes subpath(1,infinity) of p2;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,(tim2,hair)),rundy(p0,(tim4,hair)).zpet) of p0
	 ..subpath(rundy(p2,tim5),rundy(p2,tim7).zpet) of p2
	 ..subpath(rundy(p0,tim6),infinity) of p0&cycle;
penlabels(1,2,3,4,5,6,7,8,8');
endchar;

iff known chars.greek_pi_curved:
bskchar "The Greek letter pi (curved version)";
beginchar(chars.greek_pi_curved,11u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,180); pos2(stem,90); pos3(stem,90); 
pos4(hair,180); pos5(curve,10); pos6(.5[hair,stem],0); 
pos7(.5[hair,stem],0); pos8(curve,-10); pos8'(.5[curve,stem],0);
lft x1r=u; y1=y2l-stem;
rt x4l=w-u; .5[x2,x3]=.5w; x3-x2=.5(w-u);
top y2r=top y3r=h; top y4=h+hair; x2l:=x2l+.5stem; y3r:=y3r-o;
x5=x6r; bot y5l=0; y5r:=y5r+o;
z6r=z3; y7=y6; x7l=x2+stem; bot y8=0; x8r=x7l;
y8'=.5bar_height; z8'l=whatever[z8l,z7l]+.5hair*right;
y6l:=y6l-o;
p0=z1r..z2r{right}..z3r..{z4-z3}z4r..z4l{down}..z3l..{left}z2l..{dir-60}z1l..{dir150}z1r;
p1=reverse(z6l{down}..{dir-70}z5l..(x5r,0)..z5r{dir130}..{up}z6r);
p2=reverse(z7l---z8'l..z8l&z8l..z8r..z8'r---z7r);
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath (1,infinity) of p1;
(tim4,tim5)=p0 intersectiontimes p2;
(tim6,tim7-1)=p0 intersectiontimes subpath(1,infinity) of p2;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,(tim2,2hair)),rundy(p0,(tim4,2hair)).zpet) of p0
	 ..subpath(rundy(p2,tim5),rundy(p2,tim7).zpet) of p2
	 ..subpath(rundy(p0,tim6),infinity) of p0&cycle;
penlabels(1,2,3,4,5,6,7,8,8');
math_fit(-.5[x_height#,bar_height#]*slant,-.5u#);
endchar;

charscription(13.5u,x_height,0)(
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,90); pos2(hair,180); pos3(stem,270);
pos4(hair,90); pos4'(hair,240); pos4''(.5[hair,stem],-60);
pos5(hair,270); pos6(curve,0); pos7(stem,90);
pos8(hair,90); pos9(stem,90); pos10(stem,90); pos11(hair,90);
top y1r=h; lft x2r=1.5u; y2=.5h; bot y3r=-o;
rt x1=x3; .5[x3,x5]=.5w; x5-x3=1/3w;
1/3[x4,x3]=.45w; y4l=bar_height; 
bot y5r=-o; y6=y2; rt x6r=w-u;
x7-x6=(x2-x1); top y7r=h;
y4'=y4''=.6bar_height; .5[x4',x4'']=x4; x4'-x4''=.35(y3-y4);
z1'=z1+.2curve*right+o*up; z1''=z1+.5(curve-currentbreadth)*dir135;
z7'=z7+.2curve*right+o*down; z7''=z7+.5(curve-currentbreadth)*dir45;
lft x8=.5u; y8r=y9r; top y9r=top y10r=h; x9=.5[x8,x1];
rt x11=w-.5u; x10=.5[x11,x7]; y11r=y10r;
p0=z7'{right}..z6l..z5l..z4'l..z4l{right}..z4''l..z3l{left}..z2l..{right}z1l;
p1=z1l{right}..z1'..z1r..z1''..z2r..{right}z3r..z4''r..{left}z4r..z4'r..{right}z5r..z6r..z7''..z7r;
p2=z8l{right}..z9l...z10l..{right}z11l..{left}z11r..z10r...z9r..{left}z8r;
(tim0,tim1-7)=subpath(0,6) of p1 intersectiontimes subpath (7,infinity) of p1;
(tim2-1,tim3)=subpath(1,infinity) of p0 intersectiontimes p1;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,6) of p0;
(tim6,tim7-4)=subpath(0,4) of p0 intersectiontimes subpath(4,infinity) of p0;
(tim8,tim9-2)=p2 intersectiontimes subpath(2,infinity) of p1;
(tim10-10,tim11)=subpath (10,infinity) of p1 intersectiontimes p2;
filldraw subpath(0,rundy(p2,tim8).zpet) of p2
         ..subpath(rundy(p1,tim9),rundy(p1,(tim0,f_obl)).zpet) of p1
	 ..subpath(rundy(p1,(tim1,f_obl)),rundy(p1,tim10).zpet) of p1
	 ..subpath(rundy(p2,tim11),infinity) of p2..cycle;
infill subpath(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:=f_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); labels(1',1'',7',7'');
);

iff known chars.greek_varpi:
bskchar "The Greek letter pi---alternative";
beginchar(chars.greek_varpi,13.5u#,x_height#,0); uni "0x03D6";
italcorr x_height#*slant+.5u#;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
math_fit(mft-.5u#,u#);
endchar;

iff known chars.greek_varpi_SS:
bskchar "The sans-serif Greek letter pi---alternative";
beginchar(chars.greek_varpi_SS,13.5u#,x_height#,0); uni "non";
italcorr x_height#*slant+.5u#;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
endchar;

iff known chars.greek_varpi_BB:
bskchar "The blackboard-bold Greek letter pi---alternative";
beginchar(chars.greek_varpi_BB,13.5u#,x_height#,0); uni "non";
italcorr x_height#*slant+.5u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,90); pos2(hair,180); pos3(stem,270);
pos4(hair,90); pos4'(hair,240); pos4''(.5[hair,stem],-60);
pos5(hair,270); pos6(cap_stem,0); pos7(stem,90);
pos8(hair,90); pos9(stem,90); pos10(stem,90); pos11(hair,90);
top y1r=h; lft x2r=1.5u; y2=.5h; bot y3r=-o;
rt x1=x3; .5[x3,x5]=.5w; x5-x3=1/3w;
1/3[x4,x3]=.45w; y4l=bar_height; 
bot y5r=-o; y6=y2; rt x6r=w-u;
x7-x6=(x2-x1); top y7r=h;
y4'=y4''=.6bar_height; .5[x4',x4'']=x4; x4'-x4''=.35(y3-y4);
z1'=z1+.2curve*right+o*up; z1''=z1+.5(curve-currentbreadth)*dir135;
z7'=z7+.2curve*right+o*down; z7''=z7+.5(curve-currentbreadth)*dir45;
lft x8=.5u; y8r=y9r; top y9r=top y10r=h; x9=.5[x8,x1];
rt x11=w-.5u; x10=.5[x11,x7]; y11r=y10r;
p0=z7'{right}..z6l..z5l..z4'l..z4l{right}..z4''l..z3l{left}..z2l..{right}z1l;
p1=z1l{right}..z1'..z1r..z1''..z2r..{right}z3r..z4''r..{left}z4r..z4'r..{right}z5r..z6r..z7''..z7r;
p2=z8l{right}..z9l...z10l..{right}z11l..{left}z11r..z10r...z9r..{left}z8r;
(tim0,tim1-7)=subpath(0,6) of p1 intersectiontimes subpath (7,infinity) of p1;
(tim2-1,tim3)=subpath(1,infinity) of p0 intersectiontimes p1;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,6) of p0;
(tim6,tim7-4)=subpath(0,4) of p0 intersectiontimes subpath(4,infinity) of p0;
(tim8,tim9-2)=p2 intersectiontimes subpath(2,infinity) of p1;
(tim10-10,tim11)=subpath (10,infinity) of p1 intersectiontimes p2;
filldraw subpath(0,rundy(p2,tim8).zpet) of p2
         ..subpath(rundy(p1,tim9),rundy(p1,(tim0,f_obl)).zpet) of p1
	 ..subpath(rundy(p1,(tim1,f_obl)),rundy(p1,tim10).zpet) of p1
	 ..subpath(rundy(p2,tim11),infinity) of p2..cycle;
infill subpath(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:=f_obl;
infill subpath(rundy(p0,tim6),rundy(p0,tim7).zpet) of p0 ..cycle;
p100=subpath(0,2) of p0;
p101=subpath(9,11) of p1;
z100=bsktouch(subpath(0,1) of p100,1.5up,p101,1.5down);
z101=bsktouch(p100,down,subpath(0,1) of p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y6)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y7r+5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y6)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y5r-u-5)));
oblu:=bbw;
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103),rundy(p101,tim101).zpet) of p101..cycle;
penlabels(0,1,2,3,4,4',4'',5,6,7,8,9,10,11); labels(1',1'',7',7'',100,101);
endchar;

iff known chars.greek_varpi_curved:
bskchar "The Greek letter pi---alternative (curved version)";
beginchar(chars.greek_varpi_curved,13.5u#,x_height#,0); uni "non";
italcorr x_height#*slant+.5u#;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,90); pos2(hair,180); pos3(stem,270);
pos4(hair,90); pos4'(hair,240); pos4''(.5[hair,stem],-60);
pos5(hair,270); pos6(curve,0); pos7(stem,90);
pos8(hair,90); pos9(stem,90); pos10(stem,90); pos11(hair,90);
top y1r=h; lft x2r=1.5u; y2=.5h; bot y3r=-o;
rt x1=x3; .5[x3,x5]=.5w; x5-x3=1/3w;
1/3[x4,x3]=.45w; y4l=bar_height; 
bot y5r=-o; y6=y2; rt x6r=w-u;
x7-x6=(x2-x1); top y7r=h;
y4'=y4''=.6bar_height; .5[x4',x4'']=x4; x4'-x4''=.35(y3-y4);
z1'=z1+.2curve*right+o*up; z1''=z1+.5(curve-currentbreadth)*dir135;
z7'=z7+.2curve*right+o*down; z7''=z7+.5(curve-currentbreadth)*dir45;
lft x8=.5u; y8l=.5[bar_height,x_height]; top y9r=top y10r=h; x9=.5[x8,x1];
rt x11=w-.5u; x10=.5[x11,x7]; y11r=h;
p0=z7'{right}..z6l..z5l..z4'l..z4l{right}..z4''l..z3l{left}..z2l..{right}z1l;
p1=z1l{right}..z1'..z1r..z1''..z2r..{right}z3r..z4''r..{left}z4r..z4'r..{right}z5r..z6r..z7''..z7r;
p2=z8l{up}..z9l...z10l..{right}z11l..{left}z11r..z10r...z9r..{down}z8r;
(tim0,tim1-7)=subpath(0,6) of p1 intersectiontimes subpath (7,infinity) of p1;
(tim2-1,tim3)=subpath(1,infinity) of p0 intersectiontimes p1;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,6) of p0;
(tim6,tim7-4)=subpath(0,4) of p0 intersectiontimes subpath(4,infinity) of p0;
(tim8,tim9-2)=p2 intersectiontimes subpath(2,infinity) of p1;
(tim10-10,tim11)=subpath (10,infinity) of p1 intersectiontimes p2;
filldraw subpath(0,rundy(p2,tim8).zpet) of p2
         ..subpath(rundy(p1,tim9),rundy(p1,(tim0,hair)).zpet) of p1
	 ..subpath(rundy(p1,(tim1,hair)),rundy(p1,tim10).zpet) of p1
	 ..subpath(rundy(p2,tim11),infinity) of p2..cycle;
infill subpath(0,rundy(p0,tim2).zpet) of p0
       ..subpath(rundy(p1,tim3),rundy(p1,(tim4,1.2hair)).zpet) of p1
       ..subpath(rundy(p0,tim5),infinity) of p0..cycle;
oblu:=f_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); labels(1',1'',7',7'');
math_fit(mft-.5u#,u#);
endchar;

iff known chars.greek_rho:
bskchar "The Greek letter rho";
beginchar(chars.greek_rho,8.5u#,x_height#,desc_depth#); uni "0x03C1";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,0); pos2(hair,90); pos3(stem,180); pos4(hair,270);
pos5(curve,20); pos6(.5[stem,hair],0);
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;
bot y5l=-d; y6=-.5d; x6=x1r; x6r=lft x5l; x5'=x5r; y5'=y5l;
p0=z5l{up}..z6l..{up}z1l..z4l..{down}z3l..z2l..{up}z1l;
p1=z1r{down}..z6r..z5r..z5'..{up}z5l;
(tim0,tim1)=p0 intersectiontimes p1;
filldraw subpath(0, rundy(p0,tim0).zpet) of p0..subpath(rundy(p1,tim1),infinity) of p1..cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
penlabels(1,2,3,4,5,6); labels(5');
endchar;

iff known chars.greek_rho_BB:
bskchar "The blackboard-bold Greek letter rho";
beginchar(chars.greek_rho_BB,9u#,x_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(cap_stem,0); pos2(hair,90); pos3(.8cap_stem,180); pos4(hair,270);
pos5(cap_stem,20); pos6(.5[cap_stem,hair],0);
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;
bot y5l=-d; y6=-.5d; x6=x1r; x6r=lft x5l; x5'=x5r; y5'=y5l;
p0=z5l{up}..z6l..{up}z1l..z4l..{down}z3l..z2l..{up}z1l;
p1=z1r{down}..z6r..z5r..z5'..{up}z5l;
(tim0,tim1)=p0 intersectiontimes p1;
filldraw subpath(0, rundy(p0,tim0).zpet) of p0..subpath(rundy(p1,tim1),infinity) of p1..cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
p100=subpath(0,3) of p0;
p101=subpath(1,5) of (z3r{up}..z4r..{down}p1);
p102=subpath(3,5) of p0;
p103=subpath(1,3) of z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
z100=bsktouch(p100,down,p101,up);
z101=bsktouch(p102,down,p103,up);
z102=bsktouch(p102,up,p103,down);
tim100=xpart(p100 intersectiontimes (z100--(x100,y4l+u+5)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y1)));
tim102=xpart(p102 intersectiontimes (z101--(x101,y4l+5)));
tim103=xpart(p103 intersectiontimes (z101--(x101,y3)));
tim104=xpart(p102 intersectiontimes (z102--(x102,y2l-u-5)));
tim105=xpart(p103 intersectiontimes (z102--(x102,y3)));
oblu:=bbw;
infill subpath(rundy(p100,0),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),rundy(p101,infinity).zpet) of p101..cycle;
infill subpath(rundy(p102,tim102),rundy(p102,tim104).zpet) of p102
       ..reverse subpath(rundy(p103,tim103),rundy(p103,tim105).zpet) of p103..cycle;
penlabels(1,2,3,4,5,6); labels(5',100,101,102);
endchar;

iff known chars.greek_rho_SS:
bskchar "The sans-serif Greek letter rho";
beginchar(chars.greek_rho_SS,8.5u#,x_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,0); pos2(hair,90); pos3(stem,180); pos4(hair,270);
pos5(curve,0);
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;
bot y5=-d; x1=x5;
p0=z5l---z1l..z4l..{down}z3l..z2l..{up}z1l;
p1=z1r---z5r..{up}z5l;
(tim0,tim1)=p0 intersectiontimes p1;
filldraw subpath(0, rundy(p0,tim0).zpet) of p0..subpath(rundy(p1,tim1),infinity) of p1..cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
penlabels(1,2,3,4,5);
endchar;

iff known chars.greek_varrho:
bskchar "The Greek letter rho---alternative";
beginchar(chars.greek_varrho,8.5u#,x_height#,desc_depth#); uni "0x03F1";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,0); pos2(hair,90); pos3(stem,180); pos4(hair,270);
pos5(stem,0); pos6(stem,0); pos7(hair,90); pos8(hair,0); pos9(stem,-60);
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;
y5=.5[y6,y1]; rt x5r=x6r=x1r; 
y7=.5[y6,y9]; x7=x2; rt x8r=w-u; y8=.5[y7,y9]; y8-y9=3/4stem;
bot y9r=-d; x9r=x8-stem; .5[x9',x9r]=x9l; y9'=y9l;
p0=z1l{up}..z4l..{down}z3l..z2l..{up}z1l;
p1=z1r---z5r..z6r..{z8-z9}z7r..{down}z8r..z9r..z9'..z9l..{up}z8l..{z9-z8}z7l..z6l..z5l---z1l;
(tim0,tim1)=p0 intersectiontimes p1;
filldraw subpath(0, rundy(p0,tim0).zpet) of p0..subpath(rundy(p1,tim1),infinity) of p1..cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
penlabels(1,2,3,4,5,6,7,8,9); labels(9');
endchar;

iff known chars.greek_varrho_BB:
bskchar "The blackboard-bold Greek letter rho---alternative";
beginchar(chars.greek_varrho_BB,9u#,x_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(cap_stem,0); pos2(hair,90); pos3(.8cap_stem,180); pos4(hair,270);
pos5(cap_stem,0); pos6(.8cap_stem,0); pos7(hair,90); pos8(hair,0); pos9(stem,-60);
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;
y5=.5[y6,y1]; x5r=x6r=x1r; 
y7=.5[y6,y9]; x7=x2; rt x8r=w-u; y8=.5[y7,y9]; y8-y9=3/4stem;
bot y9r=-d; x9r=x8-stem; .5[x9',x9r]=x9l; y9'=y9l;
p0=z1l{up}..z4l..{down}z3l..z2l..{up}z1l;
p1=z1r---z5r..z6r..{z8-z9}z7r..{down}z8r..z9r..z9'..z9l..{up}z8l..{z9-z8}z7l..z6l..z5l---z1l;
(tim0,tim1)=p0 intersectiontimes p1;
filldraw subpath(0, rundy(p0,tim0).zpet) of p0..subpath(rundy(p1,tim1),infinity) of p1..cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
p100=subpath(9,infinity) of p1..subpath(0,1) of p0;
p101=subpath(1,5) of (z3r{up}..z4r..{down}subpath(0,3) of p1);
p102=subpath(1,3) of p0;
p103=subpath(1,3) of z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
z100=bsktouch(p100,down,p101,up);
z101=bsktouch(p100,up,p101,down);
z102=bsktouch(p102,down,p103,up);
z103=bsktouch(p102,up,p103,down);
tim100=xpart(p100 intersectiontimes (z100--(x100,y4l+u+5)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y1)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y9)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y6)));
tim104=xpart(p102 intersectiontimes (z102--(x102,y4l+5)));
tim105=xpart(p103 intersectiontimes (z102--(x102,y3)));
tim106=xpart(p102 intersectiontimes (z103--(x103,y2l-u-5)));
tim107=xpart(p103 intersectiontimes (z103--(x103,y3)));
oblu:=bbw;
infill subpath(rundy(p100,tim102),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),rundy(p101,tim103).zpet) of p101..cycle;
infill subpath(rundy(p102,tim104),rundy(p102,tim106).zpet) of p102
       ..reverse subpath(rundy(p103,tim105),rundy(p103,tim107).zpet) of p103..cycle;
penlabels(1,2,3,4,5,6,7,8,9); labels(9',100,101,102,103);
endchar;

iff known chars.greek_varrho_SS:
bskchar "The sans-serif Greek letter rho---alternative";
beginchar(chars.greek_varrho_SS,8.5u#,x_height#,.75desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,0); pos2(hair,90); pos3(stem,180); pos4(hair,270);
pos5(stem,0); pos6(stem,0); pos7(hair,90); pos8(hair,90);
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;
y5=.5[y6,y1]; rt x5r=x6r=x1r; 
y7l=y8l=-d; x7=x2; rt x8r=w-2u; y6=.5y7;
p0=z1l{up}..z4l..{down}z3l..z2l..{up}z1l;
p1=z1r---z5r..z6r..z7r---z8r..z8l---z7l..z6l..z5l---z1l;
(tim0,tim1)=p0 intersectiontimes p1;
filldraw subpath(0, rundy(p0,tim0).zpet) of p0..subpath(rundy(p1,tim1),infinity) of p1..cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
penlabels(1,2,3,4,5,6,7,8,9); labels(9');
endchar;

iff known chars.greek_sigma:
bskchar "The Greek letter sigma";
beginchar(chars.greek_sigma,9.5u#,x_height#,0); uni "0x03C3";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,0); pos2(hair,90); pos3(stem,180); pos4(hair,270);
pos5(.35[stem,hair],-90); pos6(hair,-90);
lft x1l=u; rt x3l=w-u-stem; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2=x4;
bot y2l=-o; top y4l=h+o; x4r:=x4r+.25u; x2r:=x2r-.25u;
top y5l=h+o; y6l=y5l; rt x6r=w-u; x5=w-3u;
p0=z6l{right}..{down}z6r..z5r..z4r;
p1=z1l{up}..z4l..{down}z3l..z2l..{up}z1l;
z0=bsktouch(subpath(1.98,infinity) of p0,down,p1,right);
tim0=xpart(p0 intersectiontimes (z0--(x0,h)));
tim1=xpart(p1 intersectiontimes (z0--(.5w,y0)));
filldraw z1l{up}..z4l--subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),infinity) of p1&cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
penlabels(1,2,3,4,5,6); 
math_fit(mft-.5u#,0);
endchar;

iff known chars.greek_sigma_BB:
bskchar "The blackboard-bold Greek letter sigma";
beginchar(chars.greek_sigma_BB,9.5u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(cap_stem,0); pos2(hair,90); pos3(.8cap_stem,180); pos4(hair,270);
pos5(.35[stem,hair],-90); pos6(hair,-90);
lft x1l=u; rt x3l=w-u-stem; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2=x4;
bot y2l=-o; top y4l=h+o; x4r:=x4r+.25u; x2r:=x2r-.25u;
top y5l=h+o; y6l=y5l; rt x6r=w-u; x5=w-3u;
p0=z6l{right}..{down}z6r..z5r..z4r;
p1=z1l{up}..z4l..{down}z3l..z2l..{up}z1l;
z0=bsktouch(subpath(2,infinity) of p0,down,p1,right);
tim0=xpart(p0 intersectiontimes (z0--(x0,h)));
tim1=xpart(p1 intersectiontimes (z0--(.5w,y0)));
filldraw z1l{up}..z4l--subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),infinity) of p1&cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
p100:=z4r..z1r{down}..z2r..z3r..cycle;
p101:=reverse z6l--z4l..z1l{down}..z2l..{up}z3l..cycle;
p102:=reverse z4l..z1l{down}..z2l..{up}z3l..cycle;
oblu:=1.25bbw;
z100=bsktouch(subpath(0,1) of p100,up,p101,down);
z101=bsktouch(subpath(1,2) of p100,down,p101,up);
z102=bsktouch(subpath(3,4) of p100,up,p102,down);
z103=bsktouch(subpath(2,3) of p100,down,p102,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y1)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4l+5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y1)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2l-5)));
tim104=xpart(p100 intersectiontimes (z102--(if boldmath:x2 else:x102 fi,y1)));
tim105=xpart(p102 intersectiontimes (z102--(x102,y4l+5)));
tim106=xpart(p100 intersectiontimes (z103--(x103,y1)));
tim107=xpart(p102 intersectiontimes (z103--(x103,y2l-5)));
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100 ..subpath(rundy(p101,tim103).zpet,rundy(p101,tim101)) of p101..cycle;
infill subpath(rundy(p100,tim104).zpet,rundy(p100,tim106)) of p100
       ..subpath(rundy(p102,tim107),rundy(p102,tim105).zpet) of p102..cycle;
penlabels(1,2,3,4,5,6); labels(100,101,102,103);
endchar;

iff known chars.greek_sigma_SS:
bskchar "The sans-serif Greek letter sigma";
beginchar(chars.greek_sigma_SS,9.5u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,0); pos2(hair,90); pos3(stem,180); pos4(hair,270);
pos5(.35[stem,hair],-90); pos6(hair,-90);
lft x1l=u; rt x3l=w-u-stem; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2=x4;
bot y2l=-o; top y4l=h+o; x4r:=x4r+.25u; x2r:=x2r-.25u;
top y5l=h+o; y6l=y5l; rt x6r=w-u; x5=w-3u;
p0=z6l{right}..z6r---z5r..z4r;
p1=z1l{up}..z4l..{down}z3l..z2l..{up}z1l;
z0=bsktouch(subpath(2,infinity) of p0,down,p1,right);
tim0=xpart(p0 intersectiontimes (z0--(x0,h)));
tim1=xpart(p1 intersectiontimes (z0--(.5w,y0)));
filldraw z1l{up}..z4l--subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),infinity) of p1&cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
penlabels(1,2,3,4,5,6); 
endchar;

iff known chars.greek_sigma_curved:
bskchar "The Greek letter sigma (curved version)";
beginchar(chars.greek_sigma_curved,9.5u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,0); pos2(hair,90); pos3(stem,180); pos4(hair,270);
pos5(.35[stem,hair],-90); pos5'(stem,-90); pos6(hair,0);
lft x1l=u; rt x3l=w-u-stem; y1=y3=.5h; .5[x2,x4]=.5[x1,x3]; x2=x4;
bot y2l=-o; top y4l=h+o; x4r:=x4r+.25u; x2r:=x2r-.25u;
top y5l=h; top y6=h+hair; rt x6r=w-u; x5=w-3u; .5[x5,x5']=.5w; y5'l=y5l;
p0=z5'{right}..z4l..z5l..{z6-z5}z6l..{down}z6r..z5r..z4r;
p1=z1l{up}..z4l..{down}z3l..z2l..{up}z1l;
z0=bsktouch(subpath(2,infinity) of p0,down,p1,right);
tim0-4=xpart(subpath(4,infinity) of p0 intersectiontimes (z0--(x0,h)));
tim1=xpart(p1 intersectiontimes (z0--(.5w,y0)));
filldraw z1l{up}..z4l..subpath(1,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),infinity) of p1&cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
penlabels(1,2,3,4,5,5',6); 
labels(0);
math_fit(mft-.5u#,0);
endchar;

iff known chars.greek_varsigma:
bskchar "The Greek letter sigma---alternative";
beginchar(chars.greek_varsigma,8u#,x_height#,.5desc_depth#); uni "0x03C2";
italcorr x_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
pos1(hair,90); pos2(stem,180); pos0(stem,0); 
pos3(curve,240); pos4(hair,180); pos5(hair,100); pos6(stem,0);
lft x2r=u; top y1r=h+o; y2=bar_height-.5d; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0r=w-u; y0=y1-stem; x3=.5w; y3=.5bar_height-.5d;
x6=x5-stem; y6=y5+.5stem;
z0'=z0+.2stem*down+o*left; z0''=z0+.5(stem-currentbreadth)*dir45;
z6'=z6+.2stem*up+o*left; z6''=z6+.5(stem-currentbreadth)*dir-45;
filldraw z0r..z0''..z1r..z2r..z3r..z4r..z5r..z6''..z6'..z6l
         ..z5l..z4l..z3l..z2l..z1l..{down}z0l..z0'..cycle;
penlabels(0,1,2,3,4,5,6); labels(0',0'',6',6'');
math_fit(mft-.5u#,0);
endchar;

iff known chars.greek_varsigma_BB:
bskchar "The blackboard-bold Greek letter sigma---alternative";
beginchar(chars.greek_varsigma_BB,8u#,x_height#,.5desc_depth#); uni "non";
italcorr x_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[];
pos1(hair,90); pos2(.8cap_stem,180); pos0(stem,0); 
pos3(cap_stem,240); pos4(hair,180); pos5(hair,100); pos6(stem,0);
lft x2r=u; top y1r=h+o; y2=bar_height-.5d; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0r=w-u; y0=y1-stem; x3=.5w; y3=.5bar_height-.5d;
x6=x5-stem; y6=y5+.5stem;
z0'=z0+.2stem*down+o*left; z0''=z0+.5(stem-currentbreadth)*dir45;
z6'=z6+.2stem*up+o*left; z6''=z6+.5(stem-currentbreadth)*dir-45;
p0:=z0r..z0''..z1r..z2r..z3r..z4r..z5r..z6''..z6'..z6l..z5l..z4l..z3l..z2l..z1l..{down}z0l..z0'..cycle;
filldraw p0;
p100=subpath(2,5) of p0;
p101=subpath(11,14) of p0;
z100=bsktouch(p100,bbs*dir45,subpath(0,2) of p101,dir-135);
z101=bsktouch(p100,dir-45,p101,dir135);
tim100=xpart(p100 intersectiontimes (z100--(x100,y5)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y2)));
tim102=xpart(p100 intersectiontimes (z101--(0,y101)));
tim103=xpart(p101 intersectiontimes (z101--(w,y101)));
oblu:=bbw;
infill subpath(rundy(p100,tim102),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),rundy(p101,tim103).zpet) of p101..cycle;
penlabels(0,1,2,3,4,5,6); labels(0',0'',6',6'',100,101);
endchar;

iff known chars.greek_varsigma_SS:
bskchar "The sans-serif Greek letter sigma---alternative";
beginchar(chars.greek_varsigma_SS,8u#,x_height#,.5desc_depth#); uni "non";
italcorr x_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
pos1(hair,90); pos2(stem,180); pos0(stem,0); 
pos3(curve,240); pos4(hair,180); pos5(hair,100); pos6(hair,90);
lft x2r=u; top y1r=h+o; y2=bar_height-.5d; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0r=w-u; y0=y1-stem; x3=.5w; y3=.5bar_height-.5d;
x6=x5-stem; y6=y5;
z0'=z0+.2stem*down+o*left; z0''=z0+.5(stem-currentbreadth)*dir45;
filldraw z0r{up}..{left}z1r..z2r..z3r..z4r..z5r---z6r
         ..z6l---z5l..z4l..z3l..z2l..{right}z1l..{down}z0l..cycle;
penlabels(0,1,2,3,4,5,6); labels(0',0'');
endchar;

iff known chars.greek_tau:
bskchar "The Greek letter tau";
beginchar(chars.greek_tau,9u#,x_height#,0); uni "0x03C4";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,180); pos2(stem,90); pos3(stem,90); 
pos4(hair,90); pos5(curve,10); pos6(.5[hair,stem],0);
lft x1r=u; y1=y2l-stem;
rt x4l=w-u; .5[x2,x3]=.5w; x3-x2=.5(w-u);
top y2r=top y3r=h; y4r=y3r; x2l:=x2l+.5stem;
z6=.5[z2,z3]+o*left; x5=x6-o; bot y5l=0; y5r:=y5r+o;
p0=z1r..z2r---z4r..z4l{down}..z3l..{left}z2l..{dir-60}z1l..{dir150}z1r;
p1=reverse(z6l{down}..{dir-60}z5l..(x5r,0)..z5r{dir130}..{up}z6r);
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath (1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0&cycle;
penlabels(1,2,3,4,5,6);
math_fit(-.5[x_height#,bar_height#]*slant,ic#-3u#);
endchar;

iff known chars.greek_tau_BB:
bskchar "The blackboard-bold Greek letter tau";
beginchar(chars.greek_tau_BB,9u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,180); pos2(stem,90); pos3(stem,90); 
pos4(hair,90); pos5(cap_stem,10); pos6(.5[hair,cap_stem],0);
lft x1r=u; y1=y2l-stem;
rt x4l=w-u; .5[x2,x3]=.5w; x3-x2=.5(w-u);
top y2r=top y3r=h; y4r=y3r; x2l:=x2l+.5stem;
z6=.5[z2,z3]+o*left; x5=x6-o; bot y5l=0; y5r:=y5r+o;
p0=z1r..z2r---z4r..z4l{down}..z3l..{left}z2l..{dir-60}z1l..{dir150}z1r;
p1=reverse(z6l{down}..{dir-60}z5l..(x5r,0)..z5r{dir130}..{up}z6r);
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath (1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0&cycle;
oblu:=1.25bbw;
infill subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1..cycle;
penlabels(1,2,3,4,5,6);
endchar;

iff known chars.greek_tau_SS:
bskchar "The sans-serif Greek letter tau";
beginchar(chars.greek_tau_SS,9u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,180); pos2(stem,90); pos3(stem,90); 
pos4(hair,90); pos5(curve,0); pos6(.5[hair,stem],0);
lft x1r=u; y1=y2l-stem;
rt x4l=w-u; .5[x2,x3]=.5w; x3-x2=.5(w-u);
top y2r=top y3r=h; y4r=y3r; x2l:=x2l+.5stem;
z6=.5[z2,z3]+o*left; x5=x6-o; bot y5l=0; y5r:=y5r+o;
p0=z1r..z2r---z4r..z4l{left}...z3l..{left}z2l..{dir-90}z1l..{dir150}z1r;
p1=reverse(z6l{down}..{down}z5l..z5r{up}..{up}z6r);
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath (1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0&cycle;
penlabels(1,2,3,4,5,6);
endchar;

iff known chars.greek_tau_curved:
bskchar "The Greek letter tau (curved version)";
beginchar(chars.greek_tau_curved,9u#,x_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(curve,180); pos2(stem,90); pos3(stem,90); 
pos4(hair,180); pos5(curve,10); pos6(.5[hair,stem],0);
lft x1r=u; y1=y2l-stem;
rt x4l=w-u; .5[x2,x3]=.5w; x3-x2=.5(w-u);
top y2r=top y3r=h; top y4=h+hair; x2l:=x2l+.5stem;
z6=.5[z2,z3]+o*left; x5=x6-o; bot y5l=0; y5r:=y5r+o;
p0=z1r..z2r{right}..z3r..{z4-z3}z4r..z4l{down}..z3l..{left}z2l..{dir-60}z1l..{dir150}z1r;
p1=reverse(z6l{down}..{dir-60}z5l..(x5r,0)..z5r{dir130}..{up}z6r);
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3-1)=p0 intersectiontimes subpath (1,infinity) of p1;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1
	 ..subpath(rundy(p0,tim2),infinity) of p0&cycle;
penlabels(1,2,3,4,5,6);
math_fit(-.5[x_height#,bar_height#]*slant,ic#-3u#);
endchar;

iff known chars.greek_upsilon:
bskchar "The Greek letter upsilon";
beginchar(chars.greek_upsilon,8.5u#,x_height#,0); uni "0x03C5";
italcorr bar_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
pos1(stem,0); pos2(stem,0); pos3(hair,90);
pos4(hair,180); pos5(curve,180);
top y1=h; bot y3l=-o; x3=.5[x2,x4];
lft x2l=u; x1=x2;
y2=.5h; 
rt x4l=w-u; y4=bar_height; 
top y5''=h+o;
x5-x4=.45(y4-y5);
z5'=z5+.2curve*down+o*left; z5''=z5+.5(curve-currentbreadth)*dir135;
filldraw z1r---z2r..z3r..{up}z4r..z5'..{up}z5r..z5''
         ..z5l..{down}z4l..z3l..z2l---z1l..cycle;
penlabels(1,2,3,4,5); labels(5',5'');
math_fit(mft,0);
endchar;

iff known chars.greek_upsilon_BB:
bskchar "The blackboard-bold Greek letter upsilon";
beginchar(chars.greek_upsilon_BB,8.5u#,x_height#,0); uni "non";
italcorr bar_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
pos1(.8cap_stem,0); pos2(.8cap_stem,0); pos3(hair,90);
pos4(hair,180); pos5(curve,180);
top y1=h-o; bot y3l=-o; x3=.5[x2,x4];
lft x2l=u; x1=x2;
y2=.5h; 
rt x4l=w-u; y4=bar_height; 
top y5''=h+o;
x5-x4=.45(y4-y5);
z5'=z5+.2curve*down+o*left; z5''=z5+.5(curve-currentbreadth)*dir135;
filldraw z1r---z2r..z3r..{up}z4r..z5'..{up}z5r..z5''
         ..z5l..{down}z4l..z3l..z2l---z1l..cycle;
path p[]; numeric tim[];
p100=z1r---z2r..z3r..{up}z4r;
p101=z4l{down}..z3l..z2l---z1l;
z100=bsktouch(p100,down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y2)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y3l-u-5)));
infill subpath(rundy(p100,0),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),rundy(p101,infinity)) of p101..cycle;
penlabels(1,2,3,4,5); labels(5',5'',100);
endchar;

iff known chars.greek_upsilon_SS:
bskchar "The sans-serif Greek letter upsilon";
beginchar(chars.greek_upsilon_SS,8.5u#,x_height#,0); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
pos1(stem,0); pos2(stem,0); pos3(hair,90);
pos4(hair,180); pos5(hair,180);
top y1=h; bot y3l=-o; x3=.5[x2,x4];
lft x2l=u; x1=x2;
y2=.5h; 
rt x4l=w-u; y4=bar_height; 
x5=x4; y5=h;
filldraw z1r---z2r..z3r..{up}z4r..{up}z5r
         ..{down}z5l..{down}z4l..z3l..z2l---z1l..cycle;
penlabels(1,2,3,4,5);
endchar;

iff known chars.greek_upsilon_curved:
bskchar "The Greek letter upsilon (curved version)";
beginchar(chars.greek_upsilon_curved,9.5u#,x_height#,0); uni "non";
italcorr bar_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0); pos5(hair,90);
pos6(hair,180); pos7(curve,180);
top y2r=h; bot y5l=-o; x5=.5[x4l,x6];
x3=x4l; lft x1l=.5u; x3l-x1r=max(curve,1.5u);
y2l-y1=1.5(x3-x1); y3=.35[y1,y2]; 
z2=z1+whatever*dir60;
y4-y5=y2-y3; rt x6l=w-u; y6=bar_height; 
top y7''=h+o;
x7-x6=.45(y6-y7);
z7'=z7+.2curve*down+o*left; z7''=z7+.5(curve-currentbreadth)*dir135;
filldraw z1r{up}..z2r..z3r..z4r..z5r..{up}z6r..z7'..{up}z7r..z7''
         ..z7l..{down}z6l..z5l..z4l..z3l..z2l..{down}z1l..cycle;
penlabels(1,2,3,4,5,6,7); labels(7',7'');
math_fit(mft,.5u#);
endchar;

charscription(12u,asc_height,desc_depth)(
numeric tim[]; path p[];
oblu:=2oblu;
pos1(.5[stem,curve],0); pos2(hair,90); pos3(.5[stem,curve],180); pos4(hair,270);
lft x1l=u; rt x3l=w-u; y1=y3=.5x_height; .5[x2,x4]=.5[x1,x3]; x2=x4;
bot y2l=-o; top y4l=x_height+o; x4r:=x4r+.25u; x2r:=x2r-.25u;
y5=h; y6=-d; x5=x6=.5w; pos5(hair, 0); pos6(hair,0);
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 (z5r--z0r);
(tim15,tim16)=p1 intersectiontimes (z0l--z6l);
(tim17,tim18)=p1 intersectiontimes (z5l--z0l);
filldraw subpath (0,rundy(p0,tim1).zpet) of p0
         ..subpath(rundy((z6l--z5l),tim2),infinity) of (z5l--z6l)
         ..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--z5r)
	 ..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.greek_phi:
bskchar "The Greek letter phi";
beginchar(chars.greek_phi,12u#,asc_height#,desc_depth#); uni "0x03C6";
italcorr .5x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
math_fit(mft-.5u#,ic#-.5u#);
endchar;

iff known chars.greek_phi_SS:
bskchar "The sans-serif Greek letter phi";
beginchar(chars.greek_phi_SS,12u#,asc_height#,desc_depth#); uni "non";
italcorr .5x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
endchar;

iff known chars.greek_phi_BB:
bskchar "The blackboard-bold Greek letter phi";
beginchar(chars.greek_phi_BB,12u#,asc_height#,desc_depth#); uni "non";
italcorr .5x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[];
oblu:=2oblu;
pos1(.9cap_stem,0); pos2(hair,90); pos3(.9cap_stem,180); pos4(hair,270);
lft x1l=u; rt x3l=w-u; y1=y3=.5x_height; .5[x2,x4]=.5[x1,x3]; x2=x4;
bot y2l=-o; top y4l=x_height+o; x4r:=x4r+.25u; x2r:=x2r-.25u;
y5=h; y6=-d; x5=x6=.5w; pos5(hair, 0); pos6(hair,0);
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 (z5r--z0r);
(tim15,tim16)=p1 intersectiontimes (z0l--z6l);
(tim17,tim18)=p1 intersectiontimes (z5l--z0l);
filldraw subpath (0,rundy(p0,tim1).zpet) of p0
         ..subpath(rundy((z6l--z5l),tim2),infinity) of (z5l--z6l)
         ..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--z5r)
	 ..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;
p100:=z4r..z1r{down}..z2r..z3r..cycle;
p101:=reverse z4l..z1l{down}..z2l..{up}z3l..cycle;
oblu:=1.25bbw;
z100=bsktouch(subpath(0,1) of p100,up,p101,down);
z101=bsktouch(subpath(1,2) of p100,down,p101,up);
z102=bsktouch(subpath(3,4) of p100,up,p101,down);
z103=bsktouch(subpath(2,3) of p100,down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y1)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4l+5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y1)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2l-5)));
tim104=xpart(p100 intersectiontimes (z102--(x102,y1)));
tim105=xpart(p101 intersectiontimes (z102--(x102,y4l+5)));
tim106=xpart(p100 intersectiontimes (z103--(x103,y1)));
tim107=xpart(p101 intersectiontimes (z103--(x103,y2l-5)));
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103).zpet,rundy(p101,tim101)) of p101..cycle;
infill subpath(rundy(p100,tim104).zpet,rundy(p100,tim106)) of p100
       ..subpath(rundy(p101,tim107),rundy(p101,tim105).zpet) of p101..cycle;
penlabels(0,1,2,3,4,5,6); labels(100,101,102,103);
endchar;

iff known chars.greek_phi_curved:
bskchar "The Greek letter phi (curved version)";
beginchar(chars.greek_phi_curved,12u#,asc_height#,desc_depth#); uni "non";
italcorr .5x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[];
oblu:=2oblu;
pos1(.5[stem,curve],0); pos2(hair,90); pos3(.5[stem,curve],180); pos4(hair,270);
lft x1l=u; rt x3l=w-u; y1=y3=.5x_height; .5[x2,x4]=.5[x1,x3]; x2=x4;
bot y2l=-o; top y4l=x_height+o; x4r:=x4r+.25u; x2r:=x2r-.25u;
y5=h; y6=-d+curve; x5=x6=.5w; pos5(hair, 0); pos6(hair,0);
pos7(curve,0); y7=-d; x7r=x6l-o;
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 (z5r--z0r);
(tim15,tim16)=p1 intersectiontimes (z0l--z6l);
(tim17,tim18)=p1 intersectiontimes (z5l--z0l);
filldraw subpath (0,rundy(p0,tim1).zpet) of p0
         ..subpath(rundy((z6l--z5l),tim2),infinity) of (z5l--z6l)
	 ..z7l&z7l..z7r
         ..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--z5r)
	 ..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,7);
math_fit(mft-.5u#,ic#-.5u#);
endchar;

charscription(12u,x_height,desc_depth)(
numeric tim[]; path p[]; oblu:=2hair;
pos2(hair,-45); pos3(.5[hair,stem],0); pos4(stem,0); pos5(hair,90);
pos6(stem,180); pos7(hair,-90); pos8(hair,0); pos9(hair,0); 
top y2l=x_height; bot y5l=-o; x5=.5[x3,x6];
lft x3l=u; y3=bar_height; 
z2=z3+whatever*dir60;
rt x6l=w-u; y6=bar_height; 
top y7l=h+o; .5[x8,x6]=x7;
y8=.5bar_height; y9=-d; x8=x9=.5[x3,x7];
p0=z2r..z3r..z5r..{up}z6r..z7r..z8r---z9r;
p1=z9l---z8l..z7l..{down}z6l..z5l..z3l..z2l;
(tim0,tim1)=p0 intersectiontimes subpath(0,3) of p1;
(tim2-3,tim3)=subpath (3,infinity) of p1 intersectiontimes p0;
(tim4,tim5-4)= subpath(0,3) of p1 intersectiontimes subpath(4,infinity) of p1;
(tim6,tim7-5)=subpath(0,4) of p0 intersectiontimes subpath(5,infinity) of p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),infinity) of p0
	 ..subpath(0,rundy(p1,tim4).zpet) of p1
	 ..subpath(rundy(p1,tim5),infinity) of p1..cycle;
infill subpath(rundy(p0,tim6),rundy(p0,tim7).zpet) of p0..cycle;
penlabels(2,3,4,5,6,7,8,9); labels(7',7'');
);

iff known chars.greek_varphi:
bskchar "The Greek letter phi---alternative";
beginchar(chars.greek_varphi,12u#,x_height#,desc_depth#); uni "0x03D5";
italcorr bar_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
usechar;
math_fit(mft-.5u#,0);
endchar;

iff known chars.greek_varphi_SS:
bskchar "The sans-serif Greek letter phi---alternative";
beginchar(chars.greek_varphi_SS,12u#,x_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
usechar;
endchar;

iff known chars.greek_varphi_BB:
bskchar "The blackboard-bold Greek letter phi---alternative";
beginchar(chars.greek_varphi_BB,12.5u#,x_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2hair;
pos2(hair,-45); pos3(.75[hair,cap_stem],0); pos4(stem,0); pos5(hair,90);
pos6(cap_stem,180); pos7(hair,-90); pos8(hair,0); pos9(hair,0); 
top y2l=x_height; bot y5l=-o; x5=.5[x3,x6];
lft x3l=u; y3=bar_height; 
z2=z3+whatever*dir60;
rt x6l=w-u; y6=bar_height; 
top y7l=h+o; .5[x8,x6]=x7;
y8=.5bar_height; y9=-d; x8=x9=.5[x3,x7];
p0=z2r..z3r..z5r..{up}z6r..z7r..z8r---z9r;
p1=z9l---z8l..z7l..{down}z6l..z5l..z3l..z2l;
(tim0,tim1)=p0 intersectiontimes subpath(0,3) of p1;
(tim2-3,tim3)=subpath (3,infinity) of p1 intersectiontimes p0;
(tim4,tim5-4)= subpath(0,3) of p1 intersectiontimes subpath(4,infinity) of p1;
(tim6,tim7-5)=subpath(0,4) of p0 intersectiontimes subpath(5,infinity) of p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),infinity) of p0
	 ..subpath(0,rundy(p1,tim4).zpet) of p1
	 ..subpath(rundy(p1,tim5),infinity) of p1..cycle;
infill subpath(rundy(p0,tim6),rundy(p0,tim7).zpet) of p0..cycle;
p100:=subpath(0,2) of p0;
p101:=reverse subpath(4,infinity) of p1;
p102:=subpath(2,4) of p0;
p103:=reverse subpath(2,4) of p1;
oblu:=1.25bbw;
z100=bsktouch(p100,down,p101,up);
z101=bsktouch(p100,up,p101,down);
z102=bsktouch(p102,up,p103,down);
z103=bsktouch(p102,down,p103,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y8)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y9)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y3)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2l+u+5)));
tim104=xpart(p102 intersectiontimes (z102--(x102,y6)));
tim105=xpart(p103 intersectiontimes (z102--(x102,y7l+5)));
tim106=xpart(p102 intersectiontimes (z103--(x103,y6)));
tim107=xpart(p103 intersectiontimes (z103--(x103,y9)));
infill subpath(rundy(p100,tim102),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101).zpet,rundy(p101,tim103)) of p101..cycle;
infill subpath(rundy(p102,tim104).zpet,rundy(p102,tim106)) of p102
       ..subpath(rundy(p103,tim107),rundy(p103,tim105).zpet) of p103..cycle;
penlabels(2,3,4,5,6,7,8,9); labels(7',7'',100,101,102,103);
endchar;

iff known chars.greek_varphi_curved:
bskchar "The Greek letter phi---alternative (curved version)";
beginchar(chars.greek_varphi_curved,12u#,x_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2hair;
pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0); pos5(hair,90);
pos6(stem,180); pos7(hair,-90);
pos8(hair,0); pos9(hair,0); pos10(curve,0);
top y2r=x_height; bot y5l=-o; x5=.5[x4l,x6];
x3=x4l; lft x1l=.5u; x3l-x1r=max(curve,1.5u);
y2l-y1=1.5(x3-x1); y3=.35[y1,y2]; 
z2=z1+whatever*dir60;
y4-y5=y2-y3; rt x6l=w-u; y6=bar_height; 
top y7l=h+o;
.5[x8,x6]=x7;
y8=.5bar_height; y9=-d+curve; x8=x9=.5[x3,x7]; y10=-d; x10r=x9l-o;
p0=z1r{up}..z2r..z3r..z4r..z5r..{up}z6r..z7r..z8r---z9r..z10r..z10l;
p1=z10l..z9l---z8l..z7l..{down}z6l..z5l..z4l..z3l..z2l..{down}z1l;
(tim0,tim1)=p0 intersectiontimes subpath(0,3) of p1;
(tim2-3,tim3)=subpath (3,infinity) of p1 intersectiontimes p0;
(tim4,tim5-4)= subpath(0,3) of p1 intersectiontimes subpath(4,infinity) of p1;
(tim6,tim7-6)=subpath(0,5) of p0 intersectiontimes subpath(6,infinity) of p0;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p1,tim1),rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p0,tim3),infinity) of p0
	 ..subpath(0,rundy(p1,tim4).zpet) of p1
	 ..subpath(rundy(p1,tim5),infinity) of p1..cycle;
infill subpath(rundy(p0,tim6),rundy(p0,tim7).zpet) of p0..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10); labels(7',7'');
math_fit(mft-.5u#,0);
endchar;

iff known chars.greek_chi:
bskchar "The Greek letter chi";
beginchar(chars.greek_chi,12u#,x_height#,desc_depth#); uni "0x03C7";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos0(stem,150); pos1(hair,90); pos4(hair,90); pos5(stem,150);
pos6(hair,0); pos7(hair,0); pos8(curve,0); pos9(curve,0);
top y1r=h+o; bot y4l=-d;
.5[x1,x4-u]=.5[x2,x3-u]=.5w;
x1=2u; x3-x2=1/4w+.5u; y2=bar_height; -d+h-y2=y3;
pos2(stem,angle(z2-z3)-90); pos3(stem,angle(z2-z3)-90);
lft x0r=u; y0=y1-stem; z0'=(x0r,y0l);
rt x5l=w; y5=y4+stem; z5'=(x5l,y5r);
top y6=h-curve; bot y7=-d+curve; rt x6r=w-2.5u-o; x7l=w-x6r;
y8=-d; z8r=whatever[z7l,z6l]+o*left; y9=h; z9l=whatever[z6l,z7l]+o*right;
p0=z0r{up}..z1r{right}..z2r---z3r..{right}z4r..z5r;
p1=z5r..z5'..z5l..z4l{left}..z3l---z2l..{left}z1l..z0l;
p2=z6l---z7l..z8l&z8l..z8r..z7r---z6r..z9r&z9r..z9l..cycle;
(tim0,tim1)=p0 intersectiontimes p2;
(tim2,tim3-4)=p0 intersectiontimes subpath(4,length p2) of p2;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,length p2) of p2;
(tim6,tim7)=p1 intersectiontimes subpath(0,1) of p2;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..reverse subpath(0,rundy(p2,tim1).zpet) of p2
	 ..reverse subpath(rundy(p2,tim3),length p2) of p2
	 ..subpath(rundy(p0,tim2),infinity) of p0
	 ..subpath(0,rundy(p1,tim4).zpet) of p1
	 ..reverse subpath(rundy(p2,tim7),rundy(p2,tim5).zpet) of p2
	 ..subpath(rundy(p1,tim6),infinity) of p1
	 ..z0l..z0'..cycle;
penlabels(0,1,2,3,4,5,6,7,8,9); labels(0',5');
endchar;

iff known chars.greek_chi_BB:
bskchar "The blackboard-bold Greek letter chi";
beginchar(chars.greek_chi_BB,12u#,x_height#,desc_depth#); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos0(stem,150); pos1(hair,90); pos4(hair,90); pos5(stem,150);
pos6(hair,0); pos7(hair,0); pos8(curve,0); pos9(curve,0);
top y1r=h+o; bot y4l=-d;
.5[x1,x4-u]=.5[x2,x3-u]=.5w;
x1=2u; x3-x2=1/4w+.5u; y2=bar_height; -d+h-y2=y3;
pos2(.8cap_stem,angle(z2-z3)-90); pos3(.8cap_stem,angle(z2-z3)-90);
lft x0r=u; y0=y1-stem; z0'=(x0r,y0l);
rt x5l=w; y5=y4+stem; z5'=(x5l,y5r);
top y6=h-curve; bot y7=-d+curve; rt x6r=w-2.5u-o; x7l=w-x6r;
y8=-d; z8r=whatever[z7l,z6l]+o*left; y9=h; z9l=whatever[z6l,z7l]+o*right;
p0=z0r{up}..z1r{right}..z2r---z3r..{right}z4r..z5r;
p1=z5r..z5'..z5l..z4l{left}..z3l---z2l..{left}z1l..z0l;
p2=z6l---z7l..z8l&z8l..z8r..z7r---z6r..z9r&z9r..z9l..cycle;
(tim0,tim1)=p0 intersectiontimes p2;
(tim2,tim3-4)=p0 intersectiontimes subpath(4,length p2) of p2;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,length p2) of p2;
(tim6,tim7)=p1 intersectiontimes subpath(0,1) of p2;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..reverse subpath(0,rundy(p2,tim1).zpet) of p2
	 ..reverse subpath(rundy(p2,tim3),length p2) of p2
	 ..subpath(rundy(p0,tim2),infinity) of p0
	 ..subpath(0,rundy(p1,tim4).zpet) of p1
	 ..reverse subpath(rundy(p2,tim7),rundy(p2,tim5).zpet) of p2
	 ..subpath(rundy(p1,tim6),infinity) of p1
	 ..z0l..z0'..cycle;
p100=reverse subpath(1,4) of p0;
p101=reverse subpath(3,6) of p1;
z100=bsktouch(subpath(0,2) of p100,down,p101,up);
z101=bsktouch(p100,down,subpath(0,2) of p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y3)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4l-5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y1r+5)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2)));
oblu:=bbw;
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103),rundy(p101,tim101).zpet) of p101..cycle;
penlabels(0,1,2,3,4,5,6,7,8,9); labels(0',5',100,101);
endchar;

iff known chars.greek_chi_SS:
bskchar "The sans-serif Greek letter chi";
beginchar(chars.greek_chi_SS,12u#,x_height#,desc_depth#); uni "non";
italcorr x_height#*slant;
adjust_fit(-.5u#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos0(stem,150); pos1(hair,90); pos4(hair,90); pos5(stem,150);
pos6(hair,0); pos7(hair,0); pos8(hair,0); pos9(hair,0);
top y1r=h+o; bot y4l=-d;
.5[x1,x4-u]=.5[x2,x3-u]=.5w;
x1=2u; x3-x2=1/4w+.5u; y2=bar_height; -d+h-y2=y3;
pos2(stem,angle(z2-z3)-90); pos3(stem,angle(z2-z3)-90);
lft x0r=u; y0=y1-stem; z0'=(x0r,y0l);
rt x5l=w; y5=y4+stem; z5'=(x5l,y5r);
top y6=h-curve; bot y7=-d+curve; rt x6r=w-2.5u-o; x7l=w-x6r;
y8=-d; z8r=whatever[z7l,z6l]; y9=h; z9l=whatever[z6l,z7l]+o*right;
p0=z1r{right}..z2r---z3r..{right}z4r;
p1=z4l{left}..z3l---z2l..{left}z1l;
p2=z6l---z7l..z8l&z8l..z8r..z7r---z6r..z9r&z9r..z9l..cycle;
(tim0,tim1)=p0 intersectiontimes p2;
(tim2,tim3-4)=p0 intersectiontimes subpath(4,length p2) of p2;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,length p2) of p2;
(tim6,tim7)=p1 intersectiontimes subpath(0,1) of p2;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..reverse subpath(0,rundy(p2,tim1).zpet) of p2
	 ..reverse subpath(rundy(p2,tim3),length p2) of p2
	 ..subpath(rundy(p0,tim2),infinity) of p0
	 ..subpath(0,rundy(p1,tim4).zpet) of p1
	 ..reverse subpath(rundy(p2,tim7),rundy(p2,tim5).zpet) of p2
	 ..subpath(rundy(p1,tim6),infinity) of p1
	 ..cycle;
penlabels(0,1,2,3,4,5,6,7,8,9); labels(0',5');
endchar;

iff known chars.greek_psi:
bskchar "The Greek letter psi";
beginchar(chars.greek_psi,12u#,asc_height#,desc_depth#); uni "0x03C8";
italcorr bar_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0); pos5(hair,90);
pos6(hair,180); pos7(curve,180);
pos8(hair,0); pos9(hair,0); pos10(curve,0);
top y2r=x_height; bot y5l=-o; x5=.5[x4l,x6];
x3=x4l; lft x1l=.5u; x3l-x1r=max(1.5curve,2u);
y2l-y1=1.5(x3-x1); y3=.35[y1,y2]; 
z2=z1+whatever*dir60;
y4-y5=y2-y3; rt x6l=w-u; y6=bar_height; 
top y7''=x_height+o;
x7-x6=.45(y6-y7);
z7'=z7+.2curve*down+o*left; z7''=z7+.5(curve-currentbreadth)*dir135;
y8=h; y9=-d; x8=x9=.5[x3r,x7l]; 
p0=z1r{up}..z2r..z3r..z4r..z5r..{up}z6r..z7'..{up}z7r;
p1=z7r{up}..z7l..{down}z6l..z5l..z4l..z3l..z2l..{down}z1l;
p2=z9l--z8l;
p3=z8r--z9r;
(tim0,tim1)=p0 intersectiontimes p2;
(tim2,tim3)=p0 intersectiontimes p3;
(tim4,tim5)=p1 intersectiontimes p3;
(tim6,tim7)=p1 intersectiontimes p2;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p2,tim1),infinity) of p2
	 ..subpath(0,rundy(p3,tim3).zpet) of p3
	 ..subpath(rundy(p0,tim2),infinity) of p0
	 &subpath(0,rundy(p1,tim4).zpet) of p1
	 ..subpath(rundy(p3,tim5),infinity) of p3
	 ..subpath(0,rundy(p2,tim7).zpet) of p2
	 ..subpath(rundy(p1,tim6),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,9); labels(7',7'');
math_fit(mft-.5u#,ic#-.5u#);
endchar;

iff known chars.greek_psi_BB:
bskchar "The blackboard-bold Greek letter psi";
beginchar(chars.greek_psi_BB,12u#,asc_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(vair,180); pos2(hair,90); pos3(.8cap_stem,0); pos4(cap_stem,0); pos5(hair,90);
pos6(hair,180); pos7(curve,180);
pos8(hair,0); pos9(hair,0); pos10(curve,0);
top y2r=x_height; bot y5l=-o; x5=.5[x4l,x6];
x3=x4; lft x1l=.5u; x3l-x1r=max(1.5curve,2u);
y2l-y1=1.5(x3-x1); y3=.35[y1,y2]; 
z2=z1+whatever*dir60;
y4-y5=y2-y3; rt x6l=w-u; y6=bar_height; 
top y7''=x_height+o;
x7-x6=.45(y6-y7);
z7'=z7+.2curve*down+o*left; z7''=z7+.5(curve-currentbreadth)*dir135;
y8=h; y9=-d; x8=x9=.5[x3r,x7l]; 
p0=z1r{up}..z2r..z3r..z4r..{right}z5r..{up}z6r..z7'..{up}z7r;
p1=z7r{up}..z7l..{down}z6l..{left}z5l..z4l..z3l..z2l..{down}z1l;
p2=z9l--z8l;
p3=z8r--z9r;
(tim0,tim1)=p0 intersectiontimes p2;
(tim2,tim3)=p0 intersectiontimes p3;
(tim4,tim5)=p1 intersectiontimes p3;
(tim6,tim7)=p1 intersectiontimes p2;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p2,tim1),infinity) of p2
	 ..subpath(0,rundy(p3,tim3).zpet) of p3
	 ..subpath(rundy(p0,tim2),infinity) of p0
	 &subpath(0,rundy(p1,tim4).zpet) of p1
	 ..subpath(rundy(p3,tim5),infinity) of p3
	 ..subpath(0,rundy(p2,tim7).zpet) of p2
	 ..subpath(rundy(p1,tim6),infinity) of p1..cycle;
p100:=subpath(1,4) of p0;
p101:=subpath(3,6) of p1;
oblu:=1.25bbw;
z100=bsktouch(subpath(0,1) of p100,down,p101,up);
z101=bsktouch(p100,down,subpath(0,1) of p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y8)));
tim101=xpart(p101 intersectiontimes (z100--z1));
tim102=xpart(p100 intersectiontimes (z101--(x101,y3)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y9)));
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103),rundy(p101,tim101).zpet) of p101..cycle;
penlabels(1,2,3,4,5,6,7,8,9); labels(7',7'',100,101);
endchar;

iff known chars.greek_psi_SS:
bskchar "The sans-serif Greek letter psi";
beginchar(chars.greek_psi_SS,12u#,asc_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(-1.5u#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(vair,180); pos2(hair,0); pos3(stem,0); pos4(stem,0); pos5(hair,90);
pos6(hair,180); pos7(curve,180);
pos8(hair,0); pos9(hair,0); pos10(curve,0);
top y2r=x_height; bot y5l=-o; x5=.5[x4l,x6];
if boldmath:lft x4l=x3l; else: x4l=x3; fi; 
lft x1l=.5u; x3l-x1r=max(1.5curve,2u);
y2l-y1=1.5(x3-x1); y3=.35[y1,y2]; 
x2l=x3l;
y4-y5=y2-y3; rt x6l=w-u; y6=bar_height; 
top y7=x_height;
x7-x6=.45(y6-y7);
y8=h; y9=-d; x8=x9=.5[x3r,x7l]; 
p0=z2r---z3r..z4r..z5r..{up}z6r..z7r;
p1=z7l..{down}z6l..z5l..z4l..z3l---z2l;
p2=z9l--z8l;
p3=z8r--z9r;
(tim0,tim1)=p0 intersectiontimes p2;
(tim2,tim3)=p0 intersectiontimes p3;
(tim4,tim5)=p1 intersectiontimes p3;
(tim6,tim7)=p1 intersectiontimes p2;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p2,tim1),infinity) of p2
	 ..subpath(0,rundy(p3,tim3).zpet) of p3
	 ..subpath(rundy(p0,tim2),infinity) of p0
	 ..subpath(0,rundy(p1,tim4).zpet) of p1
	 ..subpath(rundy(p3,tim5),infinity) of p3
	 ..subpath(0,rundy(p2,tim7).zpet) of p2
	 ..subpath(rundy(p1,tim6),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,9); 
endchar;

iff known chars.greek_psi_curved:
bskchar "The Greek letter psi (curved version)";
beginchar(chars.greek_psi_curved,12u#,asc_height#,desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(serif_fit#,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0); pos5(hair,90);
pos6(hair,180); pos7(curve,180);
pos8(hair,0); pos9(hair,0); pos10(curve,0);
top y2r=x_height; bot y5l=-o; x5=.5[x4l,x6];
x3=x4l; lft x1l=.5u; x3l-x1r=max(1.5curve,2u);
y2l-y1=1.5(x3-x1); y3=.35[y1,y2]; 
z2=z1+whatever*dir60;
y4-y5=y2-y3; rt x6l=w-u; y6=bar_height; 
top y7''=x_height+o;
x7-x6=.45(y6-y7);
z7'=z7+.2curve*down+o*left; z7''=z7+.5(curve-currentbreadth)*dir135;
y8=h; y9=-d+curve; x8=x9=.5[x3r,x7l]; y10=-d; x10r=x9l-o;
p0=z1r{up}..z2r..z3r..z4r..z5r..{up}z6r..z7'..{up}z7r;
p1=z7r{up}..z7l..{down}z6l..z5l..z4l..z3l..z2l..{down}z1l;
p2=z10l..z9l---z8l;
p3=z8r---z9r..z10r..z10l;
(tim0,tim1)=p0 intersectiontimes p2;
(tim2,tim3)=p0 intersectiontimes p3;
(tim4,tim5)=p1 intersectiontimes p3;
(tim6,tim7)=p1 intersectiontimes p2;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..subpath(rundy(p2,tim1),infinity) of p2
	 ..subpath(0,rundy(p3,tim3).zpet) of p3
	 ..subpath(rundy(p0,tim2),infinity) of p0
	 &subpath(0,rundy(p1,tim4).zpet) of p1
	 ..subpath(rundy(p3,tim5),infinity) of p3
	 ..subpath(0,rundy(p2,tim7).zpet) of p2
	 ..subpath(rundy(p1,tim6),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10); labels(7',7'');
math_fit(mft-.5u#,ic#-.5u#);
endchar;

iff known chars.greek_omega:
bskchar "The Greek letter omega";
beginchar(chars.greek_omega,13.5u#,x_height#,0); uni "0x03C9";
italcorr .5x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,90); pos2(hair,180); pos3(stem,270);
pos4(hair,90); pos4'(hair,240); pos4''(.5[hair,stem],-60);
pos5(hair,270); pos6(curve,0); pos7(stem,90);
top y1r=h; lft x2r=u; y2=.5h; bot y3r=-o;
rt x1=x3; .5[x3,x5]=.5w; x5-x3=1/3w;
1/3[x4,x3]=.45w; y4l=bar_height; 
bot y5r=-o; y6=y2; rt x6r=w-.5u;
x7-x6=(x2-x1); top y7r=h;
y4'=y4''=.6bar_height; .5[x4',x4'']=x4; x4'-x4''=.35(y3-y4);
z1'=z1+.2curve*right+o*up; z1''=z1+.5(curve-currentbreadth)*dir135;
z7'=z7+.2curve*right+o*down; z7''=z7+.5(curve-currentbreadth)*dir45;
p0=z7'{right}..z6l..z5l..z4'l..z4l{right}..z4''l..z3l{left}..z2l..{right}z1l;
p1=z1l{right}..z1'..z1r..z1''..z2r..{right}z3r..z4''r..{left}z4r..z4'r..{right}z5r..z6r..z7''..z7r;
(tim0,tim1-7)=subpath(0,6) of p1 intersectiontimes subpath (7,infinity) of p1;
(tim2-1,tim3)=subpath(1,infinity) of p0 intersectiontimes p1;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,6) of p0;
(tim6,tim7-4)=subpath(0,4) of p0 intersectiontimes subpath(4,infinity) of p0;
filldraw subpath(0,rundy(p1,(tim0,hair)).zpet) of p1
         ..subpath(rundy(p1,(tim1,hair)),infinity) of p1..z7l
	 ..subpath(0,rundy(p0,tim2).zpet) of p0
	 ..subpath(rundy(p1,tim3),rundy(p1,(tim4,1.2hair)).zpet) of p1
	 ..subpath(rundy(p0,tim5),infinity) of p0..cycle;
oblu:=f_obl;
infill subpath(rundy(p0,tim6),rundy(p0,tim7).zpet) of p0 ..cycle;
penlabels(0,1,2,3,4,4',4'',5,6,7); labels(1',1'',7',7'');
math_fit(mft-.5u#,ic#);
endchar;

iff known chars.greek_omega_BB:
bskchar "The blackboard-bold Greek letter omega";
beginchar(chars.greek_omega_BB,13.5u#,x_height#,0); uni "non";
italcorr .5x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,90); pos2(hair,180); pos3(stem,270);
pos4(hair,90); pos4'(hair,240); pos4''(.5[hair,stem],-60);
pos5(hair,270); pos6(cap_stem,0); pos7(stem,90);
top y1r=h; lft x2r=u; y2=.5h; bot y3r=-o;
rt x1=x3; .5[x3,x5]=.5w; x5-x3=1/3w;
1/3[x4,x3]=.45w; y4l=bar_height; 
bot y5r=-o; y6=y2; rt x6r=w-.5u;
x7-x6=(x2-x1); top y7r=h;
y4'=y4''=.6bar_height; .5[x4',x4'']=x4; x4'-x4''=.35(y3-y4);
z1'=z1+.2curve*right+o*up; z1''=z1+if not boldmath:.5\\fi(curve-currentbreadth)*dir135;
z7'=z7+if boldmath: .3 else: .2\\fi curve*right+o*down; z7''=z7+if not boldmath:.5\\fi(curve-currentbreadth)*dir45;
p0=z7'{right}..z6l..z5l..z4'l..z4l{right}..z4''l..z3l{left}..z2l..{right}z1l;
p1=z1l{right}..z1'..z1r..z1''..z2r..{right}z3r..z4''r..{left}z4r..z4'r..{right}z5r..z6r..z7''..z7r;
(tim0,tim1-7)=subpath(0,6) of p1 intersectiontimes subpath (7,infinity) of p1;
(tim2-1,tim3)=subpath(1,infinity) of p0 intersectiontimes p1;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,6) of p0;
(tim6,tim7-4)=subpath(0,4) of p0 intersectiontimes subpath(4,infinity) of p0;
filldraw subpath(0,rundy(p1,(tim0,hair)).zpet) of p1
         ..subpath(rundy(p1,(tim1,hair)),infinity) of p1..z7l
	 ..subpath(0,rundy(p0,tim2).zpet) of p0
	 ..subpath(rundy(p1,tim3),rundy(p1,(tim4,1.2hair)).zpet) of p1
	 ..subpath(rundy(p0,tim5),infinity) of p0..cycle;
oblu:=f_obl;
infill subpath(rundy(p0,tim6),rundy(p0,tim7).zpet) of p0 ..cycle;
p100=subpath(0,2) of p0;
p101=subpath(9,11) of p1;
z100=bsktouch(subpath(0,1) of p100,1.5up,p101,1.5down);
z101=bsktouch(p100,down,subpath(0,1) of p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y6)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y7r+5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y6)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y5r-u-5)));
oblu:=bbw;
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103),rundy(p101,tim101).zpet) of p101..cycle;
penlabels(0,1,2,3,4,4',4'',5,6,7); labels(1',1'',7',7'',100,101);
endchar;

iff known chars.greek_omega_SS:
bskchar "The sans-serif Greek letter omega";
beginchar(chars.greek_omega_SS,13.5u#,x_height#,0); uni "non";
italcorr .5x_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
numeric tim[]; path p[]; oblu:=2oblu;
pos1(stem,90); pos2(hair,180); pos3(stem,270);
pos4(hair,90); pos4'(hair,240); pos4''(.5[hair,stem],-60);
pos5(hair,270); pos6(curve,0); pos7(stem,90);
top y1r=h; lft x2r=u; y2=.5h; bot y3r=-o;
rt x1=x3; .5[x3,x5]=.5w; x5-x3=1/3w;
1/3[x4,x3]=.45w; y4l=bar_height; 
bot y5r=-o; y6=y2; rt x6r=w-.5u;
x7-x6=(x2-x1); top y7r=h;
y4'=y4''=.6bar_height; .5[x4',x4'']=x4; x4'-x4''=.35(y3-y4);
p0=z7l{right}..z6l..z5l..z4'l..z4l{right}..z4''l..z3l{left}..z2l..{right}z1l;
p1=z1l{right}..z1r{left}..z2r..{right}z3r..z4''r..{left}z4r..z4'r..{right}z5r..z6r..z7r;
(tim0,tim1-5)=subpath(0,4) of p1 intersectiontimes subpath (5,infinity) of p1;
(tim2-1,tim3)=subpath(1,infinity) of p0 intersectiontimes p1;
(tim4,tim5-4)=p1 intersectiontimes subpath(4,6) of p0;
(tim6,tim7-4)=subpath(0,4) of p0 intersectiontimes subpath(4,infinity) of p0;
filldraw subpath(0,rundy(p1,(tim0,hair)).zpet) of p1
         ..subpath(rundy(p1,(tim1,hair)),infinity) of p1..z7l
	 ..subpath(0,rundy(p0,tim2).zpet) of p0
	 ..subpath(rundy(p1,tim3),rundy(p1,(tim4,1.2hair)).zpet) of p1
	 ..subpath(rundy(p0,tim5),infinity) of p0..cycle;
oblu:=f_obl;
infill subpath(rundy(p0,tim6),rundy(p0,tim7).zpet) of p0 ..cycle;
penlabels(0,1,2,3,4,4',4'',5,6,7); 
endchar;

iff known chars.greek_sampi:
bskchar "The Greek letter sampi";
beginchar(chars.greek_sampi,12u#,x_height#,desc_depth#); uni "0x03E1";
adjust_fit(0,if slant<>0: -.75u# else: 0 fi);
pickup tiny.nib;
path p[]; numeric tim[], theta;
oblu:=2oblu;
pos1(hair,90); pos3(hair,0);
top y1r=h+o; bot y3=-d; lft x1=2u; rt x3r=w-u;
z2=1/3[.5[z1,z3],(x3,y1)];
p0:=z1..z2..z3; theta=angle(direction 1 of p0)+90; pos2(curve,theta);
p1:=z1r..z2r..z3r;
p2:=z3l..z2l..z1l;
pos4(hair,theta-90); pos5(hair,theta-90);
z4=p0 intersectionpoint ((0,bar_height)--(w,bar_height));
z5=p0 intersectionpoint ((0,0)--(w,0));
pos6(curve,theta-100); pos7(curve,theta-80);
pos6'(.5[curve,stem],theta-90); pos7'(.5[curve,stem],theta-90);
lft x6l=u; z6r=z4l+whatever*dir(theta); 
z7l=z5r-abs(z6r-z4l)*dir(theta);
z6'l=z6l+1/3(z4l-z6l)+.5hair*dir(theta-90);
z7'r=z7r+1/3(z5r-z7r)+.5hair*dir(theta+90);
p3:=reverse(z4l---z6'l..z6l&z6l..z6r..z6'r---z4r);
p4:=z5r---z7'r..z7r&z7r..z7l..z7'l---z5l;
(tim0,tim1)=p2 intersectiontimes p4;
(tim2,tim3-1)=p2 intersectiontimes subpath(1,infinity) of p4;
(tim4,tim5)=p2 intersectiontimes p3;
(tim6,tim7-1)=p2 intersectiontimes subpath(1,infinity) of p3;
filldraw subpath(0,rundy(p2,tim0).zpet) of p2
         ..subpath(rundy(p4,tim1),rundy(p4,tim3).zpet) of p4
	 ..subpath(rundy(p2,tim2),rundy(p2,tim4).zpet) of p2
	 ..subpath(rundy(p3,tim5),rundy(p3,tim7).zpet) of p3
	 ..subpath(rundy(p2,tim6),infinity) of p2..p1..cycle;
penlabels(1,2,3,4,5,6,6',7,7');
math_fit(-.5[x_height#,bar_height#]*slant+.5u#,0);
endchar;

iff known chars.greek_sampi_BB:
bskchar "The blackboard-bold Greek letter sampi";
beginchar(chars.greek_sampi_BB,12u#,x_height#,desc_depth#); uni "non";
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[], theta;
oblu:=2oblu;
pos1(hair,90); pos3(hair,0);
top y1r=h+o; bot y3=-d; lft x1=2u; rt x3r=w-u;
z2=1/3[.5[z1,z3],(x3,y1)];
p0:=z1..z2..z3; theta=angle(direction 1 of p0)+90; pos2(cap_stem,theta);
p1:=z1r..z2r..z3r;
p2:=z3l..z2l..z1l;
pos4(hair,theta-90); pos5(hair,theta-90);
z4=p0 intersectionpoint ((0,bar_height)--(w,bar_height));
z5=p0 intersectionpoint ((0,0)--(w,0));
pos6(curve,theta-100); pos7(curve,theta-80);
pos6'(.5[curve,stem],theta-90); pos7'(.5[curve,stem],theta-90);
lft x6l=u; z6r=z4l+whatever*dir(theta); 
z7l=z5r-abs(z6r-z4l)*dir(theta);
z6'l=z6l+1/3(z4l-z6l)+.5hair*dir(theta-90);
z7'r=z7r+1/3(z5r-z7r)+.5hair*dir(theta+90);
p3:=reverse(z4l---z6'l..z6l&z6l..z6r..z6'r---z4r);
p4:=z5r---z7'r..z7r&z7r..z7l..z7'l---z5l;
(tim0,tim1)=p2 intersectiontimes p4;
(tim2,tim3-1)=p2 intersectiontimes subpath(1,infinity) of p4;
(tim4,tim5)=p2 intersectiontimes p3;
(tim6,tim7-1)=p2 intersectiontimes subpath(1,infinity) of p3;
filldraw subpath(0,rundy(p2,tim0).zpet) of p2
         ..subpath(rundy(p4,tim1),rundy(p4,tim3).zpet) of p4
	 ..subpath(rundy(p2,tim2),rundy(p2,tim4).zpet) of p2
	 ..subpath(rundy(p3,tim5),rundy(p3,tim7).zpet) of p3
	 ..subpath(rundy(p2,tim6),infinity) of p2..p1..cycle;
z100=bsktouch(subpath(0,1) of p1,dir210,p2,dir30);
z101=bsktouch(p1,left,subpath(0,1) of p2,right);
tim100=xpart(p1 intersectiontimes (z100--(w,y100)));
tim101=xpart(p2 intersectiontimes (z100--(0,y100)));
tim102=xpart(p1 intersectiontimes (z101--(w,y101)));
tim103=xpart(p2 intersectiontimes (z101--(0,y101)));
oblu:=bbw;
infill subpath(rundy(p1,tim100),rundy(p1,tim102).zpet) of p1
       ..subpath(rundy(p2,tim103),rundy(p2,tim101).zpet) of p2..cycle;
penlabels(1,2,3,4,5,6,6',7,7'); labels(100,101);
endchar;

iff known chars.greek_sampi_SS:
bskchar "The sans-serif Greek letter sampi";
beginchar(chars.greek_sampi_SS,12u#,x_height#,desc_depth#); uni "non";
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[], theta;
oblu:=2oblu;
pos1(hair,90); pos3(hair,0);
top y1r=h+o; bot y3=-d; lft x1=2u; rt x3r=w-u;
z2=1/3[.5[z1,z3],(x3,y1)];
p0:=z1..z2..z3; theta=angle(direction 1 of p0)+90; pos2(curve,theta);
p1:=z1r..z2r..z3r;
p2:=z3l..z2l..z1l;
pos4(hair,theta-90); pos5(hair,theta-90);
z4=p0 intersectionpoint ((0,bar_height)--(w,bar_height));
z5=p0 intersectionpoint ((0,0)--(w,0));
pos6(curve,theta-100); pos7(curve,theta-80);
lft x6l=1.25u; z6r=z4r+whatever*dir(theta); 
z7l=z5r-abs(z6r-z4l)*dir(theta);
p3:=reverse(z4l---z6l&z6l..z6r---z4r);
p4:=z5r---z7r&z7r..z7l---z5l;
(tim0,tim1)=p2 intersectiontimes p4;
(tim2,tim3-1)=p2 intersectiontimes subpath(1,infinity) of p4;
(tim4,tim5)=p2 intersectiontimes p3;
(tim6,tim7-1)=p2 intersectiontimes subpath(1,infinity) of p3;
filldraw subpath(0,rundy(p2,tim0).zpet) of p2
         ..subpath(rundy(p4,tim1),rundy(p4,tim3).zpet) of p4
	 ..subpath(rundy(p2,tim2),rundy(p2,tim4).zpet) of p2
	 ..subpath(rundy(p3,tim5),rundy(p3,tim7).zpet) of p3
	 ..subpath(rundy(p2,tim6),infinity) of p2..p1..cycle;
penlabels(1,2,3,4,5,6,7);
endchar;

iff known chars.greek_varsampi:
bskchar "The Archaic Greek letter sampi";
beginchar(chars.greek_varsampi,12u#,asc_height#,0); uni "0x0373";
italcorr asc_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
pos1(curve,-10); pos2(.5[hair,stem],0); pos1'(.5[curve,stem],0);
pos3(curve,10); pos4(.5[hair,stem],0); pos5(stem,0); pos6(stem,0);
bot y1=bot y3=.5[x_height,bar_height]; top y2=top y4=h; bot y5=0; 
y2r:=y4l:=y6=y2-bar+tiny; y3r:=y3r+o;
lft x1l=u; rt x4r=w-u; x5=x6=.5w; x2'=x2r; x4'=x4l; x3=x4r;
x2l=x1r; y1'-y1=.5bar_height; z1'l=whatever[z2l,z1l]+.5hair*right;
bskpoints(5,6,0,hair);
filldraw z1'l..z1l&z1l..z1r..z1'r---obl(2r,1'r,6l)---obl(6l,2r,5l)---z5l..z5rr
         ---obl(6r,5r,4l)---z4l+oblu*left..z4l+oblu*down{down}..{dir-70}z3l
	 ..(x3r,y1)..z3r{dir130}..{up}obl(4r,3r,2l)---obl(2l,4r,1l)---cycle;
penlabels(1,1',2,3,4,5,6); labels(3ll,5rr);
math_fit(-.5[x_height#,bar_height#]*slant,ic#-3u#);
endchar;

iff known chars.greek_varsampi_BB:
bskchar "The blackboard-bold Archaic Greek letter sampi";
beginchar(chars.greek_varsampi_BB,12u#,asc_height#,0); uni "non";
italcorr asc_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
pos1(curve,-10); pos2(.5[hair,stem],0); pos1'(.5[curve,stem],0);
pos3(curve,10); pos4(.5[hair,stem],0); pos5(.8cap_stem,0); pos6(.8cap_stem,0);
bot y1=bot y3=.5[x_height,bar_height]; top y2=top y4=h; bot y5=0; 
y2r:=y4l:=y6=y2-bar+tiny; y3r:=y3r+o;
lft x1l=u; rt x4r=w-u; x5=x6=.5w; x2'=x2r; x4'=x4l; x3=x4r;
x2l=x1r; y1'-y1=.5bar_height; z1'l=whatever[z2l,z1l]+.5hair*right;
bskpoints(5,6,0,hair);
filldraw z1'l..z1l&z1l..z1r..z1'r---obl(2r,1'r,6l)---obl(6l,2r,5l)---z5l..z5rr
         ---obl(6r,5r,4l)---z4l+oblu*left..z4l+oblu*down{down}..{dir-70}z3l
	 ..(x3r,y1)..z3r{dir130}..{up}obl(4r,3r,2l)---obl(2l,4r,1l)---cycle;
penlabels(1,1',2,3,4,5,6); labels(3ll,5rr);
infill ifobl(6r,6l,5r,5l,,)---ifobl(5l,5r,6l,6r,,)--cycle;
endchar;

iff known chars.greek_varsampi_SS:
bskchar "The sans-serif Archaic Greek letter sampi";
beginchar(chars.greek_varsampi_SS,12u#,asc_height#,0); uni "non";
italcorr asc_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
pos1(curve,0); pos2(.5[hair,stem],0); pos1'(.5[curve,stem],0);
pos3(curve,0); pos4(.5[hair,stem],0); pos5(stem,0); pos6(stem,0);
bot y1=bot y3=.5[x_height,bar_height]; top y2=top y4=h; bot y5=0; 
y2r:=y4l:=y6=y2-bar+tiny; 
lft x1l=u; rt x4r=w-u; x5=x6=.5w; x2'=x2r; x4'=x4l; x3=x4;
x2=x1; y1'-y1=.5bar_height; z1'l=whatever[z2l,z1l];
bskpoints(5,6,0,hair);
filldraw z1'l..z1l&z1l..z1r...z1'r---obl(2r,1'r,6l)---obl(6l,2r,5l)---z5l..z5rr
         ---obl(6r,5r,4l)---z4l+oblu*left..z4l+oblu*down{down}..{down}z3l
	 ..z3r{up}..{up}obl(4r,3r,2l)---obl(2l,4r,1l)---cycle;
penlabels(1,1',2,3,4,5,6); labels(3ll,5rr);
endchar;

iff known chars.greek_qoppa:
bskchar "The Archaic Greek letter qoppa";
beginchar(chars.greek_qoppa,9u#,x_height#,2/3desc_depth#); uni "0x03D9";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
oblu:=2oblu;
path p[];
pos1(curve,0); pos2(hair,90); pos3(curve,180); pos4(hair,270);
pos5(.75[stem,hair],0); pos6(curve,-20); 
pos6'(.5[stem,hair],0); pos6''(.9curve,-20);
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; z5=z2l; x6=x5r; bot y6r=-d;
z6'=2/3[z6l,z5l];
z6''=z6+.5stem*up;
p0:=z1l{down}..z2l..{up}z3l..z4l..{down}z1l;
p1:=z5l---z6'l---z6''l...z6l..z6r...z6''r---z6'r---z5r;
filldraw subpath(0,rundy(p0,1).zpet) of p0
         ..subpath(rundy(p1,0),rundy(p1,infinity).zpet) of p1
	 ..subpath(rundy(p0,1),infinity) of p0&cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
penlabels(1,2,3,4,5,6,6',6'');
math_fit(mft-.5u#,ic#-.5u#);
endchar;

iff known chars.greek_qoppa_BB:
bskchar "The blackboard-bold Archaic Greek letter qoppa";
beginchar(chars.greek_qoppa_BB,9u#,x_height#,2/3desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
oblu:=2oblu;
path p[];
pos1(cap_stem,0); pos2(hair,90); pos3(cap_stem,180); pos4(hair,270);
pos5(.75[stem,hair],0); pos6(curve,-20); 
pos6'(.5[stem,hair],0); pos6''(.9curve,-20);
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; z5=z2l; x6=x5r; bot y6r=-d;
z6'=2/3[z6l,z5l];
z6''=z6+.5stem*up;
p0:=z1l{down}..z2l..{up}z3l..z4l..{down}z1l;
p1:=z5l---z6'l---z6''l...z6l..z6r...z6''r---z6'r---z5r;
filldraw subpath(0,rundy(p0,1).zpet) of p0
         ..subpath(rundy(p1,0),rundy(p1,infinity).zpet) of p1
	 ..subpath(rundy(p0,1),infinity) of p0&cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
numeric tim[];
p100:=z4r..z1r{down}..z2r..z3r..cycle;
p101:=reverse z4l..z1l{down}..z2l..{up}z3l..cycle;
oblu:=1.25bbw;
z100=bsktouch(subpath(0,1) of p100,up,p101,down);
z101=bsktouch(subpath(1,2) of p100,down,p101,up);
z102=bsktouch(subpath(3,4) of p100,up,p101,down);
z103=bsktouch(subpath(2,3) of p100,down,p101,up);
tim100=xpart(p100 intersectiontimes (z100--(x100,y1)));
tim101=xpart(p101 intersectiontimes (z100--(x100,y4l+5)));
tim102=xpart(p100 intersectiontimes (z101--(x101,y1)));
tim103=xpart(p101 intersectiontimes (z101--(x101,y2l-5)));
tim104=xpart(p100 intersectiontimes (z102--(x102,y1)));
tim105=xpart(p101 intersectiontimes (z102--(x102,y4l+5)));
tim106=xpart(p100 intersectiontimes (z103--(x103,y1)));
tim107=xpart(p101 intersectiontimes (z103--(x103,y2l-5)));
infill subpath(rundy(p100,tim100),rundy(p100,tim102).zpet) of p100
       ..subpath(rundy(p101,tim103).zpet,rundy(p101,tim101)) of p101..cycle;
infill subpath(rundy(p100,tim104).zpet,rundy(p100,tim106)) of p100
       ..subpath(rundy(p101,tim107),rundy(p101,tim105).zpet) of p101..cycle;
penlabels(1,2,3,4,5,6,6',6''); labels(100,101,102,103);
endchar;

iff known chars.greek_qoppa_SS:
bskchar "The sans-serif Archaic Greek letter qoppa";
beginchar(chars.greek_qoppa_SS,9u#,x_height#,2/3desc_depth#); uni "non";
italcorr bar_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
oblu:=2oblu;
path p[];
pos1(curve,0); pos2(hair,90); pos3(curve,180); pos4(hair,270);
pos5(.75[stem,hair],0); pos6(curve,0); 
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; z5=z2l; x6=x5; bot y6=-d;
p0:=z1l{down}..z2l..{up}z3l..z4l..{down}z1l;
p1:=z5l---z6l..z6r---z5r;
filldraw subpath(0,rundy(p0,1).zpet) of p0
         ..subpath(rundy(p1,0),rundy(p1,infinity).zpet) of p1
	 ..subpath(rundy(p0,1),infinity) of p0&cycle;
infill z1r{up}..z4r..{down}z3r..z2r..{up}cycle;
penlabels(1,2,3,4,5,6);
endchar;

iff known chars.greek_stigma:
bskchar "The Greek letter stigma";
beginchar(chars.greek_stigma,9u#,x_height#,.5desc_depth#); uni "0x03DB";
italcorr x_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
pos1(stem,90); pos2(hair,180); pos0(stem,90); pos0'(hair,90);
pos3(stem,270); pos3'(stem,270); pos4(hair,180); pos5(hair,100); pos6(stem,0);
lft x2r=u; top y1r=h+o; y2=bar_height-.5d; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0'=w-u; x0=w-2.5u; y0=y1; y0'r=y0r; x3=.5w; bot y3r=bot y3'r=-o;
x6=x5-stem; y6=y5+.5stem; x4-x3'=.75(y3'-y4);
z6'=z6+.2stem*up+o*left; z6''=z6+.5(stem-currentbreadth)*dir-45;
filldraw z0r---z1r..z2r..z3r---z3'r..z4r..z5r..z6''..z6'..z6l
         ..z5l{right}..z4l..z3'l---z3l..z2l..z1l---z0l..{up}z0'l..z0'r---cycle;
penlabels(0,0',1,2,3,3',4,5,6); labels(6',6'');
math_fit(mft-.5u#,0);
endchar;

iff known chars.greek_stigma_BB:
bskchar "The blackboard-bold Greek letter stigma";
beginchar(chars.greek_stigma_BB,9u#,x_height#,.5desc_depth#); uni "non";
italcorr x_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
pos1(.8cap_stem,90); pos2(hair,180); pos0(.8cap_stem,90); pos0'(hair,90);
pos3(.8cap_stem,270); pos3'(.8cap_stem,270); pos4(hair,180); pos5(hair,100); pos6(stem,0);
lft x2r=u; top y1r=h+o; y2=bar_height-.5d; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0'=w-u; x0=w-2.5u; y0=y1; y0'r=y0r; x3=.5w; bot y3r=bot y3'r=-o;
x6=x5-stem; y6=y5+.5stem; x4-x3'=.75(y3'-y4);
z6'=z6+.2stem*up+o*left; z6''=z6+.5(stem-currentbreadth)*dir-45;
filldraw z0r---z1r..z2r..z3r---z3'r..z4r..z5r..z6''..z6'..z6l
         ..z5l{right}..z4l..z3'l---z3l..z2l..z1l---z0l..{up}z0'l..z0'r---cycle;
penlabels(0,0',1,2,3,3',4,5,6); labels(6',6'');
path p[]; numeric tim[];
p100:=subpath(0,6) of (z0'r---z0r---z1r..z2r..z3r---z3'r..z4r..z5r..z6''..z6'..z6l..{right}z5l);
p101:=subpath(1,infinity) of (z5l{right}..z4l..z3'l---z3l..z2l..z1l---z0l..{up}z0'l);
z100=bsktouch(subpath(0,3) of p100,right,p101,left);
z101=bsktouch(subpath(3,4) of p100,right,p101,left);
z102=bsktouch(subpath(5,infinity) of p100,right,p101,left);
tim100=xpart(p100 intersectiontimes (z100--(0,y100)));
tim101=xpart(p101 intersectiontimes (z100--(w,y100)));
tim102=xpart(p100 intersectiontimes (z101--(0,y101)));
tim103=xpart(p101 intersectiontimes (z101--(w,y101)));
tim104=xpart(p100 intersectiontimes (z102--(0,y102)));
tim105=xpart(p101 intersectiontimes (z102--(w,y102)));
oblu:=bbw;
infill subpath(rundy(p100,0),rundy(p100,tim100).zpet) of p100
       ..subpath(rundy(p101,tim101),rundy(p101,infinity).zpet) of p101..cycle;
infill subpath(rundy(p100,tim102),rundy(p100,tim104).zpet) of p100
       ..subpath(rundy(p101,tim105),rundy(p101,tim103).zpet) of p101..cycle;
labels(100,101,102,103);
endchar;

iff known chars.greek_stigma_SS:
bskchar "The sans-serif Greek letter stigma";
beginchar(chars.greek_stigma_SS,9u#,x_height#,.5desc_depth#); uni "non";
italcorr x_height#*slant-.25u#;
adjust_fit(0,0);
pickup tiny.nib;
pos1(stem,90); pos2(hair,180); pos0(stem,90); pos0'(hair,90);
pos3(stem,270); pos3'(stem,270); pos4(hair,180); pos5(hair,100); pos6(hair,90);
lft x2r=u; top y1r=h+o; y2=bar_height-.5d; x1=.5w;
rt x4r=w-u; y4=-.5d; x5=.5[x3,x4]; bot y5l=-d;
rt x0'=w-u; x0=w-2.5u; y0=y1; y0'r=y0r; x3=.5w; bot y3r=bot y3'r=-o;
x6=x5-stem; y6=y5; x4-x3'=.75(y3'-y4);
z6'=z6+.2stem*up+o*left; z6''=z6+.5(stem-currentbreadth)*dir-45;
filldraw z0r---z1r..z2r..z3r---z3'r..z4r..z5r---z6r
         ..z6l---z5l..z4l..z3'l---z3l..z2l..z1l---z0l..{up}z0'l..z0'r---cycle;
penlabels(0,0',1,2,3,3',4,5,6); labels(6',6'');
endchar;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% One cyrilic letter
iff known chars.cyrilic_Sha:
bskchar "The Cyrilic letter Sha";
beginchar(chars.cyrilic_Sha,17.5u#,cap_height#,0); uni "0x0428";
italcorr cap_height#*slant+.25u#;
adjust_fit(cap_serif_fit#,cap_serif_fit#);
pickup tiny.nib;
pos1(cap_stem,0); pos2(cap_stem,0);
pos3(cap_stem,0); pos4(cap_stem,0);
pos5(cap_stem,0); pos6(cap_stem,0);
bot y1=bot y3=0; top y2=top y4=top y6=h; y5=y1+.5[cap_hair,cap_stem]-currentbreadth;
lft x1l=lft x2l=2u; rt x3r=rt x4r=w-2u; x5=x6=.5w;
cap_serifs_tl(2l); cap_serifs_tr(2r); cap_serifs_bl(1l);
cap_serifs_tl(4l); cap_serifs_tr(4r); cap_serifs_br(3r);
{{ numeric old_jut; old_jut:=cap_jut; save cap_jut; cap_jut:=.75old_jut;
   cap_serifs_tl(6l); cap_serifs_tr(6r);
}};
y1r:=y3l:=y5;
oblu:=2oblu;
filldraw z1l.b{down}..{left}z1l.c..z1l.a---z3r.a..z3r.c{left}..z3r.b---z4r.b
         ..{right}z4r.c..z4r.a---z4l.a..{right}z4l.c..z4l.b---obl(3l,4l,5r)
	 ---obl(5r,3l,6r)---z6r.b..{right}z6r.c..z6r.a---z6l.a..{right}z6l.c
	 ..z6l.b---obl(5l,6l,1r)---obl(1r,5l,2r)---z2r.b..{right}z2r.c..z2r.a
	 ---z2l.a..{right}z2l.c..z2l.b---cycle;
penlabels(1,2,3,4,5,6);
endchar;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Next letters are named ``calligraphic'' but they are only ``decorative''
numeric cal_stem, cal_hair, cal_curve;
cal_curve=cap_curve+.25cap_hair; cal_stem=cap_stem+.25cap_hair; cal_hair:=.5[cap_hair,cap_stem];

iff known chars.cal_A:
bskchar "The calligraphic letter A";
beginchar(chars.cal_A,13.5u#,cap_height#,0); uni "non";
italcorr cap_height#*slant+.5u#;
adjust_fit(0,0);
path p[]; numeric tim[];
pickup tiny.nib;
pos1(cal_hair,0); pos2(cal_hair,90); pos3(cal_hair,180); pos4(cal_hair,180);
pos5(cal_hair,90); pos6(cal_hair,0); 
pos7(.65[cal_stem,cal_hair],-10); pos8(cal_stem,10); pos9(cal_hair,90);
pos11(cal_hair,-10); pos12(.5[cal_stem,cal_hair],60); pos13(.5[cal_stem,cal_hair],60);
rt x1l=u; y1=cal_stem; bot y2l=-d-o; .5[x1,x3]=x2=x1+cal_stem; y3=.5bar_height;
y4=.5[bar_height,x_height]; z4=z3+whatever*dir75; top y5r=h+o; x5=w-u-cal_hair; 
rt x6r=w; y6=y5-cal_hair; y8=cal_curve; y7=y5l-cal_curve; x8r=x7r=x5-.5cal_hair;
bot y9l=0; x9=.5[x8r,w];
z10=(w,y8r); z11r=z5r; z12r=z4; y13=y4; x13=x7r;
p1:=z1r{down}..z2r..z3r..z4r..{right}z5r..{down}z6r;
p2:=z6l{up}..{left}z5l..z4l..z3l..z2l..{up}z1l;
p3:=z11l---z7l..z8l..z9l..{dir100}z10;
p4:=z10+left{dir-80}..z9r..z8r..z7r---z11r;
p5:=z12r{right}..{dir30}z13r;
p6:=z13l{dir-120}..{left}z12l;
(tim1,tim2)=p2 intersectiontimes p4;
(tim3,tim4)=p3 intersectiontimes p6;
(tim5,tim6)=p6 intersectiontimes p2;
(tim7,tim8)=p2 intersectiontimes p3;
(tim9,tim10)=p2 intersectiontimes p5;
(tim11,tim12)=p5 intersectiontimes p3;
filldraw p1..subpath(0,rundy(p2,tim1).zpet) of p2
         ..reverse subpath(0,rundy(p4,tim2).zpet) of p4
	 ..reverse subpath(rundy(p3,tim3),infinity) of p3
	 ..subpath(rundy(p6,tim4),rundy(p6,tim5).zpet) of p6
	 ..subpath(rundy(p2,tim6),infinity) of p2..cycle;
oblu:=2oblu;
infill subpath(rundy(p2,tim7),rundy(p2,tim9).zpet) of p2
       ..subpath(rundy(p5,tim10),rundy(p5,tim11).zpet) of p5
       ..reverse subpath(rundy(p3,tim8),rundy(p3,tim12).zpet) of p3..cycle;
penlabels(1,2,3,4,5,6,7,8,9,11,12,13); labels(10);
math_fit(-u#,u#);
endchar;

iff known chars.cal_B:
bskchar "The calligraphic letter B";
beginchar(chars.cal_B,11u#,cap_height#,0); uni "non";
italcorr cap_height#*slant+.5u#;
adjust_fit(0,0);
path p[]; numeric tim[], bpos;
bpos=.5[x_height,bar_height];
pickup tiny.nib;
pos1(hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20); pos4(hair,150);
pos5(.9cal_hair,80); pos6(.65[cal_stem,cal_hair],10); pos7(cal_stem,-10);
pos8(cal_hair,-90); pos9(cal_hair,180);
pos10(.65[cal_stem,cal_hair],10); pos11(cal_stem,-10);
pos12(cal_hair,-90); pos13(cal_hair,180);
y1=h-cap_stem-cap_hair; bot y3r=0; lft x3l=0; lft x1l=u;
x2l=x3r+.5hair; y2=1/3x_height;
lft x9r=x2r+cal_hair; y9=bpos+cal_stem; bot y8r=bpos-o; x8=x9+cal_stem;
x4l=0; top y4=h-cap_stem; top y5r=h; .75[x5,x4]=x1;
y6-y7=.5(h-bpos); .5[y6,y7]=.5[h,bpos]; x6=x7; rt x6r=w-3.5u;
y10-y11=1/3bpos; .5[y10,y11]=.5bpos; x10=x11; rt x10r=w-u;
lft x13r=x2r+cal_stem; y13=cal_stem; bot y12r=-d-o; x12=x13+cal_stem;
p0:=z4l..z5l..z6l..z7l..z8l..{up}z9l;
p1:=z9r{down}..z8r..z7r..z6r..z5r..z4r;
p2:=z8r{right}..z10l..z11l..z12l..{up}z13l;
p3:=z13r{down}..z12r..z11r..z10r..{left}z8l;
z100=bsktouch(p3,up,p1,down);
tim0=xpart(p3 intersectiontimes (z100--(x100,y11)));
tim1=xpart(p1 intersectiontimes (z100--(x100,y6)));
filldraw z1l{z2l-z1l}..z2l..z3l&z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r..cycle;
filldraw subpath(0,4) of p0..p2
         ..subpath(0,rundy(p3,tim0).zpet) of p3
	 ..subpath(rundy(p1,tim1),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); labels(100);
math_fit(0,.5u#);
endchar;

iff known chars.cal_C:
bskchar "The calligraphic letter C";
beginchar(chars.cal_C,9u#,cap_height#,0); uni "non";
italcorr cap_height#*slant+.5u#;
adjust_fit(0,0);
pickup tiny.nib;
pos1(cal_hair,-90); pos2(cal_hair,180); 
pos3(.65[cal_stem,cal_hair],-10); pos4(cal_stem,10); pos5(cal_hair,90);
top y1l=h+o; x1=w-u-cal_hair; rt x2l=w; y2=y1-cal_hair;
x3=x4; lft x3l=u; .5[y3,y4]=.5h; y3-y4=1/3h;
bot y5l=-o; x5=.5[x4r,w]; z6=(w,cal_curve+cal_stem);
filldraw z2l{up}..z1l..z3l..z4l..z5l..{dir90}z6
         ..z6+left{dir-100}..z5r..z4r..z3r..z1r..{down}z2r..cycle;
penlabels(1,2,3,4,5,6);
math_fit(-u#,1.5u#);
endchar;

iff known chars.cal_D:
bskchar "The calligraphic letter D";
beginchar(chars.cal_D,12u#,cap_height#,0); uni "non";
italcorr x_height#*slant;
adjust_fit(0,0);
path p[];
pickup tiny.nib;
pos1(hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20); pos4(hair,150);
pos5(.9cal_hair,80); pos6(.65[cal_stem,cal_hair],10); pos7(cal_stem,-10);
pos8(cal_hair,-90); pos9(cal_hair,180);
y1=h-cap_stem-cap_hair; bot y3r=0; lft x3l=0; lft x1l=u;
x2l=x3r+.5hair; y2=1/3x_height;
lft x9r=x2r+cal_stem; y9=cal_stem; bot y8r=-d-o; x8=x9+cal_stem;
x4l=0; top y4=h-cap_stem; top y5r=h; .75[x5,x4]=x1;
y6-y7=1/3h; .5[y6,y7]=.5h; x6=x7; rt x6r=w-u;
p0:=z4l..z5l..z6l..z7l..z8l..{up}z9l;
p1:=z9r{down}..z8r..z7r..z6r..z5r..z4r;
filldraw z1l{z2l-z1l}..z2l..z3l&z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r..cycle;
filldraw p0..p1..cycle;
penlabels(1,2,3,4,5,6,7,8,9);
math_fit(0,0);
endchar;

iff known chars.cal_E:
bskchar "The calligraphic letter E";
beginchar(chars.cal_E,13.5u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cap_curve;
pos1(cal_hair,-30); pos2(cal_stem,-30); pos3(cal_hair,-20); 
pos4(cap_hair,60); pos5(cap_hair,90); pos6(cal_hair,180);
pos7(cal_hair,180); pos8(.5[cal_stem,cal_hair],90);
pos10(cal_hair,0); pos11(.5[cal_hair,hair],0); pos12(cal_hair,90);
pos13(cal_hair,60); pos14(cal_hair,60); pos15(cal_stem,75); pos16(cal_stem,75);
y1=h; bot y3l=0; x1l-x3l=u; rt x1r=4u;
top y4r=h+o; lft x4=u;
x2l=x3r+.5hair; y2=1/3x_height; z5r=z1r;
rt x7l=w-u; lft x6l=x7; bot y7=0; top y6=.5bar_height;
bot y8l=0; x8=x2l; y7r:=y8r-currentbreadth; top y9=bot y8l; x8l-x9=2(y8r-y8l);
top y10=h; rt x10r=w-1.5u; z11=z10+cap_stem*dir(-100); z12r=z1l; 
y10r:=bot bot y10r; y10l:=bot bot y10r;
x10'-x10l=x10-x10r; y10'=y10r;
y13=y14=.25[y15,y15l]=.52[y1r,y8r]; x13=x2l; x14=.5[x2r,x6l]; x15=x14+cal_hair;
z16=z15+hair*right;
p0:=z1l{z2l-z1l}..z2l..z3l;
p1:=z4l{dir-20}..{right}z5l;
p2:=z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r{dir180}..{dir160}z4r;
p3:=z9{dir10}..z8l{dir10}..z7l{dir-10}..{dir130}z6l;
p4:=z6r{dir-40}..z7r{dir160}..{dir190}z8r..{dir190}z9;
p5:=z11r---z10r..z10..z12r..z4r;
p6:=z4l..z12l..z10'..z10l---z11l;
p7:=z13l{dir10}..{dir-10}z14l..z15l..z16l---z16r..z15r..z14r{dir170}..{dir190}z13r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3)=p0 intersectiontimes p4;
(tim4,tim5)=p2 intersectiontimes p4;
(tim6,tim7)=p2 intersectiontimes p6;
(tim8,tim9)=p2 intersectiontimes p7;
(tim10,tim11-2)=p2 intersectiontimes subpath(2,infinity) of p7;
filldraw subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0
         ..subpath(rundy(p4,tim3),infinity) of p4..p3
	 ..subpath(0,rundy(p4,tim5).zpet) of p4
	 ..subpath(rundy(p2,tim4),rundy(p2,tim8).zpet) of p2
	 ..subpath(rundy(p7,tim9),rundy(p7,tim11).zpet) of p7
	 ..subpath(rundy(p2,tim10),rundy(p2,tim6).zpet) of p2
	 ..subpath(rundy(p6,tim7),infinity) of p6
	 ..p5
	 ..subpath(0,rundy(p1,tim1).zpet) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); labels(10');
math_fit(0,0);
endchar;

iff known chars.cal_F:
bskchar "The calligraphic letter F";
beginchar(chars.cal_F,13.5u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cap_curve;
pos1(cal_hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20); 
pos4(cap_hair,60); pos5(cap_hair,90);
pos6(cal_hair,0); pos7(.5[cal_hair,hair],0); pos8(cal_hair,90);
pos9(cal_hair,60); pos10(cal_hair,60); pos11(cal_stem,75); pos12(cal_stem,75);
y1=h; bot y3r=0; x1l-x3l=u; rt x1r=4u;
top y4r=h+o; lft x4=u;
x2l=x3r+.5hair; y2=1/3x_height; z5r=z1r;
top y6=h; rt x6r=w-1.5u; z7=z6+cap_stem*dir(-100); z8r=z1l; 
y6r:=bot bot y6r; y6l:=bot bot y6r;
x6'-x6l=x6-x6r; y6'=y6r;
y9=y10=y11=.52y1r; x9=x2l; x10=.5[x2r,x6]; x11=x10+cal_hair;
z12=z11+hair*right;
p0:=z1l{z2l-z1l}..z2l..z3l;
p1:=z4l{dir-20}..{right}z5l;
p2:=z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r{dir180}..{dir160}z4r;
p3:=z7r---z6r..z6..z8r..z4r;
p4:=z4l..z8l..z6'..z6l---z7l;
p5:=z9l{dir10}..{dir-10}z10l..z11l..z12l---z12r..z11r..z10r{dir170}..{dir190}z9r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3)=p2 intersectiontimes p4;
(tim4,tim5)=p2 intersectiontimes p5;
(tim6,tim7-2)=p2 intersectiontimes subpath(2,infinity) of p5;
filldraw subpath(rundy(p0,tim0),infinity) of p0
	 ..subpath(0,rundy(p2,tim4).zpet) of p2
	 ..subpath(rundy(p5,tim5),rundy(p5,tim7).zpet) of p5
	 ..subpath(rundy(p2,tim6),rundy(p2,tim2).zpet) of p2
	 ..subpath(rundy(p4,tim3),infinity) of p4
	 ..p3
	 ..subpath(0,rundy(p1,tim1).zpet) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10,11,12); labels(6');
math_fit(0,0);
endchar;

iff known chars.cal_G:
bskchar "The calligraphic letter G";
beginchar(chars.cal_G,9.5u#,cap_height#,.75desc_depth#); uni "non";
italcorr cap_height#*slant+.5u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cal_curve;
pos1(cal_hair,-90); pos2(cal_hair,180); 
pos3(.65[cal_stem,cal_hair],-10); pos4(cal_stem,10); pos5(cal_hair,90);
pos6(cal_hair,180); pos7(cal_hair,0); pos8(cal_hair,90); pos9(cal_hair,180);
top y1l=h+o; x1=w-u-cal_hair; rt x2l=w; y2=y1-cal_hair;
x3=x4; lft x3l=u; .5[y3,y4]=.5h; y3-y4=1/3h;
bot y5l=-o; x5=.5[x4r,w]; z6=(w,y4);
x7r=x5; y7=-d+cal_stem; bot y8l=-d-o; .5[x7,x9]=x8=x7+cal_stem; y9=-.35d;
p0:=z2l{up}..z1l..z3l..z4l..z5l..{dir90}z6;
p1:=z6+left{dir-100}..z5r..z4r..z3r..z1r..{down}z2r;
p2=z6l{down}..z9l..z8l..{up}z7l..z7r{down}..z8r..z9r..{up}z6r;
(tim0,tim1)=p0 intersectiontimes p2;
filldraw reverse p1
         ..subpath(0,rundy(p2,tim1).zpet) of p2
	 ..reverse subpath(0,rundy(p0,tim0).zpet) of p0..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10);
math_fit(-u#,u#);
endchar;

iff known chars.cal_H:
bskchar "The calligraphic letter H";
beginchar(chars.cal_H,14.5u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cap_curve;
pos1(hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20); 
pos4(cap_hair,60); pos5(cap_hair,90); pos6(cal_hair,-10);
pos7(.65[cal_stem,cal_hair],-10); pos8(.45[cal_stem,cal_hair],10); pos9(cal_hair,90);
pos11(cal_hair,60); pos12(cal_hair,60);
y1=h; bot y3r=0; x1l-x3l=u; rt x1r=4u;
top y4r=h+o; lft x4=u;
x2l=x3r+.5hair; y2=1/3x_height; z5r=z1r; top y6l=h; x6r=w-u-cal_hair;
y8=cal_curve; y7=h-cal_curve-cal_hair; x8r=x7r=w-u-1.5cal_hair;
bot y9l=0; x9=.5[x8r,w]; z10=(w,y8r);
y11r=y12=.75[bar_height,x_height]; x11r=x2l; x12=x7r;
p0:=z1l{z2l-z1l}..z2l..z3l;
p1:=z4l{dir-20}..{right}z5l;
p2:=z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r{dir180}..{dir160}z4r;
p3:=z11l{right}..{dir50}z12l;
p4:=z12r{dir-150}..{left}z11r;
p5:=z6l---z7l..z8l..z9l..{dir100}z10;
p6:=z10+left{dir-80}..z9r..z8r..z7r---z6r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3)=p2 intersectiontimes p3;
(tim4,tim5)=p5 intersectiontimes p3;
(tim6,tim7)=p5 intersectiontimes p4;
(tim8,tim9)=p2 intersectiontimes p4;
filldraw subpath(rundy(p0,tim0),infinity) of p0
         ..subpath(0,rundy(p2,tim2).zpet) of p2
	 ..subpath(rundy(p3,tim3),rundy(p3,tim5).zpet) of p3
	 ..subpath(rundy(p5,tim4),infinity) of p5..p6
	 ..subpath(0,rundy(p5,tim6).zpet) of p5
	 ..subpath(rundy(p4,tim7),rundy(p4,tim9).zpet) of p4
	 ..subpath(rundy(p2,tim8),infinity) of p2
	 ..subpath(0,rundy(p1,tim1).zpet) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10,11,12);
math_fit(-u#,u#);
endchar;

iff known chars.cal_I:
bskchar "The calligraphic letter I";
beginchar(chars.cal_I,9u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cap_curve;
pos1(cal_hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20); 
pos4(cal_hair,60); pos5(cal_hair,60); pos6(cal_hair,90);
pos7(cal_hair,90); pos8(cal_hair,60); pos9(cal_hair,60);
y1=h; bot y3r=0; x1l-x3l=u; x1=.5w;
x2l=x3r+.5hair; y2=1/3x_height; 
top y5=h; rt x5=rt x8=w-u; lft x4=lft x7=u; z4=whatever[z5r,z1l];
bot y8=0; z7=whatever[z8l,z3r]; 
z6r=z1l; z9l=z3r;
p0:=z1l{z2l-z1l}..z2l..z3l;
p1:=z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r;
p2:=z5r{dir200}..z6r..{left}z4r;
p3:=z4l{right}..z6l..{dir20}z5l;
p4:=z7l{dir20}..z9l..{right}z8l;
p5:=z8r{left}..z9r..{dir200}z7r;
(tim0,tim1)=p0 intersectiontimes p3;
(tim2,tim3)=p1 intersectiontimes p3;
(tim4,tim5)=p0 intersectiontimes p5;
(tim6,tim7)=p1 intersectiontimes p5;
filldraw subpath(rundy(p0,tim0),rundy(p0,tim4).zpet) of p0
         ..subpath(rundy(p5,tim5),infinity) of p5
	 ..p4
	 ..subpath(0,rundy(p5,tim7).zpet) of p5
	 ..subpath(rundy(p1,tim6),rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p3,tim3),infinity) of p3
	 ..p2..subpath(0,rundy(p3,tim1).zpet) of p3
	 ..cycle;
penlabels(1,2,3,4,5,6,7,8,9);
math_fit(0,0);
endchar;

iff known chars.cal_J:
bskchar "The calligraphic letter J";
beginchar(chars.cal_J,8u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cap_curve;
pos1(cal_hair,-30); pos2(cal_hair,-30);
pos3(cap_hair,60); pos4(cap_hair,90); pos5(cal_hair,260);
pos6(cal_stem,210);
y1=h; rt x1r=w-u;
top y3r=h+o; rt x1r-lft x3=4u;
x2l=x1-u; y2=1/3x_height; z4r=z1r;
y6=.7bar_height; lft x6r=u; x5=1/3[x6,x2]; y5=0;
p0:=z1l{z2l-z1l}..z2l..z5l..{up}z6l;
p1:=z3l{dir-20}..{right}z4l;
p2:=z6+o*up..z6r{down}..z5r..z2r..{z1r-z2r}z1r{dir180}..{dir160}z3r;
(tim0,tim1)=p0 intersectiontimes p1;
filldraw subpath(rundy(p0,tim0),infinity) of p0..p2
	 ..subpath(0,rundy(p1,tim1).zpet) of p1..cycle;
penlabels(1,2,3,4,5,6);
math_fit(0,0);
endchar;

iff known chars.cal_K:
bskchar "The calligraphic letter K";
beginchar(chars.cal_K,12u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cap_curve;
pos1(hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20); 
pos4(cap_hair,60); pos5(cap_hair,90); pos6(cal_stem,-10);
pos7(cal_stem,10); pos8(cal_hair,90);
pos10(cal_stem,20); pos11(cal_hair,-10); pos12(cal_stem,0);
y1=h; bot y3r=0; x1l-x3l=u; rt x1r=4u;
top y4r=h+o; lft x4=u;
x2l=x3r+.5hair; y2=1/3x_height; z5r=z1r;
bot y8l=0; y7=cal_curve; x7r=w-u-1.5cal_hair; 
x8=.5[x7r,w]; z9=(w,y7r);
x6=x2l; y6=.5[x_height,bar_height]; z11l=z6l; x10r=w-2u; y10=h;
z12=z10+(u,-cal_stem);;
p0:=z1l{z2l-z1l}..z2l..z3l;
p1:=z4l{dir-20}..{right}z5l;
p2:=z9+left{dir-80}..z8r..z7r..z6r;
p3:=z6l..{dir-60}z7l..z8l..{dir100}z9;
p4:=z10l{dir-40}..z12l{(z11-z12) rotated 20}..{(z11-z12) rotated -10}z11l;
p5:=z11r{(z12-z11) rotated -10}..{(z12-z11) rotated 20}z12r..{dir130}z10r;
p6:=z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r{dir180}..{dir160}z4r;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3)=p0 intersectiontimes p4;
(tim4,tim5)=p0 intersectiontimes p3;
(tim6,tim7)=p6 intersectiontimes p3;
(tim8,tim9)=p6 intersectiontimes p4;
filldraw subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0
         ..subpath(rundy(p4,(tim3,.5oblu)),infinity) of p4
	 ..subpath(0,rundy(p3,(tim5,.5oblu)).zpet) of p3
	 ..subpath(rundy(p0,tim4),infinity) of p0
         ..subpath(0,rundy(p6,tim6).zpet) of p6
	 ..subpath(rundy(p3,tim7),infinity) of p3
	 ..subpath(0,rundy(p2,infinity).zpet) of p2
	 ..subpath(rundy(p5,0),infinity) of p5..z10
	 ..subpath(0,rundy(p4,tim9).zpet) of p4
	 ..subpath(rundy(p6,tim8),infinity) of p6
	 ..subpath(0,rundy(p1,tim1).zpet) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10,11,12);
math_fit(0,u#);
endchar;

iff known chars.cal_L:
bskchar "The calligraphic letter L";
beginchar(chars.cal_L,13.5u#,cap_height#,0); uni "non";
italcorr 0;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cap_curve;
pos1(cal_hair,-30); pos2(cal_stem,-30); pos3(cal_hair,-20); 
pos4(cap_hair,60); pos5(cap_hair,90); pos6(cal_hair,180);
pos7(cal_hair,180); pos8(.5[cal_stem,cal_hair],90);
y1=h; bot y3l=0; x1l-x3l=u; rt x1r=4u;
top y4r=h+o; lft x4=u;
x2l=x3r+.5hair; y2=1/3x_height; z5r=z1r;
rt x7l=w-u; lft x6l=x7; bot y7=0; top y6=.5bar_height;
bot y8l=0; x8=x2l; y7r:=y8r-currentbreadth; top y9=bot y8l; x8l-x9=2(y8r-y8l);
p0:=z1l{z2l-z1l}..z2l..z3l;
p1:=z4l{dir-20}..{right}z5l;
p2:=z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r{dir180}..{dir160}z4r;
p3:=z9{dir10}..z8l{dir10}..z7l{dir-10}..{dir130}z6l;
p4:=z6r{dir-40}..z7r{dir160}..{dir190}z8r..{dir190}z9;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3)=p0 intersectiontimes p4;
(tim4,tim5)=p2 intersectiontimes p4;
filldraw subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0
         ..subpath(rundy(p4,tim3),infinity) of p4..p3
	 ..subpath(0,rundy(p4,tim5).zpet) of p4
	 ..subpath(rundy(p2,tim4),infinity) of p2
	 ..subpath(0,rundy(p1,tim1).zpet) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8); labels(9);
math_fit(0,0);
endchar;

iff known chars.cal_M:
bskchar "The calligraphic letter M";
beginchar(chars.cal_M,16u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-u#;
adjust_fit(0,0);
path p[]; numeric tim[];
pickup tiny.nib;
pos1(hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20);
pos4(hair,-30); pos5(hair,-30); pos6(cal_hair,210); pos7(cal_stem,200);
pos8(hair,180); pos9(hair,90); pos10(cal_hair,-10);
pos11(.65[cal_stem,cal_hair],-10); pos12(cal_stem,10); pos13(cal_hair,90);
y1=h-cap_stem-cap_hair; bot y3r=0; lft x3l=u; lft x1l=2u;
x2l=x3r+.5hair; y2=1/3x_height;
lft x4l=0; y4=y1-cal_hair; y5=y6r; z5=z4+whatever*dir60; z6r=z1r+cal_hair*dir60;
x7=.5w ;y7r=0;
top y9r=top y10l=h; y8=0; x8l=x7r; x9=w-2u;
x10r=w-u-cal_hair;
y12=cal_curve; y11=h-cal_curve-cal_hair; x12r=x11r=w-u-1.5cal_hair;
bot y13l=0; x13=.5[x12r,w]; z14=(w,y12r);
p1:=z4r---z5r..z6r..{down}z7r;
p2:=z7l{up}..z6l..z5l---z4l;
p3:=z8l{up}..z9l;
p4:=z9r..{down}z8r;
p5:=z10l---z11l..z12l..z13l..{dir100}z14;
p6:=z14+left{dir-80}..z13r..z12r..z11r---z10r;
(tim0,tim1)=p1 intersectiontimes p4;
(tim2,tim3)=p3 intersectiontimes p5;
z100=bsktouch(p4,left,p2,right);
tim4=xpart(p4 intersectiontimes(z100--(w,y100)));
tim5=xpart(p2 intersectiontimes(z100--(0,y100)));
filldraw z1l{z2l-z1l}..z2l..z3l&z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r..cycle;
filldraw  subpath(0,rundy(p1,tim0).zpet) of p1
          ..subpath(rundy(p4,tim1),infinity) of p4
	  ..subpath(0,rundy(p3,tim2).zpet) of p3
	  ..subpath(rundy(p5,tim3),infinity) of p5
	  ..subpath(0,rundy(p6,infinity).zpet) of p6
	  ..subpath(rundy(p4,0),rundy(p4,tim4).zpet) of p4
	  ..subpath(rundy(p2,tim5),infinity) of p2..cycle;
math_fit(0,ic#);
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

iff known chars.cal_N:
bskchar "The calligraphic letter N";
beginchar(chars.cal_N,13u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(0,0);
path p[]; numeric tim[];
pickup tiny.nib;
pos1(hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20);
pos4(hair,-30); pos5(hair,-30); pos6(cal_hair,210); pos7(cal_stem,200);
pos8(hair,180); pos9(cal_stem,90); pos10(cal_stem,60);
y1=h-cap_stem-cap_hair; bot y3r=0; lft x3l=u; lft x1l=2u;
x2l=x3r+.5hair; y2=1/3x_height;
lft x4l=0; y4=y1-cal_hair; y5=y6r; z5=z4+whatever*dir60; z6r=z1r+cal_hair*dir60;
x7=w-3u; y7r=0;
top y10r=h; y9=h-cal_stem; y8=0; x8l=x7r; x9=w-2.5u; rt x10=w-u;
p1:=z4r---z5r..z6r..{down}z7r;
p2:=z7l{up}..z6l..z5l---z4l;
p3:=z8l{(z9-z8)rotated 10}..{(z9-z8)rotated -10}z9l..{right}z10l;
p4:=z10r{left}..z9r{(z8-z9)rotated -10}..{(z8-z9) rotated 10}z8r;
filldraw z1l{z2l-z1l}..z2l..z3l&z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r..cycle;
(tim0,tim1)=p1 intersectiontimes p4;
z100=bsktouch(p4,left,p2,right);
tim2=xpart(p4 intersectiontimes(z100--(w,y100)));
tim3=xpart(p2 intersectiontimes(z100--(0,y100)));
filldraw  subpath(0,rundy(p1,tim0).zpet) of p1
          ..subpath(rundy(p4,tim1),infinity) of p4
	  ..p3
	  ..subpath(0,rundy(p4,tim2).zpet) of p4
	  ..subpath(rundy(p2,tim3),infinity) of p2..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10);
math_fit(0,0);
endchar;

iff known chars.cal_O:
bskchar "The calligraphic letter O";
beginchar(chars.cal_O,10u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
pos1(cal_hair,-90); pos2(cal_hair,180); 
pos3(.65[cal_stem,cal_hair],-10); pos4(cal_stem,10); pos5(cal_hair,90);
pos6(.65[cal_stem,cal_hair],170); 
top y1l=h+o; x1=w-2u-cal_hair; rt x2l=w-u; y2=y1-cal_hair;
x3=x4; lft x3l=u; .5[y3,y4]=.5h; y3-y4=1/3h;
bot y5l=-o; x5=.5[x4r,w];
y6=.55[y4,y3]; rt x6l=w; y7=y2-cal_hair; lft x7=rt x5;
filldraw z2l{up}..z1l..z3l..z4l..z5l..z6l..{dir160}z7..{dir-20}z7+down
         ..z6r..z5r..z4r..z3r..z1r..{down}z2r..cycle;
penlabels(1,2,3,4,5,6,7);
math_fit(-u#,u#);
endchar;

iff known chars.cal_P:
bskchar "The calligraphic letter P";
beginchar(chars.cal_P,10u#,cap_height#,0); uni "non";
italcorr x_height#*slant-.25u#;
adjust_fit(0,0);
path p[];
pickup tiny.nib;
pos1(hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20); pos4(hair,150);
pos5(.9cal_hair,80); pos6(.65[cal_stem,cal_hair],10); pos7(cal_stem,-10);
pos8(cal_hair,-90); pos9(cal_hair,180);
y1=h-cap_stem-cap_hair; bot y3r=0; lft x3l=0; lft x1l=u;
x2l=x3r+.5hair; y2=1/3x_height;
lft x9r=x2r+cal_hair; y9=bar_height+cal_stem; bot y8r=bar_height-o; x8=x9+cal_stem;
x4l=0; top y4=h-cap_stem; top y5r=h; .75[x5,x4]=x1;
y6-y7=.5(h-bar_height); .5[y6,y7]=.5[h,bar_height]; x6=x7; rt x6r=w-2u;
p0:=z4l..z5l..z6l..z7l..z8l..{up}z9l;
p1:=z9r{down}..z8r..z7r..z6r..z5r..z4r;
filldraw z1l{z2l-z1l}..z2l..z3l&z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r..cycle;
filldraw p0..p1..cycle;
penlabels(1,2,3,4,5,6,7,8,9);
math_fit(0,-2u#);
endchar;

iff known chars.cal_Q:
bskchar "The calligraphic letter Q";
beginchar(chars.cal_Q,11u#,cap_height#,.75desc_depth#); uni "non";
italcorr cap_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[];
pos1(cal_hair,-90); pos2(cal_hair,180); 
pos3(.65[cal_stem,cal_hair],-10); pos4(cal_stem,10); pos5(cal_hair,90);
pos6(.65[cal_stem,cal_hair],170); pos8(cal_hair,160); pos9(cal_hair,60);
pos10(cal_hair,90);
top y1l=h+o; x1=w-3u-cal_hair; rt x2l=w-2u; y2=y1-cal_hair;
x3=x4; lft x3l=u; .5[y3,y4]=.5h; y3-y4=1/6h;
bot y5l=1/12h; x5=.5[x4r,x6r]; y8=.5y5; x8r=x2;
y6=.55[y4,y3]; rt x6l=w-3u; y7=y2-cal_hair; lft x7=rt x5;
x9=x5; y9l=-.7d; rt x10=w; bot y10l=-d;
p0:=z9l{z8-z9}..z8l..z2l..z1l..z3l..z4l..z5l..z6l..{dir160}z7..{dir-20}z7+down
    ..z6r..z5r..z4r..z3r..z1r..z2r..z8r..{z9-z8}z9r;
p1:=z10r{dir200}..{left}z9;
p2:=z9l{right}..{dir20}z10l;
(tim0,tim1)=subpath(0,1) of p0 intersectiontimes p1;
filldraw subpath(rundy(p2,0),infinity) of p2
         ..subpath(0,rundy(p1,(tim1,2oblu)).zpet) of p1
	 ..subpath(rundy(p0,(tim0,2oblu)),rundy(p0,infinity).zpet) of p0..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10);
math_fit(-u#,u#);
endchar;

iff known chars.cal_R:
bskchar "The calligraphic letter R";
beginchar(chars.cal_R,10.5u#,cap_height#,0); uni "non";
italcorr x_height#*slant-.25u#;
adjust_fit(0,0);
path p[]; numeric tim[];
pickup tiny.nib;
pos1(hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20); pos4(hair,150);
pos5(.9cal_hair,80); pos6(.65[cal_stem,cal_hair],10); pos7(cal_stem,-10);
pos8(cal_hair,-90); pos9(cal_hair,180);
pos10(.5[cal_stem,cal_hair],0); pos11(cal_stem,10); pos12(cal_hair,90);
y1=h-cap_stem-cap_hair; bot y3r=0; lft x3l=0; lft x1l=u;
x2l=x3r+.5hair; y2=1/3x_height;
lft x9r=x2r+cal_hair; y9=bar_height+cal_stem; bot y8r=bar_height-o; x8=x9+cal_stem;
x4l=0; top y4=h-cap_stem; top y5r=h; .75[x5,x4]=x1;
y6-y7=.5(h-bar_height); .5[y6,y7]=.5[h,bar_height]; x6=x7; rt x6r=w-2.5u;
bot y12l=0; y11=cal_curve; x11r=w-u-1.5cal_hair; 
x12=.5[x11r,w]; z13=(w,y11r);
x10r=x2l; y10=.5[x_height,bar_height];
p0:=z4l..z5l..z6l..z7l..z8l..{up}z9l;
p1:=z9r{down}..z8r..z7r..z6r..z5r..z4r;
p2:=z13+left{dir-80}..z12r..z11r..z10r..z10l;
p3:=z10l..{dir-60}z11l..z12l..{dir100}z13;
p4:=z1l{z2l-z1l}..z2l..z3l;
p5:=z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r;
(tim0,tim1)=p4 intersectiontimes p2;
(tim2,tim3)=p4 intersectiontimes p3;
(tim4,tim5)=p5 intersectiontimes p3;
z100=bsktouch(subpath(1,infinity) of p1,down,p2,up);
tim6=xpart(p1 intersectiontimes (z100--(x100,h)));
tim7=xpart(p2 intersectiontimes (z100--(x100,0)));
(tim8,tim9)=p5 intersectiontimes p2;
tim10=xpart(p2 intersectiontimes (z8l---(x8,0)));
filldraw subpath(0,rundy(p4,tim0).zpet) of p4
         ..subpath(rundy(p2,tim1),infinity) of p2
	 ..subpath(0,rundy(p3,tim3).zpet) of p3
	 ..subpath(rundy(p4,tim2),infinity) of p4
	 ..subpath(0,rundy(p5,tim4).zpet) of p5
	 ..subpath(rundy(p3,tim5),infinity) of p3
	 ..subpath(0,rundy(p2,tim7).zpet) of p2
	 ..subpath(rundy(p1,tim6),infinity) of p1
	 ..subpath(0,rundy(p0,4).zpet) of p0
	 ..subpath(rundy(p2,tim10),rundy(p2,tim9).zpet) of p2
	 ..subpath(rundy(p5,tim8),infinity) of p5..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); labels(100);
math_fit(0,ic#);
endchar;

iff known chars.cal_S:
bskchar "The calligraphic letter S";
beginchar(chars.cal_S,9u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
pos2(cal_hair,30); pos3(cal_stem,225); pos4(cal_hair,30);
pos5(cal_stem,180); pos6(cal_stem,180);
y5=.5[y2l,y3]+.5like_cap_hair;
y6=.5[y4r,y3]-.5like_cap_hair; rt x6l=w-u;
x3=x4=.5w; top y2r=h+o; bot y4l=-o; x2=.5[x1,x5l];
y3=.5[y2l,y4r]+.5cap_hair; 
x5l=3u; x1r=w-x5r+.5u;
pos1(cal_stem,-10); y1=.5[y5,y2l];
pos7(cap_stem,30); x7l=w-x6l; y7=y6;
filldraw z1r{dir110}..z2r{left}..z5r..z3r..z6r..{left}z4r..{up}z7r..z7l{down}..z4l{right}
     ..z6l..z3l..z5l..{right}z2l..{dir-70}z1l..cycle;
math_fit(0,0);
penlabels(0,1,2,3,4,5,6,7); 
endchar;

iff known chars.cal_T:
bskchar "The calligraphic letter T";
beginchar(chars.cal_T,13u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cap_curve;
pos1(cal_hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20); 
pos4(cap_hair,60); pos5(cap_hair,90);
pos6(cal_hair,0); pos7(.5[cal_hair,hair],0); pos8(cal_hair,90);
pos9(cal_hair,180); pos10(.5[cal_hair,hair],180);
y1=h; bot y3r=0; x1l-x3l=u; rt x1r=.5w;
top y4r=h+o; lft x4=u;
x2l=x3r+.5hair; y2=1/3x_height; z5r=z1r;
top y6=h; rt x6r=w-1.5u; z7=z6+cap_stem*dir(-100); z8r=z1l; 
y6r:=bot bot y6r; y6l:=bot bot y6r;
x6'-x6l=x6r-x6; y6'=y6r;
top y9=h; lft x9r=.5u; z10=z9+cap_stem*dir(-70);
y9r:=y6r; y9l:=y6l;
x9'-x9l=x9-x9r; y9'=y9r;
p0:=z1l{z2l-z1l}..z2l..z3l;
p1:=z8l..z9'..z9l---z10l;
p2:=z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r{dir180}..z9..z9r---z10r;
p3:=z7r---z6r..z6..z8r..z4r;
p4:=z8l{dir20}..{dir-20}z6'..z6l---z7l;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3)=p2 intersectiontimes p4;
tim4=xpart(p3 intersectiontimes (z8r--(x8r,h+stem)));
filldraw subpath(rundy(p0,tim0),infinity) of p0
         ..subpath(0,rundy(p2,tim2).zpet) of p2
	 ..subpath(rundy(p4,tim3),infinity) of p4
	 ..subpath(0,rundy(p3,tim4)) of p3
	 ..subpath(rundy(p2,4),infinity) of p2
	 ..reverse subpath(rundy(p1,tim1),infinity) of p1
         ..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10); labels(6',9');
math_fit(0,0);
endchar;

iff known chars.cal_U:
bskchar "The calligraphic letter U";
beginchar(chars.cal_U,12u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cap_curve;
pos1(cal_hair,-30); pos2(cal_hair,-30);
pos3(cap_hair,60); pos4(cap_hair,90); pos5(cal_hair,260);
pos6(cal_stem,150); pos7(cal_stem,160); pos8(hair,-90);
y1=h; rt x1r=w-u; x7r=1.5u; y7=.5[x_height,h]; y8l=h+o; x8=x7r-u;
top y3r=h+o; rt x1r-lft x3=3u;
x2l=x1-u; z4r=z1r;
y2=y6=.5bar_height; lft x6r=u; x5=1/3[x6,x2]; y5=0;
p0:=z1l{z2l-z1l}..z2l..z5l..z6l..{dir80}z7l..{dir200}z8l;
p1:=z3l{dir-20}..{right}z4l;
p2:=z8r{dir20}..z7r{dir-100}..z6r..z5r..z2r..{z1r-z2r}z1r{dir180}..{dir160}z3r;
(tim0,tim1)=p0 intersectiontimes p1;
filldraw subpath(rundy(p0,tim0),infinity) of p0..p2
	 ..subpath(0,rundy(p1,tim1).zpet) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8);
math_fit(0,0);
endchar;

iff known chars.cal_V:
bskchar "The calligraphic letter V";
beginchar(chars.cal_V,13u#,cap_height#,0); uni "non";
italcorr cap_height#*slant;
adjust_fit(0,0);
path p[]; numeric tim[];
pickup tiny.nib;
pos1(hair,-30); pos2(hair,-30); pos3(cal_hair,210); pos4(cal_stem,200);
pos5(hair,180); pos6(cal_stem,90); pos7(cal_stem,60);
y3r=h-cap_hair; lft x3r=2u+cal_hair;
lft x1l=0; y1=.9h; y2=y3r; z2=z1+whatever*dir60;
x4=.5w; y4r=0;
top y7r=h; y6=h-cal_stem; y5=0; x5l=x4r; x6=w-2.5u; rt x7=w-u;
p1:=z1r---z2r..z3r..{down}z4r;
p2:=z4l{up}..z3l..z2l---z1l;
p3:=z5l{(z6-z5)rotated -10}..{(z6-z5)rotated 10}z6l..{right}z7l;
p4:=z7r{left}..z6r{(z5-z6)rotated 10}..{(z5-z6) rotated -10}z5r;
(tim0,tim1)=p1 intersectiontimes p4;
z100=bsktouch(p4,left,p2,right);
tim2=xpart(p4 intersectiontimes(z100--(w,y100)));
tim3=xpart(p2 intersectiontimes(z100--(0,y100)));
filldraw  subpath(0,rundy(p1,tim0).zpet) of p1
          ..subpath(rundy(p4,tim1),infinity) of p4
	  ..p3
	  ..subpath(0,rundy(p4,tim2).zpet) of p4
	  ..subpath(rundy(p2,tim3),infinity) of p2..cycle;
penlabels(1,2,3,4,5,6,7);
math_fit(0,-2u#);
endchar;

iff known chars.cal_W:
bskchar "The calligraphic letter W";
beginchar(chars.cal_W,16.5u#,cap_height#,0); uni "non";
italcorr cap_height#*slant+u#;
adjust_fit(0,0);
path p[]; numeric tim[];
pickup tiny.nib;
pos1(hair,-30); pos2(hair,-30); pos3(cal_hair,210); pos4(cal_stem,200);
pos5(hair,180); pos6(cal_stem,90); pos7(cal_stem,60);
pos8(hair,-30); pos9(hair,-30); pos10(cal_hair,210); pos11(cal_stem,200);
pos12(hair,180); pos13(cal_stem,90); pos14(cal_stem,60);
y3r=y10r=h-cap_hair; lft x3r=lft x10r-5u=u+cal_hair;
lft x1l=lft x8l-5u=0; y1=y8=.9h; y2=y9=y3r; z2=z1+whatever*dir60; z9=z8+whatever*dir60;
x4=.375w; x11=.7w; y4r=y11r=0;
top y7r=top y14r=h; y6=y13=h-cal_stem; y5=y12=0; x5l=x4r; x12l=x11r; x6=w-6u; x13=w-1.5u;
rt x7=w-5u; rt x14=w;
p1:=z1r---z2r..z3r..{down}z4r;
p2:=z4l{up}..z3l..z2l---z1l;
p3:=z5l{(z6-z5)rotated -10}..{(z6-z5)rotated 10}z6l..{right}z7l;
p4:=z7r{left}..z6r{(z5-z6)rotated 10}..{(z5-z6) rotated -10}z5r;
p5:=z8r---z9r..z10r..{down}z11r;
p6:=z11l{up}..z10l..z9l---z8l;
p7:=z12l{(z13-z12)rotated -10}..{(z13-z12)rotated 10}z13l..{right}z14l;
p8:=z14r{left}..z13r{(z12-z13)rotated 10}..{(z12-z13) rotated -10}z12r;
(tim0,tim1)=p1 intersectiontimes p4;
z100=bsktouch(p4,left,p2,right);
tim2=xpart(p4 intersectiontimes(z100--(w,y100)));
tim3=xpart(p2 intersectiontimes(z100--(0,y100)));
(tim4,tim5)=p3 intersectiontimes p5;
z101=bsktouch(p8,left,p6,right);
tim6=xpart(p8 intersectiontimes(z101--(w,y101)));
tim7=xpart(p6 intersectiontimes(z101--(0,y101)));
(tim8,tim9)=p5 intersectiontimes p4;
filldraw  subpath(0,rundy(p1,tim0).zpet) of p1
          ..subpath(rundy(p4,tim1),infinity) of p4
	  ..subpath(0,rundy(p3,tim4).zpet) of p3
	  ..subpath(rundy(p5,tim5),infinity) of p5
	  ..p7
	  ..subpath(0,rundy(p8,tim6).zpet) of p8
	  ..subpath(rundy(p6,tim7),2) of p6
	  ..subpath(1,rundy(p5,tim8).zpet) of p5
	  ..subpath(rundy(p4,tim9),rundy(p4,tim2).zpet) of p4
	  ..subpath(rundy(p2,tim3),infinity) of p2
	  ..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); labels(100,101);
math_fit(0,-u#);
endchar;

iff known chars.cal_X:
bskchar "The calligraphic letter X";
beginchar(chars.cal_X,12u#,cap_height#,0); uni "non";
italcorr cap_height#*slant+.5u#;
adjust_fit(0,0);
path p[]; numeric tim[];
pickup tiny.nib;
pos1(cal_hair,0); pos2(cal_hair,90); pos3(cal_hair,180); pos4(cal_hair,180);
pos5(cal_hair,90); pos6(cal_hair,0); pos7(cal_stem,-10);
pos8(cal_stem,10); pos9(cal_hair,90);
rt x1l=u; y1=cal_stem; bot y2l=-d-o; .45[x1,x3]=x2=x1+cal_stem; y3=.45bar_height;
y4=1[bar_height,x_height]; z4=z3+whatever*dir75; top y5r=h+o; x5=w-u-cal_hair; 
rt x6r=w; y6=y5-cal_hair; bot y9l=0; y8=cal_curve; x8r=w-u-1.5cal_hair; 
x9=.5[x8r,w]; z10=(w,y8r);
lft x7l=u; y7=h;
p0:=z1r{down}..z2r..z3r..z4r..{right}z5r..{down}z6r;
p1:=z6l{up}..{left}z5l..z4l..z3l..z2l..{up}z1l;
p2:=z10+left{dir-80}..z9r..z8r..z7r;
p3:=z7l..{dir-60}z8l..z9l..{dir100}z10;
(tim0,tim1)=p0 intersectiontimes p3;
(tim2,tim3)=p0 intersectiontimes p2;
(tim4,tim5)=p1 intersectiontimes p2;
(tim6,tim7)=p1 intersectiontimes p3;
filldraw subpath(0,rundy(p0,tim0).zpet) of p0
         ..(reverse subpath(0,rundy(p3,tim1).zpet) of p3)
	 ..(reverse subpath(rundy(p2,(tim3,2oblu)),infinity) of p2)
	 ..subpath(rundy(p0,(tim2,2oblu)),infinity) of p0
	 ..subpath(0,rundy(p1,tim4).zpet) of p1
	 ..(reverse subpath(0,rundy(p2,tim5).zpet) of p2)
	 ..(reverse subpath(rundy(p3,(tim7,2oblu)),infinity) of p3)
	 ..subpath(rundy(p1,(tim6,2oblu)),infinity) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8,9); labels(10);
math_fit(-.5u#,u#);
endchar;

iff known chars.cal_Y:
bskchar "The calligraphic letter Y";
beginchar(chars.cal_Y,12u#,cap_height#,0); uni "non";
italcorr cap_height#*slant+.5u#;
adjust_fit(0,0);
path p[]; numeric tim[];
pickup tiny.nib;
pos1(cal_hair,0); pos2(cal_hair,90); pos3(cal_hair,180); pos4(cal_hair,180);
pos5(cal_hair,90); pos6(cal_hair,0); 
pos7(hair,-30); pos8(hair,-30); pos9(cal_hair,210); pos10(cal_stem,200);
y1=cal_stem; bot y2l=-d-o; .5[x1,x3]=x2=4.5u=x1+cal_stem; y3=.5bar_height;
y4=.5[bar_height,x_height]; z4=z3+whatever*dir80; top y5r=h+o; x5=w-u-cal_hair; 
rt x6r=w; y6=y5-cal_hair;
y9r=h-cap_hair; lft x9r=2u+cal_hair;
lft x7l=u; y7=.9h; y8=y9r; z8=z7+whatever*dir60;
x10l=x4; y10r=0;
p1:=z6r{up}..{left}z5r..z4r..z3r..z2r..{up}z1r;
p2:=z1l{down}..z2l..z3l..z4l..z5l{right}..{down}z6l;
p3:=z7r---z8r..z9r..{down}z10r;
p4:=z10l{up}..z9l..z8l---z7l;
(tim0,tim1)=p3 intersectiontimes p1;
z100=bsktouch(p1,left,p4,right);
tim2=xpart(p1 intersectiontimes(z100--(w,y100)));
tim3=xpart(p4 intersectiontimes(z100--(0,y100)));
filldraw subpath(0,rundy(p3,tim0).zpet) of p3
         ..subpath(rundy(p1,tim1),infinity) of p1..p2
	 ..subpath(0,rundy(p1,tim2).zpet) of p1
	 ..subpath(rundy(p4,tim3),infinity) of p4..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10); labels(10);
math_fit(-u#,-2u#);
endchar;

iff known chars.cal_Z:
bskchar "The calligraphic letter Z";
beginchar(chars.cal_Z,11u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cap_curve;
pos1(cal_hair,90); pos2(cal_hair,180); pos3(.5[cal_hair,hair],180);
pos4(cal_stem,-10); pos5(cal_stem,0); pos6(cal_hair,0);
pos7(cal_hair,90); pos8(cal_stem,70); pos9(hair,90);
top y2=top y1r=h; lft x2r=0; z3=z2+cap_stem*dir(-70);
y2r:=bot bot y2r; y2l:=bot bot y2r; rt x1r=w-u;
x2'-x2l=x2-x2r; y2'=y2r;
z4r=z1r; y5=bar_height; x5=.5w; top y7l=0; z7r=z6l; lft x6l=u;
x9=w; bot y9=-cal_hair; y8l=y6; x8=2/3[x7,x9];
p1:=z1l..z2'..z2l---z3l;
p2:=z3r---z2r..z2..z1r;
p3:=z4r..z5r..z6r;
p4:=z6l..z5l..z4l;
p5:=z7r..z8r..z9r;
p6:=z9l..z8l..z7l;
(tim0,tim1)=p1 intersectiontimes p4;
(tim2,tim3)=p3 intersectiontimes p5;
filldraw subpath(rundy(p1,tim0),infinity) of p1
         ..subpath(0,rundy(p2,infinity).zpet) of p2
	 ..subpath(rundy(p3,0),rundy(p3,tim2).zpet) of p3
	 ..subpath(rundy(p5,tim3),infinity) of p5
	 ..subpath(0,rundy(p6,infinity).zpet) of p6
	 ..subpath(0,rundy(p4,tim1).zpet) of p4..cycle;
penlabels(1,2,3,4,5,6,7,8,9,10); labels(6',9');
math_fit(0,.5u#);
endchar;

iff known chars.cal_Gamma:
bskchar "The calligraphic Greek letter Gamma";
beginchar(chars.cal_Gamma,13.5u#,cap_height#,0); uni "non";
italcorr cap_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib;
path p[]; numeric tim[]; oblu:=cap_curve;
pos1(cal_hair,-30); pos2(cal_hair,-30); pos3(cal_hair,-20); 
pos4(cap_hair,60); pos5(cap_hair,90);
pos6(cal_hair,0); pos7(.5[cal_hair,hair],0); pos8(cal_hair,90);
y1=h; bot y3r=0; x1l-x3l=u; rt x1r=4u;
top y4r=h+o; lft x4=u;
x2l=x3r+.5hair; y2=1/3x_height; z5r=z1r;
top y6=h; rt x6r=w-1.5u; z7=z6+cap_stem*dir(-100); z8r=z1l; 
y6r:=bot bot y6r; y6l:=bot bot y6r;
x6'-x6l=x6-x6r; y6'=y6r;
p0:=z1l{z2l-z1l}..z2l..z3l;
p1:=z4l{dir-20}..{right}z5l;
p2:=z3l..(x3l,y3r)..z3r..z2r..{z1r-z2r}z1r{dir180}..{dir160}z4r;
p3:=z7r---z6r..z6..z8r..z4r;
p4:=z4l..z8l..z6'..z6l---z7l;
(tim0,tim1)=p0 intersectiontimes p1;
(tim2,tim3)=p2 intersectiontimes p4;
filldraw subpath(rundy(p0,tim0),infinity) of p0
	 ..subpath(0,rundy(p2,tim2).zpet) of p2
	 ..subpath(rundy(p4,tim3),infinity) of p4
	 ..p3
	 ..subpath(0,rundy(p1,tim1).zpet) of p1..cycle;
penlabels(1,2,3,4,5,6,7,8); labels(6');
math_fit(0,-5u#);
endchar;

iff known chars.cal_Lambda:
bskchar "The calligraphic Greek letter Lambda";
beginchar(chars.cal_Lambda,13.5u#,cap_height#,0); uni "non";
italcorr cap_height#*slant+.5u#;
adjust_fit(0,0);
path p[]; numeric tim[];
pickup tiny.nib;
pos1(cal_hair,0); pos2(cal_hair,90); pos3(cal_hair,180); pos4(cal_hair,180);
pos5(cal_hair,90); pos6(cal_hair,0); 
pos7(.65[cal_stem,cal_hair],-10); pos8(cal_stem,10); pos9(cal_hair,90);
pos11(cal_hair,-10);
rt x1l=u; y1=cal_stem; bot y2l=-d-o; .5[x1,x3]=x2=x1+cal_stem; y3=.5bar_height;
y4=.5[bar_height,x_height]; z4=z3+whatever*dir75; top y5r=h+o; x5=w-u-cal_hair; 
rt x6r=w; y6=y5-cal_hair; y8=cal_curve; y7=y5l-cal_curve; x8r=x7r=x5-.5cal_hair;
bot y9l=0; x9=.5[x8r,w];
z10=(w,y8r); z11r=z5r;
p1:=z1r{down}..z2r..z3r..z4r..{right}z5r..{down}z6r;
p2:=z6l{up}..{left}z5l..z4l..z3l..z2l..{up}z1l;
p3:=z11l---z7l..z8l..z9l..{dir100}z10;
p4:=z10+left{dir-80}..z9r..z8r..z7r---z11r;
(tim1,tim2)=p2 intersectiontimes p4;
(tim3,tim4)=p3 intersectiontimes p2;
filldraw p1..subpath(0,rundy(p2,tim1).zpet) of p2
         ..reverse subpath(0,rundy(p4,tim2).zpet) of p4
	 ..reverse subpath(rundy(p3,(tim3,2oblu)),infinity) of p3
	 ..subpath(rundy(p2,(tim4,2oblu)),infinity) of p2..cycle;
penlabels(1,2,3,4,5,6,7,8,9,11); labels(10);
math_fit(-u#,u#);
endchar;

