diff options
author | Karl Berry <karl@freefriends.org> | 2009-08-23 23:43:42 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-08-23 23:43:42 +0000 |
commit | 9c8a12c7a481e50886b68b686e6a7e1ae0d9e358 (patch) | |
tree | 8a9e7ad0eab763406a723a4464fee78e031a0079 /Master/texmf-dist/fonts/source/public/boisik/bskletters-o.mf | |
parent | 5233802c550f0cc1a8fb76ed9399eb1ce51e9600 (diff) |
boisik 0.5 (21aug09)
git-svn-id: svn://tug.org/texlive/trunk@14833 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/boisik/bskletters-o.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/public/boisik/bskletters-o.mf | 5030 |
1 files changed, 4958 insertions, 72 deletions
diff --git a/Master/texmf-dist/fonts/source/public/boisik/bskletters-o.mf b/Master/texmf-dist/fonts/source/public/boisik/bskletters-o.mf index 9dcc4239b2a..e2e274ed0ca 100644 --- a/Master/texmf-dist/fonts/source/public/boisik/bskletters-o.mf +++ b/Master/texmf-dist/fonts/source/public/boisik/bskletters-o.mf @@ -1,11 +1,8 @@ -%Boisik letters in other forms (greek, calligraphic) +%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; -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; +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); @@ -17,14 +14,112 @@ filldraw z1l.b{down}..{left}z1l.c..z1l.a{right}..z1+ser_boule*up.. ---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_Delta: -bskchar "The Greek letter Delta"; -beginchar(chars.greek_Delta,14u#,cap_height#,0); uni "0x0394"; -adjust_fit(cap_serif_fit#,cap_serif_fit#); -numeric alpha, right_stem, left_stem, old_jut; +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; @@ -44,16 +139,57 @@ 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_alt: -bskchar "The Greek letter Delta alternative"; -beginchar(chars.greek_Delta_alt,13u#,cap_height#,0); uni "non"; -adjust_fit(0,0); +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; -numeric alpha, right_stem, left_stem, old_jut; +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; @@ -67,15 +203,138 @@ 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); +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; @@ -86,18 +345,13 @@ 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; +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; -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#); +charscription(13u,cap_height,0)( numeric alpha, right_stem, left_stem; -pickup tiny.nib; lft x1l=2u; rt x2r=w-2u; bot y1l=bot y2r=0; x3l=.5w; top y3l=h+apex_o; left_stem=cap_hair; @@ -114,6 +368,49 @@ filldraw z1l+ser_boule*up..{left}z1l.a{left}..{right}z1l.c..diag_serif(1l,3l)--- {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: @@ -146,14 +443,82 @@ 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_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#); +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; @@ -168,14 +533,51 @@ filldraw z1l.b{down}..{left}z1l.c..z1l.a{right}..z1+ser_boule*up.. 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_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); +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); @@ -197,14 +599,114 @@ filldraw subpath(0, length(p1)-1) of p1..z3f---obl(5r,3f,2r.b)--- {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); @@ -216,21 +718,105 @@ 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 +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; -path p[]; numeric tim[]; oblu:=2oblu; -pos1(cap_curve,0); pos2(cap_hair,90); pos3(cap_curve,180); pos4(cap_hair,270); +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; @@ -243,9 +829,8 @@ x5=x6=.5w; }}; 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; +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)); @@ -267,12 +852,7 @@ infill subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 .. penlabels(1,2,3,4,5,6); endchar; -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; +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); @@ -295,14 +875,83 @@ filldraw subpath(0,rundy(p2,length(p2)).zpet) of p2..p3.. 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_Omega: -bskchar "The Greek letter Omega"; -beginchar(chars.greek_Omega,14u#,cap_height#,0); uni "0x03A9"; -italcorr x_height#*slant; +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); @@ -322,6 +971,399 @@ filldraw z5'l{z1-z5}..z1l..z4l..z3l..{z6-z3}z6'l..z8f...z8d...z8c.. 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: @@ -352,6 +1394,78 @@ filldraw subpath(0,rundy(p0,tim0).zpet) of p0..subpath(rundy(p0,tim1),infinity) ..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: @@ -386,6 +1500,90 @@ filldraw subpath(0,rundy(p0,(tim0,hair)).zpet) of p0 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: @@ -420,6 +1618,122 @@ filldraw z0r..subpath(0,rundy(p0,(tim0,hair)).zpet) of p0 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: @@ -448,7 +1762,63 @@ filldraw subpath(0,rundy(p0,(tim0,.7(y7r-y2))).zpet) of p0 ..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; @@ -463,7 +1833,7 @@ 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=(x3-x4); +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; @@ -482,6 +1852,67 @@ filldraw subpath(0,rundy(p0,(tim0,y7r-y2)).zpet) of p0 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: @@ -506,6 +1937,77 @@ 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: @@ -533,6 +2035,163 @@ 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: @@ -567,6 +2226,95 @@ filldraw subpath(0,rundy(p1,(tim0,hair)).zpet) of p1 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: @@ -598,13 +2346,86 @@ filldraw subpath(0,rundy(p0,tim0).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(serif_fit#,0); +adjust_fit(0,0); pickup tiny.nib; numeric tim[]; path p[]; pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0); @@ -615,20 +2436,153 @@ 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 +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(serif_fit#,0); +adjust_fit(0,0); pickup tiny.nib; numeric tim[]; path p[]; pos1(vair,180); pos2(hair,90); pos3(stem,0); pos4(stem,0); @@ -647,16 +2601,60 @@ p1=z4r---z3r..z2r..{z4-z1}z1r; 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(curve,0); pos2(hair,90); pos3(stem,180); pos4(hair,270); +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; @@ -675,7 +2673,26 @@ infill subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0 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); +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: @@ -709,6 +2726,85 @@ filldraw subpath(0,rundy(p0,tim0).zpet) of p0 ..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: @@ -727,6 +2823,118 @@ 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: @@ -762,6 +2970,180 @@ filldraw z1r..{x1l-x1r,-.25serif_drop}z1.a&z1.a{z1b-z1a}..z1.b 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"; @@ -788,6 +3170,69 @@ filldraw subpath(0,rundy(p0,tim0).zpet) of p0 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"; @@ -957,7 +3402,7 @@ 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(serif_fit#,0); +adjust_fit(0,0); pickup tiny.nib; numeric tim[]; path p[]; oblu:=2hair; pos1(stem,0); pos2(stem,0); pos2'(stem,0); @@ -965,7 +3410,43 @@ 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=x2; bot y3=-d+o; +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]; @@ -986,6 +3467,51 @@ filldraw subpath(0,rundy(p0,tim0).zpet) of p0 ..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; @@ -1045,6 +3571,54 @@ 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: @@ -1086,20 +3660,170 @@ filldraw subpath(0,rundy(p0,tim8).zpet) of p0..subpath(rundy(p0,tim9),rundy(p0,t 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"; +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; -pos1(curve,0); pos2(hair,90); pos3(curve,180); pos4(hair,270); +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; -penlabels(1,2,3,4); +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: @@ -1132,6 +3856,78 @@ filldraw subpath(0,rundy(p0,tim0).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: @@ -1164,18 +3960,75 @@ filldraw subpath(0,rundy(p0,tim0).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(curve,0); pos7(stem,90); +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; @@ -1205,7 +4058,18 @@ infill subpath(0,rundy(p0,tim2).zpet) of p0 ..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''); +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: @@ -1248,6 +4112,7 @@ infill subpath(0,rundy(p0,tim2).zpet) of p0 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: @@ -1270,6 +4135,64 @@ 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"; @@ -1292,6 +4215,70 @@ 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"; @@ -1306,6 +4293,72 @@ 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))); @@ -1337,6 +4390,7 @@ filldraw z1l{up}..z4l..subpath(1,rundy(p0,tim0).zpet) of p0 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: @@ -1356,6 +4410,56 @@ 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: @@ -1379,6 +4483,55 @@ 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: @@ -1402,6 +4555,7 @@ 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: @@ -1422,6 +4576,53 @@ 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: @@ -1443,17 +4644,73 @@ 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(.5[stem,curve],0); pos2(hair,90); pos3(.5[stem,curve],180); pos4(hair,270); +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); @@ -1483,7 +4740,26 @@ 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); +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: @@ -1527,17 +4803,62 @@ infill subpath (0, rundy(p1,tim17).zpet) of p1 ..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(.5[hair,stem],0); pos4(stem,0); pos5(hair,90); -pos6(stem,180); pos7(hair,-90); pos8(hair,0); pos9(hair,0); +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; @@ -1556,7 +4877,28 @@ filldraw subpath(0,rundy(p0,tim0).zpet) 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''); +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: @@ -1590,6 +4932,7 @@ filldraw subpath(0,rundy(p0,tim0).zpet) of p0 ..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: @@ -1627,6 +4970,87 @@ filldraw subpath(0,rundy(p0,tim0).zpet) of p0 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"; @@ -1663,6 +5087,94 @@ filldraw subpath(0,rundy(p0,tim0).zpet) of p0 ..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: @@ -1701,6 +5213,7 @@ filldraw subpath(0,rundy(p0,tim0).zpet) of p0 ..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: @@ -1735,5 +5248,1378 @@ filldraw subpath(0,rundy(p1,(tim0,hair)).zpet) of p1 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; |