%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-x2rcap_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-x2roblu: 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 y00: -.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;