From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- fonts/boisik/bsksymbols.mf | 27393 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 27393 insertions(+) create mode 100644 fonts/boisik/bsksymbols.mf (limited to 'fonts/boisik/bsksymbols.mf') diff --git a/fonts/boisik/bsksymbols.mf b/fonts/boisik/bsksymbols.mf new file mode 100644 index 0000000000..b388ad27cf --- /dev/null +++ b/fonts/boisik/bsksymbols.mf @@ -0,0 +1,27393 @@ +%Boisik symbols + +numeric bourstem; bourstem:=1.5stem; +numeric arrsize, arrwidth, dbf; arrsize=1.2arrwidth=if boldmath: 3.5 else:3\\ fi curve; +compute_spread(.45x_height#,.55x_height#); +dbf:=spread-tiny; + +iff known chars.sign_parent_left: +bskchar "Left parenthesis"; +beginchar(chars.sign_parent_left,6u#,body_height#,paren_depth#); uni "0x0028"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(curve,0); +rt x1r=w-u; rt x3r=w-u; lft x2l=u; +y2=.5[y1l,y3l]; top y1l=h+apex_o; bot y3l=-d-apex_o; +pos1(hair, angle((x1r,y1l)-z2)-90); pos3(hair,angle((x3r,y3l)-z2)+90); +filldraw z3r..z2r{up}..z1r&z1r{up}..z1l&z1l..z2l{down}..z3l&z3l..{up}z3r&cycle; +penlabels(1,2,3); +endchar; + +iff known chars.sign_parent_right: +bskchar "Right parenthesis"; +beginchar(chars.sign_parent_right,6u#,body_height#,paren_depth#); uni "0x0029"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(curve,180); +lft x1r=u; lft x3r=u; rt x2l=w-u; +y2=.5[y1l,y3l]; top y1l=h+apex_o; bot y3l=-d-apex_o; +pos1(hair, angle((x1r,y1l)-z2)+90); pos3(hair,angle((x3r,y3l)-z2)-90); +filldraw z3r..z2r{up}..z1r&z1r{up}..z1l&z1l..z2l{down}..z3l&z3l..{up}z3r&cycle; +penlabels(1,2,3); +endchar; + +iff known chars.sign_bracket_left: +bskchar "Left bracket"; +beginchar(chars.sign_bracket_left,5.5u#,body_height#,paren_depth#); uni "0x005B"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos4(hair,270); +lft x2r=1.75u; x3r=x2r; rt x4r=rt x1r=w-.5u; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +rt z2l=(x2r+.5[stem,hair],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+hair*left + ---obl(3l,4l,2l)---obl(2l,3l,1l)---z1l+hair*left..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.sign_bracket_right: +bskchar "Right bracket"; +beginchar(chars.sign_bracket_right,5.5u#,body_height#,paren_depth#); uni "0x005D"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos4(hair,270); +rt x2r=w-1.75u; x3r=x2r; lft x4r=lft x1r=.5u; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +lft z2l=(x2r-.5[stem,hair],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+hair*right + ---obl(3l,4l,2l)---obl(2l,3l,1l)---z1l+hair*right..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.sign_bracket_semantic_left: +bskchar "Left semantic bracket"; +beginchar(chars.sign_bracket_semantic_left,7u#,body_height#,paren_depth#); uni "0x27E6"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos4(hair,270); +pos5(.5[hair,stem],0); pos6(.5[hair,stem],0); +lft x2r=1.75u; x3r=x2r; rt x4r=rt x1r=w-.5u; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +y5=y1l; y6=y4l; x5=x6=.5[x1,x2l]; +rt z2l=(x2r+.5[stem,hair],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+hair*left + ---obl(6r,4l,2l)---obl(5r,3l,1l)---z1l+hair*left..cycle; +infill obl(2l,5l,3l)---obl(3l,2l,6l)---obl(6l,3l,5l)---obl(5l,6l,2l)---cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_bracket_semantic_right: +bskchar "Right semantic bracket"; +beginchar(chars.sign_bracket_semantic_right,7u#,body_height#,paren_depth#); uni "0x27E7"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos4(hair,270); +pos5(.5[hair,stem],180); pos6(.5[hair,stem],180); +rt x2r=w-1.75u; x3r=x2r; lft x4r=lft x1r=.5u; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +lft z2l=(x2r-.5[stem,hair],y1l); z3l=(x2l,y4l); +y5=y1l; y6=y4l; x5=x6=.5[x1,x2l]; +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+hair*right + ---obl(6r,4l,2l)---obl(5r,3l,1l)---z1l+hair*right..cycle; +infill obl(2l,5l,3l)---obl(3l,2l,6l)---obl(6l,3l,5l)---obl(5l,6l,2l)---cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_bracket_quill_left: +bskchar "Left bracket with quill"; +beginchar(chars.sign_bracket_quill_left,5.5u#,body_height#,paren_depth#); uni "0x2045"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos4(hair,270); +pos5(hair,90); pos6(hair,90); +lft x2r=1.75u; x3r=x2r; rt x4r=rt x1r=w-.5u; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +y5=y6=.5[y1,y4]; x5=x2l; x6=x1; +rt z2l=(x2r+.5[stem,hair],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+hair*left---obl(3l,4l,2l) + ---obl(5l,3l,6l)---z6l..z6r---obl(5r,6r,2l)---obl(2l,3l,1l)---z1l+hair*left..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_bracket_quill_right: +bskchar "Right bracket with quill"; +beginchar(chars.sign_bracket_quill_right,5.5u#,body_height#,paren_depth#); uni "0x2046"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos4(hair,270); +pos5(hair,90); pos6(hair,90); +rt x2r=w-1.75u; x3r=x2r; lft x4r=lft x1r=.5u; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +y5=y6=.5[y1,y4]; x5=x2l; x6=x1; +lft z2l=(x2r-.5[stem,hair],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+hair*right---obl(3l,4l,2l) + ---obl(5l,3l,6l)---z6l..z6r---obl(5r,6r,2l)---obl(2l,3l,1l)---z1l+hair*right..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_bracket_antiquill_left: +bskchar "Left bracket with antiquill"; +beginchar(chars.sign_bracket_antiquill_left,5.5u#,body_height#,paren_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos4(hair,270); +pos5(hair,270); pos6(hair,270); +lft x2r=1.75u; x3r=x2r; rt x4r=rt x1r=w-.5u; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +y5=y6=.5[y1,y4]; x5=x2r; x6=.5u; +rt z2l=(x2r+.5[stem,hair],y1l); z3l=(x2l,y4l); +oblu.quill:=3/4(x5-x6); +filldraw z1r---obl(2r,1r,3r)---obl(5l,2r,6l).quill---z6l..z6r---obl(5r,6r,3r).quill + ---obl(3r,2r,4r)---z4r..z4l+hair*left---obl(3l,4l,2l) + ---obl(2l,3l,1l)---z1l+hair*left..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_bracket_antiquill_right: +bskchar "Right bracket with antiquill"; +beginchar(chars.sign_bracket_antiquill_right,5.5u#,body_height#,paren_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos4(hair,270); +pos5(hair,270); pos6(hair,270); +rt x2r=w-1.75u; x3r=x2r; lft x4r=lft x1r=.5u; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +y5=y6=.5[y1,y4]; x5=x2r; x6=w-.5u; +lft z2l=(x2r-.5[stem,hair],y1l); z3l=(x2l,y4l); +oblu.quill:=3/4(x6-x5); +filldraw z1r---obl(2r,1r,3r)---obl(5l,2r,6l).quill---z6l..z6r---obl(5r,6r,3r).quill + ---obl(3r,2r,4r)---z4r..z4l+hair*right---obl(3l,4l,2l) + ---obl(2l,3l,1l)---z1l+hair*right..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_quotes: +bskchar "Quotes"; +beginchar(chars.sign_quotes,8.5u#,asc_height#,0); uni "0x0022"; +adjust_fit(0,0); +pickup tiny.nib; +x1=w-u-.5dot_size-hair; top y1=h-.5dot_size; +y2=y1; x2=u+.5dot_size; +comma(1,dot_size,infinity,comma_depth); comma(2,dot_size,infinity,comma_depth); +endchar; + +iff known chars.sign_quotes_uni: +bskchar "Quotes (for Unicode)"; +beginchar(chars.sign_quotes_uni,8.5u#,asc_height#,0); uni "0x201D"; +adjust_fit(0,0); +pickup tiny.nib; +x1=w-u-.5dot_size-hair; top y1=h-.5dot_size; +y2=y1; x2=u+.5dot_size; +comma(1,dot_size,infinity,comma_depth); comma(2,dot_size,infinity,comma_depth); +endchar; + +charscription(8.5u,asc_height,0)( +x1=w-u-.5dot_size; top y1=h-comma_depth; +y2=y1; x2=u+.5dot_size+hair; +ammoc(1,dot_size,infinity,comma_depth); ammoc(2,dot_size,infinity,comma_depth); +); + +iff known chars.sign_opening_quotes: +bskchar "Opening quotes"; +beginchar(chars.sign_opening_quotes,8.5u#,asc_height#,0); uni "0x201C"; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.sign_czech_closing_quotes: +bskchar "Czech closing quotes"; +beginchar(chars.sign_czech_closing_quotes,8.5u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.sign_czech_quotes: +bskchar "Czech opening quotes"; +beginchar(chars.sign_czech_quotes,8.5u#,.5dot_size#,comma_depth#); uni "0x201E"; +adjust_fit(0,0); +pickup tiny.nib; +x1=w-u-.5dot_size-hair; top y1=h; +y2=y1; x2=u+.5dot_size; +comma(1,dot_size,infinity,comma_depth); comma(2,dot_size,infinity,comma_depth); +endchar; + +iff known chars.sign_turn_quotes: +bskchar "Turned quotes"; +beginchar(chars.sign_turn_quotes,8.5u#,asc_height#,0); uni "0x201F"; +adjust_fit(0,0); +pickup tiny.nib; +x1=w-u-.5dot_size; top y1=h-.5dot_size; +y2=y1; x2=u+.5dot_size+hair; +turn_comma(1,dot_size,infinity,comma_depth); turn_comma(2,dot_size,infinity,comma_depth); +endchar; + +iff known chars.sign_czech_quote: +bskchar "Czech opening quote"; +beginchar(chars.sign_czech_quote,4.5u#,.5dot_size#,comma_depth#); uni "0x201A"; +adjust_fit(0,0); +pickup tiny.nib; +x1=w-u-.5dot_size-hair; top y1=h; +comma(1,dot_size,infinity,comma_depth); +endchar; + +iff known chars.sign_aposthrope: +bskchar "Aposthrope"; +beginchar(chars.sign_aposthrope,4.5u#,asc_height#,0); uni "0x0027"; +adjust_fit(0,0); +pickup tiny.nib; +lft x1=w-u-.5dot_size-hair; top y1=h-.5dot_size; +comma(1,dot_size,.9hair,comma_depth); +endchar; + +iff known chars.sign_aposthrope_uni: +bskchar "Aposthrope (for Unicode)"; +beginchar(chars.sign_aposthrope_uni,4.5u#,asc_height#,0); uni "0x2019"; +adjust_fit(0,0); +pickup tiny.nib; +lft x1=w-u-.5dot_size-hair; top y1=h-.5dot_size; +comma(1,dot_size,.9hair,comma_depth); +endchar; + +iff known chars.sign_aposthrope_reverse: +bskchar "Reverse aposthrope"; +beginchar(chars.sign_aposthrope_reverse,4.5u#,asc_height#,0); uni "0x0060"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w+.5hair; top y1=h-comma_depth; +ammoc(1,dot_size,.9hair,comma_depth); +endchar; + +iff known chars.sign_aposthrope_reverse_uni: +bskchar "Reverse aposthrope (for Unicode)"; +beginchar(chars.sign_aposthrope_reverse_uni,4.5u#,asc_height#,0); uni "0x2018"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w+.5hair; top y1=h-comma_depth; +ammoc(1,dot_size,.9hair,comma_depth); +endchar; + +iff known chars.sign_aposthrope_turned_uni: +bskchar "Turned aposthrope (for Unicode)"; +beginchar(chars.sign_aposthrope_turned_uni,4.5u#,asc_height#,0); uni "0x201B"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w+.5hair; top y1=h-.5dot_size; +turn_comma(1,dot_size,.9hair,comma_depth); +endchar; + +iff known chars.sign_comma: +bskchar "Comma"; +beginchar(chars.sign_comma,4.5u#,dot_size#,comma_depth#); uni "0x002C"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w-.5hair; top y1=h-.5dot_size; +comma(1,dot_size,infinity,d); +endchar; + +iff known chars.sign_comma_under: +bskchar "Comma under baseline"; +beginchar(chars.sign_comma_under,4.5u#,0,comma_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w-.5hair; top y1=h-.5dot_size; +comma(1,dot_size,infinity,d); +endchar; + +iff known chars.sign_comma_double_tail: +bskchar "Double-tailed comma"; +beginchar(chars.sign_comma_double_tail,4.5u#,dot_size#,comma_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim; oblu:=.6dot_size; +path p[]; +x1=.5w-.5hair; top y1=h-.5dot_size; +if square_dots: +else: + penpos1'(dot_size,0); penpos1''(dot_size,90); z1'=z1''=z1; + z1'''=(x1'r+hair,y1''l); z1~=.75[z1,z1'r]+d*down; + p0:=z1'r{up}..z1''r{left}..{down}z1'l..{right}z1''l..cycle; + p1:=point 3.5 of p0{direction 3.5 of p0 rotated -120}..z1~; + p2:=subpath(rundy(p1,(0,.4dot_size)),infinity) of p1&z1~..z1'''..subpath (1.5,2) of p0; + tim=xpart(p2 intersectiontimes (z1--(x1,h))); + p3:=subpath(0,tim) of p2; + p4:=reverse p3 reflectedabout(z1''r,z1''l); + filldraw p3..p4 shifted left ..cycle; +labels(1,1''',1~); penlabels(1',1''); +fi +endchar; + +iff known chars.sign_comma_ammoc: +bskchar "Comma-ammoc"; +beginchar(chars.sign_comma_ammoc,4.5u#,x_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=.6dot_size; +x1=.5w-.5hair=x2; y1=y2=.5[h,-d]; +if square_dots: +else: + penpos1'(dot_size,0); penpos1''(dot_size,90); z1'=z1''=z1; + penpos2'(dot_size,180); penpos2''(dot_size,-90); z2'=z2''=z2; + z1'''=(x1'r+hair,y1''l); z1~=.5[z1,z1'l]+comma_depth*down; + z2'''=(x2'r-hair,y2''l); z2~=.5[z2,z2'l]+comma_depth*up; + p0:=z1'r{up}..z1''r{left}..{down}z1'l..{right}z1''l..cycle; + p1:=point 3.5 of p0{direction 3.5 of p0 rotated -120}..z1~; + p2:=z2'r{down}..z2''r{right}..{up}z2'l..{left}z2''l..cycle; + p3:=point 3.5 of p2{direction 3.5 of p2 rotated -120}..z2~; + p4:=z1~..z1'''..subpath (1.5,rundy(p0,3.5).zpet) of p0 + ..subpath(rundy(p1,(0,.4dot_size)),infinity) of p1; + p5:=reverse (z2~..z2'''..subpath (1.5,rundy(p2,3.5).zpet) of p2 + ..subpath(rundy(p3,(0,.4dot_size)),infinity) of p3); + (tim1,tim2)=p4 intersectiontimes p5; + (tim3,tim4)=reverse p4 intersectiontimes p5; + filldraw subpath(0,rundy(p4,tim1).zpet) of p4 + ..reverse subpath(0,rundy(p5,tim2).zpet) of p5 + &subpath(infinity,rundy(p5,tim4)) of p5 + ..reverse subpath(0,tim3) of reverse p4&cycle; + labels(1,1''',1~,2,2''',2~); penlabels(1',1'',2',2''); +fi +endchar; + +iff known chars.sign_period: +bskchar "Period"; +beginchar(chars.sign_period,4.5u#,dot_size#,0); uni "0x002E"; +adjust_fit(0,0); +pickup tiny.nib; +bot z1=(.5w,.5h); dot(1); +endchar; + +iff known chars.sign_period_old_figured: +bskchar "Period (for some old style figures)"; +beginchar(chars.sign_period_old_figured,4.5u#,dot_size#-medfigd,medfigd); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +bot z1=(.5w,.5(h-d)); dot(1); +endchar; + +iff known chars.sign_leader_dot: +bskchar "Dot leader"; +beginchar(chars.sign_leader_dot,6u#,dot_size#,0); uni "0x2024"; +adjust_fit(0,0); +pickup tiny.nib; +bot z1=(.5w,.5h); dot(1); +endchar; + +iff known chars.sign_leader_dots: +bskchar "Two dot leader"; +beginchar(chars.sign_leader_dots,10.5u#,dot_size#,0); uni "0x2025"; +adjust_fit(0,0); +pickup tiny.nib; +bot y1=bot y2=.5h; .5[x1,x2]=.5w; x1=x2-x1; +dot(1); dot(2); +endchar; + +iff known chars.sign_ellipsis: +bskchar "Ellipsis (horizontal)"; +beginchar(chars.sign_ellipsis,16u#,dot_size#,0); uni "0x2026"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y2=y3; bot y1=.5h; +x3-x2=x2-x1; .5w=x2; x1=2.25u; +dot(1); dot(2); dot(3); +endchar; + +iff known chars.math_ellipsis_centered: +bskchar "Centered horizontal ellipsis"; +beginchar(chars.math_ellipsis_centered,16u#,v_center(dot_size#)); uni "0x22EF"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y2=y3; y1=math_axis; +x3-x2=x2-x1; .5w=x2; x1=2.25u; +dot(1); dot(2); dot(3); +endchar; + +iff known chars.sign_colon: +bskchar "Colon"; +beginchar(chars.sign_colon,4.5u#,x_height#,0); uni "0x003A"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=.5w; top y1=h-.5dot_size; bot y2=.5dot_size; +dot(1); dot(2); +endchar; + +iff known chars.math_ratio: +bskchar "Ratio sign"; +beginchar(chars.math_ratio,5u#,v_center(x_height#)); uni "0x2236"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=.5w; top y1=h-.5dot_size; bot y2=-d+.5dot_size; +dot(1); dot(2); +endchar; + +iff known chars.sign_punctation_two: +bskchar "Two dot punctation"; +beginchar(chars.sign_punctation_two,4.5u#,cap_height#,0); uni "0x205A"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=.5w; top y1=h-.5dot_size; bot y2=.5dot_size; +dot(1); dot(2); +endchar; + +iff known chars.sign_punctation_three: +bskchar "Three dot punctation"; +beginchar(chars.sign_punctation_three,10u#,.5[x_height#,asc_height#],0); uni "0x2056"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=w-u-.5dot_size; x3=u+.5dot_size; y3=.5[y1,y2]=.5h; top y1=h-.5dot_size; +dot(1); dot(2); dot(3); +endchar; + +iff known chars.sign_punctation_four: +bskchar "Four dot punctation"; +beginchar(chars.sign_punctation_four,10u#,.5[x_height#,asc_height#],0); uni "0x2058"; +adjust_fit(0,0); +pickup tiny.nib; +x1=w-x2=u+.5dot_size; x3=x4=.5w; top y3=h-.5dot_size; .5[y3,y4]=.5h=y1=y2; +dot(1); dot(2); dot(3); dot(4); +endchar; + +iff known chars.sign_mark_four: +bskchar "Four dot mark"; +beginchar(chars.sign_mark_four,13u#,body_height#+rule_thickness#,desc_depth#+rule_thickness#); uni "0x205B"; +adjust_fit(0,0); +pickup tiny.nib; +x1=w-x2=u+.5dot_size; x3=x4=.5w; top y3=h-.5dot_size; .5[y3,y4]=.5[h,-d]=y1=y2; +dot(1); dot(2); dot(3); dot(4); +endchar; + +iff known chars.sign_punctation_five: +bskchar "Five dot punctation"; +beginchar(chars.sign_punctation_five,10u#,.5[x_height#,asc_height#],0); uni "0x2059"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=w-u-.5dot_size; x3=x4=u+.5dot_size; y3=y1; y2=y4; top y1=h-.5dot_size; .5[y1,y2]=.5h; +z5=.5[z3,z2]; +dot(1); dot(2); dot(3); dot(4); dot(5); +endchar; + +iff known chars.sign_punctation_cross_dot: +bskchar "Dotted cross punctation"; +beginchar(chars.sign_punctation_cross_dot,12u#,.5[x_height#,asc_height#],0); uni "0x205C"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +lft x1=u; rt x2=w-u; y1=y2=.5[y9,y10]=.5h; y11=y9; y10=y12; top y9=h-dot_size; +x3=x4=.5w; top y3=h; bot y4=-d; +x9=x10=w-u-dot_size; x11=x12=u+dot_size; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +dot(9); dot(10); dot(11); dot(12); +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.sign_tricolon: +bskchar "Tricolon sign"; +beginchar(chars.sign_tricolon,4.5u#,asc_height#,0); uni "0x205D"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=x3=.5w; top y1=h-.5dot_size; bot y3=-d+.5dot_size; y2=.5[y1,y3]; +dot(1); dot(2); dot(3); +endchar; + +iff known chars.sign_fourcolon: +bskchar "Fourcolon sign"; +beginchar(chars.sign_fourcolon,4.5u#,body_height#,0); uni "0x205E"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=x3=x4=.5w; top y1=h-.5dot_size; bot y4=-d+.5dot_size; .5[y2,y3]=.5[y1,y4]; y2=.5[y1,y3]; +dot(1); dot(2); dot(3); dot(4); +endchar; + +iff known chars.math_triratio: +bskchar "Triratio sign (triple colon)"; +beginchar(chars.math_triratio,5u#,v_center(1.5x_height#)); uni "0x2AF6"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=x3=.5w; top y1=h-.5dot_size; bot y3=-d+.5dot_size; y2=.5[y1,y3]; +dot(1); dot(2); dot(3); +endchar; + +iff known chars.math_proportion: +bskchar "Proportion sign"; +beginchar(chars.math_proportion,9u#,v_center(x_height#)); uni "0x2237"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x3=x4; .5[x1,x3]=.5w; x1=2u; +top y1=top y3=h-.5dot_size; bot y2=bot y4=-d+.5dot_size; +dot(1); dot(2); dot(3); dot(4); +endchar; + +iff known chars.math_excess: +bskchar "Excess sign"; +beginarithchar(chars.math_excess); uni "0x2239"; +adjust_fit(0,0); +pickup tiny.nib; +pos3(rule_thickness,90); pos4(rule_thickness,90); +x1=x2=w-2u; +.5[y1,y2]=y3=y4=math_axis; top y1-bot y2=x_height-dot_size; +lft x3=u; rt x4=x1-dot_size-rule_thickness; +filldraw bskrule(3,4,hair,hair); +dot(1); dot(2); +penlabels(3,4); +endchar; + +iff known chars.math_proportion_geo: +bskchar "Geometric proportion sign"; +beginarithchar(chars.math_proportion_geo); uni "0x223A"; +adjust_fit(0,0); +pickup tiny.nib; +pos5(rule_thickness,90); pos6(rule_thickness,90); +x1=x2; x3=x4; .5[x1,x3]=.5w; x1=2u; +y1=y3; y2=y4; .5[y1,y2]=y5=y6=math_axis; top y1-bot y2=x_height-dot_size; +lft x5=u; rt x6=w-u; +filldraw bskrule(5,6,hair,hair); +dot(1); dot(2); dot(3); dot(4); +penlabels(5,6); +endchar; + +iff known chars.math_ellipsis_vert: +bskchar "Vertical ellipsis"; +beginchar(chars.math_ellipsis_vert,4.5u#,v_center(1.5x_height#)); uni "0x22EE"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=x3=.5w; y2=.5[y1,y3]=math_axis; y1-y2=5.75u; +dot(1); dot(2); dot(3); +endchar; + +iff known chars.math_ellipsis_down_right: +bskchar "Diagonal ellipsis down right"; +beginchar(chars.math_ellipsis_down_right,16u#,v_center(1.5x_height#)); uni "0x22F1"; +adjust_fit(0,0); +pickup tiny.nib; +x3-x2=x2-x1; .5w=x2; x1=2.25u; +y2=.5[y1,y3]=math_axis; y1-y2=5.75u; +dot(1); dot(2); dot(3); +endchar; + +iff known chars.math_ellipsis_up_right: +bskchar "Diagonal ellipsis up right"; +beginchar(chars.math_ellipsis_up_right,16u#,v_center(1.5x_height#)); uni "0x22F0"; +adjust_fit(0,0); +pickup tiny.nib; +x3-x2=x2-x1; .5w=x2; x3=2.25u; +y2=.5[y1,y3]=math_axis; y1-y2=5.75u; +dot(1); dot(2); dot(3); +endchar; + +iff known chars.math_therefore: +bskchar "Therefore"; +beginchar(chars.math_therefore,13u#,asc_height#,0); uni "0x2234"; +adjust_fit(0,0); +pickup tiny.nib; +.5w=.5[x1,x3]; lft x1=u+.5dot_size; +y1=y3; bot y1=.5dot_size; z2-z1=(z3-z1) rotated 60; +dot(1); dot(2); dot(3); +endchar; + +iff known chars.math_because: +bskchar "Because"; +beginchar(chars.math_because,13u#,asc_height#,0); uni "0x2235"; +adjust_fit(0,0); +pickup tiny.nib; +.5w=.5[x1,x3]; lft x1=u+.5dot_size; +y1=y3; bot y2=.5dot_size; z2-z1=(z3-z1) rotated -60; +dot(1); dot(2); dot(3); +endchar; + +iff known chars.sign_tri_colon: +bskchar "Triangular colon"; +beginchar(chars.sign_tri_colon,4.5u#,x_height#,0); uni "0x02D0"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=.15dot_size; +x1=x2=.5w; top y1=h; bot y2=0; +penpos1(dot_size,0); penpos2(dot_size,0); +penpos1'(dot_size,90); penpos2'(dot_size,-90); +z1'r=z1; z2'r=z2; +filldraw obl(1'l,1l,1r)---obl(1r,1'l,1l)---obl(1l,1r,1'l)---cycle; +filldraw obl(2'l,2l,2r)---obl(2r,2'l,2l)---obl(2l,2r,2'l)---cycle; +penlabels(1,1',2,2'); +endchar; + +iff known chars.sign_tri_colon_half: +bskchar "Half triangular colon"; +beginchar(chars.sign_tri_colon_half,4.5u#,x_height#,0); uni "0x02D1"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=.15dot_size; +x1=.5w; top y1=h; +penpos1(dot_size,0); penpos1'(dot_size,90); +z1'r=z1; +filldraw obl(1'l,1l,1r)---obl(1r,1'l,1l)---obl(1l,1r,1'l)---cycle; +penlabels(1,1'); +endchar; + +iff known chars.sign_semicolon: +bskchar "Semicolon"; +beginchar(chars.sign_semicolon,4.5u#,x_height#,comma_depth#); uni "0x003B"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x2=.5w-.5hair; top y1=h-.5dot_size; bot y2=.5dot_size; +dot(1); comma(2,dot_size,.5hair,d); +endchar; + +iff known chars.math_semicolon_fat: +bskchar "Fat white semicolon"; +beginchar(chars.math_semicolon_fat,4.5u#,x_height#,comma_depth#); uni "0x2A3E"; +adjust_fit(0,0); +pickup tiny.nib; +{{ save dot_size; dot_size:=2.5u; +x1=x2; x2=.5w-.5hair; top y1=h-.5dot_size; bot y2=.5dot_size; +dot(1); comma(2,dot_size,.5hair,d); +infill fullcircle scaled (dot_size-rule_thickness+.5currentbreadth) shifted z1; +infill fullcircle scaled (dot_size-rule_thickness+.5currentbreadth) shifted z2; +}}; +endchar; + +iff known chars.math_semicolon_fat_big: +bskchar "Fat big white semicolon"; +beginchar(chars.math_semicolon_fat_big,5.5u#,v_center(asc_height#)); uni "0x2A1F"; +adjust_fit(0,0); +pickup tiny.nib; +{{ numeric old_comma; old_comma:=comma_depth; + save dot_size; dot_size:=3u; comma_depth:=1.5old_comma; +x1=x2; x2=.5w-.5hair; top y1=h-.5dot_size; bot y2=-d+comma_depth; +dot(1); comma(2,dot_size,hair,comma_depth); +infill fullcircle scaled (dot_size-rule_thickness+.5currentbreadth) shifted z1; +infill fullcircle scaled (dot_size-rule_thickness+.5currentbreadth) shifted z2; +}}; +endchar; + +iff known chars.sign_semicolon_rev: +bskchar "Reversed semicolon"; +beginchar(chars.sign_semicolon_rev,4.5u#,x_height#,comma_depth#); uni "0x204F"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x2=.5w+.5hair; top y1=h-.5dot_size; bot y2=.5dot_size; +dot(1); turn_comma(2,dot_size,.5hair,d); +endchar; + +iff known chars.sign_commacolon: +bskchar "Commacolon"; +beginchar(chars.sign_commacolon,4.5u#,x_height#,comma_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x2=.5w-.5hair; top y1=h-.5dot_size; bot y2=.5dot_size; +comma(1,dot_size,.5hair,d); comma(2,dot_size,.5hair,d); +endchar; + +iff known chars.sign_ammoc_comma: +bskchar "Ammoc above comma"; +beginchar(chars.sign_ammoc_comma,4.5u#,x_height#,comma_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x2=.5w-.5hair; top y1=h-.5dot_size; bot y2=.5dot_size; +comma(2,dot_size,.5hair,d); ammoc(1,dot_size,.5hair,d); +endchar; + +iff known chars.sign_commas_joined: +bskchar "Two joined commas"; +beginchar(chars.sign_commas_joined,4.5u#,x_height#,comma_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; +oblu:=.6dot_size; +x1=.5w-.5hair=x2; top y1=h-.5dot_size; bot y2=.5dot_size; +if square_dots: +else: + penpos1'(dot_size,0); penpos1''(dot_size,90); z1'=z1''=z1; + penpos2'(dot_size,180); penpos2''(dot_size,-90); z2'=z2''=z2; + z1'''=(x1'r+hair,y1''l); z1~=.5[z1,z1'l]+comma_depth*down; + z2'''=(x2'r-hair,y2''l); z2~=.5[z2,z2'l]+comma_depth*up; + z3~=.5[z1~,z2~]; + p0:=z1'r{up}..z1''r{left}..{down}z1'l..{right}z1''l..cycle; + p1:=point 3.5 of p0{direction 3.5 of p0 rotated -120}..z3~; + p2:=z2'r{down}..z2''r{right}..{up}z2'l..{left}z2''l..cycle; + p3:=point 3.5 of p2{direction 3.5 of p2 rotated -120}..z3~; + filldraw z3~..z1'''..subpath (1.5,rundy(p0,3.5).zpet) of p0 + ..subpath(rundy(p1,(0,.4dot_size)),infinity) of p1..z2''' + ..subpath (1.5,rundy(p2,3.5).zpet) of p2 + ..subpath(rundy(p3,(0,.4dot_size)),infinity) of p3&cycle; + labels(1,1''',1~,2,2''',2~,3~); penlabels(1',1'',2',2''); +fi +endchar; + +iff known chars.sign_exclamation: +bskchar "Exclamation point"; +beginchar(chars.sign_exclamation,5u#,asc_height#,0); uni "0x0021"; +adjust_fit(punct_fit#,0); +pickup tiny.nib; +bot z1=(.5w,.5dot_size); dot(1); +penpos2(dot_size,0); pos3(hair,0); x2=x3=x1; +y2=h-.5stem; bot y3=dot_size+stem; y3r:=y3r+.5hair; +filldraw z2l---z3l..{.5[z2,z2r]-z3r}z3r..{z2r-z3r}z2r..cycle; +penlabels(2,3); +endchar; + +iff known chars.sign_exclamation_double: +bskchar "Double exclamation point"; +beginchar(chars.sign_exclamation_double,8u#,asc_height#,0); uni "0x203C"; +adjust_fit(0,0); +pickup tiny.nib; +penpos2(dot_size,0); pos3(hair,0); +penpos5(dot_size,0); pos6(hair,0); +bot y1=bot y4=.5dot_size; .5[x1,x4]=.5w; x1=2.5u; +x2=x3=x1; x4=x5=x6; +y2=y5=h-.5stem; bot y3=bot y6=dot_size+stem; y3r:=y6r:=y3r+.5hair; +filldraw z2l---z3l..{.5[z2,z2r]-z3r}z3r..{z2r-z3r}z2r..cycle; +filldraw z5l---z6l..{.5[z5,z5r]-z6r}z6r..{z5r-z6r}z5r..cycle; +dot(1); dot(4); +penlabels(2,3,4,5); +endchar; + +iff known chars.sign_spanish_shriek: +bskchar "Spanish open exclamation point"; +beginchar(chars.sign_spanish_shriek,5u#,asc_height#-desc_depth#,desc_depth#); uni "0x00A1"; +adjust_fit(0,0); +pickup tiny.nib; +top z1=(.5w,h-.5dot_size); dot(1); +penpos2(dot_size,0); pos3(hair,0); x2=x3=x1; +y2=-d+.5stem; top y3=h-dot_size-stem; y3r:=y3r-.5hair; +filldraw z2l---z3l..{.5[z2,z2r]-z3r}z3r..{z2r-z3r}z2r..cycle; +penlabels(2,3); +endchar; + +iff known chars.sign_equals: +bskchar "Equals sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.sign_equals,13u#,v_center(spread#+rule_thickness#)); uni "0x003D"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=math_axis; top y1r=h; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_equals_double: +bskchar "Double equals sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_double,23u#,v_center(spread#+rule_thickness#)); uni "0x2A75"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,90); pos8(rule_thickness,90); +lft x1=u; rt x6=w-u; x3=x1; x4=x2; x5=x7; x6=x8; .5[x2,x5]=.5w; x5-x2=2.5rule_thickness; +y1=y2=y5=y6; y3=y4=y7=y8; .5[y1,y3]=math_axis; top y1r=h; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +filldraw bskrule(5,6,hair,0); +filldraw bskrule(8,7,hair,0); +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_equals_triple: +bskchar "Triple equals sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_triple,32u#,v_center(spread#+rule_thickness#)); uni "0x2A76"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,90); pos8(rule_thickness,90); +pos9(rule_thickness,90); pos10(rule_thickness,90); +pos11(rule_thickness,90); pos12(rule_thickness,90); +lft x1=u; rt x10=w-u; x3=x1; x4=x2; x5=x7; x6=x8; x9=x11; x10=x12; +x5-x2=x9-x6=2.5rule_thickness; .5[x5,x6]=.5w; x2-x1=x6-x5; +y1=y2=y5=y6=y9=y10; y3=y4=y7=y8=y11=y12; .5[y1,y3]=math_axis; top y1r=h; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +filldraw bskrule(5,6,hair,0); +filldraw bskrule(8,7,hair,0); +filldraw bskrule(9,10,hair,0); +filldraw bskrule(12,11,hair,0); +penlabels(1,2,3,4,5,6,7,8,9,10,11,12); +endchar; + +iff known chars.sign_circled_equals: +bskchar "Equals sign in circle"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.sign_circled_equals,17u#,v_center(14u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos11(rule_thickness,90); pos12(rule_thickness,90); +pos13(rule_thickness,90); pos14(rule_thickness,90); +lft x6=u; x2=w-x6; y2=math_axis; top y8=h; +lft x11=3u; x12+x11=w; x13=x11; x14=x12; +y11=y12; y13=y14; .5[y11,y13]=y2; y11-y13=spread; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +filldraw bskrule(11,12,hair,0); +filldraw bskrule(14,13,hair,0); +penlabels(11,12,13,14); +endchar; + +iff known chars.sign_neq: +bskchar "Not equals sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.sign_neq,13u#,v_center(.75(body_height#+desc_depth#))); uni "0x2260"; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=2f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1-y3=spread; +top rt z5=(w-2u,h); top lft z6=(2u,-d); +pos5(rule_thickness,angle(z6-z5)+90); pos6(rule_thickness,angle(z6-z5)+90); +bskpoints(1,2,hair,0); bskpoints(4,3,hair,0); +bskpoints(5,6,rule_thickness,rule_thickness); +z1'=whatever[z5l,z6l]=whatever[z1r,z2r]; +z2'=whatever[z5r,z6r]=whatever[z1r,z2r]; +z3'=whatever[z5r,z6r]=whatever[z1l,z2l]; +z4'=whatever[z5r,z6r]=whatever[z3r,z4r]; +z5'=whatever[z5r,z6r]=whatever[z3l,z4l]; +z6'=whatever[z5l,z6l]=whatever[z3l,z4l]; +z7'=whatever[z5l,z6l]=whatever[z3r,z4r]; +z8'=whatever[z5l,z6l]=whatever[z1l,z2l]; +filldraw z1r---obl(1',1r,5l)---z5l..z5rr---obl(2',5r,2r).more---z2r + ..z2ll---obl(3',2l,4')---obl(4',3',4r).more---z4r..z4l + ---obl(5',4l,6r)---z6r..z6ll---obl(6',6l,3l).more---z3ll + ..z3r---obl(7',3r,8')---obl(8',7',1l).more---z1l..cycle; +penlabels(1,2,3,4,5,6); labels(2ll,3ll,5rr,6ll,1',2',3',4',5',6',7',8'); +endchar; + +iff known chars.sign_neq_vert: +bskchar "Not equals sign (vertical)"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.sign_neq_vert,13u#,v_center(.6(body_height#+desc_depth#))); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); pos6(rule_thickness,0); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1-y3=spread; +top y5=h; bot y6=-d; x5=x6=.5w; +bskpoints(1,2,hair,0); bskpoints(4,3,hair,0); +bskpoints(5,6,rule_thickness,rule_thickness); +z1'=whatever[z5l,z6l]=whatever[z1r,z2r]; +z2'=whatever[z5r,z6r]=whatever[z1r,z2r]; +z3'=whatever[z5r,z6r]=whatever[z1l,z2l]; +z4'=whatever[z5r,z6r]=whatever[z3r,z4r]; +z5'=whatever[z5r,z6r]=whatever[z3l,z4l]; +z6'=whatever[z5l,z6l]=whatever[z3l,z4l]; +z7'=whatever[z5l,z6l]=whatever[z3r,z4r]; +z8'=whatever[z5l,z6l]=whatever[z1l,z2l]; +filldraw z1r---obl(1',1r,5l)---z5l..z5rr---obl(2',5r,2r)---z2r + ..z2ll---obl(3',2l,4')---obl(4',3',4r)---z4r..z4l + ---obl(5',4l,6r)---z6r..z6ll---obl(6',6l,3l)---z3ll + ..z3r---obl(7',3r,8')---obl(8',7',1l)---z1l..cycle; +penlabels(1,2,3,4,5,6); labels(2ll,3ll,5rr,6ll,1',2',3',4',5',6',7',8'); +endchar; + +iff known chars.math_equals_circle: +bskchar "Equals circle sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_circle,13u#,1.5spread#+2rule_thickness#+math_axis#,.5spread#+.5rule_thickness#-math_axis#); uni "0x2257"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,270); pos6(rule_thickness,0); +pos7(rule_thickness,90); pos8(rule_thickness,180); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=math_axis; bot y3l=-d; +x5=x7=.5[x6,x8]=.5w; top y5l=h; bot y7l=top y1r+1.5rule_thickness; y6=y8=.5[y5,y7]; x8-x6=y5-y7; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +filldraw z5l{left}..{down}z6l..{right}z7l..{up}z8l..cycle; +infill z5r{left}..{down}z6r..{right}z7r..{up}z8r..cycle; +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_equals_triangle: +bskchar "Equals sign with triangle"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_triangle,13u#,1.5spread#+2rule_thickness#+math_axis#,.5spread#+.5rule_thickness#-math_axis#); uni "0x225C"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=math_axis; bot y3l=-d; +x7=.5[x5,x6]=.5w; x6-x5=1.5(y7-y5); +bot y5=bot y6=top y1r+1.5rule_thickness; top y7=h+o; +y5'=y6'=y5+(rule_thickness-currentbreadth); +x5'-x5=x6-x6'=(rule_thickness-currentbreadth)/cosd(angle(z7-z5)); +z7'=z6'+whatever*(z7-z6)=z5'+whatever*(z7-z5); +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +filldraw obl(5,7,6)---obl(6,5,7)---obl(7,6,5)---cycle; +oblu:=2oblu; +infill obl(5',7',6')---obl(6',5',7')---obl(7',6',5')---cycle; +penlabels(1,2,3,4); labels(5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.math_corresponds: +bskchar "Corresponds to sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_corresponds,13u#,1.5spread#+2rule_thickness#+math_axis#,.5spread#+.5rule_thickness#-math_axis#); uni "0x2258"; +adjust_fit(0,0); +pickup tiny.nib; +pos9(rule_thickness,90); pos10(rule_thickness,90); +pos11(rule_thickness,90); pos12(rule_thickness,90); +lft x9=u; x10+x9=w; x11=x9; x12=x10; +y9=y10; y11=y12; .5[y9,y11]=math_axis; bot y11l=-d; +x8=.5w; top y8=h-.5rule_thickness; y4=y9; y8-y4=.9(x2-x6); +circle_points(rule_thickness); +filldraw bskrule(9,10,hair,0); +filldraw bskrule(12,11,hair,0); +filldraw subpath(-2,2) of (draw_circle.l)..subpath(-2,2) of reverse (draw_circle.r)..cycle; +penlabels(9,10,11,12); labels(5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.math_equals_corresponds: +bskchar "Corresponds to (estimates) sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_corresponds,13u#,1.5spread#+2rule_thickness#+math_axis#,.5spread#+.5rule_thickness#-math_axis#); uni "0x2259"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=math_axis; bot y3l=-d; +x7=.5[x5,x6]=.5w; x6-x5=1.75(y7-y5); +bot y5=bot y6=top y1r+1.5rule_thickness; top y7=h+o; +y5'=y6'=y5; +x5'-x5=x6-x6'=(rule_thickness-currentbreadth)/cosd(angle(z7-z5)); +z7'=z6'+whatever*(z7-z6)=z5'+whatever*(z7-z5); +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +filldraw z6---obl(7,6,5)---z5..z5'---obl(7',5',6')---z6'..cycle; +penlabels(1,2,3,4); labels(5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.math_equiangular: +bskchar "Equiangular to sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equiangular,13u#,1.5spread#+2rule_thickness#+math_axis#,.5spread#+.5rule_thickness#-math_axis#); uni "0x225A"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=math_axis; bot y3l=-d; +x7=.5[x5,x6]=.5w; x6-x5=1.75(y7-y5); +top y5=top y6=h-o; y7=top y1r+1.5rule_thickness-o; +y5'=y6'=y5; +x5'-x5=x6-x6'=(rule_thickness-currentbreadth)/cosd(angle(z7-z5)); +z7'=z6'+whatever*(z7-z6)=z5'+whatever*(z7-z5); +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +filldraw z6---obl(7,6,5)---z5..z5'---obl(7',5',6')---z6'..cycle; +penlabels(1,2,3,4); labels(5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.math_equals_asterisk: +bskchar "Equals-and-asterisk sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_asterisk,13u#,1.5spread#+3rule_thickness#+math_axis#,.5spread#+.5rule_thickness#-math_axis#); uni "0x2A6E"; +adjust_fit(0,0); +pickup tiny.nib; oblu:=2oblu; +numeric vast; path p; +pos2(rule_thickness,90); pos3(rule_thickness,90); +pos4(rule_thickness,90); pos5(rule_thickness,90); +lft x2=u; x3+x2=w; x4=x2; x5=x3; +y2=y3; y4=y5; .5[y2,y4]=math_axis; bot y4l=-d; +z0=(.5w,.5[y2,h]+rule_thickness); vast=.8stem; +pos1(1.3rule_thickness,0); x1=x0; +top y1=h; p:=z0---z1r{dir120}..z1l---z0; +p:=subpath (xpart(p intersectiontimes ((x0,y0+vast)--(w,y0+vast))), + xpart(p intersectiontimes ((x0,y0+vast)--(0,y0+vast)))) of p; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z0,i).. endfor cycle; +filldraw bskrule(2,3,hair,0); +filldraw bskrule(5,4,hair,0); +penlabels(1,2,3,4,5); labels(0); +endchar; + +iff known chars.math_equals_star: +bskchar "Equals-and-star sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_star,13u#,1.5spread#+3rule_thickness#+math_axis#,.5spread#+.5rule_thickness#-math_axis#); uni "0x225B"; +adjust_fit(0,0); +pickup tiny.nib; oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=u; x7+x6=w; x8=x6; x9=x7; +y6=y7; y8=y9; .5[y6,y8]=math_axis; bot y8l=-d; +z0=(.5w,.5[y6,h]+rule_thickness); +x1=x0; top y1=h+apex_o; pos1(hair,0); +forsuffixes i=2,3,4,5: + z[i]=z0+(z1-z0) rotated ((i-1)*72); pos.i(hair,72(i-1)); +endfor +forsuffixes i=11,12,13,14,15: + z[i]=z0; pos.i(curve,72(i-1)); +endfor + z[105]=whatever[z5l,z15l]=whatever[z1r,z11r]; +for i=1 upto 4: + z[100+i]=whatever[z[i].l,z[i+10].l]=whatever[z[i+1].r,z[i+11].r]; +endfor; +filldraw z1l---obl(101,1l,2r)---z2r..z2l---obl(102,2l,3r)---z3r..z3l + ---obl(103,3l,4r)---z4r..z4l---obl(104,4l,5r)---z5r..z5l + ---obl(105,5l,1r)---z1r..cycle; +filldraw bskrule(6,7,hair,0); +filldraw bskrule(9,8,hair,0); +penlabels(1,2,3,4,5,6,7,8,9,11,12,13,14,15); labels(0,101,102,103,104,105); +endchar; + +iff known chars.math_equals_dot: +bskchar "Equals-and-dot sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_dot,13u#,.5spread#+2rule_thickness#+dot_size#+math_axis#,.5spread#+.5rule_thickness#-math_axis#); uni "0x2250"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1-y3=spread; +x5=.5w; top y5=h+o; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +dot(5); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_equals_dot_below: +bskchar "Equals-and-dot-below sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_dot_below,13u#,.5spread#+.5rule_thickness#+dot_size#+math_axis#,.5spread#+2rule_thickness#+dot_size#-math_axis#); uni "0x2A66"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1-y3=spread; +x5=.5w; bot y5=-d-o; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +dot(5); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_equals_dots: +bskchar "Equals-and-dots sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_dots,13u#,v_center(2spread#+rule_thickness#+2dot_size#)); uni "0x2251"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=.5[y5,y6]=math_axis; y1-y3=spread; +.5[x5,x6]=.5w; top y5=h+o-.5dot_size; x5=x6; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +dot(5); dot(6); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_equals_dot_rl: +bskchar "Dottted (right-left) equals sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_dot_rl,13u#,v_center(2spread#+rule_thickness#+2dot_size#)); uni "0x2253"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=.5[y5,y6]=math_axis; y1-y3=spread; +.5[x5,x6]=.5w; top y5=h+o-.5dot_size; lft x6=x3+.5dot_size; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +dot(5); dot(6); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_equals_dot_lr: +bskchar "Dotted (left-right) equals sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_dot_lr,13u#,v_center(2spread#+rule_thickness#+2dot_size#)); uni "0x2252"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=.5[y5,y6]=math_axis; y1-y3=spread; +.5[x5,x6]=.5w; top y5=h+o-.5dot_size; lft x5=x1+.5dot_size; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +dot(5); dot(6); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_equals_dot_ttbb: +bskchar "Four-dotted top-bottom equals sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_dot_ttbb,13u#,v_center(2spread#+rule_thickness#+2dot_size#)); uni "0x2A77"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=.5[y5,y7]=math_axis; y1-y3=spread; y7=y8; +.5[x5,x6]=.5w; x6-x5=.5(x2-x1); x5=x7; x6=x8; top y5=top y6=h+o-.5dot_size; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +dot(5); dot(6); dot(7); dot(8); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_colon_equals: +bskchar "Equals sign after colon"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_colon_equals,15u#+dot_size#,v_center(spread#+rule_thickness#)); uni "0x2254"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=3u+dot_size; rt x2=w-u; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=.5[y5,y6]=math_axis; top y1r=h; +x5=x6=u+.5dot_size; top y5-bot y6=x_height-dot_size; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +dot(5); dot(6); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_colon_double_equals: +bskchar "Equals sign after double colon"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_colon_double_equals,17u#+2dot_size#,v_center(spread#+rule_thickness#)); uni "0x2A74"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=5u+2dot_size; rt x2=w-u; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=.5[y5,y6]=math_axis; top y1r=h; +x5=x6=u+.5dot_size; top y5-bot y6=x_height-dot_size; x7=x8=.5[x5,x1]; y7=y5; y8=y6; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +dot(5); dot(6); dot(7); dot(8); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_equals_colon: +bskchar "Equals sign before colon"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_colon,15u#+dot_size#,v_center(spread#+rule_thickness#)); uni "0x2255"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1=u; rt x2=w-3u-dot_size; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=.5[y5,y6]=math_axis; top y1r=h; +x5=x6=w-u-.5dot_size; top y5-bot y6=x_height-dot_size; +filldraw bskrule(1,2,hair,0); +filldraw bskrule(4,3,hair,0); +dot(5); dot(6); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_equals_parallel: +bskchar "Equals and parallel to sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_parallel,13u#,v_center(.75(body_height#+desc_depth#))); uni "0x22D5"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); pos6(rule_thickness,0); +pos7(rule_thickness,0); pos8(rule_thickness,0); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1-y3=spread; +top y5=top y7=h; bot y6=bot y8=-d; x5=x6; x7=x8=x5+max(3curve,3u); .5[x5,x7]=.5w; +bskpoints(1,2,hair,0); bskpoints(4,3,hair,0); +bskpoints(5,6,rule_thickness,rule_thickness); bskpoints(8,7,rule_thickness,rule_thickness); +z1'=whatever[z5l,z6l]=whatever[z1r,z2r]; +z2'=whatever[z5r,z6r]=whatever[z1r,z2r]; +z3'=whatever[z5r,z6r]=whatever[z1l,z2l]; +z4'=whatever[z5r,z6r]=whatever[z3r,z4r]; +z5'=whatever[z5r,z6r]=whatever[z3l,z4l]; +z6'=whatever[z5l,z6l]=whatever[z3l,z4l]; +z7'=whatever[z5l,z6l]=whatever[z3r,z4r]; +z8'=whatever[z5l,z6l]=whatever[z1l,z2l]; +z9'=whatever[z7l,z8l]=whatever[z1r,z2r]; +z10'=whatever[z7r,z8r]=whatever[z1r,z2r]; +z11'=whatever[z7r,z8r]=whatever[z1l,z2l]; +z12'=whatever[z7r,z8r]=whatever[z3r,z4r]; +z13'=whatever[z7r,z8r]=whatever[z3l,z4l]; +z14'=whatever[z7l,z8l]=whatever[z3l,z4l]; +z15'=whatever[z7l,z8l]=whatever[z3r,z4r]; +z16'=whatever[z7l,z8l]=whatever[z1l,z2l]; +filldraw z1r---obl(1',1r,5l)---z5l..z5rr---obl(2',5r,9')---obl(9',2',7l)---z7ll..z7r + ---obl(10',7r,2r)---z2r..z2ll---obl(11',2l,12')---obl(12',11',4r)---z4r..z4l + ---obl(13',4l,8r)---z8rr..z8l---obl(14',8l,5')---obl(5',4l,6r)---z6r..z6ll + ---obl(6',6l,3l)---z3ll..z3r---obl(7',3r,8')---obl(8',7',1l)---z1l..cycle; +infill obl(3',16',4')---obl(4',3',15')---obl(15',4',16')---obl(16',15',3')---cycle; +penlabels(1,2,3,4,5,6,7,8); +labels(2ll,3ll,5rr,6ll,,7ll,8rr,1',2',3',4',5',6',7',8',9',10',11',12',13',14',15',16'); +endchar; + +iff known chars.math_equals_sl_parallel: +bskchar "Equals and slanted parallel to sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_equals_sl_parallel,13u#,v_center(.75(body_height#+desc_depth#))); uni "0x29E3"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); pos6(rule_thickness,0); +pos7(rule_thickness,0); pos8(rule_thickness,0); +lft x1=u; x2+x1=w; x3=x1; x4=x2; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1-y3=spread; +top y5=top y7=h; bot y6=bot y8=-d; x5-x6=x7-x8=x7-x5=max(3curve,3u); .5[x7,x6]=.5w; +bskpoints(1,2,hair,0); bskpoints(4,3,hair,0); +bskpoints(5,6,rule_thickness,rule_thickness); bskpoints(8,7,rule_thickness,rule_thickness); +z1'=whatever[z5l,z6l]=whatever[z1r,z2r]; +z2'=whatever[z5r,z6r]=whatever[z1r,z2r]; +z3'=whatever[z5r,z6r]=whatever[z1l,z2l]; +z4'=whatever[z5r,z6r]=whatever[z3r,z4r]; +z5'=whatever[z5r,z6r]=whatever[z3l,z4l]; +z6'=whatever[z5l,z6l]=whatever[z3l,z4l]; +z7'=whatever[z5l,z6l]=whatever[z3r,z4r]; +z8'=whatever[z5l,z6l]=whatever[z1l,z2l]; +z9'=whatever[z7l,z8l]=whatever[z1r,z2r]; +z10'=whatever[z7r,z8r]=whatever[z1r,z2r]; +z11'=whatever[z7r,z8r]=whatever[z1l,z2l]; +z12'=whatever[z7r,z8r]=whatever[z3r,z4r]; +z13'=whatever[z7r,z8r]=whatever[z3l,z4l]; +z14'=whatever[z7l,z8l]=whatever[z3l,z4l]; +z15'=whatever[z7l,z8l]=whatever[z3r,z4r]; +z16'=whatever[z7l,z8l]=whatever[z1l,z2l]; +filldraw z1r---obl(1',1r,5l)---z5l..z5rr---obl(2',5r,9')---obl(9',2',7l)---z7ll..z7r + ---obl(10',7r,2r)---z2r..z2ll---obl(11',2l,12')---obl(12',11',4r)---z4r..z4l + ---obl(13',4l,8r)---z8rr..z8l---obl(14',8l,5')---obl(5',4l,6r)---z6r..z6ll + ---obl(6',6l,3l)---z3ll..z3r---obl(7',3r,8')---obl(8',7',1l)---z1l..cycle; +infill obl(3',16',4')---obl(4',3',15')---obl(15',4',16')---obl(16',15',3')---cycle; +penlabels(1,2,3,4,5,6,7,8); +labels(2ll,3ll,5rr,6ll,,7ll,8rr,1',2',3',4',5',6',7',8',9',10',11',12',13',14',15',16'); +endchar; + +iff known chars.math_bow: +bskchar "Bow sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(chars.math_bow,11u#,v_center(spread#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x8=.5w; top y8=h; y2=-d; y8-y4=.9(x2-x6); +circle_points(rule_thickness); +filldraw subpath(-2,2) of (draw_circle.l)..subpath(-2,2) of reverse (draw_circle.r)..cycle; +penlabels(9,10,11,12); labels(5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.sign_slash: +bskchar "Slash"; +beginchar(chars.sign_slash,10u#,body_height#,desc_depth#); uni "0x002F"; +adjust_fit(0,0); +pickup rule.nib; +top rt z1=(w-u,h); bot lft z2=(u,-d); +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_slash_double: +bskchar "Double slash"; +beginchar(chars.math_slash_double,13u#,body_height#,desc_depth#); uni "0x2AFD"; +adjust_fit(0,0); +pickup rule.nib; +top rt z1=(w-4u,h); bot lft z2=(u,-d); +z3-z1=z4-z2=(3u,0); +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +pos3(rule_thickness,angle(z2-z1)+90); pos4(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +filldraw bskrule(4,3,rule_thickness,rule_thickness); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_slash_triple: +bskchar "Triple slash operator"; +beginchar(chars.math_slash_triple,16u#,v_center(10/6dh#)); uni "0x2AFB"; +adjust_fit(0,0); +pickup rule.nib; +top rt z1=(w-7u,h); bot lft z2=(u,-d); +z5-z3=z3-z1=z6-z4=z4-z2=(3u,0); +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +pos3(rule_thickness,angle(z2-z1)+90); pos4(rule_thickness,angle(z2-z1)+90); +pos5(rule_thickness,angle(z2-z1)+90); pos6(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +filldraw bskrule(4,3,rule_thickness,rule_thickness); +filldraw bskrule(6,5,rule_thickness,rule_thickness); +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_backslash: +bskchar "Backslash sign"; +beginchar(chars.sign_backslash,10u#,body_height#,desc_depth#); uni "0x005C"; +adjust_fit(0,0); +pickup rule.nib; +top lft z1=(u,h); bot rt z2=(w-u,-d); +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_division_integer: +bskchar "Integer division symbol"; +beginarithchar(chars.math_division_integer); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +top lft z1=(2u,x_height); bot y2=-o; x2=w-x1; +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.sign_slash_frac: +bskchar "Fraction slash"; +beginchar(chars.sign_slash_frac,2u#,body_height#,paren_depth#); uni "0x2044"; +adjust_fit(0,0); +pickup rule.nib; +top rt z1=(4u,h); bot lft z2=(-4u,-d); +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_line_45: +bskchar "45 degree angle line"; +beginchar(chars.math_line_45,asc_height#+asc_depth#,asc_height#,asc_depth#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +bot y1=-d; .5[y1,y2]=math_axis; lft x1=0; +z2=z1+whatever*dir45; +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_line_135: +bskchar "135 degree angle line"; +beginchar(chars.math_line_135,asc_height#+asc_depth#,asc_height#,asc_depth#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +bot y1=-d; .5[y1,y2]=math_axis; rt x1=w; +z2=z1+whatever*dir135; +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_dijkstra: +bskchar "Dijkstra choice"; +beginchar(chars.math_dijkstra,7u#,v_center(asc_height#)); uni "0x2AFE"; +adjust_fit(0,0); +oblu.more:=2oblu; +pickup rule.nib; +top y1=h; bot y2=-d; x1=x2=.5w; +pickup tiny.nib; +pos1(rule_thickness+4u,0); pos2(rule_thickness+4u,0); +y1'r=y1'l=y1r-rule_thickness+currentbreadth; +z1'=z1l+(rule_thickness-currentbreadth)*unitvector((z1-z2) rotated -90); +z1''=z1r+(rule_thickness-currentbreadth)*unitvector((z1-z2) rotated 90); +y2'l=y2'r=y2+(y1l-y1'l); +z1'r=z1'+whatever*unitvector(z1l-z2l); z1'l=z1''+whatever*unitvector(z1r-z2r); +z2'l=z1'l+whatever*unitvector(z1l-z2l); z2'r=z1'r+whatever*unitvector(z1r-z2r); +filldraw z1l---obl(2l,1l,2r)---obl(2r,2l,1r)---obl(1r,2r,1l)---cycle; +infill obl(1'l,1'r,2'l).more---obl(2'l,1'l,2'r)---obl(2'r,2'l,1'r).more---obl(1'r,2'r,1'l)---cycle; +penlabels(1,1',2,2'); +endchar; + +iff known chars.math_dijkstra_nary: +bskchar "N-ary dijkstra choice"; +beginchar(chars.math_dijkstra_nary,8u#,v_center(10/6dh#)); uni "0x2AFF"; +adjust_fit(0,0); +oblu.more:=2oblu; +pickup rule.nib; +top y1=h; bot y2=-d; x1=x2=.5w; +pickup tiny.nib; +pos1(stem+4u,0); pos2(stem+4u,0); +y1'r=y1'l=y1r-stem+currentbreadth; +z1'=z1l+(stem-currentbreadth)*unitvector((z1-z2) rotated -90); +z1''=z1r+(stem-currentbreadth)*unitvector((z1-z2) rotated 90); +y2'l=y2'r=y2+(y1l-y1'l); +z1'r=z1'+whatever*unitvector(z1l-z2l); z1'l=z1''+whatever*unitvector(z1r-z2r); +z2'l=z1'l+whatever*unitvector(z1l-z2l); z2'r=z1'r+whatever*unitvector(z1r-z2r); +filldraw z1l---obl(2l,1l,2r)---obl(2r,2l,1r)---obl(1r,2r,1l)---cycle; +infill obl(1'l,1'r,2'l).more---obl(2'l,1'l,2'r)---obl(2'r,2'l,1'r).more---obl(1'r,2'r,1'l)---cycle; +penlabels(1,1',2,2'); +endchar; + +iff known chars.math_slash_fat: +bskchar "Fat slash"; +beginchar(chars.math_slash_fat,10u#,body_height#,desc_depth#); uni "non"; +adjust_fit(0,0); +oblu.more:=2oblu; +pickup rule.nib; +top rt z1=(w+2u,h); bot lft z2=(3u,-d); +pickup tiny.nib; +pos1(rule_thickness+4u,0); pos2(rule_thickness+4u,0); +y1'r=y1'l=y1r-rule_thickness+currentbreadth; +z1'=z1l+(rule_thickness-currentbreadth)*unitvector((z1-z2) rotated -90); +z1''=z1r+(rule_thickness-currentbreadth)*unitvector((z1-z2) rotated 90); +y2'l=y2'r=y2+(y1l-y1'l); +z1'r=z1'+whatever*unitvector(z1l-z2l); z1'l=z1''+whatever*unitvector(z1r-z2r); +z2'l=z1'l+whatever*unitvector(z1l-z2l); z2'r=z1'r+whatever*unitvector(z1r-z2r); +filldraw z1l---obl(2l,1l,2r)---obl(2r,2l,1r)---obl(1r,2r,1l)---cycle; +infill obl(1'l,1'r,2'l).more---obl(2'l,1'l,2'r)---obl(2'r,2'l,1'r).more---obl(1'r,2'r,1'l)---cycle; +penlabels(1,1',2,2'); +endchar; + +iff known chars.math_backslash_fat: +bskchar "Fat backslash sign"; +beginchar(chars.math_backslash_fat,10u#,body_height#,desc_depth#); uni "non"; +adjust_fit(0,0); +oblu.more:=2oblu; +pickup rule.nib; +top lft z1=(-2u,h); bot rt z2=(w-3u,-d); +pickup tiny.nib; +pos1(rule_thickness+4u,0); pos2(rule_thickness+4u,0); +y1'r=y1'l=y1r-rule_thickness+currentbreadth; +z1'=z1l+(rule_thickness-currentbreadth)*unitvector((z1-z2) rotated -90); +z1''=z1r+(rule_thickness-currentbreadth)*unitvector((z1-z2) rotated 90); +y2'l=y2'r=y2+(y1l-y1'l); +z1'r=z1'+whatever*unitvector(z1l-z2l); z1'l=z1''+whatever*unitvector(z1r-z2r); +z2'l=z1'l+whatever*unitvector(z1l-z2l); z2'r=z1'r+whatever*unitvector(z1r-z2r); +filldraw z1l---obl(2l,1l,2r)---obl(2r,2l,1r)---obl(1r,2r,1l)---cycle; +infill obl(1'l,1'r,2'l)---obl(2'l,1'l,2'r).more---obl(2'r,2'l,1'r)---obl(1'r,2'r,1'l).more---cycle; +penlabels(1,1',2,2'); +endchar; + +iff known chars.math_backslash_double: +bskchar "Double backslash sign"; +beginchar(chars.math_backslash_double,10u#+max(3curve#,3u#),body_height#,desc_depth#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +top lft z1=(u,h); bot rt z4=(w-u,-d); +z3-z1=z4-z2=(max(3curve,3u),0); +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +pos3(rule_thickness,angle(z2-z1)+90); pos4(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +filldraw bskrule(3,4,rule_thickness,rule_thickness); +penlabels(1,2,3,4); +endchar; + +iff known chars.sign_plus: +bskchar "Plus sign"; +beginarithchar(chars.sign_plus); uni "0x002B"; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +x3=x4=.5w; top y3=h; bot y4=-d; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_plus_semicircle_left: +bskchar "Plus sign in left half circle"; +beginchar(chars.math_plus_semicircle_left,11u#,v_center(11u#)); uni "0x2A2D"; +adjust_fit(0,0); +pickup tiny.nib; +pos9(rule_thickness,90); pos10(rule_thickness,90); +pos11(rule_thickness,0); pos12(rule_thickness,0); +lft x6=u+.5rule_thickness; .5[x6,x2]=x11=x12=.5[x9,x10]=.5w+u; y8-y4=x2-x6; +lft x9=3u; y2=y9=y10=.5[y11,y12]=math_axis; y11-y12=x10-x9; +circle_points(rule_thickness); +bskpoints(9,10,hair,hair); bskpoints(12,11,.5hair,.5hair); +z13=whatever[z12l,z11l]=whatever[z9l,z10l]; +z14=whatever[z12r,z11r]=whatever[z9l,z10l]; +z15=whatever[z12r,z11r]=whatever[z9r,z10r]; +z16=whatever[z12l,z11l]=whatever[z9r,z10r]; +filldraw z9l---obl(13,9l,12l)---z12l..z12rr---obl(14,12r,10l)---z10ll..z10r--- + obl(15,10r,11r)---z11r..z11ll---obl(16,11l,9r)---z9rr..cycle; +filldraw subpath(4,8) of (draw_circle.l)..reverse subpath(4,8) of (draw_circle.r)..cycle; +penlabels(9,10,11,12); labels(13,14,15,16); +endchar; + +iff known chars.math_plus_semicircle_right: +bskchar "Plus sign in right half circle"; +beginchar(chars.math_plus_semicircle_right,11u#,v_center(11u#)); uni "0x2A2E"; +adjust_fit(0,0); +pickup tiny.nib; +pos9(rule_thickness,90); pos10(rule_thickness,90); +pos11(rule_thickness,0); pos12(rule_thickness,0); +rt x2=w-u-.5rule_thickness; .5[x6,x2]=x11=x12=.5[x9,x10]=.5w-u; y8-y4=x2-x6; +lft x9=u; y2=y9=y10=.5[y11,y12]=math_axis; y11-y12=x10-x9; +circle_points(rule_thickness); +bskpoints(9,10,hair,hair); bskpoints(12,11,.5hair,.5hair); +z13=whatever[z12l,z11l]=whatever[z9l,z10l]; +z14=whatever[z12r,z11r]=whatever[z9l,z10l]; +z15=whatever[z12r,z11r]=whatever[z9r,z10r]; +z16=whatever[z12l,z11l]=whatever[z9r,z10r]; +filldraw z9l---obl(13,9l,12l)---z12l..z12rr---obl(14,12r,10l)---z10ll..z10r--- + obl(15,10r,11r)---z11r..z11ll---obl(16,11l,9r)---z9rr..cycle; +filldraw subpath(0,4) of (draw_circle.l)..reverse subpath(0,4) of (draw_circle.r)..cycle; +penlabels(9,10,11,12); labels(13,14,15,16); +endchar; + +iff known chars.math_plus_dot: +bskchar "Plus sign with dot above"; +beginchar(chars.math_plus_dot,13u#,asc_height#,5.5u#-math_axis#); uni "0x2214"; +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +x3=x4=x9=.5w; top y3=5.5u+math_axis; bot y4=-d; +if h-.5dot_sizebot y4-rule_thickness: y9=-d; else: top y9=-d+.5dot_size;fi +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +dot(9); +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_plus_hat: +bskchar "Plus sign with hat"; +beginchar(chars.math_plus_hat,13u#,asc_height#,5.5u#-math_axis#); uni "0x2A23"; +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +x3=x4=.5w; top y3=math_axis+5.5u; bot y4=-d; +x10=x3+o; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +circumflex(9,10,11); +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_plus_tilde: +bskchar "Plus sign with tilde"; +beginchar(chars.math_plus_tilde,13u#,asc_height#,5.5u#-math_axis#); uni "0x2A24"; +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +x3=x4=.5w; top y3=math_axis+5.5u; bot y4=-d; +y9=y3+rule_thickness; y10=h; x9=3u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +tilde(9,10); +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_plus_tilde_below: +bskchar "Plus sign with tilde below"; +beginchar(chars.math_plus_tilde_below,13u#,5.5u#+math_axis#,.55desc_depth#); uni "0x2A26"; +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +x3=x4=.5w; top y3=h; bot y4=math_axis-5.5u; +y9=-d; y10=y4-rule_thickness; x9=3u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +tilde(9,10); +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_plus_triangle: +bskchar "Plus sign with black triangle"; +beginarithchar(chars.math_plus_triangle); uni "0x2A28"; +pickup tiny.nib; +oblu.more:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +x3=x4=x11=.5[x9,x10]=.5w; top y3=h; bot y4=-d; +x10-x9=2(y11-y9)=w-7u; +y9=y10; y11=y1l; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +y12=y13=y9; x12=x4r; x13=x4l; +filldraw z1l---obl(5,1l,9).more---obl(9,5,13)---tobl(13,9,4l)---z4l..z4rr---tobl(12,4rr,10) + ---obl(10,12,6)--obl(6,10,2l).more---z2ll..z2r---obl(7,2r,3r)---z3r..z3ll + ---obl(8,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(5,6,7,8,9,10,11,12,13); +endchar; + +iff known chars.math_plus_through_circ: +bskchar "Plus sign through circle"; +beginarithchar(chars.math_plus_through_circ); uni "non"; +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos9(rule_thickness,90); pos10(rule_thickness,90); +pos11(rule_thickness,0); pos12(rule_thickness,0); +.5[y8,y4]=math_axis; .5[x2,x6]=.5w; x2-x6=y8-y4=w-6u; +circle_points(rule_thickness); +lft x9=u; rt x10=w-u; y9=y10=math_axis; +x11=x12=x17=.5w; top y11=5.5u+math_axis; bot y12=-d; +bskpoints(9,10,hair,hair); bskpoints(12,11,.5hair,.5hair); +z13=whatever[z12l,z11l]=whatever[z9l,z10l]; +z14=whatever[z12r,z11r]=whatever[z9l,z10l]; +z15=whatever[z12r,z11r]=whatever[z9r,z10r]; +z16=whatever[z12l,z11l]=whatever[z9r,z10r]; +p0:=reverse (draw_circle.l); +p1:=reverse (draw_circle.r); +p2:=z9l---obl(13,9l,12l)---z12l; +p3:=z12rr---obl(14,12r,10l)---z10ll; +p4:=z10r---obl(15,10r,11r)---z11r; +p5:=z11ll---obl(16,11l,9r)---z9rr; +(tim0,tim1)=p0 intersectiontimes subpath(0,1) of p2; +(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p2; +(tim4,tim5)=p0 intersectiontimes subpath(0,1) of p3; +(tim6,tim7-1)=p0 intersectiontimes subpath(1,infinity) of p3; +(tim8,tim9)=p0 intersectiontimes subpath(0,1) of p4; +(tim10,tim11-1)=p0 intersectiontimes subpath(1,infinity) of p4; +(tim12,tim13)=p0 intersectiontimes subpath(0,1) of p5; +(tim14,tim15-1)=p0 intersectiontimes subpath(1,infinity) of p5; +(tim16,tim17)=p1 intersectiontimes subpath(0,1) of p2; +(tim18,tim19-1)=p1 intersectiontimes subpath(1,infinity) of p2; +(tim20,tim21)=p1 intersectiontimes subpath(0,1) of p3; +(tim22,tim23-1)=p1 intersectiontimes subpath(1,infinity) of p3; +(tim24,tim25)=p1 intersectiontimes subpath(0,1) of p4; +(tim26,tim27-1)=p1 intersectiontimes subpath(1,infinity) of p4; +(tim28,tim29)=p1 intersectiontimes subpath(0,1) of p5; +(tim30,tim31-1)=p1 intersectiontimes subpath(1,infinity) of p5; +filldraw subpath(0,rundy(p2,tim1).zpet) of p2 + ..subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0 + ..subpath(rundy(p2,tim3),infinity) of p2 + ..subpath(0,rundy(p3,tim5).zpet) of p3 + ..subpath(rundy(p0,tim4),rundy(p0,tim6).zpet) of p0 + ..subpath(rundy(p3,tim7),infinity) of p3 + ..subpath(0,rundy(p4,tim9).zpet) of p4 + ..subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0 + ..subpath(rundy(p4,tim11),infinity) of p4 + ..subpath(0,rundy(p5,tim13).zpet) of p5 + ..subpath(rundy(p0,tim12),rundy(p0,tim14).zpet) of p0 + ..subpath(rundy(p5,tim15),infinity) of p5..cycle; +infill subpath(rundy(p2,tim17),rundy(p2,tim19).zpet) of p2 + ..subpath(rundy(p1,tim18).zpet,rundy(p1,tim16)) of p1..cycle; +infill subpath(rundy(p3,tim21),rundy(p3,tim23).zpet) of p3 + ..subpath(rundy(p1,tim22).zpet,rundy(p1,tim20)) of p1..cycle; +infill subpath(rundy(p4,tim25),rundy(p4,tim27).zpet) of p4 + ..subpath(rundy(p1,tim26).zpet,rundy(p1,tim24)) of p1..cycle; +infill subpath(rundy(p5,tim29),rundy(p5,tim31).zpet) of p5 + ..subpath(rundy(p1,tim30).zpet,rundy(p1,tim28)) of p1..cycle; +penlabels(9,10,11,12); labels(13,14,15,16); +endchar; + +iff known chars.math_plus_circ: +bskchar "Plus sign with circle"; +beginchar(chars.math_plus_circ,13u#,asc_height#+2rule_thickness#,5.5u#-math_axis#); uni "0x2A22"; +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos9(rule_thickness,90); pos10(rule_thickness,90); +pos11(rule_thickness,0); pos12(rule_thickness,0); +bot y4=top 5.5u+math_axis+rule_thickness; top y8=h; .5[x2,x6]=.5w; x2-x6=y8-y4; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +lft x9=u; rt x10=w-u; y9=y10=math_axis; +x11=x12=x17=.5w; top y11=5.5u+math_axis; bot y12=-d; +bskpoints(9,10,hair,hair); bskpoints(12,11,.5hair,.5hair); +z13=whatever[z12l,z11l]=whatever[z9l,z10l]; +z14=whatever[z12r,z11r]=whatever[z9l,z10l]; +z15=whatever[z12r,z11r]=whatever[z9r,z10r]; +z16=whatever[z12l,z11l]=whatever[z9r,z10r]; +filldraw z9l---obl(13,9l,12l)---z12l..z12rr---obl(14,12r,10l)---z10ll..z10r--- + obl(15,10r,11r)---z11r..z11ll---obl(16,11l,9r)---z9rr..cycle; +penlabels(9,10,11,12); labels(13,14,15,16); +endchar; + +iff known chars.sign_tilde: +bskchar "Tilde"; +beginchar(chars.sign_tilde,11u#,.3[asc_height#,x_height#],0); uni "0x007E"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=3curve; +vlnka(0,1); +endchar; + +iff known chars.sign_tilde_low: +bskchar "Low lying tilde"; +beginchar(chars.sign_tilde_low,11u#,bar_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=3curve; +bot y0=0; +vlnka(0,1); +endchar; + +iff known chars.sign_tilde_dash: +bskchar "Swung dash"; +beginchar(chars.sign_tilde_dash,13u#,x_height#,0); uni "0x2053"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=3curve; +.5[y1,y0]=.5h; +vlnka(0,1); +endchar; + +iff known chars.sign_asterisk: +bskchar "Asterisk"; +beginchar(chars.sign_asterisk,8u#,body_height#,0); uni "0x002A"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size, ast, vast; +path p; +z0=.5(w,h); ast:=3/4stem; vast=.55stem; +pos1(ast,0); x1=x0; +size=1/3h; if (size+.5ast)*cosd(30) > (lft w)-u-x0: + size:= (lft w-u-x0)/cosd(30)-.5ast; fi; +y1=y0+size; +p:=z0---z1r{dir120}..z1l---z0; +p:=subpath (xpart(p intersectiontimes ((x0,y0+vast)--(w,y0+vast))), + xpart(p intersectiontimes ((x0,y0+vast)--(0,y0+vast)))) of p; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z0,i).. endfor cycle; +labels(0); penlabels(1); +endchar; + +iff known chars.sign_asterisk_two: +bskchar "Two asterisks"; +beginchar(chars.sign_asterisk_two,8u#,body_height#,0); uni "0x2051"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size, ast, vast; pair shf; +path p; +ast:=3/4stem; vast=.55stem; +pos1(ast,0); x1=x0=.5w; +size=1/3h; if (size+.5ast)*cosd(30) > (lft w)-u-x0: + size:= (lft w-u-x0)/cosd(30)-.5ast; fi; +y1=y0+size=h; shf:=(0,-y0+size); +p:=z0---z1r{dir120}..z1l---z0; +p:=subpath (xpart(p intersectiontimes ((x0,y0+vast)--(w,y0+vast))), + xpart(p intersectiontimes ((x0,y0+vast)--(0,y0+vast)))) of p; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z0,i).. endfor cycle; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z0,i) shifted shf .. endfor cycle; +labels(0); penlabels(1); +endchar; + +iff known chars.sign_asterism: +bskchar "Asterism"; +beginchar(chars.sign_asterism,15u#,body_height#,0); uni "0x2042"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size, ast, vast; +path p; +ast:=3/4stem; vast=.55stem; size=1/3x_height; +pos1(ast,0); x1=x0=.5w; y1=y0+size=h; +p:=z0---z1r{dir120}..z1l---z0; +p:=subpath (xpart(p intersectiontimes ((x0,y0+vast)--(w,y0+vast))), + xpart(p intersectiontimes ((x0,y0+vast)--(0,y0+vast)))) of p; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z0,i).. endfor cycle; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z0,i) shifted (u-x0+size,-y0+size) .. endfor cycle; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z0,i) shifted (w-u-x0-size,-y0+size) .. endfor cycle; +labels(0); penlabels(1); +endchar; + +iff known chars.sign_asterisk_low: +bskchar "Low asterisk"; +beginchar(chars.sign_asterisk_low,7.5u#,x_height#,0); uni "0x204E"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size, ast, vast; +path p; +ast:=3/4stem; vast=.55stem; +size=1/3x_height; +pos1(ast,0); +x1=x0=.5w; y1-size=y0=size; +p:=z0---z1r{dir120}..z1l---z0; +p:=subpath (xpart(p intersectiontimes ((x0,y0+vast)--(w,y0+vast))), + xpart(p intersectiontimes ((x0,y0+vast)--(0,y0+vast)))) of p; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z0,i).. endfor cycle; +labels(0); penlabels(1); +endchar; + +iff known chars.sign_flower_punct: +bskchar "Flower punctation"; +beginchar(chars.sign_flower_punct,11u#,x_height#,0); uni "0x2055"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size, ast, vast; +path p; +z0=(.5w,.5h); vast=1.5u; +pos0(hair,0); pos1(u,0); x1=x0; +y1=h; +p:=z0r{up}..z1r{dir120}..{dir-120}z1l...{down}z0l; +p:=subpath (xpart(p intersectiontimes ((x0,y0+vast)--(w,y0+vast))), + xpart(p intersectiontimes ((x0,y0+vast)--(0,y0+vast)))) of p; +filldraw for i=0, 45, 90, 135, 180, 225, 270, 315: p rotatedaround(z0,i).. endfor cycle; +labels(0); penlabels(1); +endchar; + +iff known chars.sign_hash: +bskchar "Number sign"; +beginchar(chars.sign_hash,13u#,body_height#,0); uni "0x0023"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +x1r-x3r=x2l-x4l=.35w; rt x1r=w-3u; lft x4l=3u; +y1r=y3r=h; y2l=y4l=0; +lft x5-rule_thickness=lft x7=u; rt x6=rt x8+rule_thickness=w-u; +y5=y6; y7=y8; .5[y5,y7]=.5h; y5-y7=.55x_height; +numeric theta; theta=angle(z1r-z2l)+90; +pos1(rule_thickness,theta); pos2(rule_thickness,theta); +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,90); pos8(rule_thickness,90); +bskpoints(2,1,rule_thickness,0); bskpoints(4,3,0,rule_thickness); +bskpoints(6,5,rule_thickness,0); bskpoints(8,7,0,rule_thickness); +y10=y11=y12=y5r; z10=whatever[z1r,z2r]; z11=whatever[z3l,z4l]; z12=whatever[z3r,z4r]; +y13=y5l; z13=whatever[z3r,z4r]; y14=y7r; z14=whatever[z3r,z4r]; +y15=y16=y17=y18=y7l; z15=whatever[z3r,z4r]; z16=whatever[z3l,z4l]; z17=whatever[z1r,z2r]; +y19=y8r; y20=y5l; z18=whatever[z2l,z1l]; z19=whatever[z1l,z2l]; z20=whatever[z1l,z2l]; +y21=y5r; z21=whatever[z1l,z2l]; +filldraw z1r---obl(10,1r,11)---obl(11,10,3l)---z3l..z3r---obl(12,3l,5r)---z5r..z5l + ---obl(13,5l,14)---obl(14,13,7r)---z7r..z7l---obl(15,7l,4l)---z4rr..z4l + ---obl(16,4l,17)---obl(17,16,2r)---z2r..z2l---obl(18,2l,8l)---z8l..z8r + ---obl(19,8r,20)---obl(20,19,6l)---z6l..z6r---obl(21,6r,1r)---z1ll..cycle; +y0'=y0=y13; y0''=y0'''=y14; +z0=whatever[z1r,z2r]; z0'=whatever[z3l,z4l]; z0''=whatever[z3l,z4l]; z0'''=whatever[z1r,z2r]; +infill obl(0,0''',0')---obl(0',0,0'')---obl(0'',0',0''')---obl(0''',0'',0)---cycle; +penlabels(1,2,3,4,5,6,7,8); labels(0,0',0'',0''',10,11,12,13,14,15,16,17,18,19,20,21); +endchar; + +iff known chars.math_hash: +bskchar "Hash"; +beginchar(chars.math_hash,13u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +x1r-x3r=x2l-x4l=.35w; x1=x2; .5[x1,x3]=.5w; +y1r=y3r=h; y2l=y4l=-d; +lft x5=lft x7=u; rt x6=rt x8=w-u; +y5=y6; y7=y8; .5[y5,y7]=.5(h-d); y5-y7=.55x_height; +numeric theta; theta=180; +pos1(rule_thickness,theta); pos2(rule_thickness,theta); +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,90); pos8(rule_thickness,90); +bskpoints(2,1,rule_thickness,0); bskpoints(4,3,0,rule_thickness); +bskpoints(6,5,rule_thickness,0); bskpoints(8,7,0,rule_thickness); +y10=y11=y12=y5r; z10=whatever[z1r,z2r]; z11=whatever[z3l,z4l]; z12=whatever[z3r,z4r]; +y13=y5l; z13=whatever[z3r,z4r]; y14=y7r; z14=whatever[z3r,z4r]; +y15=y16=y17=y18=y7l; z15=whatever[z3r,z4r]; z16=whatever[z3l,z4l]; z17=whatever[z1r,z2r]; +y19=y8r; y20=y5l; z18=whatever[z2l,z1l]; z19=whatever[z1l,z2l]; z20=whatever[z1l,z2l]; +y21=y5r; z21=whatever[z1l,z2l]; +filldraw z1r---obl(10,1r,11)---obl(11,10,3l)---z3l..z3r---obl(12,3l,5r)---z5r..z5l + ---obl(13,5l,14)---obl(14,13,7r)---z7r..z7l---obl(15,7l,4l)---z4rr..z4l + ---obl(16,4l,17)---obl(17,16,2r)---z2r..z2l---obl(18,2l,8l)---z8l..z8r + ---obl(19,8r,20)---obl(20,19,6l)---z6l..z6r---obl(21,6r,1r)---z1ll..cycle; +y0'=y0=y13; y0''=y0'''=y14; +z0=whatever[z1r,z2r]; z0'=whatever[z3l,z4l]; z0''=whatever[z3l,z4l]; z0'''=whatever[z1r,z2r]; +infill obl(0,0''',0')---obl(0',0,0'')---obl(0'',0',0''')---obl(0''',0'',0)---cycle; +penlabels(1,2,3,4,5,6,7,8); labels(0,0',0'',0''',10,11,12,13,14,15,16,17,18,19,20,21); +endchar; + +iff known chars.math_varhash: +bskchar "Hash---alternative"; +beginchar(chars.math_varhash,13u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +x1r-x3r=x2l-x4l=.35w; rt x1r=w-u; lft x4l=u; +y1r=y3r=h; y2l=y4l=-d; +lft x5=lft x7=u; rt x6=rt x8=w-u; +y5=y6; y7=y8; .5[y5,y7]=.5(h-d); y5-y7=.55x_height; +numeric theta; theta=180; +pos1(rule_thickness,theta); pos2(rule_thickness,theta); +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,90); pos8(rule_thickness,90); +bskpoints(2,1,rule_thickness,0); bskpoints(4,3,0,rule_thickness); +bskpoints(6,5,rule_thickness,0); bskpoints(8,7,0,rule_thickness); +y10=y11=y12=y5r; z10=whatever[z1r,z2r]; z11=whatever[z3l,z4l]; z12=whatever[z3r,z4r]; +y13=y5l; z13=whatever[z3r,z4r]; y14=y7r; z14=whatever[z3r,z4r]; +y15=y16=y17=y18=y7l; z15=whatever[z3r,z4r]; z16=whatever[z3l,z4l]; z17=whatever[z1r,z2r]; +y19=y8r; y20=y5l; z18=whatever[z2l,z1l]; z19=whatever[z1l,z2l]; z20=whatever[z1l,z2l]; +y21=y5r; z21=whatever[z1l,z2l]; +filldraw z1r---obl(10,1r,11)---obl(11,10,3l)---z3l..z3r---obl(12,3l,5r)---z5r..z5l + ---obl(13,5l,14)---obl(14,13,7r)---z7r..z7l---obl(15,7l,4l)---z4rr..z4l + ---obl(16,4l,17)---obl(17,16,2r)---z2r..z2l---obl(18,2l,8l)---z8l..z8r + ---obl(19,8r,20)---obl(20,19,6l)---z6l..z6r---obl(21,6r,1r)---z1ll..cycle; +y0'=y0=y13; y0''=y0'''=y14; +z0=whatever[z1r,z2r]; z0'=whatever[z3l,z4l]; z0''=whatever[z3l,z4l]; z0'''=whatever[z1r,z2r]; +infill obl(0,0''',0')---obl(0',0,0'')---obl(0'',0',0''')---obl(0''',0'',0)---cycle; +penlabels(1,2,3,4,5,6,7,8); labels(0,0',0'',0''',10,11,12,13,14,15,16,17,18,19,20,21); +endchar; + +iff known chars.sign_zero_permile_sign: +bskchar "Zero for permile sign"; +beginchar(chars.sign_zero_permile_sign,7u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +bot y1b.l=0; lft x1a.l=u; +zeroent(1,hair,stem); +endchar; + +iff known chars.sign_percent: +bskchar "Percent sign"; +beginchar(chars.sign_percent,15u#,body_height#,0); uni "0x0025"; +adjust_fit(0,0); +numeric theta; +pickup tiny.nib; +top y1d.r=h; lft x1a.l=u; +bot y2b.l=0; rt x2c.r=w-u; +top y4=h; bot y3=0; x3=3u; x4=w-3u; +theta:=angle(z4-z3)-90; +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +zeroent(1,stem,hair); zeroent(2,hair,stem); +filldraw bskrule(3,4,rule_thickness,rule_thickness); +penlabels(3,4); +endchar; + +iff known chars.sign_abzueglich: +bskchar "Abzueglich sign"; +beginchar(chars.sign_abzueglich,8u#,body_height#,0); uni "0x2052"; +adjust_fit(0,0); +numeric theta; +pickup tiny.nib; +top y1=h-.5dot_size; lft x1=u+.5dot_size; +bot y2=.5dot_size; rt x2=w-u-.5dot_size; +top y4=h; bot y3=0; x3=u; x4=w-u; +theta:=angle(z4-z3)-90; +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +dot(1); dot(2); +filldraw bskrule(3,4,rule_thickness,rule_thickness); +penlabels(3,4); +endchar; + +iff known chars.sign_permile: +bskchar "One per thousand sign"; +beginchar(chars.sign_permile,21u#,body_height#,0); uni "0x2030"; +adjust_fit(0,0); +numeric theta; +pickup tiny.nib; +top y1d.r=h; lft x1a.l=u; +bot y2b.l=bot y3b.l=0; +rt x2c.r=lft x3a.l-1.5u; rt x3c.r=w-u; +zeroent(1,if monospace: .7\\fi stem,hair); zeroent(3,hair,if monospace: .7\\fi stem); +zeroent(2,hair,if monospace: .7\\fi stem); +top y5=h; bot y4=0; x4=2u; x5=.5[x2c,x3a]; +theta:=angle(z5-z4)-90; +pos4(rule_thickness,theta); pos5(rule_thickness,theta); +filldraw bskrule(4,5,rule_thickness,rule_thickness); +penlabels(4,5); +endchar; + +iff known chars.sign_pertenthousand: +bskchar "One per ten thousand sign"; +beginchar(chars.sign_pertenthousand,27u#,body_height#,0); uni "0x2031"; +adjust_fit(0,0); +numeric theta; +pickup tiny.nib; +top y1d.r=h; lft x1a.l=u; +bot y2b.l=bot y3b.l=bot y4b.l=0; +rt x2c.r=lft x3a.l-1.5u; rt x3c.r=lft x4a.l-1.5u; rt x4c.r=w-u; +zeroent(1,if monospace: .7\\fi stem,hair); zeroent(4,hair,if monospace: .7\\fi stem); +zeroent(3,hair,if monospace: .7\\fi stem); zeroent(2,hair,if monospace: .7\\fi stem); +top y6=h; bot y5=0; x5=2u; x6=.5[x2c,x3a]; +theta:=angle(z6-z5)-90; +pos5(rule_thickness,theta); pos6(rule_thickness,theta); +filldraw bskrule(5,6,rule_thickness,rule_thickness); +penlabels(5,6); +endchar; + +iff known chars.sign_french_quotes_left: +bskchar "French quotes left"; +beginchar(chars.sign_french_quotes_left,9u#,x_height#,0); uni "0x00AB"; +adjust_fit(0,0); +pickup tiny.nib; +top y1=top y3=h; bot y1'=bot y3'=0; lft x2l=u; rt x3r=w-u; +bskfrench(1,2); bskfrench(3,4); +endchar; + +iff known chars.sign_french_quotes_right: +bskchar "French quotes right"; +beginchar(chars.sign_french_quotes_right,9u#,x_height#,0); uni "0x00BB"; +adjust_fit(0,0); +pickup tiny.nib; +top y1=top y3=h; bot y1'=bot y3'=0; rt x2r=w-u; lft x3l=u; +bskfrenchr(1,2); bskfrenchr(3,4); +endchar; + +iff known chars.sign_french_quote_left: +bskchar "French quote left"; +beginchar(chars.sign_french_quote_left,4.5u#,x_height#,0); uni "0x2039"; +adjust_fit(0,0); +pickup tiny.nib; +top y1=h; bot y1'=0; lft x2l=u; +bskfrench(1,2);; +endchar; + +iff known chars.sign_french_quote_right: +bskchar "French quote right"; +beginchar(chars.sign_french_quote_right,4.5u#,x_height#,0); uni "0x203A"; +adjust_fit(0,0); +pickup tiny.nib; +top y1=h; bot y1'=0; rt x2r=w-u; +bskfrenchr(1,2); +endchar; + +iff known chars.sign_blank_space: +bskchar "Blank-space sign"; +beginchar(chars.sign_blank_space,9.5u#,.5x_height#,.5desc_depth#); uni "0x2423"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,0); pos2(hair,0); pos3(hair,0); pos4(hair,0); +top y1=top y4=h; bot y2=bot y3=-d; +x1l=x2l=u; x3r=x4r=w-x1l; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +y2r:=y3l:=y3+hair-currentbreadth; +filldraw z1l---obl(2l,1l,3)---obl(3r,2l,4r)---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(2ll,3rr); +endchar; + +iff known chars.sign_straight_quote: +bskchar "Straight single quote"; +beginchar(chars.sign_straight_quote,4.5u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(dot_size,0); pos2(hair,0); +x1=x1'=x2=.5w; top y1'=h; y1'-y2=comma_depth; y1'-y1=.5dot_size; +filldraw z2r{up}...{up}z1r...z1'...z1l{down}...{down}z2l..cycle; +penlabels(1,2); labels(1'); +endchar; + +iff known chars.sign_straight_quote_base: +bskchar "Straight single quote on baseline"; +beginchar(chars.sign_straight_quote_base,4.5u#,.5dot_size#,comma_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(dot_size,0); pos2(hair,0); +x1=x1'=x2=.5w; top y1'=h; y1'-y2=comma_depth; y1'-y1=.5dot_size; +filldraw z2r{up}...{up}z1r...z1'...z1l{down}...{down}z2l..cycle; +penlabels(1,2); labels(1'); +endchar; + +iff known chars.sign_straight_quotes: +bskchar "Straight double quotes"; +beginchar(chars.sign_straight_quotes,8u#,asc_height#,0); uni "non"; +italcorr asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(dot_size,0); pos2(hair,0); pos3(dot_size,0); pos4(hair,0); +x1=x1'=x2; top y1'=h; y1'-y2=comma_depth; y1'-y1=.5dot_size; +x3=x3'=x4; y3=y1; y3'=y1'; y4=y2; +.5[x1,x3]=.5w; lft x1l=1.5u; +filldraw z2r{up}...{up}z1r...z1'...z1l{down}...{down}z2l..cycle; +filldraw z4r{up}...{up}z3r...z3'...z3l{down}...{down}z4l..cycle; +penlabels(1,2,3,4); labels(1',3'); +endchar; + +iff known chars.sign_straight_quotes_base: +bskchar "Straight double quote on baseline"; +beginchar(chars.sign_straight_quotes_base,8u#,.5dot_size#,comma_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(dot_size,0); pos2(hair,0); pos3(dot_size,0); pos4(hair,0); +x1=x1'=x2; top y1'=h; y1'-y2=comma_depth; y1'-y1=.5dot_size; +x3=x3'=x4; y3=y1; y3'=y1'; y4=y2; +.5[x1,x3]=.5w; lft x1l=1.5u; +filldraw z2r{up}...{up}z1r...z1'...z1l{down}...{down}z2l..cycle; +filldraw z4r{up}...{up}z3r...z3'...z3l{down}...{down}z4l..cycle; +penlabels(1,2,3,4); labels(1',3'); +endchar; + +charscription(6u,x_height,0)( +pos1(stem,90); pos2(stem,90); +y1r=y2r=.6h; rt x2=w-u; +lft x1=.5u; +filldraw bskrule(1,2,hair,hair); +penlabels(1,2); +); + +iff known chars.sign_hyphen: +bskchar "Hyphen"; +beginchar(chars.sign_hyphen,6u#,x_height#,0); uni "0x002D"; +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.sign_hyphen_alt: +bskchar "Hyphen (at alternative char position)"; +beginchar(chars.sign_hyphen_alt,6u#,x_height#,0); uni "0x2010"; +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.sign_hyphen_soft: +bskchar "Soft hyphen"; +beginchar(chars.sign_hyphen_soft,6u#,x_height#,0); uni "0x00AD"; +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.sign_hyphenchar: +bskchar "Hyphenchar"; +beginchar(chars.sign_hyphenchar,3u#,x_height#,0); uni "non"; +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +charscription(6u,x_height,0)( +pos1(stem,90); pos2(stem,90); +pos3(stem,90); pos4(stem,90); +y1r=y2r=.6h; +y3r=y4r; y1l-y3r=.25x_height; +rt x2=w-u; +lft x1=.5u; x3=x1; x4=x2; +filldraw bskrule(1,2,hair,hair); +filldraw bskrule(3,4,hair,hair); +penlabels(1,2,3,4); +); + +iff known chars.sign_double_hyphen: +bskchar "Double hyphen"; +beginchar(chars.sign_double_hyphen,6u#,x_height#,0); uni "non"; +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.sign_double_hyphenchar: +bskchar "Double hyphenchar"; +beginchar(chars.sign_double_hyphenchar,3u#,x_height#,0); uni "non"; +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.sign_double_hyphen_obl: +bskchar "Oblique double hyphen"; +beginchar(chars.sign_double_hyphen_obl,6u#,x_height#,0); uni "0x2E17"; +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,90); pos2(stem,90); +pos3(stem,90); pos4(stem,90); +.5[y1r,y2r]=.6h; +y1l-y3r=y2l-y4r=2(y2r-y1r)=.25x_height; +rt x2=w-u; +lft x1=.5u; x3=x1; x4=x2; +filldraw bskrule(1,2,hair,hair); +filldraw bskrule(3,4,hair,hair); +penlabels(1,2,3,4); +endchar; + +iff known chars.sign_endash: +bskchar "En dash"; +beginchar(chars.sign_endash,9u#,x_height#,0); uni "0x2013"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos2(hair,90); +top y1r=top y2r=2/3h; +lft x1=if monospace: u else: 0 fi; x2=w-x1; +filldraw bskrule(1,2,.5hair,.5hair); +penlabels(1,2); endchar; + +iff known chars.sign_figdash: +bskchar "Figural dash"; +beginchar(chars.sign_figdash,9u#,x_height#,0); uni "0x2012"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos2(hair,90); +top y1r=top y2r=2/3h; +lft x1=0; x2=w-x1; +filldraw bskrule(1,2,.5hair,.5hair); +penlabels(1,2); endchar; + +iff known chars.sign_twelvedash: +bskchar "Twelve u dash"; +beginchar(chars.sign_twelvedash,12u#,x_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos2(hair,90); +top y1r=top y2r=2/3h; +lft x1=0; x2=w-x1; +filldraw bskrule(1,2,.5hair,.5hair); +penlabels(1,2); endchar; + +iff known chars.sign_themdash: +bskchar "Three quarters em dash"; +beginchar(chars.sign_themdash,13.5u#,x_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos2(hair,90); +top y1r=top y2r=2/3h; +lft x1=0; x2=w-x1; +filldraw bskrule(1,2,.5hair,.5hair); +penlabels(1,2); endchar; + +iff known chars.sign_emdash: +bskchar "Em dash"; +beginchar(chars.sign_emdash,18u#,x_height#,0); uni "0x2014"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos2(hair,90); +top y1r=top y2r=2/3h; +lft x1=0; rt x2=w; +filldraw bskrule(1,2,.5hair,.5hair); +penlabels(1,2); endchar; + +iff known chars.sign_quotdash: +bskchar "Quotation dash"; +beginchar(chars.sign_quotdash,22u#,x_height#,0); uni "0x2015"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); pos2(hair,90); +top y1r=top y2r=2/3h; +lft x1=0; rt x2=w; +filldraw bskrule(1,2,.5hair,.5hair); +penlabels(1,2); endchar; + +iff known chars.sign_underbar: +bskchar "Underbar sign"; +beginchar(chars.sign_underbar,9u#,0,desc_depth#-.5rule_thickness#); uni "0x005F"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +top y1r=top y2r=2/3h; +lft x1=0; x2=w-x1; +filldraw bskrule(1,2,.5hair,.5hair); +penlabels(1,2); +endchar; + +iff known chars.sign_underbar_double: +bskchar "Double underbar sign"; +beginchar(chars.sign_underbar_double,9u#,0,desc_depth#-.5rule_thickness#); uni "0x2017"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +top y1r=top y2r=2/3h; y3=y4; y3-y1=2.5rule_thickness; +lft x1=lft x3=0; x2=x4=w-x1; +filldraw bskrule(1,2,.5hair,.5hair); +filldraw bskrule(3,4,.5hair,.5hair); +penlabels(1,2,3,4); +endchar; + +iff known chars.sign_overbar: +bskchar "Overbar sign"; +beginchar(chars.sign_overbar,9u#,body_height#,0); uni "0x203E"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +top y1r=top y2r=h; +lft x1=0; x2=w-x1; +filldraw bskrule(1,2,.5hair,.5hair); +penlabels(1,2); +endchar; + +iff known chars.latin_grave: +bskchar "Grave accent"; +beginchar(chars.latin_grave,6u#,asc_height#,0); uni "0x0060"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +grave(0,1); +endchar; + +iff known chars.latin_grave_capital: +bskchar "Grave accent (capital)"; +beginchar(chars.latin_grave_capital,6u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +grave(0,1).capital; +endchar; + +iff known chars.latin_acute: +bskchar "Acute accent"; +beginchar(chars.latin_acute,6u#,asc_height#,0); uni "0x00B4"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +acute(0,1); +endchar; + +iff known chars.latin_acute_capital: +bskchar "Acute accent (capital)"; +beginchar(chars.latin_acute_capital,6u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +acute(0,1).capital; +endchar; + +iff known chars.latin_hacek: +bskchar "Check accent (hacek)"; +beginchar(chars.latin_hacek,7u#,asc_height#,0); uni "0x02C7"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +hacek(0,1,2); +endchar; + +iff known chars.latin_hacek_capital: +bskchar "Check accent (hacek) (capital)"; +beginchar(chars.latin_hacek_capital,7u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +hacek(0,1,2).capital; +endchar; + +iff known chars.sign_hacek: +bskchar "Hacek"; +beginchar(chars.sign_hacek,9u#,asc_height#,0); uni "0x02C7"; +adjust_fit(0,0); +pickup tiny.nib; +x0=u; x2=w-u; +hacek(0,1,2); +endchar; + +iff known chars.sign_circumflex: +bskchar "Circumflex"; +beginchar(chars.sign_circumflex,8u#,asc_height#,0); uni "0x005E"; +adjust_fit(0,0); +pickup tiny.nib; +lft x1=.5w+o; +circumflex(0,1,2); +endchar; + +iff known chars.latin_circumflex: +bskchar "Circumflex accent"; +beginchar(chars.latin_circumflex,7u#,asc_height#,0); uni "0x02C6"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +circumflex(0,1,2); +endchar; + +iff known chars.latin_circumflex_capital: +bskchar "Circumflex accent (capital)"; +beginchar(chars.latin_circumflex_capital,7u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +circumflex(0,1,2).capital; +endchar; + +iff known chars.latin_breve: +bskchar "Breve accent"; +beginchar(chars.latin_breve,7u#,asc_height#,0); uni "0x02D8"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +breve(0,1,2); +endchar; + +iff known chars.latin_breve_capital: +bskchar "Breve accent (capital)"; +beginchar(chars.latin_breve_capital,7u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +breve(0,1,2).capital; +endchar; + +iff known chars.sign_breve: +bskchar "Breve"; +beginchar(chars.sign_breve,9u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x2=w-u; x0=u; +breve(0,1,2); +endchar; + +iff known chars.sign_undertie: +bskchar "Undertie"; +beginchar(chars.sign_undertie,11u#,0,.75desc_depth#); uni "0x203F"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5[x0,x2]=.5w; y0=y2=h-rule_thickness; y1l=-d; +pos0(hair,10); pos2(hair,0); pos1(.75[hair,stem],90); +x2-x0=w-2u; +y2r:=y2r-.5tiny; +filldraw z0l..z1l..z2r--z2l..z1r..z0r--cycle; +penlabels(0,1,2); +endchar; + +iff known chars.sign_undertie_inv: +bskchar "Inverted undertie"; +beginchar(chars.sign_undertie_inv,11u#,0,.75desc_depth#); uni "0x2054"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5[x0,x2]=.5w; y1l=h-rule_thickness; y0=y2=-d; +pos0(hair,-10); pos2(hair,0); pos1(.75[hair,stem],270); +x2-x0=w-2u; +y2r:=y2r-.5tiny; +filldraw z0l..z1l..z2r--z2l..z1r..z0r--cycle; +penlabels(0,1,2); +endchar; + +iff known chars.sign_tie: +bskchar "Character tie"; +beginchar(chars.sign_tie,11u#,body_height#,0); uni "0x2040"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5[x0,x2]=.5w; y1l=h; y0=y2=1/2[x_height,top y1]; +pos0(hair,-10); pos2(hair,0); pos1(.75[hair,stem],270); +x2-x0=w-2u; +y2r:=y2r-.5tiny; +filldraw z0l..z1l..z2r--z2l..z1r..z0r--cycle; +penlabels(0,1,2); +endchar; + +iff known chars.sign_closeup: +bskchar "Close up sign"; +beginchar(chars.sign_closeup,11u#,1/3[x_height#,asc_height#],0); uni "0x2050"; +adjust_fit(0,0); +pickup tiny.nib; +pos0(hair,10); pos2(hair,0); pos1(.75[hair,stem],90); +pos3(hair,-10); pos5(hair,0); pos4(.75[hair,stem],270); +x1=.5[x0,x2]=x4=.5[x3,x5]=.5w; y0=y2; y1l=-d; y4l=h; y3=y5; .5[y0,y3]=.5[y1,y4]; y5-y2=3rule_thickness+tiny; +x2-x0=x5-x3=w-2u; +y2r:=y2r-.5tiny; y5r:=y5r-.5tiny; +filldraw z0l..z1l..z2r--z2l..z1r..z0r--cycle; +filldraw z3l..z4l..z5r--z5l..z4r..z3r--cycle; +penlabels(0,1,2,3,4,5); +endchar; + +iff known chars.latin_inverted_breve: +bskchar "Inverted breve accent"; +beginchar(chars.latin_inverted_breve,7u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +tieacc(0,1,2); +endchar; + +iff known chars.latin_inverted_breve_capital: +bskchar "Inverted breve accent (capital)"; +beginchar(chars.latin_inverted_breve_capital,7u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=.5w; +tieacc(0,1,2).capital; +endchar; + +iff known chars.latin_tie: +bskchar "Tie accent"; +beginchar(chars.latin_tie,7u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=w; x2-x0=6u; +tieacc(0,1,2); +endchar; + +iff known chars.latin_tie_capital: +bskchar "Tie accent (capital)"; +beginchar(chars.latin_tie_capital,7u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=w; x2-x0=6u; +tieacc(0,1,2).capital; +endchar; + +iff known chars.latin_macron: +bskchar "Macron accent"; +beginchar(chars.latin_macron,7u#,.5[asc_height#,x_height#],0); uni "0x00AF"; +adjust_fit(0,0); +pickup tiny.nib; +lft x1=u; +macron(0,1); +endchar; + +iff known chars.latin_macron_capital: +bskchar "Macron accent (capital)"; +beginchar(chars.latin_macron_capital,7u#,Acc_height#-.1x_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x1=u; +macron(0,1); +endchar; + +iff known chars.latin_ring: +bskchar "Ring accent (krouzek)"; +beginchar(chars.latin_ring,6u#,asc_height#,0); uni "0x02DA"; +adjust_fit(0,0); +pickup tiny.nib; +x0=.5w; +ring(0,1); +endchar; + +iff known chars.latin_ring_capital: +bskchar "Ring accent (capital)"; +beginchar(chars.latin_ring_capital,6u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x0=.5w; +ring(0,1).capital; +endchar; + +iff known chars.latin_dot_above: +bskchar "Dot accent"; +beginchar(chars.latin_dot_above,6u#,asc_height#,0); uni "0x02D9"; +adjust_fit(0,0); +pickup tiny.nib; +x0=.5w; +dotabove(0); +endchar; + +iff known chars.latin_dot_above_capital: +bskchar "Dot accent (capital)"; +beginchar(chars.latin_dot_above_capital,6u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x0=.5w; +dotabove(0); +endchar; + +iff known chars.latin_umlaut: +bskchar "Umlaut accent"; +beginchar(chars.latin_umlaut,8u#,asc_height#,0); uni "0x00A8"; +adjust_fit(0,0); +pickup tiny.nib; +.5[x0,x1]=.5w; +umlaut(0,1); +endchar; + +iff known chars.latin_umlaut_capital: +bskchar "Umlaut accent (capital)"; +beginchar(chars.latin_umlaut_capital,8u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +.5[x0,x1]=.5w; +umlaut(0,1); +endchar; + +iff known chars.latin_tilde: +bskchar "Tilde accent"; +beginchar(chars.latin_tilde,8u#,asc_height#,0); uni "0x02DC"; +adjust_fit(0,0); +pickup tiny.nib; +tilde(0,1); +endchar; + +iff known chars.latin_tilde_capital: +bskchar "Tilde accent (capital)"; +beginchar(chars.latin_tilde_capital,8u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +tilde(0,1).capital; +endchar; + +iff known chars.latin_hungarian_umlaut: +bskchar "Hungarian umlaut accent"; +beginchar(chars.latin_hungarian_umlaut,6u#,asc_height#,0); uni "0x02DD"; +adjust_fit(0,0); +pickup tiny.nib; +h_umlaut(0,1,0',1',.2w); +endchar; + +iff known chars.latin_hungarian_umlaut_capital: +bskchar "Hungarian umlaut accent (capital)"; +beginchar(chars.latin_hungarian_umlaut_capital,6u#,Acc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +h_umlaut(0,1,0',1',.2w).capital; +endchar; + +iff known chars.polish_cross: +bskchar "Cross for Polish l"; +beginchar(chars.polish_cross,6u#,x_height#,0); uni "non"; +adjust_fit(serif_fit#,serif_fit#); +pickup tiny.nib; +.5[x1,x2]=.5w; +pol_cross(1,2); +endchar; + +iff known chars.latin_ogonek: +bskchar "Ogonek accent"; +beginchar(chars.latin_ogonek,7u#,0,.85desc_depth#); uni "0x02DB"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,0); pos2(curve,0); pos3(hair,45); pos4(hair,160); +x1=3.5u; x2l=2u; x3=w-2u; rt x4l=w-.5u; +y1=0; y2=-.5d; bot y3l=-d; y4=-2/3d; +filldraw z1l{z2l-z1r}..z2l...z3l..{z1-z2}z4l..z4r{z2-z1}..z3r..z2r..z1r&z1r..z1+.5o*up..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.latin_cedilla: +bskchar "Cedilla accent"; +beginchar(chars.latin_cedilla,6u#,0,.65desc_depth#); uni "0x00B8"; +adjust_fit(0,0); +pickup tiny.nib; +path p; oblu:=3oblu; +pos1(.5stem,0); pos2(.5stem,0); pos3(.8stem,0); pos4(.5stem,-110); +x1r=x2r=.5w; y1=0; y2=-hair; rt x3r=w-u; y3=-.5d; +lft x4r=u; +y4r=-d; +p:=z2r..{down}z3r..{left}z4r..{right}z4l..{up}z3l..z2l--z1l; +filldraw z1r{down}..subpath (rundy(p,0),infinity) of p--cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.latin_cedilla_capital: +bskchar "Cedilla accent (capital)"; +beginchar(chars.latin_cedilla_capital,6u#,0,.65desc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; oblu:=3oblu; +pos1(.5stem,0); pos2(.5stem,0); pos3(stem,0); pos4(.5stem,-110); +x1r=x2r=.5w; y1=0; y2=-hair; rt x3r=w-u; y3=-.5d; +lft x4r=u; +y4r=-d; +p:=z2r..{down}z3r..{left}z4r..{right}z4l..{up}z3l..z2l--z1l; +filldraw z1r{down}..subpath (rundy(p,0),infinity) of p--cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_lattice_left: +bskchar "Left turnstile"; +beginchar(chars.math_lattice_left,12u#,asc_height#,0); uni "0x22A2"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4=.5[y1,y2]; +lft x1l=lft x2l=u; rt x4=w-u; x3=x2r; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,2r)--- + z2r..z2ll---z1l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_assertion: +bskchar "Assertion sign"; +beginchar(chars.math_assertion,8u#,asc_height#,0); uni "0x22A6"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4=.5[y1,y2]; +lft x1l=lft x2l=u; rt x4=w-u; x3=x2r; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,2r)--- + z2r..z2ll---z1l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_lattice_left_neg: +bskchar "Negated left turnstile"; +beginchar(chars.math_lattice_left_neg,13u#,asc_height#,0); uni "0x22AC"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4=.5[y1,y2]; +lft x1l=lft x2l=2u; rt x4=w-u; x3=x2r; +bot y5=-d; top y6=h; lft x5=.5u; x6=w-2u; +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +bskpoints(5,6,rule_thickness,rule_thickness); +x1'l=x1'r=x1r; z1'l=whatever[z5l,z6l]; z1'r=whatever[z5r,z6r]; +x2'l=x2'r=x1l; z2'l=whatever[z5l,z6l]; z2'r=whatever[z5r,z6r]; +y3'l=y3'r=y3r; z3'l=whatever[z5l,z6l]; z3'r=whatever[z5r,z6r]; +y4'l=y4'r=y3l; z4'l=whatever[z5l,z6l]; z4'r=whatever[z5r,z6r]; +filldraw z1rr---obl(1'r,1r,4'r)---obl(4'r,1'r,4l)---z4ll..z4r + ---obl(3'r,4r,6r)---z6r..z6ll---obl(3'l,6l,3r)---obl(3r,4r,2r) + ---z2r..z2ll---obl(2'l,2ll,5l)---z5l..z5rr---tobl(2'r,5rr,1l)---z1l..cycle; +infill obl(3l,4'l,1'l)---obl(1'l,3l,4'l)---obl(4'l,1'l,3l)---cycle; +penlabels(1,1',2,2',3,3',4,4',5,6); +endchar; + +iff known chars.math_lattice_right: +bskchar "Right turnstile"; +beginchar(chars.math_lattice_right,12u#,asc_height#,0); uni "0x22A3"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4=.5[y1,y2]; +rt x1r=rt x2r=w-u; lft x4=u; x3=x2l; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---z4r..z4ll--- + obl(3l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_lattice_right_short: +bskchar "Short right turnstile"; +beginchar(chars.math_lattice_right_short,8u#,asc_height#,0); uni "0x2ADE"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4=.5[y1,y2]; +rt x1r=rt x2r=w-u; lft x4=u; x3=x2l; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---z4r..z4ll--- + obl(3l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_intercalate: +bskchar "Intercalate"; +beginchar(chars.math_intercalate,9u#,asc_height#,0); uni "0x22BA"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +top y1r=top y2r=h; y3=y1l; bot y4=-d; +x3=x4=.5[x1,x2]; lft x1=u; rt x2=w-u; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---z4r..z4ll--- + obl(3l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_lattice_top: +bskchar "Lattice top"; +beginchar(chars.math_lattice_top,14u#,asc_height#,0); uni "0x22A4"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +top y1r=top y2r=h; y3=y1l; bot y4=-d; +x3=x4=.5[x1,x2]; lft x1=u; rt x2=w-u; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---z4r..z4ll--- + obl(3l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_lattice_top_short: +bskchar "Short lattice top"; +beginchar(chars.math_lattice_top_short,14u#,x_height#,0); uni "0x2ADF"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +top y1r=top y2r=h; y3=y1l; bot y4=-d; +x3=x4=.5[x1,x2]; lft x1=u; rt x2=w-u; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---z4r..z4ll--- + obl(3l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_lattice_top_short_overbar: +bskchar "Short lattice top with overbar"; +beginchar(chars.math_lattice_top_short_overbar,14u#,.8asc_height#+rule_thickness#,0); uni "0x2AE7"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1r=top y2r=x_height; y3=y1l; bot y4=-d; top y5r=top y6r=h; +x3=x4=.5[x1,x2]; lft x1=lft x5=u; rt x2=rt x6=w-u; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---z4r..z4ll--- + obl(3l,4l,1l)---z1l..cycle; +filldraw bskrule(5,6,hair,hair); +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_lattice_top_double: +bskchar "Double lattice top"; +beginchar(chars.math_lattice_top_double,14u#,asc_height#,0); uni "0x2AEA"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,0); pos6(rule_thickness,0); +top y1r=top y2r=h; y3=y5=y1l; bot y4=bot y6=-d; +x3=x4; x5=x6; .5[x3,x5]=.5w; x5-x3=4u; lft x1=u; rt x2=w-u; +bskpoints(3,4,hair,0); bskpoints(5,6,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(5r,2l,6r)---z6r..z6ll---obl(5l,6l,3r) + ---obl(3r,5l,4r)---z4r..z4ll---obl(3l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_lattice_top_short_bottom: +bskchar "Short lattice top above short lattice bottom"; +beginchar(chars.math_lattice_top_short_bottom,14u#,v_center(2x_height#+2rule_thickness#)); uni "0x2AE9"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,270); pos6(rule_thickness,270); +pos7(rule_thickness,0); pos8(rule_thickness,0); +top y1r=top y2r=math_axis-rule_thickness; y3=y1l; bot y4=-d; +x3=x4=.5[x1,x2]; lft x1=u; rt x2=w-u; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---z4r..z4ll--- + obl(3l,4l,1l)---z1l..cycle; +bot y5r=bot y6r=math_axis+rule_thickness; y7=y5l; top y8=h; +x7=x8=.5[x5,x6]; lft x5=u; rt x6=w-u; +bskpoints(7,8,hair,0); bskpoints(5,6,hair,hair); +filldraw z5rr---z6r..z6ll---obl(7r,6l,8r)---z8r..z8ll--- + obl(7l,8l,5l)---z5l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_lattice_top_neg: +bskchar "Negated lattice top"; +beginchar(chars.math_lattice_top_neg,14u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; oblu.more:=3f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +top y1r=top y2r=h; y3=y1l; bot y4=-d; +x3=x4=.5[x1,x2]; lft x1=u; rt x2=w-u; +bot y5=-d; top y6=y2l-rule_thickness; x6=w-2u; .5[x5,x6]=x4; +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +x6'l=x6'r=x4r; x5'l=x5'r=x4l; +z5'l=whatever[z5l,z6l]; z5'r=whatever[z5r,z6r]; +z6'l=whatever[z5l,z6l]; z6'r=whatever[z5r,z6r]; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +bskpoints(5,6,rule_thickness,rule_thickness); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---obl(6'l,3r,6ll)---z6ll..z6r + ---obl(6'r,6r,4r).more---z4r..z4ll---obl(5'r,4l,5r)---z5rr..z5l + ---obl(5'l,5l,3l).more---obl(3l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4,5,5',6,6'); labels(1rr,5rr,6ll); +endchar; + +iff known chars.math_lattice_bottom: +bskchar "Lattice bottom"; +beginchar(chars.math_lattice_bottom,14u#,asc_height#,0); uni "0x22A5"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,270); pos2(rule_thickness,270); +pos3(rule_thickness,0); pos4(rule_thickness,0); +bot y1r=bot y2r=-d; y3=y1l; top y4=h; +x3=x4=.5[x1,x2]; lft x1=u; rt x2=w-u; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---z4r..z4ll--- + obl(3l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_lattice_bottom_short: +bskchar "Short lattice bottom"; +beginchar(chars.math_lattice_bottom_short,14u#,x_height#,0); uni "0x2AE0"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,270); pos2(rule_thickness,270); +pos3(rule_thickness,0); pos4(rule_thickness,0); +bot y1r=bot y2r=-d; y3=y1l; top y4=h; +x3=x4=.5[x1,x2]; lft x1=u; rt x2=w-u; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---z4r..z4ll--- + obl(3l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_lattice_bottom_short_underbar: +bskchar "Short lattice bottom with underbar"; +beginchar(chars.math_lattice_bottom_short_underbar,14u#,.8asc_height#+rule_thickness#,0); uni "0x2AE8"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,270); pos2(rule_thickness,270); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,90); pos6(rule_thickness,90); +bot y1r=bot y2r=-d+rule_thickness+(.8asc_height-x_height); y3=y1l; top y4=h; +bot y5l=bot y6l=-d; +x3=x4=.5[x1,x2]; lft x1=lft x5=u; rt x2=rt x6=w-u; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---z4r..z4ll--- + obl(3l,4l,1l)---z1l..cycle; +filldraw bskrule(5,6,hair,hair); +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_perpendicular: +bskchar "Perpendicular"; +beginchar(chars.math_perpendicular,13u#,asc_height#,0); uni "0x27C2"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,270); pos2(rule_thickness,270); +pos3(rule_thickness,0); pos4(rule_thickness,0); +bot y1r=bot y2r=-d; y3=y1l; top y4=h; +x3=x4=.5[x1,x2]; lft x1=u; rt x2=w-u; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---z4r..z4ll--- + obl(3l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_lattice_bottom_neg: +bskchar "Negated lattice bottom"; +beginchar(chars.math_lattice_bottom_neg,14u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; oblu.more:=3f_obl; +pos1(rule_thickness,270); pos2(rule_thickness,270); +pos3(rule_thickness,0); pos4(rule_thickness,0); +bot y1r=bot y2r=-d; y3=y1l; top y4=h; +x3=x4=.5[x1,x2]; lft x1=u; rt x2=w-u; +bot y5=y1l+rule_thickness; top y6=h; x6=w-2u; .5[x5,x6]=x4; +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +x6'l=x6'r=x4r; x5'l=x5'r=x4l; +z5'l=whatever[z5l,z6l]; z5'r=whatever[z5r,z6r]; +z6'l=whatever[z5l,z6l]; z6'r=whatever[z5r,z6r]; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +bskpoints(5,6,rule_thickness,rule_thickness); +filldraw z1rr---z2r..z2ll---obl(3r,2l,4r)---obl(6'r,3r,6r)---z6r..z6ll + ---obl(6'l,6l,4r).more---z4r..z4ll---obl(5'l,4l,5l)---z5l..z5rr + ---obl(5'r,5r,3l).more---obl(3l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4,5,5',6,6'); labels(1rr,5rr,6ll); +endchar; + +iff known chars.math_forces: +bskchar "Forces"; +beginchar(chars.math_forces,12u#,asc_height#,0); uni "0x22A9"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); pos6(rule_thickness,0); +bot y1=-d; top y2=h; y3=y4=.5[y1,y2]; +lft x1l=lft x2l=4u; rt x4=w-u; x3=x2r; +lft x5l=lft x6l=u; y5=y1; y6=y2; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,2r)--- + z2r..z2ll---z1l..cycle; +filldraw bskrule(5,6,hair,hair); +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_forces_through: +bskchar "Forces with bar through"; +beginchar(chars.math_forces_through,12u#,asc_height#,0); uni "0x2AE6"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos3'(rule_thickness,90); +pos4(rule_thickness,90); pos4'(rule_thickness,90); +pos5(rule_thickness,0); pos6(rule_thickness,0); +bot y1=-d; top y2=h; y3=y3'=y4=y4'=.5[y1,y2]; +lft x1l=lft x2l=4u; rt x4=w-u; x3=x2r; x3'=x1l; x4'=x5r; +lft x5l=lft x6l=u; y5=y1; y6=y2; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +bskpoints(5,6,hair,hair); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,2r)---z2r..z2ll + ---obl(3'r,2l,4'r)---obl(4'r,3'r,6r)---z6r..z6ll---z5l..z5rr + ---obl(4'l,5r,3'l)---obl(3'l,4'l,1l)---z1l..cycle; +penlabels(1,2,3,3',4,5,6); +endchar; + +iff known chars.math_forces_neg: +bskchar "Negated forces"; +beginchar(chars.math_forces_neg,13u#,asc_height#,0); uni "0x22AE"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; oblu.more:=3f_obl; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); pos6(rule_thickness,0); +bot y1=-d; top y2=h; y3=y4=.5[y1,y2]; +lft x1l=lft x2l=5u; rt x4=w-u; x3=x2r; +lft x5l=lft x6l=2u; y5=y1; y6=y2; +bot y7=-d; top y8=h; lft x7=.5u; x8=w-2u; +pos7(rule_thickness,angle(z7-z8)+90); pos8(rule_thickness,angle(z7-z8)+90); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +x1'l=x1'r=x1l; z1'l=whatever[z7l,z8l]; z1'r=whatever[z7r,z8r]; +y2'l=y2'r=y3r; z2'l=whatever[z7l,z8l]; z2'r=whatever[z7r,z8r]; +x3'l=x3'r=x5r; z3'l=whatever[z7l,z8l]; z3'r=whatever[z7r,z8r]; +x4'l=x4'r=x5l; z4'l=whatever[z7l,z8l]; z4'r=whatever[z7r,z8r]; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(2'r,4r,8r).more---z8r..z8ll + ---z2'l+oblu.more*unitvector(z8-z7)..z3l+oblu.more*up---z2r..z2ll---obl(1'l,2l,3'l) + ---obl(3'l,2'l,6r).more---z6r..z6ll---obl(4'l,6l,7l)---z7l..z7rr---tobl(4'r,7rr,5l) + ---z5l..z5rr---obl(3'r,5r,1'r)---obl(1'r,3'r,1l)---z1l..cycle; +penlabels(1,1',2,2',3,3',4,4',5,6,7,8); +endchar; + +iff known chars.math_forces_reversed: +bskchar "Reversed forces"; +beginchar(chars.math_forces_reversed,12u#,asc_height#,0); uni "0x2AE3"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,180); pos2(rule_thickness,180); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,180); pos6(rule_thickness,180); +bot y1=-d; top y2=h; y3=y4=.5[y1,y2]; +rt x1l=rt x2l=w-4u; lft x4=u; x3=x2r; +rt x5l=rt x6l=w-u; y5=y1; y6=y2; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,2r)--- + z2r..z2ll---z1l..cycle; +filldraw bskrule(5,6,hair,hair); +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_forces_bar: +bskchar "Forces with extra bar"; +beginchar(chars.math_forces_bar,15u#,asc_height#,0); uni "0x22AA"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); pos6(rule_thickness,0); +pos7(rule_thickness,0); pos8(rule_thickness,0); +bot y1=-d; top y2=h; y3=y4=.5[y1,y2]; +lft x1l=lft x2l=7u; rt x4=w-u; x3=x2r; +lft x5l=lft x6l=u; y5=y7=y1; y6=y8=y2; +x7=.5[x5,x1]; x8=.5[x6,x2]; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,2r)--- + z2r..z2ll---z1l..cycle; +filldraw bskrule(5,6,hair,hair); +filldraw bskrule(7,8,hair,hair); +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_forces_bar_reversed: +bskchar "Reversed forces with extra bar"; +beginchar(chars.math_forces_bar_reversed,15u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,180); pos2(rule_thickness,180); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,180); pos6(rule_thickness,180); +pos7(rule_thickness,180); pos8(rule_thickness,180); +bot y1=-d; top y2=h; y3=y4=.5[y1,y2]; +rt x1l=rt x2l=w-7u; lft x4=u; x3=x2r; +rt x5l=rt x6l=w-u; y5=y7=y1; y6=y8=y2; +x7=.5[x5,x1]; x8=.5[x6,x2]; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,2r)--- + z2r..z2ll---z1l..cycle; +filldraw bskrule(5,6,hair,hair); +filldraw bskrule(7,8,hair,hair); +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_forces_hbar: +bskchar "Forces with extra horizontal bar"; +beginchar(chars.math_forces_hbar,13u#,asc_height#,0); uni "0x22AB"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); pos6(rule_thickness,0); +pos7(rule_thickness,90); pos8(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4; y7=y8; .5[y3,y7]=.5[y1,y2]; y7-y3=.55x_height; +lft x1l=lft x2l=5u; rt x4=rt x8=w-u; x3=x7=x2r; +lft x5l=lft x6l=2u; y5=y1; y6=y2; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +bskpoints(7,8,hair,hair); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,7l)---obl(7l,3r,8l)---z8ll + ..z8r---obl(7r,8r,2r)---z2r..z2ll---z1l..cycle; +filldraw bskrule(5,6,hair,hair); +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_forces_hbar_neg: +bskchar "Negated forces with extra horizontal bar"; +beginchar(chars.math_forces_hbar_neg,13u#,asc_height#,0); uni "0x22AF"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); pos6(rule_thickness,0); +pos7(rule_thickness,90); pos8(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4; y7=y8; .5[y3,y7]=.5[y1,y2]; y7-y3=.55x_height; +lft x1l=lft x2l=5u; rt x4=rt x8=w-u; x3=x7=x2r; +lft x5l=lft x6l=2u; y5=y1; y6=y2; +bot y9=-d; top y10=h; lft x9=.5u; x10=w-2u; +pos9(rule_thickness,angle(z9-z10)+90); pos10(rule_thickness,angle(z9-z10)+90); +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +bskpoints(5,6,hair,hair); bskpoints(7,8,hair,hair); +bskpoints(9,10,rule_thickness,rule_thickness); +x1'l=x1'r=x1r; z1'l=whatever[z9l,z10l]; z1'r=whatever[z9r,z10r]; +y2'l=y2'r=y7l; z2'l=whatever[z9l,z10l]; z2'r=whatever[z9r,z10r]; +y3'l=y3'r=y7r; z3'l=whatever[z9l,z10l]; z3'r=whatever[z9r,z10r]; +x4'l=x4'r=x1l; z4'l=whatever[z9l,z10l]; z4'r=whatever[z9r,z10r]; +x5'l=x5'r=x5r; z5'l=whatever[z9l,z10l]; z5'r=whatever[z9r,z10r]; +x6'l=x6'r=x5l; z6'l=whatever[z9l,z10l]; z6'r=whatever[z9r,z10r]; +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---z3r+oblu*right..z1'r+oblu*unitvector(z10-z9) + ---obl(2'r,1'r,8l)---z8ll..z8r---obl(3'r,8r,10r)---z10r..z10ll + ---ifobl(3'l,7r,10l,2r,,)---z2r..z2ll---obl(4'l,2l,5'l)---obl(5'l,4'l,6r) + ---z6r..z6ll---obl(6'l,6l,9l)---z9l..z9rr---tobl(6'r,9rr,5l)---z5l..z5rr + ---obl(5'r,5r,4'r)---obl(4'r,5'r,1l)---z1l..cycle; +oblu:=1.75f_obl; +infill ifobl(7l,1'l,3'l,3'l,,)---obl(3'l,1'l,7l)---cycle; +penlabels(1,1',2,2',3,3',4,4',5,6,6',7,8,9,10); +endchar; + +iff known chars.math_forces_hbar_reversed: +bskchar "Reversed forces with extra horizontal bar"; +beginchar(chars.math_forces_hbar_reversed,13u#,asc_height#,0); uni "0x2AE5"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,180); pos2(rule_thickness,180); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,180); pos6(rule_thickness,180); +pos7(rule_thickness,90); pos8(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4; y7=y8; .5[y3,y7]=.5[y1,y2]; y7-y3=.55x_height; +rt x1l=rt x2l=w-5u; lft x4=lft x8=u; x3=x7=x2r; +rt x5l=rt x6l=w-2u; y5=y1; y6=y2; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); +bskpoints(7,8,hair,hair); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,7l)---obl(7l,3r,8l)---z8ll + ..z8r---obl(7r,8r,2r)---z2r..z2ll---z1l..cycle; +filldraw bskrule(5,6,hair,hair); +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_models: +bskchar "Models"; +beginchar(chars.math_models,8u#,asc_height#,0); uni "0x22A7"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4; y5=y6; .5[y5,y3]=.5[y1,y2]; y5-y3=.55x_height; +lft x1l=lft x2l=u; rt x4=rt x6=w-u; x3=x5=x2r; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); bskpoints(5,6,hair,0); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,2r) + ---obl(5l,3r,6l)---z6ll..z6r---obl(5r,6r,2r)---z2r..z2ll---z1l..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_models_bar: +bskchar "Models with hbar"; +beginchar(chars.math_models_bar,8u#,asc_height#,0); uni "0x2AE2"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,90); pos8(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4; y5=y6; y7=y8; .5[y7,y3]=y5=.5[y1,y2]; y5-y3=.55x_height; +lft x1l=lft x2l=u; rt x4=rt x6=rt x8=w-u; x3=x5=x7=x2r; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); bskpoints(5,6,hair,0); bskpoints(7,8,hair,0); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,2r) + ---obl(5l,3r,6l)---z6ll..z6r---obl(5r,6r,7l) + ---obl(7l,5r,8l)---z8ll..z8r---obl(7r,8r,2r)---z2r..z2ll---z1l..cycle; +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_satisfies: +bskchar "Satisfies"; +beginchar(chars.math_satisfies,12u#,asc_height#,0); uni "0x22A8"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4; y5=y6; .5[y5,y3]=.5[y1,y2]; y5-y3=.55x_height; +lft x1l=lft x2l=u; rt x4=rt x6=w-u; x3=x5=x2r; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); bskpoints(5,6,hair,0); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,2r) + ---obl(5l,3r,6l)---z6ll..z6r---obl(5r,6r,2r)---z2r..z2ll---z1l..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_satisfies_neg: +bskchar "Negated satisfies"; +beginchar(chars.math_satisfies_neg,13u#,asc_height#,0); uni "0x22AD"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4; y5=y6; .5[y5,y3]=.5[y1,y2]; y5-y3=.55x_height; +lft x1l=lft x2l=2u; rt x4=rt x6=w-u; x3=x5=x2r; +bot y7=-d; top y8=h; lft x7=.5u; x8=w-2u; +pos7(rule_thickness,angle(z7-z8)+90); pos8(rule_thickness,angle(z7-z8)+90); +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); bskpoints(5,6,hair,0); +bskpoints(7,8,rule_thickness,rule_thickness); +x1'l=x1'r=x1r; z1'l=whatever[z7l,z8l]; z1'r=whatever[z7r,z8r]; +y2'l=y2'r=y3l; z2'l=whatever[z7l,z8l]; z2'r=whatever[z7r,z8r]; +y3'l=y3'r=y3r; z3'l=whatever[z7l,z8l]; z3'r=whatever[z7r,z8r]; +y4'l=y4'r=y5l; z4'l=whatever[z7l,z8l]; z4'r=whatever[z7r,z8r]; +y5'l=y5'r=y5r; z5'l=whatever[z7l,z8l]; z5'r=whatever[z7r,z8r]; +x6'l=x6'r=x1l; z6'l=whatever[z7l,z8l]; z6'r=whatever[z7r,z8r]; +filldraw z1rr---obl(1'r,1r,2'r)---obl(2'r,1'r,4l)---z4ll..z4r---obl(3'r,4r,4'r) + ---obl(4'r,3'r,6l)---z6ll..z6r---obl(5'r,6r,8r)---z8r..z8ll---obl(5'l,8l,5r) + ---obl(5r,5'l,2r)---z2r..z2ll---obl(6'l,2l,7l)---z7l..z7rr---tobl(6'r,7rr,1l) + ---z1l..cycle; +infill obl(5l,4'l,3r)---z3r+oblu*up..z3'l+oblu*unitvector(z8-z7)---obl(4'l,3'l,5l)---cycle; +penlabels(1,1',2,2',3,3',4,4',5,5',6,7,7',8); +endchar; + +iff known chars.math_satisfies_reversed: +bskchar "Reversed satisfies"; +beginchar(chars.math_satisfies_reversed,12u#,asc_height#,0); uni "0x2AE4"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,180); pos2(rule_thickness,180); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +bot y1=-d; top y2=h; y3=y4; y5=y6; .5[y5,y3]=.5[y1,y2]; y5-y3=.55x_height; +rt x1l=rt x2l=w-u; lft x4=lft x6=u; x3=x5=x2r; +bskpoints(3,4,hair,0); bskpoints(1,2,hair,hair); bskpoints(5,6,hair,0); +filldraw z1rr---obl(3l,1r,4l)---z4ll..z4r---obl(3r,4r,2r) + ---obl(5l,3r,6l)---z6ll..z6r---obl(5r,6r,2r)---z2r..z2ll---z1l..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_triangle_up: +bskchar "Big triangle up"; +beginchar(chars.math_triangle_up,17u#,asc_height#,desc_depth#); uni "0x25B3"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; rt x2=w-u; x3=.5[x1,x2]; +bot y1=bot y2=0; top y3=h+o; +y1'=y2'=y1+lw; +x1'-x1=x2-x2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_right: +bskchar "Triangle pointing right"; +beginchar(chars.math_triangle_right,x_height#+2u#,v_center(x_height#)); uni "non"; %22B3? +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; +top y1=h; bot y2=-d; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_left: +bskchar "Triangle pointing left"; +beginchar(chars.math_triangle_left,x_height#+2u#,v_center(x_height#)); uni "non"; %22B2? +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +rt x1=w-u; x2=x1; y3=.5[y1,y2]; lft x3=u-hair; +top y1=h; bot y2=-d; +x1'=x2'=x1-lw; +y1'-y1=y2-y2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_black_right: +bskchar "Black triangle pointing right"; +beginchar(chars.math_triangle_black_right,x_height#+2u#,v_center(x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; +top y1=h; bot y2=-d; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_black_left: +bskchar "Black triangle pointing left"; +beginchar(chars.math_triangle_black_left,x_height#+2u#,v_center(x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +rt x1=w-u; x2=x1; y3=.5[y1,y2]; lft x3=u-hair; +top y1=h; bot y2=-d; +x1'=x2'=x1-lw; +y1'-y1=y2-y2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_right_isosceles: +bskchar "Isosceles triangle pointing right"; +beginchar(chars.math_triangle_right_isosceles,13u#,v_center(1.2x_height#)); uni "0x22B3"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; +top y1=h; bot y2=-d; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_right_isosceles_neg: +bskchar "Negated isosceles triangle pointing right"; +beginchar(chars.math_triangle_right_isosceles_neg,13u#,v_center(1.2x_height#)); uni "0x22EB"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +oblu.more:=2oblu; oblu.hi:=3oblu; +lw=rule_thickness-currentbreadth; +lft x1=u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; +top y1=h; bot y2=-d; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +top y5=h+2rule_thickness; bot y4=-d-2rule_thickness; .5[x4,x5]=.5w; rt x5=w-3u; +pos4(rule_thickness,angle(z4-z5)+90); pos5(rule_thickness,angle(z4-z5)+90); +bskpoints(4,5,rule_thickness,rule_thickness); +z4'l=whatever[z4l,z5l]=whatever[z2,z3]; z4'r=whatever[z4r,z5r]=whatever[z2,z3]; +z4''l=whatever[z4l,z5l]=whatever[z2',z3']; z4''r=whatever[z4r,z5r]=whatever[z2',z3']; +z5'l=whatever[z4l,z5l]=whatever[z1,z3]; z5'r=whatever[z4r,z5r]=whatever[z1,z3]; +z5''l=whatever[z4l,z5l]=whatever[z1',z3']; z5''r=whatever[z4r,z5r]=whatever[z1',z3']; +filldraw obl(1,3,2)---obl(2,1,3)---obl(4'l,2,4l).hi---z4l..z4rr---obl(4'r,4r,3) + ---obl(3,2,1)---obl(5'r,3,5r)--z5r..z5ll---obl(5'l,5l,1).more---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(4''l,2',5''l)---obl(5''l,4''l,1')---cycle; +infill obl(4''r,5''r,3')---obl(3',2',1')---obl(5''r,3',4''r)---cycle; +penlabels(4,4',4'',5,5',5''); labels(1,1',2,2',3,3',4rr,5ll); +endchar; + +iff known chars.math_triangle_right_isosceles_line: +bskchar "Isosceles triangle pointing right with line"; +beginchar(chars.math_triangle_right_isosceles_line,15u#,v_center(1.2x_height#)); uni "0x29D0"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +pos4(rule_thickness,0); pos5(rule_thickness,0); +lft x1=3u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; +top y1=h; bot y2=-d; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +lft x4l=lft x5l=u; bot y5=y2; top y4=y1; +filldraw bskrule(4,5,hair,hair); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +penlabels(4,5); labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_left_isosceles: +bskchar "Isosceles triangle pointing left"; +beginchar(chars.math_triangle_left_isosceles,13u#,v_center(1.2x_height#)); uni "0x22B2"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +rt x1=w-u; x2=x1; y3=.5[y1,y2]; lft x3=u-hair; +top y1=h; bot y2=-d; +x1'=x2'=x1-lw; +y1'-y1=y2-y2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_left_isosceles_neg: +bskchar "Negated isosceles triangle pointing left"; +beginchar(chars.math_triangle_left_isosceles_neg,13u#,v_center(1.2x_height#)); uni "0x22EA"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +oblu.more:=2oblu; oblu.hi:=3oblu; +lw=rule_thickness-currentbreadth; +rt x1=w-u; x2=x1; y3=.5[y1,y2]; lft x3=u-hair; +top y1=h; bot y2=-d; +x1'=x2'=x1-lw; +y1'-y1=y2-y2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +top y5=h+2rule_thickness; bot y4=-d-2rule_thickness; .5[x4,x5]=.5w; rt x5=w-3u; +pos4(rule_thickness,angle(z4-z5)+90); pos5(rule_thickness,angle(z4-z5)+90); +bskpoints(4,5,rule_thickness,rule_thickness); +z4'l=whatever[z4l,z5l]=whatever[z2,z3]; z4'r=whatever[z4r,z5r]=whatever[z2,z3]; +z4''l=whatever[z4l,z5l]=whatever[z2',z3']; z4''r=whatever[z4r,z5r]=whatever[z2',z3']; +z5'l=whatever[z4l,z5l]=whatever[z1,z3]; z5'r=whatever[z4r,z5r]=whatever[z1,z3]; +z5''l=whatever[z4l,z5l]=whatever[z1',z3']; z5''r=whatever[z4r,z5r]=whatever[z1',z3']; +filldraw obl(1,3,2)---obl(2,1,3)---obl(4'r,2,4r)---z4rr..z4l---obl(4'l,4l,3) + ---obl(3,2,1)---obl(5'l,3,5l)---z5ll..z5r---obl(5'r,5r,1).hi---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(4''r,2',5''r)---obl(5''r,4''r,1')---cycle; +infill obl(4''l,5''l,3')---obl(3',2',1')---obl(5''l,3',4''l)---cycle; +penlabels(4,4',4'',5,5',5''); labels(1,1',2,2',3,3',4rr,5ll); +endchar; + +iff known chars.math_triangle_left_isosceles_line: +bskchar "Isosceles triangle pointing left with line"; +beginchar(chars.math_triangle_left_isosceles_line,15u#,v_center(1.2x_height#)); uni "0x29CF"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +pos4(rule_thickness,0); pos5(rule_thickness,0); +rt x1=w-3u; x2=x1; y3=.5[y1,y2]; lft x3=u-hair; +top y1=h; bot y2=-d; +x1'=x2'=x1-lw; +y1'-y1=y2-y2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +rt x4r=rt x5r=w-u; bot y5=y2; top y4=y1; +filldraw bskrule(4,5,hair,hair); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +penlabels(4,5); labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_right_isosceles_bar: +bskchar "Isosceles triangle pointing right with bar"; +beginchar(chars.math_triangle_right_isosceles_bar,13u#,v_center(1.2x_height#+3u#)); uni "0x22B5"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +pos4(rule_thickness,90); pos5(rule_thickness,90); +lft x1=u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; +top y1=h; top y1-bot y2=1.2x_height; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +bot y4l=bot y5l=-d; lft x4=u; x5=w-x4; +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +filldraw bskrule(4,5,hair,hair); +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); penlabels(4,5); +endchar; + +iff known chars.math_triangle_right_isosceles_bar_neg: +bskchar "Negated isosceles triangle pointing right with bar"; +beginchar(chars.math_triangle_right_isosceles_bar_neg,13u#,v_center(1.2x_height#+3u#)); uni "0x22ED"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +oblu.more:=2oblu; oblu.hi:=3oblu; +lw=rule_thickness-currentbreadth; +lft x1=u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; +top y1=h; top y1-bot y2=1.2x_height; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +top y5=h+2rule_thickness; bot y4=-d-2rule_thickness; .5[x4,x5]=.5w; rt x5=w-3u; +pos4(rule_thickness,angle(z4-z5)+90); pos5(rule_thickness,angle(z4-z5)+90); +pos6(rule_thickness,90); pos7(rule_thickness,90); +bot y6l=bot y7l=-d; lft x6=u; x7=w-x6; +bskpoints(4,5,rule_thickness,rule_thickness); +bskpoints(6,7,hair,hair); +z4'l=whatever[z4l,z5l]=whatever[z2,z3]; z4'r=whatever[z4r,z5r]=whatever[z2,z3]; +z4''l=whatever[z4l,z5l]=whatever[z2',z3']; z4''r=whatever[z4r,z5r]=whatever[z2',z3']; +z5'l=whatever[z4l,z5l]=whatever[z1,z3]; z5'r=whatever[z4r,z5r]=whatever[z1,z3]; +z5''l=whatever[z4l,z5l]=whatever[z1',z3']; z5''r=whatever[z4r,z5r]=whatever[z1',z3']; +y6'l=y6'r=y6r; z6'l=whatever[z4l,z5l]; z6'r=whatever[z4r,z5r]; +y7'l=y7'r=y6l; z7'l=whatever[z4l,z5l]; z7'r=whatever[z4r,z5r]; +filldraw obl(1,3,2)---obl(2,1,3)---obl(4'l,2,4l).hi---obl(6'l,4'l,6r)---z6rr..z6l + ---obl(7'l,6l,4l)---z4l..z4rr---obl(7'r,4r,7l)---z7ll..z7r---obl(6'r,7r,4'r) + ---obl(4'r,4r,3)---obl(3,2,1)---obl(5'r,3,5r)--z5r..z5ll---obl(5'l,5l,1).more + ---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(4''l,2',5''l)---obl(5''l,4''l,1')---cycle; +infill obl(4''r,5''r,3')---obl(3',2',1')---obl(5''r,3',4''r)---cycle; +penlabels(4,4',4'',5,5',5'',6,6',7,7'); labels(1,1',2,2',3,3',4rr,5ll); +endchar; + +iff known chars.math_triangle_left_isosceles_bar: +bskchar "Isosceles triangle pointing left with bar"; +beginchar(chars.math_triangle_left_isosceles_bar,13u#,v_center(1.2x_height#+3u#)); uni "0x22B4"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +pos4(rule_thickness,90); pos5(rule_thickness,90); +rt x1=w-u; x2=x1; y3=.5[y1,y2]; lft x3=u-hair; +top y1=h; top y1-bot y2=1.2x_height; +x1'=x2'=x1-lw; +y1'-y1=y2-y2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +bot y4l=bot y5l=-d; lft x4=u; x5=w-x4; +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +filldraw bskrule(4,5,hair,hair); +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); penlabels(4,5); +endchar; + +iff known chars.math_triangle_left_isosceles_bar_neg: +bskchar "Negated isosceles triangle pointing left with bar"; +beginchar(chars.math_triangle_left_isosceles_bar_neg,13u#,v_center(1.2x_height#+3u#)); uni "0x22EC"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +oblu.more:=2oblu; oblu.hi:=3oblu; +lw=rule_thickness-currentbreadth; +rt x1=w-u; x2=x1; y3=.5[y1,y2]; lft x3=u-hair; +top y1=h; top y1-bot y2=1.2x_height; +x1'=x2'=x1-lw; +y1'-y1=y2-y2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +top y5=h+2rule_thickness; bot y4=-d-2rule_thickness; .5[x4,x5]=.5w; rt x5=w-3u; +pos4(rule_thickness,angle(z4-z5)+90); pos5(rule_thickness,angle(z4-z5)+90); +pos6(rule_thickness,90); pos7(rule_thickness,90); +bot y6l=bot y7l=-d; lft x6=u; x7=w-x6; +bskpoints(4,5,rule_thickness,rule_thickness); +bskpoints(6,7,hair,hair); +z4'l=whatever[z4l,z5l]=whatever[z2,z3]; z4'r=whatever[z4r,z5r]=whatever[z2,z3]; +z4''l=whatever[z4l,z5l]=whatever[z2',z3']; z4''r=whatever[z4r,z5r]=whatever[z2',z3']; +z5'l=whatever[z4l,z5l]=whatever[z1,z3]; z5'r=whatever[z4r,z5r]=whatever[z1,z3]; +z5''l=whatever[z4l,z5l]=whatever[z1',z3']; z5''r=whatever[z4r,z5r]=whatever[z1',z3']; +y6'l=y6'r=y6r; z6'l=whatever[z4l,z5l]; z6'r=whatever[z4r,z5r]; +y7'l=y7'r=y6l; z7'l=whatever[z4l,z5l]; z7'r=whatever[z4r,z5r]; +filldraw obl(1,3,2)---obl(2,1,3)---obl(4'r,2,4r)---obl(6'r,4'r,7r).more---z7r..z7ll + ---obl(7'r,7l,4r)---z4rr..z4l---obl(7'l,4l,6l).more---z6l..z6rr + ---obl(6'l,6r,4'l)---obl(4'l,4l,3)---obl(3,2,1)---obl(5'l,3,5l)---z5ll + ..z5r---obl(5'r,5r,1).hi---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(4''r,2',5''r)---obl(5''r,4''r,1')---cycle; +infill obl(4''l,5''l,3')---obl(3',2',1')---obl(5''l,3',4''l)---cycle; +penlabels(4,4',4'',5,5',5'',6,6',7,7'); labels(1,1',2,2',3,3',4rr,5ll); +endchar; + +iff known chars.math_triangle_right_isosceles_bar_sl: +bskchar "Isosceles triangle pointing right with slanted bar"; +beginchar(chars.math_triangle_right_isosceles_bar_sl,13u#,v_center(1.2x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; +top y1=h; top y1-bot y2=1.2x_height; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +bot y4=-d+.5rule_thickness; y2-y4=y3-y5; lft x4=u; x5=w-x4; +pos4(rule_thickness,angle(z5-z4)+90); pos5(rule_thickness,angle(z5-z4)+90); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +filldraw bskrule(4,5,hair,hair); +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); penlabels(4,5); +endchar; + +iff known chars.math_triangle_left_isosceles_bar_sl: +bskchar "Isosceles triangle pointing left with slanted bar"; +beginchar(chars.math_triangle_left_isosceles_bar_sl,13u#,v_center(1.2x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +rt x1=w-u; x2=x1; y3=.5[y1,y2]; lft x3=u-hair; +top y1=h; top y1-bot y2=1.2x_height; +x1'=x2'=x1-lw; +y1'-y1=y2-y2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +bot y5=-d+.5rule_thickness; y3-y4=y2-y5; lft x4=u; x5=w-x4; +pos4(rule_thickness,angle(z5-z4)+90); pos5(rule_thickness,angle(z5-z4)+90); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +filldraw bskrule(4,5,hair,hair); +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); penlabels(4,5); +endchar; + +iff known chars.math_triangles_isosceles_right_left: +bskchar "Isosceles triangle pointing right above pointing left"; +beginchar(chars.math_triangles_isosceles_right_left,13u#,v_center(1.8x_height#+2rule_thickness#)); uni "0x29CE"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; +top y1=h; top y1-bot y2=1.2x_height; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +rt x4=w-u; x5=x4; y6=.5[y4,y5]; lft x6=u-hair; +top y4-bot y5=1.2x_height; bot y5=-d; +x4'=x5'=x4-lw; +y4'-y4=y5-y5'=lw/cosd(angle(z6-z4)); +z6'=z5'+whatever*(z6-z5)=z4'+whatever*(z6-z4); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +filldraw obl(4,6,5)---obl(5,4,6)---obl(6,5,4)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +infill obl(4',6',5')---obl(5',4',6')---obl(6',5',4')---cycle; +labels(1,1',2,2',3,3',4,4',5,5',6,6'); +endchar; + +iff known chars.math_triangles_isosceles_left_right: +bskchar "Isosceles triangle pointing left above pointing right"; +beginchar(chars.math_triangles_isosceles_left_right,13u#,v_center(1.8x_height#+2rule_thickness#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; +bot y2=-d; top y1-bot y2=1.2x_height; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +rt x4=w-u; x5=x4; y6=.5[y4,y5]; lft x6=u-hair; +top y4-bot y5=1.2x_height; top y4=h; +x4'=x5'=x4-lw; +y4'-y4=y5-y5'=lw/cosd(angle(z6-z4)); +z6'=z5'+whatever*(z6-z5)=z4'+whatever*(z6-z4); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +filldraw obl(4,6,5)---obl(5,4,6)---obl(6,5,4)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +infill obl(4',6',5')---obl(5',4',6')---obl(6',5',4')---cycle; +labels(1,1',2,2',3,3',4,4',5,5',6,6'); +endchar; + +iff known chars.math_triangle_right_isosceles_black: +bskchar "Black isosceles triangle pointing right"; +beginchar(chars.math_triangle_right_isosceles_black,13u#,v_center(1.2x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; +top y1=h; bot y2=-d; +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +labels(1,2,3); +endchar; + +iff known chars.math_triangle_left_isosceles_black: +bskchar "Black isosceles triangle pointing left"; +beginchar(chars.math_triangle_left_isosceles_black,13u#,v_center(1.2x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +rt x1=w-u; x2=x1; y3=.5[y1,y2]; lft x3=u-hair; +top y1=h; bot y2=-d; +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +labels(1,2,3); +endchar; + +iff known chars.math_slice_left: +bskchar "Left slice"; +beginchar(chars.math_slice_left,13u#,v_center(1.2x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +pos0(rule_thickness,0); +rt x1=w-3u; x2=x1; y3=.5[y1,y2]; lft x3=u-hair; rt x0r=w-u; +top y1=h; bot y2=-d; y0=.5[y1,y2]; +x1'=x2'=x1-lw; +y1'-y1=y2-y2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw z1+oblu*unitvector(z3-z1)--z1..z0r..z2--z2+oblu*unitvector(z3-z2)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill z1'+oblu*unitvector(z3'-z1')--z1'..z0l..z2'--z2'+oblu*unitvector(z3'-z2')---obl(3',2',1')---cycle; +penlabels(0); labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_slice_right: +bskchar "Right slice"; +beginchar(chars.math_slice_right,13u#,v_center(1.2x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +pos0(rule_thickness,0); +lft x1=3u; x2=x1; y3=.5[y1,y2]; rt x3=w-u+hair; lft x0l=u; +top y1=h; bot y2=-d; y0=.5[y1,y2]; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw z1+oblu*unitvector(z3-z1)--z1..z0l..z2--z2+oblu*unitvector(z3-z2)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill z1'+oblu*unitvector(z3'-z1')--z1'..z0r..z2'--z2'+oblu*unitvector(z3'-z2')---obl(3',2',1')---cycle; +penlabels(0); labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_black_up: +bskchar "Big black triangle up"; +beginchar(chars.math_triangle_black_up,17u#,asc_height#,desc_depth#); uni "0x25B2"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; rt x2=w-u; x3=.5[x1,x2]; +bot y1=bot y2=-d; top y3=h+o; +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +labels(1,2,3); +endchar; + +iff known chars.math_triangle_down: +bskchar "Big triangle down"; +beginchar(chars.math_triangle_down,17u#,asc_height#,desc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; rt x2=w-u; x3=.5[x1,x2]; +top y1=top y2=h-d; bot y3=-d-o; +y1'=y2'=y1-lw; +x1'-x1=x2-x2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_black_down: +bskchar "Big black triangle down"; +beginchar(chars.math_triangle_black_down,17u#,asc_height#,desc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; rt x2=w-u; x3=.5[x1,x2]; +top y1=top y2=h; bot y3=-d-o; +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +labels(1,2,3); +endchar; + +iff known chars.math_big_triangle_right: +bskchar "Big triangle right"; +beginchar(chars.math_big_triangle_right,17u#,asc_height#,0desc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=lft x2=u; rt x3=w-u; +top y1=h+o; bot y2=-d-o; y3=.5[y1,y2]; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z2)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_black_right: +bskchar "Big black triangle right"; +beginchar(chars.math_triangle_black_right,17u#,asc_height#,0desc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=lft x2=u; rt x3=w-u; +top y1=h+o; bot y2=-d-o; y3=.5[y1,y2]; +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +labels(1,2,3); +endchar; + +iff known chars.math_big_triangle_left: +bskchar "Big triangle left"; +beginchar(chars.math_big_triangle_left,17u#,asc_height#,0desc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +rt x1=rt x2=w-u; lft x3=u; +top y1=h+o; bot y2=-d-o; y3=.5[y1,y2]; +x1'=x2'=x1-lw; +y1'-y1=y2-y2'=lw/cosd(angle(z3-z2)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_black_left: +bskchar "Big black triangle left"; +beginchar(chars.math_triangle_black_left,17u#,asc_height#,0desc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +rt x1=rt x2=w-u; lft x3=u; +top y1=h+o; bot y2=-d-o; y3=.5[y1,y2]; +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +labels(1,2,3); +endchar; + +iff known chars.math_curved_triangle_up: +bskchar "Big curved triangle up"; +beginchar(chars.math_curved_triangle_up,17u#,asc_height#,desc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; rt x2=w-u; x3=.5[x1,x2]; +bot y1=bot y2=-d; top y3=h+o; +y1'=y2'=y1+lw; +x1'-x1=x2-x2'=lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +z2''=.5[z1,z2]+hair*up; +filldraw obl(1,3,2)..z2''..obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')..z2''+lw*up..obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',1'',2,2',2'',3,3'); +endchar; + +iff known chars.math_curved_triangle_up_black: +bskchar "Big curved triangle up"; +beginchar(chars.math_curved_triangle_up_black,17u#,asc_height#,desc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; rt x2=w-u; x3=.5[x1,x2]; +bot y1=bot y2=-d; top y3=h+o; +y1'=y2'=y1+lw; +x1'-x1=x2-x2'=lw/sind(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +z1''=.5[z1,z3]+2hair*dir(angle(z3-z1)-90); +z2''=.5[z1,z2]+hair*up; +z3''=.5[z2,z3]+2hair*dir(angle(z3-z2)+90); +filldraw z1+oblu*right{right}..z2''..{right}z2+oblu*left.. + z2+oblu*unitvector(z3-z2){z3-z2} + ..z3''...{z3-z2}z3+oblu*unitvector(z2-z3)..z3+oblu*unitvector(z1-z3){z1-z3}.. + z1''..{z1-z3}z1+oblu*unitvector(z3-z1)..cycle; +labels(1,1',1'',2,2',2'',3,3',3''); +endchar; + +iff known chars.math_triangle_down_isosceles: +bskchar "Isosceles triangle pointing down"; +beginchar(chars.math_triangle_down_isosceles,.8asc_height#+2u#,.8asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; rt x2=w-u; x3=.5[x1,x2]; +top y1=top y2=h; bot y3=0; +y1'=y2'=y1-lw; +x1'-x1=x2-x2'=-lw/sind(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_up_isosceles: +bskchar "Isosceles triangle pointing up"; +beginchar(chars.math_triangle_up_isosceles,.8asc_height#+2u#,.8asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; rt x2=w-u; x3=.5[x1,x2]; +bot y1=bot y2=0; top y3=h; +y1'=y2'=y1+lw; +x1'-x1=x2-x2'=lw/sind(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_triangle_down_isosceles_black: +bskchar "Black isosceles triangle pointing down"; +beginchar(chars.math_triangle_down_isosceles_black,.8asc_height#+2u#,.8asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; rt x2=w-u; x3=.5[x1,x2]; +top y1=top y2=h; bot y3=0; +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +labels(1,2,3); +endchar; + +iff known chars.math_triangle_up_isosceles_black: +bskchar "Black isosceles triangle pointing up"; +beginchar(chars.math_triangle_up_isosceles_black,.8asc_height#+2u#,.8asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; rt x2=w-u; x3=.5[x1,x2]; +bot y1=bot y2=0; top y3=h; +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +labels(1,2,3); +endchar; + +iff known chars.math_triangle_right_angle: +bskchar "Triangle with right angle"; +beginchar(chars.math_triangle_right_angle,12u#,.8asc_height#,0); uni "0x22BF"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; rt x2=w-u; x3=x2; +bot y1=bot y2=0; top y3=h; +y1'=y2'=y1+lw; +x1'-x1=x2-x2'=lw/sind(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +oblu:=2oblu; +infill obl(1',3',2')---obl(2',1',3')---obl(3',2',1')---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.math_square_small_black_round: +bskchar "Small black square (rounded)"; +beginchar(chars.math_square_small_black_round,5u#,3u#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x1=lft x2=u; x3=x4=w-x1; top y1=top y4=h; bot y2=bot y3=0; +filldraw obl(1,4,2)---obl(2,1,3)---obl(3,2,4)---obl(4,3,1)---cycle; +labels(1,2,3,4); +endchar; + +iff known chars.math_square_small_black: +bskchar "Small black square"; +beginchar(chars.math_square_small_black,5u#,3u#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x1=lft x2=u; x3=x4=w-x1; top y1=top y4=h; bot y2=bot y3=0; +filldraw z1--z2--z3--z4--cycle; +labels(1,2,3,4); +endchar; + +iff known chars.math_sum_uni: +bskchar "Summation sign (for Unicode)"; +beginchar(chars.math_sum_uni,14u#,v_center(10/6dh#)); uni "0x2211"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; oblu.more:=2oblu; +numeric alpha, top_stem, top_arm, bot_arm; +top_arm=Vround rule_thickness; +bot_arm=Vround .5[cap_stem,rule_thickness]; +pos1(cap_stem,0); pos2(cap_stem,0); +bot y1=-d; top y2=h; +lft x1l=lft x2l-o=.5u; +bot y3r=-d; top y4r=h; rt x3l=w-u; x4r=w-2u; +pos3(beak,-90); z3d=(x3r-2ser_height,y1+bot_arm); +pos4(.65beak,90); z4d=(x4r-ser_height,y2r.b); +z3l.o=z3l+o*left; z4l.o=z4l+o*left; +x5r=.5w-o; y5=.5[h,-d]+cap_hair; +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; +z1r-z1r.b=bot_arm*down; +y1'=y1+2bot_arm; z1'=z6l+whatever*(z1r.b-z6r); +z5'=whatever[z2l+top_arm*down,z5l]=whatever[z6l,z1']; +y2r.b=y2-bot_arm; z2r.b=z5r+whatever*(z2l-z5'); +filldraw z3l..{dir-110}z3l.o..z3d + ---obl(1r.b,3d,5r).more---obl(5r,1r.b,2r.b).more---obl(2r.b,5r,4d).more + ---z4d..z4l.o{dir-70}..z4l---z4r+hair*down..z4r+hair*left---obl(2l,4r,5') + ---obl(5',2l,1l)---obl(1l,5',3r)---obl(3r,1r,3l)---cycle; +penlabels(1,2,3,4,5,6); labels(1',1r.b,4d,4l.o,5',2r.b); +endchar; + +iff known chars.math_sum_modulo_uni: +bskchar "Summation modulo two sign (for Unicode)"; +beginchar(chars.math_sum_modulo_uni,14u#,v_center(10/6dh#)); uni "0x2A0A"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu.more:=2oblu; +numeric alpha, top_stem, top_arm, bot_arm; +top_arm=Vround rule_thickness; +bot_arm=Vround .5[cap_stem,rule_thickness]; +y2=y13; y8-y4=x2-x6=6u; .5[x2,x6]=x13l; +pos9(cap_stem,0); pos10(cap_stem,0); +bot y9=-d; top y10=h; +lft x9l=lft x10l-o=.5u; +bot y11r=-d; top y12r=h; rt x11l=w-u; x12r=w-2u; +pos11(beak,-90); z11d=(x11r-2ser_height,y9+bot_arm); +pos12(.65beak,90); z12d=(x12r-ser_height,y10r.b); +z11l.o=z11l+o*left; z12l.o=z12l+o*left; +x13r=.5w-o; y13=.5[h,-d]+cap_hair; +alpha=diag_ratio(10,cap_stem,y10-y13,x13r-x10r); +pos13(alpha*cap_stem,0); +alpha:=diag_ratio(10,cap_hair,y13-y9,x13r-x9r); +pos14(alpha*cap_hair,0); z13r=z14r; +z9r-z9r.b=bot_arm*down; +y9'=y9+2bot_arm; z9'=z14l+whatever*(z9r.b-z14r); +z13'=whatever[z10l+top_arm*down,z13l]=whatever[z14l,z9']; +y10r.b=y10-bot_arm; z10r.b=z13r+whatever*(z10l-z13'); +circle_points(rule_thickness); +p0=z11l..{dir-110}z11l.o..z11d---obl(9r.b,11d,13r).more---obl(13r,9r.b,10r.b).more + ---obl(10r.b,13r,12d).more---z12d..z12l.o{dir-70}..z12l---z12r+hair*down..z12r+hair*left + ---obl(10l,12r,13')---obl(13',10l,9l)---obl(9l,13',11r)---obl(11r,9r,11l)---cycle; +p1=subpath(2,10) of reverse(draw_circle.l); +p2=subpath(2,10) of reverse(draw_circle.r); +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3-3)=p0 intersectiontimes subpath(3,8) of p1; +(tim4-10,tim5-3)=subpath(10,length p0) of p0 intersectiontimes subpath(3,length p1) of p1; +(tim6-10,tim7)=subpath(10,length p0) of p0 intersectiontimes subpath(0,3) of p1; +(tim8,tim9)=p0 intersectiontimes p2; +(tim10,tim11-3)=p0 intersectiontimes subpath(3,8) of p2; +(tim12-10,tim13-3)=subpath(10,length p0) of p0 intersectiontimes subpath(3,8) of p2; +(tim14-10,tim15)=subpath(10,length p0) of p0 intersectiontimes subpath(0,3) 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),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),length p1) of p1 + ..subpath(0,rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +infill subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0 + ..reverse subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2..cycle; +infill subpath(rundy(p0,tim12),rundy(p0,tim14).zpet) of p0 + ..reverse (subpath(rundy(p2,tim13),length p2) of p2 + ..subpath(0,rundy(p2,tim15).zpet) of p2) + ..cycle; +penlabels(9,10,11,12,13,14); labels(9',9r.b,12d,12l.o,13',10r.b); +endchar; + +iff known chars.math_sum_text: +bskchar "\textstyle summation sign"; +beginchar(chars.math_sum_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; oblu.more:=2oblu; +numeric alpha, top_stem, top_arm, bot_arm; +top_arm=Vround rule_thickness; +bot_arm=Vround .5[cap_stem,rule_thickness]; +pos1(cap_stem,0); pos2(cap_stem,0); +bot y1=-d; top y2=h; +lft x1l=lft x2l-o=.5u; +bot y3r=-d; top y4r=h; rt x3l=w-u; x4r=w-2u; +pos3(beak,-90); z3d=(x3r-2ser_height,y1+bot_arm); +pos4(.65beak,90); z4d=(x4r-ser_height,y2r.b); +z3l.o=z3l+o*left; z4l.o=z4l+o*left; +x5r=.5w-o; y5=.5[h,-d]+cap_hair; +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; +z1r-z1r.b=bot_arm*down; +y1'=y1+2bot_arm; z1'=z6l+whatever*(z1r.b-z6r); +z5'=whatever[z2l+top_arm*down,z5l]=whatever[z6l,z1']; +y2r.b=y2-bot_arm; z2r.b=z5r+whatever*(z2l-z5'); +filldraw z3l..{dir-110}z3l.o..z3d + ---obl(1r.b,3d,5r).more---obl(5r,1r.b,2r.b).more---obl(2r.b,5r,4d).more + ---z4d..z4l.o{dir-70}..z4l---z4r+hair*down..z4r+hair*left---obl(2l,4r,5') + ---obl(5',2l,1l)---obl(1l,5',3r)---obl(3r,1r,3l)---cycle; +penlabels(1,2,3,4,5,6); labels(1',1r.b,4d,4l.o,5',2r.b); +endchar; + +iff known chars.math_sum_disp: +bskchar "\displaystyle summation sign"; +beginchar(chars.math_sum_disp,19u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; olbu.more:=2oblu; +numeric alpha, top_stem, top_arm, bot_arm; +top_arm=Vround 1.5rule_thickness; +bot_arm=Vround cap_stem; +pos1(1.5cap_stem,0); pos2(1.5cap_stem,0); +bot y1=-d; top y2=h; +lft x1l=lft x2l-o=.5u; +bot y3r=-d; top y4r=h; rt x3l=w-u; x4r=w-2u; +pos3(1.25beak,-90); z3d=(x3r-2ser_height,y1+bot_arm); +pos4(.8beak,90); z4d=(x4r-ser_height,y2r.b); +z3l.o=z3l+o*left; z4l.o=z4l+o*left; +x5r=.5w-o; y5=.5[h,-d]+cap_hair; +alpha=diag_ratio(2,cap_stem,y2-y5,x5r-x2r); +pos5(1.5alpha*cap_stem,0); +alpha:=diag_ratio(2,cap_hair,y5-y1,x5r-x1r); +pos6(1.5alpha*cap_hair,0); z5r=z6r; +z1r-z1r.b=bot_arm*down; +y1'=y1+2bot_arm; z1'=z6l+whatever*(z1r.b-z6r); +z5'=whatever[z2l+top_arm*down,z5l]=whatever[z6l,z1']; +y2r.b=y2-bot_arm; z2r.b=z5r+whatever*(z2l-z5'); +filldraw z3l..{dir-110}z3l.o..z3d + ---obl(1r.b,3d,5r).more---obl(5r,1r.b,2r.b).more---obl(2r.b,5r,4d).more + ---z4d..z4l.o{dir-70}..z4l---z4r+hair*down..z4r+hair*left---obl(2l,4r,5') + ---obl(5',2l,1l)---obl(1l,5',3r)---obl(3r,1r,3l)---cycle; +penlabels(1,2,3,4,5,6); labels(1',4d,4l.o,5',2r.b); +endchar; + +iff known chars.math_prod_uni: +bskchar "Product sign (for Unicode)"; +beginchar(chars.math_prod_text,14u#,v_center(10/6dh#)); uni "0x220F"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(1.1cap_stem,0); pos2(1.1cap_stem,0); +pos3(1.1cap_stem,0); pos4(1.1cap_stem,0); +bot y1=bot y3=-d; top y2=top y4=h; +lft x1l=lft x2l=u; +x3r=x4r=w-x1l; +{{ save cap_jut; numeric cap_jut; cap_jut:=.5[hair,stem]; + cap_serifs_tl(2l); cap_serifs_tr(2r); + cap_serifs_tl(4l); cap_serifs_tr(4r); + cap_serifs_br(1r); cap_serifs_bl(3l); +}}; +cap_serifs_bl(1l); +cap_serifs_br(3r); +z2'=(x2r,y2r.b-1.2stem); z4'=(x4l,y2'); z3'=(.5[x2',x4'],y2r.c-hair); +filldraw z1l.b{down}..{left}z1l.c..z1l.a---z1r.a..{left}z1r.c..z1r.b--- + z2'..{right}z3'..z4' + ---z3l.b..{left}z3l.c..z3l.a---z3r.a..z3r.c{left}..z3r.b---z4r.b.. + {right}z4r.c..{left}z4r.a..{left}z2l.a..{right}z2l.c..z2l.b---cycle; +penlabels(1,2,3,4); labels(2',3',4'); +endchar; + +iff known chars.math_prod_text: +bskchar "\textstyle product sign"; +beginchar(chars.math_prod_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(1.1cap_stem,0); pos2(1.1cap_stem,0); +pos3(1.1cap_stem,0); pos4(1.1cap_stem,0); +bot y1=bot y3=-d; top y2=top y4=h; +lft x1l=lft x2l=u; +x3r=x4r=w-x1l; +{{ save cap_jut; numeric cap_jut; cap_jut:=.5[hair,stem]; + cap_serifs_tl(2l); cap_serifs_tr(2r); + cap_serifs_tl(4l); cap_serifs_tr(4r); + cap_serifs_br(1r); cap_serifs_bl(3l); +}}; +cap_serifs_bl(1l); +cap_serifs_br(3r); +z2'=(x2r,y2r.b-1.2stem); z4'=(x4l,y2'); z3'=(.5[x2',x4'],y2r.c-hair); +filldraw z1l.b{down}..{left}z1l.c..z1l.a---z1r.a..{left}z1r.c..z1r.b--- + z2'..{right}z3'..z4' + ---z3l.b..{left}z3l.c..z3l.a---z3r.a..z3r.c{left}..z3r.b---z4r.b.. + {right}z4r.c..{left}z4r.a..{left}z2l.a..{right}z2l.c..z2l.b---cycle; +penlabels(1,2,3,4); labels(2',3',4'); +endchar; + +iff known chars.math_prod_disp: +bskchar "\displaystyle product sign"; +beginchar(chars.math_prod_disp,18u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(1.5cap_stem,0); pos2(1.5cap_stem,0); +pos3(1.5cap_stem,0); pos4(1.5cap_stem,0); +bot y1=bot y3=-d; top y2=top y4=h; +lft x1l=lft x2l=u; +x3r=x4r=w-x1l; +{{ save cap_jut; numeric cap_jut; cap_jut:=.5[hair,stem]; + cap_serifs_tl(2l); cap_serifs_tr(2r); + cap_serifs_tl(4l); cap_serifs_tr(4r); + cap_serifs_br(1r); cap_serifs_bl(3l); +}}; +cap_serifs_bl(1l); +cap_serifs_br(3r); +z2'=(x2r,y2r.b-1.5stem); z4'=(x4l,y2'); z3'=(.5[x2',x4'],y2r.c-cap_hair); +filldraw z1l.b{down}..{left}z1l.c..z1l.a---z1r.a..{left}z1r.c..z1r.b--- + z2'..{right}z3'..z4' + ---z3l.b..{left}z3l.c..z3l.a---z3r.a..z3r.c{left}..z3r.b---z4r.b.. + {right}z4r.c..{left}z4r.a..{left}z2l.a..{right}z2l.c..z2l.b---cycle; +penlabels(1,2,3,4); labels(2',3',4'); +endchar; + +iff known chars.math_coprod_uni: +bskchar "Coproduct sign (for Unicode)"; +beginchar(chars.math_coprod,14u#,v_center(10/6dh#)); uni "0x2210"; +italcorr cap_height#*slant; +adjust_fit(cap_serif_fit#,cap_serif_fit#); +pickup tiny.nib; +pos1(1.1cap_stem,0); pos2(1.1cap_stem,0); +pos3(1.1cap_stem,0); pos4(1.1cap_stem,0); +top y1=top y3=h; bot y2=bot y4=-d; +lft x1l=lft x2l=1.5u; +x3r=x4r=w-x1l; +{{ save cap_jut; numeric cap_jut; cap_jut:=.5[hair,stem]; + cap_serifs_bl(2l); cap_serifs_br(2r); + cap_serifs_bl(4l); cap_serifs_br(4r); + cap_serifs_tr(1r); cap_serifs_tl(3l); + cap_serifs_tl(1l); cap_serifs_tr(3r); +}}; +z2'=(x2r,y2r.b+1.2stem); z4'=(x4l,y2'); z3'=(.5[x2',x4'],y2r.c+hair); +filldraw z1l.b{up}..{left}z1l.c..z1l.a---z1r.a..{left}z1r.c..z1r.b + ---z2'..{right}z3'..z4'---z3l.b..{left}z3l.c..z3l.a---z3r.a + ..z3r.c{left}..z3r.b---z4r.b..{right}z4r.c..{left}z4r.a + ..{left}z2l.a..{right}z2l.c..z2l.b---cycle; +penlabels(1,2,3,4); labels(2',3',4'); %math_fit +endchar; + +iff known chars.math_coprod: +bskchar "Coproduct sign"; +beginchar(chars.math_coprod,12u#,cap_height#,0); uni "0x2A3F"; +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); +top y1=top y3=h; bot y2=bot y4=-d; +lft x1l=lft x2l=1.5u; +x3r=x4r=w-x1l; +{{ save cap_jut; numeric cap_jut; cap_jut:=.5[hair,stem]; + cap_serifs_bl(2l); cap_serifs_br(2r); + cap_serifs_bl(4l); cap_serifs_br(4r); + cap_serifs_tr(1r); cap_serifs_tl(3l); + cap_serifs_tl(1l); cap_serifs_tr(3r); +}}; +z2'=(x2r,y2r.b+.5stem); z4'=(x4l,y2'); z3'=(.5[x2',x4'],y2r.c); +filldraw z1l.b{up}..{left}z1l.c..z1l.a---z1r.a..{left}z1r.c..z1r.b + ---z2'..{right}z3'..z4'---z3l.b..{left}z3l.c..z3l.a---z3r.a + ..z3r.c{left}..z3r.b---z4r.b..{right}z4r.c..{left}z4r.a + ..{left}z2l.a..{right}z2l.c..z2l.b---cycle; +penlabels(1,2,3,4); labels(2',3',4'); %math_fit +endchar; + +iff known chars.math_coprod_text: +bskchar "\textstyle coproduct sign"; +beginchar(chars.math_coprod_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(1.1cap_stem,0); pos2(1.1cap_stem,0); +pos3(1.1cap_stem,0); pos4(1.1cap_stem,0); +top y1=top y3=h; bot y2=bot y4=-d; +lft x1l=lft x2l=1.5u; +x3r=x4r=w-x1l; +{{ save cap_jut; numeric cap_jut; cap_jut:=.5[hair,stem]; + cap_serifs_bl(2l); cap_serifs_br(2r); + cap_serifs_bl(4l); cap_serifs_br(4r); + cap_serifs_tr(1r); cap_serifs_tl(3l); + cap_serifs_tl(1l); cap_serifs_tr(3r); +}}; +z2'=(x2r,y2r.b+.75stem); z4'=(x4l,y2'); z3'=(.5[x2',x4'],y2r.c+hair); +filldraw z1l.b{up}..{left}z1l.c..z1l.a---z1r.a..{left}z1r.c..z1r.b + ---z2'..{right}z3'..z4'---z3l.b..{left}z3l.c..z3l.a---z3r.a + ..z3r.c{left}..z3r.b---z4r.b..{right}z4r.c..{left}z4r.a + ..{left}z2l.a..{right}z2l.c..z2l.b---cycle; +penlabels(1,2,3,4); labels(2',3',4'); +endchar; + +iff known chars.math_coprod_disp: +bskchar "\displaystyle coproduct sign"; +beginchar(chars.math_coprod_disp,18u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(1.5cap_stem,0); pos2(1.5cap_stem,0); +pos3(1.5cap_stem,0); pos4(1.5cap_stem,0); +top y1=top y3=h; bot y2=bot y4=-d; +lft x1l=lft x2l=1.5u; +x3r=x4r=w-x1l; +{{ save cap_jut; numeric cap_jut; cap_jut:=.5[hair,stem]; + cap_serifs_bl(2l); cap_serifs_br(2r); + cap_serifs_bl(4l); cap_serifs_br(4r); + cap_serifs_tr(1r); cap_serifs_tl(3l); + cap_serifs_tl(1l); cap_serifs_tr(3r); +}}; +z2'=(x2r,y2r.b+1.2stem); z4'=(x4l,y2'); z3'=(.5[x2',x4'],y2r.c+cap_hair); +filldraw z1l.b{up}..{left}z1l.c..z1l.a---z1r.a..{left}z1r.c..z1r.b + ---z2'..{right}z3'..z4'---z3l.b..{left}z3l.c..z3l.a---z3r.a + ..z3r.c{left}..z3r.b---z4r.b..{right}z4r.c..{left}z4r.a + ..{left}z2l.a..{right}z2l.c..z2l.b---cycle; +penlabels(1,2,3,4); labels(2',3',4'); +endchar; + +iff known chars.math_int: +bskchar "Integral sign"; +beginchar(chars.math_int,10u#,asc_height#,desc_depth#); uni "non"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x .5w; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; +x3-lft x2l=2u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=w-u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +penlabels(1,2,3,4,5,6,7); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_uni: +bskchar "Integral sign (for Unicode)"; +beginchar(chars.math_int_uni,10u#,v_center(11/6dh#)); uni "0x222B"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x .5w; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; +x3-lft x2l=2u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=w-u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +penlabels(1,2,3,4,5,6,7); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_overbar: +bskchar "Integral sign with overbar"; +beginchar(chars.math_int_overbar,10u#,11/12dh#+2.5rule_thickness#+math_axis#,11/12dh#-math_axis#); uni "0x2A1B"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x .5w; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +pos8(rule_thickness,90); pos9(rule_thickness,90); +top y2=h-like_curve-2.5rule_thickness; +x3-lft x2l=2u; +top y3l=h+o-2.5rule_thickness; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=w-u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +y8=y9=y3l+2rule_thickness; lft x8=u; rt x9=w-u; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +filldraw bskrule(8,9,hair,0); +penlabels(1,2,3,4,5,6,7,8,9); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_underbar: +bskchar "Integral sign with underbar"; +beginchar(chars.math_int_underbar,10u#,11/12dh#+math_axis#,11/12dh#+2.5rule_thickness#-math_axis#); uni "0x2A1C"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x .5w; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +pos8(rule_thickness,90); pos9(rule_thickness,90); +top y2=h-like_curve; +x3-lft x2l=2u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=w-u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve+2.5rule_thickness; bot y6l=-d-o+2.5rule_thickness; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +y8=y9=y6r-2rule_thickness; lft x8=u; rt x9=w-u; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +filldraw bskrule(8,9,hair,0); +penlabels(1,2,3,4,5,6,7,8,9); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_double_uni: +bskchar "Double integral sign (for Unicode)"; +beginchar(chars.math_int_double_uni,15.5u#,v_center(11/6dh#)); uni "0x222C"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x 5u; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; +x3-lft x2l=2u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=9u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +filldraw (z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle) + shifted (5.5u,0); +penlabels(1,2,3,4,5,6,7); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_triple_uni: +bskchar "Triple integral sign (for Unicode)"; +beginchar(chars.math_int_triple_uni,21u#,v_center(11/6dh#)); uni "non"; %uni "0x222D"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x 5u; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; +x3-lft x2l=2u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=9u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +filldraw (z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle) + shifted (5.5u,0); +filldraw (z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle) + shifted (11u,0); +penlabels(1,2,3,4,5,6,7); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_triple_uni_var: +bskchar "Triple integral sign (for Unicode, variant)"; +beginchar(chars.math_int_triple_uni,19u#,v_center(11/6dh#)); uni "0x222D"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x 5u; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; +x3-lft x2l=2u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=9u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +filldraw (z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle) + shifted -z1 scaled .95 shifted z1 shifted (5u,0); +filldraw (z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle) + shifted -z1 scaled .9 shifted z1 shifted (9.5u,0); +penlabels(1,2,3,4,5,6,7); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_quadruple_uni: +bskchar "Quadruple integral sign (for Unicode)"; +beginchar(chars.math_int_quadruple_uni,26.5u#,v_center(11/6dh#)); uni "non"; %uni "0x2A0C"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x 5u; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; +x3-lft x2l=2u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=9u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +filldraw (z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle) + shifted (5.5u,0); +filldraw (z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle) + shifted (11u,0); +filldraw (z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle) + shifted (16.5u,0); +penlabels(1,2,3,4,5,6,7); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_quadruple_uni_var: +bskchar "Quadruple integral sign (for Unicode, variant)"; +beginchar(chars.math_int_quadruple_uni_var,23.25u#,v_center(11/6dh#)); uni "0x2A0C"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x 5u; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; +x3-lft x2l=2u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=9u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +filldraw (z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle) + shifted -z1 scaled .9666 shifted z1 shifted (5u,0); +filldraw (z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle) + shifted -z1 scaled .9333 shifted z1 shifted (9.5u,0); +filldraw (z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle) + shifted -z1 scaled .9 shifted z1 shifted (13.75u,0); +penlabels(1,2,3,4,5,6,7); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_text: +bskchar "\textstyle integral sign"; +beginchar(chars.math_int_text,8.5u#,0,11/6dh#); uni "non"; +italcorr 3u#+curve#; +adjust_fit(0,-2.5u#); +pickup tiny.nib; +numeric fend; fend:=1.5stem; +pos1(bourstem,0); x1=good.x .5w; y1=.5[h,-d]; +pos2(stem,0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; x3-lft x2l=.85*2.75u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=w+curve; z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(stem,180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +penlabels(1,2,3,4,5,6,7); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_disp: +bskchar "\displaystyle integral sign"; +beginchar(chars.math_int_disp,17u#,0,4dh#); uni "non"; +italcorr 8u#+curve#; +adjust_fit(0,-7.5u#); +pickup tiny.nib; +numeric fend; fend:=1.5bourstem; +pos1(1.5bourstem,0); x1=good.x .5w; y1=.5[h,-d]; +pos2(.5[stem,bourstem],0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; x3-lft x2l=2.75u; +top y3l=h+o; .45[x2r,x4]=x3; y4''=y3r-1.5like_hair; +rt x4l=w+curve; z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,bourstem],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +penlabels(1,2,3,4,5,6,7); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_up_text: +bskchar "\textstyle integral upright sign"; +beginchar(chars.math_int_up_text,8.5u#,0,11/6dh#); uni "non"; +italcorr u#+curve#; +adjust_fit(0,-2u#); +pickup tiny.nib; +numeric fend; fend:=1.5stem; +pos1(bourstem,0); x1=good.x .5w; y1=.5[h,-d]; +pos2(stem,0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; x3-lft x2l=.85*2.75u; x2=x1; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(stem,180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r+o; y1l:=y1l-o; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +penlabels(1,2,3,4,5,6,7); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_up_disp: +bskchar "\displaystyle integral upright sign"; +beginchar(chars.math_int_up_disp,17u#,0,4dh#); uni "non"; +italcorr 2u#+curve#; +adjust_fit(0,-4.5u#); +pickup tiny.nib; +numeric fend; fend:=1.5bourstem; +pos1(1.5bourstem,0); x1=good.x .5w; y1=.5[h,-d]; +pos2(.5[stem,bourstem],0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; x3-lft x2l=2.75u; x2=x1; +top y3l=h+o; .45[x2r,x4]=x3; y4''=y3r-1.5like_hair; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,bourstem],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +filldraw z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +penlabels(1,2,3,4,5,6,7); labels(4',4'',7',7''); +endchar; + +iff known chars.math_int_bump: +bskchar "Integral sign with bump"; +beginchar(chars.math_int_bump,10u#,v_center(11/6dh#)); uni "non"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos9(.5[stem,bourstem],0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +lft x6=2u; y2=y9; y8-y4=x2-x6; .5[x2,x6]=x9; +circle_points(rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=reverse (draw_circle.l); +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p1; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),length p0) of p0&cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_oint_uni: +bskchar "Contour integral sign (for Unicode)"; +beginchar(chars.math_oint_uni,10u#,v_center(11/6dh#)); uni "0x222E"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos9(.5[stem,bourstem],0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +lft x6=2u; y2=y9; y8-y4=x2-x6; .5[x2,x6]=x9; +circle_points(rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=reverse (draw_circle.l); +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p1; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +p2=reverse (draw_circle.r); +(tim8,tim9)=p0 intersectiontimes p2; +(tim10-ceiling tim8,tim11)=(subpath(ceiling tim8,length p0) of p0) intersectiontimes p2; +(tim12-ceiling tim10,tim13)=(subpath(ceiling tim10,length p0) of p0) intersectiontimes p2; +(tim14-ceiling tim12,tim15)=(subpath(ceiling tim12,length p0) of p0) intersectiontimes p2; +infill subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2..reverse subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0..cycle; +infill subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2..reverse subpath(rundy(p0,tim12),rundy(p0,tim14).zpet) of p0..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_oint_text: +bskchar "\textstyle contour integral sign"; +beginchar(chars.math_oint_text,8.5u#,0,11/6dh#); uni "non"; +italcorr 3u#+curve#; +adjust_fit(0,-2.5u#); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos9(bourstem,0); x9=good.x .5w; y9=.5[h,-d]; +pos10(stem,0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=.85*2.75u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w+curve; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +lft x6=u; y2=y9; y8-y4=x2-x6; .5[x2,x6]=x9; +circle_points(rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=reverse (draw_circle.l); +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p1; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +p2=reverse (draw_circle.r); +(tim8,tim9)=p0 intersectiontimes p2; +(tim10-ceiling tim8,tim11)=(subpath(ceiling tim8,length p0) of p0) intersectiontimes p2; +(tim12-ceiling tim10,tim13)=(subpath(ceiling tim10,length p0) of p0) intersectiontimes p2; +(tim14-ceiling tim12,tim15)=(subpath(ceiling tim12,length p0) of p0) intersectiontimes p2; +infill subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2..reverse subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0..cycle; +infill subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2..reverse subpath(rundy(p0,tim12),rundy(p0,tim14).zpet) of p0..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_oint_disp: +bskchar "\displaystyle contour integral sign"; +beginchar(chars.math_oint_disp,17u#,0,4dh#); uni "non"; +italcorr 6u#+curve#; +adjust_fit(0,-5.5u#); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5bourstem; oblu:=4oblu; +path p[]; +pos9(1.5bourstem,0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,bourstem],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2.75u; +top y11l=h+o; .45[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w+curve; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(.5[stem,bourstem],180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +lft x6=u; y2=y9; y8-y4=x2-x6; .5[x2,x6]=x9; +circle_points(1.2rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=reverse (draw_circle.l); +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p1; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +p2=reverse (draw_circle.r); +(tim8,tim9)=p0 intersectiontimes p2; +(tim10-ceiling tim8,tim11)=(subpath(ceiling tim8,length p0) of p0) intersectiontimes p2; +(tim12-ceiling tim10,tim13)=(subpath(ceiling tim10,length p0) of p0) intersectiontimes p2; +(tim14-ceiling tim12,tim15)=(subpath(ceiling tim12,length p0) of p0) intersectiontimes p2; +infill subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2..reverse subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0..cycle; +infill subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2..reverse subpath(rundy(p0,tim12),rundy(p0,tim14).zpet) of p0..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_int_rect_pole_uni: +bskchar "Line integral with rectangular path around pole sign (for Unicode)"; +beginchar(chars.math_int_rect_pole_uni,10u#,v_center(11/6dh#)); uni "0x2A12"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(.5[stem,bourstem],0); x5=good.x .5w; y5=.5[h,-d]; +pos6(.5[stem,hair],0); pos7(hair,-90); pos8(fend,180); +top y6=h-like_curve; x7-lft x6l=2u; +top y7l=h+o; .5[x6r,x8]=x7; y8''=y7r-like_hair; +rt x8l=w-u; z8'=z8+.2fend*down+o*left; z8''=z8+.5(fend-currentbreadth)*dir45; +y6r:=y6l+hair; z7'r=z7r+.5hair*right; +.5[x9,x6]=.5[x7,x10]=.5[x8,x11]=x5; +pos9(stem,180); pos10(hair,-90); pos11(fend,0); +bot y9=-d+like_curve; bot y10l=-d-o; y11''=y10l+like_hair; +y9r:=y9r-hair; +z11'=z11+.2fend*up+o*right; z11''=z11+.5(fend-currentbreadth)*dir(-135); +y5r:=y5r-o; y5l:=y5l+o; +rt x1=rt x2=w-u; x3=x4; y1=y4; y2=y3; .5[z1,z3]=z5; y1-y2=x1-x3; +x1l:=x2r:=x1-(rule_thickness-currentbreadth); +x3r:=x4l:=x3+(rule_thickness-currentbreadth); +p0=z9r..z10l{left}..z11r..z11'..z11l{down}..z11''..z10r..z9l...z5r...z6r...{right}z7r + ..z8r..z8'..z8l{up}..z8''..z7l..z6l...z5l...cycle; +p1=obl(1r,2l,4r)---obl(4r,1r,3l)---obl(3l,4r,2l)---obl(2l,3l,1r)---cycle; +p2=obl(4l,3r,1l)---obl(1l,4l,2r)---obl(2r,1l,3r)---obl(3r,2r,4l)--cycle; +(tim0,tim1-1)=p0 intersectiontimes subpath(1,length p1) of p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p2; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p2; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),length p1) of p1 + ..subpath(0,rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p2,tim5),rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +dot(5); +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(8',8'',11',11''); +endchar; + +iff known chars.math_int_semicirc_pole_uni: +bskchar "Line integral with semicircular path around pole sign (for Unicode)"; +beginchar(chars.math_int_semicirc_pole_uni,10u#,v_center(11/6dh#)); uni "0x2A13"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos9(.5[stem,bourstem],0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +lft x6=2u; y2=y9; y8-y4=x2-x6; .5[x2,x6]=x9; +circle_points(rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=reverse (draw_circle.l); +p2=subpath(-2,7) of (draw_circle.r); +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p2; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p2; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p2,tim5),rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +dot(9); +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_int_not_pole_uni: +bskchar "Line integral without pole sign (for Unicode)"; +beginchar(chars.math_int_not_pole_uni,11u#,v_center(11/6dh#)); uni "0x2A14"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos9(.5[stem,bourstem],0); x9=good.x .5(w-u); y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-2u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +z16=(w-4u,y9); +lft x6=2u+(x16-x9); y2=y9; y8-y4=x2-x6; .5[x2,x6]=x16; +circle_points(rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=subpath(-2,6) of reverse (draw_circle.l); +p2=subpath(-2,6) of (draw_circle.r); +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,10) of p0) intersectiontimes p1; +(tim4-10,tim5)=(subpath(10,length p0) of p0) intersectiontimes p2; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p2; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),length p1) of p1 + ..subpath(0,rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p2,tim5),rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +dot(16); +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15'',16); +endchar; + +iff known chars.math_oint_point_uni: +bskchar "Contour integral around point sign (for Unicode)"; +beginchar(chars.math_oint_point_uni,10u#,v_center(11/6dh#)); uni "0x2A15"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos9(.5[stem,bourstem],0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +lft x6=2u; y2=y9; y8-y4=x2-x6; .5[x2,x6]=x9; +circle_points(rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=reverse (draw_circle.l); +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p1; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +infill draw_circle.r; +dot(9); +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_int_quat_uni: +bskchar "Quaternion integral sign (for Unicode)"; +beginchar(chars.math_int_quat_uni,10u#,v_center(11/6dh#)); uni "0x2A16"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(.5[stem,bourstem],0); x5=good.x .5w; y5=.5[h,-d]; +pos6(.5[stem,hair],0); pos7(hair,-90); pos8(fend,180); +top y6=h-like_curve; x7-lft x6l=2u; +top y7l=h+o; .5[x6r,x8]=x7; y8''=y7r-like_hair; +rt x8l=w-u; z8'=z8+.2fend*down+o*left; z8''=z8+.5(fend-currentbreadth)*dir45; +y6r:=y6l+hair; z7'r=z7r+.5hair*right; +.5[x9,x6]=.5[x7,x10]=.5[x8,x11]=x5; +pos9(stem,180); pos10(hair,-90); pos11(fend,0); +bot y9=-d+like_curve; bot y10l=-d-o; y11''=y10l+like_hair; +y9r:=y9r-hair; +z11'=z11+.2fend*up+o*right; z11''=z11+.5(fend-currentbreadth)*dir(-135); +y5r:=y5r-o; y5l:=y5l+o; +rt x1=rt x2=w-u; x3=x4; y1=y4; y2=y3; .5[z1,z3]=z5; y1-y2=x1-x3; +x1l:=x2r:=x1-(rule_thickness-currentbreadth); +x3r:=x4l:=x3+(rule_thickness-currentbreadth); +p0=z9r..z10l{left}..z11r..z11'..z11l{down}..z11''..z10r..z9l...z5r...z6r...{right}z7r + ..z8r..z8'..z8l{up}..z8''..z7l..z6l...z5l...cycle; +p1=obl(1r,2l,4r)---obl(4r,1r,3l)---obl(3l,4r,2l)---obl(2l,3l,1r)---cycle; +p2=obl(4l,1l,3r)---obl(3r,4l,2r)---obl(2r,3r,1l)---obl(1l,2r,4l)---cycle; +(tim0,tim1-1)=p0 intersectiontimes subpath(1,length p1) of p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p1; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),length p1) of p1 + ..subpath(0,rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +(tim8,tim9)=p0 intersectiontimes p2; +(tim10-ceiling tim8,tim11)=(subpath(ceiling tim8,length p0) of p0) intersectiontimes p2; +(tim12-ceiling tim10,tim13)=(subpath(ceiling tim10,length p0) of p0) intersectiontimes p2; +(tim14-ceiling tim12,tim15)=(subpath(ceiling tim12,length p0) of p0) intersectiontimes p2; +infill subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 + ..reverse subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0..cycle; +infill subpath(rundy(p2,tim13),length p2) of p2 + ..subpath(0,rundy(p2,tim15).zpet) of p2 + ..reverse subpath(rundy(p0,tim12),rundy(p0,tim14).zpet) of p0..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(8',8'',11',11''); +endchar; + +iff known chars.math_int_union: +bskchar "Integral sign with union"; +beginchar(chars.math_int_union,10u#,v_center(11/6dh#)); uni "0x2A1A"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +y1=y5; .5[y1,y3]=y9; y1-y3=x_height; +x1=x2=2u; x4=x5; x3=.5[x1,x4]=x9; +y2=y4=y3+(x3-x2); +pos9(.5[stem,bourstem],0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3-4)=subpath(0,10) of p0 intersectiontimes subpath(4,infinity) of p1; +(tim4-10,tim5-4)=subpath(10,length p0) of p0 intersectiontimes subpath(4,infinity) of p1; +(tim6-10,tim7)=subpath(10,length p0) of p0 intersectiontimes subpath(0,4) 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),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),infinity) of p1 + ..subpath(0,rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_int_intersection: +bskchar "Integral sign with intersection"; +beginchar(chars.math_int_intersection,10u#,v_center(11/6dh#)); uni "0x2A19"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +y1=y5; .5[y1,y3]=y9; y3-y1=x_height; +x1=x2=2u; x4=x5; x3=.5[x1,x4]=x9; +y2=y4=y3-(x3-x2); +pos9(.5[stem,bourstem],0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=z1rr---z2r...z3r...z4r---z5rr..z5l---z4l...z3l...z2l---z1l; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3-4)=subpath(0,10) of p0 intersectiontimes subpath(4,infinity) of p1; +(tim4-10,tim5-4)=subpath(10,length p0) of p0 intersectiontimes subpath(4,infinity) of p1; +(tim6-10,tim7)=subpath(10,length p0) of p0 intersectiontimes subpath(0,4) 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),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),infinity) of p1 + ..subpath(0,rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_int_arrow_left_hook: +bskchar "Integral sign with leftwards arrow with hook"; +beginchar(chars.math_int_arrow_left_hook,15u#,v_center(11/6dh#)); uni "0x2A17"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos1(rule_thickness,90); pos2(rule_thickness,180); pos3(rule_thickness,270); +lft x0=u; lft x1=w-4u; y0=y1l=math_axis; +x2l=w-u; x3=x1+hair; y2=.5[y1,y3]; y3l=math_axis-4u; x3r:=x3r+hair; +pos9(.5[stem,bourstem],0); x9=good.x .5w+u; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-3u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=(reverse sipka(0,1))---z1l..{down}z2r..{left}z3l..{right}z3r..{up}z2l..z1r---z0a.l; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3-10)=subpath(0,10) of p0 intersectiontimes subpath(10,infinity) of p1; +(tim4-10,tim5-10)=subpath(10,length p0) of p0 intersectiontimes subpath(10,infinity) of p1; +(tim6-10,tim7)=subpath(10,length p0) of p0 intersectiontimes subpath(0,9) 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),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),infinity) of p1 + ..subpath(0,rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +penlabels(2,3,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_int_times: +bskchar "Integral sign with times sign"; +beginchar(chars.math_int_times,10u#,v_center(11/6dh#)); uni "0x2A18"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos0(rule_thickness,135); pos1(rule_thickness,135); +pos2(rule_thickness,45); pos3(rule_thickness,45); +x0r=x2l=1.5u; x1l=x3r; .5[x0r,x1l]=x9=good.x .5w; +y0l=y3l; y1r=y2r; .5[y1r,y0l]=y9=.5[h,-d]; y2r-y0l=x1l-x2l; +z4=whatever[z3l,z2l]=whatever[z0l,z1l]; +z5=whatever[z3r,z2r]=whatever[z0l,z1l]; +z6=whatever[z3r,z2r]=whatever[z0r,z1r]; +z7=whatever[z3l,z2l]=whatever[z0r,z1r]; +pos9(.5[stem,bourstem],0); +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +bskpoints(0,1,hair,hair); bskpoints(3,2,.5hair,.5hair); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +{{ save oblu; oblu:=3f_obl; + p1=z0l---obl(4,0l,3l)---z3l..z3rr---obl(5,3r,1l)---z1ll..z1r---obl(6,1r,2r)---z2r + ..z2ll---obl(7,2l,0r)---z0rr..z0l; +}}; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3-5)=subpath(0,10) of p0 intersectiontimes subpath(5,infinity) of p1; +(tim4-10,tim5-5)=subpath(10,length p0) of p0 intersectiontimes subpath(5,infinity) of p1; +(tim6-10,tim7)=subpath(10,length p0) of p0 intersectiontimes subpath(0,4) 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),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),infinity) of p1 + ..subpath(0,rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +penlabels(0,1,2,3,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_oint_clock_uni: +bskchar "Clockwise contour integral sign (for Unicode)"; +beginchar(chars.math_oint_clock_uni,10u#,v_center(11/6dh#)); uni "0x2232"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos9(.5[stem,bourstem],0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +lft x6=2u; y2=y9; y8-y4=x2-x6; .5[x2,x6]=x9; +circle_points(rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=reverse (draw_circle.l); +{{ save arrsize, arrwidth; arrsize=arrwidth=curve; + pos17(rule_thickness,0); + .5[z17r,z16]=z2; x17r=x16; y17-y16=arrsize; + p4:=reverse (sipka(16,17)); +}}; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p1; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p1; +(tim16,tim17-2)=p1 intersectiontimes subpath(2,4) of p4; +tim18=xpart(p1 intersectiontimes ((x9,ypart(point infinity of p4))--(w,ypart(point infinity of p4)))); +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim16).zpet) of p1 + ..subpath(rundy(p4,tim17),rundy(p4,(length p4,2/3(x16e-x17r))).zpet) of p4 + ..subpath(rundy(p1,tim18),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +p2=reverse (draw_circle.r); +(tim8,tim9)=p0 intersectiontimes p2; +(tim10-ceiling tim8,tim11)=(subpath(ceiling tim8,length p0) of p0) intersectiontimes p2; +(tim12-ceiling tim10,tim13)=(subpath(ceiling tim10,length p0) of p0) intersectiontimes p2; +(tim14-ceiling tim12,tim15)=(subpath(ceiling tim12,length p0) of p0) intersectiontimes p2; +(tim19,tim20)=p2 intersectiontimes subpath(0,4) of p4; +tim21=xpart(p2 intersectiontimes ((x9,ypart(point 0 of p4))--(w,ypart(point 0 of p4)))); +infill subpath(rundy(p2,tim9),rundy(p2,tim19).zpet) of p2 + ..(reverse subpath(rundy(p4,(0,2/3(x16e-x17r))),rundy(p4,tim20).zpet) of p4) + ..subpath(rundy(p2,tim21),rundy(p2,tim11).zpet) of p2 + ..reverse subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0..cycle; +infill subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2..reverse subpath(rundy(p0,tim12),rundy(p0,tim14).zpet) of p0..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_oint_anticlock_uni: +bskchar "Anticlockwise contour integral sign (for Unicode)"; +beginchar(chars.math_oint_anticlock_uni,10u#,v_center(11/6dh#)); uni "0x2233"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos9(.5[stem,bourstem],0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +lft x6=2u; y2=y9; y8-y4=x2-x6; .5[x2,x6]=x9; +circle_points(rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=reverse (draw_circle.l); +{{ save arrsize, arrwidth; arrsize=arrwidth=curve; + pos17(rule_thickness,0); + 1/3[y17r,y16]=y2; x17r=x16=x2; y16-y17=arrsize; + p4:=reverse (sipka(16,17)); +}}; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p1; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p1; +(tim16,tim17)=p1 intersectiontimes subpath(0,4) of p4; +tim18=xpart(p1 intersectiontimes ((x9,ypart(point 0 of p4))--(w,ypart(point 0 of p4)))); +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim18).zpet) of p1 + ..subpath(rundy(p4,(0,2/3(x17r-x16e))),rundy(p4,tim17).zpet) of p4 + ..subpath(rundy(p1,tim18),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +p2=reverse (draw_circle.r); +(tim8,tim9)=p0 intersectiontimes p2; +(tim10-ceiling tim8,tim11)=(subpath(ceiling tim8,length p0) of p0) intersectiontimes p2; +(tim12-ceiling tim10,tim13)=(subpath(ceiling tim10,length p0) of p0) intersectiontimes p2; +(tim14-ceiling tim12,tim15)=(subpath(ceiling tim12,length p0) of p0) intersectiontimes p2; +(tim19,tim20-2)=p2 intersectiontimes subpath(2,4) of p4; +tim21=xpart(p2 intersectiontimes ((x9,ypart(point infinity of p4))--(w,ypart(point infinity of p4)))); +infill subpath(rundy(p2,tim9),rundy(p2,tim21).zpet) of p2 + ..(reverse subpath(rundy(p4,tim20),rundy(p4,length p4).zpet) of p4) + ..subpath(rundy(p2,tim19),rundy(p2,tim11).zpet) of p2 + ..reverse subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0..cycle; +infill subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2..reverse subpath(rundy(p0,tim12),rundy(p0,tim14).zpet) of p0..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_oint_double_uni: +bskchar "Surface integral sign (for Unicode)"; +beginchar(chars.math_oint_double_uni,15.5u#,v_center(11/6dh#)); uni "0x222F"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; oblu:=2oblu; +path p[]; numeric tim[], fend; fend:=1.5stem; +pos9(.5[stem,bourstem],0); x9=good.x 5u; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +lft x6=u; y2=y9; y8-y4=1/2(x2-x6); rt x2=w-u; +top y10=h-like_curve; +x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=9u; +z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(.5[stem,hair],180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +circle_points(rule_thickness); +p0:=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r + ...z10r...{right}z11r..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1:=p0 shifted (5.5u,0); +p2:=reverse(draw_circle.l); p4:=subpath(-1,7) of p2; +p3:=reverse(draw_circle.r); +(tim0,tim1-4)=p1 intersectiontimes subpath(4,8) of p2; +(tim2,tim3-6)=p1 intersectiontimes subpath(6,8) of p2; +(tim4-10,tim5)=subpath(10,length p1) of p1 intersectiontimes p4; +(tim6,tim7)=p0 intersectiontimes subpath(0,2) of p4; +(tim8-10,tim9)=subpath(10,length p0) of p0 intersectiontimes subpath(0,2) of p2; +(tim10-10,tim11-2)=subpath(10,length p0) of p0 intersectiontimes subpath(2,6) of p2; +(tim12,tim13-2)=p0 intersectiontimes subpath(2,6) of p2; +(tim14-10,tim15-2)=subpath(10,length p1) of p1 intersectiontimes subpath(2,6) of p2; +(tim16,tim17)=p0 intersectiontimes subpath(0,2) of p3; +(tim18,tim19-2)=p0 intersectiontimes subpath(2,4) of p3; +(tim20-10,tim21-4)=subpath(10,length p1) of p1 intersectiontimes subpath(4,6) of p3; +(tim22-10,tim23-6)=subpath(10,length p1) of p1 intersectiontimes subpath(6,8) of p3; +(tim24-10,tim25)=subpath(10,length p0) of p0 intersectiontimes p3; +(tim26-10,tim27-2)=subpath(10,length p0) of p0 intersectiontimes subpath(2,4) of p3; +(tim28,tim29-4)=p1 intersectiontimes subpath(4,6) of p3; +(tim30,tim31-6)=p1 intersectiontimes subpath(6,8) of p3; +filldraw subpath(0,rundy(p1,tim0).zpet) of p1 + ..subpath(rundy(p2,tim1),rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p1,tim2),rundy(p1,tim4).zpet) of p1 + ..subpath(rundy(p4,tim5),rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p0,tim6),rundy(p0,tim8).zpet) of p0 + ..subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 + ..subpath(rundy(p0,tim10),length p0) of p0 + ..subpath(0,rundy(p0,tim12).zpet) of p0 + ..subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2 + ..subpath(rundy(p1,tim14),length p1) of p1..cycle; +infill subpath(0,rundy(p3,tim17).zpet) of p3 + ..(reverse subpath(rundy(p0,tim18),rundy(p0,tim16).zpet) of p0) + ..subpath(rundy(p3,tim19),rundy(p3,tim21).zpet) of p3 + ..(reverse subpath(rundy(p1,tim22),rundy(p1,tim20).zpet) of p1) + ..subpath(rundy(p3,tim23),8) of p3..cycle; +infill subpath(rundy(p0,tim24),rundy(p0,tim26).zpet) of p0 + ..(reverse subpath(rundy(p3,tim25),rundy(p3,tim27).zpet) of p3)..cycle; +infill subpath(rundy(p1,tim28),rundy(p1,tim30).zpet) of p1 + ..(reverse subpath(rundy(p3,tim29),rundy(p3,tim31).zpet) of p3)..cycle; +penlabels(9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_oint_double_uni_alt: +bskchar "Surface integral sign (for Unicode)---alternative"; +beginchar(chars.math_oint_double_uni_alt,15.5u#,v_center(11/6dh#)); uni "non";%"0x222F"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], fend; fend:=1.5stem; oblu:=2oblu; +pos9(.5[stem,bourstem],0); x9=good.x 5u; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +lft x6=u; y2=y9; y8-y4=1/2(x2-x6); rt x2=w-u; +top y10=h-like_curve; +x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=9u; +z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(.5[stem,hair],180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +circle_points(rule_thickness); +p0:=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r + ...z10r...{right}z11r..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1:=p0 shifted (5.5u,0); +p2:=reverse(draw_circle.l); p4:=subpath(-1,7) of p2; +p3:=draw_circle.r; +(tim0,tim1-4)=p1 intersectiontimes subpath(4,8) of p2; +(tim2,tim3-6)=p1 intersectiontimes subpath(6,8) of p2; +(tim4-10,tim5)=subpath(10,length p1) of p1 intersectiontimes p4; +(tim6,tim7)=p0 intersectiontimes subpath(0,2) of p4; +(tim8-10,tim9)=subpath(10,length p0) of p0 intersectiontimes subpath(0,2) of p2; +(tim10-10,tim11-2)=subpath(10,length p0) of p0 intersectiontimes subpath(2,6) of p2; +(tim12,tim13-2)=p0 intersectiontimes subpath(2,6) of p2; +(tim14-10,tim15-2)=subpath(10,length p1) of p1 intersectiontimes subpath(2,6) of p2; +filldraw subpath(0,rundy(p1,tim0).zpet) of p1 + ..subpath(rundy(p2,tim1),rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p1,tim2),rundy(p1,tim4).zpet) of p1 + ..subpath(rundy(p4,tim5),rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p0,tim6),rundy(p0,tim8).zpet) of p0 + ..subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 + ..subpath(rundy(p0,tim10),length p0) of p0 + ..subpath(0,rundy(p0,tim12).zpet) of p0 + ..subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2 + ..subpath(rundy(p1,tim14),length p1) of p1..cycle; +infill p3; +penlabels(9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_oint_triple_uni: +bskchar "Volume integral sign (for Unicode)"; +beginchar(chars.math_oint_triple_uni,21u#,v_center(11/6dh#)); uni "non"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; oblu:=2oblu; +path p[]; numeric tim[], fend; fend:=1.5stem; +pos9(.5[stem,bourstem],0); x9=good.x 5u; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +lft x6=u; y2=y9; y8-y4=.35(x2-x6); rt x2=w-u; +top y10=h-like_curve; +x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=9u; +z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(.5[stem,hair],180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +circle_points(rule_thickness); +p0:=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r + ...z10r...{right}z11r..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1:=p0 shifted (11u,0); +p5:=p0 shifted (5.5u,0); +p2:=reverse(draw_circle.l); p4:=subpath(-1,7) of p2; +p3:=reverse(draw_circle.r); p6:=subpath(-2,6) of p3; +(tim0,tim1-4)=p1 intersectiontimes subpath(4,8) of p2; +(tim2,tim3-6)=p1 intersectiontimes subpath(6,8) of p2; +(tim4-10,tim5)=subpath(10,length p1) of p1 intersectiontimes p4; +(tim6,tim7)=p0 intersectiontimes subpath(0,2) of p4; +(tim8-10,tim9)=subpath(10,length p0) of p0 intersectiontimes subpath(0,2) of p2; +(tim10-10,tim11-2)=subpath(10,length p0) of p0 intersectiontimes subpath(2,6) of p2; +(tim12,tim13-2)=p0 intersectiontimes subpath(2,6) of p2; +(tim14-10,tim15-2)=subpath(10,length p1) of p1 intersectiontimes subpath(2,6) of p2; +(tim16,tim17)=p0 intersectiontimes subpath(0,2) of p3; +(tim18,tim19-2)=p0 intersectiontimes subpath(2,4) of p3; +(tim20-10,tim21-4)=subpath(10,length p1) of p1 intersectiontimes subpath(4,6) of p3; +(tim22-10,tim23)=subpath(10,length p1) of p1 intersectiontimes subpath(0,4) of p6; +(tim24-10,tim25)=subpath(10,length p0) of p0 intersectiontimes p3; +(tim26-10,tim27-2)=subpath(10,length p0) of p0 intersectiontimes subpath(2,4) of p3; +(tim28,tim29-4)=p1 intersectiontimes subpath(4,6) of p3; +(tim30,tim31-6)=p1 intersectiontimes subpath(6,8) of p3; +(tim32,tim33)=p5 intersectiontimes subpath(0,4) of p4; +(tim34-10,tim35)=subpath(10,length p5) of p5 intersectiontimes subpath(0,4) of p4; +(tim36-10,tim37-2)=subpath(10,length p5) of p5 intersectiontimes subpath(2,6) of p2; +(tim38,tim39-2)=p5 intersectiontimes subpath(2,6) of p2; +filldraw subpath(0,rundy(p1,tim0).zpet) of p1 + ..subpath(rundy(p2,tim1),rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p1,tim2),rundy(p1,tim4).zpet) of p1 + ..subpath(rundy(p4,tim5),rundy(p4,tim33).zpet) of p4 + ..subpath(rundy(p5,tim32),rundy(p5,tim34).zpet) of p5 + ..subpath(rundy(p4,tim35),rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p0,tim6),rundy(p0,tim8).zpet) of p0 + ..subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 + ..subpath(rundy(p0,tim10),length p0) of p0 + ..subpath(0,rundy(p0,tim12).zpet) of p0 + ..subpath(rundy(p2,tim13),rundy(p2,tim37).zpet) of p2 + ..subpath(rundy(p5,tim36),length p5) of p5 + ..subpath(0,rundy(p5,tim38).zpet) of p5 + ..subpath(rundy(p2,tim39),rundy(p2,tim15).zpet) of p2 + ..subpath(rundy(p1,tim14),length p1) of p1..cycle; +(tim40,tim41)=subpath(0,2) of p3 intersectiontimes p5; +(tim42-2,tim43)=subpath(2,4) of p3 intersectiontimes p5; +(tim44-2,tim45)=subpath(2,5) of p3 intersectiontimes subpath(0,10) of p5; +(tim46,tim47)=subpath(0,4) of p6 intersectiontimes subpath(0,10) of p5; +infill subpath(rundy(p3,tim40),rundy(p3,tim17).zpet) of p3 + ..(reverse subpath(rundy(p0,tim18),rundy(p0,tim16).zpet) of p0) + ..subpath(rundy(p3,tim19),rundy(p3,tim42).zpet) of p3 + ..(reverse subpath(rundy(p5,tim41),rundy(p5,tim43).zpet) of p5)..cycle; +infill subpath(rundy(p3,tim44),rundy(p3,tim21).zpet) of p3 + ..(reverse subpath(rundy(p1,tim22),rundy(p1,tim20).zpet) of p1) + ..subpath(rundy(p6,tim23),rundy(p6,tim46).zpet) of p6 + ..(reverse subpath(rundy(p5,tim45),rundy(p5,tim47).zpet) of p5) + ..cycle; +infill subpath(rundy(p0,tim24),rundy(p0,tim26).zpet) of p0 + ..(reverse subpath(rundy(p3,tim25),rundy(p3,tim27).zpet) of p3)..cycle; +infill subpath(rundy(p1,tim28),rundy(p1,tim30).zpet) of p1 + ..(reverse subpath(rundy(p3,tim29),rundy(p3,tim31).zpet) of p3)..cycle; +penlabels(9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_oint_triple_uni_var: +bskchar "Volume integral sign (for Unicode, variant)"; +beginchar(chars.math_oint_triple_uni_var,19u#,v_center(11/6dh#)); uni "0x2230"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; oblu:=2oblu; +path p[]; numeric tim[], fend; fend:=1.5stem; +pos9(.5[stem,bourstem],0); x9=good.x 5u; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +lft x6=u; y2=y9; y8-y4=.35(x2-x6); rt x2=w-u; +top y10=h-like_curve; +x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=9u; +z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(.5[stem,hair],180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +circle_points(rule_thickness); +p0:=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r + ...z10r...{right}z11r..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1:=p0 shifted -z1 scaled .9 shifted z1 shifted (9.5u,0); +p5:=p0 shifted -z1 scaled .95 shifted z1 shifted (5u,0); +p2:=reverse(draw_circle.l); p4:=subpath(-1,7) of p2; +p3:=reverse(draw_circle.r); p6:=subpath(-2,6) of p3; +(tim0,tim1-4)=p1 intersectiontimes subpath(4,8) of p2; +(tim2,tim3-6)=p1 intersectiontimes subpath(6,8) of p2; +(tim4-10,tim5)=subpath(10,length p1) of p1 intersectiontimes p4; +(tim6,tim7)=p0 intersectiontimes subpath(0,2) of p4; +(tim8-10,tim9)=subpath(10,length p0) of p0 intersectiontimes subpath(0,2) of p2; +(tim10-10,tim11-2)=subpath(10,length p0) of p0 intersectiontimes subpath(2,6) of p2; +(tim12,tim13-2)=p0 intersectiontimes subpath(2,6) of p2; +(tim14-10,tim15-2)=subpath(10,length p1) of p1 intersectiontimes subpath(2,6) of p2; +(tim16,tim17)=p0 intersectiontimes subpath(0,4) of p6; +(tim18,tim19-2)=p0 intersectiontimes subpath(2,4) of p3; +(tim20-10,tim21-4)=subpath(10,length p1) of p1 intersectiontimes subpath(4,6) of p3; +(tim22-10,tim23)=subpath(10,length p1) of p1 intersectiontimes subpath(0,4) of p6; +(tim24-10,tim25)=subpath(10,length p0) of p0 intersectiontimes p3; +(tim26-10,tim27-2)=subpath(10,length p0) of p0 intersectiontimes subpath(2,4) of p3; +(tim28,tim29-4)=p1 intersectiontimes subpath(4,6) of p3; +(tim30,tim31-6)=p1 intersectiontimes subpath(6,8) of p3; +(tim32,tim33)=p5 intersectiontimes subpath(0,4) of p4; +(tim34-10,tim35)=subpath(10,length p5) of p5 intersectiontimes subpath(0,4) of p4; +(tim36-10,tim37-2)=subpath(10,length p5) of p5 intersectiontimes subpath(2,6) of p2; +(tim38,tim39-2)=p5 intersectiontimes subpath(2,6) of p2; +filldraw subpath(0,rundy(p1,tim0).zpet) of p1 + ..subpath(rundy(p2,tim1),rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p1,tim2),rundy(p1,tim4).zpet) of p1 + ..subpath(rundy(p4,tim5),rundy(p4,tim33).zpet) of p4 + ..subpath(rundy(p5,tim32),rundy(p5,tim34).zpet) of p5 + ..subpath(rundy(p4,tim35),rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p0,tim6),rundy(p0,tim8).zpet) of p0 + ..subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 + ..subpath(rundy(p0,tim10),length p0) of p0 + ..subpath(0,rundy(p0,tim12).zpet) of p0 + ..subpath(rundy(p2,tim13),rundy(p2,tim37).zpet) of p2 + ..subpath(rundy(p5,tim36),length p5) of p5 + ..subpath(0,rundy(p5,tim38).zpet) of p5 + ..subpath(rundy(p2,tim39),rundy(p2,tim15).zpet) of p2 + ..subpath(rundy(p1,tim14),length p1) of p1..cycle; +(tim40,tim41-10)=subpath(0,4) of p6 intersectiontimes subpath(10,length p5) of p5; +(tim42-2,tim43-10)=subpath(2,5) of p3 intersectiontimes subpath(10,length p5) of p5; +(tim44-2,tim45)=subpath(2,5) of p3 intersectiontimes subpath(0,10) of p5; +(tim46,tim47)=subpath(0,4) of p6 intersectiontimes subpath(0,10) of p5; +infill subpath(rundy(p6,tim40),rundy(p6,tim17).zpet) of p6 + ..(reverse subpath(rundy(p0,tim18),rundy(p0,tim16).zpet) of p0) + ..subpath(rundy(p3,tim19),rundy(p3,tim42).zpet) of p3 + ..(reverse subpath(rundy(p5,tim41),rundy(p5,tim43).zpet) of p5)..cycle; +infill subpath(rundy(p3,tim44),rundy(p3,tim21).zpet) of p3 + ..(reverse subpath(rundy(p1,tim22),rundy(p1,tim20).zpet) of p1) + ..subpath(rundy(p6,tim23),rundy(p6,tim46).zpet) of p6 + ..(reverse subpath(rundy(p5,tim45),rundy(p5,tim47).zpet) of p5) + ..cycle; +infill subpath(rundy(p0,tim24),rundy(p0,tim26).zpet) of p0 + ..(reverse subpath(rundy(p3,tim25),rundy(p3,tim27).zpet) of p3)..cycle; +infill subpath(rundy(p1,tim28),rundy(p1,tim30).zpet) of p1 + ..(reverse subpath(rundy(p3,tim29),rundy(p3,tim31).zpet) of p3)..cycle; +penlabels(9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_int_clock_uni: +bskchar "Clockwise integral sign (for Unicode)"; +beginchar(chars.math_int_clock_uni,10u#,v_center(11/6dh#)); uni "0x2231"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos9(.5[stem,bourstem],0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +lft x6=2u; y2=y9-.25(x2-x6); y8-y4=x2-x6; .5[x2,x6]=x9; +circle_points(rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=reverse (draw_circle.l); +p2=reverse (draw_circle.r); +{{ save arrsize, arrwidth; arrsize=arrwidth=curve; + pos17(rule_thickness,0); + .5[z17r,z16]=z2; x17r=x16; y17-y16=arrsize; + p4:=reverse (sipka(16,17)); +}}; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p1; +(tim6,tim7)=p0 intersectiontimes p2; +(tim8-ceiling tim6,tim9)=(subpath(ceiling tim6,length p0) of p0) intersectiontimes p2; +(tim10-ceiling tim8,tim11)=(subpath(ceiling tim8,length p0) of p0) intersectiontimes p2; +tim12=xpart(p1 intersectiontimes ((x9,ypart(point infinity of p4))--(w,ypart(point infinity of p4)))); +tim13=xpart(p2 intersectiontimes ((x9,ypart(point 0 of p4))--(w,ypart(point 0 of p4)))); +filldraw subpath(0,rundy(p0,tim8).zpet) of p0 + ..(reverse subpath(rundy(p2,tim13),rundy(p2,tim9).zpet) of p2) + ..subpath(rundy(p4,(0,2/3(x16e-x17r))),rundy(p4,(length p4,2/3(x16e-x17r))).zpet) of p4 + ..subpath(rundy(p1,tim12),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),2) of p1 + ..(reverse subpath(rundy(p2,tim11),2) of p2) + ..subpath(rundy(p0,tim10),length p0) of p0..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_int_anticlock_uni: +bskchar "Anticlockwise integral sign (for Unicode)"; +beginchar(chars.math_int_anticlock_uni,10u#,v_center(11/6dh#)); uni "0x2A11"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos9(.5[stem,bourstem],0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +lft x6=2u; y2=y9+.25(x2-x6); y8-y4=x2-x6; .5[x2,x6]=x9; +circle_points(rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=reverse (draw_circle.l); +p2=reverse (draw_circle.r); +{{ save arrsize, arrwidth; arrsize=arrwidth=curve; + pos17(rule_thickness,0); + 1/3[y17r,y16]=y2; x17r=x16=x2; y16-y17=arrsize; + p4:=reverse (sipka(16,17)); +}}; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p1; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p1; +(tim8,tim9)=p0 intersectiontimes p2; +(tim10-ceiling tim8,tim11)=(subpath(ceiling tim8,length p0) of p0) intersectiontimes p2; +(tim12-ceiling tim10,tim13)=(subpath(ceiling tim10,length p0) of p0) intersectiontimes p2; +(tim14-ceiling tim12,tim15)=(subpath(ceiling tim12,length p0) of p0) intersectiontimes p2; +(tim16,tim17)=p1 intersectiontimes subpath(0,4) of p4; +tim18=xpart(p1 intersectiontimes ((x9,ypart(point 0 of p4))--(w,ypart(point 0 of p4)))); +(tim19,tim20-2)=p2 intersectiontimes subpath(4,length p4) of p4; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim18).zpet) of p1 + ..subpath(rundy(p4,(0,.5(x17r-x16e))),rundy(p4,length p4).zpet) of p4 + ..(reverse subpath(rundy(p2,tim9),rundy(p2,(tim19,f_obl)).zpet) of p2) + ..subpath(rundy(p0,tim8),rundy(p0,tim14).zpet) of p0 + ..(reverse subpath(2,rundy(p2,tim15).zpet) of p2) + ..subpath(2,rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_oint_circ_uni: +bskchar "Circulation integral sign (for Unicode)"; +beginchar(chars.math_oint_circ_uni,10u#,v_center(11/6dh#)); uni "0x2A10"; +italcorr asc_height#*slant-2u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric fend, tim[]; fend:=1.5stem; oblu:=2oblu; +path p[]; +pos9(.5[stem,bourstem],0); x9=good.x .5w; y9=.5[h,-d]; +pos10(.5[stem,hair],0); pos11(hair,-90); pos12(fend,180); +top y10=h-like_curve; x11-lft x10l=2u; +top y11l=h+o; .5[x10r,x12]=x11; y12''=y11r-like_hair; +rt x12l=w-u; z12'=z12+.2fend*down+o*left; z12''=z12+.5(fend-currentbreadth)*dir45; +y10r:=y10l+hair; z11'r=z11r+.5hair*right; +.5[x13,x10]=.5[x11,x14]=.5[x12,x15]=x9; +pos13(stem,180); pos14(hair,-90); pos15(fend,0); +bot y13=-d+like_curve; bot y14l=-d-o; y15''=y14l+like_hair; +y13r:=y13r-hair; +z15'=z15+.2fend*up+o*right; z15''=z15+.5(fend-currentbreadth)*dir(-135); +y9r:=y9r-o; y9l:=y9l+o; +lft x6=2u; y2=y9; y8-y4=x2-x6; .5[x2,x6]=x9; +circle_points(rule_thickness); +p0=z13r..z14l{left}..z15r..z15'..z15l{down}..z15''..z14r..z13l...z9r...z10r...{right}z11r + ..z12r..z12'..z12l{up}..z12''..z11l..z10l...z9l...cycle; +p1=reverse (draw_circle.l); +p2=reverse (draw_circle.r); +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-ceiling tim0,tim3)=(subpath (ceiling tim0,length p0) of p0) intersectiontimes p1; +(tim4-ceiling tim2,tim5)=(subpath(ceiling tim2,length p0) of p0) intersectiontimes p1; +(tim6-ceiling tim4,tim7)=(subpath(ceiling tim4,length p0) of p0) intersectiontimes p1; +(tim8,tim9)=p0 intersectiontimes p2; +(tim10-ceiling tim8,tim11)=(subpath(ceiling tim8,length p0) of p0) intersectiontimes p2; +(tim12-ceiling tim10,tim13)=(subpath(ceiling tim10,length p0) of p0) intersectiontimes p2; +(tim14-ceiling tim12,tim15)=(subpath(ceiling tim12,length p0) of p0) intersectiontimes p2; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),5) of p1 + ..(reverse subpath(rundy(p2,tim9),5) of p2) + ..subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0 + ..(reverse subpath(7,rundy(p2,tim11).zpet) of p2) + ..subpath(7,rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0&cycle; +infill subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2..reverse subpath(rundy(p0,tim12),rundy(p0,tim14).zpet) of p0..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(12',12'',15',15''); +endchar; + +iff known chars.math_int_finite_uni: +bskchar "Finite part integral sign (for Unicode)"; +beginchar(chars.math_int_finite_uni,10u#,v_center(11/6dh#)); uni "0x2A0D"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x .5w; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +pos8(rule_thickness,90); pos9(rule_thickness,90); +top y2=h-like_curve; +x3-lft x2l=2u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=w-u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +.5[z8,z9]=z1; y8=y9; x8=2u; +bskpoints(8,9,rule_thickness,rule_thickness); +p0:=z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +p1:=z8l--z9ll; +p2:=z9r--z8rr; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3)=p0 intersectiontimes p2; +(tim4-10,tim5)=subpath(10,length p0) of p0 intersectiontimes p2; +(tim6-10,tim7)=subpath(10,length p0) of p0 intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1 + ..subpath(0,rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p2,tim5),infinity) of p2 + ..subpath(0,rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(4',4'',7',7'',8rr,9ll); +endchar; + +iff known chars.math_int_average_uni: +bskchar "Integral average sign (for Unicode)"; +beginchar(chars.math_int_average_uni,10u#,v_center(11/6dh#)); uni "0x2A0F"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x .5w; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +top y2=h-like_curve; +x3-lft x2l=2u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=w-u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +.5[z8,z9]=z1; x8=2u; y8=y1-curve; +pos8(rule_thickness,angle(z8-z9)-90); pos9(rule_thickness,angle(z8-z9)-90); +bskpoints(8,9,rule_thickness,rule_thickness); +p0:=z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +p1:=z8l--z9ll; +p2:=z9r--z8rr; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3)=p0 intersectiontimes p2; +(tim4-10,tim5)=subpath(10,length p0) of p0 intersectiontimes p2; +(tim6-10,tim7)=subpath(10,length p0) of p0 intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1 + ..subpath(0,rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p2,tim5),infinity) of p2 + ..subpath(0,rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(4',4'',7',7'',8rr,9ll); +endchar; + +iff known chars.math_int_dbar_uni: +bskchar "Integral sign with double stroke (for Unicode)"; +beginchar(chars.math_int_dbar_uni,10u#,v_center(11/6dh#)); uni "0x2A0E"; +italcorr asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], fend; fend:=1.5stem; +pos1(.5[stem,bourstem],0); x1=good.x .5w; y1=.5[h,-d]; +pos2(.5[stem,hair],0); pos3(hair,-90); pos4(fend,180); +pos8(rule_thickness,90); pos9(rule_thickness,90); +pos10(rule_thickness,90); pos11(rule_thickness,90); +top y2=h-like_curve; +x3-lft x2l=2u; +top y3l=h+o; .5[x2r,x4]=x3; y4''=y3r-like_hair; +rt x4l=w-u; +z4'=z4+.2fend*down+o*left; z4''=z4+.5(fend-currentbreadth)*dir45; +y2r:=y2l+hair; z3'r=z3r+.5hair*right; +.5[x5,x2]=.5[x3,x6]=.5[x4,x7]=x1; +pos5(.5[stem,hair],180); pos6(hair,-90); pos7(fend,0); +bot y5=-d+like_curve; bot y6l=-d-o; y7''=y6l+like_hair; +y5r:=y5r-hair; +z7'=z7+.2fend*up+o*right; z7''=z7+.5(fend-currentbreadth)*dir(-135); +y1r:=y1r-o; y1l:=y1l+o; +.5[z8,z11]=z1; y8=y9; y10=y11; x8=x10=2u; x9=x11; y10-y8=4rule_thickness; +bskpoints(8,9,rule_thickness,rule_thickness); +bskpoints(11,10,rule_thickness,rule_thickness); +p0:=z5r..z6l{left}..z7r..z7'..z7l{down}..z7''..z6r..z5l...z1r + ...z2r...{right}z3r..z4r..z4'..z4l{up}..z4''..z3l..z2l...z1l...cycle; +p1:=z8l--z9ll; +p2:=z9r--z8rr; +p3:=z10ll--z11l; +p4:=z11rr--z10r; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3)=p0 intersectiontimes p2; +(tim4-10,tim5)=subpath(10,length p0) of p0 intersectiontimes p2; +(tim6-10,tim7)=subpath(10,length p0) of p0 intersectiontimes p1; +(tim8,tim9)=p0 intersectiontimes p3; +(tim10,tim11)=p0 intersectiontimes p4; +(tim12-10,tim13)=subpath(10,length p0) of p0 intersectiontimes p4; +(tim14-10,tim15)=subpath(10,length p0) of p0 intersectiontimes p3; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1 + ..subpath(0,rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p0,tim2),rundy(p0,tim8).zpet) of p0 + ..subpath(rundy(p3,tim9),infinity) of p3 + ..subpath(0,rundy(p4,tim11).zpet) of p4 + ..subpath(rundy(p0,tim10),rundy(p0,tim12).zpet) of p0 + ..subpath(rundy(p4,tim13),infinity) of p4 + ..subpath(0,rundy(p3,tim15).zpet) of p3 + ..subpath(rundy(p0,tim14),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p2,tim5),infinity) of p2 + ..subpath(0,rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),length p0) of p0..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(4',4'',7',7'',8rr,9ll,10ll,11rr); +endchar; + +iff known chars.math_sum_integral: +bskchar "Summation sign with integral"; +beginchar(chars.math_sum_integral,12u#,v_center(10/6dh#)); uni "0x2A0B"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu.more:=2oblu; +numeric alpha, top_stem, top_arm, bot_arm, fend; fend:=1.5stem; +top_arm=Vround rule_thickness; +bot_arm=Vround .5[cap_stem,rule_thickness]; +pos1(cap_stem,0); pos2(cap_stem,0); +pos7(.5[stem,bourstem],0); x7=good.x .5w; y7=.5[h,-d]; +pos8(.5[stem,hair],0); pos9(hair,-90); pos10(fend,180); +y2-y1=2/3(h+d); .5[y1,y2]=.5[h,-d]; +lft x1l=lft x2l-o=.5u; +bot y3r=y1; top y4r=y2; rt x3l=w-u; x4r=w-2u; +pos3(beak,-90); z3d=(x3r-2ser_height,y1+bot_arm); +pos4(.65beak,90); z4d=(x4r-ser_height,y2r.b); +z3l.o=z3l+o*left; z4l.o=z4l+o*left; +x5r=.5w-o; y5=.5[h,-d]+cap_hair; +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; +z1r-z1r.b=bot_arm*down; +y1'=y1+2bot_arm; z1'=z6l+whatever*(z1r.b-z6r); +z5'=whatever[z2l+top_arm*down,z5l]=whatever[z6l,z1']; +y2r.b=y2-bot_arm; z2r.b=z5r+whatever*(z2l-z5'); +top y8=h-like_curve; +x9-lft x8l=2u; +top y9l=h+o; .5[x8r,x10]=x9; y10''=y9r-like_hair; +rt x10l=w-2u; +z10'=z10+.2fend*down+o*left; z10''=z10+.5(fend-currentbreadth)*dir45; +y8r:=y8l+hair; z9'r=z9r+.5hair*right; +.5[x11,x8]=.5[x9,x12]=.5[x10,x13]=x7; +pos11(.5[stem,hair],180); pos12(hair,-90); pos13(fend,0); +bot y11=-d+like_curve; bot y12l=-d-o; y13''=y12l+like_hair; +y11r:=y11r-hair; +z13'=z13+.2fend*up+o*right; z13''=z13+.5(fend-currentbreadth)*dir(-135); +y7r:=y7r-o; y7l:=y7l+o; +p0:=z3l..{dir-110}z3l.o..z3d---obl(1r.b,3d,5r).more---obl(5r,1r.b,2r.b).more---obl(2r.b,5r,4d).more---z4d..z4l.o{dir-70}..z4l---z4r+hair*down..z4r+hair*left---obl(2l,4r,5')---obl(5',2l,1l)---obl(1l,5',3r)---obl(3r,1r,3l); +p1:=z11r..z12l{left}..z13r..z13'..z13l{down}..z13''..z12r..z11l...z7r + ...z8r...{right}z9r..z10r..z10'..z10l{up}..z10''..z9l..z8l...z7l...cycle; +p2=subpath(15,length p1) of p1; +p3=subpath(0,12) of p0; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2-7,tim3)=subpath(7,infinity) of p0 intersectiontimes subpath(0,10) of p1; +(tim4-11,tim5)=subpath(11,infinity) of p0 intersectiontimes subpath(0,10) of p1; +(tim6-11,tim7-10)=subpath(11,infinity) of p0 intersectiontimes subpath(10,length p1) of p1; +(tim8-17,tim9-10)=subpath(17,infinity) of p0 intersectiontimes subpath(10,length p1) of p1; +(tim10-17,tim11)=subpath(17,infinity) of p0 intersectiontimes subpath(0,8) of p1; +(tim12,tim13)=p2 intersectiontimes subpath(0,4) of p3; +(tim14,tim15-4)=p2 intersectiontimes subpath(4,infinity) of p3; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),rundy(p1,tim7).zpet) of p1 + ..subpath(rundy(p0,tim6),rundy(p0,tim8).zpet) of p0 + ..subpath(rundy(p1,tim9),length p1) of p1 + ..subpath(0,rundy(p1,tim11).zpet) of p1 + ..subpath(rundy(p0,tim10),infinity) of p0---cycle; +oblu:=2oblu; +infill subpath(rundy(p3,tim13),rundy(p3,(tim15,3f_obl)).zpet) of p3 + ..subpath(rundy(p2,(tim14,3f_obl)),rundy(p2,tim12).zpet) of p2..cycle; +(tim16,tim17-7)=p2 intersectiontimes subpath(7,infinity) of p3; +(tim18,tim19-4)=p2 intersectiontimes subpath(4,7) of p3; +infill subpath(rundy(p2,tim16),rundy(p2,(tim18,4f_obl)).zpet) of p2 + ..subpath(rundy(p3,(tim19,4f_obl)),rundy(p3,tim17).zpet) of p3..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); labels(1',1r.b,4d,4l.o,5',2r.b); +endchar; + +iff known chars.math_sqintersection: +bskchar "Square set intersection sign"; +beginchar(chars.math_sqintersection,11u#,.8asc_height#,0); uni "0x2293"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,0); pos4(rule_thickness,0); +bot y1=bot y4=-d; top y2=top y3=h; +lft x1l=lft x2l=u; x3r=x4r=w-x1l; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +y2r:=y3l:=y3-rule_thickness+currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_sqintersection_double: +bskchar "Double square set intersection sign"; +beginchar(chars.math_sqintersection_double,11u#,.8asc_height#,0); uni "0x2A4E"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,0); pos6(rule_thickness,0); pos7(rule_thickness,0); pos8(rule_thickness,0); +bot y1=bot y4=bot y5=bot y8=-d; top y2=top y3=h; +lft x1l=lft x2l=u; x3r=x4r=w-x1l; top y6=top y7=bot y2r-2rule_thickness; +lft x5l-x1r=if not boldmath:2.25\\fi rule_thickness; .5[x5,x8]=.5[x6,x7]=.5[x1,x4]; x5=x6; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); bskpoints(7,8,hair,hair); +y2r:=y3l:=y3-rule_thickness+currentbreadth; y6r:=y7l:=y7-rule_thickness+currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +filldraw z5l---z6ll..z6---z7..z7rr---z8r..z8ll---obl(7l,8l,6r) + --obl(6r,7l,5r)---z5rr..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,5rr,6ll,7rr,8ll); +endchar; + +iff known chars.math_sqintersection_uni: +bskchar "N-ary square set intersection sign (for Unicode)"; +beginchar(chars.math_sqintersection_uni,14u#,v_center(10/6dh#)); uni "0x2A05"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,0); pos2(stem,0); pos3(stem,0); pos4(stem,0); +bot y1=bot y4=-d; top y2=top y3=h; +lft x1l=lft x2l=u; x3r=x4r=w-x1l; +bskpoints(1,2,stem,stem); bskpoints(3,4,stem,stem); +y2r:=y3l:=y3-stem+currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_squnion: +bskchar "Square set union sign"; +beginchar(chars.math_squnion,11u#,.8asc_height#,0); uni "0x2294"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,0); pos4(rule_thickness,0); +top y1=top y4=h; bot y2=bot y3=-d; +lft x1l=lft x2l=u; x3r=x4r=w-x1l; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +y2r:=y3l:=y3+rule_thickness-currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_squnion_double: +bskchar "Double square set union sign"; +beginchar(chars.math_squnion_double,11u#,.8asc_height#,0); uni "0x2A4F"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,0); pos6(rule_thickness,0); pos7(rule_thickness,0); pos8(rule_thickness,0); +top y1=top y4=top y5=top y8=h; bot y2=bot y3=-d; +lft x1l=lft x2l=u; x3r=x4r=w-x1l; bot y6=bot y7=top y2r+2rule_thickness; +lft x5l-x1r=if not boldmath:2.25\\fi rule_thickness; .5[x5,x8]=.5[x6,x7]=.5[x1,x4]; x5=x6; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); bskpoints(7,8,hair,hair); +y2r:=y3l:=y3+rule_thickness-currentbreadth; y6r:=y7l:=y7+rule_thickness-currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +filldraw z5l---z6ll..z6---z7..z7rr---z8r..z8ll---obl(7l,8l,6r) + --obl(6r,7l,5r)---z5rr..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,5rr,6ll,7rr,8ll); +endchar; + +iff known chars.math_squnion_text: +bskchar "\textstyle square set union sign"; +beginchar(chars.math_squnion_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,0); pos2(stem,0); pos3(stem,0); pos4(stem,0); +top y1=top y4=h; bot y2=bot y3=-d; +lft x1l=lft x2l=u; x3r=x4r=w-x1l; +bskpoints(1,2,stem,stem); bskpoints(3,4,stem,stem); +y2r:=y3l:=y3+stem-currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..z1..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_squnion_uni: +bskchar "N-ary square set union sign (for Unicode)"; +beginchar(chars.math_squnion_uni,14u#,v_center(10/6dh#)); uni "0x2A06"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,0); pos2(stem,0); pos3(stem,0); pos4(stem,0); +top y1=top y4=h; bot y2=bot y3=-d; +lft x1l=lft x2l=u; x3r=x4r=w-x1l; +bskpoints(1,2,stem,stem); bskpoints(3,4,stem,stem); +y2r:=y3l:=y3+stem-currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..z1..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_squnion_disp: +bskchar "\displaystyle square set union sign"; +beginchar(chars.math_squnion_disp,18u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(bourstem,0); pos2(bourstem,0); pos3(bourstem,0); pos4(bourstem,0); +top y1=top y4=h; bot y2=bot y3=-d; +lft x1l=lft x2l=u; x3r=x4r=w-x1l; +bskpoints(1,2,stem,stem); bskpoints(3,4,stem,stem); +y2r:=y3l:=y3+bourstem-currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4+2o*up..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..z1+2o*up..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_sqmultiunion: +bskchar "Multiset square set union sign"; +beginchar(chars.math_sqmultiunion,11u#,.8asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,0); pos4(rule_thickness,0); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +top y1=top y4=h; bot y2=bot y3=-d; +lft x1l=lft x2l=u; x3r=x4r=w-x1l; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +y2r:=y3l:=y3+rule_thickness-currentbreadth; +lft x6=rt x1r + stem; x7=w-x6; y6=y7=.5[y8,y9]=.5[y2,y1]; +x8=x9=.5w; y8-y9=x7-x6; +bskpoints(6,7,hair,hair); bskpoints(9,8,.5hair,.5hair); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,2ll,3rr,4ll,5rr); +endchar; + +iff known chars.math_sqcup: +bskchar "Square cup sign"; +beginchar(chars.math_sqcup,11u#,x_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,0); pos4(rule_thickness,0); +top y1=top y4=h; bot y2=bot y3=-d; +lft x1l=lft x2l=u; x3r=x4r=w-x1l; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +y2r:=y3l:=y3+rule_thickness-currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_sqcap: +bskchar "Square cap sign"; +beginchar(chars.math_sqcap,11u#,x_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,0); pos4(rule_thickness,0); +bot y1=bot y4=-d; top y2=top y3=h; +lft x1l=lft x2l=u; x3r=x4r=w-x1l; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +y2r:=y3l:=y3-rule_thickness+currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_union: +bskchar "Set union sign"; +beginchar(chars.math_union,11u#,.8asc_height#,0); uni "0x222A"; +italcorr .8asc_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_union_serif_closed: +bskchar "Closed set union sign with serifs"; +beginchar(chars.math_union_serif_closed,14u#,.8asc_height#,0); uni "0x2A4C"; +italcorr .8asc_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,90); pos7(rule_thickness,90); +bot y3l=-d-o; y1=y5=y6l; +lft x1l=lft x2l=2.5u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +lft x6=u; rt x7=w-u; top y6r=top y7r=h; +bskpoints(6,7,rule_thickness,rule_thickness); +filldraw obl(1l,6l,2l)---z2l...z3l...z4l---obl(5l,4l,7ll)---z7ll..z7r---z6rr..z6l---cycle; +infill obl(5r,1r,4r)---z4r...z3r...z2r---obl(1r,2r,5r)---cycle; +penlabels(1,2,3,4,5,6,7); labels(6rr,7ll); +endchar; + +iff known chars.math_union_serif_closed_smash: +bskchar "Closed set union sign with serifs and smash sign"; +beginchar(chars.math_union_serif_closed_smash,14u#,.8asc_height#,0); uni "0x2A50"; +italcorr .8asc_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(hair,45); pos9(hair,45); +pos10(hair,45); pos11(hair,45); +pos12(hair,-45); pos13(hair,-45); +pos14(hair,-45); pos15(hair,-45); +bot y3l=-d-o; y1=y5=y6l; +lft x1l=lft x2l=2.5u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +lft x6=u; rt x7=w-u; top y6r=top y7r=h; +y8=y12; y11=y15; x10=x13; x9=x14; y8-y11=x9-x10=.5(x4r-x2r); .5[x9,x10]=.5w; .5[y8,y11]=math_axis; +z10-z8=.5(x9-x10)*dir225; z9-z8=z11-z10; z13-z12=z15-z14; z14-z12=.5(x9-x10)*dir-45; +z8'=whatever[z12l,z13l]=whatever[z8r,z9r]; +z9'=whatever[z12r,z13r]=whatever[z8r,z9r]; +z10'=whatever[z12r,z13r]=whatever[z8l,z9l]; +z11'=whatever[z12r,z13r]=whatever[z10r,z11r]; +z12'=whatever[z12r,z13r]=whatever[z10l,z11l]; +z13'=whatever[z12l,z13l]=whatever[z10l,z11l]; +z14'=whatever[z12l,z13l]=whatever[z10r,z11r]; +z15'=whatever[z12l,z13l]=whatever[z8l,z9l]; +z16'=whatever[z14l,z15l]=whatever[z8r,z9r]; +z17'=whatever[z14r,z15r]=whatever[z8r,z9r]; +z18'=whatever[z14r,z15r]=whatever[z8l,z9l]; +z19'=whatever[z14r,z15r]=whatever[z10r,z11r]; +z20'=whatever[z14r,z15r]=whatever[z10l,z11l]; +z21'=whatever[z14l,z15l]=whatever[z10l,z11l]; +z22'=whatever[z14l,z15l]=whatever[z10r,z11r]; +z23'=whatever[z14l,z15l]=whatever[z8l,z9l]; +bskpoints(6,7,rule_thickness,rule_thickness); +filldraw obl(1l,6l,2l)---z2l...z3l...z4l---obl(5l,4l,7ll)---z7ll..z7r---z6rr..z6l---cycle; +infill obl(5r,1r,4r)---z4r...z3r...z2r---obl(1r,2r,5r)---cycle; +filldraw z8r---obl(8',8r,12l)---z12l..z12r---obl(9',12r,16')---obl(16',9',14l)---z14l..z14r + ---obl(17',14r,9r)---z9r..z9l---obl(18',9l,19')---obl(19',18',11r)---z11r..z11l + ---obl(20',11l,15r)---z15r..z15l---obl(21',15l,12')---obl(12',11l,13r)---z13r..z13l + ---obl(13',13l,10l)---z10l..z10r---obl(14',10r,15')---obl(15',14',8l)---z8l..cycle; +infill obl(10',23',11')---obl(11',10',22')---obl(22',11',23')---obl(23',22',10')---cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); +labels(6rr,7ll,9ll,10ll,12rr,13ll,14ll,15rr,8',9',10',11',12',13',14',15',16',17',18',19',20',21',22',23'); +endchar; + +iff known chars.math_union_union: +bskchar "Two joinde set union signs"; +beginchar(chars.math_union_union,16u#,.8asc_height#,0); uni "0x2A4A"; +italcorr .8asc_height#*slant-.5u#; +adjust_fit(0,0); +path p[]; numeric tim[]; +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,0); pos7(rule_thickness,0); pos8(rule_thickness,90); +pos9(rule_thickness,180); pos10(rule_thickness,180); +top y1=top y5=top y6=top y10=h; bot y3l=bot y8l=-d-o; +lft x1l=lft x2l=u; x4=x5=x6=x7=.5w; x3=.5[x1,x4]; x8=.5[x6,x9];rt x9l=rt x10l=w-u; +y2=y4=y7=y9=y3+(x3-x2); +bskpoints(1,2,hair,hair); bskpoints(10,9,hair,hair); +p0=z1l---z2l...z3l...z4l---z5l; +p1=z6l---z7l...z8l..z9l---z10l; +(tim0,tim1)=p0 intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1 + ..z10rr---z9r...z8r...z7r---z5l..z5r---z4r...z3r...z2r---z1rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,10rr); +endchar; + +iff known chars.math_union_minus: +bskchar "Set union sign with minus"; +beginchar(chars.math_union_minus,11u#,.8asc_height#,0); uni "0x2A41"; +italcorr asc_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +.5[x6,x7]=.5w; lft x6=rt x2r+rule_thickness; y6=y7=math_axis; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +filldraw bskrule(6,7,hair,hair); +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_union_overbar: +bskchar "Set union sign with overbar"; +beginchar(chars.math_union_overbar,11u#,asc_height#,0); uni "0x2A42"; +italcorr asc_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1=top y5=.8h; bot y3l=-d-o; +lft x1l=lft x2l=lft x6=u; x4l=x5l=x7=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); top y6r=top y7r=h; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +filldraw bskrule(6,7,hair,0); +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_union_logor: +bskchar "Set union sign with logical or sign"; +beginchar(chars.math_union,11u#,.8asc_height#,0); uni "0x2A45"; +italcorr .8asc_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +x6=.5w; y6=max(5u,2rule_thickness); lft x7l=rt x1r+rule_thickness; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +logor(6,7,8); +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_union_uni: +bskchar "N-ary set union sign (for Unicode)"; +beginchar(chars.math_union_uni,14u#,v_center(10/6dh#)); uni "0x22C3"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,0); pos2(stem,0); pos3(.9stem,90); pos4(stem,180); pos5(stem,180); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +bskpoints(1,2,stem,stem); bskpoints(5,4,stem,stem); +filldraw z1l---z2l...z3l...z4l---z5l..z5..z5rr---z4r...z3r...z2r---z1rr..z1..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_union_text: +bskchar "\textstyle set union sign"; +beginchar(chars.math_union_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,0); pos2(stem,0); pos3(.9stem,90); pos4(stem,180); pos5(stem,180); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +bskpoints(1,2,stem,stem); bskpoints(5,4,stem,stem); +filldraw z1l---z2l...z3l...z4l---z5l..z5..z5rr---z4r...z3r...z2r---z1rr..z1..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_union_disp: +bskchar "\displaystyle set union sign"; +beginchar(chars.math_union_disp,18u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(bourstem,0); pos2(bourstem,0); pos3(.9bourstem,90); pos4(bourstem,180); pos5(bourstem,180); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +bskpoints(1,2,stem,stem); bskpoints(5,4,stem,stem); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*up..z5rr---z4r...z3r...z2r---z1rr..z1+2o*up..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_cup: +bskchar "Cup sign"; +beginchar(chars.math_cup,11u#,x_height#,0); uni "non"; +italcorr .8asc_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_parallel_union: +bskchar "Parallel set union sign"; +beginchar(chars.math_parallel_union,11u#,.8asc_height#,0); uni "0x22D3"; +italcorr .8asc_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); pos6(rule_thickness,0); +pos7(rule_thickness,0); pos8(.9rule_thickness,90); pos9(rule_thickness,180); +pos10(rule_thickness,180); +top y1=top y5=top y6=top y10=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=x8=.5w; +y2=y4=y3+(x3-x2); lft x6l=lft x7l=x1r+if not boldmath: 2.25\\fi rule_thickness; +y7=y9=y8+(x8-x7); x9=x10=w-x6; bot y8l=y3r+2rule_thickness; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10rr---z9r...z8r...z7r---z6rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,5rr,6rr,10rr); +endchar; + +iff known chars.math_multiunion: +bskchar "Multiset union sign"; +beginchar(chars.math_multiunion,11u#,.8asc_height#,0); uni "0x228E"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +lft x6=rt x1r + stem; x7=w-x6; y6=y7=.5[y8,y9]=.5[y3l,y1]; +x8=x9=.5w; y8-y9=x7-x6; +bskpoints(6,7,hair,hair); bskpoints(9,8,.5hair,.5hair); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(0,1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_multiunion_uni: +bskchar "N-ary union with plus"; +beginchar(chars.math_multiunion_uni,14u#,v_center(10/6dh#)); uni "0x2A04"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,0); pos2(stem,0); pos3(.9stem,90); pos4(stem,180); pos5(stem,180); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +bskpoints(1,2,stem,stem); bskpoints(5,4,stem,stem); +filldraw z1l---z2l...z3l...z4l---z5l..z5..z5rr---z4r...z3r...z2r---z1rr..z1..cycle; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +lft x6=rt x1r + stem; x7=w-x6; y6=y7=.5[y8,y9]=.5[y3l,y1]; +x8=x9=.5w; y8-y9=x7-x6; +bskpoints(6,7,hair,hair); bskpoints(9,8,.5hair,.5hair); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(0,1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_multiunion_text: +bskchar "\textstyle multiset union sign"; +beginchar(chars.math_multiunion_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,0); pos2(stem,0); pos3(.9stem,90); pos4(stem,180); pos5(stem,180); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +bskpoints(1,2,stem,stem); bskpoints(5,4,stem,stem); +filldraw z1l---z2l...z3l...z4l---z5l..z5..z5rr---z4r...z3r...z2r---z1rr..z1..cycle; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +lft x6=rt x1r + stem; x7=w-x6; y6=y7=.5[y8,y9]=.5[y3l,y1]; +x8=x9=.5w; y8-y9=x7-x6; +bskpoints(6,7,hair,hair); bskpoints(9,8,.5hair,.5hair); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(0,1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_multiunion_disp: +bskchar "\displaystyle multiset union sign"; +beginchar(chars.math_multiunion_disp,18u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(bourstem,0); pos2(bourstem,0); pos3(.9bourstem,90); pos4(bourstem,180); pos5(bourstem,180); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +bskpoints(1,2,stem,stem); bskpoints(5,4,stem,stem); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*up..z5rr---z4r...z3r...z2r---z1rr..z1+2o*up..cycle; +pos6(stem,90); pos7(stem,90); +pos8(stem,0); pos9(stem,0); +lft x6=rt x1r + bourstem; x7=w-x6; y6=y7=.5[y8,y9]=.5[y3l,y1]; +x8=x9=.5w; y8-y9=x7-x6; +bskpoints(6,7,stem,stem); bskpoints(9,8,.5stem,.5stem); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(0,1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_multiset: +bskchar "Multiset sign"; +beginchar(chars.math_multiset,11u#,.8asc_height#,0); uni "0x228C"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); pos6(rule_thickness,90); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +lft x7=rt x1r + stem; x7=w-x6; y6l=y7=.5[y3l,y1]; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); bskpoints(6,7,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +{{ save arrsize, arrwidth; numeric arrsize, arrwidth; +arrsize=1.2arrwidth=if boldmath: 2.15 else:2\\ fi curve; +filldraw sipka(7,6)---z6rr..z6l---cycle; +}}; +penlabels(0,1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_multiset_multiply: +bskchar "Multiset multiplication sign"; +beginchar(chars.math_multiset_multiply,11u#,.8asc_height#,0); uni "0x228D"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); pos6(rule_thickness,90); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=x6=.5w; +y2=y4=y3+(x3-x2); y6=.5[y3l,y1]; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +dot(6); +penlabels(0,1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_multiset_multiply_n: +bskchar "N-ary union with dot"; +beginchar(chars.math_multiset_multiply_n,14u#,v_center(10/6dh#)); uni "0x2A03"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,0); pos2(stem,0); pos3(.9stem,90); pos4(stem,180); pos5(stem,180); +top y1=top y5=h; bot y3l=-d-o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=x6=.5w; +y2=y4=y3+(x3-x2); y6=.5[y3l,y1]; +bskpoints(1,2,stem,stem); bskpoints(5,4,stem,stem); +filldraw z1l---z2l...z3l...z4l---z5l..z5..z5rr---z4r...z3r...z2r---z1rr..z1..cycle; +{{ numeric old_dot; old_dot:=dot_size; save dot_size; numeric dot_size; dot_size:=1.5old_dot; + dot(6); }}; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_intersection: +bskchar "Set intersection sign"; +beginchar(chars.math_intersection,11u#,.8asc_height#,0); uni "0x2229"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +bot y1=bot y5=-d; top y3l=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3-(x3-x2); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_intersection_serif_closed: +bskchar "Closed set intersection sign with serifs"; +beginchar(chars.math_intersection_serif_closed,14u#,.8asc_height#,0); uni "0x2A4D"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,270); pos7(rule_thickness,270); +top y3l=h+o; y1=y5=y6l; +lft x1l=lft x2l=2.5u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3-(x3-x2); +lft x6=u; rt x7=w-u; bot y6r=bot y7r=-d; +bskpoints(6,7,rule_thickness,rule_thickness); +filldraw obl(1l,6l,2l)---z2l...z3l...z4l---obl(5l,4l,7ll)---z7ll..z7r---z6rr..z6l---cycle; +infill obl(5r,1r,4r)---z4r...z3r...z2r---obl(1r,2r,5r)---cycle; +penlabels(1,2,3,4,5,7,8); labels(6rr,7ll); +endchar; + +iff known chars.math_intersection_intersection: +bskchar "Two joined set intersection signs"; +beginchar(chars.math_intersection_intersection,16u#,.8asc_height#,0); uni "0x2A4B"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +path p[]; numeric tim[]; +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,0); pos7(rule_thickness,0); pos8(rule_thickness,-90); +pos9(rule_thickness,180); pos10(rule_thickness,180); +bot y1=bot y5=bot y6=bot y10=-d; top y3l=top y8l=h+o; +lft x1l=lft x2l=u; x4=x5=x6=x7=.5w; x3=.5[x1,x4]; x8=.5[x6,x9]; rt x9l=rt x10l=w-u; +y2=y4=y7=y9=y3-(x3-x2); +bskpoints(1,2,hair,hair); bskpoints(10,9,hair,hair); +p0=z1l---z2l...z3l...z4l---z5l; +p1=z6l---z7l...z8l..z9l---z10l; +(tim0,tim1)=p0 intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1 + ..z10rr---z9r...z8r...z7r---z5l..z5r---z4r...z3r...z2r---z1rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,10rr); +endchar; + +iff known chars.math_intersection_dot: +bskchar "Set intersection sign with dot"; +beginchar(chars.math_intersection_dot,11u#,.8asc_height#,0); uni "0x2A40"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +bot y1=bot y5=-d; top y3l=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=x6=.5w; +y2=y4=y3-(x3-x2); y6=.5[y3l,y1]; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +dot(6); +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_intersection_overbar: +bskchar "Set intersection sign with overbar"; +beginchar(chars.math_intersection_overbar,11u#,asc_height#,0); uni "0x2A43"; +italcorr asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,90); pos7(rule_thickness,90); +bot y1=bot y5=-d; top y3l=.8h+o; +lft x1l=lft x2l=lft x6=u; x4l=x5l=x7=w-x1l; x3=.5w; +y2=y4=y3-(x3-x2); top y6r=top y7r=h; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +filldraw bskrule(6,7,hair,0); +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_intersection_logand: +bskchar "Set intersection sign with logical and inside"; +beginchar(chars.math_intersection_logand,11u#,.8asc_height#,0); uni "0x2A44"; +italcorr asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +bot y1=bot y5=-d; top y3l=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=x6=.5w; +y2=y4=y3-(x3-x2); y6=h-max(5u,2rule_thickness); lft x7r=rt x1r+rule_thickness; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +logand(6,7,8); +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_intersection_uni: +bskchar "N-ary set intersection sign (for Unicode)"; +beginchar(chars.math_intersection_uni,14u#,v_center(10/6dh#)); uni "0x22C2"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,0); pos2(stem,0); pos3(.9stem,-90); pos4(stem,180); pos5(stem,180); +bot y1=bot y5=-d; top y3l=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3-(x3-x2); +bskpoints(1,2,stem,stem); bskpoints(5,4,stem,stem); +filldraw z1l---z2l...z3l...z4l---z5l..z5..z5rr---z4r...z3r...z2r---z1rr..z1..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_intersection_text: +bskchar "\textstyle set intersection sign"; +beginchar(chars.math_intersection_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem,0); pos2(stem,0); pos3(.9stem,-90); pos4(stem,180); pos5(stem,180); +bot y1=bot y5=-d; top y3l=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3-(x3-x2); +bskpoints(1,2,stem,stem); bskpoints(5,4,stem,stem); +filldraw z1l---z2l...z3l...z4l---z5l..z5..z5rr---z4r...z3r...z2r---z1rr..z1..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_intersection_disp: +bskchar "\displaystyle set intersection sign"; +beginchar(chars.math_intersection_disp,18u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(bourstem,0); pos2(bourstem,0); pos3(.9bourstem,-90); pos4(bourstem,180); pos5(bourstem,180); +bot y1=bot y5=-d; top y3l=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3-(x3-x2); +bskpoints(1,2,stem,stem); bskpoints(5,4,stem,stem); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*down..z5rr---z4r...z3r...z2r---z1rr..z1+2o*down..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_cap: +bskchar "Cap sign"; +beginchar(chars.math_cap,11u#,x_height#,0); uni "non"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +bot y1=bot y5=-d; top y3l=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3-(x3-x2); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_parallel_intersection: +bskchar "Parallel set intersection sign"; +beginchar(chars.math_parallel_intersection,11u#,.8asc_height#,0); uni "0x22D2"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); pos6(rule_thickness,0); +pos7(rule_thickness,0); pos8(rule_thickness,-90); pos9(rule_thickness,180); +pos10(rule_thickness,180); +bot y1=bot y5=bot y6=bot y10=-d; top y3l=h+o; top y8l=y3r-2rule_thickness; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=x8=.5w; +y2=y4=y3-(x3-x2); y7=y9=y8-(x8-x7); lft x6l=lft x7l=x1r+if not boldmath: 2.25\\fi rule_thickness; x9=x10=w-x6; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10rr---z9r...z8r...z7r---z6rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,5rr,6rr,10rr); +endchar; + +iff known chars.math_multiintersection: +bskchar "Multiset intersection sign"; +beginchar(chars.math_multiintersection,11u#,.8asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +bot y1=bot y5=-d; top y3l=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3-(x3-x2); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +lft x6=rt x1r + stem; x7=w-x6; y6=y7=.5[y8,y9]=.5[y3l,y1]; +x8=x9=.5w; y8-y9=x7-x6; +bskpoints(6,7,hair,hair); bskpoints(9,8,.5hair,.5hair); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(0,1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_cup_cap: +bskchar "Cup above cap sign"; +beginchar(chars.math_cup_cap,9u#,v_center(asc_height#+rule_thickness#)); uni "0x2A46"; +italcorr .8asc_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,0); pos7(rule_thickness,0); pos8(rule_thickness,-90); +pos9(rule_thickness,180); pos10(rule_thickness,180); +top y1=top y5=h; bot y3l=math_axis+1.5rule_thickness; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +bot y6=bot y10=-d; top y8l=math_axis-1.5rule_thickness; +lft x6l=lft x7l=u; x9l=x10l=w-x6l; x8=.5w; +y7=y9=y8-(x8-x7); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10rr---z9r...z8r...z7r---z6rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,5rr); +endchar; + +iff known chars.math_cup_cap_rule: +bskchar "Cup above cap sign wih rule"; +beginchar(chars.math_cup_cap_rule,9u#,v_center(asc_height#+rule_thickness#)); uni "0x2A48"; +italcorr .8asc_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(.9rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,0); pos7(rule_thickness,0); pos8(rule_thickness,-90); +pos9(rule_thickness,180); pos10(rule_thickness,180); +pos11(rule_thickness,90); pos12(rule_thickness,90); +top y1=top y5=h; bot y3l=math_axis+1.5rule_thickness; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3+(x3-x2); +bot y6=bot y10=-d; top y8l=math_axis-1.5rule_thickness; +lft x6l=lft x7l=u; x9l=x10l=w-x6l; x8=.5w; +y7=y9=y8-(x8-x7); +y11=y12=math_axis; x11=x6l; x12=x9l; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10rr---z9r...z8r...z7r---z6rr..cycle; +filldraw bskrule(11,12,rule_thickness,rule_thickness); +penlabels(1,2,3,4,5,6,7,8,9,10,11,12); labels(1rr,5rr); +endchar; + +iff known chars.math_cap_cup: +bskchar "Cap above cup sign"; +beginchar(chars.math_cap_cup,9u#,v_center(asc_height#+rule_thickness#)); uni "0x2A47"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,0); pos7(rule_thickness,0); pos8(.9rule_thickness,90); +pos9(rule_thickness,180); pos10(rule_thickness,180); +bot y1=bot y5=math_axis+1.5rule_thickness; top y3l=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3-(x3-x2); +top y6=top y10=math_axis-1.5rule_thickness; bot y8l=-d-o; +lft x6l=lft x7l=u; x9l=x10l=w-x6l; x8=.5w; +y7=y9=y8+(x8-x7); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10rr---z9r...z8r...z7r---z6rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,5rr,6rr,10rr); +endchar; + +iff known chars.math_cap_cup_rule: +bskchar "Cap above cup sign with rule"; +beginchar(chars.math_cap_cup_rule,9u#,v_center(asc_height#+rule_thickness#)); uni "0x2A49"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,0); pos7(rule_thickness,0); pos8(.9rule_thickness,90); +pos9(rule_thickness,180); pos10(rule_thickness,180); +pos11(rule_thickness,90); pos12(rule_thickness,90); +bot y1=bot y5=math_axis+1.5rule_thickness; top y3l=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=.5w; +y2=y4=y3-(x3-x2); +top y6=top y10=math_axis-1.5rule_thickness; bot y8l=-d-o; +lft x6l=lft x7l=u; x9l=x10l=w-x6l; x8=.5w; +y7=y9=y8+(x8-x7); +y11=y12=math_axis; x11=x6l; x12=x9l; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5rr---z4r...z3r...z2r---z1rr..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10rr---z9r...z8r...z7r---z6rr..cycle; +filldraw bskrule(11,12,rule_thickness,rule_thickness); +penlabels(1,2,3,4,5,6,7,8,9,10,11,12); labels(1rr,5rr,6rr,10rr); +endchar; + +iff known chars.math_infinity: +bskchar "Infinity sign"; +beginchar(chars.math_infinity,16u#,x_height#,0); uni "0x221E"; +italcorr x_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric testem, tlstem, tim[]; oblu:=2oblu; +testem=.5[curve, hair]; tlstem=.75[curve,stem]; +pos1(testem,90); pos2(tlstem,270); pos3(tlstem,270); pos4(testem,90); +pos5(vair,180); pos6(vair,180); +lft x6r=u; rt x5l=w-u; +bot y3r=bot y1l=-o; top y4r=top y2l=h+o; +x3=x4=.27(w-2u)+u; x1=x2=.76(w-2u)+u; +y5=y6=.5h; z0=(.5w,.5h); +p0:=z6{down}..z3..z0..z2..{up}z5; pos0(curve,angle(direction 2 of p0)-90); +p1=z6r{down}..z3r..z0r..z2r..z5r{down}; +p2=z4l{right}..z0{dir-70}..{right}z1l; +p3=z5l{up}..z2l..z0l..z3l..{up}z6l; +p4=z1r{left}..z0{dir110}..{left}z4r; +p5=z6l{down}..z3l..z0l..z2l..z5l{down}; +z10=bsktouch(p1,right,p2,left); +tim1=xpart(p1 intersectiontimes (z10--(x3,y10))); +tim2=xpart(p2 intersectiontimes (z10--(x1,y10))); +z11=bsktouch(p3,left,p4,right); +tim3=xpart(p3 intersectiontimes (z11--(x2,y11))); +tim4=xpart(p4 intersectiontimes (z11--(x3,y11))); +(tim5,tim6)=p5 intersectiontimes p2; +(tim7,tim8)=p1 intersectiontimes p4; +filldraw subpath(0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2 + ..subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p4,tim4),infinity) of p4..cycle; +infill subpath(0,rundy(p5,tim5).zpet) of p5 .. + (reverse subpath(0,rundy(p2,tim6).zpet) of p2) .. cycle; +infill subpath(rundy(p1,tim7),infinity) of p1 + ..subpath(0,rundy(p4,tim8).zpet) of p4..cycle; +penlabels(0,1,2,3,4,5,6); +endchar; + +iff known chars.math_infinity_incomplete: +bskchar "Incomplete infinity sign"; +beginchar(chars.math_infinity_incomplete,16u#,x_height#,0); uni "0x29DC"; +italcorr x_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric testem, tlstem, tim[]; oblu:=2oblu; +testem=.5[curve, hair]; tlstem=.75[curve,stem]; +pos1(testem,90); pos2(tlstem,270); pos3(tlstem,270); pos4(testem,90); +pos5(vair,180); pos6(vair,180); +lft x6r=u; rt x5l=w-u; +bot y3r=bot y1l=-o; top y4r=top y2l=h+o; +x3=x4=.27(w-2u)+u; x1=x2=.76(w-2u)+u; +y5=y6=.5h; z0=(.5w,.5h); +p0:=z6{down}..z3..z0..z2..{up}z5; pos0(curve,angle(direction 2 of p0)-90); +p1=z6r{down}..z3r..z0r..z2r..z5r{down}; +p2=z4l{right}..z0{dir-70}..{right}z1l; +p4=z1r{left}..z0r{dir110}..{left}z4r; +p5=z6l{down}..z3l..z0l..z2l..z5l{down}; +z10=bsktouch(p1,right,p2,left); +tim1=xpart(p1 intersectiontimes (z10--(x3,y10))); +tim2=xpart(p2 intersectiontimes (z10--(x1,y10))); +(tim3,tim4)=p5 intersectiontimes p2; +filldraw subpath(0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2 + ..{up}z5l..{down}z5r..p4..cycle; +infill subpath(0,rundy(p5,tim3).zpet) of p5 .. + (reverse subpath(0,rundy(p2,tim4).zpet) of p2) .. cycle; +penlabels(0,1,2,3,4,5,6); +endchar; + +iff known chars.math_propto: +bskchar "Proportionality sign"; +beginchar(chars.math_propto,12u#,x_height#,0); uni "0x221D"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric testem, tlstem, tim[]; oblu:=2oblu; +testem=.5[curve, hair]; tlstem=.75[curve,stem]; +pos1(testem,90); pos2(testem,270); pos3(tlstem,270); pos4(testem,90); +pos5(vair,180); pos6(vair,180); +lft x6r=u; rt x5l=w+2u; +bot y3r=bot y1l=-o; top y4r=top y2l=h+o; +x3=x4=.5[x6,x0]-o; x1=w-u-.5testem; x2=w-u-.5tlstem; +y5=y6=.5h; z0=.5[z6,z5]; +p0:=z6{down}..z3..z0..z2..{up}z5; pos0(curve,angle(direction 2 of p0)-90); +p1=z6r{down}..z3r..z0r..z2r..z5r{down}; +p2=z4l{right}..z0{dir-70}..{right}z1l; +p3=z5l{up}..z2l..z0l..z3l..{up}z6l; +p4=z1r{left}..z0{dir110}..{left}z4r; +p5=z6l{down}..z3l..z0l..z2l..z5l{down}; + +z10=bsktouch(p1,right,p2,left); +tim1=xpart(p1 intersectiontimes (z10--(x3,y10))); +tim2=xpart(p2 intersectiontimes (z10--(x1,y10))); +z11=bsktouch(p3,left,p4,right); +tim3=xpart(p3 intersectiontimes (z11--(x2,y11))); +tim4=xpart(p4 intersectiontimes (z11--(x3,y11))); +(tim5,tim6)=p5 intersectiontimes p2; +(tim7,tim8)=p1 intersectiontimes p4; + +filldraw subpath(0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2 + ..subpath(0,rundy(p4,tim8).zpet) of p4 + ..subpath(2,3) of p1 + ..subpath(1,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p4,tim4),infinity) of p4..cycle; +infill subpath(0,rundy(p5,tim5).zpet) of p5 .. + (reverse subpath(0,rundy(p2,tim6).zpet) of p2) .. cycle; +penlabels(0,1,2,3,4,5,6); +endchar; + +iff known chars.sign_surd: +bskchar "Root sign (surd)"; +beginchar(chars.sign_surd,10u#,asc_height#,0); uni "0x221A"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +numeric theta; theta:=220; +pos0(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,theta-90); pos4(rule_thickness,theta-90); +x1l=good.x(w-2u); top y1l=h-o+apex_o; +x2l=5u; bot y2l=-d-apex_o; +y0r=y1r; x0r=w; +bot y3l=2/3[h,-d]; lft x3r=2u; +x4l=u; z4l=z3l+whatever*dir(theta); +z3'=z3r+(stem-currentbreadth)*unitvector(z3-z4); +z2'=z2r+(stem-currentbreadth)*unitvector(z3-z4); +z2''=z2r+(rule_thickness-currentbreadth)*unitvector(z2l-z1l) rotated -90; +pos1(rule_thickness,angle(z2''-z2r)); +p0:=z2l{dir(angle(z3-z2)-5)}..{dir(angle(z3-z2)+5)}z3l; +p1:=z2''{dir(angle(z1-z2)+2)}..{dir(angle(z1-z2)-2)}z1r; +p2:=z3'{dir(angle(z2'-z3')+5)}..{dir(angle(z2'-z3')-5)}z2'; +p3:=(x1l,y0l){dir(angle(z2-z1)-2)}..{dir(angle(z2-z1)+2)}z2l; +z5=bsktouch(p1,left,p2,right); +tim1=xpart(p1 intersectiontimes (z5--(w,y5))); +tim2=xpart(p2 intersectiontimes (z5--(0,y5))); +filldraw z0l---(x1l+f_obl,y0l)..subpath(rundy(p3,(0,f_obl)),infinity) of p3 + &subpath(0,rundy(p0,1).zpet) of p0 + ..subpath (rundy(z3l--z4l,0),infinity) of (z3l--z4l)..z4r + ---subpath(0,rundy(p2,tim2).zpet) of p2 + ..subpath(rundy(p1,tim1),rundy(p1,(length p1,f_obl)).zpet) of p1 + ..z1r+f_obl*right---z0r..cycle; +penlabels(0,1,2,3,4); labels(2',2'',3',5); +endchar; + +iff known chars.sign_root: +bskchar "Root sign (text)"; +beginchar(chars.sign_root,14u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +numeric theta; theta:=95; +pos2(rule_thickness,90); +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +x1l=good.x(w-u+.5); top y1l=h-o+apex_o; +x2l=.5w; bot y2l=-d-apex_o; +bot y3l=2/3[h,-d]; lft x3r=3u; +x4l=u; z4l=z3l+whatever*((z3-z2) rotated theta); +z3'=z3r+(stem-currentbreadth)*unitvector(z3-z4); +z2'=z2r+(stem-currentbreadth)*unitvector(z3-z4); +z2''=z2r+(rule_thickness-currentbreadth)*unitvector(z2l-z1l) rotated -90; +pos1(rule_thickness,angle(z2''-z2r)); +p0:=z2l{dir(angle(z3-z2)-5)}..{dir(angle(z3-z2)+5)}z3l; +p1:=z2''{dir(angle(z1-z2)+2)}..{dir(angle(z1-z2)-2)}z1r; +p2:=z3'{dir(angle(z2'-z3')+5)}..{dir(angle(z2'-z3')-5)}z2'; +z5=bsktouch(p1,left,p2,right); +tim1=xpart(p1 intersectiontimes (z5--(w,y5))); +tim2=xpart(p2 intersectiontimes (z5--(0,y5))); +filldraw z1l{dir(angle(z2-z1)-2)}..{dir(angle(z2-z1)+2)}z2l&subpath(0,rundy(p0,1).zpet) of p0 + ..subpath (rundy(z3l--z4l,0),infinity) of (z3l--z4l)..z4r + ---subpath(0,rundy(p2,tim2).zpet) of p2..subpath(rundy(p1,tim1),infinity) of p1 + ..cycle; +penlabels(1,2,3,4); labels(2',2'',3'); +endchar; + +iff known chars.math_root: +bskchar "Root sign (math)"; +beginchar(chars.math_root,14u#,rule_thickness#,body_height#+paren_depth#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +numeric theta; theta:=95; +pos2(rule_thickness,90); +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +x1l=good.x(w+.5); bot y1l=0; +x2l=.5w; bot y2l=-d-apex_o; +bot y3l=2/3[h,-d]; lft x3r=3u; +x4l=u; z4l=z3l+whatever*((z3-z2) rotated theta); +z3'=z3r+(stem-currentbreadth)*unitvector(z3-z4); +z2'=z2r+(stem-currentbreadth)*unitvector(z3-z4); +z2''=z2r+(rule_thickness-currentbreadth)*unitvector(z2l-z1l) rotated -90; +pos1(rule_thickness,angle(z2''-z2r)); +p0:=z2l{dir(angle(z3-z2)-5)}..{dir(angle(z3-z2)+5)}z3l; +p1:=z2''{dir(angle(z1-z2)+2)}..{dir(angle(z1-z2)-2)}z1r; +p2:=z3'{dir(angle(z2'-z3')+5)}..{dir(angle(z2'-z3')-5)}z2'; +z5=bsktouch(p1,left,p2,right); +tim1=xpart(p1 intersectiontimes (z5--(w,y5))); +tim2=xpart(p2 intersectiontimes (z5--(0,y5))); +filldraw z1l{dir(angle(z2-z1)-2)}..{dir(angle(z2-z1)+2)}z2l&subpath(0,rundy(p0,1).zpet) of p0 + ..subpath (rundy(z3l--z4l,0),infinity) of (z3l--z4l)..z4r + ---subpath(0,rundy(p2,tim2).zpet) of p2..subpath(rundy(p1,tim1),infinity) of p1 + ..cycle; +penlabels(1,2,3,4); labels(2',2'',3'); +endchar; + +iff known chars.math_root_big: +bskchar "\big root sign"; +beginchar(chars.math_root_big,18u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +numeric theta; theta:=95; +pos2(rule_thickness,90); +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +x1l=good.x(w+.5); bot y1l=0; +x2l=.5w; bot y2l=-d-apex_o; +bot y3l=2/3[h,-d]; lft x3r=3u; +x4l=u; z4l=z3l+whatever*((z3-z2) rotated theta); +z3'=z3r+stem*unitvector(z3-z4); +z2'=z2r+stem*unitvector(z3-z4); +z2''=z2r+(rule_thickness-currentbreadth)*unitvector(z2l-z1l) rotated -90; +pos1(rule_thickness,angle(z2''-z2r)); +p0:=z2l{dir(angle(z3-z2)-5)}..{dir(angle(z3-z2)+5)}z3l; +p1:=z2''{dir(angle(z1-z2)+2)}..{dir(angle(z1-z2)-2)}z1r; +p2:=z3'{dir(angle(z2'-z3')+5)}..{dir(angle(z2'-z3')-5)}z2'; +z5=bsktouch(p1,left,p2,right); +tim1=xpart(p1 intersectiontimes (z5--(w,y5))); +tim2=xpart(p2 intersectiontimes (z5--(0,y5))); +filldraw z1l{dir(angle(z2-z1)-2)}..{dir(angle(z2-z1)+2)}z2l&subpath(0,rundy(p0,1).zpet) of p0 + ..subpath (rundy(z3l--z4l,0),infinity) of (z3l--z4l)..z4r + ---subpath(0,rundy(p2,tim2).zpet) of p2..subpath(rundy(p1,tim1),infinity) of p1 + ..cycle; +penlabels(1,2,3,4); labels(2',2'',3'); +endchar; + +iff known chars.math_root_Big: +bskchar "\Big root sign"; +beginchar(chars.math_root_Big,18u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +numeric theta; theta:=95; +pos2(rule_thickness,90); +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +x1l=good.x(w+.5); bot y1l=0; +x2l=.5w; bot y2l=-d-apex_o; +bot y3l=2/3[h,-d]; lft x3r=3u; +x4l=u; z4l=z3l+whatever*((z3-z2) rotated theta); +z3'=z3r+stem*unitvector(z3-z4); +z2'=z2r+stem*unitvector(z3-z4); +z2''=z2r+(rule_thickness-currentbreadth)*unitvector(z2l-z1l) rotated -90; +pos1(rule_thickness,angle(z2''-z2r)); +p0:=z2l{dir(angle(z3-z2)-5)}..{dir(angle(z3-z2)+5)}z3l; +p1:=z2''{dir(angle(z1-z2)+2)}..{dir(angle(z1-z2)-2)}z1r; +p2:=z3'{dir(angle(z2'-z3')+5)}..{dir(angle(z2'-z3')-5)}z2'; +z5=bsktouch(p1,left,p2,right); +tim1=xpart(p1 intersectiontimes (z5--(w,y5))); +tim2=xpart(p2 intersectiontimes (z5--(0,y5))); +filldraw z1l{dir(angle(z2-z1)-2)}..{dir(angle(z2-z1)+2)}z2l&subpath(0,rundy(p0,1).zpet) of p0 + ..subpath (rundy(z3l--z4l,0),infinity) of (z3l--z4l)..z4r + ---subpath(0,rundy(p2,tim2).zpet) of p2..subpath(rundy(p1,tim1),infinity) of p1 + ..cycle; +penlabels(1,2,3,4); labels(2',2'',3'); +endchar; + +iff known chars.math_root_bigg: +bskchar "\bigg root sign"; +beginchar(chars.math_root_bigg,18u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +numeric theta; theta:=95; +pos2(rule_thickness,90); +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +x1l=good.x(w+.5); bot y1l=0; +x2l=.5w; bot y2l=-d-apex_o; +bot y3l=2/3[h,-d]; lft x3r=3u; +x4l=u; z4l=z3l+whatever*((z3-z2) rotated theta); +z3'=z3r+stem*unitvector(z3-z4); +z2'=z2r+stem*unitvector(z3-z4); +z2''=z2r+(rule_thickness-currentbreadth)*unitvector(z2l-z1l) rotated -90; +pos1(rule_thickness,angle(z2''-z2r)); +p0:=z2l{dir(angle(z3-z2)-5)}..{dir(angle(z3-z2)+5)}z3l; +p1:=z2''{dir(angle(z1-z2)+2)}..{dir(angle(z1-z2)-2)}z1r; +p2:=z3'{dir(angle(z2'-z3')+5)}..{dir(angle(z2'-z3')-5)}z2'; +z5=bsktouch(p1,left,p2,right); +tim1=xpart(p1 intersectiontimes (z5--(w,y5))); +tim2=xpart(p2 intersectiontimes (z5--(0,y5))); +filldraw z1l{dir(angle(z2-z1)-2)}..{dir(angle(z2-z1)+2)}z2l&subpath(0,rundy(p0,1).zpet) of p0 + ..subpath (rundy(z3l--z4l,0),infinity) of (z3l--z4l)..z4r + ---subpath(0,rundy(p2,tim2).zpet) of p2..subpath(rundy(p1,tim1),infinity) of p1 + ..cycle; +penlabels(1,2,3,4); labels(2',2'',3'); +endchar; + +iff known chars.math_root_Bigg: +bskchar "\Bigg root sign"; +beginchar(chars.math_root_Bigg,18u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +numeric theta; theta:=95; +pos2(rule_thickness,90); +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +x1l=good.x(w+.5); bot y1l=0; +x2l=.5w; bot y2l=-d-apex_o; +bot y3l=2/3[h,-d]; lft x3r=3u; +x4l=u; z4l=z3l+whatever*((z3-z2) rotated theta); +z3'=z3r+stem*unitvector(z3-z4); +z2'=z2r+stem*unitvector(z3-z4); +z2''=z2r+(rule_thickness-currentbreadth)*unitvector(z2l-z1l) rotated -90; +pos1(rule_thickness,angle(z2''-z2r)); +p0:=z2l{dir(angle(z3-z2)-5)}..{dir(angle(z3-z2)+5)}z3l; +p1:=z2''{dir(angle(z1-z2)+2)}..{dir(angle(z1-z2)-2)}z1r; +p2:=z3'{dir(angle(z2'-z3')+5)}..{dir(angle(z2'-z3')-5)}z2'; +z5=bsktouch(p1,left,p2,right); +tim1=xpart(p1 intersectiontimes (z5--(w,y5))); +tim2=xpart(p2 intersectiontimes (z5--(0,y5))); +filldraw z1l{dir(angle(z2-z1)-2)}..{dir(angle(z2-z1)+2)}z2l&subpath(0,rundy(p0,1).zpet) of p0 + ..subpath (rundy(z3l--z4l,0),infinity) of (z3l--z4l)..z4r + ---subpath(0,rundy(p2,tim2).zpet) of p2..subpath(rundy(p1,tim1),infinity) of p1 + ..cycle; +penlabels(1,2,3,4); labels(2',2'',3'); +endchar; + +iff known chars.math_root_bottom: +bskchar "Extensible root sign---bottom"; +beginchar(chars.math_root_bottom,19u#,0,3dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +numeric theta; theta:=95; +pos2(rule_thickness,90); +pos3(rule_thickness,theta); pos4(rule_thickness,theta); +y1l=h; x1l=x2l=w-6u; bot y2l=-d-apex_o; +bot y3l=2/3[h,-d]; lft x3r=3u; +x4l=u; z4l=z3l+whatever*((z3-z2) rotated theta); +z3'=z3r+stem*unitvector(z3-z4); +z2'=z2r+stem*unitvector(z3-z4); +z2''=z2r+(rule_thickness-currentbreadth)*unitvector(z2l-z1l) rotated -90; +pos1(rule_thickness,angle(z2''-z2r)); +p0:=z2l{dir(angle(z3-z2)-5)}..{dir(angle(z3-z2)+5)}z3l; +p1:=z2''--z1r; +p2:=z3'{dir(angle(z2'-z3')+5)}..{dir(angle(z2'-z3')-5)}z2'; +z5=bsktouch(p1,left,p2,right); +tim1=xpart(p1 intersectiontimes (z5--(w,y5))); +tim2=xpart(p2 intersectiontimes (z5--(0,y5))); +filldraw z1l--z2l&subpath(0,rundy(p0,1).zpet) of p0 + ..subpath (rundy(z3l--z4l,0),infinity) of (z3l--z4l)..z4r + ---subpath(0,rundy(p2,tim2).zpet) of p2..subpath(rundy(p1,tim1),infinity) of p1 + ..cycle; +penlabels(1,2,3,4); labels(2',2'',3'); +endchar; + +iff known chars.math_root_mid: +bskchar "Extensible root sign---extension module"; +beginchar(chars.math_root_mid,19u#,0,dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,180); pos2(rule_thickness,180); +y1=h; x1l=x2l=w-6u; bot y2=-d; +filldraw z1l---z2l..z2r---z1r..cycle; +penlabels(1,2); +endchar; + +iff known chars.math_root_top: +bskchar "Extensible root sign---top"; +beginchar(chars.math_root_top,19u#,rule_thickness#,dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu.more:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); +y1=-d; x1r=x2r=w-6u; bot y3l=0; y3r=y2; +x3=good.x(w+.5); y2r:=y3l; +filldraw z1l---obl(2l,1l,3r)---z3r..z3l---obl(2r,3l,1r).more---z1r..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_root_end: +bskchar "Root sign ending"; +beginchar(chars.math_root_end,3u#,rule_thickness#,2rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); +x1=0; rt x2=w-u; bot y1l=0; y2=y1; +lft x3l=x1+o; y3=-d; +filldraw z1r---z2r..z2l{dir(angle(z3r-z2r)-40)}..z3r..{dir60}z3l...{left}z1l..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_partial: +bskchar "Partial difference sign"; +beginchar(chars.math_partial,9u#,asc_height#,0); uni "0x2202"; +italcorr .7asc_height#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(vair,180); pos2(hair,90); pos3(curve,0); pos4(hair,270); +pos5(curve,180); pos6(hair,-90); pos7(curve,0); +lft x3l=u; y1=y3=.5x_height; x2=x4=.5w+.5hair; bot y2l=-o; .5[y4r,y2r]=y3; +rt x5l=w-u; y5l=y1r+stem; top y6l=h+o; x6=.5w+.5stem; +x7=x6-like_stem; y7=y6r-2/3like_stem; +p0=z2r{right}..z5r..{dir180}z6r; x1r=xpart (((0,y1)--(w,y1))intersectionpoint p0); +p1=z2l{left}..z3l..z4l{right}..{down}z1l; +z8=bsktouch(p0,left,subpath(1,infinity) of p1,right); +tim1=xpart(p1 intersectiontimes (z8--(x4,y8))); +tim2=xpart(p0 intersectiontimes (z8--(w,y8))); +filldraw z7r{down}..z7l{up}..{dir0}z6l...z5l..{left}z2l..subpath(0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p0,tim2),infinity) of p0..cycle; +infill z1r{up}..z4r{left}..z3r..z2r..cycle; +penlabels(1,2,3,4,5,6,7); +math_fit(-.5bar_height#*slant,0); +endchar; + +iff known chars.math_dag: +bskchar "Dagger symbol"; +beginchar(chars.math_dag,10u#,asc_height#,0); uni "0x2020"; +adjust_fit(0,0); +pickup tiny.nib; +numeric am; am=.5[hair,stem]; +pos1(hair,0); pos2(curve,0); pos3(hair,0); +pos4(am,90); pos5(curve,90); pos6(curve+hair,0); +pos7(am,90); pos8(curve,90); +x1=x2=x6=.5w; bot y1=-d-apex_o; y2=x_height-curve; bot z3=(x2,x_height+curve); +top y6=h; +z4-z3r=z3l-z7=1.5stem*right; rt z5=(w-1.25u,y4); x8=w-x5; y8=y5; +filldraw z1r{up}..z2r---obl(3r,2r,4l)---z4l..{right}z5l..(lft w-u,y5) + ..{left}z5r..z4r---obl(3r,4r,6r)..{up}z6r..top top z6 + ..z6l{down}..obl(3l,6l,7r)---z7r..{left}z8r..(rt u,y8) + ..{right}z8l..z7l---obl(3l,7l,2l)---z2l..{down}z1l..cycle; +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_dagger: +bskchar "Double dagger symbol"; +beginchar(chars.math_dagger,10u#,asc_height#,0); uni "0x2021"; +adjust_fit(0,0); +pickup tiny.nib; +numeric am; am=.5[hair,stem]; +pos1(hair,0); pos2(curve,0); pos3(hair,0); +pos4(am,90); pos5(curve,90); pos6(curve+hair,0); +pos7(am,90); pos8(curve,90); +pos9(curve,0); pos10(hair,0); +pos11(am,90); pos12(curve,90); pos13(curve+hair,0); +pos14(am,90); pos15(curve,90); +x2=x6=x9=x10=x13=.5w; y2=x_height-.5curve; bot z3=(x2,x_height+curve); +z4-z3r=z3l-z7=z11-z10r=z10l-z14=1.5stem*right; rt z5=(w-1.25u,y4); +x8=x15=w-x5; y8=y5; x12=x5; y15=y12=y11; +.5[y2,y9]=.5(h-d)=.5[y3,y10]; top y6=h; bot y13=-d; +z1=.5[z2,z9]; +filldraw z2r---obl(3r,2r,4l)---z4l..{right}z5l..(lft w-u,y5) + ..{left}z5r..z4r---obl(3r,4r,6r)..{up}z6r..top top z6 + ..z6l{down}..obl(3l,6l,7r)---z7r..{left}z8r..(rt u,y8) + ..{right}z8l..z7l---obl(3l,7l,2l)---z2l..z1l + ..z9l---obl(10l,9l,14r)---z14r..{left}z15r..(rt u,y15) + ..{right}z15l..z14l---obl(10r,14l,13l)..{down}z13l..bot bot z13 + ..{up}z13r..obl(10r,13r,11l)---z11l..{right}z12l..(lft w-u,y12) + ..{left}z12r..z11r---obl(10r,11r,9r)---z9r..z1r..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); +endchar; + +iff known chars.sign_died: +bskchar "Died symbol"; +beginchar(chars.sign_died,9u#,.5[asc_height#,x_height#],0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric am; am=.5[hair,stem]; +pos1(curve,0); pos2(hair,0); +pos3(am,90); pos4(curve,90); pos5(curve,0); +pos6(am,90); pos7(curve,90); +x1=x2=x5=.5w; bot y1=-d; y2=.65h; top y5=h; +z3-z2r=z2l-z6=1.5stem*right; rt z4=(w-u,y3); x7=w-x4; y7=y4; +filldraw z1r---obl(2r,1r,3l)---z3l..{right}z4l--z4r..z3r + ---obl(2r,3r,5r)---z5r..z5+o*up..z5l---obl(2l,5l,6r) + ---z6r..{left}z7r--z7l..z6l---obl(2l,6l,1l)---z1l--cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.arrow_right: +bskchar "Rightward arrow"; +beginchar(chars.arrow_right,15u#,v_center(5u#)); uni "0x2192"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x0=w-u; x1=w-x0; y0=y1r=math_axis; +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_right_long: +bskchar "Long rightward arrow"; +beginchar(chars.arrow_right_long,22u#,v_center(5u#)); uni "0x27F6"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x0=w-u; x1=w-x0; y0=y1r=math_axis; +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_right_doublehead: +bskchar "Rightward arrow with doublehead"; +beginchar(chars.arrow_right_doublehead,17u#,v_center(5u#)); uni "0x21A0"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,90); +rt x0=w-u; x1=w-x0; y0=y1r=math_axis; +bskpoints(1,0,hair,hair); +p0:=sipka(0,1); +p1:=p0 shifted (rt x0a-x0,0); +tim1=xpart(p1 intersectiontimes (z1l--(w,y0a.l))); +tim2-1=xpart(subpath(1,infinity) of p1 intersectiontimes (top z1r--(w,top y1r))); +tim3-5=xpart(subpath(5,infinity) of p0 intersectiontimes (z1l--(w,y0a.l))); +tim4=xpart(subpath(0,2) of p0 intersectiontimes (top z1r--(w,top y1r))); +filldraw subpath(rundy(p0,tim4),rundy(p0,tim3).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1---z1l..z1rr + ---subpath(0,rundy(p1,tim2).zpet) of p1..cycle; +labels(1rr); +endchar; + +iff known chars.arrow_right_short: +bskchar "Short rightward arrow"; +beginchar(chars.arrow_right_short,9u#,v_center(5u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x0=w-u; x1=w-x0; y0=y1r=math_axis; +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_right_triangle: +bskchar "Rightward arrow with triangle head"; +beginchar(chars.arrow_right_triangle,15u#,v_center(5u#)); uni "0x279D"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); penpos2(2arrwidth,90); pos3(rule_thickness,90); +x0=w-u; x1=w-x0; y0=y1=y2=y3=math_axis; x2=x3+o=x0-arrsize; +bskpoints(1,0,hair,hair); +filldraw obl(0,2l,2r)---obl(2r,0,3r)---obl(3r,2r,1r)---z1rr..z1l---obl(3l,1l,2l)---obl(2l,3l,0)---cycle; +penlabels(1,2,3); labels(0,1rr); +endchar; + +iff known chars.arrow_right_triangle_white: +bskchar "Rightward arrow with white triangle head"; +beginchar(chars.arrow_right_triangle_white,15u#,v_center(5u#)); uni "0x21FE"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); penpos2(2arrwidth,90); pos3(rule_thickness,90); +x0=w-u; x1=w-x0; y0=y1=y2=y3=math_axis; x2=x3+o=x0-arrsize; +z0'-z0=(0,rule_thickness-currentbreadth) rotated angle(z2r-z0); +z0''-z0=(rule_thickness-currentbreadth,0) rotated angle(z2r-z0); +x2'l=x2'r=x2+rule_thickness-currentbreadth; +z2'r=z0'+whatever*(z2r-z0); z2'l=z0''+whatever*(z2l-z0); +z0'''=whatever[z2'l,z0'']=whatever[z2'r,z0']; +bskpoints(1,0,hair,hair); +filldraw obl(0,2l,2r)---obl(2r,0,3r)---obl(3r,2r,1r)---z1rr..z1l---obl(3l,1l,2l)---obl(2l,3l,0)---cycle; +oblu:=2oblu; +infill obl(0''',2'r,2'l)---obl(2'l,0''',2'r)---obl(2'r,2'l,0''')---cycle; +penlabels(1,2,2',3); labels(0,0',0'',0''',1rr); +endchar; + +iff known chars.arrow_left_triangle: +bskchar "Leftward arrow with triangle head"; +beginchar(chars.arrow_left_triangle,15u#,v_center(5u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); penpos2(2arrwidth,90); pos3(rule_thickness,90); +x0=u; x1=w-x0; y0=y1=y2=y3=math_axis; x2=x3-o=x0+arrsize; +bskpoints(1,0,hair,hair); +filldraw obl(0,2l,2r)---obl(2r,0,3r)---obl(3r,2r,1r)---z1rr..z1l---obl(3l,1l,2l)---obl(2l,3l,0)---cycle; +penlabels(1,2,3); labels(0,1rr); +endchar; + +iff known chars.arrow_left_triangle_white: +bskchar "Leftward arrow with white triangle head"; +beginchar(chars.arrow_left_triangle_white,15u#,v_center(5u#)); uni "0x21FD"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); penpos2(2arrwidth,90); pos3(rule_thickness,90); +x0=u; x1=w-x0; y0=y1=y2=y3=math_axis; x2=x3-o=x0+arrsize; +z0'-z0=(0,-rule_thickness+currentbreadth) rotated angle(z2r-z0); +z0''-z0=(rule_thickness-currentbreadth,0) rotated angle(z2r-z0); +x2'l=x2'r=x2-rule_thickness+currentbreadth; +z2'r=z0'+whatever*(z2r-z0); z2'l=z0''+whatever*(z2l-z0); +z0'''=whatever[z2'l,z0'']=whatever[z2'r,z0']; +bskpoints(1,0,hair,hair); +filldraw obl(0,2l,2r)---obl(2r,0,3r)---obl(3r,2r,1r)---z1rr..z1l---obl(3l,1l,2l)---obl(2l,3l,0)---cycle; +oblu:=2oblu; +infill obl(0''',2'r,2'l)---obl(2'l,0''',2'r)---obl(2'r,2'l,0''')---cycle; +penlabels(1,2,2',3); labels(0,0',0'',0''',1rr); +endchar; + +iff known chars.arrow_left_right_triangle: +bskchar "Left-rightward arrow with triangle heads"; +beginchar(chars.arrow_left_right_triangle,15u#,v_center(5u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); penpos2(2arrwidth,90); pos3(rule_thickness,90); +penpos4(2arrwidth,90); +x0=w-u; x5=u; x1=x4-o=x5+arrsize; y0=y1=y2=y3=y4=y5=math_axis; x2=x3+o=x0-arrsize; +filldraw obl(0,2l,2r)---obl(2r,0,3r)---obl(3r,2r,1r)---obl(1r,3r,4r)---obl(4r,1r,5) + ---obl(5,4r,4l)---obl(4l,5,1l)---obl(1l,4l,3l)---obl(3l,1l,2l)---obl(2l,3l,0)---cycle; +penlabels(1,2,3,4); labels(0,5); +endchar; + +iff known chars.arrow_left_right_triangle_white: +bskchar "Left-rightward arrow with white triangle heads"; +beginchar(chars.arrow_left_right_triangle_white,15u#,v_center(5u#)); uni "0x21FF"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); penpos2(2arrwidth,90); pos3(rule_thickness,90); +penpos4(2arrwidth,90); +x0=w-u; x5=u; x1=x4-o=x5+arrsize; y0=y1=y2=y3=y4=y5=math_axis; x2=x3+o=x0-arrsize; +z0'-z0=(0,rule_thickness-currentbreadth) rotated angle(z2r-z0); +z0''-z0=(rule_thickness-currentbreadth,0) rotated angle(z2r-z0); +x2'l=x2'r=x2+rule_thickness-currentbreadth; +z2'r=z0'+whatever*(z2r-z0); z2'l=z0''+whatever*(z2l-z0); +z0'''=whatever[z2'l,z0'']=whatever[z2'r,z0']; + +z5'-z5=(0,-rule_thickness+currentbreadth) rotated angle(z4r-z5); +z5''-z5=(rule_thickness-currentbreadth,0) rotated angle(z4r-z5); +x4'l=x4'r=x4-rule_thickness+currentbreadth; +z4'r=z5'+whatever*(z4r-z5); z4'l=z5''+whatever*(z4l-z5); +z5'''=whatever[z4'l,z5'']=whatever[z4'r,z5']; +filldraw obl(0,2l,2r)---obl(2r,0,3r)---obl(3r,2r,1r)---obl(1r,3r,4r)---obl(4r,1r,5) + ---obl(5,4r,4l)---obl(4l,5,1l)---obl(1l,4l,3l)---obl(3l,1l,2l)---obl(2l,3l,0)---cycle; +oblu:=2oblu; +infill obl(0''',2'r,2'l)---obl(2'l,0''',2'r)---obl(2'r,2'l,0''')---cycle; +infill obl(5''',4'r,4'l)---obl(4'l,5''',4'r)---obl(4'r,4'l,5''')---cycle; +penlabels(1,2,2',3,4,4'); labels(0,0',0'',0''',5); +endchar; + +iff known chars.arrow_right_two: +bskchar "Two rightward arrows"; +beginchar(chars.arrow_right_two,15u#,v_center(13u#)); uni "0x21C9"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos3(rule_thickness,90); +rt x0=rt x2=w-u; x1=x3=w-x0; y0=y1r; y2=y3r; .5[y0,y2]=math_axis; bot y2-top y1=2arrwidth+o; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +filldraw sipka(2,3)---z3l..z3rr---cycle; +labels(1rr,3rr); +endchar; + +iff known chars.arrow_right_three: +bskchar "Three rightward arrows"; +beginchar(chars.arrow_right_three,15u#,v_center(13u#)); uni "0x21F6"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos3(rule_thickness,90); pos5(rule_thickness,90); +{{ save arrwidth, arrsize; +numeric arrsize, arrwidth; arrsize=1.2arrwidth=if boldmath: 2.35 else:2\\ fi curve; +rt x0=rt x2=rt x4=w-u; x1=x3=x5=w-x0; y0=y1r; y2=y3r; y4=y5r; +.5[y0,y4]=y2=math_axis; bot y2-top y1=2arrwidth+o; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +filldraw sipka(2,3)---z3l..z3rr---cycle; +filldraw sipka(4,5)---z5l..z5rr---cycle; +}}; +labels(1rr,3rr,5rr); +endchar; + +iff known chars.arrow_right_not: +bskchar "Rightward arrow with negation"; +beginchar(chars.arrow_right_not,15u#,v_center(5u#)); uni "0x219B"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2oblu; +pos1(rule_thickness,90); +rt x0=w-u; x1=w-x0; y0=y1r=math_axis; +.5[x2,x3]=.5[x0c,x1]; .5[y2,y3]=y0; x3-x2=.5(y3-y2); top y3=h; +pos2(rule_thickness,angle(z2-z3)+90); pos3(rule_thickness,angle(z2-z3)+90); +y2'l=y2'r=y1l; z2'l=whatever[z2l,z3l]; z2'r=whatever[z2r,z3r]; +y3'l=y3'r=y1r; z3'l=whatever[z2l,z3l]; z3'r=whatever[z2r,z3r]; +bskpoints(1,0,hair,hair); +bskpoints(2,3,rule_thickness,rule_thickness); +filldraw sipka(0,1)---obl(2'r,0a.l,2r)---z2rr..z2l---obl(2'l,2l,1l).more + ---z1l..z1rr---obl(3'l,1rr,3l)---z3ll..z3r---obl(3'r,3r,0a.r).more---cycle; +penlabels(2,3); labels(1rr,2'l,2'r,3'l,3'r,2rr,3ll); +endchar; + +iff known chars.arrow_right_not_vert: +bskchar "Rightward arrow with vertical negation"; +beginchar(chars.arrow_right_not_vert,15u#,v_center(5u#)); uni "0x21F8"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x0=w-u; x1=w-x0; y0=y1r=math_axis; +x2=x3=.5[x0c,x1]; .5[y2,y3]=y0; top y3=h; +pos2(rule_thickness,0); pos3(rule_thickness,0); +y2'l=y2'r=y1l; z2'l=whatever[z2l,z3l]; z2'r=whatever[z2r,z3r]; +y3'l=y3'r=y1r; z3'l=whatever[z2l,z3l]; z3'r=whatever[z2r,z3r]; +bskpoints(1,0,hair,hair); +bskpoints(2,3,rule_thickness,rule_thickness); +filldraw sipka(0,1)---obl(2'r,0a.l,2r)---z2rr..z2l---obl(2'l,2l,1l) + ---z1l..z1rr---obl(3'l,1rr,3l)---z3ll..z3r---obl(3'r,3r,0a.r)---cycle; +penlabels(2,3); labels(1rr,2'l,2'r,3'l,3'r,2rr,3ll); +endchar; + +iff known chars.arrow_right_not_vert_double: +bskchar "Rightward arrow with double vertical negation"; +beginchar(chars.arrow_right_not_vert_double,15u#,v_center(5u#)); uni "0x21FB"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x0=w-u; x1=w-x0; y0=y1r=math_axis; +x2=x3; .5[x2,x4]=.5[x0c,x1]; x4=x5; x4-x2=min(3rule_thickness,3u); +.5[y2,y3]=.5[y4,y5]=y0; top y3=top y5=h; +pos2(rule_thickness,0); pos3(rule_thickness,0); +pos4(rule_thickness,0); pos5(rule_thickness,0); +y2'l=y2'r=y4'l=y4'r=y1l; z2'l=whatever[z2l,z3l]; z2'r=whatever[z2r,z3r]; +y3'l=y3'r=y5'l=y5'r=y1r; z3'l=whatever[z2l,z3l]; z3'r=whatever[z2r,z3r]; +x4'l=x5'l=x4l; x4'r=x5'r=x4r; +bskpoints(1,0,hair,hair); +bskpoints(2,3,rule_thickness,rule_thickness); +bskpoints(4,5,rule_thickness,rule_thickness); +filldraw sipka(0,1)---obl(4'r,0a.l,4r)---z4rr..z4l---tobl(4'l,4l,2'r) + ---obl(2'r,0a.l,2r)---z2rr..z2l---obl(2'l,2l,1l) + ---z1l..z1rr---obl(3'l,1rr,3l)---z3ll..z3r---tobl(3'r,3r,5'l) + ---tobl(5'l,3'r,5ll)---z5ll..z5r---obl(5'r,5r,0a.r)---cycle; +penlabels(2,3,4,5); labels(1rr,2'l,2'r,3'l,3'r,2rr,3ll); +endchar; + +iff known chars.arrow_right_tail: +bskchar "Rightward arrow with tail"; +beginchar(chars.arrow_right_tail,15u#,v_center(5u#)); uni "0x21A3"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x0=w-u; x1=w-x0+arrsize; y0=y1r=math_axis; +forsuffixes $=b,e,d,c: z1$-z1=z0$-z0; endfor; +x1r:=x1l:=x1r-u; +filldraw sipka(0,1)---z1l{dir210}..z1b{dir225}..{dir45}z1b+hair*up + ..z1c..z1d..z1e+hair*down{dir135}..{dir-45}z1e..{dir-30}z1r--cycle; +labels(1b,1c,1d,1e); +endchar; + +iff known chars.arrow_hook_left: +bskchar "Left hook for rightward arrows"; +beginchar(chars.arrow_hook_left,5u#,math_axis#+4u#,-math_axis#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); pos4(rule_thickness,270); +y1r=y2r=math_axis; rt x2=w-u; x1=x2+hair; +x3l=u; x4=x2; y3=.5[y2,y4]; y4l=h; +x4l:=x4l-hair; +filldraw z1l---z2l..z3l{up}..{right}z4l..{left}z4r..{down}z3r..z2r---z1r..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.arrow_right_hook: +bskchar "Rightward hook arrow"; +beginchar(chars.arrow_right_hook,18u#,v_center(5u#)); uni "0x21AA"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,0); pos3(rule_thickness,270); +rt x0=w-u; rt x1=4u; y0=y1r=math_axis; +x2l=u; x3=x1; y2=.5[y1,y3]; y3l=math_axis+4u; x3l:=x3l-hair; +filldraw sipka(0,1)---z1l..z2l{up}..{right}z3l..{left}z3r..{down}z2r..z1r---cycle; +penlabels(2,3); labels(1rr); +endchar; + +iff known chars.arrow_right_circle: +bskchar "Rightward arrow through circle"; +beginchar(chars.arrow_right_circle,18u#,v_center(11u#)); uni "0x21F4"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos9(rule_thickness,90); pos10(rule_thickness,90); +.5[y8,y4]=math_axis; .5[x2,x6]=.5[x9,x10]; x2-x6=y8-y4=6u; +lft x9=u; rt x10=w-5u; rt x11=w-u; y9r=y10=y11=math_axis; +circle_points(rule_thickness); +bskpoints(9,10,hair,hair); +p0:=reverse (draw_circle.l); +p1:=reverse (draw_circle.r); +p2:=z9rr{left}..z9l---z10l..z10r---z9rr; +(tim0-1,tim1-1)=subpath(1,3) of p0 intersectiontimes subpath(1,2) of p2; +(tim2-5,tim3)=subpath(5,7) of p0 intersectiontimes subpath(0,2) of p2; +(tim4-5,tim5-3)=subpath(5,7) of p0 intersectiontimes subpath(3,4) of p2; +(tim6-1,tim7-3)=subpath(1,3) of p0 intersectiontimes subpath(3,4) of p2; +(tim8-1,tim9-1)=subpath(1,3) of p1 intersectiontimes subpath(1,2) of p2; +(tim10-5,tim11)=subpath(5,7) of p1 intersectiontimes subpath(0,2) of p2; +(tim12-5,tim13-3)=subpath(5,7) of p1 intersectiontimes subpath(3,4) of p2; +(tim14-1,tim15-3)=subpath(1,3) of p1 intersectiontimes subpath(3,4) of p2; +filldraw subpath(0,rundy(p2,tim1).zpet) of p2 + ..subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0 + ..subpath(rundy(p2,tim3),2) of p2 + ..reverse sipka(11,10) + ..subpath(3,rundy(p2,tim5).zpet) of p2 + ..subpath(rundy(p0,tim4),length p0) of p0 + ..subpath(0,rundy(p0,tim6).zpet) of p0 + ..subpath(rundy(p2,tim7),infinity) of p2..cycle; +infill subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 + ..subpath(rundy(p1,tim10).zpet,rundy(p1,tim8)) of p1..cycle; +infill subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2 + ..reverse subpath(0,rundy(p1,tim14).zpet) of p1 + ..reverse subpath(rundy(p1,tim12),length p1) of p1..cycle; +penlabels(9,10); +endchar; + + +iff known chars.arrow_left: +bskchar "Leftward arrow"; +beginchar(chars.arrow_left,15u#,v_center(5u#)); uni "0x2190"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1l=math_axis; +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1rr..z1l---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_left_long: +bskchar "Long leftward arrow"; +beginchar(chars.arrow_left_long,22u#,v_center(5u#)); uni "0x27F5"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1l=math_axis; +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1rr..z1l---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_left_doublehead: +bskchar "Leftward arrow with doublehead"; +beginchar(chars.arrow_left_doublehead,17u#,v_center(5u#)); uni "0x219E"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1l=math_axis; +bskpoints(1,0,hair,hair); +p0:=sipka(0,1); +p1:=p0 shifted (lft x0a-x0,0); +tim1=xpart(p1 intersectiontimes (z1r--(0,y0a.l))); +tim2-1=xpart(subpath(1,infinity) of p1 intersectiontimes (bot z1l--(0,bot y1l))); +tim3-6=xpart(subpath(6,infinity) of p0 intersectiontimes (top z1r--(0,top y1r))); +tim4=xpart(subpath(0,2) of p0 intersectiontimes (bot z1l--(0,bot y1l))); +filldraw subpath(rundy(p0,tim4),rundy(p0,tim3).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1---z1rr..z1l + ---subpath(0,rundy(p1,tim2).zpet) of p1..cycle; +labels(1rr); +endchar; + +iff known chars.arrow_left_short: +bskchar "Short leftward arrow"; +beginchar(chars.arrow_left_short,9u#,v_center(5u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1l=math_axis; +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1rr..z1l---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_left_two: +bskchar "Two leftward arrows"; +beginchar(chars.arrow_left_two,15u#,v_center(13u#)); uni "0x21C7"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos3(rule_thickness,90); +lft x0=lft x2=u; x1=x3=w-x0; y0=y1l; y2=y3l; .5[y0,y2]=math_axis; bot y2-top y1=2arrwidth; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); +filldraw sipka(0,1)---z1rr..z1l---cycle; +filldraw sipka(2,3)---z3rr..z3l---cycle; +labels(1rr,3rr); +endchar; + +iff known chars.arrow_left_not: +bskchar "Leftward arrow with negation"; +beginchar(chars.arrow_left_not,15u#,v_center(5u#)); uni "0x219A"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2oblu; +pos1(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1l=math_axis; +.5[x2,x3]=.5[x0c,x1]; .5[y2,y3]=y0; x3-x2=.5(y3-y2); top y3=h; +pos2(rule_thickness,angle(z2-z3)+90); pos3(rule_thickness,angle(z2-z3)+90); +y2'l=y2'r=y1l; z2'l=whatever[z2l,z3l]; z2'r=whatever[z2r,z3r]; +y3'l=y3'r=y1r; z3'l=whatever[z2l,z3l]; z3'r=whatever[z2r,z3r]; +bskpoints(1,0,hair,hair); +bskpoints(2,3,rule_thickness,rule_thickness); +filldraw sipka(0,1)---obl(3'l,0a.l,3l)---z3ll..z3r---obl(3'r,3r,1r).more + ---z1rr..z1l---obl(2'r,1l,2r)---z2rr..z2l---obl(2'l,2l,0a.r).more---cycle; +penlabels(2,3); labels(1rr,2'l,2'r,3'l,3'r,2rr,3ll); +endchar; + +iff known chars.arrow_left_not_vert: +bskchar "Leftward arrow with vertical negation"; +beginchar(chars.arrow_left_not_vert,15u#,v_center(5u#)); uni "0x21F7"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1l=math_axis; +x2=x3=.5[x0c,x1]; .5[y2,y3]=y0; top y3=h; +pos2(rule_thickness,0); pos3(rule_thickness,0); +y2'l=y2'r=y1l; z2'l=whatever[z2l,z3l]; z2'r=whatever[z2r,z3r]; +y3'l=y3'r=y1r; z3'l=whatever[z2l,z3l]; z3'r=whatever[z2r,z3r]; +bskpoints(1,0,hair,hair); +bskpoints(2,3,rule_thickness,rule_thickness); +filldraw sipka(0,1)---obl(3'l,0a.l,3l)---z3ll..z3r---obl(3'r,3r,1r) + ---z1rr..z1l---obl(2'r,1l,2r)---z2rr..z2l---obl(2'l,2l,0a.r)---cycle; +penlabels(2,3); labels(1rr,2'l,2'r,3'l,3'r,2rr,3ll); +endchar; + +iff known chars.arrow_left_dash: +bskchar "Leftward dashed arrow"; +beginchar(chars.arrow_left_dash,15u#,v_center(5u#)); uni "0x21E0"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +pos2(rule_thickness,90); pos3(rule_thickness,90); pos4(rule_thickness,90); pos5(rule_thickness,90); +lft x0=u; x1=.5w-u; y0=y1l=y2l=y3l=y4l=y5l=math_axis; +rt x5=w-u; x2-x1=x4-x3=2.5rule_thickness; x5-x4=x3-x2; +bskpoints(1,0,hair,hair); bskpoints(5,4,hair,hair); +filldraw sipka(0,1)---z1r..z1l---cycle; +filldraw z2r---z3r..z3l---z2l..cycle; +filldraw z4r---z5rr..z5l---z4ll..cycle; +penlabels(2,3,4,5); labels(1rr,4ll,5rr); +endchar; + +iff known chars.arrow_up_dash: +bskchar "Upward dashed arrow"; +beginchar(chars.arrow_up_dash,9u#,asc_height#,0); uni "0x21E1"; +italcorr x_height#*slant; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +pos2(rule_thickness,0); pos3(rule_thickness,0); pos4(rule_thickness,0); pos5(rule_thickness,0); +x0=x1l=x2l=x3l=x4l=x5l=.5w-o; +top y0=h+apex_o; bot y1=x_height; +bot y5=-d; y1-y2=y3-y4=2.5rule_thickness; y5-y4=y3-y2; +bskpoints(1,0,hair,hair); bskpoints(5,4,hair,hair); +filldraw sipka(0,1)---z1r..z1l---cycle; +filldraw z2r---z3r..z3l---z2l..cycle; +filldraw z4r---z5rr..z5l---z4ll..cycle; +penlabels(2,3,4,5); labels(1rr,4ll,5rr); +endchar; + +iff known chars.arrow_right_dash: +bskchar "Rightward dashed arrow"; +beginchar(chars.arrow_right_dash,15u#,v_center(5u#)); uni "0x21E2"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +pos2(rule_thickness,90); pos3(rule_thickness,90); pos4(rule_thickness,90); pos5(rule_thickness,90); +rt x0=w-u; x1=.5w+u; y0=y1r=y2r=y3r=y4r=y5r=math_axis; +lft x5=u; x2-x1=x4-x3=-2.5rule_thickness; x5-x4=x3-x2; +bskpoints(1,0,hair,hair); bskpoints(5,4,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +filldraw z2r---z3r..z3l---z2l..cycle; +filldraw z4r---z5rr..z5l---z4ll..cycle; +penlabels(2,3,4,5); labels(1rr,4ll,5rr); +endchar; + +iff known chars.arrow_down_dash: +bskchar "Downward dashed arrow"; +beginchar(chars.arrow_down_dash,9u#,asc_height#,0); uni "0x21E3"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +pos2(rule_thickness,0); pos3(rule_thickness,0); pos4(rule_thickness,0); pos5(rule_thickness,0); +x0=x1r=x2r=x3r=x4r=x5r=.5w+o; +bot y0=-d-apex_o; top y1=(h-x_height); +top y5=h; y1-y2=y3-y4=-2.5rule_thickness; y5-y4=y3-y2; +bskpoints(1,0,hair,hair); bskpoints(5,4,hair,hair); +filldraw sipka(0,1)---z1l..z1r---cycle; +filldraw z2r---z3r..z3l---z2l..cycle; +filldraw z4r---z5rr..z5l---z4ll..cycle; +penlabels(2,3,4,5); labels(1rr,4ll,5rr); +endchar; + +iff known chars.arrow_left_not_vert_double: +bskchar "Leftward arrow with double vertical negation"; +beginchar(chars.arrow_left_not_vert_double,15u#,v_center(5u#)); uni "0x21FA"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1l=math_axis; +x2=x3; .5[x2,x4]=.5[x0c,x1]; x4=x5; x4-x2=min(3rule_thickness,3u); +.5[y2,y3]=.5[y4,y5]=y0; top y3=top y5=h; +pos2(rule_thickness,0); pos3(rule_thickness,0); +pos4(rule_thickness,0); pos5(rule_thickness,0); +y2'l=y2'r=y4'l=y4'r=y1l; z2'l=whatever[z2l,z3l]; z2'r=whatever[z2r,z3r]; +y3'l=y3'r=y5'l=y5'r=y1r; z3'l=whatever[z2l,z3l]; z3'r=whatever[z2r,z3r]; +x5'l=x4'l=x5l; x5'r=x4'r=x5r; +bskpoints(1,0,hair,hair); +bskpoints(2,3,rule_thickness,rule_thickness); +bskpoints(4,5,rule_thickness,rule_thickness); +filldraw sipka(0,1)---obl(3'l,0a.l,3l)---z3ll..z3r---tobl(3'r,3r,5'l) + ---tobl(5'l,3'r,5l)---z5ll..z5r---obl(5'r,5r,1r) + ---z1rr..z1l---obl(4'r,1l,4r)---z4rr..z4l---tobl(4'l,4l,2'r) + ---tobl(2'r,1l,2r)---z2rr..z2l---obl(2'l,2l,0a.r)---cycle; +penlabels(2,3,4,5); labels(1rr,2'l,2'r,3'l,3'r,2rr,3ll); +endchar; + +iff known chars.arrow_left_tail: +bskchar "Leftward arrow with tail"; +beginchar(chars.arrow_left_tail,15u#,v_center(5u#)); uni "0x21A2"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +lft x0=u; x1=w-x0-arrsize; y0=y1l=math_axis; +forsuffixes $=b,e,d,c: z1$-z1=z0$-z0; endfor; +x1r:=x1l:=x1r+u; +filldraw sipka(0,1)---z1r{dir30}..{dir45}z1b..z1b+hair*down{dir225} + ..z1c..z1d..{dir-45}z1e+hair*up..{dir135}z1e..{dir150}z1l---cycle; +labels(1b,1c,1d,1e); +endchar; + +iff known chars.arrow_hook_right: +bskchar "Right hook for leftward arrow"; +beginchar(chars.arrow_hook_right,5u#,math_axis#+4u#,-math_axis#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +y1l=y2l=math_axis; lft x2=u; x1=x2-hair; +x3l=w-u; x4=x2; y3=.5[y2,y4]; y4l=h; +x4r:=x4r+hair; +filldraw z1l---z2l..z3l{up}..{left}z4l..{right}z4r..{down}z3r..z2r---z1r..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.arrow_left_hook: +bskchar "Leftward arrow with hook"; +beginchar(chars.arrow_left_hook,18u#,v_center(5u#)); uni "0x21A9"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,180); pos3(rule_thickness,270); +lft x0=u; lft x1=w-4u; y0=y1l=math_axis; +x2l=w-u; x3=x1+hair; y2=.5[y1,y3]; y3l=math_axis+4u; x3r:=x3r+hair; +filldraw sipka(0,1)---z1r..{up}z2r..z3r{left}..z3l{right}..z2l{down}..z1l---cycle; +penlabels(2,3); labels(1rr); +endchar; + +iff known chars.arrow_left_above_right: +bskchar "Leftward arrow above rightward arrow"; +beginchar(chars.arrow_left_above_right,15u#,v_center(13u#)); uni "0x21C6"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos3(rule_thickness,90); +lft x0=u; x1=w-x0; rt x2=w-u; x3=w-x2; y0=y1l; y2=y3r; +.5[y0,y2]=math_axis; bot y2-top y1=-2arrwidth; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); +filldraw sipka(0,1)---z1rr..z1l---cycle; +filldraw sipka(2,3)---z3l..z3rr---cycle; +labels(1rr,3rr); +endchar; + +iff known chars.arrow_left_above_right_stop: +bskchar "Leftward arrow above rightward arrow with stop bars"; +beginchar(chars.arrow_left_above_right_stop,15u#,v_center(13u#)); uni "0x21B9"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,90); pos3(rule_thickness,90); +pos4(rule_thickness,0); pos5(rule_thickness,0); +pos6(rule_thickness,0); pos7(rule_thickness,0); +lft x0=u; x1=w-x0; rt x2=w-u; x3=w-x2; y0=y1l; y2=y3r; +.5[y0,y2]=math_axis; bot y2-top y1=-2arrwidth; +.5[y4,y5]=y0; y4=y0b; x4l=x5l=x0; +.5[y6,y7]=y2; y6=y2e; x6r=x7r=x2; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); +p0=sipka(0,1); +p1=reverse bskrule(4,5,rule_thickness,rule_thickness); +p2=sipka(2,3); +p3=bskrule(7,6,rule_thickness,rule_thickness); +(tim0,tim1)=p0 intersectiontimes p1; +tim4=round(tim0); +(tim2-tim4,tim3)=subpath(tim4,infinity) of p0 intersectiontimes p1; +(tim5,tim6)=p2 intersectiontimes p3; +tim9=round(tim5); +(tim7-tim9,tim8)=subpath(tim9,infinity) of p2 intersectiontimes p3; +oblu:=2oblu; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),length p1) of p1 + ..subpath(0,rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),infinity) of p0---z1rr..z1l---cycle; +filldraw subpath(0,rundy(p2,tim5).zpet) of p2 + ..subpath(rundy(p3,tim6),length p3) of p3 + ..subpath(0,rundy(p3,tim8).zpet) of p3 + ..subpath(rundy(p2,tim7),infinity) of p2---z3l..z3r---cycle ; +penlabels(4,5,6,7); labels(1rr,3rr); +endchar; + +iff known chars.arrow_right_above_left: +bskchar "Rightward arrow above leftward arrow"; +beginchar(chars.arrow_right_above_left,15u#,v_center(13u#)); uni "0x21C4"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos3(rule_thickness,90); +lft x0=u; x1=w-x0; rt x2=w-u; x3=w-x2; y0=y1l; y2=y3r; +.5[y0,y2]=math_axis; bot y2-top y1=2arrwidth; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); +filldraw sipka(0,1)---z1rr..z1l---cycle; +filldraw sipka(2,3)---z3l..z3rr---cycle; +labels(1rr,3rr); +endchar; + +iff known chars.arrow_up_tip_left: +bskchar "Upward arrow with leftward tip"; +beginchar(chars.arrow_up_tip_left,9.5u#,asc_height#,0); uni "0x21B0"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,0); +lft x0=u; x1=w-x0; y0=y1l=h-arrwidth; x1l:=x1l-rule_thickness+currentbreadth; +bot y2=-d; rt x2r=w-u; +bskpoints(2,1,hair,hair); +filldraw sipka(0,1)---obl(1r,0a.l,2r)---z2rr..z2l---obl(1l,2l,0a.r)---cycle; +penlabels(2); labels(2rr); +endchar; + +iff known chars.arrow_up_tip_right: +bskchar "Upward arrow with rightward tip"; +beginchar(chars.arrow_up_tip_right,9.5u#,asc_height#,0); uni "0x21B1"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,0); +rt x0=w-u; x1=w-x0; y0=y1r=h-arrwidth; x1l:=x1l+rule_thickness-currentbreadth; +bot y2=-d; lft x2l=u; +bskpoints(2,1,hair,hair); +filldraw sipka(0,1)---obl(1l,0a.l,2r)---z2rr..z2l---obl(1r,2l,0a.r)---cycle; +penlabels(2); labels(2rr); +endchar; + +iff known chars.arrow_down_tip_left: +bskchar "Downward arrow with leftward tip"; +beginchar(chars.arrow_down_tip_left,9.5u#,asc_height#,0); uni "0x21B2"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,180); +lft x0=u; x1=w-x0; y0=y1l=arrwidth; x1r:=x1r-rule_thickness+currentbreadth; +top y2=h; rt x2l=w-u; +bskpoints(2,1,hair,hair); +filldraw sipka(0,1)---obl(1r,0a.l,2r)---z2rr..z2l---obl(1l,2l,0a.r)---cycle; +penlabels(2); labels(2rr); +endchar; + +iff known chars.arrow_CR: +bskchar "Carriage return arrow"; +beginchar(chars.arrow_CR,12u#,.5[x_height#,asc_height#],0); uni "0x21B5"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,180); +lft x0=u; x1=w-x0; y0=y1l=arrwidth; x1r:=x1r-rule_thickness+currentbreadth; +top y2=h; rt x2l=w-u; +bskpoints(2,1,hair,hair); +filldraw sipka(0,1)---obl(1r,0a.l,2r)---z2rr..z2l---obl(1l,2l,0a.r)---cycle; +penlabels(2); labels(2rr); +endchar; + +iff known chars.arrow_LF: +bskchar "Line feed arrow"; +beginchar(chars.arrow_LF,13u#,x_height#,0); uni "0x21B4"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,90); +x0=x1r=w-u-arrwidth; top y2r=h; lft x2=u; +bot y0=-d-apex_o; top y1=h; y1l:=y1l-rule_thickness+currentbreadth; +bskpoints(2,1,hair,hair); +filldraw sipka(0,1)---obl(1l,0a.l,2l)---z2l..z2rr---obl(1r,2r,0a.r)---cycle; +penlabels(2); labels(2rr); +endchar; + +iff known chars.arrow_down_tip_right: +bskchar "Downward arrow with rightward tip"; +beginchar(chars.arrow_down_tip_right,9.5u#,asc_height#,0); uni "0x21B3"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,180); +rt x0=w-u; x1=w-x0; y0=y1r=arrwidth; x1r:=x1r+rule_thickness-currentbreadth; +top y2=h; lft x2r=u; +bskpoints(2,1,hair,hair); +filldraw sipka(0,1)---obl(1l,0a.l,2r)---z2rr..z2l---obl(1r,2l,0a.r)---cycle; +penlabels(2); labels(2rr); +endchar; + +iff known chars.arrow_up: +bskchar "Upward arrow"; +beginchar(chars.arrow_up,9u#,asc_height#,0); uni "0x2191"; +italcorr x_height#*slant; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +x0=x1l=.5w-o; +top y0=h+apex_o; bot y1=-d; +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1rr..z1l---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_up_doublehead: +bskchar "Upward arrow with doublehead"; +beginchar(chars.arrow_up_doublehead,9u#,asc_height#,0); uni "0x219F"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,0); +x0=x1l=.5w-o; top y0=h+apex_o; bot y1=-d; +bskpoints(1,0,hair,hair); +p0:=sipka(0,1); +p1:=p0 shifted (0,bot y0a-y0); +tim1=xpart(p1 intersectiontimes (z1r--(x0a.r,h))); +tim2-1=xpart(subpath(1,infinity) of p1 intersectiontimes (lft z1l--(lft x1l,h))); +tim3-5=xpart(subpath(5,infinity) of p0 intersectiontimes (rt z1r--(rt x0a.l,h))); +tim4=xpart(subpath(0,2) of p0 intersectiontimes (lft z1l--(lft x1l,h))); +filldraw subpath(rundy(p0,tim4),rundy(p0,tim3).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1---z1rr..z1l + ---subpath(0,rundy(p1,tim2).zpet) of p1..cycle; +labels(1rr); +endchar; + +iff known chars.arrow_up_bars: +bskchar "Upward arrow with two horizontal bars"; +beginchar(chars.arrow_up_bars,9u#,asc_height#,0); uni "0x21DE"; +italcorr x_height#*slant; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +x0=x1l=.5w-o; +top y0=h+apex_o; bot y1=-d; +pos2(rule_thickness,90); pos3(rule_thickness,90); +pos4(rule_thickness,90); pos5(rule_thickness,90); +.5[x2,x3]=.5[x4,x5]=x1; y2=y3; y4=y5; .5[y2,y4]=.5[y0c,y1]; y4-y2=min(3rule_thickness,3u); +lft x2=lft x4=u; +y5'r=y4'r=y4r; y5'l=y4'l=y4l; y2'r=y3'r=y3r; y2'l=y3'l=y3l; +x5'r=x5'l=x3'r=x3'l=x1r; x4'r=x4'l=x2'r=x2'l=x1l; +bskpoints(1,0,hair,hair); +bskpoints(2,3,rule_thickness,rule_thickness); +bskpoints(4,5,rule_thickness,rule_thickness); +filldraw sipka(0,1)---obl(5'r,0a.l,5r)---z5r..z5ll---tobl(5'l,5ll,3'r) + ---tobl(3'r,5'l,3r)---z3r..z3ll---obl(3'l,3ll,1r)---z1rr..z1l + ---obl(2'l,1l,2l)---z2l..z2rr---tobl(2'r,2rr,4'l)---tobl(4'l,2'r,4l) + ---z4l..z4rr---obl(4'r,4rr,0a.r)---cycle; +penlabels(2,3,4,5); labels(1rr); +endchar; + +iff known chars.arrow_up_two: +bskchar "Two upward arrows"; +beginchar(chars.arrow_up_two,15.5u#,asc_height#,0); uni "0x21C8"; +italcorr x_height#*slant; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos3(rule_thickness,0); +x0=x1l; lft x0=u+arrwidth; +x2=x3l; rt x2=w-u-arrwidth; +top y0=top y2=h+apex_o; bot y1=bot y3=-d; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); +filldraw sipka(0,1)---z1rr..z1l---cycle; +filldraw sipka(2,3)---z3rr..z3l---cycle; +labels(1rr,2rr); +endchar; + +iff known chars.arrow_down: +bskchar "Downward arrow"; +beginchar(chars.arrow_down,9u#,asc_height#,0); uni "0x2193"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +x0=x1r=.5w+o; +bot y0=-d-apex_o; top y1=h; +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_down_doublehead: +bskchar "Downward arrow with doublehead"; +beginchar(chars.arrow_down_doublehead,9u#,asc_height#,0); uni "0x21A1"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,0); +x0=x1r=.5w+o; bot y0=-d-apex_o; top y1=h; +bskpoints(1,0,hair,hair); +p0:=sipka(0,1); +p1:=p0 shifted (0,bot y0a-y0); +tim1=xpart(p1 intersectiontimes (z1l--(x0a.l,-d))); +tim2-1=xpart(subpath(1,infinity) of p1 intersectiontimes (rt z1r--(rt x1r,-d))); +tim3-5=xpart(subpath(5,infinity) of p0 intersectiontimes (lft z1l--(lft x0a.l,-d))); +tim4=xpart(subpath(0,2) of p0 intersectiontimes (rt z1r--(rt x1r,-d))); +filldraw subpath(rundy(p0,tim4),rundy(p0,tim3).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1---z1l..z1rr + ---subpath(0,rundy(p1,tim2).zpet) of p1..cycle; +labels(1rr); +endchar; + +iff known chars.arrow_down_bars: +bskchar "Downward arrow with two horizontal bars"; +beginchar(chars.arrow_down_bars,9u#,asc_height#,0); uni "0x21DF"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +x0=x1r=.5w+o; +bot y0=-d-apex_o; top y1=h; +pos2(rule_thickness,90); pos3(rule_thickness,90); +pos4(rule_thickness,90); pos5(rule_thickness,90); +.5[x2,x3]=.5[x4,x5]=x1; y2=y3; y4=y5; .5[y2,y4]=.5[y0c,y1]; y4-y2=min(3rule_thickness,3u); +lft x2=lft x4=u; +y5'r=y4'r=y4r; y5'l=y4'l=y4l; y2'r=y3'r=y3r; y2'l=y3'l=y3l; +x5'r=x5'l=x3'r=x3'l=x1r; x4'r=x4'l=x2'r=x2'l=x1l; +bskpoints(1,0,hair,hair); +bskpoints(2,3,rule_thickness,rule_thickness); +bskpoints(4,5,rule_thickness,rule_thickness); +filldraw sipka(0,1)---obl(2'l,0a.l,2l)---z2l..z2rr---tobl(2'r,2rr,4'l) + ---tobl(4'l,2'r,4l)---z4l..z4rr---obl(4'r,4rr,1l)---z1l..z1rr + ---obl(5'r,1r,5r)---z5r..z5ll---tobl(5'l,5ll,3'r)---tobl(3'r,5'l,3r) + ---z3r..z3ll---obl(3'l,3ll,0a.r)---cycle; +penlabels(2,3,4,5); labels(1rr); +labels(1rr); +endchar; + +iff known chars.arrow_down_two: +bskchar "Two downward arrow"; +beginchar(chars.arrow_down_two,15.5u#,asc_height#,0); uni "0x21CA"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos3(rule_thickness,0); +x0=x1r; lft x0=u+arrwidth; +x2=x3r; rt x2=w-u-arrwidth; +bot y0=bot y2=-d-apex_o; top y1=top y3=h; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +filldraw sipka(2,3)---z3l..z3rr---cycle; +labels(1rr,2rr); +endchar; + +iff known chars.arrow_up_arrow_down: +bskchar "Upward arrow followed by downward arrow"; +beginchar(chars.arrow_up_arrow_down,14u#,asc_height#,0); uni "0x21C5"; +italcorr x_height#*slant; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos3(rule_thickness,0); +x0=x1l; x0=u+arrwidth; +top y0=h+apex_o; bot y1=-d; +x2=x3r; x2=w-u-arrwidth; +top y3=h; bot y2=-d-o; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); +filldraw sipka(0,1)---z1rr..z1l---cycle; +filldraw sipka(2,3)---z3l..z3rr---cycle; +labels(1rr,3rr); +endchar; + +iff known chars.arrow_down_arrow_up: +bskchar "Downward arrow followed by upward arrow"; +beginchar(chars.arrow_down_arrow_up,14u#,asc_height#,0); uni "0x21F5"; +italcorr x_height#*slant; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos3(rule_thickness,0); +x0=x1l; rt x0=w-u-arrwidth; +top y0=h+apex_o; bot y1=-d; +x2=x3r; lft x2=u+arrwidth; +top y3=h; bot y2=-d-o; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); +filldraw sipka(0,1)---z1rr..z1l---cycle; +filldraw sipka(2,3)---z3l..z3rr---cycle; +labels(1rr,3rr); +endchar; + +iff known chars.arrow_left_squiggly: +bskchar "Leftward squiggly arrow"; +beginchar(chars.arrow_left_squiggly,17u#,v_center(5u#)); uni "0x21DC"; +adjust_fit(0,0); +pickup tiny.nib; +numeric sh; oblu.more:=2f_obl; +pos1(rule_thickness,90); pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x0=u; x1=x0+arrsize+u; rt x6=w-u; y0=y1l=math_axis; +y3r=y5r=h; y4l=-d; y6=y1; x4=.5[x1,x6]; .5[x3,x5]=x4; .5[x4,x6]=x5; +sh:=rule_thickness/abs(cosd(angle(z1r-z3r)))-currentbreadth; +y3l:=y5l:=y3r-sh; y4r:=y4l+sh; +filldraw reverse sipka(0,1)---obl(1l,0a.r,3l)---obl(3l,1l,4l).more---obl(4l,3l,5l) + ---obl(5l,4l,6l).more---z6l..z6r---obl(5r,6r,4r)---obl(4r,5r,3r).more + ---obl(3r,4r,1r)---obl(1r,3r,0a.l)---cycle; +penlabels(3,4,5,6); +endchar; + +iff known chars.arrow_right_squiggly: +bskchar "Rightward squiggly arrow"; +beginchar(chars.arrow_right_squiggly,17u#,v_center(5u#)); uni "0x21DD"; +adjust_fit(0,0); +pickup tiny.nib; +numeric sh; oblu.more:=2f_obl; +pos1(rule_thickness,90); pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +rt x0=w-u; x1=x0-arrsize-u; lft x6=u; y0=y1r=math_axis; +y3r=y5r=h; y4l=-d; y6=y1; x4=.5[x1,x6]; .5[x3,x5]=x4; .5[x4,x6]=x5; +sh:=rule_thickness/abs(cosd(angle(z3r-z1r)))-currentbreadth; +y3l:=y5l:=y3r-sh; y4r:=y4l+sh; +filldraw sipka(0,1)---obl(1l,0a.l,3l)---obl(3l,1l,4l).more---obl(4l,3l,5l) + ---obl(5l,4l,6l).more---z6l..z6r---obl(5r,6r,4r)---obl(4r,5r,3r).more + ---obl(3r,4r,1r)---obl(1r,3r,0a.r)---cycle; +penlabels(3,4,5,6); +endchar; + +iff known chars.arrow_right_left_squiggly: +bskchar "Rightward and leftward squiggly arrow"; +beginchar(chars.arrow_right_left_squiggly,21u#,v_center(5u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric sh; oblu.more:=2f_obl; +pos1(rule_thickness,90); pos2'(rule_thickness,90); pos3(rule_thickness,90); +pos4(rule_thickness,90); pos5(rule_thickness,90); pos6(rule_thickness,90); +rt x0=w-u; x1=x0-arrsize-u; lft x2=u; x6=x2+arrsize+u; y0=y1r=y2=y2'r=y6l=math_axis; +y3r=y5r=h; y4l=-d; x4=.5[x1,x6]; .5[x3,x5]=x4; .5[x4,x6]=x5; x2'=x6; +sh:=rule_thickness/abs(cosd(angle(z3r-z1r)))-currentbreadth; +y3l:=y5l:=y3r-sh; y4r:=y4l+sh; +filldraw sipka(0,1)---obl(1l,0a.l,3l)---obl(3l,1l,4l).more---obl(4l,3l,5l) + ---obl(5l,4l,6l).more---z6l..sipka(2,2')..z6r---obl(5r,6r,4r)---obl(4r,5r,3r).more + ---obl(3r,4r,1r)---obl(1r,3r,0a.r)---cycle; +penlabels(3,4,5,6); +endchar; + +iff known chars.arrow_left_curly: +bskchar "Leftward curly arrow"; +beginchar(chars.arrow_left_curly,15u#,v_center(10u#)); uni "0x21AB"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,180); pos3(rule_thickness,270); +pos4(rule_thickness,0); pos5(rule_thickness,0); +pos1'(rule_thickness,90); pos1''(rule_thickness,90); +lft x0=u; y0=y1l=math_axis; +rt x2l=w-u; .5[x2,x4]=x1; x4=x5; top y3l=h; bot y5=-d; y2=y4=.5[y1,y3]; x3=x1; x2-x4=y3-y1; +bskpoints(5,4,hair,hair); +z1'=(x4l,y1); z1''=(x4r,y1); +filldraw sipka(0,1)---obl(1'r,0a.l,4l)---z4l..z3l..z2l..z1l + ---obl(1''l,1l,5r)---z5rr..z5l---obl(1'l,5l,0a.r)---cycle; +infill z4r..z3r..z2r..z1r---obl(1''r,1r,4r)---cycle; +penlabels(1',1'',2,3,4,5); labels(5rr); +endchar; + +iff known chars.arrow_right_curly: +bskchar "Rightward curly arrow"; +beginchar(chars.arrow_right_curly,15u#,v_center(10u#)); uni "0x21AC"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,0); pos3(rule_thickness,270); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos1'(rule_thickness,270); pos1''(rule_thickness,270); +rt x0=w-u; y0=y1r=math_axis; +lft x2l=u; .5[x2,x4]=x1; x4=x5; top y3l=h; bot y5=-d; y2=y4=.5[y1,y3]; x3=x1; x4-x2=y3-y1; +bskpoints(5,4,hair,hair); +z1'=(x4l,y1); z1''=(x4r,y1); +filldraw sipka(0,1)---obl(1'r,0a.l,5l)---z5l..z5rr---obl(1''r,5r,1l)---z1l..z2l..z3l..z4l---obl(1'l,4l,0a.r)---cycle; +infill z4r..z3r..z2r..z1r---obl(1''l,1r,4r)---cycle; +penlabels(1',1'',2,3,4,5); labels(5rr); +endchar; + +iff known chars.arrow_left_down_curly: +bskchar "Leftward down curly arrow"; +beginchar(chars.arrow_left_down_curly,15u#,v_center(10u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,180); pos3(rule_thickness,90); +pos4(rule_thickness,0); pos5(rule_thickness,0); +pos1'(rule_thickness,90); pos1''(rule_thickness,90); +lft x0=u; y0=y1l=math_axis; +rt x2l=w-u; .5[x2,x4]=x1; x4=x5; bot y3l=-d; top y5=h; y2=y4=.5[y1,y3]; x3=x1; x2-x4=y1-y3; +bskpoints(5,4,hair,hair); +z1'=(x4l,y1); z1''=(x4r,y1); +filldraw sipka(0,1)---obl(1'r,0a.l,5l)---z5l..z5rr---obl(1''r,5r,1r) + ---z1r..z2l..z3l..z4l---obl(1'l,4l,0a.r)--cycle; +infill z4r..z3r..z2r..z1l---obl(1''l,1l,4r)---cycle; +penlabels(1',1'',2,3,4,5); labels(5rr); +endchar; + +iff known chars.arrow_right_down_curly: +bskchar "Rightward down curly arrow"; +beginchar(chars.arrow_right_down_curly,15u#,v_center(10u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,0); pos3(rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos1'(rule_thickness,270); pos1''(rule_thickness,270); +rt x0=w-u; y0=y1r=math_axis; +lft x2l=u; .5[x2,x4]=x1; x4=x5; bot y3l=-d; top y5=h; y2=y4=.5[y1,y3]; x3=x1; x4-x2=y1-y3; +bskpoints(5,4,hair,hair); +z1'=(x4l,y1); z1''=(x4r,y1); +filldraw sipka(0,1)---obl(1'r,0a.l,4l)---z4l..z3l..z2l..z1r---obl(1''l,1r,5r) + ---z5rr..z5l---obl(1'l,5l,0a.r)--cycle; +infill z4r..z3r..z2r..z1l---obl(1''r,1l,4r)---cycle; +penlabels(1',1'',2,3,4,5); labels(5rr); +endchar; + +iff known chars.arrow_arch_left_down: +bskchar "Arch with left downward arrow"; +beginchar(chars.arrow_arch_left_down,17u#,x_height#,0); uni "0x21B6"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric theta; +pos1(rule_thickness,0); pos2(rule_thickness,-90); pos3(rule_thickness,180); +lft x1l=.5u+arrwidth; x0=x1; bot y0=-o; y1=arrsize+1; +top y2l=h+o; rt x3l=w-u; y3=0; x2=.45[x1,x3]; +p=z3{up}..{left}z2; theta=angle(direction xpart(p intersectiontimes (z1--(w,y1))) of p); +filldraw sipka(0,1)if y1l>y0a.l:..z1l fi {dir(180-theta)}..{right}z2l..{down}z3l + ..z3r{up}..{left}z2r..{dir(360-theta)}z1r..cycle; +penlabels(2,3); +endchar; + +iff known chars.arrow_arch_right_down: +bskchar "Arch with right downward arrow"; +beginchar(chars.arrow_arch_right_down,17u#,x_height#,0); uni "0x21B7"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric theta; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); +rt x1r=w-.5u-arrwidth; x0=x1; bot y0=-o; y1=arrsize+1; +top y2r=h+o; lft x3r=u; y3=0; x2=.45[x1,x3]; +p=z3{up}..{right}z2; theta=angle(direction xpart(p intersectiontimes (z1--(w,y1))) of p); +filldraw sipka(0,1)..z1l{dir(180-theta)}..{left}z2l..{down}z3l +..z3r{up}..{right}z2r..{dir(360-theta)}z1r..cycle; +penlabels(2,3); +endchar; + +iff known chars.arrow_open_loop_left_down: +bskchar "Open-loop downward arrow with left tip"; +beginchar(chars.arrow_open_loop_left_down,14u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; +lft x1l=.5u+arrwidth; bot y0=-o; z1=z0+arrsize*dir110; +top y2l=h+o; x3l=w-4u; y3=0; x2=.45[x1,w-u]; +pos1(rule_thickness,10); pos2(rule_thickness,-90); pos3(rule_thickness,140); +p=z1{dir110}..z2{right}..{dir-130}z3; +tim0=xpart(p intersectiontimes ((x2,x_height)--(w,x_height))); +tim1=xpart(p intersectiontimes ((x2,x_height)--(0,x_height))); +pos3'(rule_thickness,angle(direction tim0 of p)-90); z3'=point tim0 of p; +pos1'(rule_thickness,angle(direction tim1 of p)-90); z1'=point tim1 of p; +filldraw sipka(0,1){dir110}..z1'l..{right}z2l..z3'l..{dir-130}z3l + ..z3r{dir50}..z3'r..{left}z2r..z1'r..{dir-70}cycle; +penlabels(1',2,3,3'); +endchar; + +iff known chars.arrow_open_loop_right_up: +bskchar "Open-loop upward arrow with right tip"; +beginchar(chars.arrow_open_loop_right_up,14u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; +rt x1r=w-.5u-arrwidth; bot y0=-o; z1=z0+arrsize*dir70; +top y2r=h+o; x3r=4u; y3=0; x2=.45[x1,u]; +pos1(rule_thickness,170); pos2(rule_thickness,90); pos3(rule_thickness,220); +p=z1{dir70}..z2{left}..{dir-50}z3; +tim0=xpart(p intersectiontimes ((x2,x_height)--(0,x_height))); +tim1=xpart(p intersectiontimes ((x2,x_height)--(w,x_height))); +pos3'(rule_thickness,angle(direction tim0 of p)-90); z3'=point tim0 of p; +pos1'(rule_thickness,angle(direction tim1 of p)-90); z1'=point tim1 of p; +filldraw sipka(0,1){dir70}..z1'l..{left}z2l..z3'l..{dir-50}z3l + ..z3r{dir130}..z3'r..{right}z2r..z1'r..{dir-110}cycle; +penlabels(1',2,3,3'); +endchar; + +iff known chars.arrow_open_loop_up_right: +bskchar "Open-loop rightward arrow with upper tip"; +beginchar(chars.arrow_open_loop_up_right,15u#,v_center(1.3x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; +lft x0=u-o; top y1l=h-arrwidth+.2h; z1=z0+arrsize*dir20; +rt x2l=w-u; y3=-d+.25x_height+.2h; x3=u; y2=.45[y1,-d+.2h]; +pos1(rule_thickness,100); pos2(rule_thickness,180); pos3(rule_thickness,40); +p=z1{dir20}..z2{down}..{dir130}z3; +tim0=xpart(p intersectiontimes ((2/3w,y2)--(2/3w,-2h))); +tim1=xpart(p intersectiontimes ((2/3w,y2)--(2/3w,h))); +pos3'(rule_thickness,angle(direction tim0 of p)-90); z3'=point tim0 of p; +pos1'(rule_thickness,angle(direction tim1 of p)-90); z1'=point tim1 of p; +filldraw sipka(0,1){dir20}..z1'l..{down}z2l..z3'l..{dir130}z3l + ..z3r{dir-50}..z3'r..{up}z2r..z1'r..{dir200}cycle; +penlabels(1',2,3,3'); +endchar; + +iff known chars.arrow_open_loop_down_left: +bskchar "Open-loop leftward arrow with lower tip"; +beginchar(chars.arrow_open_loop_down_left,15u#,v_center(1.3x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; +rt x0=w-u+o; bot y1l=-d+arrwidth-.2h; z1=z0+arrsize*dir200; +lft x2l=u; y3=.8h-.25x_height; x3=w-u; y2=.45[y1,.8h]; +pos1(rule_thickness,-80); pos2(rule_thickness,0); pos3(rule_thickness,220); +p=z1{dir200}..z2{up}..{dir-50}z3; +tim0=xpart(p intersectiontimes ((1/3w,y2)--(1/3w,2h))); +tim1=xpart(p intersectiontimes ((1/3w,y2)--(1/3w,-2h))); +pos3'(rule_thickness,angle(direction tim0 of p)-90); z3'=point tim0 of p; +pos1'(rule_thickness,angle(direction tim1 of p)-90); z1'=point tim1 of p; +filldraw sipka(0,1){dir200}..z1'l..{up}z2l..z3'l..{dir-50}z3l + ..z3r{dir130}..z3'r..{down}z2r..z1'r..{dir20}cycle; +penlabels(1',2,3,3'); +endchar; + +iff known chars.arrow_curve_left_down: +bskchar "Curved arrow with left downward arrow"; +beginchar(chars.arrow_curve_left_down,17u#,v_center(.65x_height#)); uni "0x293A"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric theta; +lft x1=u+.5arrwidth; y1=y3; .5[y1-.5arrsize,y2]=math_axis; top y2=h+o-.5rule_thickness; +x2=.5[w-u,x1]; x3=w-u-.25rule_thickness; +p0=z3..{left}z2..z1; +theta:=angle(direction infinity of p0); +pos1(rule_thickness,theta+90); pos2(rule_thickness,90); pos3(rule_thickness,theta-180); +pos4(rule_thickness,theta+90); +z4=z1+.25arrwidth*dir(theta+180); z5=z1+.75arrwidth*dir(theta); +filldraw z3r{dir(-theta)}..{left}z2r..reverse sipka(5,4)..{right}z2l..{dir(180-theta)}z3l..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.arrow_curve_right_down: +bskchar "Curved arrow with right downward arrow"; +beginchar(chars.arrow_curve_right_down,17u#,v_center(.65x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric theta; +rt x1=w-u-.5arrwidth; y1=y3; .5[y1-.5arrsize,y2]=math_axis; top y2=h+o-.5rule_thickness; +x2=.5[u,x1]; x3=u+.25rule_thickness; +p0=z3..{right}z2..z1; +theta:=angle(direction infinity of p0); +pos1(rule_thickness,theta+90); pos2(rule_thickness,90); pos3(rule_thickness,theta-180); +pos4(rule_thickness,theta+90); +z4=z1+.25arrwidth*dir(theta+180); z5=z1+.75arrwidth*dir(theta); +filldraw z3r{dir(-theta)}..{right}z2r..sipka(5,4)..{left}z2l..{dir(180-theta)}z3l..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.arrow_curve_left_right_down: +bskchar "Curved arrow with left-right downward arrow"; +beginchar(chars.arrow_curve_left_right_down,17u#,v_center(.65x_height#)); uni "non"; +adjust_fit(.5u#,.5u#); +pickup tiny.nib; +path p[]; numeric theta; +rt x1=w-u-.5arrwidth; y1=y3; .5[y1-.45arrsize,y2]=math_axis; top y2=h+o-.5rule_thickness; +x2=.5w; lft x3=u+.5arrwidth; +p0=z3..{right}z2..z1; +theta:=angle(direction infinity of p0); +pos1(rule_thickness,theta+90); pos2(rule_thickness,90); pos3(rule_thickness,theta-180); +z4=z1+arrwidth*dir(theta); +z5=z3+arrwidth*dir(180-theta); +filldraw z2r{right}..sipka(4,1)..{left}z2l..sipka(5,3)..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.arrow_curve_left_up: +bskchar "Curved arrow with left upward arrow"; +beginchar(chars.arrow_curve_left_up,17u#,v_center(.65x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric theta; +lft x1=u+.5arrwidth; y1=y3; .5[y1+.5arrsize,y2]=math_axis; bot y2=-d-o+.5rule_thickness; +x2=.5[w-u,x1]; x3=w-u-.25rule_thickness; +p0=z3..{left}z2..z1; +theta:=angle(direction infinity of p0); +pos1(rule_thickness,theta+90); pos2(rule_thickness,-90); pos3(rule_thickness,theta-180); +pos4(rule_thickness,theta+90); +z4=z1+.25arrwidth*dir(theta+180); z5=z1+.75arrwidth*dir(theta); +filldraw z3r{dir(-theta)}..{left}z2r..sipka(5,4)..{right}z2l..{dir(180-theta)}z3l..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.arrow_curve_right_up: +bskchar "Curved arrow with right upward arrow"; +beginchar(chars.arrow_curve_right_up,17u#,v_center(.65x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric theta; +rt x1=w-u-.5arrwidth; y1=y3; .5[y1+.5arrsize,y2]=math_axis; bot y2=-d-o+.5rule_thickness; +x2=.5[u,x1]; x3=u+.25rule_thickness; +p0=z3..{right}z2..z1; +theta:=angle(direction infinity of p0); +pos1(rule_thickness,theta+90); pos2(rule_thickness,-90); pos3(rule_thickness,theta-180); +pos4(rule_thickness,theta+90); +z4=z1+.25arrwidth*dir(theta+180); z5=z1+.75arrwidth*dir(theta); +filldraw z3r{dir(-theta)}..{right}z2r..reverse sipka(5,4)..{left}z2l..{dir(180-theta)}z3l..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.arrow_curve_left_right_up: +bskchar "Curved arrow with left-right upward arrow"; +beginchar(chars.arrow_curve_left_right_up,17u#,v_center(.65x_height#)); uni "non"; +adjust_fit(.5u#,.5u#); +pickup tiny.nib; +path p[]; numeric theta; +rt x1=w-u-.5arrwidth; y1=y3; .5[y1+.45arrsize,y2]=math_axis; bot y2=-d-o+.5rule_thickness; +x2=.5w; lft x3=u+.5arrwidth; +p0=z3..{right}z2..z1; +theta:=angle(direction infinity of p0); +pos1(rule_thickness,theta+90); pos2(rule_thickness,-90); pos3(rule_thickness,theta-180); +z4=z1+arrwidth*dir(theta); +z5=z3+arrwidth*dir(180-theta); +filldraw z2r{right}..reverse sipka(4,1)..{left}z2l..reverse sipka(5,3)..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.arrow_left_wavy: +bskchar "Wavy leftwards arrow"; +beginchar(chars.arrow_left_wavy,19u#,v_center(.65x_height#)); uni "0x219C"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric theta; +lft x1=u+.5arrwidth; .5[y1+.5arrsize,y2]=math_axis; +bot y2=-d-o+.5rule_thickness; y3-y2=.25(x6-x2); y6=y2; +x2=.5[x3,x1]; x3=.5[x2,x6]; x6=w-u-.25rule_thickness; +theta:=150; +pos1(rule_thickness,theta+90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); +pos4(rule_thickness,theta+90); pos6(rule_thickness,-90); +z4=z1+.25arrwidth*dir(theta+180); z5=z1+.75arrwidth*dir(theta); +filldraw z6r{dir(theta)}..z3r{left}..{left}z2r..sipka(5,4) + ..{right}z2l..{right}z3l..{dir(180+theta)}z6l..cycle; +penlabels(1,2,3,6); +endchar; + +iff known chars.arrow_right_wavy: +bskchar "Wavy rightwards arrow"; +beginchar(chars.arrow_right_wavy,19u#,v_center(.65x_height#)); uni "0x219D"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric theta; +rt x1=w-u-.5arrwidth; .5[y1+.5arrsize,y2]=math_axis; +bot y2=-d-o+.5rule_thickness; y3-y2=.25(x2-x6); y6=y2; +x2=.5[x3,x1]; x3=.5[x2,x6]; x6=u+.25rule_thickness; +theta:=30; +pos1(rule_thickness,theta+90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); +pos4(rule_thickness,theta+90); pos6(rule_thickness,-90); +z4=z1+.25arrwidth*dir(theta+180); z5=z1+.75arrwidth*dir(theta); +filldraw z6r{dir(theta)}..z3r{right}..{right}z2r..reverse sipka(5,4) + ..{left}z2l..{left}z3l..{dir(180+theta)}z6l..cycle; +penlabels(1,2,3,6); +endchar; + +iff known chars.arrow_left_right_wavy: +bskchar "Wavy left-right arrow"; +beginchar(chars.arrow_left_right_wavy,19u#,v_center(.65x_height#)); uni "0x21AD"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric theta; +lft x1=u+.5arrwidth; .5[y1+.5arrsize,y2]=math_axis; +bot y2=-d-o+rule_thickness; .5[y2,y3]=math_axis; +x2=.5[x3,x1]; x3=.5[x2,x6]; x6=w-u-.5arrwidth; .5[y6,y1]=math_axis; +theta:=150; +pos1(rule_thickness,theta+90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); +pos4(rule_thickness,theta+90); pos6(rule_thickness,-90); pos7(rule_thickness,theta+90); +z4=z1+.25arrwidth*dir(theta+180); z5=z1+.75arrwidth*dir(theta); +z7=z6+.25arrwidth*dir(theta); z8=z6+.75arrwidth*dir(theta-180); +p0=sipka(8,7); +p1=sipka(5,4); +p2=z8a{z6-z8}..{left}z3..{left}z2..{z5-z1}z5a; +pos9(rule_thickness,angle(direction 1.5 of p2)+90); z9=point 1.5 of p2; +filldraw p0..{left}z3r..z9r..{left}z2r..p1..{right}z2l..z9l..{right}z3l..cycle; +penlabels(1,2,3,6,9); +endchar; + +iff known chars.math_contradiction: +bskchar "Contradiction symbol"; +beginchar(chars.math_contradiction,10u#,asc_height#,asc_depth#); uni "0x21AF"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric theta; oblu.more:=2oblu; +theta=60; +pos1(rule_thickness,theta-90); pos2(rule_thickness,-80); pos3(rule_thickness,theta-90); +bot y0=-d-o; x0=3u; x3=.5w; top y3l=h; +rt x1r=w-u; z1=z0+whatever*dir theta; +x2l=u; z2=z1+whatever*dir 190; +p0=sipka(0,1); +z1'=whatever[z0a.l,z1l]=z2r+whatever*dir10; +z2'=whatever[z2l,z1l]=z3r+whatever*(z3l-z2r); +z3'=whatever[z2l,z1l]=whatever[z1r,z0a.r]; +bskpoints(2,3,rule_thickness,rule_thickness); +filldraw p0---obl(1',0a.l,2r).more---obl(2r,1',3l)---z3ll..z3r + ---obl(2',3r,3').more---z3'..z1r---cycle; +penlabels(1,2,3); labels(1',2',3'); +endchar; + +iff known chars.harpoon_right_up: +bskchar "Rightward up harpoon"; +beginchar(chars.harpoon_right_up,15u#,v_center(5u#)); uni "0x21C0"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x0=w-u; x1=w-x0; y0=y1r=math_axis; +bskpoints(1,0,hair,hair); +filldraw subpath (0,4) of sipka(0,1)...{left}z0a.l---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.harpoon_right_down: +bskchar "Rightward down harpoon"; +beginchar(chars.harpoon_right_down,15u#,v_center(5u#)); uni "0x21C1"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x0=w-u; x1=w-x0; y0=y1r=math_axis; +bskpoints(1,0,hair,hair); +filldraw subpath (4,infinity) of sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.harpoon_left_up: +bskchar "Leftward up harpoon"; +beginchar(chars.harpoon_left_up,15u#,v_center(5u#)); uni "0x21BC"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x1=w-u; x1=w-x0; y0=y1l=math_axis; +bskpoints(1,0,hair,hair); +filldraw subpath (4,infinity) of sipka(0,1)---z1rr..z1l---cycle; +labels(1rr); +endchar; + +iff known chars.harpoon_left_down: +bskchar "Leftward down harpoon"; +beginchar(chars.harpoon_left_down,15u#,v_center(5u#)); uni "0x21BD"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x1=w-u; x1=w-x0; y0=y1l=math_axis; +bskpoints(1,0,hair,hair); +filldraw subpath (0,4) of sipka(0,1)...{right}z0a.l---z1rr..z1l---cycle; +labels(1rr); +endchar; + +iff known chars.harpoon_right_up_left_down: +bskchar "Rightward up harpoon above leftward down harpoon"; +beginchar(chars.harpoon_right_up_left_down,15u#,v_center(8u#)); uni "0x21CC"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos3(rule_thickness,90); +rt x0=rt x3=w-u; x1=x2=w-x0; y0=y1r; y2=y3l; .5[y0,y2]=math_axis; y1l-y3r=2u; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); +filldraw subpath (0,4) of sipka(0,1)...{left}z0a.l---z1l..z1rr---cycle; +filldraw subpath (0,4) of sipka(2,3)...{right}z2a.l---z3rr..z3l---cycle; +labels(1rr,3rr); +endchar; + +iff known chars.harpoon_left_up_right_down: +bskchar "Leftward up harpoon above rightward down harpoon"; +beginchar(chars.harpoon_left_up_right_down,15u#,v_center(8u#)); uni "0x21CB"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos3(rule_thickness,90); +rt x0=rt x3=w-u; x1=x2=w-x0; y0=y1r; y2=y3l; .5[y0,y2]=math_axis; y1r-y3l=-2u; +bskpoints(1,0,hair,hair); bskpoints(3,2,hair,hair); +filldraw subpath (4,infinity) of sipka(0,1)---z1l..z1rr---cycle; +filldraw subpath (4,infinity) of sipka(2,3)---z3rr..z3l---cycle; +labels(1rr,3rr); +endchar; + +iff known chars.harpoon_up_left: +bskchar "Upward left harpoon"; +beginchar(chars.harpoon_up_left,6u#,asc_height#,0); uni "0x21BF"; +italcorr x_height#*slant; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +x0=x1l; rt x1r=w-u; +top y0=h+apex_o; bot y1=-d; +bskpoints(1,0,hair,hair); +filldraw subpath(0,4) of sipka(0,1)...{down}z0a.l---z1rr..z1l---cycle; +labels(1rr); +endchar; + +iff known chars.harpoon_up_right: +bskchar "Upward right harpoon"; +beginchar(chars.harpoon_up_right,6u#,asc_height#,0); uni "0x21BE"; +italcorr x_height#*slant; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +lft x0=lft x1l=u; +top y0=h+apex_o; bot y1=-d; +bskpoints(1,0,hair,hair); +filldraw subpath(4,infinity) of sipka(0,1)---z1rr..z1l---cycle; +labels(1rr); +endchar; + +iff known chars.harpoon_down_left: +bskchar "Downward left harpoon"; +beginchar(chars.harpoon_down_left,6u#,asc_height#,0); uni "0x21C3"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +x0=x1r; rt x1r=w-u; +top y0=-d-apex_o; bot y1=h; +bskpoints(1,0,hair,hair); +filldraw subpath(4,infinity) of sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.harpoon_down_right: +bskchar "Downward right harpoon"; +beginchar(chars.harpoon_down_right,6u#,asc_height#,0); uni "0x21C2"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +x0=x1r; lft x1l=u; +top y0=-d-apex_o; bot y1=h; +bskpoints(1,0,hair,hair); +filldraw subpath(0,4) of sipka(0,1)...{up}z0a.l---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_left_right: +bskchar "Left-right arrow"; +beginchar(chars.arrow_left_right,18u#,v_center(5u#)); uni "0x2194"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos0(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1=math_axis; +filldraw sipka(0,1)---sipka(1,0)---cycle; +endchar; + +iff known chars.arrow_left_right_long: +bskchar "Long left-right arrow"; +beginchar(chars.arrow_left_right_long,25u#,v_center(5u#)); uni "0x27F7"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos0(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1=math_axis; +filldraw sipka(0,1)---sipka(1,0)---cycle; +endchar; + +iff known chars.arrow_left_right_not: +bskchar "Left-right arrow with negation"; +beginchar(chars.arrow_left_right_not,18u#,v_center(5u#)); uni "0x21AE"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2oblu; +pos1(rule_thickness,90); pos0(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1=math_axis; +.5[x2,x3]=.5[x0,x1]; .5[y2,y3]=y0; x3-x2=.5(y3-y2); top y3=h; +pos2(rule_thickness,angle(z2-z3)+90); pos3(rule_thickness,angle(z2-z3)+90); +y2'l=y2'r=y1l; z2'l=whatever[z2l,z3l]; z2'r=whatever[z2r,z3r]; +y3'l=y3'r=y1r; z3'l=whatever[z2l,z3l]; z3'r=whatever[z2r,z3r]; +bskpoints(2,3,rule_thickness,rule_thickness); +filldraw sipka(0,1)---obl(3'l,0a.l,3l)---z3ll..z3r---obl(3'r,3r,1r).more + ---sipka(1,0)---obl(2'r,1l,2r)---z2rr..z2l---obl(2'l,2l,0a.r).more---cycle; +penlabels(2,3); +endchar; + +iff known chars.arrow_left_right_not_vert: +bskchar "Left-right arrow with vertical negation"; +beginchar(chars.arrow_left_right_not_vert,18u#,v_center(5u#)); uni "0x21F9"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos0(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1=math_axis; +x2=x3=.5[x0,x1]; .5[y2,y3]=y0; top y3=h; +pos2(rule_thickness,0); pos3(rule_thickness,0); +y2'l=y2'r=y1l; z2'l=whatever[z2l,z3l]; z2'r=whatever[z2r,z3r]; +y3'l=y3'r=y1r; z3'l=whatever[z2l,z3l]; z3'r=whatever[z2r,z3r]; +bskpoints(2,3,rule_thickness,rule_thickness); +filldraw sipka(0,1)---obl(3'l,0a.l,3l)---z3ll..z3r---obl(3'r,3r,1r) + ---sipka(1,0)---obl(2'r,1l,2r)---z2rr..z2l---obl(2'l,2l,0a.r)---cycle; +penlabels(2,3); +endchar; + +iff known chars.arrow_left_right_not_vert_double: +bskchar "Left-right arrow with double vertical negation"; +beginchar(chars.arrow_left_right_not_vert_double,18u#,v_center(5u#)); uni "0x21FC"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos0(rule_thickness,90); +lft x0=u; x1=w-x0; y0=y1=math_axis; +x2=x3; .5[x2,x4]=.5[x0,x1]; x4=x5; x4-x2=min(3rule_thickness,3u); +.5[y2,y3]=.5[y4,y5]=y0; top y3=top y5=h; +pos2(rule_thickness,0); pos3(rule_thickness,0); +pos4(rule_thickness,0); pos5(rule_thickness,0); +y2'l=y2'r=y4'l=y4'r=y1l; z2'l=whatever[z2l,z3l]; z2'r=whatever[z2r,z3r]; +y3'l=y3'r=y5'l=y5'r=y1r; z3'l=whatever[z2l,z3l]; z3'r=whatever[z2r,z3r]; +x4'l=x5'l=x4l; x4'r=x5'r=x4r; +bskpoints(2,3,rule_thickness,rule_thickness); +bskpoints(4,5,rule_thickness,rule_thickness); +filldraw sipka(0,1)---obl(3'l,0a.l,3l)---z3ll..z3r---tobl(3'r,3r,1r) + ---tobl(5'l,3'r,5l)---z5ll..z5r---obl(5'r,5r,1r) + ---sipka(1,0)---obl(4'r,1a.l,4r)---z4rr..z4l---tobl(4'l,4l,2'r) + ---tobl(2'r,1l,2r)---z2rr..z2l---obl(2'l,2l,0a.r)---cycle; +penlabels(2,3,4,5); +endchar; + +iff known chars.arrow_left_right_bar: +bskchar "Left-right arrow above bar"; +beginchar(chars.arrow_left_right_bar,18u#,v_center(5u#+min(3rule_thickness#,3u))); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos0(rule_thickness,90); +pos2(rule_thickness,90); pos3(rule_thickness,90); +lft x0=lft x2=u; x1=x3=w-x0; y0=y1=math_axis+2rule_thickness; bot y2l=bot y3l=-d; +filldraw sipka(0,1)---sipka(1,0)---cycle; +filldraw bskrule(2,3,hair,hair); +labels(2,3); +endchar; + +iff known chars.arrow_left_right_bar_top: +bskchar "Left-right arrow below bar"; +beginchar(chars.arrow_left_right_bar_top,18u#,v_center(5u#+min(3rule_thickness#,3u))); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos0(rule_thickness,90); +pos2(rule_thickness,90); pos3(rule_thickness,90); +lft x0=lft x2=u; x1=x3=w-x0; y0=y1=math_axis-2rule_thickness; top y2r=top y3r=h; +filldraw sipka(0,1)---sipka(1,0)---cycle; +filldraw bskrule(2,3,hair,hair); +labels(2,3); +endchar; + +iff known chars.arrow_up_down: +bskchar "Up-down arrow"; +beginchar(chars.arrow_up_down,9u#,asc_height#,0); uni "0x2195"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos0(rule_thickness,0); +x0=x1l=.5w; top y0=h+apex_o; bot y1=-d-apex_o; +filldraw sipka(0,1)---sipka(1,0)---cycle; +endchar; + +iff known chars.arrow_up_down_bar_bot: +bskchar "Up-down arrow with bottom bar"; +beginchar(chars.arrow_up_down_bar_bot,9u#,asc_height#,0); uni "0x21A8"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,0); pos0(rule_thickness,0); +pos2(rule_thickness,90); pos3(rule_thickness,90); +x0=x1l=.5w; top y0=h+apex_o; bot y1=-d-apex_o; +lft x2=u; rt x3=w-u; y2l=y3l=y1; +p0=sipka(1,0); +p1=reverse bskrule(2,3,rule_thickness,rule_thickness); +(tim0,tim1)=p0 intersectiontimes p1; +tim4=round(tim0); +(tim2-tim4,tim3)=subpath(tim4,infinity) of p0 intersectiontimes p1; +oblu:=2oblu; +filldraw sipka(0,1)---subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),length p1) of p1 + ..subpath(0,rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),infinity) of p0---cycle; +penlabels(2,3); +endchar; + +iff known chars.arrow_right_raise: +bskchar "Rightward raising arrow"; +beginchar(chars.arrow_right_raise,15u#,v_center(5u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path arr; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos0'(rule_thickness,0); +lft x1=u; x2=.5[x1,x3]; x3=w-u-arrsize*cosd(30); +bot y1l=bot y2l=0; y3=bar_height; +arr:=z1---z2..{dir30}z3; +pos3(rule_thickness,angle(direction infinity of arr) + 90); +z0'=z0-direction infinity of arr; +z0a=z3; +filldraw z1r{right}..z2r..{dir30}z3r..sipka(0,0')..z3l{dir210}..z2l..{left}z1l..cycle; +penlabels(1,2,3); +labels(1rr); +endchar; + +iff known chars.arrow_up_start: +bskchar "Upward arrow with starting bar"; +beginchar(chars.arrow_up_start,9u#,asc_height#,0); uni "0x21A5"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); +pos2(rule_thickness,90); pos3(rule_thickness,90); +x0=x1l=.5w-o; +bot y2l=bot y3l=0; lft x2=u; x3=w-x2; +top y0=h+apex_o; y1=y3r; +filldraw sipka(0,1)---obl(1r,0a.l,3r)---z3r..z3l---z2l..z2r---obl(1l,2r,0a.r)---cycle; +penlabels(2,3); +endchar; + +iff known chars.arrow_down_start: +bskchar "Downward arrow with starting bar"; +beginchar(chars.arrow_down_start,9u#,asc_height#,0); uni "0x21A7"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +pos2(rule_thickness,-90); pos3(rule_thickness,-90); +x0=x1r=.5w+o; +top y2l=top y3l=h; lft x2=u; x3=w-x2; +bot y0=-d-apex_o; y1=y2r; +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---obl(1l,0a.l,2r)---z2r..z2l---z3l..z3r---obl(1r,3r,0a.r)---cycle; +penlabels(2,3); labels(1rr); +endchar; + +iff known chars.arrow_right_start: +bskchar "Rightward arrow with starting bar"; +beginchar(chars.arrow_right_start,15u#,v_center(5u#)); uni "0x21A6"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +pos2(rule_thickness,0); pos3(rule_thickness,0); +rt x0=w-u; y0=y1r=math_axis; +lft x2l=lft x3l=u; y2=y0e; y3=y0b; x1=x3r; +filldraw sipka(0,1)---obl(1l,0a.l,3r)---z3r..z3l---z2l..z2r---obl(1r,2r,0a.r)---cycle; +penlabels(2,3); labels(1rr); +endchar; + +iff known chars.arrow_right_start_long: +bskchar "Long rightward arrow with starting bar"; +beginchar(chars.arrow_right_start_long,22u#,v_center(5u#)); uni "0x27FC"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +pos2(rule_thickness,0); pos3(rule_thickness,0); +rt x0=w-u; y0=y1r=math_axis; +lft x2l=lft x3l=u; y2=y0e; y3=y0b; x1=x3r; +filldraw sipka(0,1)---obl(1l,0a.l,3r)---z3r..z3l---z2l..z2r---obl(1r,2r,0a.r)---cycle; +penlabels(2,3); labels(1rr); +endchar; + +iff known chars.arrow_right_stop: +bskchar "Rightward arrow with stopping bar"; +beginchar(chars.arrow_right_stop,15u#,v_center(5u#)); uni "0x21E5"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,90); +pos2(rule_thickness,0); pos3(rule_thickness,0); +rt x0=w-u; x1=w-x0; y0=y1r=math_axis; +x2l=x3l=x0; y2=y0e; y3=y0b; +bskpoints(1,0,hair,hair); +p0=sipka(0,1); +p1=reverse bskrule(2,3,rule_thickness,rule_thickness); +(tim0,tim1)=p0 intersectiontimes p1; +tim4=round(tim0); +(tim2-tim4,tim3)=subpath(tim4,infinity) of p0 intersectiontimes p1; +oblu:=2oblu; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),length p1) of p1 + ..subpath(0,rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),infinity) of p0---z1l..z1rr---cycle; +penlabels(2,3); labels(1rr); +endchar; + +iff known chars.arrow_left_start: +bskchar "Leftward arrow with starting bar"; +beginchar(chars.arrow_left_start,15u#,v_center(5u#)); uni "0x21A4"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +pos2(rule_thickness,180); pos3(rule_thickness,180); +lft x0=u; y0=y1l=math_axis; +rt x2l=rt x3l=w-u; y2=y0b; y3=y0e; x1=x3r; +filldraw sipka(0,1)---obl(1r,0a.l,2r)---z2r..z2l---z3l..z3r---obl(1l,3r,0a.r)---cycle; +penlabels(2,3); labels(1rr); +endchar; + +iff known chars.arrow_left_start_long: +bskchar "Long leftward arrow with starting bar"; +beginchar(chars.arrow_left_start_long,22u#,v_center(5u#)); uni "0x27FB"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +pos2(rule_thickness,180); pos3(rule_thickness,180); +lft x0=u; y0=y1l=math_axis; +rt x2l=rt x3l=w-u; y2=y0b; y3=y0e; x1=x3r; +filldraw sipka(0,1)---obl(1r,0a.l,2r)---z2r..z2l---z3l..z3r---obl(1l,3r,0a.r)---cycle; +penlabels(2,3); labels(1rr); +endchar; + +iff known chars.arrow_left_stop: +bskchar "Leftward arrow with stopping bar"; +beginchar(chars.arrow_left_stop,15u#,v_center(5u#)); uni "0x21E4"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,90); +pos2(rule_thickness,0); pos3(rule_thickness,0); +lft x0=u; x1=w-x0; y0=y1l=math_axis; +x2l=x3l=x0; y2=y0b; y3=y0e; +bskpoints(1,0,hair,hair); +p0=sipka(0,1); +p1=reverse bskrule(2,3,rule_thickness,rule_thickness); +(tim0,tim1)=p0 intersectiontimes p1; +tim4=round(tim0); +(tim2-tim4,tim3)=subpath(tim4,infinity) of p0 intersectiontimes p1; +oblu:=2oblu; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),length p1) of p1 + ..subpath(0,rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),infinity) of p0---z1rr..z1l---cycle; +penlabels(2,3); labels(1rr); +endchar; + +iff known chars.math_accent_arrow: +bskchar "Arrow (vector) math accent"; +beginchar(chars.math_accent_arrow,9u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +{{ save arrwidth, arrsize; + arrsize:=3hair; 1.2arrwidth=arrsize; + pos1(.25[hair,stem],90); + y0=y1=h-.5arrwidth; + x0=w-u; lft x1=u; + filldraw sipka(0,1)---z1l..z1r---cycle; +}}; +penlabels(1); +endchar; + +iff known chars.arrow_NE: +bskchar "Northeast arrow"; +beginchar(chars.arrow_NE,20u#,asc_height#,asc_depth#); uni "0x2197"; +adjust_fit(0,0); +pickup tiny.nib; +rt x0=w-u; lft x1l=u+.5(rule_thickness-.5currentbreadth); +top y0=h; bot y1l=-d; +pos1(rule_thickness,angle(z0-z1l)+90); +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_double_NE: +bskchar "Double northeast arrow"; +beginchar(chars.arrow_double_NE,20u#,asc_height#,asc_depth#); uni "0x21D7"; +adjust_fit(0,0); +pickup tiny.nib; +rt x0=w-u; lft x1l=u+.5(rule_thickness-.5currentbreadth); +top y0=h; bot y1l=-d; +pos1(rule_thickness,angle(z0-z1l)+90); +z2-z3=(0,-dbf) rotated angle(z0-z1); bot y2=-d; lft x3=u; +bskpoints(1,0,hair,hair); +filldraw dvojsipka(0,1,3,2)..cycle; +labels(1rr); +endchar; + +iff known chars.arrow_NNE: +bskchar "Northnortheast arrow"; +beginchar(chars.arrow_NNE,11u#,asc_height#,asc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +rt x0=w-2u; lft x1l=u+.5(rule_thickness-.5currentbreadth); +top y0=h; bot y1l=-d; +pos1(rule_thickness,angle(z0-z1l)+90); +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_SE: +bskchar "Southeast arrow"; +beginchar(chars.arrow_SE,20u#,asc_height#,asc_depth#); uni "0x2198"; +adjust_fit(0,0); +pickup tiny.nib; +rt x0=w-u; lft x1r=u+.5(rule_thickness-.5currentbreadth); +bot y0=-d; top y1r=h; +pos1(rule_thickness,angle(z0-z1r)+90); +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_SE_corner: +bskchar "Southeast arrow to corner"; +beginchar(chars.arrow_SE_corner,21u#+hair#,asc_height#,asc_depth#+u#); uni "0x21F2"; +adjust_fit(0,0); +pickup tiny.nib; +rt x0=w-2u; lft x1r=u+.5(rule_thickness-.5currentbreadth); +bot y0=-d+u; top y1r=h; +pos1(rule_thickness,angle(z0-z1r)+90); +pos2(hair,-90); pos3(hair,-90); pos4(hair,180); +lft x4r=rt x0+tiny; top y4=h; bot y2r=bot y3r=-d; x3=x4l; lft x2=u; x3l:=x4r; +bskpoints(1,0,hair,hair); bskpoints(4,3,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +filldraw z2r---obl(3r,2r,4l)---z4l..z4rr---obl(3l,4r,2l)---z2l..cycle; +penlabels(2,3,4); labels(1rr,4rr); +endchar; + +iff known chars.arrow_double_SE: +bskchar "Double southeast arrow"; +beginchar(chars.arrow_double_SE,20u#,asc_height#,asc_depth#); uni "0x21D8"; +adjust_fit(0,0); +pickup tiny.nib; +rt x0=w-u; lft x1r=u+.5(rule_thickness-.5currentbreadth); +bot y0=-d; top y1r=h; +pos1(rule_thickness,angle(z0-z1r)+90); +z2-z3=(0,-dbf) rotated angle(z0-z1); top y3=h; lft x2=u; +bskpoints(1,0,hair,hair); +filldraw dvojsipka(0,1,3,2)..cycle; +labels(1rr); +endchar; + +iff known chars.arrow_SSE: +bskchar "Southsoutheast arrow"; +beginchar(chars.arrow_SSE,11u#,asc_height#,asc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +rt x0=w-2u; lft x1r=u+.5(rule_thickness-.5currentbreadth); +bot y0=-d; top y1r=h; +pos1(rule_thickness,angle(z0-z1r)+90); +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_NW: +bskchar "Northwest arrow"; +beginchar(chars.arrow_NW,20u#,asc_height#,asc_depth#); uni "0x2196"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=u; rt x1l=w-u; +top y0=h; bot y1l=-d+.5(rule_thickness-.5currentbreadth); +pos1(rule_thickness,angle(z0-z1l)+90); +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_NW_corner: +bskchar "Northwest arrow to corner"; +beginchar(chars.arrow_NW_corner,21u#+hair#,asc_height#+u#,asc_depth#); uni "0x21F1"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=2u; rt x1l=w-u; +top y0=h-u; bot y1l=-d+.5(rule_thickness-.5currentbreadth); +pos1(rule_thickness,angle(z0-z1l)+90); +pos2(hair,90); pos3(hair,90); pos4(hair,0); +rt x4r=lft x0-tiny; bot y4=-d; top y2r=top y3r=h; x3=x4l; rt x2=w-u; x3l:=x4r; +bskpoints(1,0,hair,hair); bskpoints(4,3,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +filldraw z2r---obl(3r,2r,4l)---z4l..z4rr---obl(3l,4r,2l)---z2l..cycle; +penlabels(2,3,4); labels(1rr,4rr); +endchar; + +iff known chars.arrow_NW_line_top: +bskchar "Northwest arrow to top line"; +beginchar(chars.arrow_NW_line_top,21u#+hair#,asc_height#+u#,asc_depth#); uni "0x21B8"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=2u; rt x1l=w-u; +top y0=h-u; bot y1l=-d+.5(rule_thickness-.5currentbreadth); +pos1(rule_thickness,angle(z0-z1l)+90); +pos2(hair,90); pos3(hair,90); +top y2r=top y3r=h; lft x3=u; rt x2=w-u; +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +filldraw bskrule(2,3,hair,hair)..cycle; +penlabels(2,3,4); labels(1rr,2rr,3ll); +endchar; + +iff known chars.arrow_double_NW: +bskchar "Double northwest arrow"; +beginchar(chars.arrow_double_NW,20u#,asc_height#,asc_depth#); uni "0x21D6"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=u; rt x1l=w-u; +top y0=h; bot y1l=-d+.5(rule_thickness-.5currentbreadth); +pos1(rule_thickness,angle(z0-z1l)+90); +z2-z3=(0,-dbf) rotated angle(z0-z1); bot y3=-d; rt x2=w-u; +bskpoints(1,0,hair,hair); +filldraw dvojsipka(0,1,3,2)..cycle; +penlabels(2,3); labels(1rr); +endchar; + +iff known chars.arrow_NNW: +bskchar "Northnorthwest arrow"; +beginchar(chars.arrow_NNW,11u#,asc_height#,asc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=2u; rt x1l=w-u; +top y0=h; bot y1l=-d+.5(rule_thickness-.5currentbreadth); +pos1(rule_thickness,angle(z0-z1l)+90); +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_SW: +bskchar "Southwest arrow"; +beginchar(chars.arrow_SW,20u#,asc_height#,asc_depth#); uni "0x2199"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=u; rt x1r=w-u; +bot y0=-d; top y1r=h-.5(rule_thickness-.5currentbreadth); +pos1(rule_thickness,angle(z0-z1r)+90); +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_double_SW: +bskchar "Double southwest arrow"; +beginchar(chars.arrow_double_SW,20u#,asc_height#,asc_depth#); uni "0x21D9"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=u; rt x1r=w-u; +bot y0=-d; top y1r=h-.5(rule_thickness-.5currentbreadth); +pos1(rule_thickness,angle(z0-z1r)+90); +z2-z3=(0,-dbf) rotated angle(z0-z1); top y2=h; rt x3=w-u; +bskpoints(1,0,hair,hair); +filldraw dvojsipka(0,1,3,2)..cycle; +labels(1rr); +endchar; + +iff known chars.arrow_SSW: +bskchar "Southsouthwest arrow"; +beginchar(chars.arrow_SSW,11u#,asc_height#,asc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=2u; rt x1r=w-u; +bot y0=-d; top y1r=h-.5(rule_thickness-.5currentbreadth); +pos1(rule_thickness,angle(z0-z1r)+90); +bskpoints(1,0,hair,hair); +filldraw sipka(0,1)---z1l..z1rr---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_clockwise: +bskchar "Clockwise arrow"; +beginchar(chars.arrow_clockwise,16u#,asc_height#,desc_depth#); uni "0x21BB"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], theta; +x2=w-x6; y2=y0=.5[h,-d]; x0=x8; y8=h-arrwidth; y8-y4=x2-x6; +circle_points(rule_thickness); +p0:=draw_circle; +p1:=draw_circle.l; +p2:=draw_circle.r; +theta=angle(direction 7.5 of p0); +pos10(rule_thickness,theta+90); +z9+arrsize*dir(theta+180)+(rule_thickness-currentbreadth)*dir(theta+90)=point 7.5 of p0; +z9=z10l+2u*dir(theta); +filldraw subpath(1,7) of p1..sipka(9,10).. subpath(7,1) of p2..cycle; +endchar; + +iff known chars.arrow_counterclockwise: +bskchar "Counterclockwise arrow"; +beginchar(chars.arrow_counterclockwise,16u#,asc_height#,desc_depth#); uni "0x21BA"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], theta; +x2=w-x6; y2=y0=.5[h,-d]; x0=x8; y8=h-arrwidth; y8-y4=x2-x6; +circle_points(rule_thickness); +p0:=draw_circle; +p1:=draw_circle.l; +p2:=draw_circle.r; +theta=angle(direction .5 of p0)+180; +pos10(rule_thickness,theta+90); +z9+arrsize*dir(theta+180)+(rule_thickness-currentbreadth)*dir(theta+90)=point .5 of p0; +z9=z10l+2u*dir(theta); +filldraw sipka(9,10)..subpath(1,7) of p1..subpath(7,1) of p2..cycle; +endchar; + +iff known chars.math_accent_tie: +bskchar "Tie math accent"; +beginchar(chars.math_accent_tie,6u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x0=.5w; x2=w+5u+2letter_fit; +tieacc(0,1,2); +endchar; + +iff known chars.math_ell: +bskchar "Ell (lowercase script-like letter l)"; +beginchar(chars.math_ell,8u#,asc_height#,0); uni "0x2113"; +adjust_fit(0,0); +italcorr .75asc_height#*slant; +pickup tiny.nib; +numeric tim[]; +path p[]; +pos1(stem,180); pos2(hair,90); pos3(.45[hair,stem],0); pos4(hair,270); pos0(vair,-60); +pos1'(stem,180); +lft x1'r=1.5u; y1=3hair; top y2r=h+o; x2=.5w-hair; y0l=y1-2hair; x0=w-u; +rt x3r=w-1.5u; y3=.7h; lft x4l=1.5u; +x1=.5[x2,x3]; y1'=y3+hair; +bot y4r=0; z4'=(x4-like_hair,y4); +p0=z4l..{up}z3l..z2l{left}..z1'l..z1l..{dir60}z0l; +p1=z0l{dir60}..{dir-120}z0r..z1r..z1'r..{right}z2r..z3r{down}..{dir-140}z4r..z4'..{right}z4l; +p2=subpath(2,infinity) of p0; +p3=subpath (0,3) of reverse p1; +p4=reverse p0; +p5=reverse subpath(2,6) of p1; +(tim1,tim2)=p0 intersectiontimes p2; +(tim3,tim4)=p3 intersectiontimes subpath (0,3) of p1; +(tim5,tim6-4)=p4 intersectiontimes subpath (4,infinity) of p1; +(tim7,tim8)=p0 intersectiontimes subpath(0,3) of p1; +filldraw subpath(0,rundy(p3,(tim3,curve)).zpet) of p3 + ..reverse subpath (0,rundy(p1,(tim4,curve)).zpet) of p1 + ..subpath (0,rundy(p4,tim5).zpet) of p4 + ..reverse subpath (rundy(p1,tim8),rundy(reverse p1,tim6).zpet) of p1 + ..reverse subpath (0,rundy(p0,tim7).zpet) of p0&cycle; +oblu:=curve; +infill subpath (rundy(p0,tim1),2) of p0& subpath(0,rundy(p2,tim2).zpet) of p2 ..cycle; +penlabels(0,1,1',2,3,4); labels(4'); +math_fit(0,u#); +endchar; + +iff known chars.math_weierstrass_p: +bskchar "Weierstrass p"; +beginchar(chars.math_weierstrass_p,12u#,x_height#,desc_depth#); uni "0x2118"; +italcorr .5x_height#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos0(.45[hair,stem],-40); pos1(hair,-10); pos2(hair,0); pos3(hair,270); pos4(curve,180); +pos5(hair,90); pos5'(vair,300); pos6(stem,0); pos7(hair,90); +rt x4l=w-u; y4=.5h; top y3l=h+o; bot y1r=-d+.25x_height; lft x1l=2u; +x0l=u; bot y0r=-d; +x3=.5[x2,x4]; y2=y4; z2=z1+whatever*dir80; +bot y5l=0; x5=x3; +z5'=(.5[x5,x8],.5[y5,y4]); +x6l=u+stem; z6=z2l+whatever*dir(200); +x7=u; y7r=h-o; +pos8(stem,angle(z7r-z2r)-90); +z8=z2l; +p0:=z5l{right}..z4l..z3l..z2l..{down}z1l..z0l; +p1:=z5'{up}..z8r..{left}z7r; +z10=bsktouch(p0,left,p1,right); +tim0=xpart(p0 intersectiontimes (z10--(x3,y10))); +tim1=xpart(p1 intersectiontimes (z10--(0,y10))); +filldraw z0r..z1r{up}..z2r..z3r..z4r..{left}z5r..{dir60}z5'r..{dir-120}z5'l + ..subpath(0,rundy(p0,tim0).zpet) of p0..subpath(rundy(p1,tim1),infinity) of p1 + --z7l{right}..z6l + ..{down}z1l..{direction infinity of p0}z0l..{(direction infinity of p0) rotated 180}cycle; +penlabels(0,1,2,3,4,5,5',6,7,8); labels(9,10); +math_fit(0,ic#); +endchar; + +iff known chars.math_logor: +bskchar "Logical or sign"; +beginchar(chars.math_logor,12u#,.8asc_height#,0); uni "0x2228"; +italcorr .8asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; bot y0=-d-apex_o; +logor(0,1,2); +endchar; + +iff known chars.math_logor_dot: +bskchar "Logical or sign with dot"; +beginchar(chars.math_logor_dot,12u#,asc_height#,0); uni "0x2A52"; +italcorr .8asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=x3=.5w; bot y0=-d-apex_o; y1l=.8h; y3=h; +logor(0,1,2); +dot(3); +endchar; + +iff known chars.math_logor_dot_inside: +bskchar "Logical or sign with dot inside"; +beginchar(chars.math_logor_dot_inside,12u#,.8asc_height#,0); uni "0x27C7"; +italcorr .8asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=x3=.5w; bot y0=-d-apex_o; y3=h-dot_size; +logor(0,1,2); +dot(3); +endchar; + +iff known chars.math_logor_intersect: +bskchar "Two intersecting logical ors"; +beginchar(chars.math_logor_intersect,16u#,.8asc_height#,0); uni "0x2A56"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; oblu.more:=3f_obl; +x0=.5w-2u; x3=.5w+2u; bot y0=bot y3=-d-apex_o; lft x4l=5u; +logor(0,1,2).nodraw; +p0:=_logor; p2:=z2l--z0l; +logor(3,4,5).nodraw; +p1:=_logor; +(tim0,tim1)=p0 intersectiontimes subpath(0,2) of p1; +(tim2,tim3-2)=p0 intersectiontimes subpath(2,infinity) of p1; +(tim4,tim5-2)=p2 intersectiontimes subpath(2,infinity) of p1; +(tim6,tim7)=p2 intersectiontimes subpath(0,2) of p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,(tim3,oblu.more)).zpet) of p1 + ..subpath(rundy(p0,(tim2,oblu.more)),infinity) of p0 + ..subpath(0,rundy(p2,tim4).zpet) of p2 + ..subpath(rundy(p1,tim5),infinity) of p1---z3l + ..subpath(0,rundy(p1,(tim7,oblu.more)).zpet) of p1 + ..subpath(rundy(p2,(tim6,oblu.more)),infinity) of p2..cycle; +endchar; + +iff known chars.math_logor_intersect_nary: +bskchar "N-ary two intersecting logical ors"; +beginchar(chars.math_logor_intersect_nary,20u#,v_center(10/6dh#)); uni "0x2A08"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; oblu.more:=3f_obl; +{{ save rule_thickness; rule_thickness:=stem; + x0=.5w-2u; x3=.5w+2u; bot y0=bot y3=-d-apex_o; lft x4l=5u; + logor(0,1,2).nodraw; + p0:=_logor; p2:=z2l--z0l; + logor(3,4,5).nodraw; + p1:=_logor; +}}; +(tim0,tim1)=p0 intersectiontimes subpath(0,2) of p1; +(tim2,tim3-2)=p0 intersectiontimes subpath(2,infinity) of p1; +(tim4,tim5-2)=p2 intersectiontimes subpath(2,infinity) of p1; +(tim6,tim7)=p2 intersectiontimes subpath(0,2) of p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,(tim3,oblu.more)).zpet) of p1 + ..subpath(rundy(p0,(tim2,oblu.more)),infinity) of p0 + ..subpath(0,rundy(p2,tim4).zpet) of p2 + ..subpath(rundy(p1,tim5),infinity) of p1---z3l + ..subpath(0,rundy(p1,(tim7,oblu.more)).zpet) of p1 + ..subpath(rundy(p2,(tim6,oblu.more)),infinity) of p2..cycle; +endchar; + +iff known chars.math_logxor: +bskchar "Logical xor sign"; +beginchar(chars.math_logxor,12u#,asc_height#,0); uni "0x22BB"; +italcorr .8asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos3(rule_thickness,90); pos4(rule_thickness,90); +x0=.5w; bot y0=.2asc_height-apex_o; +lft x3=u; x4=w-x3; bot y3l=bot y4l=-d; +logor(0,1,2); +filldraw bskrule(3,4,hair,0); +penlabels(3,4); +endchar; + +iff known chars.math_vee_small_underbar: +bskchar "Small vee sign with underbar"; +beginchar(chars.math_vee_small_underbar,12u#,x_height#,0); uni "0x2A61"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos3(rule_thickness,90); pos4(rule_thickness,90); +x0=.5w; bot y0=.2asc_height-apex_o; x1l=3u; +lft x3=u; x4=w-x3; bot y3l=bot y4l=-d; +logor(0,1,2); +filldraw bskrule(3,4,hair,0); +penlabels(3,4); +endchar; + +iff known chars.math_lognor: +bskchar "Logical nor sign"; +beginchar(chars.math_lognor,12u#,asc_height#,0); uni "0x22BD"; +italcorr .8asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos3(rule_thickness,90); pos4(rule_thickness,90); +x0=.5w; bot y0=-apex_o; y1l=.8asc_height; +lft x3=u; x4=w-x3; top y3r=top y4r=h; +logor(0,1,2); +filldraw bskrule(3,4,hair,0); +penlabels(3,4); +endchar; + +iff known chars.math_logor_doublebar: +bskchar "Logical or sign with double bar above"; +beginchar(chars.math_logor_doublebar,12u#,asc_height#+.3x_height#,0); uni "0x2A62"; +italcorr .8asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; bot y0=-d-apex_o; y1l=.8asc_height; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y5r=top y6r=h; lft x3=lft x5=u; x4=x6=w-x3; +y3=y4; y5-y3=.3x_height; +logor(0,1,2); +filldraw bskrule(3,4,hair,0); +filldraw bskrule(6,5,hair,0); +endchar; + +iff known chars.math_logor_double_underbar: +bskchar "Logical or sign with double underbar"; +beginchar(chars.math_logor_double_underbar,12u#,asc_height#+.3x_height#,0); uni "0x2A63"; +italcorr .8asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; bot y0=.2asc_height+.3x_height-apex_o; y1l=h; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +bot y5l=bot y6l=0; lft x3=lft x5=u; x4=x6=w-x3; +y3=y4; y3-y5=.3x_height; +logor(0,1,2); +filldraw bskrule(3,4,hair,0); +filldraw bskrule(6,5,hair,0); +endchar; + +iff known chars.math_vee_in_vee: +bskchar "Vee in vee sign"; +beginchar(chars.math_vee_in_vee,12u#,.8asc_height#,0); uni "0x2A54"; +italcorr .8asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=x3=.5w; bot y0=-d-apex_o; +y3-y0=max(5u,2rule_thickness); +logor(0,1,2); +z4l=z3l+whatever*(z1r-z0'''); +logor(3,4,5); +endchar; + +iff known chars.math_lattice_sup_uni: +bskchar "Lattice supremum sign (for Unicode)"; +beginchar(chars.math_lattice_sup_uni,14u#,v_center(10/6dh#)); uni "0x22C1"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; bot y0=-d-apex_o; +{{ save rule_thickness; rule_thickness:=stem; logor(0,1,2); }}; +endchar; + +iff known chars.math_lattice_sup_text: +bskchar "\textstyle lattice supremum sign"; +beginchar(chars.math_lattice_sup_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; bot y0=-d-apex_o; +{{ save rule_thickness; rule_thickness:=stem; logor(0,1,2); }}; +endchar; + +iff known chars.math_lattice_sup_disp: +bskchar "\displaystyle lattice supremum sign"; +beginchar(chars.math_lattice_sup_disp,18u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; bot y0=-d-apex_o; +{{ save rule_thickness; rule_thickness:=bourstem; logor(0,1,2); }}; +endchar; + +iff known chars.math_logor_sloping: +bskchar "Sloping logical or sign"; +beginchar(chars.math_logor_sloping,12u#,.8asc_height#,0); uni "0x2A57"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta; +oblu:=2oblu; +pos0(rule_thickness,0); pos1(rule_thickness,0); +lft x0l=lft x1l=u; bot y0=0; y2r+.25rule_thickness=y1=h; rt x2r=w-u; +theta:=angle(z2r-z0l); +pos2(rule_thickness,theta-90); +bskpoints(0,1,hair,hair); +z0'=z0r+(rule_thickness-currentbreadth)*dir(theta+22); +y0''=y0; z0''=z2l+whatever*(z2r-z0'); +x0'''=x1r; z0'''=whatever[z2l,z0'']; +filldraw z1ll---z0l..z0r..z0'---z2r..z2l---obl(0''',2l,1r)---z1r..cycle; +penlabels(0,1,2); labels(0',0'',0'''); +endchar; + +iff known chars.math_logor_mid: +bskchar "Logical or sign with middle stem"; +beginchar(chars.math_logor_mid,12u#,.8asc_height#,0); uni "0x2A5B"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos3(rule_thickness,180);pos4(rule_thickness,180); +x0=x3=x4=.5w; bot y0=-d-apex_o; y3=y0; y4=y1; +logor(0,1,2).nodraw; +p0:=_logor; +p1:=reverse (bskrule(3,4,hair,0)); +(tim0-2,tim1)=subpath(2,infinity) of p0 intersectiontimes p1; +(tim2-2,tim3-2)=subpath(2,infinity) of p0 intersectiontimes subpath(2,infinity) of p1; +oblu:=3f_obl; +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(3,4); labels(4ll); +endchar; + +iff known chars.math_logor_bared: +bskchar "Logical or bared sign"; +beginchar(chars.math_logor_bared,12u#,.8asc_height#,0); uni "0x2A5D"; +italcorr .8asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos3(rule_thickness,-90); pos4(rule_thickness,-90); +x0=.5w; bot y0=-d-apex_o; +lft x3=u; rt x4=w-u; y3=y4=1/3[math_axis,h]; +logor(0,1,2).nodraw; +p0=_logor; +p1=z4r--z3r; +p2=z3l--z4l; +y5l=y4l; y5r=y4r; +z5l=whatever[point 0 of p0,point infinity of p0]; +z5r=whatever[point 0 of p0,point infinity of p0]; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3)=p0 intersectiontimes p2; +(tim4-3,tim5)=subpath(3,4) of p0 intersectiontimes p2; +(tim6-4,tim7)=subpath(4,infinity) of p0 intersectiontimes p2; +(tim8-4,tim9)=subpath(4,infinity) of p0 intersectiontimes p1; +(tim10-3,tim11)=subpath(3,4) of p0 intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1 + ..subpath(0,rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p2,tim5),rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(p0,tim6),infinity) of p0 + ---obl(5l,2l,4l)---z4l..z4r---obl(5r,4r,0r)---cycle; +infill subpath(rundy(p0,tim10),rundy(p0,tim8).zpet) of p0 + ..subpath(rundy(p1,tim9),rundy(p1,tim11).zpet) of p1..cycle; +penlabels(3,4,5); +endchar; + +iff known chars.math_logand: +bskchar "Logical and sign"; +beginchar(chars.math_logand,12u#,.8asc_height#,0); uni "0x2227"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; top y0=h+apex_o; +logand(0,1,2); +endchar; + +iff known chars.math_logand_dot: +bskchar "Logical and sign with dot"; +beginchar(chars.math_logand_dot,12u#,asc_height#,0); uni "0x2A51"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=x3=.5w; top y0=.8h+apex_o; y3=h; +logand(0,1,2); +dot(3); +endchar; + +iff known chars.math_logand_dot_inside: +bskchar "Logical and sign with dot inside"; +beginchar(chars.math_logand_dot_inside,12u#,.8asc_height#,0); uni "0x27D1"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=x3=.5w; top y0=h+apex_o; y3=dot_size; +logand(0,1,2); +dot(3); +endchar; + +iff known chars.math_merge: +bskchar "Merge sign"; +beginchar(chars.math_merge,16u#,.8asc_height#,0); uni "0x2A55"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; oblu.more:=3f_obl; +x0=.5w-2u; x3=.5w+2u; top y0=top y3=h+apex_o; lft x4r=5u; +logand(0,1,2).nodraw; +p0:=_logand; p2:=z2l--z0r; +logand(3,4,5).nodraw; +p1:=_logand; +(tim0,tim1)=p0 intersectiontimes subpath(0,2) of p1; +(tim2,tim3-2)=p0 intersectiontimes subpath(2,infinity) of p1; +(tim4,tim5-2)=p2 intersectiontimes subpath(2,infinity) of p1; +(tim6,tim7)=p2 intersectiontimes subpath(0,2) of p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,(tim3,oblu.more)).zpet) of p1 + ..subpath(rundy(p0,(tim2,oblu.more)),infinity) of p0 + ..subpath(0,rundy(p2,tim4).zpet) of p2 + ..subpath(rundy(p1,tim5),infinity) of p1---z3r + ..subpath(0,rundy(p1,(tim7,oblu.more)).zpet) of p1 + ..subpath(rundy(p2,(tim6,oblu.more)),infinity) of p2..cycle; +endchar; + +iff known chars.math_merge_nary: +bskchar "N-ary merge sign"; +beginchar(chars.math_merge_nary,20u#,v_center(10/6dh#)); uni "0x2A07"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; oblu.more:=3f_obl; +{{ save rule_thickness; rule_thickness:=stem; + x0=.5w-2u; x3=.5w+2u; top y0=top y3=h+apex_o; lft x4r=5u; + logand(0,1,2).nodraw; + p0:=_logand; p2:=z2l--z0r; + logand(3,4,5).nodraw; + p1:=_logand; +}}; +(tim0,tim1)=p0 intersectiontimes subpath(0,2) of p1; +(tim2,tim3-2)=p0 intersectiontimes subpath(2,infinity) of p1; +(tim4,tim5-2)=p2 intersectiontimes subpath(2,infinity) of p1; +(tim6,tim7)=p2 intersectiontimes subpath(0,2) of p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,(tim3,oblu.more)).zpet) of p1 + ..subpath(rundy(p0,(tim2,oblu.more)),infinity) of p0 + ..subpath(0,rundy(p2,tim4).zpet) of p2 + ..subpath(rundy(p1,tim5),infinity) of p1---z3r + ..subpath(0,rundy(p1,(tim7,oblu.more)).zpet) of p1 + ..subpath(rundy(p2,(tim6,oblu.more)),infinity) of p2..cycle; +endchar; + +iff known chars.math_lognand: +bskchar "Logical nand sign"; +beginchar(chars.math_lognand,12u#,asc_height#,0); uni "0x22BC"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; top y0=.8h+apex_o; +pos3(rule_thickness,90); pos4(rule_thickness,90); +top y3r=top y4r=h; lft x3=u; x4=w-x3; +logand(0,1,2); +filldraw bskrule(3,4,hair,0); +endchar; + +iff known chars.math_logand_doublebar: +bskchar "Logical and sign with double bar above"; +beginchar(chars.math_logand_doublebar,12u#,asc_height#+.3x_height#,0); uni "0x2A5E"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; top y0=.8asc_height+apex_o; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y5r=top y6r=h; lft x3=lft x5=u; x4=x6=w-x3; +y3=y4; y5-y3=.3x_height; +logand(0,1,2); +filldraw bskrule(3,4,hair,0); +filldraw bskrule(6,5,hair,0); +endchar; + +iff known chars.math_logand_underbar: +bskchar "Logical and sign with underbar"; +beginchar(chars.math_logand_underbar,12u#,asc_height#,0); uni "0x2A5F"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; top y0=h+apex_o; y1r=.2asc_height; +pos3(rule_thickness,90); pos4(rule_thickness,90); +bot y3l=0; lft x3=u; x4=w-x3; y3=y4; +logand(0,1,2); +filldraw bskrule(3,4,hair,0); +penlabels(3,4); +endchar; + +iff known chars.math_logand_double_underbar: +bskchar "Logical and sign with double underbar"; +beginchar(chars.math_logand_double_underbar,12u#,asc_height#+.3x_height#,0); uni "0x2A60"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; top y0=h+apex_o; y1r=.2asc_height+.3x_height; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +bot y5l=bot y6l=0; lft x3=lft x5=u; x4=x6=w-x3; +y3=y4; y3-y5=.3x_height; +logand(0,1,2); +filldraw bskrule(3,4,hair,0); +filldraw bskrule(6,5,hair,0); +penlabels(3,4,5,6); +endchar; + +iff known chars.math_logand_bared: +bskchar "Logical and bared sign"; +beginchar(chars.math_logand_bared,12u#,.8asc_height#,0); uni "0x2A5C"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos3(rule_thickness,90); pos4(rule_thickness,90); +x0=.5w; top y0=h+apex_o; +lft x3=u; rt x4=w-u; y3=y4=1/3[math_axis,-d]; +logand(0,1,2).nodraw; +p0=_logand; +p1=z4r--z3r; +p2=z3l--z4l; +y5l=y4l; y5r=y4r; +z5l=whatever[point 0 of p0,point infinity of p0]; +z5r=whatever[point 0 of p0,point infinity of p0]; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3)=p0 intersectiontimes p2; +(tim4-3,tim5)=subpath(3,4) of p0 intersectiontimes p2; +(tim6-4,tim7)=subpath(4,infinity) of p0 intersectiontimes p2; +(tim8-4,tim9)=subpath(4,infinity) of p0 intersectiontimes p1; +(tim10-3,tim11)=subpath(3,4) of p0 intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1 + ..subpath(0,rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p2,tim5),rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(p0,tim6),infinity) of p0 + ---obl(5l,2l,4l)---z4l..z4r---obl(5r,4r,0r)---cycle; +infill subpath(rundy(p0,tim10),rundy(p0,tim8).zpet) of p0 + ..subpath(rundy(p1,tim9),rundy(p1,tim11).zpet) of p1..cycle; +penlabels(3,4,5); +endchar; + +iff known chars.math_wedge_in_wedge: +bskchar "Wedge in wedge sign"; +beginchar(chars.math_wedge_in_wedge,12u#,.8asc_height#,0); uni "0x2A53"; +italcorr .8asc_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=x3=.5w; top y0=h+apex_o; +y0-y3=max(5u,2rule_thickness); +logand(0,1,2); +z4r=z3r+whatever*(z1l-z0'''); +logand(3,4,5); +endchar; + +iff known chars.math_lattice_inf_uni: +bskchar "Lattice infinum sign (for Unicode)"; +beginchar(chars.math_lattice_inf_uni,14u#,v_center(10/6dh#)); uni "0x22C0"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; top y0=h+apex_o; +{{ save rule_thickness; rule_thickness:=stem; logand(0,1,2); }}; +endchar; + +iff known chars.math_lattice_inf_text: +bskchar "\textstyle lattice infinum sign"; +beginchar(chars.math_lattice_inf_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; top y0=h+apex_o; +{{ save rule_thickness; rule_thickness:=stem; logand(0,1,2); }}; +endchar; + +iff known chars.math_lattice_inf_disp: +bskchar "\displaystyle lattice infinum sign"; +beginchar(chars.math_lattice_inf_disp,18u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +x0=.5w; top y0=h+apex_o; +{{ save rule_thickness; rule_thickness:=bourstem; logand(0,1,2); }}; +endchar; + +iff known chars.math_logand_sloping: +bskchar "Sloping logical and sign"; +beginchar(chars.math_logand_sloping,12u#,.8asc_height#,0); uni "0x2A58"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta; +oblu:=2oblu; +pos0(rule_thickness,0); pos2(rule_thickness,0); +rt x0r=rt x2r=w-u; top y0=h; y1l-.25rule_thickness=y2=0; lft x1l=u; +theta:=angle(z1l-z0l); +pos1(rule_thickness,theta+90); +bskpoints(2,0,hair,hair); +z0'=z0l+(rule_thickness-currentbreadth)*dir(theta+22); +y0''=y0; z0''=z1r+whatever*(z1l-z0'); +x0'''=x2l; z0'''=whatever[z1r,z0'']; +filldraw z2rr---z0r..z0l..z0'---z1l..z1r---obl(0''',1r,2l)---z2l..cycle; +penlabels(0,1,2); labels(0',0'',0'''); +endchar; + +iff known chars.math_logand_mid: +bskchar "Logical and sign with middle stem"; +beginchar(chars.math_logand_mid,12u#,.8asc_height#,0); uni "0x2A5A"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos3(rule_thickness,180);pos4(rule_thickness,180); +x0=x3=x4=.5w; top y0=h+apex_o; y3=y0; y4=y1; +logand(0,1,2).nodraw; +p0:=_logand; +p1:=reverse (bskrule(3,4,hair,0)); +(tim0-2,tim1)=subpath(2,infinity) of p0 intersectiontimes p1; +(tim2-2,tim3-2)=subpath(2,infinity) of p0 intersectiontimes subpath(2,infinity) of p1; +oblu:=3f_obl; +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(3,4); labels(4ll); +endchar; + +iff known chars.math_logand_logor_overlap: +bskchar "Logical and overlaping logical or sign"; +beginchar(chars.math_logand_logor_overlap,12u#,asc_height#,0); uni "0x2A59"; +italcorr h#*slant; +adjust_fit(0,0); +path p[]; numeric tim[]; +pickup tiny.nib; +oblu:=2oblu; +x0=x3=.5w; top y0=.8asc_height+apex_o; bot y3=.2asc_height-apex_o; +logand(0,1,2).nodraw; logor(3,4,5).nodraw; +p0:=_logand; p1:=_logor; +p2:=point 0 of p1--point infinity of p1; +p3:=point infinity of p0--point 0 of p0; +(tim0,tim1-2)=p0 intersectiontimes subpath(2,infinity) of p1; +(tim2,tim3)=p0 intersectiontimes subpath(0,2) of p1; +(tim4-2,tim5)=subpath(2,infinity) of p0 intersectiontimes subpath(0,2) of p1; +(tim6-3,tim7)=subpath(3,5) of p0 intersectiontimes p1; +(tim8-4,tim9)=subpath(4,6) of p0 intersectiontimes p2; +(tim10,tim11)=p2 intersectiontimes p3; +(tim12-4,tim13)=subpath(4,6) of p1 intersectiontimes p3; +(tim14-3,tim15-3)=subpath(3,4) of p0 intersectiontimes subpath(3,4) of p1; +(tim16-5,tim17-5)=subpath(5,6) of p0 intersectiontimes subpath(5,6) of p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..reverse subpath(rundy(p1,tim3),rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..reverse subpath(0,rundy(p1,tim7).zpet) of p1 + ..subpath(0,rundy(p2,tim9).zpet) of p2 + ..subpath(rundy(p0,tim8),infinity) of p0 + ..subpath(0,rundy(p3,tim11).zpet) of p3 + ..subpath(rundy(p2,tim10),infinity) of p2 + ..reverse subpath(rundy(p1,tim12),infinity) of p1 + ..subpath(rundy(p3,tim13),infinity) of p3..cycle; +oblu:=1.5f_obl; +infill subpath(rundy(p1,tim15),rundy(p1,tim17).zpet) of p1 + ..subpath(rundy(p0,tim16).zpet,rundy(p0,tim14)) of p0..cycle; +endchar; + +iff known chars.math_less: +bskchar "Less than sign"; +beginchar(chars.math_less,12u#,v_center(8u#)); uni "0x003C"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=math_axis; +less(0,1,2); +endchar; + +iff known chars.math_less_not: +bskchar "Negated less than sign"; +beginchar(chars.math_less_not,12u#,v_center(.75(body_height#+desc_depth#))); uni "0x226E"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +lft x0l=u; y0=math_axis; y1r=math_axis+4u-.5rule_thickness; +top rt z3=(w-3u,h); .5[x4,x3]=.5w; y4=-d; +pos3(rule_thickness,angle(z4-z3)+90); pos4(rule_thickness,angle(z4-z3)+90); +bskpoints(3,4,rule_thickness,rule_thickness); +less(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1l,z0l]; +z2'r=whatever[z3r,z4r]=whatever[z1l,z0l]; +z2''l=whatever[z3l,z4l]=whatever[z1r,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1r,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +filldraw z0l..z0l'---obl(2'l,0l',3l)---z3l..z3rr---obl(2'r,3r,1l).more---z1ll + ..z1r---obl(2''r,1r,3'r)---obl(3'r,2''r,2r)---z2r..z2l---obl(3''r,2l,4r) + ---z4r..z4ll---obl(3''l,4l,0l')---cycle; +infill obl(2''l,3'l,0''')---obl(0''',1r,2r)---obl(3'l,0''',2''l)---cycle; +penlabels(2',2'',3,3',3'',4); +endchar; + +iff known chars.math_less_not_vert: +bskchar "Negated less than sign with vertical stroke"; +beginchar(chars.math_less_not_vert,12u#,v_center(.75(body_height#+desc_depth#))); uni "non"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=math_axis; y1r=math_axis+4u-.5rule_thickness; +top y3=h; x4=x3=.55w; y4=-d; +pos3(rule_thickness,0); pos4(rule_thickness,0); +bskpoints(3,4,rule_thickness,rule_thickness); +less(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1l,z0l]; +z2'r=whatever[z3r,z4r]=whatever[z1l,z0l]; +z2''l=whatever[z3l,z4l]=whatever[z1r,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1r,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +filldraw z0l..z0l'---obl(2'l,0l',3l)---z3l..z3rr---obl(2'r,3r,1l)---z1ll + ..z1r---obl(2''r,1r,3'r)---obl(3'r,2''r,2r)---z2r..z2l---obl(3''r,2l,4r) + ---z4r..z4ll---obl(3''l,4l,0l')---cycle; +infill obl(2''l,3'l,0''')---obl(0''',1r,2r)---obl(3'l,0''',2''l)---cycle; +penlabels(2',2'',3,3',3'',4); +endchar; + +iff known chars.math_less_closed: +bskchar "Closed less than sign"; +beginchar(chars.math_less_closed,15u#,v_center(8u#)); uni "0x2AA6"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos3(rule_thickness,180); +lft x0l=u; rt x1r=w-4u; y0=y3=math_axis; rt x3l=w-u; +less(0,1,2).nodraw; +filldraw subpath(0,2) of _less---z1l...{down}z3l...point infinity of _less---cycle; +infill subpath(3,6) of _less...{up}z3r...cycle; +penlabels(3); +endchar; + +iff known chars.math_less_eq: +bskchar "Less than or equal to sign"; +beginchar(chars.math_less_eq,12u#,v_center(11u#)); uni "0x2264"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x3=u; rt x4=w-u; y3l=y4l=-d; +filldraw bskrule(3,4,hair,hair); +less(0,1,2); +penlabels(3,4); +endchar; + +iff known chars.math_less_eq_double_slanted: +bskchar "Less than or double slanted equal to sign"; +beginchar(chars.math_less_eq_double_slanted,12u#,v_center(11u#+.45x_height#)); uni "0x2AF9"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +lft x3=lft x5=u; rt x4=rt x6=w-u; y4=-d+.5rule_thickness; y5-y3=y6-y4=.45x_height; y0-y3=y2-y4; +less(0,1,2); +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +filldraw bskrule(3,4,hair,hair); +filldraw bskrule(5,6,hair,hair); +penlabels(3,4,5,6); +endchar; + +iff known chars.math_less_eq_double: +bskchar "Less than or double equal to sign"; +beginchar(chars.math_less_eq_double,12u#,v_center(11u#+.45x_height#)); uni "0x2266"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x3=lft x5=u; rt x4=rt x6=w-u; y3l=y4l=-d; y5=y6=y3+.45x_height; +filldraw bskrule(3,4,hair,hair); +filldraw bskrule(5,6,hair,hair); +less(0,1,2); +penlabels(3,4,5,6); +endchar; + +iff known chars.math_less_not_eq_double: +bskchar "Less than and not double equal to sign"; +beginchar(chars.math_less_not_eq_double,12u#,v_center(11u#+.45x_height#)); uni "0x2268"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +less(0,1,2); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x3=lft x5=u; rt x4=rt x6=w-u; y5l=y6l=-d; y3=y4=y5+.45x_height; +top rt z7=(x2-2u,y2l-rule_thickness); .5[x8,x7]=.5w; .5[y8,y7]=.5[y3,y5]; +pos7(rule_thickness,angle(z8-z7)+90); pos8(rule_thickness,angle(z8-z7)+90); +bskpoints(3,4,hair,hair); bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +z3'=whatever[z7l,z8l]=whatever[z3r,z4r]; +z4'=whatever[z7r,z8r]=whatever[z3r,z4r]; +z5'=whatever[z7r,z8r]=whatever[z3l,z4l]; +z6'=whatever[z7r,z8r]=whatever[z5r,z6r]; +z7'=whatever[z7r,z8r]=whatever[z5l,z6l]; +z8'=whatever[z7l,z8l]=whatever[z5l,z6l]; +z9'=whatever[z7l,z8l]=whatever[z5r,z6r]; +z10'=whatever[z7l,z8l]=whatever[z3l,z4l]; +oblu:=f_obl; oblu.more:=2f_obl; +if y7rry5l: y8ll:=y8l; x8ll:=x8l; fi +filldraw z3rr---obl(3',3r,7l)---z7l..z7rr---tobl(4',7rr,4r).more---z4r + ..z4ll---obl(5',4l,6')---obl(6',5',6r).more---z6r..z6ll + ---obl(7',6l,8r)---z8r..z8ll---tobl(8',8ll,5l).more---z5l + ..z5rr---obl(9',5r,10')---obl(10',9',3l).more---z3l..cycle; +penlabels(3,4,5,6,7,8); labels(4ll,5ll,7rr,8ll,3',4',5',6',7',8',9',10'); +endchar; + +iff known chars.math_less_eq_double_not: +bskchar "Negated less than or double equal to sign"; +beginchar(chars.math_less_eq_double_not,12u#,v_center(11u#+.45x_height#+4rule_thickness#)); uni "non"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +lft x0l=u; y0=h-4u-2rule_thickness; y1r=h-2.5rule_thickness; +top rt z3=(w-3u,h); .5[x4,x3]=.5w; y4=-d; +lft x5=lft x7=u; rt x6=rt x8=w-u; y7l=y8l=-d+2rule_thickness; y5=y6=y7+.45x_height; +pos3(rule_thickness,angle(z4-z3)+90); pos4(rule_thickness,angle(z4-z3)+90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,90); pos8(rule_thickness,90); +bskpoints(3,4,rule_thickness,rule_thickness); +bskpoints(5,6,hair,hair); bskpoints(7,8,hair,hair); +less(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1l,z0l]; +z2'r=whatever[z3r,z4r]=whatever[z1l,z0l]; +z2''l=whatever[z3l,z4l]=whatever[z1r,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1r,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +z5'l=whatever[z3l,z4l]=whatever[z5r,z6r]; +z5'r=whatever[z3r,z4r]=whatever[z5r,z6r]; +z6'l=whatever[z3l,z4l]=whatever[z5l,z6l]; +z6'r=whatever[z3r,z4r]=whatever[z5l,z6l]; +z7'l=whatever[z3l,z4l]=whatever[z7r,z8r]; +z7'r=whatever[z3r,z4r]=whatever[z7r,z8r]; +z8'l=whatever[z3l,z4l]=whatever[z7l,z8l]; +z8'r=whatever[z3r,z4r]=whatever[z7l,z8l]; +filldraw z0l..z0l'---obl(2'l,0l',3l)---z3l..z3rr---obl(2'r,3r,1l).more---z1ll + ..z1r---obl(2''r,1r,3'r)---obl(3'r,2''r,2r)---z2r..z2l---obl(3''r,2l,4r) + ---obl(5'r,3''r,6r)---z6r..z6ll---obl(6'r,6l,7'r)---obl(7'r,6'r,8r)---z8r + ..z8ll---obl(8'r,8l,4r)---z4r..z4l---obl(8'l,4l,7l)---z7l..z7rr + ---obl(7'l,7r,6'l)---obl(6'l,4l,5l)---z5l..z5rr---obl(5'l,5r,3''l) + ---obl(3''l,4l,0l')---cycle; +infill obl(2''l,3'l,0''')---obl(0''',1r,2r)---obl(3'l,0''',2''l)---cycle; +penlabels(2',2'',3,3',3'',4,5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.math_less_vert_not_eq_double: +bskchar "Less than and vertical not double equal to sign"; +beginchar(chars.math_less_vert_not_eq_double,12u#,v_center(11u#+.45x_height#)); uni "non"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +less(0,1,2); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x3=lft x5=u; rt x4=rt x6=w-u; y5l=y6l=-d; y3=y4=y5+.45x_height; +top y7=y2l-rule_thickness; x8=x7=.5w; .5[y8,y7]=.5[y3,y5]; +pos7(rule_thickness,0); pos8(rule_thickness,0); +bskpoints(3,4,hair,hair); bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +z3'=whatever[z7l,z8l]=whatever[z3r,z4r]; +z4'=whatever[z7r,z8r]=whatever[z3r,z4r]; +z5'=whatever[z7r,z8r]=whatever[z3l,z4l]; +z6'=whatever[z7r,z8r]=whatever[z5r,z6r]; +z7'=whatever[z7r,z8r]=whatever[z5l,z6l]; +z8'=whatever[z7l,z8l]=whatever[z5l,z6l]; +z9'=whatever[z7l,z8l]=whatever[z5r,z6r]; +z10'=whatever[z7l,z8l]=whatever[z3l,z4l]; +oblu:=f_obl; +if y7rry5l: y8ll:=y8l; x8ll:=x8l; fi +filldraw z3rr---obl(3',3r,7l)---z7l..z7rr---tobl(4',7rr,4r)---z4r + ..z4ll---obl(5',4l,6')---obl(6',5',6r)---z6r..z6ll + ---obl(7',6l,8r)---z8r..z8ll---tobl(8',8ll,5l)---z5l + ..z5rr---obl(9',5r,10')---obl(10',9',3l)---z3l..cycle; +penlabels(3,4,5,6,7,8); labels(4ll,5ll,7rr,8ll,3',4',5',6',7',8',9',10'); +endchar; + +iff known chars.math_less_eq_double_not_vert: +bskchar "Negated less than or double equal to sign with vertical stroke"; +beginchar(chars.math_less_eq_double_not_vert,12u#,v_center(11u#+.45x_height#+4rule_thickness#)); uni "non"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +lft x0l=u; y0=h-4u-2rule_thickness; y1r=h-2.5rule_thickness; +top y3=h; x4=x3=.5w; y4=-d; +lft x5=lft x7=u; rt x6=rt x8=w-u; y7l=y8l=-d+2rule_thickness; y5=y6=y7+.45x_height; +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,90); pos8(rule_thickness,90); +bskpoints(3,4,rule_thickness,rule_thickness); +bskpoints(5,6,hair,hair); bskpoints(7,8,hair,hair); +less(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1l,z0l]; +z2'r=whatever[z3r,z4r]=whatever[z1l,z0l]; +z2''l=whatever[z3l,z4l]=whatever[z1r,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1r,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +z5'l=whatever[z3l,z4l]=whatever[z5r,z6r]; +z5'r=whatever[z3r,z4r]=whatever[z5r,z6r]; +z6'l=whatever[z3l,z4l]=whatever[z5l,z6l]; +z6'r=whatever[z3r,z4r]=whatever[z5l,z6l]; +z7'l=whatever[z3l,z4l]=whatever[z7r,z8r]; +z7'r=whatever[z3r,z4r]=whatever[z7r,z8r]; +z8'l=whatever[z3l,z4l]=whatever[z7l,z8l]; +z8'r=whatever[z3r,z4r]=whatever[z7l,z8l]; +filldraw z0l..z0l'---obl(2'l,0l',3l)---z3l..z3rr---obl(2'r,3r,1l)---z1ll + ..z1r---obl(2''r,1r,3'r)---obl(3'r,2''r,2r)---z2r..z2l---obl(3''r,2l,4r) + ---obl(5'r,3''r,6r)---z6r..z6ll---obl(6'r,6l,7'r)---obl(7'r,6'r,8r)---z8r + ..z8ll---obl(8'r,8l,4r)---z4r..z4l---obl(8'l,4l,7l)---z7l..z7rr + ---obl(7'l,7r,6'l)---obl(6'l,4l,5l)---z5l..z5rr---obl(5'l,5r,3''l) + ---obl(3''l,4l,0l')---cycle; +infill obl(2''l,3'l,0''')---obl(0''',1r,2r)---obl(3'l,0''',2''l)---cycle; +penlabels(2',2'',3,3',3'',4,5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.math_eq_double_less: +bskchar "Double equal to or less than sign"; +beginchar(chars.math_eq_double_less,12u#,v_center(11u#+.45x_height#)); uni "0x2A99"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=-d+4u; y1r-y0=4u-.5rule_thickness; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x3=lft x5=u; rt x4=rt x6=w-u; y5r=y6r=h; y5-y3=y6-y4=.45x_height; +filldraw bskrule(3,4,hair,hair); +filldraw bskrule(5,6,hair,hair); +less(0,1,2); +penlabels(3,4,5,6); +endchar; + +iff known chars.math_sl_eq_double_less: +bskchar "Double slanted equal to or less than sign"; +beginchar(chars.math_eq_double_less,12u#,v_center(11u#+.45x_height#)); uni "0x2A9B"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=-d+4u; y1r-y0=4u-.5rule_thickness; +lft x3=lft x5=u; rt x4=rt x6=w-u; y6=h-.5rule_thickness; y5-y3=y6-y4=.45x_height; +less(0,1,2); +y6-y5=y1-y0; +pos3(rule_thickness,angle(z5-z6)+90); pos4(rule_thickness,angle(z5-z6)+90); +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +filldraw bskrule(3,4,hair,hair); +filldraw bskrule(5,6,hair,hair); +penlabels(3,4,5,6); +endchar; + +iff known chars.math_sim_less_eq_double: +bskchar "Similar to or less than or double equal to sign"; +beginchar(chars.math_sim_less_eq_double,12u#,v_center(11u#+.9x_height#-rule_thickness#)); uni "0x2A9F"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=math_axis; y1r-y0=4u-.5rule_thickness; +top y8=h; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x3=lft x5=u; rt x4=rt x6=w-u; y3l=y4l=-d; y5=y6=y3+.45x_height; +filldraw bskrule(3,4,hair,hair); +filldraw bskrule(5,6,hair,hair); +less(0,1,2); +vlnka(7,8); +penlabels(3,4,5,6); +endchar; + +iff known chars.math_less_eq_slanted: +bskchar "Less than or slanted equal to sign"; +beginchar(chars.math_less_eq_slanted,12u#,v_center(11u#)); uni "0x2A7D"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +less(0,1,2); +lft x3=u; rt x4=w-u; y4=-d+.5rule_thickness; y0-y3=y2-y4; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +penlabels(3,4); +endchar; + +iff known chars.math_less_closed_eq_sl: +bskchar "Closed less than or slanted equal to sign"; +beginchar(chars.math_less_closed_eq_sl,15u#,v_center(12u#)); uni "0x2AA8"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos3(rule_thickness,180); +lft x0l=u; rt x1r=w-4u; y0=y3=h-4u; rt x3l=w-u; +less(0,1,2).nodraw; +filldraw subpath(0,2) of _less---z1l...{down}z3l...point infinity of _less---cycle; +infill subpath(3,6) of _less...{up}z3r...cycle; +lft x4=u; x5=x3; y5=-d+.5rule_thickness; z4=z5+whatever*(z0l-z2l); +pos4(rule_thickness,angle(z4-z5)+90); pos5(rule_thickness,angle(z4-z5)+90); +filldraw bskrule(4,5,hair,hair); +penlabels(3,4,5); +endchar; + +iff known chars.math_less_eq_slanted_dot: +bskchar "Less than or slanted equal to sign with dot inside"; +beginchar(chars.math_less_eq_slanted_dot,12u#,v_center(11u#)); uni "0x2A7F"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=y5=h-4u; rt x5=w-u-.5dot_size; +less(0,1,2); +lft x3=u; rt x4=w-u; y4=-d+.5rule_thickness; y0-y3=y2-y4; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +dot(5); +penlabels(3,4); +endchar; + +iff known chars.math_less_eq_slanted_dot_left: +bskchar "Less than or slanted equal to sign with dot above left"; +beginchar(chars.math_less_eq_slanted_dot_left,12u#,v_center(11u#)); uni "0x2A81"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=h-4u; lft x5=u+.5dot_size; top y5=h-.5dot_size; +less(0,1,2); +lft x3=u; rt x4=w-u; y4=-d+.5rule_thickness; y0-y3=y2-y4; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +dot(5); +penlabels(3,4); +endchar; + +iff known chars.math_less_eq_slanted_dot_right: +bskchar "Less than or slanted equal to sign with dot above right"; +beginchar(chars.math_less_eq_slanted_dot_right,12u#,5.5u#+1.5dot_size#+math_axis#,5.5u#-math_axis#); uni "0x2A83"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=h-4u-1.5dot_size; y1r=h-1.5dot_size-.5rule_thickness; +rt x5=w-u-dot_size; y5=h-.5dot_size; +less(0,1,2); +lft x3=u; rt x4=w-u; y4=-d+.5rule_thickness; y0-y3=y2-y4; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +dot(5); +penlabels(3,4); +endchar; + +iff known chars.math_eq_less: +bskchar "Equal to or less than sign"; +beginchar(chars.math_eq_less,12u#,v_center(11u#)); uni "0x22DC"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=-d+4u; y1r=y0+4u-.5rule_thickness; +less(0,1,2); +lft x3=u; rt x4=w-u; y3=y4=h-.5rule_thickness; +pos3(rule_thickness,90); pos4(rule_thickness,90); +filldraw bskrule(3,4,hair,hair); +penlabels(3,4); +endchar; + +iff known chars.math_eq_slanted_less: +bskchar "Slanted equal to or less than sign"; +beginchar(chars.math_eq_slanted_less,12u#,v_center(11u#)); uni "0x2A95"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=-d+4u; y1r=y0+4u-.5rule_thickness; +less(0,1,2); +lft x3=u; rt x4=w-u; y4=h-.5rule_thickness; y0-y3=y1-y4; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +penlabels(3,4); +endchar; + +iff known chars.math_eq_slanted_less_dot: +bskchar "Slanted equal to or less than sign with dot inside"; +beginchar(chars.math_eq_slanted_less_dot,12u#,v_center(11u#)); uni "0x2A97"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=y5=-d+4u; y1r=y0+4u-.5rule_thickness; rt x5=w-u-.5dot_size; +less(0,1,2); +lft x3=u; rt x4=w-u; y4=h-.5rule_thickness; y0-y3=y1-y4; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +dot(5); +penlabels(3,4); +endchar; + +iff known chars.math_much_less: +bskchar "Much less than sign"; +beginchar(chars.math_much_less,17u#,v_center(9u#)); uni "0x226A"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; rt x1r=w-6u; y0=y3=math_axis; +lft x3l=6u; rt x4r=w-u; +less(0,1,2); +less(3,4,5); +endchar; + +iff known chars.math_much_less_underbar: +bskchar "Much less than sign with underbar"; +beginchar(chars.math_much_less_underbar,17u#,4.5u#+math_axis#,4.5u#+2.5rule_thickness#-math_axis#); uni "0x2AA3"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x0l=u; rt x1r=w-6u; y0=y3=math_axis; +lft x3l=6u; rt x4r=w-u; +lft x6=u; rt x7=w-u; bot y6l=bot y7l=-d; +filldraw bskrule(6,7,hair,hair); +less(0,1,2); +less(3,4,5); +endchar; + +iff known chars.math_less_in_less: +bskchar "Less than in less than sign"; +beginchar(chars.math_less_in_less,12u#,v_center(9u#)); uni "0x2AA1"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; rt x1r=w-u; y0=y3=math_axis; +x3l-x0l=max(5u,2rule_thickness); rt x4r=w-u; +less(0,1,2); +z4r=z3r+whatever*(z1r-z0r); +less(3,4,5); +endchar; + +iff known chars.math_less_in_less_underbar: +bskchar "Less than in less than sign with underbar"; +beginchar(chars.math_less_in_less_underbar,12u#,4.5u#+math_axis#,4.5u#+2.5rule_thickness#-math_axis#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x0l=u; rt x1r=w-u; y0=y3=math_axis; +x3l-x0l=max(5u,2rule_thickness); rt x4r=w-u; +lft x6=u; rt x7=w-u; bot y6l=bot y7l=-d; +filldraw bskrule(6,7,hair,hair); +less(0,1,2); +z4r=z3r+whatever*(z1r-z0r); +less(3,4,5); +penlabels(6,7); +endchar; + +iff known chars.math_less_in_less_in_less: +bskchar "Less than in less than in less than sign"; +beginchar(chars.math_less_in_less_in_less,15.5u#,v_center(13u#)); uni "0x2AF7"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=5u; rt x1r=w-u; y0=y3=y6=math_axis; y1r=h-2u-.5rule_thickness; +rt x4r=rt x7r=w-u; lft x6l=u; x0l=.5[x6l,x3l]; +less(0,1,2); +z4r=z3r+whatever*(z1r-z0r); +z7r=z6r+whatever*(z1r-z0r); +less(3,4,5); +less(6,7,8); +endchar; + +iff known chars.math_much_much_less: +bskchar "Much much less than sign"; +beginchar(chars.math_much_much_less,22u#,v_center(9u#)); uni "0x22D8"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; rt x1r=w-11u; y0=y3=y6=math_axis; +lft x3l=11u; rt x4r=w-u; +x6=.5[x0,x3]; +less(0,1,2); +less(3,4,5); +less(6,7,8); +endchar; + +iff known chars.math_less_dot: +bskchar "Less than sign with dot"; +beginchar(chars.math_less_dot,12u#,v_center(8u#)); uni "0x22D6"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=y3=math_axis; +x3=w-2u-.5dot_size; +less(0,1,2); +dot(3); +endchar; + +iff known chars.math_less_circle: +bskchar "Less than sign with circle inside"; +beginchar(chars.math_less_circle,12u#,v_center(8u#)); uni "0x2A79"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +rt x2=w-u; y2=math_axis; +y2=y0; x0=x8; x2-x6=y8-y4=2.5u; +lft x9l=u; y9=math_axis; +oblu:=2oblu; less(9,10,11); oblu:=f_obl; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +endchar; + +iff known chars.math_less_neq: +bskchar "Less than or not equal to sign"; +beginchar(chars.math_less_neq,12u#,v_center(11u#)); uni "0x2A87"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x3=u; rt x4=w-u; y3l=y4l=-d; +bskpoints(3,4,hair,hair); +.5[x5,x6]=.5[x3,x4]; .5[y5,y6]=y3; x6-x5=.75(y6-y5)=3u; +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +y6'r=y6'l=y4r; z6'r=whatever[z6r,z5r]; z6'l=whatever[z6l,z5l]; +y5'r=y5'l=y4l; z5'r=whatever[z6r,z5r]; z5'l=whatever[z6l,z5l]; +filldraw z3rr..z3l---obl(5'l,3l,5l)---z5l..z5rr---obl(5'r,5r,4l)---z4ll..z4r--- + obl(6'r,4r,6r)---z6r..z6ll---obl(6'l,6l,3r)---cycle; +less(0,1,2); +penlabels(3,4,5,5',6,6'); labels(5rr,6ll); +endchar; + +iff known chars.math_less_eq_not: +bskchar "Negated less than or equal to sign"; +beginchar(chars.math_less_eq_not,12u#,v_center(.75(body_height#+desc_depth#))); uni "0x2270"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +lft x0l=u; y0=math_axis+1.5u; y1r=math_axis+5.5u-.5rule_thickness; +top rt z3=(w-3u,h); .5[x4,x3]=.5w; y4=-d; +lft x5=u; rt x6=w-u; y5l=y6l=math_axis-5.5u; +pos3(rule_thickness,angle(z4-z3)+90); pos4(rule_thickness,angle(z4-z3)+90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +bskpoints(3,4,rule_thickness,rule_thickness); +bskpoints(5,6,hair,hair); +less(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1l,z0l]; +z2'r=whatever[z3r,z4r]=whatever[z1l,z0l]; +z2''l=whatever[z3l,z4l]=whatever[z1r,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1r,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +z5'l=whatever[z3l,z4l]=whatever[z5r,z6r]; +z5'r=whatever[z3r,z4r]=whatever[z5r,z6r]; +z6'l=whatever[z3l,z4l]=whatever[z5l,z6l]; +z6'r=whatever[z3r,z4r]=whatever[z5l,z6l]; +filldraw z0l..z0l'---obl(2'l,0l',3l)---z3l..z3rr---tobl(2'r,3rr,1l).more---z1ll + ..z1r---obl(2''r,1r,3'r)---obl(3'r,2''r,2r)---z2r..z2l---obl(3''r,2l,4r) + ---obl(5'r,3''r,6r)---z6r..z6ll---obl(6'r,6l,4r)---z4r..z4l + ---obl(6'l,4l,5l)---z5l..z5rr---obl(5'l,5r,3''l)---obl(3''l,4l,0l')---cycle; +infill obl(2''l,3'l,0''')---obl(0''',1r,2r)---obl(3'l,0''',2''l)---cycle; +penlabels(2',2'',3,3',3'',4,5,5',6,6'); labels(3rr,4ll); +endchar; + +iff known chars.math_less_eq_slanted_not: +bskchar "Negated less than or slanted equal to sign"; +beginchar(chars.math_less_eq_slanted_not,12u#,v_center(.75(body_height#+desc_depth#))); uni "non"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +lft x0l=u; y0=math_axis+1.5u; y1r=math_axis+5.5u-.5rule_thickness; +top rt z3=(w-3u,h); .5[x4,x3]=.5w; y4=-d; +lft x5=u; rt x6=w-u; y6l=math_axis-5.5u; y2-y6=y0-y5; +pos3(rule_thickness,angle(z4-z3)+90); pos4(rule_thickness,angle(z4-z3)+90); +bskpoints(3,4,rule_thickness,rule_thickness); +less(0,1,2).nodraw; +pos5(rule_thickness,angle(z5-z6)-90); pos6(rule_thickness,angle(z5-z6)-90); +bskpoints(5,6,hair,hair); +z2'l=whatever[z3l,z4l]=whatever[z1l,z0l]; +z2'r=whatever[z3r,z4r]=whatever[z1l,z0l]; +z2''l=whatever[z3l,z4l]=whatever[z1r,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1r,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +z5'l=whatever[z3l,z4l]=whatever[z5r,z6r]; +z5'r=whatever[z3r,z4r]=whatever[z5r,z6r]; +z6'l=whatever[z3l,z4l]=whatever[z5l,z6l]; +z6'r=whatever[z3r,z4r]=whatever[z5l,z6l]; +filldraw z0l..z0l'---obl(2'l,0l',3l)---z3l..z3rr---tobl(2'r,3rr,1l).more---z1ll + ..z1r---obl(2''r,1r,3'r)---obl(3'r,2''r,2r)---z2r..z2l---obl(3''r,2l,4r) + ---obl(5'r,3''r,6r)---z6r..z6ll---obl(6'r,6l,4r)---z4r..z4l + ---obl(6'l,4l,5l)---z5l..z5rr---obl(5'l,5r,3''l)---obl(3''l,4l,0l')---cycle; +infill obl(2''l,3'l,0''')---obl(0''',1r,2r)---obl(3'l,0''',2''l)---cycle; +penlabels(2',2'',3,3',3'',4,5,5',6,6'); +endchar; + +iff known chars.math_less_neq_vert: +bskchar "Less than or not equal to sign with vertical stroke"; +beginchar(chars.math_less_neq_vert,12u#,v_center(11u#)); uni "non"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +lft x0l=u; y0=h-4u; +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x3=u; rt x4=w-u; y3l=y4l=-d; +bskpoints(3,4,hair,hair); +x5=x6=.5w; .5[y5,y6]=y3; .75(y6-y5)=3u; +pos5(rule_thickness,0); pos6(rule_thickness,0); +bskpoints(5,6,rule_thickness,rule_thickness); +y6'r=y6'l=y4r; z6'r=whatever[z6r,z5r]; z6'l=whatever[z6l,z5l]; +y5'r=y5'l=y4l; z5'r=whatever[z6r,z5r]; z5'l=whatever[z6l,z5l]; +filldraw z3rr..z3l---obl(5'l,3l,5l)---z5l..z5rr---obl(5'r,5r,4l)---z4ll..z4r--- + obl(6'r,4r,6r)---z6r..z6ll---obl(6'l,6l,3r)---cycle; +oblu:=2oblu; +less(0,1,2); +penlabels(3,4,5,5',6,6'); labels(5rr,6ll); +endchar; + +iff known chars.math_less_eq_not_vert: +bskchar "Negated less than or equal to sign with vertical stroke"; +beginchar(chars.math_less_eq_not_vert,12u#,v_center(.75(body_height#+desc_depth#))); uni "non"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +lft x0l=u; y0=math_axis+1.5u; y1r=math_axis+5.5u-.5rule_thickness; +top y3=h; x4=x3=.55w; y4=-d; +lft x5=u; rt x6=w-u; y5l=y6l=math_axis-5.5u; +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,90); pos6(rule_thickness,90); +bskpoints(3,4,rule_thickness,rule_thickness); +bskpoints(5,6,hair,hair); +less(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1l,z0l]; +z2'r=whatever[z3r,z4r]=whatever[z1l,z0l]; +z2''l=whatever[z3l,z4l]=whatever[z1r,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1r,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +z5'l=whatever[z3l,z4l]=whatever[z5r,z6r]; +z5'r=whatever[z3r,z4r]=whatever[z5r,z6r]; +z6'l=whatever[z3l,z4l]=whatever[z5l,z6l]; +z6'r=whatever[z3r,z4r]=whatever[z5l,z6l]; +filldraw z0l..z0l'---obl(2'l,0l',3l)---z3l..z3rr---obl(2'r,3r,1l).more---z1ll + ..z1r---obl(2''r,1r,3'r)---obl(3'r,2''r,2r)---z2r..z2l---obl(3''r,2l,4r) + ---obl(5'r,3''r,6r)---z6r..z6ll---obl(6'r,6l,4r)---z4r..z4l + ---obl(6'l,4l,5l)---z5l..z5rr---obl(5'l,5r,3''l)---obl(3''l,4l,0l')---cycle; +infill obl(2''l,3'l,0''')---obl(0''',1r,2r)---obl(3'l,0''',2''l)---cycle; +penlabels(2',2'',3,3',3'',4,5,5',6,6'); +endchar; + +iff known chars.math_less_sim: +bskchar "Less than or similar to sign"; +beginchar(chars.math_less_sim,12u#,v_center(8u#+.5x_height#+2rule_thickness#)); uni "0x2272"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +bot y3=-d; spread:=.5x_height; +less(0,1,2); +vlnka(3,4); +endchar; + +iff known chars.math_sim_less: +bskchar "Similar to or less than sign"; +beginchar(chars.math_sim_less,12u#,v_center(8u#+.5x_height#+2rule_thickness#)); uni "0x2A9D"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=-d+4u; y1r-y0=4u-.5rule_thickness; +top y4=h; spread:=.5x_height; +less(0,1,2); +vlnka(3,4); +endchar; + +iff known chars.math_less_sim_neg: +bskchar "Negated less than or similar to sign"; +beginchar(chars.math_less_sim_neg,12u#,v_center(8u#+.5x_height#+2rule_thickness#)); uni "0x2274"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], spread; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +bot y3=-d; spread:=.5x_height; +top y5=h+rule_thickness; bot y6=-d-rule_thickness; .5[x5,x6]=.5w; x5-x6=4u; +pos5(rule_thickness,angle(z6-z5)+90); pos6(rule_thickness,angle(z6-z5)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +less(0,1,2).nodraw; +vlnka(3,4).nodraw; +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +p2:=z5l---z6ll..{z5-z6}z6r; +p3:=z6r---z5rr..{z6-z5}z5l; +(tim0,tim1)=p0 intersectiontimes p2; +(tim2,tim3)=p0 intersectiontimes p3; +(tim4,tim5)=p1 intersectiontimes p3; +(tim6,tim7)=p1 intersectiontimes p2; +tim8=xpart(p3 intersectiontimes ((0,y2l)--(w,y2l))); +tim9=xpart(p2 intersectiontimes ((0,y2l)--(w,y2l))); +z7=whatever[z5r,z6r]=whatever[z2l,z0l]; z8=whatever[z5l,z6l]=whatever[z2l,z0l]; +z9=whatever[z5r,z6r]=whatever[z2r,z0''']; z10=whatever[z5l,z6l]=whatever[z2r,z0''']; +z11=whatever[z5r,z6r]=whatever[z1r,z0''']; z12=whatever[z5l,z6l]=whatever[z1r,z0''']; +z13=whatever[z5r,z6r]=whatever[z1l,z0l']; z14=whatever[z5l,z6l]=whatever[z1l,z0l']; +filldraw subpath(0,rundy(p0,(tim0,2oblu)).zpet) of p0 + ..subpath(rundy(p2,(tim1,2oblu)),infinity) of p2 + ..subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p0,tim2),infinity) of p0 + ..subpath(0,rundy(p1,(tim4,2oblu)).zpet) of p1 + ..subpath(rundy(p3,(tim5,2oblu)),tim8) of p3 + ---obl(7,6r,2l)---z2l..z2r---obl(9,2r,11)---obl(11,9,1r)---z1r..z1ll + ---obl(13,1ll,5rr)..z5l---obl(14,5l,0l')---z0l'..z0l---obl(8,0l,6l) + ..subpath(tim9,rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(p1,tim6),infinity) of p1..cycle; +infill obl(0''',12,10)---obl(10,0''',12)---obl(12,10,0''')---cycle; +penlabels(5,6); labels(7,8,9,10,11,12,13,14); +endchar; + +iff known chars.math_less_sim_neg_vert: +bskchar "Negated less than or similar to sign with vertical stroke"; +beginchar(chars.math_less_sim_neg_vert,12u#,v_center(8u#+.5x_height#+2rule_thickness#)); uni "non"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], spread; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +bot y3=-d; spread:=.5x_height; +top y5=h+rule_thickness; bot y6=-d-rule_thickness; x5=x6=.5w; +pos5(rule_thickness,0); pos6(rule_thickness,0); +bskpoints(5,6,rule_thickness,rule_thickness); +less(0,1,2).nodraw; +vlnka(3,4).nodraw; +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +p2:=z5l---z6ll..{z5-z6}z6r; +p3:=z6r---z5rr..{z6-z5}z5l; +(tim0,tim1)=p0 intersectiontimes p2; +(tim2,tim3)=p0 intersectiontimes p3; +(tim4,tim5)=p1 intersectiontimes p3; +(tim6,tim7)=p1 intersectiontimes p2; +tim8=xpart(p3 intersectiontimes ((0,y2l)--(w,y2l))); +tim9=xpart(p2 intersectiontimes ((0,y2l)--(w,y2l))); +z7=whatever[z5r,z6r]=whatever[z2l,z0l]; z8=whatever[z5l,z6l]=whatever[z2l,z0l]; +z9=whatever[z5r,z6r]=whatever[z2r,z0''']; z10=whatever[z5l,z6l]=whatever[z2r,z0''']; +z11=whatever[z5r,z6r]=whatever[z1r,z0''']; z12=whatever[z5l,z6l]=whatever[z1r,z0''']; +z13=whatever[z5r,z6r]=whatever[z1l,z0l']; z14=whatever[z5l,z6l]=whatever[z1l,z0l']; +filldraw subpath(0,rundy(p0,(tim0,2oblu)).zpet) of p0 + ..subpath(rundy(p2,(tim1,2oblu)),infinity) of p2 + ..subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p0,tim2),infinity) of p0 + ..subpath(0,rundy(p1,(tim4,2oblu)).zpet) of p1 + ..subpath(rundy(p3,(tim5,2oblu)),tim8) of p3 + ---obl(7,6r,2l)---z2l..z2r---obl(9,2r,11)---obl(11,9,1r)---z1r..z1ll + ---obl(13,1ll,5rr)..z5l---obl(14,5l,0l')---z0l'..z0l---obl(8,0l,6l) + ..subpath(tim9,rundy(p2,(tim7,3f_obl)).zpet) of p2 + ..subpath(rundy(p1,(tim6,3f_obl)),infinity) of p1..cycle; +infill obl(0''',12,10)---obl(10,0''',12)---obl(12,10,0''')---cycle; +penlabels(5,6); labels(7,8,9,10,11,12,13,14); +endchar; + +iff known chars.math_less_not_sim: +bskchar "Less than and not similar to sign"; +beginchar(chars.math_less_not_sim,12u#,v_center(8u#+.5x_height#+2rule_thickness#)); uni "0x22E6"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +bot y3=-d; spread:=.5x_height; +less(0,1,2); +vlnka(3,4).nodraw; +top y5-bot y6=.7x_height; .5[y5,y6]=.5[y3,y4]; .5[x5,x6]=.5w; x5=x4a; +pos5(rule_thickness,angle(z6-z5)+90); pos6(rule_thickness,angle(z6-z5)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +p2:=z5l---z6ll..{z5-z6}z6r; +p3:=z6r---z5rr..{z6-z5}z5l; +(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,2oblu)).zpet) of p0 + ..subpath(rundy(p2,(tim1,2oblu)),infinity) of p2 + ..subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p0,tim2),infinity) of p0 + ..subpath(0,rundy(p1,(tim4,2oblu)).zpet) of p1 + ..subpath(rundy(p3,(tim5,2oblu)),infinity) of p3 + ..subpath(0,rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(p1,tim6),infinity) of p1..cycle; +penlabels(2,3,5,6); labels(2rr,3ll); +endchar; + +iff known chars.math_less_approx: +bskchar "Less than or approximately equal to sign"; +beginchar(chars.math_less_approx,12u#,v_center(8u#+.8x_height#+2rule_thickness#)); uni "0x2A85"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +oblu:=2oblu; +lft x0l=u; y0=h-4u; +spread:=.4x_height; +bot y3=-d; y5-y3=spread; +less(0,1,2); +vlnka(3,4); +vlnka(5,6); +endchar; + +iff known chars.math_less_not_approx: +bskchar "Less than and not approximately equal to sign"; +beginchar(chars.math_less_not_approx,12u#,v_center(8u#+.8x_height#+2rule_thickness#)); uni "0x2A89"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +spread:=.4x_height; +bot y1=-d; y3-y1=spread; +top y5-bot y6=x_height; .5[y5,y6]=y3; .5[x5,x6]=.5w; z5=z6+whatever*dir60; +lft x7l=u; y7=h-4u; +less(7,8,9); +pos5(rule_thickness,angle(z6-z5)+90); pos6(rule_thickness,angle(z6-z5)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +vlnka(1,2).nodraw; +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +vlnka(3,4).nodraw; +p2:=subpath(0,4) of _vlnka; +p3:=subpath(5,infinity) of _vlnka; +p4:=z5l---z6ll..{z5-z6}z6r; +p5:=z6r---z5rr..{z6-z5}z5l; +(tim0,tim1)=p0 intersectiontimes p4; +(tim2,tim3)=p0 intersectiontimes p5; +(tim4,tim5)=p1 intersectiontimes p5; +(tim6,tim7)=p1 intersectiontimes p4; +(tim8,tim9)=p2 intersectiontimes p4; +(tim10,tim11)=p2 intersectiontimes p5; +(tim12,tim13)=p3 intersectiontimes p5; +(tim14,tim15)=p3 intersectiontimes p4; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p4,tim1),infinity) of p4 + ..subpath(0,rundy(p5,tim3).zpet) of p5 + ..subpath(rundy(p0,tim2),infinity) of p0 + ..subpath(0,rundy(p1,tim6).zpet) of p1 + ..subpath(rundy(p5,(tim5,f_obl)),rundy(p5,(tim11,f_obl)).zpet) of p5 + ..subpath(rundy(p2,tim10),infinity) of p2 + ..subpath(0,rundy(p3,tim12).zpet) of p3 + ..subpath(rundy(p5,tim13),infinity) of p5 + ..subpath(0,rundy(p4,tim15).zpet) of p4 + ..subpath(rundy(p3,tim14),infinity) of p3 + ..subpath(0,rundy(p2,tim8).zpet) of p2 + ..subpath(rundy(p4,(tim9,f_obl)),rundy(p4,(tim7,f_obl)).zpet) of p4 + ..subpath(rundy(p1,tim6),infinity) of p1..cycle; +penlabels(5,6); +endchar; + +iff known chars.math_less_sim_eq: +bskchar "Less than or similar or equal to sign"; +beginchar(chars.math_less_sim_eq,12u#,v_center(8u#+.8x_height#+rule_thickness#)); uni "0x2A8D"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +oblu:=2oblu; +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x0l=lft x3=u; rt x4=w-u; y0=h-4u; +spread:=.4x_height; +bot y3l=bot y4l=-d; y5-y3=spread-rule_thickness; +less(0,1,2); +filldraw bskrule(3,4,hair,hair); +vlnka(5,6); +endchar; + +iff known chars.math_smaller: +bskchar "Smaller sign"; +beginchar(chars.math_smaller,12u#,v_center(8u#)); uni "0x2AAA"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos3(rule_thickness,90);pos4(rule_thickness,90); +lft x0l=x3=u; y0=y3=y4=math_axis; x4=x1; +less(0,1,2).nodraw; +p0:=_less; +p1:=reverse (bskrule(3,4,hair,0)); +(tim0-2,tim1)=subpath(2,infinity) of p0 intersectiontimes p1; +(tim2-2,tim3-2)=subpath(2,infinity) of p0 intersectiontimes subpath(2,infinity) of p1; +oblu:=3f_obl; +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(3,4); labels(4ll); +endchar; + +iff known chars.math_smaller_eq: +bskchar "Smaller or equals sign"; +beginchar(chars.math_smaller_eq,12u#,v_center(11u#)); uni "0x2AAC"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos3(rule_thickness,90);pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x0l=x3=u; y0=y3=y4=h-4u; x4=x1; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +less(0,1,2).nodraw; +p0:=_less; +p1:=reverse (bskrule(3,4,hair,0)); +(tim0-2,tim1)=subpath(2,infinity) of p0 intersectiontimes p1; +(tim2-2,tim3-2)=subpath(2,infinity) of p0 intersectiontimes subpath(2,infinity) of p1; +oblu:=3f_obl; +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; +filldraw bskrule(5,6,hair,hair); +penlabels(3,4,5,6); labels(4ll); +endchar; + +iff known chars.math_smaller_eq_slanted: +bskchar "Smaller or slanted equals sign"; +beginchar(chars.math_smaller_eq_slanted,12u#,v_center(11u#)); uni "non"; %"0x2AAC.slanted"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos3(rule_thickness,90);pos4(rule_thickness,90); +lft x0l=x3=u; y0=y3=y4=h-4u; x4=x1; +lft x5=u; rt x6=w-u; y6=-d+.5rule_thickness; y0-y5=y2-y6; +less(0,1,2).nodraw; +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +p0:=_less; +p1:=reverse (bskrule(3,4,hair,0)); +(tim0-2,tim1)=subpath(2,infinity) of p0 intersectiontimes p1; +(tim2-2,tim3-2)=subpath(2,infinity) of p0 intersectiontimes subpath(2,infinity) of p1; +oblu:=3f_obl; +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; +filldraw bskrule(5,6,hair,hair); +penlabels(3,4,5,6); labels(4ll); +endchar; + +iff known chars.math_greater: +bskchar "Greater than sign"; +beginchar(chars.math_greater,12u#,v_center(8u#)); uni "0x003E"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=math_axis; +greater(0,1,2); +endchar; + +iff known chars.math_greater_not: +bskchar "Negated greater than sign"; +beginchar(chars.math_greater_not,12u#,v_center(.75(body_height#+desc_depth#))); uni "0x226F"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +rt x0r=w-u; y0=math_axis; y1l=math_axis+4u-.5rule_thickness; +top y3=h; y4=-d; +if not boldmath: rt x3=w-3u; .5[x4,x3]=.5w; else: rt x3=w-4u; lft x4=2u; fi +pos3(rule_thickness,angle(z4-z3)+90); pos4(rule_thickness,angle(z4-z3)+90); +bskpoints(3,4,rule_thickness,rule_thickness); +greater(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1r,z0r]; +z2'r=whatever[z3r,z4r]=whatever[z1r,z0r]; +z2''l=whatever[z3l,z4l]=whatever[z1l,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1l,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +filldraw z0r..z0r'---obl(2'r,0r',3r)---z3rr..z3l---obl(2'l,3l,1r)---z1rr + ..z1l---obl(2''l,1l,3'l)---obl(3'l,2''l,2r)---z2r..z2l + ---obl(3''l,2l,4l).more---z4ll..z4r---obl(3''r,4r,0r)---cycle; +infill obl(2''r,3'r,0''')---obl(0''',1r,2r)---obl(3'r,0''',2''r)---cycle; +penlabels(2',2'',3,3',3'',4); +endchar; + +iff known chars.math_greater_not_vert: +bskchar "Negated greater than sign with vertical stroke"; +beginchar(chars.math_greater_not_vert,12u#,v_center(.75(body_height#+desc_depth#))); uni "non"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=math_axis; y1l=math_axis+4u-.5rule_thickness; +top y3=h; x4=x3=.45w; y4=-d; +pos3(rule_thickness,0); pos4(rule_thickness,0); +bskpoints(3,4,rule_thickness,rule_thickness); +greater(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1r,z0r]; +z2'r=whatever[z3r,z4r]=whatever[z1r,z0r]; +z2''l=whatever[z3l,z4l]=whatever[z1l,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1l,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +filldraw z0r..z0r'---obl(2'r,0r',3r)---z3rr..z3l---obl(2'l,3l,1r)---z1rr + ..z1l---obl(2''l,1l,3'l)---obl(3'l,2''l,2r)---z2r..z2l + ---obl(3''l,2l,4l)---z4ll..z4r---obl(3''r,4r,0r)---cycle; +infill obl(2''r,3'r,0''')---obl(0''',1r,2r)---obl(3'r,0''',2''r)---cycle; +penlabels(2',2'',3,3',3'',4); +endchar; + +iff known chars.math_greater_closed: +bskchar "Closed greater than sign"; +beginchar(chars.math_greater_closed,15u#,v_center(8u#)); uni "0x2AA7"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos3(rule_thickness,0); +rt x0r=w-u; lft x1l=4u; y0=y3=math_axis; lft x3l=u; +greater(0,1,2).nodraw; +filldraw subpath(0,2) of _greater---z1r...{down}z3l...point infinity of _greater---cycle; +infill subpath(3,6) of _greater...{up}z3r...cycle; +penlabels(3); +endchar; + +iff known chars.math_greater_eq: +bskchar "Greater than or equal to sign"; +beginchar(chars.math_greater_eq,12u#,v_center(11u#)); uni "0x2265"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x3=u; rt x4=w-u; y3l=y4l=-d; +filldraw bskrule(3,4,hair,hair); +greater(0,1,2); +penlabels(3,4); +endchar; + +iff known chars.math_greater_eq_double_slanted: +bskchar "Greater than or double slanted equal to sign"; +beginchar(chars.math_greater_eq_double_slanted,12u#,v_center(11u#+.45x_height#)); uni "0x2AFA"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +lft x3=lft x5=u; rt x4=rt x6=w-u; y3=-d+.5rule_thickness; y5-y3=y6-y4=.45x_height; y2-y3=y0-y4; +greater(0,1,2); +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +filldraw bskrule(3,4,hair,hair); +filldraw bskrule(5,6,hair,hair); +penlabels(3,4,5,6); +endchar; + +iff known chars.math_greater_eq_double: +bskchar "Greater than or double equal to sign"; +beginchar(chars.math_greater_eq_double,12u#,v_center(11u#+.45x_height#)); uni "0x2267"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x3=lft x5=u; rt x4=rt x6=w-u; y3l=y4l=-d; y5=y6=y3+.45x_height; +filldraw bskrule(3,4,hair,hair); +filldraw bskrule(5,6,hair,hair); +greater(0,1,2); +penlabels(3,4,5,6); +endchar; + +iff known chars.math_greater_not_eq_double: +bskchar "Greater than and not double equal to sign"; +beginchar(chars.math_greater_not_eq_double,12u#,v_center(11u#+.45x_height#)); uni "0x2269"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +greater(0,1,2); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x3=lft x5=u; rt x4=rt x6=w-u; y5l=y6l=-d; y3=y4=y5+.45x_height; +top y7=y2l-rule_thickness; x8=x2l+2u; .5[x8,x7]=.5w; .5[y8,y7]=.5[y3,y5]; +pos7(rule_thickness,angle(z8-z7)+90); pos8(rule_thickness,angle(z8-z7)+90); +bskpoints(3,4,hair,hair); bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +z3'=whatever[z7l,z8l]=whatever[z3r,z4r]; +z4'=whatever[z7r,z8r]=whatever[z3r,z4r]; +z5'=whatever[z7r,z8r]=whatever[z3l,z4l]; +z6'=whatever[z7r,z8r]=whatever[z5r,z6r]; +z7'=whatever[z7r,z8r]=whatever[z5l,z6l]; +z8'=whatever[z7l,z8l]=whatever[z5l,z6l]; +z9'=whatever[z7l,z8l]=whatever[z5r,z6r]; +z10'=whatever[z7l,z8l]=whatever[z3l,z4l]; +oblu:=f_obl; oblu.more:=2f_obl; +filldraw z3rr---obl(3',3r,7l)---z7l..z7rr---tobl(4',7rr,4r).more---z4r + ..z4ll---obl(5',4l,6')---obl(6',5',6r).more---z6r..z6ll + ---obl(7',6l,8r)---z8r..z8ll---tobl(8',8ll,5l).more---z5l + ..z5rr---obl(9',5r,10')---obl(10',9',3l).more---z3l..cycle; +penlabels(3,4,5,6,7,8); labels(4ll,5ll,7rr,8ll,3',4',5',6',7',8',9',10'); +endchar; + +iff known chars.math_greater_eq_double_not: +bskchar "Negated greater than or double equal to sign"; +beginchar(chars.math_greater_eq_double_not,12u#,v_center(11u#+.45x_height#+4rule_thickness#)); uni "non"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +rt x0r=w-u; y0=h-4u-2rule_thickness; y1l=h-2.5rule_thickness; +top y3=h; y4=-d; +if not boldmath: .5[x4,x3]=.5w-.5u; rt x3=w-4u; else: rt x3=w-5u; lft x4=2u; fi +lft x5=lft x7=u; rt x6=rt x8=w-u; y7l=y8l=-d+2rule_thickness; y5=y6=y7+.45x_height; +pos3(rule_thickness,angle(z4-z3)+90); pos4(rule_thickness,angle(z4-z3)+90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,90); pos8(rule_thickness,90); +bskpoints(3,4,rule_thickness,rule_thickness); +bskpoints(5,6,hair,hair); bskpoints(7,8,hair,hair); +greater(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1r,z0r]; +z2'r=whatever[z3r,z4r]=whatever[z1r,z0r]; +z2''l=whatever[z3l,z4l]=whatever[z1l,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1l,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +z5'l=whatever[z3l,z4l]=whatever[z5r,z6r]; +z5'r=whatever[z3r,z4r]=whatever[z5r,z6r]; +z6'l=whatever[z3l,z4l]=whatever[z5l,z6l]; +z6'r=whatever[z3r,z4r]=whatever[z5l,z6l]; +z7'l=whatever[z3l,z4l]=whatever[z7r,z8r]; +z7'r=whatever[z3r,z4r]=whatever[z7r,z8r]; +z8'l=whatever[z3l,z4l]=whatever[z7l,z8l]; +z8'r=whatever[z3r,z4r]=whatever[z7l,z8l]; +filldraw z0r..z0r'---obl(2'r,0r',3r)---z3rr..z3l---obl(2'l,3l,1r)---z1rr + ..z1l---obl(2''l,1l,3'l)---obl(3'l,2''l,2r)---z2r..z2l + ---obl(3''l,2l,4l).more---obl(5'l,3''l,5r)---z5rr..z5l---obl(6'l,5l,7'l) + ---tobl(7'l,6'l,7rr)---z7rr..z7l---obl(8'l,7l,4l)---z4l..z4r---obl(8'r,4r,8l) + ---z8ll..z8r---obl(7'r,8r,6'r)---obl(6'r,4r,6l)---z6ll..z6r---obl(5'r,6r,3''r) + ---obl(3''r,4r,0r)---cycle; +infill ifobl(2''r,3'r,0''',0''',,)---obl(0''',2r,1r)---cycle; +penlabels(2',2'',3,3',3'',4,5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.math_greater_vert_not_eq_double: +bskchar "Greater than and vertical not double equal to sign"; +beginchar(chars.math_greater_vert_not_eq_double,12u#,v_center(11u#+.45x_height#)); uni "non"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +greater(0,1,2); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x3=lft x5=u; rt x4=rt x6=w-u; y5l=y6l=-d; y3=y4=y5+.45x_height; +top y7=y2l-rule_thickness; x8=x7=.5w; .5[y8,y7]=.5[y3,y5]; +pos7(rule_thickness,0); pos8(rule_thickness,0); +bskpoints(3,4,hair,hair); bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +z3'=whatever[z7l,z8l]=whatever[z3r,z4r]; +z4'=whatever[z7r,z8r]=whatever[z3r,z4r]; +z5'=whatever[z7r,z8r]=whatever[z3l,z4l]; +z6'=whatever[z7r,z8r]=whatever[z5r,z6r]; +z7'=whatever[z7r,z8r]=whatever[z5l,z6l]; +z8'=whatever[z7l,z8l]=whatever[z5l,z6l]; +z9'=whatever[z7l,z8l]=whatever[z5r,z6r]; +z10'=whatever[z7l,z8l]=whatever[z3l,z4l]; +oblu:=f_obl; +filldraw z3rr---obl(3',3r,7l)---z7l..z7rr---tobl(4',7rr,4r)---z4r + ..z4ll---obl(5',4l,6')---obl(6',5',6r)---z6r..z6ll + ---obl(7',6l,8r)---z8r..z8ll---tobl(8',8ll,5l)---z5l + ..z5rr---obl(9',5r,10')---obl(10',9',3l)---z3l..cycle; +penlabels(3,4,5,6,7,8); labels(4ll,5ll,7rr,8ll,3',4',5',6',7',8',9',10'); +endchar; + +iff known chars.math_greater_eq_double_not_vert: +bskchar "Negated greater than or double equal to sign with vertical stroke"; +beginchar(chars.math_greater_eq_double_not_vert,12u#,v_center(11u#+.45x_height#+4rule_thickness#)); uni "non"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +rt x0r=w-u; y0=h-4u-2rule_thickness; y1l=h-2.5rule_thickness; +top y3=h; x4=x3=.5w; y4=-d; +lft x5=lft x7=u; rt x6=rt x8=w-u; y7l=y8l=-d+2rule_thickness; y5=y6=y7+.45x_height; +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,90); pos8(rule_thickness,90); +bskpoints(3,4,rule_thickness,rule_thickness); +bskpoints(5,6,hair,hair); bskpoints(7,8,hair,hair); +greater(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1r,z0r]; +z2'r=whatever[z3r,z4r]=whatever[z1r,z0r]; +z2''l=whatever[z3l,z4l]=whatever[z1l,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1l,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +z5'l=whatever[z3l,z4l]=whatever[z5r,z6r]; +z5'r=whatever[z3r,z4r]=whatever[z5r,z6r]; +z6'l=whatever[z3l,z4l]=whatever[z5l,z6l]; +z6'r=whatever[z3r,z4r]=whatever[z5l,z6l]; +z7'l=whatever[z3l,z4l]=whatever[z7r,z8r]; +z7'r=whatever[z3r,z4r]=whatever[z7r,z8r]; +z8'l=whatever[z3l,z4l]=whatever[z7l,z8l]; +z8'r=whatever[z3r,z4r]=whatever[z7l,z8l]; +filldraw z0r..z0r'---obl(2'r,0r',3r)---z3rr..z3l---obl(2'l,3l,1r)---z1rr + ..z1l---obl(2''l,1l,3'l)---obl(3'l,2''l,2r)---z2r..z2l + ---obl(3''l,2l,4l).more---obl(5'l,3''l,5r)---z5rr..z5l---obl(6'l,5l,7'l) + ---obl(7'l,6'l,7r)---z7rr..z7l---obl(8'l,7l,4l)---z4l..z4r---obl(8'r,4r,8l) + ---z8ll..z8r---obl(7'r,8r,6'r)---obl(6'r,4r,6l)---z6ll..z6r---obl(5'r,6r,3''r) + ---obl(3''r,4r,0r)---cycle; +infill obl(2''r,3'r,0''')---obl(0''',1r,2r)---obl(3'r,0''',2''r)---cycle; +penlabels(2',2'',3,3',3'',4,5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.math_sim_greater_eq_double: +bskchar "Similar to or greater than or double equal to sign"; +beginchar(chars.math_sim_greater_eq_double,12u#,v_center(11u#+.9x_height#-rule_thickness#)); uni "0x2AA0"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=math_axis; y1l-y0=4u-.5rule_thickness; +top y8=h; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x3=lft x5=u; rt x4=rt x6=w-u; y3l=y4l=-d; y5=y6=y3+.45x_height; +filldraw bskrule(3,4,hair,hair); +filldraw bskrule(5,6,hair,hair); +greater(0,1,2); +vlnka(7,8); +penlabels(3,4,5,6); +endchar; + +iff known chars.math_eq_double_greater: +bskchar "Double equal to or greater than sign"; +beginchar(chars.math_eq_double_greater,12u#,v_center(11u#+.45x_height#)); uni "0x2A9A"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=-d+4u; y1l-y0=4u-.5rule_thickness; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x3=lft x5=u; rt x4=rt x6=w-u; y5r=y6r=h; y3=y4=y5-.45x_height; +filldraw bskrule(3,4,hair,hair); +filldraw bskrule(5,6,hair,hair); +greater(0,1,2); +penlabels(3,4,5,6); +endchar; + +iff known chars.math_sl_eq_double_greater: +bskchar "Double slanted equal to or greater than sign"; +beginchar(chars.math_sl_eq_double_greater,12u#,v_center(11u#+.45x_height#)); uni "0x2A9C"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=-d+4u; y1l-y0=4u-.5rule_thickness; +lft x3=lft x5=u; rt x4=rt x6=w-u; y5=h-.5rule_thickness; y5-y3=y6-y4=.45x_height; +greater(0,1,2); +y5-y6=y1r-y0; +pos3(rule_thickness,angle(z5-z6)+90); pos4(rule_thickness,angle(z5-z6)+90); +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +filldraw bskrule(3,4,hair,hair); +filldraw bskrule(5,6,hair,hair); +penlabels(3,4,5,6); +endchar; + +iff known chars.math_greater_eq_slanted: +bskchar "Greater than or slanted equal to sign"; +beginchar(chars.math_greater_eq_slanted,12u#,v_center(11u#)); uni "0x2A7E"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +greater(0,1,2); +lft x3=u; rt x4=w-u; y3=-d+.5rule_thickness; y0-y4=y2-y3; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +penlabels(3,4); +endchar; + +iff known chars.math_greater_closed_eq_sl: +bskchar "Closed greater than or slanted equal to sign"; +beginchar(chars.math_greater_closed_eq_sl,15u#,v_center(12u#)); uni "0x2AA9"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos3(rule_thickness,0); +rt x0r=w-u; lft x1l=4u; y0=y3=h-4u; lft x3l=u; +greater(0,1,2).nodraw; +filldraw subpath(0,2) of _greater---z1r...{down}z3l...point infinity of _greater---cycle; +infill subpath(3,6) of _greater...{up}z3r...cycle; +rt x5=w-u; x4=x3; y4=-d+.5rule_thickness; z4=z5+whatever*(z0l-z2l); +pos4(rule_thickness,angle(z4-z5)+90); pos5(rule_thickness,angle(z4-z5)+90); +filldraw bskrule(4,5,hair,hair); +penlabels(3,4,5); +endchar; + +iff known chars.math_greater_eq_slanted_dot: +bskchar "Greater than or slanted equal to sign with dot inside"; +beginchar(chars.math_greater_eq_slanted_dot,12u#,v_center(11u#)); uni "0x2A80"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=y5=h-4u; lft x5=u+.5dot_size; +greater(0,1,2); +lft x3=u; rt x4=w-u; y3=-d+.5rule_thickness; y0-y4=y2-y3; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +dot(5); +penlabels(3,4); +endchar; + +iff known chars.math_greater_eq_slanted_dot_right: +bskchar "Greater than or slanted equal to sign with dot above right"; +beginchar(chars.math_greater_eq_slanted_dot_right,12u#,v_center(11u#)); uni "0x2A82"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; rt x5=w-u-dot_size; top y5=h-.5dot_size; +greater(0,1,2); +lft x3=u; rt x4=w-u; y3=-d+.5rule_thickness; y0-y4=y2-y3; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +dot(5); +penlabels(3,4); +endchar; + +iff known chars.math_greater_eq_slanted_dot_left: +bskchar "Greater than or slanted equal to sign with dot above left"; +beginchar(chars.math_greater_eq_slanted_dot_left,12u#,5.5u#+1.5dot_size#+math_axis#,5.5u#-math_axis#); uni "0x2A84"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y1l=h-1.5dot_size-.5rule_thickness; y0=h-4u-1.5dot_size; +lft x5=u+dot_size; y5=h-.5dot_size; +greater(0,1,2); +lft x3=u; rt x4=w-u; y3=-d+.5rule_thickness; y0-y4=y2-y3; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +dot(5); +penlabels(3,4); +endchar; + +iff known chars.math_eq_greater: +bskchar "Equal to or greater than sign"; +beginchar(chars.math_eq_greater,12u#,v_center(11u#)); uni "0x22DD"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=-d+4u; y1l=y0+4u-.5rule_thickness; +greater(0,1,2); +lft x3=u; rt x4=w-u; y3=y4=h-.5rule_thickness; +pos3(rule_thickness,90); pos4(rule_thickness,90); +filldraw bskrule(3,4,hair,hair); +penlabels(3,4); +endchar; + +iff known chars.math_eq_slanted_greater: +bskchar "Slanted equal to or greater than sign"; +beginchar(chars.math_eq_slanted_greater,12u#,v_center(11u#)); uni "0x2A96"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=-d+4u; y1l=y0+4u-.5rule_thickness; +greater(0,1,2); +lft x3=u; rt x4=w-u; y3=h-.5rule_thickness; y4-y0=y3-y1; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +penlabels(3,4); +endchar; + +iff known chars.math_eq_slanted_greater_dot: +bskchar "Slanted equal to or greater than sign with dot inside"; +beginchar(chars.math_eq_slanted_greater_dot,12u#,v_center(11u#)); uni "0x2A98"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=y5=-d+4u; y1l=y0+4u-.5rule_thickness; lft x5=u+.5dot_size; +greater(0,1,2); +lft x3=u; rt x4=w-u; y3=h-.5rule_thickness; y4-y0=y3-y1; +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +filldraw bskrule(3,4,hair,hair); +dot(5); +penlabels(3,4); +endchar; + +iff known chars.math_greater_neq: +bskchar "Greater than or not equal to sign"; +beginchar(chars.math_greater_neq,12u#,v_center(11u#)); uni "0x2A88"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x3=u; rt x4=w-u; y3l=y4l=-d; +bskpoints(3,4,hair,hair); +.5[x5,x6]=.5[x3,x4]; .5[y5,y6]=y3; x6-x5=.75(y6-y5)=3u; +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +y6'r=y6'l=y4r; z6'r=whatever[z6r,z5r]; z6'l=whatever[z6l,z5l]; +y5'r=y5'l=y4l; z5'r=whatever[z6r,z5r]; z5'l=whatever[z6l,z5l]; +filldraw z3rr..z3l---obl(5'l,3l,5l)---z5l..z5rr---obl(5'r,5r,4l)---z4ll..z4r--- + obl(6'r,4r,6r)---z6r..z6ll---obl(6'l,6l,3r)---cycle; +greater(0,1,2); +penlabels(3,4,5,5',6,6'); labels(5rr,6ll); +endchar; + +iff known chars.math_greater_eq_not: +bskchar "Negated greater than or equal to sign"; +beginchar(chars.math_greater_eq_not,12u#,v_center(.75(body_height#+desc_depth#))); uni "0x2271"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +rt x0r=w-u; y0=math_axis+1.5u; y1l=math_axis+5.5u-.5rule_thickness; +top y3=h; y4=-d; +if not boldmath: rt x3=w-3u; .5[x4,x3]=.5w; else: rt x3=w-4.5u; lft x4=2u; fi +lft x5=u; rt x6=w-u; y5l=y6l=math_axis-5.5u; +pos3(rule_thickness,angle(z4-z3)+90); pos4(rule_thickness,angle(z4-z3)+90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +bskpoints(3,4,rule_thickness,rule_thickness); +bskpoints(5,6,hair,hair); +greater(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1r,z0r]; +z2'r=whatever[z3r,z4r]=whatever[z1r,z0r]; +z2''l=whatever[z3l,z4l]=whatever[z1l,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1l,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +z5'l=whatever[z3l,z4l]=whatever[z5r,z6r]; +z5'r=whatever[z3r,z4r]=whatever[z5r,z6r]; +z6'l=whatever[z3l,z4l]=whatever[z5l,z6l]; +z6'r=whatever[z3r,z4r]=whatever[z5l,z6l]; +filldraw z0r..z0r'---obl(2'r,0r',3r)---z3rr..z3l---obl(2'l,3l,1r)---z1rr + ..z1l---obl(2''l,1l,3'l)---obl(3'l,2''l,2r)---z2r..z2l + ---obl(3''l,2l,4l).more---tobl(5'l,3''l,5rr)---z5rr..z5l---obl(6'l,5l,4l)---z4l + ..z4r---obl(6'r,4r,6l)---z6ll..z6r---obl(5'r,6r,3''r)---obl(3''r,4r,0r)---cycle; +infill obl(2''r,3'r,0''')---obl(0''',1r,2r)---obl(3'r,0''',2''r)---cycle; +penlabels(2',2'',3,3',3'',4,5,5',6,6'); +endchar; + +iff known chars.math_greater_eq_slanted_not: +bskchar "Negated greater than or slanted equal to sign"; +beginchar(chars.math_greater_eq_slanted_not,12u#,v_center(.75(body_height#+desc_depth#))); uni "non"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +rt x0r=w-u; y0=math_axis+1.5u; y1l=math_axis+5.5u-.5rule_thickness; +top y3=h; y4=-d; +if not boldmath: rt x3=w-3u; .5[x4,x3]=.5w; else: rt x3=w-4.5u; lft x4=2u; fi +lft x5=u; rt x6=w-u; y5l=math_axis-5.5u; y0-y6=y2-y5; +pos3(rule_thickness,angle(z4-z3)+90); pos4(rule_thickness,angle(z4-z3)+90); +bskpoints(3,4,rule_thickness,rule_thickness); +greater(0,1,2).nodraw; +pos5(rule_thickness,angle(z5-z6)-90); pos6(rule_thickness,angle(z5-z6)-90); +bskpoints(5,6,hair,hair); +z2'l=whatever[z3l,z4l]=whatever[z1r,z0r]; +z2'r=whatever[z3r,z4r]=whatever[z1r,z0r]; +z2''l=whatever[z3l,z4l]=whatever[z1l,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1l,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +z5'l=whatever[z3l,z4l]=whatever[z5r,z6r]; +z5'r=whatever[z3r,z4r]=whatever[z5r,z6r]; +z6'l=whatever[z3l,z4l]=whatever[z5l,z6l]; +z6'r=whatever[z3r,z4r]=whatever[z5l,z6l]; +filldraw z0r..z0r'---obl(2'r,0r',3r)---z3rr..z3l---obl(2'l,3l,1r)---z1rr + ..z1l---obl(2''l,1l,3'l)---obl(3'l,2''l,2r)---z2r..z2l + ---obl(3''l,2l,4l).more---tobl(5'l,3''l,5rr)---z5rr..z5l---obl(6'l,5l,4l)---z4l..z4r---obl(6'r,4r,6l)---z6ll..z6r---obl(5'r,6r,3''r).more---obl(3''r,4r,0r)---cycle; +infill obl(2''r,3'r,0''')---obl(0''',1r,2r)---obl(3'r,0''',2''r)---cycle; +penlabels(2',2'',3,3',3'',4,5,5',6,6'); +endchar; + +iff known chars.math_greater_neq_vert: +bskchar "Greater than or not equal to sign with vertical stroke"; +beginchar(chars.math_greater_neq_vert,12u#,v_center(11u#)); uni "non"; +italcorr x_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +rt x0r=w-u; y0=h-4u; +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x3=u; rt x4=w-u; y3l=y4l=-d; +bskpoints(3,4,hair,hair); +x5=x6=.5w; .5[y5,y6]=y3; .75(y6-y5)=3u; +pos5(rule_thickness,0); pos6(rule_thickness,0); +bskpoints(5,6,rule_thickness,rule_thickness); +y6'r=y6'l=y4r; z6'r=whatever[z6r,z5r]; z6'l=whatever[z6l,z5l]; +y5'r=y5'l=y4l; z5'r=whatever[z6r,z5r]; z5'l=whatever[z6l,z5l]; +filldraw z3rr..z3l---obl(5'l,3l,5l)---z5l..z5rr---obl(5'r,5r,4l)---z4ll..z4r--- + obl(6'r,4r,6r)---z6r..z6ll---obl(6'l,6l,3r)---cycle; +oblu:=2oblu; +greater(0,1,2); +penlabels(3,4,5,5',6,6'); labels(5rr,6ll); +endchar; + +iff known chars.math_greater_eq_not_vert: +bskchar "Negated greater than or equal to sign with vertical stroke"; +beginchar(chars.math_greater_eq_not_vert,12u#,v_center(.75(body_height#+desc_depth#))); uni "non"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +oblu.more:=2.5f_obl; +rt x0r=w-u; y0=math_axis+1.5u; y1l=math_axis+5.5u-.5rule_thickness; +top y3=h; x4=x3=.45w; y4=-d; +lft x5=u; rt x6=w-u; y5l=y6l=math_axis-5.5u; +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,90); pos6(rule_thickness,90); +bskpoints(3,4,rule_thickness,rule_thickness); +bskpoints(5,6,hair,hair); +greater(0,1,2).nodraw; +z2'l=whatever[z3l,z4l]=whatever[z1r,z0r]; +z2'r=whatever[z3r,z4r]=whatever[z1r,z0r]; +z2''l=whatever[z3l,z4l]=whatever[z1l,z0''']; +z2''r=whatever[z3r,z4r]=whatever[z1l,z0''']; +z3'l=whatever[z3l,z4l]=whatever[z0''',z2r]; +z3'r=whatever[z3r,z4r]=whatever[z0''',z2r]; +z3''l=whatever[z3l,z4l]=whatever[z2l,z0l]; +z3''r=whatever[z3r,z4r]=whatever[z2l,z0l]; +z5'l=whatever[z3l,z4l]=whatever[z5r,z6r]; +z5'r=whatever[z3r,z4r]=whatever[z5r,z6r]; +z6'l=whatever[z3l,z4l]=whatever[z5l,z6l]; +z6'r=whatever[z3r,z4r]=whatever[z5l,z6l]; +filldraw z0r..z0r'---obl(2'r,0r',3r)---z3rr..z3l---obl(2'l,3l,1r)---z1rr + ..z1l---obl(2''l,1l,3'l)---obl(3'l,2''l,2r)---z2r..z2l + ---obl(3''l,2l,4l).more---obl(5'l,3''l,5r)---z5rr..z5l---obl(6'l,5l,4l)---z4l..z4r---obl(6'r,4r,6l)---z6ll..z6r---obl(5'r,6r,3''r)---obl(3''r,4r,0r)---cycle; +infill obl(2''r,3'r,0''')---obl(0''',1r,2r)---obl(3'r,0''',2''r)---cycle; +penlabels(2',2'',3,3',3'',4,5,5',6,6'); +endchar; + +iff known chars.math_much_greater: +bskchar "Much greater than sign"; +beginchar(chars.math_much_greater,17u#,v_center(9u#)); uni "0x226B"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; lft x1l=6u; y0=y3=math_axis; +rt x3r=w-6u; lft x4l=u; +greater(0,1,2); +greater(3,4,5); +endchar; + +iff known chars.math_piping_z: +bskchar "Z-piping"; +beginchar(chars.math_piping_z,15u#,asc_height#,0); uni "0x2A20"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; lft x1l=6u; y0=y3=.5[h,-d]; +rt x3r=w-6u; lft x4l=u; +greater(0,1,2); +greater(3,4,5); +endchar; + +iff known chars.math_greater_in_greater: +bskchar "Greater than in greater than sign"; +beginchar(chars.math_greater_in_greater,12u#,v_center(9u#)); uni "0x2AA2"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; lft x1l=u; y0=y3=math_axis; +x0r-x3r=max(5u,2rule_thickness); lft x4l=u; +greater(0,1,2); +z4l=z3l+whatever*(z1l-z0l); +greater(3,4,5); +endchar; + +iff known chars.math_greater_in_greater_underbar: +bskchar "Greater than in greater than sign with underbar"; +beginchar(chars.math_greater_in_greater_underbar,12u#,4.5u#+math_axis#,4.5u#+2.5rule_thickness#-math_axis#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +rt x0r=w-u; lft x1l=u; y0=y3=math_axis; +x0r-x3r=max(5u,2rule_thickness); lft x4l=u; +lft x6=u; rt x7=w-u; bot y6l=bot y7l=-d; +filldraw bskrule(6,7,hair,hair); +greater(0,1,2); +z4l=z3l+whatever*(z1l-z0l); +greater(3,4,5); +penlabels(6,7); +endchar; + +iff known chars.math_greater_in_greater_in_greater: +bskchar "Greater than in greater than in greater than sign"; +beginchar(chars.math_greater_in_greater_in_greater,15.5u#,v_center(13u#)); uni "0x2AF8"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-5u; lft x1l=u; y0=y3=y6=math_axis; y1l=h-2u-.5rule_thickness; +lft x4l=lft x7l=u; rt x6r=w-u; x0r=.5[x6r,x3r]; +greater(0,1,2); +z4l=z3l+whatever*(z1l-z0l); +z7l=z6l+whatever*(z1l-z0l); +greater(3,4,5); +greater(6,7,8); +endchar; + +iff known chars.math_much_much_greater: +bskchar "Much much greater than sign"; +beginchar(chars.math_much_much_greater,22u#,v_center(9u#)); uni "0x22D9"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; lft x1l=11u; y0=y3=y6=math_axis; +rt x3r=w-11u; lft x4l=u; +x6=.5[x0,x3]; +greater(0,1,2); +greater(3,4,5); +greater(6,7,8); +endchar; + +iff known chars.math_greater_dot: +bskchar "Greater than sign with dot"; +beginchar(chars.math_greater_dot,12u#,v_center(8u#)); uni "0x22D7"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=y3=math_axis; +x3=2u+.5dot_size; +greater(0,1,2); +dot(3); +endchar; + +iff known chars.math_greater_circle: +bskchar "Greater than sign with circle inside"; +beginchar(chars.math_greater_circle,12u#,v_center(8u#)); uni "0x2A7A"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +lft x6=u; y2=math_axis; +y2=y0; x0=x8; x2-x6=y8-y4=2.5u; +rt x9r=w-u; y9=math_axis; +oblu:=2oblu; greater(9,10,11); oblu:=f_obl; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +endchar; + +iff known chars.math_greater_sim: +bskchar "Greater than or similar to sign"; +beginchar(chars.math_greater_sim,12u#,v_center(8u#+.5x_height#+2rule_thickness#)); uni "0x2273"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +bot y3=-d; spread:=.5x_height; +greater(0,1,2); +vlnka(3,4); +endchar; + +iff known chars.math_sim_greater: +bskchar "similar to or greater than sign"; +beginchar(chars.math_sim_greater,12u#,v_center(8u#+.5x_height#+2rule_thickness#)); uni "0x2A9E"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=-d+4u; y1l-y0=4u-.5rule_thickness; +top y4=h; spread:=.5x_height; +greater(0,1,2); +vlnka(3,4); +endchar; + +iff known chars.math_greater_sim_neg: +bskchar "Negated greater than or similar to sign"; +beginchar(chars.math_greater_sim_neg,12u#,v_center(8u#+.5x_height#+2rule_thickness#)); uni "0x2275"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], spread; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +bot y3=-d; spread:=.5x_height; +top y5=h+rule_thickness; bot y6=-d-rule_thickness; .5[x5,x6]=.5w; x5-x6=4u; +pos5(rule_thickness,angle(z6-z5)+90); pos6(rule_thickness,angle(z6-z5)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +greater(0,1,2).nodraw; +vlnka(3,4).nodraw; +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +p2:=z5l---z6ll..{z5-z6}z6r; +p3:=z6r---z5rr..{z6-z5}z5l; +(tim0,tim1)=p0 intersectiontimes p2; +(tim2,tim3)=p0 intersectiontimes p3; +(tim4,tim5)=p1 intersectiontimes p3; +(tim6,tim7)=p1 intersectiontimes p2; +tim8=xpart(p3 intersectiontimes ((0,y2l)--(w,y2l))); +tim9=xpart(p2 intersectiontimes ((0,y2l)--(w,y2l))); +z7=whatever[z5r,z6r]=whatever[z2l,z0r]; z8=whatever[z5l,z6l]=whatever[z2l,z0r]; +z9=whatever[z5r,z6r]=whatever[z2r,z0''']; z10=whatever[z5l,z6l]=whatever[z2r,z0''']; +z11=whatever[z5r,z6r]=whatever[z1r,z0''']; z12=whatever[z5l,z6l]=whatever[z1r,z0''']; +z13=whatever[z5r,z6r]=whatever[z1l,z0r']; z14=whatever[z5l,z6l]=whatever[z1l,z0r']; +filldraw subpath(0,rundy(p0,(tim0,2oblu)).zpet) of p0 + ..subpath(rundy(p2,(tim1,2oblu)),infinity) of p2 + ..subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p0,tim2),infinity) of p0 + ..subpath(0,rundy(p1,(tim4,2oblu)).zpet) of p1 + ..subpath(rundy(p3,(tim5,2oblu)),tim8) of p3 + ---obl(7,6r,0r)---z0r..z0r'---obl(13,0r',5r)---z5rr..z5l---obl(14,5l,1rr)---z1rr..z1l + ---obl(12,1l,10)---obl(10,12,2r)---z2r..z2l---obl(8,2l,6l) + ..subpath(tim9,rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(p1,tim6),infinity) of p1..cycle; +infill obl(0''',11,9)---obl(9,0''',11)---obl(11,9,0''')---cycle; +penlabels(5,6); labels(7,8,9,10,11,12,13,14); +endchar; + +iff known chars.math_greater_sim_neg_vert: +bskchar "Negated greater than or similar to sign with vertical stroke"; +beginchar(chars.math_greater_sim_neg_vert,12u#,v_center(8u#+.5x_height#+2rule_thickness#)); uni "non"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], spread; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +bot y3=-d; spread:=.5x_height; +top y5=h+rule_thickness; bot y6=-d-rule_thickness; x5=x6=.5w; +pos5(rule_thickness,0); pos6(rule_thickness,0); +bskpoints(5,6,rule_thickness,rule_thickness); +greater(0,1,2).nodraw; +vlnka(3,4).nodraw; +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +p2:=z5l---z6ll..{z5-z6}z6r; +p3:=z6r---z5rr..{z6-z5}z5l; +(tim0,tim1)=p0 intersectiontimes p2; +(tim2,tim3)=p0 intersectiontimes p3; +(tim4,tim5)=p1 intersectiontimes p3; +(tim6,tim7)=p1 intersectiontimes p2; +tim8=xpart(p3 intersectiontimes ((0,y2l)--(w,y2l))); +tim9=xpart(p2 intersectiontimes ((0,y2l)--(w,y2l))); +z7=whatever[z5r,z6r]=whatever[z2l,z0r]; z8=whatever[z5l,z6l]=whatever[z2l,z0r]; +z9=whatever[z5r,z6r]=whatever[z2r,z0''']; z10=whatever[z5l,z6l]=whatever[z2r,z0''']; +z11=whatever[z5r,z6r]=whatever[z1r,z0''']; z12=whatever[z5l,z6l]=whatever[z1r,z0''']; +z13=whatever[z5r,z6r]=whatever[z1l,z0r']; z14=whatever[z5l,z6l]=whatever[z1l,z0r']; +filldraw subpath(0,rundy(p0,(tim0,2oblu)).zpet) of p0 + ..subpath(rundy(p2,(tim1,2oblu)),infinity) of p2 + ..subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p0,tim2),infinity) of p0 + ..subpath(0,rundy(p1,(tim4,2oblu)).zpet) of p1 + ..subpath(rundy(p3,(tim5,2oblu)),tim8) of p3 + ---obl(7,6r,0r)---z0r..z0r'---obl(13,0r',5r)---z5rr..z5l---obl(14,5l,1rr)---z1rr..z1l + ---obl(12,1l,10)---obl(10,12,2r)---z2r..z2l---obl(8,2l,6l) + ..subpath(tim9,rundy(p2,(tim7,3f_obl)).zpet) of p2 + ..subpath(rundy(p1,(tim6,3f_obl)),infinity) of p1..cycle; +infill obl(0''',11,9)---obl(9,0''',11)---obl(11,9,0''')---cycle; +penlabels(5,6); labels(7,8,9,10,11,12,13,14); +endchar; + +iff known chars.math_greater_not_sim: +bskchar "Greater than and not similar to sign"; +beginchar(chars.math_greater_not_sim,12u#,v_center(8u#+.5x_height#+2rule_thickness#)); uni "0x22E7"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +bot y3=-d; spread:=.5x_height; +greater(0,1,2); +vlnka(3,4).nodraw; +top y5-bot y6=.7x_height; .5[y5,y6]=.5[y3,y4]; .5[x5,x6]=.5w; x5=x4a; +pos5(rule_thickness,angle(z6-z5)+90); pos6(rule_thickness,angle(z6-z5)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +p2:=z5l---z6ll..{z5-z6}z6r; +p3:=z6r---z5rr..{z6-z5}z5l; +(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,2oblu)).zpet) of p0 + ..subpath(rundy(p2,(tim1,2oblu)),infinity) of p2 + ..subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p0,tim2),infinity) of p0 + ..subpath(0,rundy(p1,(tim4,2oblu)).zpet) of p1 + ..subpath(rundy(p3,(tim5,2oblu)),infinity) of p3 + ..subpath(0,rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(p1,tim6),infinity) of p1..cycle; +penlabels(2,3,5,6); labels(2rr,3ll); +endchar; + +iff known chars.math_greater_approx: +bskchar "Greater than or approximately equal to sign"; +beginchar(chars.math_greater_approx,12u#,v_center(8u#+.8x_height#+2rule_thickness#)); uni "0x2A86"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; y0=h-4u; +spread:=.4x_height; +bot y3=-d; y5-y3=spread; +greater(0,1,2); +vlnka(3,4); +vlnka(5,6); +endchar; + +iff known chars.math_greater_not_approx: +bskchar "Greater than and not approximately equal to sign"; +beginchar(chars.math_greater_not_approx,12u#,v_center(8u#+.8x_height#+2rule_thickness#)); uni "0x2A8A"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +spread:=.4x_height; +bot y1=-d; y3-y1=spread; +top y5-bot y6=x_height; .5[y5,y6]=y3; .5[x5,x6]=.5w; z5=z6+whatever*dir60; +rt x7r=w-u; y7=h-4u; +greater(7,8,9); +pos5(rule_thickness,angle(z6-z5)+90); pos6(rule_thickness,angle(z6-z5)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +vlnka(1,2).nodraw; +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +vlnka(3,4).nodraw; +p2:=subpath(0,4) of _vlnka; +p3:=subpath(5,infinity) of _vlnka; +p4:=z5l---z6ll..{z5-z6}z6r; +p5:=z6r---z5rr..{z6-z5}z5l; +(tim0,tim1)=p0 intersectiontimes p4; +(tim2,tim3)=p0 intersectiontimes p5; +(tim4,tim5)=p1 intersectiontimes p5; +(tim6,tim7)=p1 intersectiontimes p4; +(tim8,tim9)=p2 intersectiontimes p4; +(tim10,tim11)=p2 intersectiontimes p5; +(tim12,tim13)=p3 intersectiontimes p5; +(tim14,tim15)=p3 intersectiontimes p4; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p4,tim1),infinity) of p4 + ..subpath(0,rundy(p5,tim3).zpet) of p5 + ..subpath(rundy(p0,tim2),infinity) of p0 + ..subpath(0,rundy(p1,tim6).zpet) of p1 + ..subpath(rundy(p5,(tim5,f_obl)),rundy(p5,(tim11,f_obl)).zpet) of p5 + ..subpath(rundy(p2,tim10),infinity) of p2 + ..subpath(0,rundy(p3,tim12).zpet) of p3 + ..subpath(rundy(p5,tim13),infinity) of p5 + ..subpath(0,rundy(p4,tim15).zpet) of p4 + ..subpath(rundy(p3,tim14),infinity) of p3 + ..subpath(0,rundy(p2,tim8).zpet) of p2 + ..subpath(rundy(p4,(tim9,f_obl)),rundy(p4,(tim7,f_obl)).zpet) of p4 + ..subpath(rundy(p1,tim6),infinity) of p1..cycle; +penlabels(5,6); +endchar; + +iff known chars.math_greater_sim_eq: +bskchar "Greater than or similar or equal to sign"; +beginchar(chars.math_greater_sim_eq,12u#,v_center(8u#+.8x_height#+rule_thickness#)); uni "0x2A8E"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +oblu:=2oblu; +pos3(rule_thickness,90); pos4(rule_thickness,90); +rt x0r=rt x4=w-u; lft x3=u; y0=h-4u; +spread:=.4x_height; +bot y3l=bot y4l=-d; y5-y3=spread-rule_thickness; +greater(0,1,2); +filldraw bskrule(3,4,hair,hair); +vlnka(5,6); +endchar; + +iff known chars.math_larger: +bskchar "Larger sign"; +beginchar(chars.math_larger,12u#,v_center(8u#)); uni "0x2AAB"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos3(rule_thickness,90);pos4(rule_thickness,90); +rt x0r=x3=w-u; y0=y3=y4=math_axis; x4=x1; +greater(0,1,2).nodraw; +p0:=_greater; +p1:=reverse (bskrule(3,4,hair,0)); +(tim0-2,tim1)=subpath(2,infinity) of p0 intersectiontimes p1; +(tim2-2,tim3-2)=subpath(2,infinity) of p0 intersectiontimes subpath(2,infinity) of p1; +oblu:=3f_obl; +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(3,4); labels(4ll); +endchar; + +iff known chars.math_larger_eq: +bskchar "Larger or equals sign"; +beginchar(chars.math_larger_eq,12u#,v_center(11u#)); uni "0x2AAD"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos3(rule_thickness,90);pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +rt x0r=x3=w-u; y0=y3=y4=h-4u; x4=x1; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +greater(0,1,2).nodraw; +p0:=_greater; +p1:=reverse (bskrule(3,4,hair,0)); +(tim0-2,tim1)=subpath(2,infinity) of p0 intersectiontimes p1; +(tim2-2,tim3-2)=subpath(2,infinity) of p0 intersectiontimes subpath(2,infinity) of p1; +oblu:=3f_obl; +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; +filldraw bskrule(5,6,hair,hair); +penlabels(3,4,5,6); labels(4ll); +endchar; + +iff known chars.math_larger_eq_slanted: +bskchar "Larger or slanted equals sign"; +beginchar(chars.math_larger_eq_slanted,12u#,v_center(11u#)); uni "non"; %"0x2AAD.slanted"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos3(rule_thickness,90);pos4(rule_thickness,90); +rt x0r=x3=w-u; y0=y3=y4=h-4u; x4=x1; +lft x5=u; rt x6=w-u; y5=-d+.5rule_thickness; y0-y6=y2-y5; +greater(0,1,2).nodraw; +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +p0:=_greater; +p1:=reverse (bskrule(3,4,hair,0)); +(tim0-2,tim1)=subpath(2,infinity) of p0 intersectiontimes p1; +(tim2-2,tim3-2)=subpath(2,infinity) of p0 intersectiontimes subpath(2,infinity) of p1; +oblu:=3f_obl; +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; +filldraw bskrule(5,6,hair,hair); +penlabels(3,4,5,6); labels(4ll); +endchar; + +iff known chars.math_less_greater: +bskchar "Less than or greater than sign"; +beginchar(chars.math_less_greater,12u#,v_center(12u#+3rule_thickness#)); uni "0x2276"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y3-y0=4u+3rule_thickness; y2l=-d+.5rule_thickness; +greater(0,1,2); +less(3,4,5); +endchar; + +iff known chars.math_less_greater_neg: +bskchar "Negated less than or greater than sign"; +beginchar(chars.math_less_greater_neg,12u#,v_center(12u#+3rule_thickness#)); uni "0x2278"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y3-y0=4u+3rule_thickness; y2l=-d+.5rule_thickness; +top y6=h+rule_thickness; bot y7=-d-rule_thickness; .5[x6,x7]=.5w; x6-x7=4u; +pos6(rule_thickness,angle(z7-z6)+90); pos7(rule_thickness,angle(z7-z6)+90); +bskpoints(6,7,rule_thickness,rule_thickness); +greater(0,1,2).nodraw; +less(3,4,5).nodraw; +z10=whatever[z6r,z7r]=whatever[z4l,z3l']; z11=whatever[z6l,z7l]=whatever[z4l,z3l']; +z12=whatever[z6l,z7l]=whatever[z4r,z3''']; z13=whatever[z6r,z7r]=whatever[z4r,z3''']; +z14=whatever[z6r,z7r]=whatever[z5r,z3''']; z15=whatever[z6l,z7l]=whatever[z5r,z3''']; +z16=whatever[z6r,z7r]=whatever[z5l,z3l]; z17=whatever[z6l,z7l]=whatever[z5l,z3l]; +z18=whatever[z6r,z7r]=whatever[z1r,z0r]; z19=whatever[z6l,z7l]=whatever[z1r,z0r]; +z20=whatever[z6l,z7l]=whatever[z1l,z0''']; z21=whatever[z6r,z7r]=whatever[z1l,z0''']; +z22=whatever[z6r,z7r]=whatever[z2r,z0''']; z23=whatever[z6l,z7l]=whatever[z2r,z0''']; +z24=whatever[z6r,z7r]=whatever[z2l,z0r]; z25=whatever[z6l,z7l]=whatever[z2l,z0r]; +filldraw z3l..z3l'---obl(11,3l',6l)---z6l..z6rr---tobl(10,6rr,4ll)---z4ll..z4r---obl(13,4r,14) + ---obl(14,13,5r)---z5r..z5l---obl(16,5l,18)---obl(18,16,0r')---z0r'..z0r---obl(24,0r,7r) + ---z7r..z7ll---tobl(25,7ll,2l)---z2l..z2r---obl(23,2r,20)--obl(20,23,1l)---z1l..z1rr + ---obl(19,1rr,17)---obl(17,19,3l)---cycle; +infill obl(3''',15,12)---obl(12,3''',15)--obl(15,12,3''')---cycle; +infill obl(0''',21,22)---obl(22,0''',21)---obl(21,22,0''')---cycle; +penlabels(6,7);labels(10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28); +endchar; + +iff known chars.math_less_greater_neg_vert: +bskchar "Negated less than or greater than sign with vertical stroke"; +beginchar(chars.math_less_greater_neg_vert,12u#,v_center(12u#+3rule_thickness#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y3-y0=4u+3rule_thickness; y2l=-d+.5rule_thickness; +top y6=h+rule_thickness; bot y7=-d-rule_thickness; x6=x7=.5w; +pos6(rule_thickness,0); pos7(rule_thickness,0); +bskpoints(6,7,rule_thickness,rule_thickness); +greater(0,1,2).nodraw; +less(3,4,5).nodraw; +z10=whatever[z6r,z7r]=whatever[z4l,z3l']; z11=whatever[z6l,z7l]=whatever[z4l,z3l']; +z12=whatever[z6l,z7l]=whatever[z4r,z3''']; z13=whatever[z6r,z7r]=whatever[z4r,z3''']; +z14=whatever[z6r,z7r]=whatever[z5r,z3''']; z15=whatever[z6l,z7l]=whatever[z5r,z3''']; +z16=whatever[z6r,z7r]=whatever[z5l,z3l]; z17=whatever[z6l,z7l]=whatever[z5l,z3l]; +z18=whatever[z6r,z7r]=whatever[z1r,z0r]; z19=whatever[z6l,z7l]=whatever[z1r,z0r]; +z20=whatever[z6l,z7l]=whatever[z1l,z0''']; z21=whatever[z6r,z7r]=whatever[z1l,z0''']; +z22=whatever[z6r,z7r]=whatever[z2r,z0''']; z23=whatever[z6l,z7l]=whatever[z2r,z0''']; +z24=whatever[z6r,z7r]=whatever[z2l,z0r]; z25=whatever[z6l,z7l]=whatever[z2l,z0r]; +filldraw z3l..z3l'---obl(11,3l',6l)---z6l..z6rr---tobl(10,6rr,4ll)---z4ll..z4r---obl(13,4r,14) + ---obl(14,13,5r)---z5r..z5l---obl(16,5l,18)---obl(18,16,0r')---z0r'..z0r---obl(24,0r,7r) + ---z7r..z7ll---tobl(25,7ll,2l)---z2l..z2r---obl(23,2r,20)--obl(20,23,1l)---z1l..z1rr + ---obl(19,1rr,17)---obl(17,19,3l)---cycle; +infill obl(3''',15,12)---obl(12,3''',15)--obl(15,12,3''')---cycle; +infill obl(0''',21,22)---obl(22,0''',21)---obl(21,22,0''')---cycle; +penlabels(6,7);labels(10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28); +endchar; + +iff known chars.math_greater_less: +bskchar "Greater than or less than sign"; +beginchar(chars.math_greater_less,12u#,v_center(12u#+3rule_thickness#)); uni "0x2277"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y0-y3=4u+3rule_thickness; y5r=-d+.5rule_thickness; +greater(0,1,2); +less(3,4,5); +endchar; + +iff known chars.math_greater_beside_less: +bskchar "Greater than beside less than sign"; +beginchar(chars.math_greater_beside_less,20u#,v_center(8u#)); uni "0x2AA5"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +.5[x0r,x3l]=.5w; x3l-x0r=rule_thickness; +lft x1l=u; rt x4r=w-u; y0=y3=math_axis; +greater(0,1,2); +less(3,4,5); +endchar; + +iff known chars.math_greater_less_neg: +bskchar "Negated greater than or less than sign"; +beginchar(chars.math_greater_less_neg,12u#,v_center(12u#+3rule_thickness#)); uni "0x2279"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y0-y3=4u+3rule_thickness; y5r=-d+.5rule_thickness; +top y6=h+rule_thickness; bot y7=-d-rule_thickness; .5[x6,x7]=.5w; x6-x7=4u; +pos6(rule_thickness,angle(z7-z6)+90); pos7(rule_thickness,angle(z7-z6)+90); +bskpoints(6,7,rule_thickness,rule_thickness); +greater(0,1,2).nodraw; +less(3,4,5).nodraw; +z10=whatever[z6r,z7r]=whatever[z4l,z3l']; z11=whatever[z6l,z7l]=whatever[z4l,z3l']; +z12=whatever[z6l,z7l]=whatever[z4r,z3''']; z13=whatever[z6r,z7r]=whatever[z4r,z3''']; +z14=whatever[z6r,z7r]=whatever[z5r,z3''']; z15=whatever[z6l,z7l]=whatever[z5r,z3''']; +z16=whatever[z6r,z7r]=whatever[z5l,z3l]; z17=whatever[z6l,z7l]=whatever[z5l,z3l]; +z18=whatever[z6r,z7r]=whatever[z1r,z0r]; z19=whatever[z6l,z7l]=whatever[z1r,z0r]; +z20=whatever[z6l,z7l]=whatever[z1l,z0''']; z21=whatever[z6r,z7r]=whatever[z1l,z0''']; +z22=whatever[z6r,z7r]=whatever[z2r,z0''']; z23=whatever[z6l,z7l]=whatever[z2r,z0''']; +z24=whatever[z6r,z7r]=whatever[z2l,z0r]; z25=whatever[z6l,z7l]=whatever[z2l,z0r]; +filldraw z3l..z3l'---obl(11,3l',25)---obl(25,11,2l)---z2l..z2r---obl(23,2r,20)---obl(20,23,1l) + ---z1l..z1rr---obl(19,1rr,6l)---z6l..z6rr---obl(18,6rr,0r')---z0r'..z0r + ---obl(24,0r,10)---obl(10,24,4ll)---z4ll..z4r---obl(13,4r,14)---obl(14,13,5r) + ---z5r..z5l---obl(16,5l,7r)---z7r..z7ll---obl(17,7l,3l)---cycle; +infill obl(3''',15,12)---obl(12,3''',15)--obl(15,12,3''')---cycle; +infill obl(0''',21,22)---obl(22,0''',21)---obl(21,22,0''')---cycle; +penlabels(6,7);labels(10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28); +endchar; + +iff known chars.math_greater_less_neg_vert: +bskchar "Negated greater than or less than sign with vertical stroke"; +beginchar(chars.math_greater_less_neg_vert,12u#,v_center(12u#+3rule_thickness#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y0-y3=4u+3rule_thickness; y5r=-d+.5rule_thickness; +top y6=h+rule_thickness; bot y7=-d-rule_thickness; x6=x7=.5w; +pos6(rule_thickness,0); pos7(rule_thickness,0); +bskpoints(6,7,rule_thickness,rule_thickness); +greater(0,1,2).nodraw; +less(3,4,5).nodraw; +z10=whatever[z6r,z7r]=whatever[z4l,z3l']; z11=whatever[z6l,z7l]=whatever[z4l,z3l']; +z12=whatever[z6l,z7l]=whatever[z4r,z3''']; z13=whatever[z6r,z7r]=whatever[z4r,z3''']; +z14=whatever[z6r,z7r]=whatever[z5r,z3''']; z15=whatever[z6l,z7l]=whatever[z5r,z3''']; +z16=whatever[z6r,z7r]=whatever[z5l,z3l]; z17=whatever[z6l,z7l]=whatever[z5l,z3l]; +z18=whatever[z6r,z7r]=whatever[z1r,z0r]; z19=whatever[z6l,z7l]=whatever[z1r,z0r]; +z20=whatever[z6l,z7l]=whatever[z1l,z0''']; z21=whatever[z6r,z7r]=whatever[z1l,z0''']; +z22=whatever[z6r,z7r]=whatever[z2r,z0''']; z23=whatever[z6l,z7l]=whatever[z2r,z0''']; +z24=whatever[z6r,z7r]=whatever[z2l,z0r]; z25=whatever[z6l,z7l]=whatever[z2l,z0r]; +filldraw z3l..z3l'---obl(11,3l',25)---obl(25,11,2l)---z2l..z2r---obl(23,2r,20)---obl(20,23,1l) + ---z1l..z1rr---obl(19,1rr,6l)---z6l..z6rr---obl(18,6rr,0r')---z0r'..z0r + ---obl(24,0r,10)---obl(10,24,4ll)---z4ll..z4r---obl(13,4r,14)---obl(14,13,5r) + ---z5r..z5l---obl(16,5l,7r)---z7r..z7ll---obl(17,7l,3l)---cycle; +infill obl(3''',15,12)---obl(12,3''',15)--obl(15,12,3''')---cycle; +infill obl(0''',21,22)---obl(22,0''',21)---obl(21,22,0''')---cycle; +penlabels(6,7);labels(10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28); +endchar; + +iff known chars.math_greater_less_overlap: +bskchar "Greater than overlaping less than sign"; +beginchar(chars.math_greater_less_overlap,15u#,v_center(8u#)); uni "0x2AA4"; +italcorr h#*slant; +adjust_fit(0,0); +path p[]; numeric tim[]; +pickup tiny.nib; +oblu:=2oblu; +lft x0l=lft x4l+3u=4u; rt x1r=rt x3r+3u=w-u; y0=y3=math_axis; +less(0,1,2).nodraw; greater(3,4,5).nodraw; +p0:=_less; p1:=_greater; +p2:=point 0 of p1--point infinity of p1; +p3:=point infinity of p0--point 0 of p0; +(tim0,tim1-2)=p0 intersectiontimes subpath(2,infinity) of p1; +(tim2,tim3)=p0 intersectiontimes subpath(0,2) of p1; +(tim4-2,tim5)=subpath(2,infinity) of p0 intersectiontimes subpath(0,2) of p1; +(tim6-3,tim7)=subpath(3,5) of p0 intersectiontimes p1; +(tim8-4,tim9)=subpath(4,6) of p0 intersectiontimes p2; +(tim10,tim11)=p2 intersectiontimes p3; +(tim12-4,tim13)=subpath(4,6) of p1 intersectiontimes p3; +(tim14-3,tim15-3)=subpath(3,4) of p0 intersectiontimes subpath(3,4) of p1; +(tim16-5,tim17-5)=subpath(5,6) of p0 intersectiontimes subpath(5,6) of p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..reverse subpath(rundy(p1,tim3),rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..reverse subpath(0,rundy(p1,tim7).zpet) of p1 + ..subpath(0,rundy(p2,tim9).zpet) of p2 + ..subpath(rundy(p0,tim8),infinity) of p0 + ..subpath(0,rundy(p3,tim11).zpet) of p3 + ..subpath(rundy(p2,tim10),infinity) of p2 + ..reverse subpath(rundy(p1,tim12),infinity) of p1 + ..subpath(rundy(p3,tim13),infinity) of p3..cycle; +oblu:=1.5f_obl; +infill subpath(rundy(p1,tim15),rundy(p1,tim17).zpet) of p1 + ..subpath(rundy(p0,tim16).zpet,rundy(p0,tim14)) of p0..cycle; +endchar; + +iff known chars.math_less_equal_greater: +bskchar "Less than or equals to or greater than sign"; +beginchar(chars.math_less_equal_greater,12u#,v_center(16u#+4rule_thickness#)); uni "0x22DA"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y3-y0=8u+4rule_thickness; y2l=-d+.5rule_thickness; +lft x6=u; rt x7=w-u; y6=y7=math_axis; +filldraw bskrule(6,7,hair,hair); +greater(0,1,2); +less(3,4,5); +penlabels(6,7); +endchar; + +iff known chars.math_less_sl_equal_greater: +bskchar "Less than or slanted equals to or greater than sign"; +beginchar(chars.math_less_sl_equal_greater,12u#,v_center(14u#+4rule_thickness#)); uni "non"; %"0x22DA.slant"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y3-y0=6u+4rule_thickness; y2l=-d+.5rule_thickness; +lft x6=u; rt x7=w-u; .5[y6,y7]=math_axis; y6-y3=y7-y5; +greater(0,1,2); +less(3,4,5); +filldraw bskrule(6,7,hair,hair); +penlabels(6,7); +endchar; + +iff known chars.math_less_sl_equal_greater_sl_equal: +bskchar "Less than or slanted equals to or greater than or slanted equals sign"; +beginchar(chars.math_less_sl_equal_greater_sl_equal,12u#,v_center(16u#+4rule_thickness#)); uni "0x2A93"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +rt x0r=w-u; x3l=w-x0r; +lft x6=lft x8=u; rt x7=rt x9=w-u; +y3=h-4u; y8l=-d+.5rule_thickness; y9-y8=y4l-y3l; +y3-y6=y5l-y7=y2l-y8=y0-y9; .5[y3,y0]=.5[y6,y7]; +less(3,4,5); +greater(0,1,2); +filldraw bskrule(6,7,hair,hair); +filldraw bskrule(8,9,hair,hair); +penlabels(6,7,8,9); +endchar; + +iff known chars.math_less_equal_double_greater: +bskchar "Less than or double equals to or greater than sign"; +beginchar(chars.math_less_equal_double_greater,12u#,v_center(16u#+4rule_thickness#+.45x_height#)); uni "0x2A8B"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y3-y0=8u+4rule_thickness+.45x_height; y2l=-d+.5rule_thickness; +lft x6=lft x8=u; rt x7=rt x9=w-u; y6=y7; y8=y9; .5[y6,y8]=math_axis; y8-y6=.45x_height; +filldraw bskrule(6,7,hair,hair); +filldraw bskrule(8,9,hair,hair); +greater(0,1,2); +less(3,4,5); +penlabels(6,7,8,9); +endchar; + +iff known chars.math_less_sim_greater: +bskchar "Less than or similar to or greater than sign"; +beginchar(chars.math_less_sim_greater,12u#,v_center(16u#+3rule_thickness#+.45x_height#)); uni "0x2A8F"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y3-y0=8u+3rule_thickness+.45x_height; y2l=-d+.5rule_thickness; +.5[y6,y7]=math_axis; +greater(0,1,2); +less(3,4,5); +vlnka(6,7); +endchar; + +iff known chars.math_less_greater_equals_double: +bskchar "Less than or greater than or double equal to sign"; +beginchar(chars.math_less_greater_equals_double,12u#,v_center(16u#+2rule_thickness#+.45x_height#)); uni "0x2A91"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +rt x0r=w-u; x3l=w-x0r; y3=h-4u; y0-y2l=y4l-y3; y0=.5[bot y3,y8]; +lft x6=lft x8=u; rt x7=rt x9=w-u; y6=y7; y8=y9; y6l=-d; y8-y6=.45x_height; +less(3,4,5); +greater(0,1,2); +filldraw bskrule(6,7,hair,hair); +filldraw bskrule(8,9,hair,hair); +penlabels(6,7,8,9); +endchar; + +iff known chars.math_greater_equal_less: +bskchar "Greater than or equals to or less than sign"; +beginchar(chars.math_greater_equal_less,12u#,v_center(16u#+4rule_thickness#)); uni "0x22DB"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y0-y3=8u+4rule_thickness; y5r=-d+.5rule_thickness; +lft x6=u; rt x7=w-u; y6=y7=math_axis; +filldraw bskrule(6,7,hair,hair); +greater(0,1,2); +less(3,4,5); +penlabels(6,7); +endchar; + +iff known chars.math_greater_sl_equal_less: +bskchar "Greater than or slanted equals to or less than sign"; +beginchar(chars.math_greater_sl_equal_less,12u#,v_center(14u#+4rule_thickness#)); uni "non"; %"0x22DB.slant"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y0-y3=6u+4rule_thickness; y5r=-d+.5rule_thickness; +lft x6=u; rt x7=w-u; .5[y6,y7]=math_axis; y2-y6=y0-y7; +greater(0,1,2); +less(3,4,5); +filldraw bskrule(6,7,hair,hair); +penlabels(6,7); +endchar; + +iff known chars.math_greater_sl_equal_less_sl_equal: +bskchar "Greater than or slanted equals to or less than or slanted equals sign"; +beginchar(chars.math_greater_sl_equal_less_sl_equal,12u#,v_center(16u#+4rule_thickness#)); uni "0x2A94"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +rt x0r=w-u; x3l=w-x0r; +lft x6=lft x8=u; rt x7=rt x9=w-u; +y0=h-4u; y9l=-d+.5rule_thickness; y8-y9=y1r-y0r; +y0-y7=y2l-y6=y5r-y9r=y3-y8l; .5[y3,y0]=.5[y6,y7]; +greater(0,1,2); +less(3,4,5); +filldraw bskrule(6,7,hair,hair); +filldraw bskrule(8,9,hair,hair); +penlabels(6,7,8,9); +endchar; + +iff known chars.math_greater_equal_double_less: +bskchar "Greater than or double equals to or less than sign"; +beginchar(chars.math_greater_equal_double_less,12u#,v_center(16u#+4rule_thickness#+.45x_height#)); uni "0x2A8C"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y0-y3=8u+4rule_thickness+.45x_height; y5r=-d+.5rule_thickness; +lft x6=lft x8=u; rt x7=rt x9=w-u; y6=y7; y8=y9; .5[y6,y8]=math_axis; y8-y6=.45x_height; +filldraw bskrule(6,7,hair,hair); +filldraw bskrule(8,9,hair,hair); +greater(0,1,2); +less(3,4,5); +penlabels(6,7,8,9); +endchar; + +iff known chars.math_greater_less_equal_double: +bskchar "Greater than or less than or double equals to sign"; +beginchar(chars.math_greater_less_equal_double,12u#,v_center(16u#+2rule_thickness#+.45x_height#)); uni "0x2A92"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +rt x0r=w-u; x3l=w-x0r; y0=h-4u; y3-y5r=y0-y2r; y3=.5[bot y0,y8]; +lft x6=lft x8=u; rt x7=rt x9=w-u; y6=y7; y8=y9; y6l=-d; y8-y6=.45x_height; +greater(0,1,2); +less(3,4,5); +filldraw bskrule(6,7,hair,hair); +filldraw bskrule(8,9,hair,hair); +penlabels(6,7,8,9); +endchar; + +iff known chars.math_greater_sim_less: +bskchar "Greater than or similar to or less than sign"; +beginchar(chars.math_greater_sim_less,12u#,v_center(16u#+3rule_thickness#+.45x_height#)); uni "0x2A90"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +rt x0r=w-u; x3l=w-x0r; .5[y0,y3]=math_axis; y0-y3=8u+3rule_thickness+.45x_height; y5r=-d+.5rule_thickness; +.5[y6,y7]=math_axis; +greater(0,1,2); +less(3,4,5); +vlnka(6,7); +penlabels(6,7); +endchar; + +iff known chars.math_five_star: +bskchar "Five-pointed star"; +beginchar(chars.math_five_star,x_height#+2u#,v_center(x_height#)); uni "0x22C6"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.5oblu; +z0=(.5w,math_axis); +x1=x0; top y1=h+apex_o; pos1(hair,0); +forsuffixes i=2,3,4,5: + z[i]=z0+(z1-z0) rotated ((i-1)*72); pos.i(hair,72(i-1)); +endfor +forsuffixes i=11,12,13,14,15: + z[i]=z0; pos.i(curve,72(i-1)); +endfor + z[105]=whatever[z5l,z15l]=whatever[z1r,z11r]; +for i=1 upto 4: + z[100+i]=whatever[z[i].l,z[i+10].l]=whatever[z[i+1].r,z[i+11].r]; +endfor; +filldraw z1l---obl(101,1l,2r)---z2r..z2l---obl(102,2l,3r)---z3r..z3l + ---obl(103,3l,4r)---z4r..z4l---obl(104,4l,5r)---z5r..z5l + ---obl(105,5l,1r)---z1r..cycle; +penlabels(1,2,3,4,5,11,12,13,14,15); labels(0,101,102,103,104,105); +endchar; + +iff known chars.math_five_star_empty: +bskchar "Five-pointed star with empty center"; +beginchar(chars.math_five_star_empty,x_height#+2u#,v_center(x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.5oblu; +z0=(.5w,math_axis); +x1=x0; top y1=h+apex_o; pos1(hair,0); +forsuffixes i=2,3,4,5: + z[i]=z0+(z1-z0) rotated ((i-1)*72); pos.i(hair,72(i-1)); +endfor +forsuffixes i=11,12,13,14,15: + z[i]=z0; pos.i(curve,72(i-1)); +endfor + z[105]=whatever[z5l,z15l]=whatever[z1r,z11r]; +for i=1 upto 4: + z[100+i]=whatever[z[i].l,z[i+10].l]=whatever[z[i+1].r,z[i+11].r]; +endfor; +filldraw z1l---obl(101,1l,2r)---z2r..z2l---obl(102,2l,3r)---z3r..z3l + ---obl(103,3l,4r)---z4r..z4l---obl(104,4l,5r)---z5r..z5l + ---obl(105,5l,1r)---z1r..cycle; +infill fullcircle scaled 2stem shifted z0; +penlabels(1,2,3,4,5,11,12,13,14,15); labels(0,101,102,103,104,105); +endchar; + +iff known chars.math_five_star_big: +bskchar "Big five-pointed star"; +beginchar(chars.math_five_star_big,asc_height#+desc_depth#,asc_height#,desc_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.5oblu; +z0=(.5w,.5[h,-d]); +x1=x0; top y1=h+apex_o; pos1(hair,0); +forsuffixes i=2,3,4,5: + z[i]=z0+(z1-z0) rotated ((i-1)*72); pos.i(hair,72(i-1)); +endfor +z11=whatever[z1l,z3r]=whatever[z2r,z5r]; +z12=whatever[z2l,z4r]=whatever[z1l,z3r]; +z13=whatever[z3l,z5r]=whatever[z2l,z4r]; +z14=whatever[z4l,z1r]=whatever[z3l,z5r]; +z15=whatever[z1r,z4l]=whatever[z2r,z5l]; +filldraw z1l---obl(11,1l,2r)---z2r..z2l---obl(12,2l,3r)---z3r..z3l + ---obl(13,3l,4r)---z4r..z4l---obl(14,4l,5r)---z5r..z5l + ---obl(15,5l,1r)---z1r..cycle; +penlabels(1,2,3,4,5,11,12,13,14,15); +endchar; + +iff known chars.sign_born: +bskchar "Born sign"; +beginchar(chars.sign_born,x_height#+2u#,v_center(x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.5oblu; +z0=(.5w,math_axis); +x1=x0; top y1=h+apex_o; pos1(hair,0); +forsuffixes i=2,3,4,5: + z[i]=z0+(z1-z0) rotated ((i-1)*72); pos.i(hair,72(i-1)); +endfor +forsuffixes i=11,12,13,14,15: + z[i]=z0; pos.i(curve,72(i-1)); +endfor +z6=z1; +forsuffixes i=1,2,3,4,5: + z[100+i]=.5[z[i],z[i+1]]+.2x_height*unitvector(z[i+1]-z[i]) rotated 90; +endfor; +filldraw z1l---obl(101,1l,2r)---z2r..z2l---obl(102,2l,3r)---z3r + ..z3l---obl(103,3l,4r)---z4r..z4l---obl(104,4l,5r)---z5r + ..z5l---obl(105,5l,1r)---z1r..cycle; +penlabels(1,2,3,4,5,11,12,13,14,15); labels(0,101,102,103,104,105); +endchar; + +iff known chars.sign_five_star: +bskchar "Five-pointed rounded star"; +beginchar(chars.sign_five_star,x_height#+2u#,v_center(x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.5oblu; +z0=(.5w,math_axis); +x1=x0; top y1=h+apex_o; pos1(hair,0); +forsuffixes i=2,3,4,5: + z[i]=z0+(z1-z0) rotated ((i-1)*72); pos.i(hair,72(i-1)); +endfor +forsuffixes i=11,12,13,14,15: + z[i]=z0; pos.i(curve,72(i-1)); +endfor +z6=z1; +forsuffixes i=1,2,3,4,5: + z[100+i]=.5[z[i],z[i+1]]+.15x_height*unitvector(z[i+1]-z[i]) rotated 90; +endfor; +filldraw z1l..z101..z2r..z2l..z102..z3r..z3l..z103..z4r..z4l..z104..z5r..z5l..z105..z1r..cycle; +penlabels(1,2,3,4,5,11,12,13,14,15); labels(0,101,102,103,104,105); +endchar; + +iff known chars.math_sqsubset: +bskchar "Square subset sign"; +beginchar(chars.math_sqsubset,12u#,v_center(x_height#)); uni "0x228F"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +top y1l=top y2l=h; bot y3r=bot y4r=-d; +rt x1=rt x4=w-u; x2=x3=w-x1; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3+rule_thickness-currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_sqsubset_arm: +bskchar "Square subset sign with arm"; +beginchar(chars.math_sqsubset_arm,16u#,v_center(x_height#)); uni "0x2ACD"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +top y1l=top y2l=h; bot y3r=bot y4r=-d; +rt x1=w-u; x4=w-6u; x2=x3=w-x1; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3+rule_thickness-currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_sqsubset_very: +bskchar "Very proper square subset sign"; +beginchar(chars.math_sqsubset_very,12u#,v_center(x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,-90); pos6(rule_thickness,-90); pos7(rule_thickness,-90); pos8(rule_thickness,-90); +top y1l=top y2l=h; bot y3r=bot y4r=-d; +rt x1=rt x4=rt x5=rt x8=w-u; x2=x3=w-x1; lft x6=lft x7=x2r+2rule_thickness; +y1r-top y5l=if not boldmath:2.25\\fi rule_thickness; .5[y5,y8]=.5[y6,y7]=.5[y1,y4]; y5=y6; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); bskpoints(7,8,hair,hair); +x2r:=x3l:=x3+rule_thickness-currentbreadth; x6r:=x7l:=x7+rule_thickness-currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +filldraw z5l---z6ll..z6---z7..z7rr---z8r..z8ll---obl(7l,8l,6r) + --obl(6r,7l,5r)---z5rr..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,5rr,6ll,7rr,8ll); +endchar; + +iff known chars.math_sqsubset_eq: +bskchar "Square subset or equal to sign"; +beginchar(chars.math_sqsubset_eq,12u#,v_center(x_height#+3u#)); uni "0x2291"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1l=top y2l=h; bot y3r=bot y4r=-d+3u; +rt x1=rt x4=w-u; x2=x3=w-x1; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3+rule_thickness-currentbreadth; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +bskpoints(5,6,hair,hair); +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + ---obl(2r,3l,1r)---z1rr..cycle; +filldraw z5rr..z5l---z6ll..z6r---cycle; +penlabels(1,2,3,4,5,6); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_sqsubset_eq_neg: +bskchar "Negated square subset or equal to sign"; +beginchar(chars.math_sqsubset_eq_neg,12u#,v_center(x_height#+3u#)); uni "0x22E4"; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=2oblu; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1l=top y2l=h; bot y3r=bot y4r=-d+3u; +rt x1=rt x4=w-u; x2=x3=w-x1; +.5[y7,y8]=.5[y4,y6]; .5[x7,x8]=.5w; x8-x7=4u; y7=y5-2u; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3+rule_thickness-currentbreadth; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +pos7(rule_thickness,angle(z7-z8)+90); pos8(rule_thickness,angle(z7-z8)+90); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +y9=y10=y4l; y11=y12=y4r; y13=y14=y6r; y15=y16=y6l; +z9=whatever[z8l,z7l]; z10=whatever[z8r,z7r]; z11=whatever[z8l,z7l]; z12=whatever[z8r,z7r]; +z13=whatever[z8l,z7l]; z14=whatever[z8r,z7r]; z15=whatever[z8l,z7l]; z16=whatever[z8r,z7r]; +filldraw z1l---z2ll..z2---z3..z3rr---obl(11,3r,13).more---obl(13,11,5r)---z5rr..z5l + ---obl(15,5l,7l).more---z7l..z7rr---obl(16,7rr,6l)---z6ll..z6r---obl(14,6r,12).more + ---obl(12,14,4r)---z4r..z4ll---obl(10,4ll,8r).more---z8r..z8ll---obl(9,8ll,3l) + ---obl(3l,4l,2r)---obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,9,10,11,12,13,14,15,16); +endchar; + +iff known chars.math_sqsubset_eq_neg_vert: +bskchar "Negated square subset or equal to sign with vertical stroke"; +beginchar(chars.math_sqsubset_eq_neg_vert,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=2oblu; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1l=top y2l=h; bot y3r=bot y4r=-d+3u; +rt x1=rt x4=w-u; x2=x3=w-x1; +.5[y7,y8]=.5[y4,y6]; x7=x8=.5w; y7=y5-2u; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3+rule_thickness-currentbreadth; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +pos7(rule_thickness,0); pos8(rule_thickness,0); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +y9=y10=y4l; y11=y12=y4r; y13=y14=y6r; y15=y16=y6l; +z9=whatever[z8l,z7l]; z10=whatever[z8r,z7r]; z11=whatever[z8l,z7l]; z12=whatever[z8r,z7r]; +z13=whatever[z8l,z7l]; z14=whatever[z8r,z7r]; z15=whatever[z8l,z7l]; z16=whatever[z8r,z7r]; +filldraw z1l---z2ll..z2---z3..z3rr---obl(11,3r,13)---obl(13,11,5r)---z5rr..z5l + ---obl(15,5l,7l)---z7l..z7rr---obl(16,7rr,6l)---z6ll..z6r---obl(14,6r,12) + ---obl(12,14,4r)---z4r..z4ll---obl(10,4ll,8r)---z8r..z8ll---obl(9,8ll,3l) + ---obl(3l,4l,2r)---obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,9,10,11,12,13,14,15,16); +endchar; + +iff known chars.math_sqsubset_eq_neg_alt: +bskchar "Negated square subset or equal to sign---alternative"; +beginchar(chars.math_sqsubset_eq_neg_alt,12u#,v_center(x_height#+3u#)); uni "0x22E2"; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=2oblu; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1l=top y2l=h; bot y3r=bot y4r=-d+3u; +rt x1=rt x4=w-u; x2=x3=w-x1; +.5[x7,x8]=.5w; x8-x7=4u; y7=y5-2u; y8=y1+2u; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3+rule_thickness-currentbreadth; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +pos7(rule_thickness,angle(z7-z8)+90); pos8(rule_thickness,angle(z7-z8)+90); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +y9=y10=y4l; y11=y12=y4r; y13=y14=y6r; y15=y16=y6l; y17=y18=y1r; y19=y20=y1l; +z9=whatever[z8l,z7l]; z10=whatever[z8r,z7r]; z11=whatever[z8l,z7l]; z12=whatever[z8r,z7r]; +z13=whatever[z8l,z7l]; z14=whatever[z8r,z7r]; z15=whatever[z8l,z7l]; z16=whatever[z8r,z7r]; +z17=whatever[z8l,z7l]; z18=whatever[z8r,z7r]; z19=whatever[z8l,z7l]; z20=whatever[z8r,z7r]; +filldraw z1l---obl(20,1l,8r).more---z8r..z8ll---obl(19,8ll,2l)---z2ll..z2---z3..z3rr + ---obl(11,3r,13).more---obl(13,11,5r)---z5rr..z5l---obl(15,5l,7l).more---z7l..z7rr + ---obl(16,7rr,6l)---z6ll..z6r---obl(14,6r,12).more---obl(12,14,4r)---z4r..z4ll + ---obl(10,4ll,18).more---obl(18,10,1rr)---z1rr..cycle; +infill obl(9,17,3l) ---obl(3l,4l,2r)---obl(2r,3l,17)---obl(17,2r,9)---cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,9,10,11,12,13,14,15,16,17,18,19,20); +endchar; + +iff known chars.math_sqsubset_eq_neg_alt_vert: +bskchar "Negated square subset or equal to sign---alternative, with vertical stroke"; +beginchar(chars.math_sqsubset_eq_neg_alt_vert,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=2oblu; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1l=top y2l=h; bot y3r=bot y4r=-d+3u; +rt x1=rt x4=w-u; x2=x3=w-x1; +x7=x8=.5w; y7=y5-2u; y8=y1+2u; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3+rule_thickness-currentbreadth; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +pos7(rule_thickness,0); pos8(rule_thickness,0); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +y9=y10=y4l; y11=y12=y4r; y13=y14=y6r; y15=y16=y6l; y17=y18=y1r; y19=y20=y1l; +z9=whatever[z8l,z7l]; z10=whatever[z8r,z7r]; z11=whatever[z8l,z7l]; z12=whatever[z8r,z7r]; +z13=whatever[z8l,z7l]; z14=whatever[z8r,z7r]; z15=whatever[z8l,z7l]; z16=whatever[z8r,z7r]; +z17=whatever[z8l,z7l]; z18=whatever[z8r,z7r]; z19=whatever[z8l,z7l]; z20=whatever[z8r,z7r]; +filldraw z1l---obl(20,1l,8r)---z8r..z8ll---obl(19,8ll,2l)---z2ll..z2---z3..z3rr + ---obl(11,3r,13)---obl(13,11,5r)---z5rr..z5l---obl(15,5l,7l)---z7l..z7rr + ---obl(16,7rr,6l)---z6ll..z6r---obl(14,6r,12)---obl(12,14,4r)---z4r..z4ll + ---obl(10,4ll,18)---obl(18,10,1rr)---z1rr..cycle; +infill obl(9,17,3l) ---obl(3l,4l,2r)---obl(2r,3l,17)---obl(17,2r,9)---cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,9,10,11,12,13,14,15,16,17,18,19,20); +endchar; + +iff known chars.math_subset: +bskchar "Proper subset sign"; +beginchar(chars.math_subset,12u#,v_center(x_height#)); uni "0x2282"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_neg: +bskchar "Not subset sign"; +beginchar(chars.math_subset_neg,12u#,v_center(.75(body_height#+desc_depth#))); uni "0x2284"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +y1=y2; y4=y5; .5[y1,y5]=math_axis; top y1r-bot y5r=x_height; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +x6=x4; rt x7=x5-u; top y7=h; bot y6=-d; +pos6(rule_thickness,angle(z6-z7)+90); pos7(rule_thickness,angle(z6-z7)+90); +bskpoints(6,7,rule_thickness,rule_thickness); +y4'r=y4'l=y4l; z4'r=whatever[z7r,z6r]; z4'l=whatever[z7l,z6l]; +y5'r=y5'l=y4r; z5'r=whatever[z7r,z6r]; z5'l=whatever[z7l,z6l]; +y1'r=y1'l=y1r; z1'r=whatever[z7r,z6r]; z1'l=whatever[z7l,z6l]; +y2'r=y2'l=y1l; z2'r=whatever[z7r,z6r]; z2'l=whatever[z7l,z6l]; +filldraw z1l---obl(2'r,1l,4'r)---obl(4'r,7r,5l).more---z5l..z5+2o*right + ..z5rr---obl(5'r,5r,6r)---z6rr..z6l---obl(5'l,6l,4r)---z4r...z3r...z2r + ---obl(1'l,2r,7l)---z7ll..z7r---obl(1'r,7r,1r).more---z1rr + ..z1+2o*right..cycle; +infill z2l...z3l...z4l---obl(4'l,4l,2'l)---obl(2'l,4'l,2l).more---cycle; +penlabels(1,1',2',2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_neg_vert: +bskchar "Not subset sign with vertical stroke"; +beginchar(chars.math_subset_neg_vert,12u#,v_center(.75(body_height#+desc_depth#))); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +y1=y2; y4=y5; .5[y1,y5]=math_axis; top y1r-bot y5r=x_height; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +x6=x7=.55w; top y7=h; bot y6=-d; +pos6(rule_thickness,0); pos7(rule_thickness,0); +bskpoints(6,7,rule_thickness,rule_thickness); +y4'r=y4'l=y4l; z4'r=whatever[z7r,z6r]; z4'l=whatever[z7l,z6l]; +y5'r=y5'l=y4r; z5'r=whatever[z7r,z6r]; z5'l=whatever[z7l,z6l]; +y1'r=y1'l=y1r; z1'r=whatever[z7r,z6r]; z1'l=whatever[z7l,z6l]; +y2'r=y2'l=y1l; z2'r=whatever[z7r,z6r]; z2'l=whatever[z7l,z6l]; +filldraw z1l---obl(2'r,1l,4'r)---obl(4'r,7r,5l)---z5l..z5+2o*right + ..z5rr---obl(5'r,5r,6r)---z6rr..z6l---obl(5'l,6l,4r)---z4r...z3r...z2r + ---obl(1'l,2r,7l)---z7ll..z7r---obl(1'r,7r,1r)---z1rr + ..z1+2o*right..cycle; +infill z2l...z3l...z4l---obl(4'l,4l,2'l)---obl(2'l,4'l,2l)---cycle; +penlabels(1,1',2',2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_eq: +bskchar "Subset or equal to sign"; +beginchar(chars.math_subset_eq,12u#,v_center(x_height#+3u#)); uni "0x2286"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +filldraw z6rr..z6l---z7ll..z7r---cycle; +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_eq_dot: +bskchar "Subset or equal to sign with dot above"; +beginchar(chars.math_subset_eq_dot,12u#,.5x_height#+2.5u#+dot_size#+math_axis#,.5x_height#+1.5u#-math_axis#); uni "0x2AC3"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h-u-dot_size; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +x8=.5w+.5u; top y8=h-.5dot_size; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +filldraw z6rr..z6l---z7ll..z7r---cycle; +dot(8); +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_not_eq: +bskchar "Subset and not equal to sign"; +beginchar(chars.math_subset_not_eq,12u#,v_center(x_height#+3u#)); uni "0x228A"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +.5[x8,x9]=.5[x6,x7]; .5[y8,y9]=y6; x9-x8=.75(y9-y8)=3u; +pos8(rule_thickness,angle(z8-z9)+90); pos9(rule_thickness,angle(z8-z9)+90); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +filldraw z6rr..z6l---obl(8'l,6l,8l).more---z8l..z8rr---obl(8'r,8r,7l)---z7ll..z7r--- + obl(9'r,7r,9r).more---z9r..z9ll---obl(9'l,9l,6r)---cycle; +penlabels(1,2,3,4,5,6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_not_eq_vert: +bskchar "Subset and not equal to sign with vertical stroke"; +beginchar(chars.math_subset_not_eq_vert,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +.5[x8,x9]=.5[x6,x7]; .5[y8,y9]=y6; x9=x8; .75(y9-y8)=3u; +pos8(rule_thickness,0); pos9(rule_thickness,0); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +filldraw z6rr..z6l---obl(8'l,6l,8l)---z8l..z8rr---obl(8'r,8r,7l)---z7ll..z7r--- + obl(9'r,7r,9r)---z9r..z9ll---obl(9'l,9l,6r)---cycle; +penlabels(1,2,3,4,5,6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_eq_neg: +bskchar "Negated subset or equal to sign"; +beginchar(chars.math_subset_eq_neg,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +x8=x4-u; rt x9=x5-u; y9=.5[y4,y3]; y8=y6-2u; +pos8(rule_thickness,angle(z8-z9)+90); pos9(rule_thickness,angle(z8-z9)+90); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +y4'r=y4'l=y4l; z4'r=whatever[z9r,z8r]; z4'l=whatever[z9l,z8l]; +y5'r=y5'l=y4r; z5'r=whatever[z9r,z8r]; z5'l=whatever[z9l,z8l]; +filldraw z1l---z2l...z3l...z4l---obl(4'l,4l,9l)---z9ll..z9r + ---obl(4'r,9r,5l).more---z5l..z5+2o*right..z5rr---obl(5'r,5r,9'r) + ---obl(9'r,5'r,7r).more---z7r..z7ll---obl(8'r,7l,8r)---z8rr..z8l + ---obl(8'l,8l,6l)---z6l..z6rr---obl(9'l,6r,5'l) + ---obl(5'l,9'l,4r).more---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_eq_neg_vert: +bskchar "Negated subset or equal to sign with vertical stroke"; +beginchar(chars.math_subset_eq_neg_vert,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +x8=x9=.5w; y9=.5[y4,y3]; y8=y6-2u; +pos8(rule_thickness,0); pos9(rule_thickness,0); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +y4'r=y4'l=y4l; z4'r=whatever[z9r,z8r]; z4'l=whatever[z9l,z8l]; +y5'r=y5'l=y4r; z5'r=whatever[z9r,z8r]; z5'l=whatever[z9l,z8l]; +filldraw z1l---z2l...z3l...z4l---obl(4'l,4l,9l)---z9ll..z9r + ---obl(4'r,9r,5l)---z5l..z5+2o*right..z5rr---obl(5'r,5r,9'r) + ---obl(9'r,5'r,7r)---z7r..z7ll---obl(8'r,7l,8r)---z8rr..z8l + ---obl(8'l,8l,6l)---z6l..z6rr---obl(9'l,6r,5'l) + ---obl(5'l,9'l,4r)---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_not_subset_eq: +bskchar "Not subset or equal to sign"; +beginchar(chars.math_not_subset_eq,12u#,v_center(x_height#+3u#)); uni "0x2288"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +x8=x4; rt x9=x5-u; y9=y1+2u; y8=y6-2u; +pos8(rule_thickness,angle(z8-z9)+90); pos9(rule_thickness,angle(z8-z9)+90); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +y4'r=y4'l=y4l; z4'r=whatever[z9r,z8r]; z4'l=whatever[z9l,z8l]; +y5'r=y5'l=y4r; z5'r=whatever[z9r,z8r]; z5'l=whatever[z9l,z8l]; +y1'r=y1'l=y1r; z1'r=whatever[z9r,z8r]; z1'l=whatever[z9l,z8l]; +y2'r=y2'l=y1l; z2'r=whatever[z9r,z8r]; z2'l=whatever[z9l,z8l]; +filldraw z1l---obl(2'r,1l,4'r)---obl(4'r,9r,5l).more---z5l..z5+2o*right + ..z5rr---obl(5'r,5r,9'r)---obl(9'r,5'r,7r).more---z7r..z7ll + ---obl(8'r,7l,8r)---z8rr..z8l ---obl(8'l,8l,6l)---z6l..z6rr + ---obl(9'l,6r,5'l)---obl(5'l,9'l,4r).more---z4r...z3r...z2r + ---obl(1'l,2r,9l)---z9ll..z9r---tobl(1'r,9r,1rr).more---z1rr + ..z1+2o*right..cycle; +infill z2l...z3l...z4l---obl(4'l,4l,2'l)---obl(2'l,4'l,2l).more---cycle; +penlabels(1,1',2',2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_not_subset_eq_vert: +bskchar "Not subset or equal to sign with vertical stroke"; +beginchar(chars.math_not_subset_eq_vert,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +x8=x9=.5w; y9=y1+2u; y8=y6-2u; +pos8(rule_thickness,0); pos9(rule_thickness,0); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +y4'r=y4'l=y4l; z4'r=whatever[z9r,z8r]; z4'l=whatever[z9l,z8l]; +y5'r=y5'l=y4r; z5'r=whatever[z9r,z8r]; z5'l=whatever[z9l,z8l]; +y1'r=y1'l=y1r; z1'r=whatever[z9r,z8r]; z1'l=whatever[z9l,z8l]; +y2'r=y2'l=y1l; z2'r=whatever[z9r,z8r]; z2'l=whatever[z9l,z8l]; +filldraw z1l---obl(2'r,1l,4'r)---obl(4'r,9r,5l)---z5l..z5+2o*right + ..z5rr---obl(5'r,5r,9'r) ---obl(9'r,5'r,7r)---z7r..z7ll + ---obl(8'r,7l,8r)---z8rr..z8l ---obl(8'l,8l,6l)---z6l..z6rr + ---obl(9'l,6r,5'l)---obl(5'l,9'l,4r)---z4r...z3r...z2r + ---obl(1'l,2r,9l)---z9ll..z9r---obl(1'r,9r,1r)---z1rr + ..z1+2o*right..cycle; +infill z2l...z3l...z4l---obl(4'l,4l,2'l)---obl(2'l,4'l,2l)---cycle; +penlabels(1,1',2',2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_eq_double: +bskchar "Subset or double equal to sign"; +beginchar(chars.math_subset_eq_double,12u#,v_center(1.45x_height#+3u#+rule_thickness#)); uni "0x2AC5"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +lft x6=lft x8=u; rt x7=rt x9=w-u; y6=y7=y8+.45x_height; bot y8l=bot y9l=-d; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +filldraw bskrule(6,7,hair,hair); +filldraw bskrule(8,9,hair,hair); +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_not_eq_double: +bskchar "Subset and not double equal to sign"; +beginchar(chars.math_subset_not_eq_double,12u#,v_center(1.45x_height#+3u#+rule_thickness#)); uni "0x2ACB"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +top rt z10=(x5-2u,y5r-rule_thickness); .5[x11,x10]=.5w; .5[y11,y10]=.5[y6,y8]; +pos10(rule_thickness,angle(z11-z10)+90); pos11(rule_thickness,angle(z11-z10)+90); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +oblu.more:=2f_obl; +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +filldraw z6rr---obl(6',6r,10l)---z10l..z10rr---tobl(7',10rr,7r).more---z7r + ..z7ll---obl(8',7l,9')---obl(9',8',9r).more---z9r..z9ll + ---obl(10',9l,11r)---z11r..z11ll---tobl(11',11ll,8l).more---z8l + ..z8rr---obl(12',8r,13')---obl(13',12',6l).more---z6l..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(1rr,5rr,7ll,8ll,10rr,11ll,6',7',8',9',10',11',12',13'); +endchar; + +iff known chars.math_subset_not_eq_double_vert: +bskchar "Subset and not double equal to sign with vertical stroke"; +beginchar(chars.math_subset_not_eq_double_vert,12u#,v_center(1.45x_height#+3u#+rule_thickness#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +top y10=y5r-rule_thickness; x11=x10=.5w; .5[y11,y10]=.5[y6,y8]; +pos10(rule_thickness,0); pos11(rule_thickness,0); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +oblu.more:=2f_obl; +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +filldraw z6rr---obl(6',6r,10l)---z10l..z10rr---obl(7',10r,7r)---z7r + ..z7ll---obl(8',7l,9')---obl(9',8',9r)---z9r..z9ll + ---obl(10',9l,11r)---z11r..z11ll---obl(11',11l,8l)---z8l + ..z8rr---obl(12',8r,13')---obl(13',12',6l)---z6l..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(1rr,5rr,7ll,8ll,10rr,11ll,6',7',8',9',10',11',12',13'); +endchar; + +iff known chars.math_subset_not_eq_double_alt: +bskchar "Subset and not double equal to sign (alternative)"; +beginchar(chars.math_subset_not_eq_double_alt,12u#,v_center(1.45x_height#+3u#+rule_thickness#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +y10=y3; x10=x5; rt x11=x4-u; .5[y11,bot y5r-rule_thickness]=.5[y6,y8]; +pos10(rule_thickness,angle(z11-z10)+90); pos11(rule_thickness,angle(z11-z10)+90); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z2'=whatever[z10l,z11l]=whatever[z5l,z4l]; +z3'=whatever[z10r,z11r]=whatever[z5l,z4l]; +z4'=whatever[z10l,z11l]=whatever[z4r,z5r]; +z5'=whatever[z10r,z11r]=whatever[z4r,z5r]; +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +oblu.more:=2f_obl; +filldraw z1l---z2l...z3l...z4l---obl(2',4l,10l)---z10l..z10rr---tobl(3',10rr,5l).more---z5l + ..z5+2o*right..z5rr---obl(5',5r,7')---obl(7',10r,7r).more---z7r..z7ll + ---obl(8',7l,9')---obl(9',8',9r).more---z9r..z9ll---obl(10',9l,11r)---z11r + ..z11ll---tobl(11',11ll,8l).more---z8l..z8rr---obl(12',8r,13') + ---obl(13',12',6l).more---z6l..z6rr---obl(6',6r,4').more---obl(4',6',4r).more + ---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(1rr,5rr,7ll,8ll,10rr,11ll,2',3',4',5',6',7',8',9',10',11',12',13'); +endchar; + +iff known chars.math_subset_not_eq_double_alt_vert: +bskchar "Subset and not double equal to sign (alternative) with vertical stroke"; +beginchar(chars.math_subset_not_eq_double_alt_vert,12u#,v_center(1.45x_height#+3u#+rule_thickness#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +y10=y3; x10=x11=.5w; .5[y11,bot y5r-rule_thickness]=.5[y6,y8]; +pos10(rule_thickness,0); pos11(rule_thickness,0); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z2'=whatever[z10l,z11l]=whatever[z5l,z4l]; +z3'=whatever[z10r,z11r]=whatever[z5l,z4l]; +z4'=whatever[z10l,z11l]=whatever[z4r,z5r]; +z5'=whatever[z10r,z11r]=whatever[z4r,z5r]; +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +oblu.more:=2f_obl; +filldraw z1l---z2l...z3l...z4l---obl(2',4l,10l)---z10l..z10rr---obl(3',10r,5l)---z5l + ..z5+2o*right..z5rr---obl(5',5r,7')---obl(7',10r,7r)---z7r..z7ll + ---obl(8',7l,9')---obl(9',8',9r)---z9r..z9ll---obl(10',9l,11r)---z11r + ..z11ll---obl(11',11l,8l)---z8l..z8rr---obl(12',8r,13') + ---obl(13',12',6l)---z6l..z6rr---obl(6',6r,4')---obl(4',6',4r) + ---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(1rr,5rr,7ll,8ll,10rr,11ll,2',3',4',5',6',7',8',9',10',11',12',13'); +endchar; + +iff known chars.math_subset_eq_double_not: +bskchar "Negated subset or double equal to sign"; +beginchar(chars.math_subset_eq_double_not,12u#,math_axis#+.725x_height#+1.5u#+2.5rule_thickness#,.725x_height#+1.5u#+.5rule_thickness#-math_axis#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h-2rule_thickness; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +y10=h; x10=x1-u; rt x11=x4-u; .5[y11,bot y5r-rule_thickness]=.5[y6,y8]; +pos10(rule_thickness,angle(z11-z10)+90); pos11(rule_thickness,angle(z11-z10)+90); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z2'=whatever[z10l,z11l]=whatever[z5l,z4l]; +z3'=whatever[z10r,z11r]=whatever[z5l,z4l]; +z4'=whatever[z10l,z11l]=whatever[z4r,z5r]; +z5'=whatever[z10r,z11r]=whatever[z4r,z5r]; +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +z14'=whatever[z10r,z11r]=whatever[z1l,z2l]; +z15'=whatever[z10l,z11l]=whatever[z1l,z2l]; +z16'=whatever[z10l,z11l]=whatever[z1r,z2r]; +z17'=whatever[z10r,z11r]=whatever[z1r,z2r]; +oblu.more:=2f_obl; +filldraw z1rr---obl(17',1r,10r)---z10rr..z10l---obl(16',10l,2r)---z2r...z3r...z4r + ---obl(4',4r,6').more---obl(6',4',6r)---z6rr..z6l---obl(13',6l,12').more + ---obl(12',13',8r)---z8rr..z8l---tobl(11',8l,11ll).more---z11ll..z11r + ---obl(10',11r,9l)---z9ll..z9r---obl(9',9r,8').more---obl(8',9',7l)---z7ll + ..z7r---obl(7',7r,5').more---obl(5',7',5r)---z5rr..z5+2o*right..z5l + ---obl(3',5l,14').more---obl(14',3',1l)---z1l..z1+2o*right..cycle; +infill z2l...z3l...z4l---obl(2',4l,15')---obl(15',2',2l).more---cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); +labels(1rr,5rr,7ll,8ll,10rr,11ll,2',3',4',5',6',7',8',9',10',11',12',13',14',15',16',17'); +endchar; + +iff known chars.math_subset_eq_double_not_vert: +bskchar "Negated subset or double equal to sign with vertical stroke"; +beginchar(chars.math_subset_eq_double_not_vert,12u#,math_axis#+.725x_height#+1.5u#+2.5rule_thickness#,.725x_height#+1.5u#+.5rule_thickness#-math_axis#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h-2rule_thickness; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +y10=h; x10=x11=.5w; .5[y11,bot y5r-rule_thickness]=.5[y6,y8]; +pos10(rule_thickness,0); pos11(rule_thickness,0); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z2'=whatever[z10l,z11l]=whatever[z5l,z4l]; +z3'=whatever[z10r,z11r]=whatever[z5l,z4l]; +z4'=whatever[z10l,z11l]=whatever[z4r,z5r]; +z5'=whatever[z10r,z11r]=whatever[z4r,z5r]; +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +z14'=whatever[z10r,z11r]=whatever[z1l,z2l]; +z15'=whatever[z10l,z11l]=whatever[z1l,z2l]; +z16'=whatever[z10l,z11l]=whatever[z1r,z2r]; +z17'=whatever[z10r,z11r]=whatever[z1r,z2r]; +oblu.more:=2f_obl; +filldraw z1rr---obl(17',1r,10r)---z10rr..z10l---obl(16',10l,2r)---z2r...z3r...z4r + ---obl(4',4r,6')---obl(6',4',6r)---z6rr..z6l---obl(13',6l,12') + ---obl(12',13',8r)---z8rr..z8l---obl(11',8l,11l)---z11ll..z11r + ---obl(10',11r,9l)---z9ll..z9r---obl(9',9r,8')---obl(8',9',7l)---z7ll + ..z7r---obl(7',7r,5')---obl(5',7',5r)---z5rr..z5+2o*right..z5l + ---obl(3',5l,14')---obl(14',3',1l)---z1l..z1+2o*right..cycle; +infill z2l...z3l...z4l---obl(2',4l,15')---obl(15',2',2l)---cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); +labels(1rr,5rr,7ll,8ll,10rr,11ll,2',3',4',5',6',7',8',9',10',11',12',13',14',15',16',17'); +endchar; + +iff known chars.math_subset_very: +bskchar "Very proper subset sign"; +beginchar(chars.math_subset_very,12u#,v_center(x_height#)); uni "0x22D0"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); pos8(rule_thickness,180); +pos9(rule_thickness,270); pos10(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=y8=.5[y1,y4]-o=.5[y6,y9]-o; +y6=y7; y9=y10; y1l-top y6r=if not boldmath:2.25\\fi rule_thickness; +rt x1=rt x5=rt x6=rt x10=w-u-2o; lft x3r=u; lft x8l=x3l+2rule_thickness; +x2=x4=x3+(y2-y3); x7=x9=x8+(y7-y8); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10+2o*right..z10rr---z9r...z8r...z7r---z6rr..z6+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,5rr,6rr,10rr); +endchar; + +iff known chars.math_subset_plus: +bskchar "Proper subset sign with plus"; +beginchar(chars.math_subset_plus,12u#,v_center(x_height#)); uni "non"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +x7=w-x6; y6=y7=.5[y8,y9]=math_axis; top y8=bot y2l-rule_thickness; +x8=x9=.5w; y8-y9=x7-x6; +bskpoints(6,7,hair,hair); bskpoints(9,8,.5hair,.5hair); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr,10,11,12,13); +endchar; + +iff known chars.math_subset_eq_plus: +bskchar "Subset or equal to sign with plus"; +beginchar(chars.math_subset_eq_plus,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +filldraw z6rr..z6l---z7ll..z7r---cycle; +pos8(rule_thickness,90); pos9(rule_thickness,90); +pos10(rule_thickness,0); pos11(rule_thickness,0); +x9=w-x8; y8=y9=.5[y10,y11]=y3+o; top y10=bot y2l-rule_thickness; +x10=x11=.5w; y10-y11=x9-x8; +bskpoints(8,9,hair,hair); bskpoints(11,10,.5hair,.5hair); +z12=whatever[z11l,z10l]=whatever[z8l,z9l]; +z13=whatever[z11r,z10r]=whatever[z8l,z9l]; +z14=whatever[z11r,z10r]=whatever[z8r,z9r]; +z15=whatever[z11l,z10l]=whatever[z8r,z9r]; +filldraw z8l---obl(12,8l,11l)---z11l..z11rr---obl(13,11r,9l)---z9ll..z9r--- + obl(14,9r,10r)---z10r..z10ll---obl(15,10l,8r)---z8rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(1rr,5rr,12,13,14,15); +endchar; + +iff known chars.math_subset_plus_below: +bskchar "Proper subset sign with plus below"; +beginchar(chars.math_subset_plus_below,12u#,v_center(1.75x_height#)); uni "0x2ABF"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; top y1r-bot y4r=x_height; y5=y4; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +y6=y7=.5[y8,y9]; top y8=bot y4r-rule_thickness; bot y9=-d; +x8=x9=.5[x7,x6]=.5w+.5u; y8-y9=x7-x6; +bskpoints(6,7,hair,hair); bskpoints(9,8,.5hair,.5hair); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr,10,11,12,13); +endchar; + +iff known chars.math_subset_times_below: +bskchar "Proper subset sign with times below"; +beginchar(chars.math_subset_times_below,12u#,v_center(1.75x_height#)); uni "0x2AC1"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; top y1r-bot y4r=x_height; y5=y4; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +pos6(rule_thickness,135); pos7(rule_thickness,135); +pos8(rule_thickness,45); pos9(rule_thickness,45); +x6r=x8l; x7l=x9r; .5[x6r,x7l]=.5w+.5u; x7l-x6r=y7r-y6l; +bot y6l=bot y9l=-d; top y7r=top y8r=bot y4r-rule_thickness; +bskpoints(6,7,hair,hair); bskpoints(9,8,.5hair,.5hair); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +oblu:=2f_obl; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr,10,11,12,13); +endchar; + +iff known chars.math_subset_tilde_below: +bskchar "Proper subset sign with tilde below"; +beginchar(chars.math_subset_tilde_below,12u#,v_center(1.45x_height#+rule_thickness#)); uni "0x2AC7"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.45x_height; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; top y1r-bot y4r=x_height; y5=y4; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +top y7=bot y4r-rule_thickness; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +vlnka(6,7); +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_approx: +bskchar "Proper subset sign with approximately equal"; +beginchar(chars.math_subset_approx,12u#,v_center(1.75x_height#+rule_thickness#)); uni "0x2AC9"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +numeric spread; spread:=.45x_height; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; top y1r-bot y4r=.85x_height; y5=y4; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +top y7=bot y4r-rule_thickness;bot y8=-d; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +vlnka(6,7); +vlnka(8,9); +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_dot: +bskchar "Proper subset sign with dot"; +beginchar(chars.math_subset_dot,12u#,v_center(x_height#)); uni "0x2ABD"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]-o=y6-o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); x6=.5w; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +dot(6); +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_subset_closed: +bskchar "Closed subset sign"; +beginchar(chars.math_subset_closed,12u#,v_center(x_height#)); uni "0x2ACF"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u; lft x3r=u; +x2=x4=x3+(y2-y3); x1l:=x5l:=x1r-(rule_thickness-currentbreadth); +filldraw obl(1r,5r,2r)---z2r...z3r...z4r---obl(5r,4r,1r)---cycle; +infill obl(1l,5l,2l)---z2l...z3l...z4l---obl(5l,4l,1l)---cycle; +penlabels(1,2,3,4,5); +endchar; + +iff known chars.math_subset_closed_eq: +bskchar "Closed subset or equal to sign"; +beginchar(chars.math_subset_closed_eq,12u#,v_center(x_height#+3u#)); uni "0x2AD1"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]-o; +rt x1=rt x5=w-u; lft x3r=u; +x2=x4=x3+(y2-y3); x1l:=x5l:=x1r-(rule_thickness-currentbreadth); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +filldraw obl(1r,5r,2r)---z2r...z3r...z4r---obl(5r,4r,1r)---cycle; +infill obl(1l,5l,2l)---z2l...z3l...z4l---obl(5l,4l,1l)---cycle; +filldraw bskrule(6,7,hair,hair); +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_subset_open: +bskchar "Open subset sign"; +beginchar(chars.math_subset_open,12u#,v_center(x_height#)); uni "0x27C3"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos9(rule_thickness,90); pos10(rule_thickness,90); pos11(rule_thickness,180); +pos12(rule_thickness,270); pos13(rule_thickness,270); +y2=math_axis; rt x2=w-1.5u; x2-x6=y8-y4=2/3(y9l-y13l)-rule_thickness; +top y9r=top y10r=h; bot y12r=bot y13r=-d; y11=.5[y9,y12]-o; +rt x9=rt x13=w-u-2o; lft x11r=u; +x10=x12=x11+(y10-y11); +circle_points(rule_thickness); +bskpoints(9,10,hair,hair); bskpoints(13,12,hair,hair); +filldraw z9l---z10l...z11l...z12l---z13l..z13+2o*right..z13rr---z12r...z11r...z10r---z9rr..z9+2o*right..cycle; +filldraw draw_circle.l; +infill draw_circle.r; +penlabels(9,10,11,12,13); labels(9rr,13rr); +endchar; + +iff known chars.math_sqsuperset: +bskchar "Square superset sign"; +beginchar(chars.math_sqsuperset,12u#,v_center(x_height#)); uni "0x2290"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +top y1l=top y2l=h; bot y3r=bot y4r=-d; +lft x1=lft x4=u; x2=x3=w-x1; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3-rule_thickness+currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_sqsuperset_arm: +bskchar "Square superset sign with arm"; +beginchar(chars.math_sqsuperset_arm,16u#,v_center(x_height#)); uni "0x2ACE"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +top y1l=top y2l=h; bot y3r=bot y4r=-d; +lft x1=u; x4=6u; x2=x3=w-x1; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3-rule_thickness+currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_sqsuperset_very: +bskchar "Very proper square superset sign"; +beginchar(chars.math_sqsuperset_very,12u#,v_center(x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,-90); pos6(rule_thickness,-90); pos7(rule_thickness,-90); pos8(rule_thickness,-90); +top y1l=top y2l=h; bot y3r=bot y4r=-d; +lft x1=lft x4=lft x5=lft x8=u; x2=x3=w-x1; rt x6=rt x7=x2r-2rule_thickness; +y1r-top y5l=if not boldmath:2.25\\fi rule_thickness; .5[y5,y8]=.5[y6,y7]=.5[y1,y4]; y5=y6; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); bskpoints(7,8,hair,hair); +x2r:=x3l:=x3-rule_thickness+currentbreadth; x6r:=x7l:=x7-rule_thickness+currentbreadth; +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +filldraw z5l---z6ll..z6---z7..z7rr---z8r..z8ll---obl(7l,8l,6r) + --obl(6r,7l,5r)---z5rr..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,5rr,6ll,7rr,8ll); +endchar; + +iff known chars.math_sqsuperset_eq: +bskchar "Square superset or equal to sign"; +beginchar(chars.math_sqsuperset_eq,12u#,v_center(x_height#+3u#)); uni "0x2292"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1l=top y2l=h; bot y3r=bot y4r=-d+3u; +lft x1=lft x4=u; x2=x3=w-x1; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3-rule_thickness+currentbreadth; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +bskpoints(5,6,hair,hair); +filldraw z1l---z2ll..z2---z3..z3rr---z4r..z4ll---obl(3l,4l,2r) + --obl(2r,3l,1r)---z1rr..cycle; +filldraw z5rr..z5l---z6ll..z6r---cycle; +penlabels(1,2,3,4,5,6); labels(1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_sqsuperset_eq_neg: +bskchar "Negated square superset or equal to sign"; +beginchar(chars.math_sqsuperset_eq_neg,12u#,v_center(x_height#+3u#)); uni "0x22E5"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1l=top y2l=h; bot y3r=bot y4r=-d+3u; +lft x1=lft x4=u; x2=x3=w-x1; +.5[y7,y8]=.5[y4,y6]; .5[x7,x8]=.5w; x8-x7=4u; y7=y5-2u; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3-rule_thickness+currentbreadth; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +pos7(rule_thickness,angle(z7-z8)+90); pos8(rule_thickness,angle(z7-z8)+90); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +y9=y10=y4l; y11=y12=y4r; y13=y14=y6r; y15=y16=y6l; +z9=whatever[z8l,z7l]; z10=whatever[z8r,z7r]; z11=whatever[z8l,z7l]; z12=whatever[z8r,z7r]; +z13=whatever[z8l,z7l]; z14=whatever[z8r,z7r]; z15=whatever[z8l,z7l]; z16=whatever[z8r,z7r]; +filldraw z1l---z2ll..z2---z3..z3rr---obl(12,3r,14)---obl(14,12,6r).more---z6r..z6l + ---obl(16,6l,7r)---z7rr..z7l---obl(15,7l,5l).more---z5l..z5rr---obl(13,5r,11) + ---obl(11,13,4r).more---z4r..z4ll---obl(9,4ll,8ll)---z8ll..z8r---obl(10,8r,3l).more + ---obl(3l,4l,2r)---obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,9,10,11,12,13,14,15,16); +endchar; + +iff known chars.math_sqsuperset_eq_neg_vert: +bskchar "Negated square superset or equal to sign with vertical stroke"; +beginchar(chars.math_sqsuperset_eq_neg_vert,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1l=top y2l=h; bot y3r=bot y4r=-d+3u; +lft x1=lft x4=u; x2=x3=w-x1; +.5[y7,y8]=.5[y4,y6]; x7=x8=.5w; y7=y5-2u; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3-rule_thickness+currentbreadth; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +pos7(rule_thickness,0); pos8(rule_thickness,0); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +y9=y10=y4l; y11=y12=y4r; y13=y14=y6r; y15=y16=y6l; +z9=whatever[z8l,z7l]; z10=whatever[z8r,z7r]; z11=whatever[z8l,z7l]; z12=whatever[z8r,z7r]; +z13=whatever[z8l,z7l]; z14=whatever[z8r,z7r]; z15=whatever[z8l,z7l]; z16=whatever[z8r,z7r]; +filldraw z1l---z2ll..z2---z3..z3rr---obl(12,3r,14)---obl(14,12,6r)---z6r..z6l + ---obl(16,6l,7r)---z7rr..z7l---obl(15,7l,5l)---z5l..z5rr---obl(13,5r,11) + ---obl(11,13,4r)---z4r..z4ll---obl(9,4ll,8ll)---z8ll..z8r---obl(10,8r,3l) + ---obl(3l,4l,2r)---obl(2r,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,9,10,11,12,13,14,15,16); +endchar; + +iff known chars.math_sqsuperset_eq_neg_alt: +bskchar "Negated square superset or equal to sign---alternative"; +beginchar(chars.math_sqsuperset_eq_neg_alt,12u#,v_center(x_height#+3u#)); uni "0x22E3"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1l=top y2l=h; bot y3r=bot y4r=-d+3u; +lft x1=lft x4=u; x2=x3=w-x1; +.5[x7,x8]=.5w; x8-x7=4u; y7=y5-2u; y8=y1+2u; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3-rule_thickness+currentbreadth; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +pos7(rule_thickness,angle(z7-z8)+90); pos8(rule_thickness,angle(z7-z8)+90); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +y9=y10=y4l; y11=y12=y4r; y13=y14=y6r; y15=y16=y6l; y17=y18=y1r; y19=y20=y1l; +z9=whatever[z8l,z7l]; z10=whatever[z8r,z7r]; z11=whatever[z8l,z7l]; z12=whatever[z8r,z7r]; +z13=whatever[z8l,z7l]; z14=whatever[z8r,z7r]; z15=whatever[z8l,z7l]; z16=whatever[z8r,z7r]; +z17=whatever[z8l,z7l]; z18=whatever[z8r,z7r]; z19=whatever[z8l,z7l]; z20=whatever[z8r,z7r]; +filldraw z1l---obl(19,1l,8ll)---z8ll..z8r---obl(20,8r,2l).more---z2ll..z2---z3..z3rr + ---obl(12,3r,14)---obl(14,12,6r).more---z6r..z6l---obl(16,6l,7r)---z7rr..z7l + ---obl(15,7l,5l).more---z5l..z5rr---obl(13,5r,11)---obl(11,13,4r).more---z4r..z4ll + ---obl(9,4ll,17)---obl(17,9,1rr).more---z1rr..cycle; +infill obl(18,10,2r)---obl(2r,18,3l)---obl(3l,2r,10)---obl(10,3l,18).more---cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,9,10,11,12,13,14,15,16,17,18,19,20); +endchar; + +iff known chars.math_sqsuperset_eq_neg_alt_vert: +bskchar "Negated square superset or equal to sign---alternative, with vertical stroke"; +beginchar(chars.math_sqsuperset_eq_neg_alt_vert,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); pos2(rule_thickness,-90); pos3(rule_thickness,-90); pos4(rule_thickness,-90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1l=top y2l=h; bot y3r=bot y4r=-d+3u; +lft x1=lft x4=u; x2=x3=w-x1; +x7=x8=.5w; y7=y5-2u; y8=y1+2u; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +x2r:=x3l:=x3-rule_thickness+currentbreadth; +lft x5=u; rt x6=w-u; y5l=y6l=-d; +pos7(rule_thickness,0); pos8(rule_thickness,0); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +y9=y10=y4l; y11=y12=y4r; y13=y14=y6r; y15=y16=y6l; y17=y18=y1r; y19=y20=y1l; +z9=whatever[z8l,z7l]; z10=whatever[z8r,z7r]; z11=whatever[z8l,z7l]; z12=whatever[z8r,z7r]; +z13=whatever[z8l,z7l]; z14=whatever[z8r,z7r]; z15=whatever[z8l,z7l]; z16=whatever[z8r,z7r]; +z17=whatever[z8l,z7l]; z18=whatever[z8r,z7r]; z19=whatever[z8l,z7l]; z20=whatever[z8r,z7r]; +filldraw z1l---obl(19,1l,8ll)---z8ll..z8r---obl(20,8r,2l)---z2ll..z2---z3..z3rr + ---obl(12,3r,14)---obl(14,12,6r)---z6r..z6l---obl(16,6l,7r)---z7rr..z7l + ---obl(15,7l,5l)---z5l..z5rr---obl(13,5r,11)---obl(11,13,4r)---z4r..z4ll + ---obl(9,4ll,17)---obl(17,9,1rr)---z1rr..cycle; +infill obl(18,10,2r)---obl(2r,18,3l)---obl(3l,2r,10)---obl(10,3l,18)---cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1rr,2ll,3rr,4ll,9,10,11,12,13,14,15,16,17,18,19,20); +endchar; + +iff known chars.math_superset: +bskchar "Proper superset sign"; +beginchar(chars.math_superset,12u#,v_center(x_height#)); uni "0x2283"; +italcorr h#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_neg: +bskchar "Negated superset sign"; +beginchar(chars.math_superset_neg,12u#,v_center(.75(body_height#+desc_depth#))); uni "0x2285"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +y1=y2; y4=y5; .5[y1,y5]=math_axis; top y1r-bot y5r=x_height; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +lft x6=x5+u; x7=x2; top y7=h; bot y6=-d; +pos6(rule_thickness,angle(z6-z7)+90); pos7(rule_thickness,angle(z6-z7)+90); +bskpoints(6,7,rule_thickness,rule_thickness); +y4'r=y4'l=y4l; z4'r=whatever[z7r,z6r]; z4'l=whatever[z7l,z6l]; +y5'r=y5'l=y4r; z5'r=whatever[z7r,z6r]; z5'l=whatever[z7l,z6l]; +y1'r=y1'l=y1r; z1'r=whatever[z7r,z6r]; z1'l=whatever[z7l,z6l]; +y2'r=y2'l=y1l; z2'r=whatever[z7r,z6r]; z2'l=whatever[z7l,z6l]; +filldraw z1l---obl(2'l,1l,4'l).more---obl(4'l,7l,5l)---z5l..z5+2o*left..z5rr + ---obl(5'l,5r,6l).more---z6l..z6rr---obl(5'r,6r,4r) + ---z4r...z3r...z2r{left}...z1'r+oblu.more*unitvector(z7-z6)---z7r..z7ll + ---obl(1'l,7l,1r)---z1rr..z1+2o*left..cycle; +infill z4l...z3l...{left}z2l...z2'r+oblu*unitvector(z6-z7)---obl(4'r,2'r,4l).more---cycle; +penlabels(1,1',2',2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_neg_vert: +bskchar "Negated superset sign with vertical stroke"; +beginchar(chars.math_superset_neg_vert,12u#,v_center(.75(body_height#+desc_depth#))); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +y1=y2; y4=y5; .5[y1,y5]=math_axis; top y1r-bot y5r=x_height; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +x6=x7=.45w; top y7=h; bot y6=-d; +pos6(rule_thickness,0); pos7(rule_thickness,0); +bskpoints(6,7,rule_thickness,rule_thickness); +y4'r=y4'l=y4l; z4'r=whatever[z7r,z6r]; z4'l=whatever[z7l,z6l]; +y5'r=y5'l=y4r; z5'r=whatever[z7r,z6r]; z5'l=whatever[z7l,z6l]; +y1'r=y1'l=y1r; z1'r=whatever[z7r,z6r]; z1'l=whatever[z7l,z6l]; +y2'r=y2'l=y1l; z2'r=whatever[z7r,z6r]; z2'l=whatever[z7l,z6l]; +filldraw z1l---obl(2'l,1l,4'l)---obl(4'l,7l,5l)---z5l..z5+2o*left..z5rr + ---obl(5'l,5r,6l)---z6l..z6rr---obl(5'r,6r,4r) + ---z4r...z3r...z2r{left}...z1'r+oblu*unitvector(z7-z6)---z7r..z7ll + ---obl(1'l,7l,1r)---z1rr..z1+2o*left..cycle; +infill z4l...z3l...{left}z2l...z2'r+oblu*unitvector(z6-z7)---obl(4'r,2'r,4l)---cycle; +penlabels(1,1',2',2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_eq: +bskchar "Superset or equal to sign"; +beginchar(chars.math_superset_eq,12u#,v_center(x_height#+3u#)); uni "0x2287"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw z6rr..z6l---z7ll..z7r---cycle; +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_eq_dot: +bskchar "Superset or equal to sign with dot above"; +beginchar(chars.math_superset_eq_dot,12u#,.5x_height#+2.5u#+dot_size#+math_axis#,.5x_height#+1.5u#-math_axis#); uni "0x2AC4"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h-u-dot_size; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +x8=.5w-.5u; top y8=h-.5dot_size; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw z6rr..z6l---z7ll..z7r---cycle; +dot(8); +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_not_eq: +bskchar "Superset and not equal to sign"; +beginchar(chars.math_superset_not_eq,12u#,v_center(x_height#+3u#)); uni "0x228B"; +adjust_fit(0,0); +oblu.more:=2f_obl; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +.5[x8,x9]=.5[x6,x7]; .5[y8,y9]=y6; x9-x8=.75(y9-y8)=3u; +pos8(rule_thickness,angle(z8-z9)+90); pos9(rule_thickness,angle(z8-z9)+90); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw z6rr..z6l---obl(8'l,6l,8l).more---z8l..z8rr---obl(8'r,8r,7l)---z7ll..z7r--- + obl(9'r,7r,9r).more---z9r..z9ll---obl(9'l,9l,6r)---cycle; +penlabels(1,2,3,4,5,6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_not_eq_vert: +bskchar "Superset and not equal to sign with vertical stroke"; +beginchar(chars.math_superset_not_eq_vert,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +x8=x9=.5w; .5[y8,y9]=y6; .75(y9-y8)=3u; +pos8(rule_thickness,0); pos9(rule_thickness,0); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw z6rr..z6l---obl(8'l,6l,8l)---z8l..z8rr---obl(8'r,8r,7l)---z7ll..z7r--- + obl(9'r,7r,9r)---z9r..z9ll---obl(9'l,9l,6r)---cycle; +penlabels(1,2,3,4,5,6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_eq_neg: +bskchar "Negated superset or equal to sign"; +beginchar(chars.math_superset_eq_neg,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +lft x8=x6; x9=x4; y9=.5[y4,y3]; y8=y6-2u; +pos8(rule_thickness,angle(z8-z9)+90); pos9(rule_thickness,angle(z8-z9)+90); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +y4'r=y4'l=y4l; z4'r=whatever[z9r,z8r]; z4'l=whatever[z9l,z8l]; +y5'r=y5'l=y4r; z5'r=whatever[z9r,z8r]; z5'l=whatever[z9l,z8l]; +filldraw z1l---z2l...z3l...z4l---tobl(4'r,4l,9r).more---z9r..z9ll + ---obl(4'l,9l,5l)---z5l..z5+2o*left..z5rr---obl(5'l,5r,9'l).more + ---obl(9'l,5'l,6r)---z6rr..z6l---obl(8'l,6l,8l).more---z8l..z8rr + ---obl(8'r,8r,7l)---z7ll..z7r---obl(9'r,7r,5'r).more + ---obl(5'r,9'r,4r)---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_eq_neg_vert: +bskchar "Negated superset or equal to sign with vertical stroke"; +beginchar(chars.math_superset_eq_neg_vert,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +x8=x9=.5w; y9=.5[y4,y3]; y8=y6-2u; +pos8(rule_thickness,0); pos9(rule_thickness,0); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +y4'r=y4'l=y4l; z4'r=whatever[z9r,z8r]; z4'l=whatever[z9l,z8l]; +y5'r=y5'l=y4r; z5'r=whatever[z9r,z8r]; z5'l=whatever[z9l,z8l]; +filldraw z1l---z2l...z3l...z4l---obl(4'r,4l,9r)---z9r..z9ll + ---obl(4'l,9l,5l)---z5l..z5+2o*left..z5rr---obl(5'l,5r,9'l) + ---obl(9'l,5'l,6r)---z6rr..z6l---obl(8'l,6l,8l)---z8l..z8rr + ---obl(8'r,8r,7l)---z7ll..z7r---obl(9'r,7r,5'r) + ---obl(5'r,9'r,4r)---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_not_superset_eq: +bskchar "Not superset or equal to sign"; +beginchar(chars.math_not_superset_eq,12u#,v_center(x_height#+3u#)); uni "0x2289"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +lft x8=x6+u; x9=x2; y9=y2+2u; y8=y6-2u; +pos8(rule_thickness,angle(z8-z9)+90); pos9(rule_thickness,angle(z8-z9)+90); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +y4'r=y4'l=y4l; z4'r=whatever[z9r,z8r]; z4'l=whatever[z9l,z8l]; +y5'r=y5'l=y4r; z5'r=whatever[z9r,z8r]; z5'l=whatever[z9l,z8l]; +y1'r=y1'l=y1r; z1'r=whatever[z9r,z8r]; z1'l=whatever[z9l,z8l]; +y2'r=y2'l=y1l; z2'r=whatever[z9r,z8r]; z2'l=whatever[z9l,z8l]; +filldraw z1l---obl(2'l,1l,4'l).more---obl(4'l,9l,5l)---z5l..z5+2o*left..z5rr + ---obl(5'l,5r,9'l).more---tobl(9'l,5'l,6rr).more---z6rr + ..z6l---obl(8'l,6l,8l).more---z8l..z8rr + ---obl(8'r,8r,7l)---z7ll..z7r---obl(9'r,7r,5'r).more---obl(5'r,9'r,4r) + ---z4r...z3r...z2r{left}...z1'r+oblu.more*unitvector(z9-z8)---z9r..z9ll + ---obl(1'l,9l,1r)---z1rr..z1+2o*left..cycle; +infill z4l...z3l...{left}z2l...z2'r+oblu*unitvector(z8-z9)---obl(4'r,2'r,4l).more---cycle; +penlabels(1,1',2',2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_not_superset_eq_vert: +bskchar "Not superset or equal to sign with vertical stroke"; +beginchar(chars.math_not_superset_eq_vert,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(6,7,hair,hair); +x8=x9=.5w; y9=y2+2u; y8=y6-2u; +pos8(rule_thickness,0); pos9(rule_thickness,0); +bskpoints(8,9,rule_thickness,rule_thickness); +y9'r=y9'l=y7r; z9'r=whatever[z9r,z8r]; z9'l=whatever[z9l,z8l]; +y8'r=y8'l=y7l; z8'r=whatever[z9r,z8r]; z8'l=whatever[z9l,z8l]; +y4'r=y4'l=y4l; z4'r=whatever[z9r,z8r]; z4'l=whatever[z9l,z8l]; +y5'r=y5'l=y4r; z5'r=whatever[z9r,z8r]; z5'l=whatever[z9l,z8l]; +y1'r=y1'l=y1r; z1'r=whatever[z9r,z8r]; z1'l=whatever[z9l,z8l]; +y2'r=y2'l=y1l; z2'r=whatever[z9r,z8r]; z2'l=whatever[z9l,z8l]; +filldraw z1l---obl(2'l,1l,4'l)---obl(4'l,9l,5l)---z5l..z5+2o*left..z5rr + ---obl(5'l,5r,9'l)---obl(9'l,5'l,6r)---z6rr + ..z6l---obl(8'l,6l,8l)---z8l..z8rr + ---obl(8'r,8r,7l)---z7ll..z7r---obl(9'r,7r,5'r)---obl(5'r,9'r,4r) + ---z4r...z3r...z2r{left}...z1'r+oblu*unitvector(z9-z8)---z9r..z9ll + ---obl(1'l,9l,1r)---z1rr..z1+2o*left..cycle; +infill z4l...z3l...{left}z2l...z2'r+oblu*unitvector(z8-z9)---obl(4'r,2'r,4l)---cycle; +penlabels(1,1',2',2,3,4,4',5,5',6,7,8,8',9,9'); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_eq_double: +bskchar "Superset or double equal to sign"; +beginchar(chars.math_superset_eq_double,12u#,v_center(1.45x_height#+3u#+rule_thickness#)); uni "0x2AC6"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +lft x6=lft x8=u; rt x7=rt x9=w-u; y6=y7=y8+.45x_height; bot y8l=bot y9l=-d; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw bskrule(6,7,hair,hair); +filldraw bskrule(8,9,hair,hair); +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_not_eq_double: +bskchar "Superset and not double equal to sign"; +beginchar(chars.math_superset_not_eq_double,12u#,v_center(1.45x_height#+3u#+rule_thickness#)); uni "0x2ACC"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +top y10=y5r-rule_thickness; x11=x5+2u; .5[x11,x10]=.5w; .5[y11,y10]=.5[y6,y8]; +pos10(rule_thickness,angle(z11-z10)+90); pos11(rule_thickness,angle(z11-z10)+90); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +oblu.more:=2f_obl; +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw z6rr---obl(6',6r,10l)---z10l..z10rr---tobl(7',10rr,7r).more---z7r + ..z7ll---obl(8',7l,9')---obl(9',8',9r).more---z9r..z9ll + ---obl(10',9l,11r)---z11r..z11ll---tobl(11',11ll,8l).more---z8l + ..z8rr---obl(12',8r,13')---obl(13',12',6l).more---z6l..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(1rr,5rr,7ll,8ll,10rr,11ll,6',7',8',9',10',11',12',13'); +endchar; + +iff known chars.math_superset_not_eq_double_vert: +bskchar "Superset and not double equal to sign with vertical stroke"; +beginchar(chars.math_superset_not_eq_double_vert,12u#,v_center(1.45x_height#+3u#+rule_thickness#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +top y10=y5r-rule_thickness; x11=x10=.5w; .5[y11,y10]=.5[y6,y8]; +pos10(rule_thickness,0); pos11(rule_thickness,0); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw z6rr---obl(6',6r,10l)---z10l..z10rr---obl(7',10r,7r)---z7r + ..z7ll---obl(8',7l,9')---obl(9',8',9r)---z9r..z9ll + ---obl(10',9l,11r)---z11r..z11ll---obl(11',11l,8l)---z8l + ..z8rr---obl(12',8r,13')---obl(13',12',6l)---z6l..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(1rr,5rr,7ll,8ll,10rr,11ll,6',7',8',9',10',11',12',13'); +endchar; + +iff known chars.math_superset_not_eq_double_alt: +bskchar "Superset and not double equal to sign (alternative)"; +beginchar(chars.math_superset_not_eq_double_alt,12u#,v_center(1.45x_height#+3u#+rule_thickness#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +y10=y3; x11=x5; x10=x4; .5[y11,bot y5r-rule_thickness]=.5[y6,y8]; +pos10(rule_thickness,angle(z11-z10)+90); pos11(rule_thickness,angle(z11-z10)+90); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z2'=whatever[z10l,z11l]=whatever[z5l,z4l]; +z3'=whatever[z10r,z11r]=whatever[z5l,z4l]; +z4'=whatever[z10l,z11l]=whatever[z4r,z5r]; +z5'=whatever[z10r,z11r]=whatever[z4r,z5r]; +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +oblu.more:=2f_obl; +filldraw z1l---z2l...z3l...z4l---tobl(3',4l,10rr).more---z10rr..z10l---obl(2',10l,5l) + ---z5l..z5+2o*left..z5rr---obl(4',5r,6').more---obl(6',4',6r)---z6rr..z6l + ---obl(13',6l,12').more---tobl(12',13',8rr)---z8rr..z8l---tobl(11',8l,11ll).more + ---z11ll..z11r---obl(10',11r,9l)---z9ll..z9r---obl(9',9r,8').more + ---obl(8',9',7l)---z7ll..z7r---obl(7',7r,5').more---obl(5',7',4r)---z4r...z3r + ...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(1rr,5rr,7ll,8ll,10rr,11ll,2',3',4',5',6',7',8',9',10',11',12',13'); +endchar; + +iff known chars.math_superset_not_eq_double_alt_vert: +bskchar "Superset and not double equal to sign (alternative) with vertical stroke"; +beginchar(chars.math_superset_not_eq_double_alt_vert,12u#,v_center(1.45x_height#+3u#+rule_thickness#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +y10=y3; x11=x10=.5w; .5[y11,bot y5r-rule_thickness]=.5[y6,y8]; +pos10(rule_thickness,0); pos11(rule_thickness,0); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z2'=whatever[z10l,z11l]=whatever[z5l,z4l]; +z3'=whatever[z10r,z11r]=whatever[z5l,z4l]; +z4'=whatever[z10l,z11l]=whatever[z4r,z5r]; +z5'=whatever[z10r,z11r]=whatever[z4r,z5r]; +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +filldraw z1l---z2l...z3l...z4l---obl(3',4l,10r)---z10rr..z10l---obl(2',10l,5l) + ---z5l..z5+2o*left..z5rr---obl(4',5r,6')---obl(6',4',6r)---z6rr..z6l + ---obl(13',6l,12')---obl(12',13',8r)---z8rr..z8l---obl(11',8l,11l) + ---z11ll..z11r---obl(10',11r,9l)---z9ll..z9r---obl(9',9r,8') + ---obl(8',9',7l)---z7ll..z7r---obl(7',7r,5')---obl(5',7',4r)---z4r...z3r + ...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(1rr,5rr,7ll,8ll,10rr,11ll,2',3',4',5',6',7',8',9',10',11',12',13'); +endchar; + +iff known chars.math_superset_eq_double_not: +bskchar "Negated superset or double equal to sign"; +beginchar(chars.math_superset_eq_double_not,12u#,math_axis#+.725x_height#+1.5u#+2.5rule_thickness#,.725x_height#+1.5u#+.5rule_thickness#-math_axis#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h-2rule_thickness; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +y10=h; x11=x5+u; x10=x4; .5[y11,bot y5r-rule_thickness]=.5[y6,y8]; +pos10(rule_thickness,angle(z11-z10)+90); pos11(rule_thickness,angle(z11-z10)+90); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z2'=whatever[z10l,z11l]=whatever[z5l,z4l]; +z3'=whatever[z10r,z11r]=whatever[z5l,z4l]; +z4'=whatever[z10l,z11l]=whatever[z4r,z5r]; +z5'=whatever[z10r,z11r]=whatever[z4r,z5r]; +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +z14'=whatever[z10l,z11l]=whatever[z1l,z2l]; +p0=z1rr--z2r...z3r...{left}z4r; +p1=z4l{right}...z3l...z2l---z1l; +p2=z11ll--z10l; +p3=z10rr--z11r; +(tim0,tim1)=p0 intersectiontimes p2; +(tim2,tim3)=p0 intersectiontimes p3; +(tim4,tim5)=p1 intersectiontimes p3; +oblu.more:=2f_obl; +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 + ---obl(5',4r,7')---obl(7',5',7r).more---z7r..z7ll---obl(8',7l,9').more + ---obl(9',8',9r)---z9r..z9ll---obl(10',9l,11r)---z11r..z11ll + ---tobl(11',11ll,8l).more---z8l..z8rr---obl(12',8r,13')---obl(13',12',6l).more + ---z6l..z6rr---obl(6',6r,4')---obl(4',6',5r).more---z5rr..z5+2o*left..z5l + ---obl(2',5l,14')---obl(14',2',1l).more---z1l..z1+2o*left..{right}cycle; +infill obl(3',10r,4l)---subpath(0,rundy(p1,tim4).zpet) of p1 + ..point rundy(p3,tim5) of p3---cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); +labels(1rr,5rr,7ll,8ll,10rr,11ll,2',3',4',5',6',7',8',9',10',11',12',13',14'); +endchar; + +iff known chars.math_superset_eq_double_not_vert: +bskchar "Negated superset or double equal to sign with vertical stroke"; +beginchar(chars.math_superset_eq_double_not_vert,12u#,math_axis#+.725x_height#+1.5u#+2.5rule_thickness#,.725x_height#+1.5u#+.5rule_thickness#-math_axis#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h-2rule_thickness; bot y4r=bot y5r=-d+3u+.45x_height+rule_thickness; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +lft x6=lft x8=u; rt x7=rt x9=w-u; bot y8l=bot y9l=-d; y6=y7=y8+.45x_height; +y10=h; x11=x10=.5w; .5[y11,bot y5r-rule_thickness]=.5[y6,y8]; +pos10(rule_thickness,0); pos11(rule_thickness,0); +bskpoints(6,7,hair,hair); bskpoints(8,9,hair,hair); +bskpoints(10,11,rule_thickness,rule_thickness); +z2'=whatever[z10l,z11l]=whatever[z5l,z4l]; +z3'=whatever[z10r,z11r]=whatever[z5l,z4l]; +z4'=whatever[z10l,z11l]=whatever[z4r,z5r]; +z5'=whatever[z10r,z11r]=whatever[z4r,z5r]; +z6'=whatever[z10l,z11l]=whatever[z6r,z7r]; +z7'=whatever[z10r,z11r]=whatever[z6r,z7r]; +z8'=whatever[z10r,z11r]=whatever[z6l,z7l]; +z9'=whatever[z10r,z11r]=whatever[z8r,z9r]; +z10'=whatever[z10r,z11r]=whatever[z8l,z9l]; +z11'=whatever[z10l,z11l]=whatever[z8l,z9l]; +z12'=whatever[z10l,z11l]=whatever[z8r,z9r]; +z13'=whatever[z10l,z11l]=whatever[z6l,z7l]; +z14'=whatever[z10l,z11l]=whatever[z1l,z2l]; +p0=z1rr--z2r...z3r...{left}z4r; +p1=z4l{right}...z3l...z2l---z1l; +p2=z11ll--z10l; +p3=z10rr--z11r; +(tim0,tim1)=p0 intersectiontimes p2; +(tim2,tim3)=p0 intersectiontimes p3; +(tim4,tim5)=p1 intersectiontimes p3; +oblu.more:=2f_obl; +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 + ---obl(5',4r,7')---obl(7',5',7r)---z7r..z7ll---obl(8',7l,9')---obl(9',8',9r) + ---z9r..z9ll---obl(10',9l,11r)---z11r..z11ll---obl(11',11l,8l)---z8l..z8rr + ---obl(12',8r,13')---obl(13',12',6l)---z6l..z6rr---obl(6',6r,4')---obl(4',6',5r) + ---z5rr..z5+2o*left..z5l---obl(2',5l,14')---obl(14',2',1l)---z1l + ..z1+2o*left..{right}cycle; +infill obl(3',10r,4l)---subpath(0,rundy(p1,tim4).zpet) of p1 + ..point rundy(p3,tim5) of p3---cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); +labels(1rr,5rr,7ll,8ll,10rr,11ll,2',3',4',5',6',7',8',9',10',11',12',13',14'); +endchar; + +iff known chars.math_superset_very: +bskchar "Very proper superset sign"; +beginchar(chars.math_superset_very,12u#,v_center(x_height#)); uni "0x22D1"; +italcorr h#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); pos8(rule_thickness,0); +pos9(rule_thickness,270); pos10(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=y8=.5[y1,y4]+o=.5[y6,y9]+o; y6=y7; y9=y10; +lft x1=lft x5=lft x6=lft x10=u+2o; rt x3r=w-u; rt x8r=x3l-2rule_thickness; y1l-top y6r=if not boldmath:2.25\\fi rule_thickness; +x2=x4=x3-(y2-y3); x7=x9=x8-(y7-y8); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10+2o*left..z10rr---z9r...z8r...z7r---z6rr..z6+2o*left..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,5rr,6rr,10rr); +endchar; + +iff known chars.math_superset_plus: +bskchar "Proper superset sign with plus"; +beginchar(chars.math_superset_plus,12u#,v_center(x_height#)); uni "non"; +italcorr h#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +x7=w-x6; y6=y7=.5[y8,y9]=math_axis; top y8=bot y2l-rule_thickness; +x8=x9=.5w; y8-y9=x7-x6; +bskpoints(6,7,hair,hair); bskpoints(9,8,.5hair,.5hair); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr,10,11,12,13); +endchar; + +iff known chars.math_superset_eq_plus: +bskchar "Superset or equal to sign with plus"; +beginchar(chars.math_superset_eq_plus,12u#,v_center(x_height#+3u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +lft x6=u; rt x7=w-u; y6l=y7l=-d; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw z6rr..z6l---z7ll..z7r---cycle; +pos8(rule_thickness,90); pos9(rule_thickness,90); +pos10(rule_thickness,0); pos11(rule_thickness,0); +x9=w-x8; y8=y9=.5[y10,y11]=y3-o; top y10=bot y2l-rule_thickness; +x10=x11=.5w; y10-y11=x9-x8; +bskpoints(8,9,hair,hair); bskpoints(11,10,.5hair,.5hair); +z12=whatever[z11l,z10l]=whatever[z8l,z9l]; +z13=whatever[z11r,z10r]=whatever[z8l,z9l]; +z14=whatever[z11r,z10r]=whatever[z8r,z9r]; +z15=whatever[z11l,z10l]=whatever[z8r,z9r]; +filldraw z8l---obl(12,8l,11l)---z11l..z11rr---obl(13,11r,9l)---z9ll..z9r--- + obl(14,9r,10r)---z10r..z10ll---obl(15,10l,8r)---z8rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11); labels(1rr,5rr,12,13,14,15); +endchar; + +iff known chars.math_superset_plus_below: +bskchar "Proper superset sign with plus below"; +beginchar(chars.math_superset_plus_below,12u#,v_center(1.75x_height#)); uni "0x2AC0"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; top y1r-bot y4r=x_height; y5=y4; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +y6=y7=.5[y8,y9]; top y8=bot y4r-rule_thickness; bot y9=-d; +x8=x9=.5[x7,x6]=.5w-.5u; y8-y9=x7-x6; +bskpoints(6,7,hair,hair); bskpoints(9,8,.5hair,.5hair); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr,10,11,12,13); +endchar; + +iff known chars.math_superset_times_below: +bskchar "Proper superset sign with times below"; +beginchar(chars.math_superset_times_below,12u#,v_center(1.75x_height#)); uni "0x2AC2"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; top y1r-bot y4r=x_height; y5=y4; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +pos6(rule_thickness,135); pos7(rule_thickness,135); +pos8(rule_thickness,45); pos9(rule_thickness,45); +x6r=x8l; x7l=x9r; .5[x6r,x7l]=.5w-.5u; x7l-x6r=y7r-y6l; +bot y6l=bot y9l=-d; top y7r=top y8r=bot y4r-rule_thickness; +bskpoints(6,7,hair,hair); bskpoints(9,8,.5hair,.5hair); +z10=whatever[z9l,z8l]=whatever[z6l,z7l]; +z11=whatever[z9r,z8r]=whatever[z6l,z7l]; +z12=whatever[z9r,z8r]=whatever[z6r,z7r]; +z13=whatever[z9l,z8l]=whatever[z6r,z7r]; +oblu:=2f_obl; +filldraw z6l---obl(10,6l,9l)---z9l..z9rr---obl(11,9r,7l)---z7ll..z7r--- + obl(12,7r,8r)---z8r..z8ll---obl(13,8l,6r)---z6rr..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr,10,11,12,13); +endchar; + +iff known chars.math_superset_tilde_below: +bskchar "Proper superset sign with tilde below"; +beginchar(chars.math_superset_tilde_below,12u#,v_center(1.45x_height#+rule_thickness#)); uni "0x2AC8"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +numeric spread; spread:=.45x_height; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; top y1r-bot y4r=x_height; y5=y4; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +top y7=bot y4r-rule_thickness; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +vlnka(6,7); +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_approx: +bskchar "Proper superset sign with approximately equal"; +beginchar(chars.math_superset_approx,12u#,v_center(1.75x_height#+rule_thickness#)); uni "0x2ACA"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +numeric spread; spread:=.45x_height; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; top y1r-bot y4r=.85x_height; y5=y4; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +top y7=bot y4r-rule_thickness; bot y8=-d; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +vlnka(6,7); +vlnka(8,9); +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_dot: +bskchar "Proper superset sign with dot"; +beginchar(chars.math_superset_dot,12u#,v_center(x_height#)); uni "0x2ABE"; +italcorr h#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o=y6+o; +lft x1=lft x5=u+2o; rt x3r=w-u; x6=.5w; +x2=x4=x3-(y2-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +dot(6); +penlabels(1,2,3,4,5); labels(1rr,5rr); +endchar; + +iff known chars.math_superset_closed: +bskchar "Closed superset sign"; +beginchar(chars.math_superset_closed,12u#,v_center(x_height#)); uni "0x2AD0"; +italcorr h#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +lft x1=lft x5=u; rt x3r=w-u; +x2=x4=x3-(y2-y3); x1l:=x5l:=x1r+(rule_thickness-currentbreadth); +filldraw obl(1r,5r,2r)---z2r...z3r...z4r---obl(5r,4r,1r)---cycle; +infill obl(1l,5l,2l)---z2l...z3l...z4l---obl(5l,4l,1l)---cycle; +penlabels(1,2,3,4,5); +endchar; + +iff known chars.math_superset_closed_eq: +bskchar "Closed superset or equal to sign"; +beginchar(chars.math_superset_closed_eq,12u#,v_center(x_height#+3u#)); uni "0x2AD2"; +italcorr h#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d+3u; y3=.5[y1,y4]+o; +lft x1=lft x5=u; rt x3r=w-u; +lft x6=u; rt x7=w-u; y6l=y7l=-d; +x2=x4=x3-(y2-y3); x1l:=x5l:=x1r+(rule_thickness-currentbreadth); +filldraw obl(1r,5r,2r)---z2r...z3r...z4r---obl(5r,4r,1r)---cycle; +infill obl(1l,5l,2l)---z2l...z3l...z4l---obl(5l,4l,1l)---cycle; +filldraw bskrule(6,7,hair,hair); +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_superset_open: +bskchar "Open superset sign"; +beginchar(chars.math_superset_open,12u#,v_center(x_height#)); uni "0x27C4"; +italcorr h#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos9(rule_thickness,90); pos10(rule_thickness,90); pos11(rule_thickness,0); +pos12(rule_thickness,270); pos13(rule_thickness,270); +y2=math_axis; lft x6=1.5u; x2-x6=y8-y4=2/3(y9l-y13l)-rule_thickness; +top y9r=top y10r=h; bot y12r=bot y13r=-d; y11=.5[y9,y12]+o; +lft x9=lft x13=u+2o; rt x11r=w-u; +x10=x12=x11-(y10-y11); +circle_points(rule_thickness); +bskpoints(9,10,hair,hair); bskpoints(13,12,hair,hair); +filldraw z9l---z10l...z11l...z12l---z13l..z13+2o*left..z13rr---z12r...z11r...z10r---z9rr..z9+2o*left..cycle; +filldraw draw_circle.l; +infill draw_circle.r; +penlabels(9,10,11,12,13); labels(9rr,13rr); +endchar; + +iff known chars.math_subset_superset: +bskchar "Subset above superset sign"; +beginchar(chars.math_subset_superset,12u#,v_center(1.75x_height#)); uni "0x2AD3"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); pos8(rule_thickness,0); +pos9(rule_thickness,270); pos10(rule_thickness,270); +top y1r=top y2r=h; y4=y5; y3=.5[y1,y4]-o; +y6=y7; bot y9r=bot y10r=-d; y8=.5[y6,y9]+o; .5[y4,y6]=math_axis; y4r-y6r=2rule_thickness; +rt x1=rt x5=w-u-2o; lft x3r=u; x2=x4=x3+(y2-y3); +lft x6=lft x10=u+2o; rt x8r=w-u; x7=x9=x8-(y7-y8); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10+2o*left..z10rr---z9r...z8r...z7r---z6rr..z6+2o*left..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,5rr,6rr,10rr); +endchar; + +iff known chars.math_superset_subset: +bskchar "Superset above subset sign"; +beginchar(chars.math_superset_subset,12u#,v_center(1.75x_height#)); uni "0x2AD4"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); pos8(rule_thickness,180); +pos9(rule_thickness,270); pos10(rule_thickness,270); +top y1r=top y2r=h; y4=y5; y3=.5[y1,y4]+o; +y6=y7; bot y9r=bot y10r=-d; y8=.5[y6,y9]-o; .5[y4,y6]=math_axis; y4r-y6r=2rule_thickness; +lft x1=lft x5=u+2o; rt x3r=w-u; x2=x4=x3-(y2-y3); +rt x6=rt x10=w-u-2o; lft x8r=u; x7=x9=x8+(y7-y8); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10+2o*right..z10rr---z9r...z8r...z7r---z6rr..z6+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,5rr,6rr,10rr); +endchar; + +iff known chars.math_subset_subset: +bskchar "Subset above subset sign"; +beginchar(chars.math_subset_subset,12u#,v_center(1.75x_height#)); uni "0x2AD5"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); pos8(rule_thickness,180); +pos9(rule_thickness,270); pos10(rule_thickness,270); +top y1r=top y2r=h; y4=y5; y3=.5[y1,y4]-o; +y6=y7; bot y9r=bot y10r=-d; y8=.5[y6,y9]-o; .5[y4,y6]=math_axis; y4r-y6r=2rule_thickness; +rt x1=rt x5=w-u-2o; lft x3r=u; x2=x4=x3+(y2-y3); +rt x6=rt x10=w-u-2o; lft x8r=u; x7=x9=x8+(y7-y8); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10+2o*right..z10rr---z9r...z8r...z7r---z6rr..z6+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,5rr,6rr,10rr); +endchar; + +iff known chars.math_superset_superset: +bskchar "Superset above superset sign"; +beginchar(chars.math_superset_superset,12u#,v_center(1.75x_height#)); uni "0x2AD6"; +italcorr h#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); pos8(rule_thickness,0); +pos9(rule_thickness,270); pos10(rule_thickness,270); +top y1r=top y2r=h; y4=y5; y3=.5[y1,y4]+o; +y6=y7; bot y9r=bot y10r=-d; y8=.5[y6,y9]+o; .5[y4,y6]=math_axis; y4r-y6r=2rule_thickness; +lft x1=lft x5=u+2o; rt x3r=w-u; x2=x4=x3-(y2-y3); +lft x6=lft x10=u+2o; rt x8r=w-u; x7=x9=x8-(y7-y8); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10+2o*left..z10rr---z9r...z8r...z7r---z6rr..z6+2o*left..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,5rr,6rr,10rr); +endchar; + +iff known chars.math_superset_beside_subset: +bskchar "Superset beside supset sign"; +beginchar(chars.math_superset_beside_subset,20u#,v_center(x_height#)); uni "0x2AD7"; +italcorr h#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); pos8(rule_thickness,180); +pos9(rule_thickness,270); pos10(rule_thickness,270); +top y1r=top y2r=top y6r=top y7r=h; bot y4r=bot y5r=bot y9r=bot y10r=-d; +y3=.5[y1,y4]+o; y8=.5[y6,y9]-o; +lft x1=lft x5=u+2o; x2=x4=x3-(y2-y3); +rt x6=rt x10=w-u-2o; x7=x9=x8+(y7-y8); +.5[x3,x8]=.5w; lft x8l-rt x3r=2rule_thickness; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +filldraw z1l---z2l...z3l...z4l---z5l..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +filldraw z6l---z7l...z8l...z9l---z10l..z10+2o*right..z10rr---z9r...z8r...z7r---z6rr..z6+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10); labels(1rr,5rr,6rr,5rr); +endchar; + +iff known chars.math_superset_join_subset: +bskchar "Superset beside and joined with supset sign"; +beginchar(chars.math_superset_join_subset,20u#,v_center(x_height#)); uni "0x2AD8"; +italcorr h#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); pos8(rule_thickness,180); +pos9(rule_thickness,270); pos10(rule_thickness,270); +pos11(rule_thickness,90); pos12(rule_thickness,90); +top y1r=top y2r=top y6r=top y7r=h; bot y4r=bot y5r=bot y9r=bot y10r=-d; +y3=.5[y1,y4]+o; y8=.5[y6,y9]-o; +lft x1=lft x5=u+2o; x2=x4=x3-(y2-y3); +rt x6=rt x10=w-u-2o; x7=x9=x8+(y7-y8); +.5[x3,x8]=.5w=.5[x11,x12]; lft x8l-rt x3r=2rule_thickness; x12=x7; +y11=y12=math_axis; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(6,7,hair,hair); bskpoints(10,9,hair,hair); +bskpoints(11,12,rule_thickness,rule_thickness); +p0:=z1l---z2l...z3l...z4l---z5l; +p1:=z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..{right}z1l; +p2:=reverse (z6l---z7l...z8l...z9l---z10l); +p3:=reverse (z10rr---z9r...z8r...z7r---z6rr..z6+2o*right..{left}z6l); +p4:=z12r--z11rr; +p5:=z11l--z12ll; +(tim0,tim1)=p0 intersectiontimes p4; +(tim2,tim3)=p0 intersectiontimes p5; +(tim4,tim5)=p1 intersectiontimes p5; +(tim6,tim7)=p3 intersectiontimes p5; +(tim8,tim9)=p2 intersectiontimes p5; +(tim10,tim11)=p2 intersectiontimes p4; +(tim12,tim13)=p3 intersectiontimes p4; +(tim14,tim15)=p1 intersectiontimes p4; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p4,tim1),infinity) of p4 + ..subpath(0,rundy(p5,tim3).zpet) of p5 + ..subpath(rundy(p0,tim2),infinity) of p0..z5+2o*left + ..subpath(0,rundy(p1,tim4).zpet) of p1.. .5[point tim5 of p5,point tim7 of p5] + ..subpath(rundy(p3,tim6),infinity) of p3..z10+2o*right + ..subpath(0,rundy(p2,tim8).zpet) of p2 + ..subpath(rundy(p5,tim9),infinity) of p5 + ..subpath(0,rundy(p4,tim11).zpet) of p4 + ..subpath(rundy(p2,tim10),infinity) of p2 + ..subpath(0,rundy(p3,tim12).zpet) of p3.. .5[point tim13 of p4,point tim15 of p4] + ..subpath(rundy(p1,tim14),infinity) of p1..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12); labels(1rr,5rr,6rr,5rr,11rr,12ll); +endchar; + +iff known chars.math_element: +bskchar "Element sign"; +beginchar(chars.math_element,9u#,v_center(x_height#+u#)); uni "0x2208"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l+stem,y6r)---z7r..z7l---(x3l+stem,y6l).. +subpath(rundy(p,tim2),infinity) of p..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_element_dot: +bskchar "Element sign with dot above"; +beginchar(chars.math_element_dot,9u#,.5x_height#+1.5u#+math_axis#+dot_size#,.5x_height#+.5u#-math_axis#); uni "0x22F5"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h-u-dot_size; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; rt x8=x2; bot y8=h-.5dot_size; +dot(8); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l+stem,y6r)---z7r..z7l---(x3l+stem,y6l).. +subpath(rundy(p,tim2),infinity) of p..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_element_bar: +bskchar "Element sign with bar above"; +beginchar(chars.math_element_bar,9u#,.5x_height#+1.5u#+math_axis#+2rule_thickness#,.5x_height#+.5u#-math_axis#); uni "0x22F6"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +top y1r=top y2r=h-u-2rule_thickness; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; lft x8=x6; rt x9=w-u; top y8r=top y9r=h; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw bskrule(8,9,hair,hair); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l+stem,y6r)---z7r..z7l---(x3l+stem,y6l).. +subpath(rundy(p,tim2),infinity) of p..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_element_underbar: +bskchar "Element sign with bar below"; +beginchar(chars.math_element_underbar,9u#,.5x_height#+.5u#+math_axis#,.5x_height#+1.5u#+2rule_thickness#-math_axis#); uni "0x22F8"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d+u+2rule_thickness; y3=.5[y1,y4]+o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; lft x8=x6; rt x9=w-u; bot y8l=bot y9l=-d; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw bskrule(8,9,hair,hair); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l+stem,y6r)---z7r..z7l---(x3l+stem,y6l).. +subpath(rundy(p,tim2),infinity) of p..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_element_neg: +bskchar "Negated element sign"; +beginchar(chars.math_element_neg,9u#,.5x_height#+2u#+math_axis#, .5x_height#+1.5u#-math_axis#); uni "0x2209"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h-1.5u; bot y4r=bot y5r=-d+u; y3=.5[y1,y4]+o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +top rt z8=(w-2u,h); bot lft z9=(2u,-d); +pos8(rule_thickness,angle(z8-z9)+90); pos9(rule_thickness,angle(z8-z9)+90); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(8,9,rule_thickness,rule_thickness); +p0:=z1l---z2l...z3l...z4l---z5l; +p1:=z8l--z9ll; +p2:=(x3l+stem,y6r)---z7r; +p3:=z7l--(x3l+stem,y6l); +p4:=z5rr---z4r...z3r...z2r---z1rr; +p5:=z9r--z8rr; +tim1=xpart(p0 intersectiontimes (z6r--z7r)); +tim2=xpart(p0 intersectiontimes (z6l--z7l)); +z10=p0 intersectionpoint p1; +z11=p1 intersectionpoint p2; +z12=p1 intersectionpoint p3; +(tim3,tim4-2)=p1 intersectiontimes subpath(2,infinity) of p0; z13= point tim3 of p1; +(tim5,tim6)=p1 intersectiontimes p4; +(tim7,tim8)=p5 intersectiontimes p4; +(tim9,tim10-2)=p5 intersectiontimes subpath(2,infinity) of p4; +(tim11-2,tim12)=subpath(2,infinity) of p4 intersectiontimes p1; +p6:=subpath (0, rundy(p,(tim1,4f_obl)).zpet) of p0..(x3l+stem,y6r)---z7r; +p7:=z7l---(x3l+stem,y6l)..subpath(rundy(p,(tim2,4f_obl)),infinity) of p0; +(tim13,tim14)=subpath(0,2) of p6 intersectiontimes p5; +(tim15-2,tim16)=subpath(2,infinity) of p6 intersectiontimes p5; +(tim17,tim18)=subpath(0,2) of p7 intersectiontimes p5; +(tim19-2,tim20)=subpath(2,infinity) of p7 intersectiontimes p5; +filldraw z1l---tobl(10,1l,11)---obl(11,10,7r)---z7r..z7l---obl(12,7l,13)---z13+oblu*unitvector(z12-z13) + ...subpath(rundy(p0,tim4),infinity) of p0..z5+2o*right + ..subpath(0,rundy(p4,tim6).zpet) of p4 + ..subpath(rundy(p1,tim5),infinity) of p1 + ..subpath(0,rundy(p5,tim7).zpet) of p5 + ..subpath(rundy(p4,tim8),rundy(p4,tim10).zpet) of p4 + ..subpath(rundy(p5,(tim9,f_obl)),infinity) of p5 + ..subpath(0,rundy(p1,tim12).zpet) of p1..{right}z1r..z1+2o*right..cycle; +infill subpath(rundy(p5,tim16),rundy(p5,tim14).zpet) of p5 + ..subpath(rundy(p6,tim13),rundy(p6,tim15).zpet) of p6..cycle; +infill subpath(rundy(p7,tim17),rundy(p7,tim19).zpet) of p7 + ..subpath(rundy(p5,tim20),rundy(p5,tim18).zpet) of p5..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr,10,11,12,13); +endchar; + +iff known chars.math_element_double: +bskchar "Element sign with double arm"; +beginchar(chars.math_element_double,9u#,v_center(x_height#+u#)); uni "0x22F9"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=3oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +y6=y7; y8=y9; .5[y6,y8]=y3; y6-y8=1/3(y1-y5); x7=x9=x1; x6=x8=x3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p0:=z1l---z2l...z3l...z4l---z5l; +p1:=z6r--z7r; +p2:=z7l--z6l; +p3:=z8r--z9r; +p4:=z9l--z8l; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3)=p0 intersectiontimes p2; +(tim4,tim5)=p0 intersectiontimes p3; +(tim6,tim7)=p0 intersectiontimes p4; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),infinity) of p1 + ..subpath(0,rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p0,(tim2,2f_obl)),rundy(p0,(tim4,2f_obl)).zpet) of p0 + ..subpath(rundy(p3,tim5),infinity) of p3 + ..subpath(0,rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p0,tim6),infinity) of p0 + ..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_element_small: +bskchar "Small element sign"; +beginchar(chars.math_element_small,8u#,v_center(.85x_height#)); uni "0x220A"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l+stem,y6r)---z7r..z7l---(x3l+stem,y6l).. +subpath(rundy(p,tim2),infinity) of p..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_element_small_bar: +bskchar "Small element sign with bar above"; +beginchar(chars.math_element_small_bar,8u#,.425x_height#+.75u#+2rule_thickness#+math_axis#,.425x_height#-math_axis#); uni "0x22F7"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +top y1r=top y2r=h-.75u-2rule_thickness; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +rt x1=rt x5=w-u-2o; lft x3r=u; +x2=x4=x3+(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; lft x8=x6; rt x9=w-u; top y8r=top y9r=h; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw bskrule(8,9,hair,hair); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l+stem,y6r)---z7r..z7l---(x3l+stem,y6l).. +subpath(rundy(p,tim2),infinity) of p..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_element_plus: +bskchar "Element sign with plus"; +beginchar(chars.math_element_plus,9u#,v_center(x_height#+u#)); uni "non"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; oblu.m:=f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; .5[y8,y9]=y3; +rt x1=rt x5=w-u-2o; lft x3r=u; x8=x9=2/3[x6,x7]; top y8=bot y1l-rule_thickness; +x2=x4=x3+(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); bskpoints(9,8,.5hair,.5hair); +z8'l=(x8l,y6r); z8'r=(x8r,y6r); +z9'l=(x8l,y6l); z9'r=(x8r,y6l); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l+stem,y6r)---obl(8'l,6r,8ll).m---z8ll + ..z8r---tobl(8'r,8r,7r).m---z7r..z7l---tobl(9'r,7l,9rr).m---z9rr..z9l + ---obl(9'l,9l,6l).m---(x3l+stem,y6l)..subpath(rundy(p,tim2),infinity) of p + ..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,8',9,9'); labels(1rr,5rr,8ll,9rr); +endchar; + +iff known chars.math_element_bar: +bskchar "Element sign with bar at end"; +beginchar(chars.math_element_bar,9u#,v_center(x_height#+u#)); uni "0x22F3"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; oblu.m:=f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; .5[y8,y9]=y3; +rt x1=rt x5=w-u-2o; lft x3r=u; x8=x9=x7; top y8=.5[y6,y1]; +x2=x4=x3+(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); bskpoints(9,8,.5hair,.5hair); +z8'l=(x8l,y6r); z8'r=(x8r,y6r); +z9'l=(x8l,y6l); z9'r=(x8r,y6l); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l+stem,y6r)---obl(8'l,6r,8ll).m---z8ll + ..z8r---z9rr..z9l---obl(9'l,9l,6l).m---(x3l+stem,y6l) + ..subpath(rundy(p,tim2),infinity) of p + ..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,8',9,9'); labels(1rr,5rr,8ll,9rr); +endchar; + +iff known chars.math_element_small_bar: +bskchar "Small element sign with bar at end"; +beginchar(chars.math_element_small_bar,8u#,v_center(.85x_height#)); uni "0x22F4"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; oblu.m:=f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; .5[y8,y9]=y3; +rt x1=rt x5=w-u-2o; lft x3r=u; x8=x9=x7; top y8=.5[y6,y1]; +x2=x4=x3+(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); bskpoints(9,8,.5hair,.5hair); +z8'l=(x8l,y6r); z8'r=(x8r,y6r); +z9'l=(x8l,y6l); z9'r=(x8r,y6l); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l+stem,y6r)---obl(8'l,6r,8ll).m---z8ll + ..z8r---z9rr..z9l---obl(9'l,9l,6l).m---(x3l+stem,y6l) + ..subpath(rundy(p,tim2),infinity) of p + ..z5+2o*right..z5rr---z4r...z3r...z2r---z1rr..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,7,8,8',9,9'); labels(1rr,5rr,8ll,9rr); +endchar; + +iff known chars.math_element_long: +bskchar "Element sign with long horizontal"; +beginchar(chars.math_element_long,11u#,v_center(x_height#+u#)); uni "0x22F2"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,180); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +rt x1=rt x5=w-u-2o; lft x3r=3u; +x2=x4=x3+(y2-y3); +y6=y7=y3; x7=x1; lft x6=u; x6'r=x6'l=.5[x3r,x6]; y6'r=y6r; y6'l=y6l; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p0:=z1l---z2l...z3l...z4l---z5l; +p1:=z5rr---z4r...z3r...z2r---z1rr; +tim1=xpart(p0 intersectiontimes (z6r--z7r)); +tim2=xpart(p0 intersectiontimes (z6l--z7l)); +tim3=xpart(p1 intersectiontimes (z6r--z7r)); +tim4=xpart(p1 intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p0,tim1).zpet) of p0..(x3l+stem,y6r)---z7r..z7l---(x3l+stem,y6l) + ..subpath(rundy(p0,tim2),infinity) of p0..z5+2o*right + ..subpath(0,rundy(p1,tim4).zpet) of p1..z6'l---z6l..z6r---z6'r + ..subpath(rundy(p1,tim3),infinity) of p1..z1+2o*right..cycle; +penlabels(1,2,3,4,5,6,6',7); labels(1rr,5rr); +endchar; + +iff known chars.math_element_down: +bskchar "Downwards element sign"; +beginchar(chars.math_element_down,11u#,v_center(x_height#)); uni "0x2AD9"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,0); pos7(rule_thickness,0); +rt x1r=rt x2r=w-u; lft x4r=lft x5r=u; x3=.5[x1,x4]+o; +bot y1=bot y5=-d-o; top y3r=h+o; +y2=y4=y3+(x3-x2); +x6=x7=x3; y7=y1; y6=y3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x6r,y3l-stem)---z7r..z7l---(x6l,y3l-stem).. +subpath(rundy(p,tim2),infinity) of p..z5+2o*down..z5rr---z4r...z3r...z2r---z1rr..z1+2o*down..cycle; +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_element_up: +bskchar "Upwards element sign"; +beginchar(chars.math_element_up,11u#,v_center(x_height#)); uni "0x27D2"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,180); pos2(rule_thickness,180); pos3(rule_thickness,-90); +pos4(rule_thickness,0); pos5(rule_thickness,0); +pos6(rule_thickness,180); pos7(rule_thickness,180); +lft x1r=lft x2r=u; rt x4r=rt x5r=w-u; x3=.5[x1,x4]-o; +top y1=top y5=h+o; bot y3r=-d-o; +y2=y4=y3-(x2-x3); +x6=x7=x3; y7=y1; y6=y3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x6r,y3l+stem)---z7r..z7l---(x6l,y3l+stem) + ..subpath(rundy(p,tim2),infinity) of p..z5+2o*up..z5rr---z4r...z3r...z2r + ---z1rr..z1+2o*up..cycle; +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_sqelement: +bskchar "Square element sign (Z notation bag membership)"; +beginchar(chars.math_sqelement,10u#,v_center(x_height#+u#)); uni "0x22FF"; +italcorr h#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +pos5(rule_thickness,90); pos6(rule_thickness,90); +top y1r=top y2r=h; bot y3r=bot y4r=-d; +rt x1=rt x4=w-u; +lft x2=lft x3=u; +y5=y6=.5[y1,y3]+o; x6=x1; x2l:=x3l:=x5=x2+rule_thickness-currentbreadth; +bskpoints(1,2,hair,hair); bskpoints(4,3,hair,hair); +filldraw z1rr---obl(2r,1r,3r)---obl(3r,2r,4r)---z4rr..z4l---obl(3l,4l,5l) + ---obl(5l,3l,6l)---z6l..z6r---obl(5r,6r,2l)---obl(2l,5r,1l)---z1l..cycle; +penlabels(1,2,3,4,5,6); labels(1rr,4rr); +endchar; + +iff known chars.math_ownership: +bskchar "Ownership sign"; +beginchar(chars.math_ownership,9u#,v_center(x_height#+u#)); uni "0x220B"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l-stem,y6r)---z7r..z7l---(x3l-stem,y6l).. +subpath(rundy(p,tim2),infinity) of p..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_ownership_bar: +bskchar "Ownership sign with bar above"; +beginchar(chars.math_ownership_bar,9u#,.5x_height#+1.5u#+math_axis#+2rule_thickness#,.5x_height#+.5u#-math_axis#); uni "0x22FD"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +top y1r=top y2r=h-u-2rule_thickness; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; lft x8=u; rt x9=x6; top y8r=top y9r=h; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw bskrule(8,9,hair,hair); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l-stem,y6r)---z7r..z7l---(x3l-stem,y6l).. +subpath(rundy(p,tim2),infinity) of p..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_ownership_neg: +bskchar "Negated ownership sign"; +beginchar(chars.math_ownership_neg,9u#,.5x_height#+2u#+math_axis#, .5x_height#+1.5u#-math_axis#); uni "0x220C"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h-1.5u; bot y4r=bot y5r=-d+u; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +top rt z8=(w-2u,h); bot lft z9=(2u,-d); +pos8(rule_thickness,angle(z8-z9)-90); pos9(rule_thickness,angle(z8-z9)-90); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +bskpoints(8,9,rule_thickness,rule_thickness); +p0:=z1l---z2l...z3l...z4l---z5l; +p1:=z8l--z9ll; +p2:=(x3l-stem,y6r)---z7r; +p3:=z7l--(x3l-stem,y6l); +p4:=z5rr---z4r...z3r...z2r---z1rr; +p5:=z9r--z8rr; +tim1=xpart(p0 intersectiontimes (z6r--z7r)); +tim2=xpart(p0 intersectiontimes (z6l--z7l)); +(tim21,tim22)=p0 intersectiontimes p1; +(tim23,tim24)=p1 intersectiontimes p2; +z12=p1 intersectionpoint p3; +(tim3,tim4-2)=p1 intersectiontimes subpath(2,infinity) of p0; z13= point tim3 of p1; +(tim5,tim6)=p1 intersectiontimes p4; z10=point tim5 of p1; +(tim7,tim8)=p5 intersectiontimes p4; +(tim9,tim10-2)=p5 intersectiontimes subpath(2,infinity) of p4; +(tim11-2,tim12)=subpath(2,infinity) of p4 intersectiontimes p1; +p6:=subpath (0, rundy(p,(tim1,4f_obl)).zpet) of p0..(x3l-stem,y6r)---z7r; +p7:=z7l---(x3l-stem,y6l)..subpath(rundy(p,(tim2,4f_obl)),infinity) of p0; +(tim13,tim14)=subpath(0,2) of p6 intersectiontimes p5; +(tim15-2,tim16)=subpath(2,infinity) of p6 intersectiontimes p5; +(tim17,tim18)=subpath(0,2) of p7 intersectiontimes p5; +(tim19-2,tim20)=subpath(2,infinity) of p7 intersectiontimes p5; +filldraw subpath(0,rundy(p0,tim21).zpet) of p0 + ..subpath(rundy(p1,tim22),rundy(p1,tim23).zpet) of p1 + ..subpath(rundy(p2,tim24),infinity) of p2..z7l---obl(12,7l,13)---z13+oblu*unitvector(z12-z13) + ...subpath(rundy(p0,tim4),infinity) of p0..z5+2o*left..{right}z5r + ---tobl(10,5r,9ll)---z9ll + ..subpath(0,rundy(p5,tim7).zpet) of p5 + ..subpath(rundy(p4,tim8),rundy(p4,tim10).zpet) of p4 + ..subpath(rundy(p5,tim9),infinity) of p5 + ..subpath(0,rundy(p1,tim12).zpet) of p1 + ..subpath(rundy(p4,tim11),infinity) of p4{left}..z1+2o*left..{right}cycle; +infill subpath(rundy(p5,tim16),rundy(p5,tim14).zpet) of p5 + ..subpath(rundy(p6,tim13),rundy(p6,tim15).zpet) of p6..cycle; +infill subpath(rundy(p7,tim17),rundy(p7,tim19).zpet) of p7 + ..subpath(rundy(p5,tim20),rundy(p5,tim18).zpet) of p5..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr,10,11,12,13); +endchar; + +iff known chars.math_ownership_small: +bskchar "Small ownership sign"; +beginchar(chars.math_ownership_small,8u#,v_center(.85x_height#)); uni "0x220D"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l-stem,y6r)---z7r..z7l---(x3l-stem,y6l).. +subpath(rundy(p,tim2),infinity) of p..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr); +endchar; + +iff known chars.math_ownership_small_bar: +bskchar "Small ownership sign with bar above"; +beginchar(chars.math_ownership_small_bar,8u#,.425x_height#+.75u#+2rule_thickness#+math_axis#,.425x_height#-math_axis#); uni "0x22FE"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,90); pos9(rule_thickness,90); +top y1r=top y2r=h-.75u-2rule_thickness; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-u; +x2=x4=x3-(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; lft x8=u; rt x9=x6; top y8r=top y9r=h; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw bskrule(8,9,hair,hair); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l-stem,y6r)---z7r..z7l---(x3l-stem,y6l).. +subpath(rundy(p,tim2),infinity) of p..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr); +endchar; + +iff known chars.math_ownership_plus: +bskchar "Ownership sign with plus"; +beginchar(chars.math_ownership_plus,9u#,v_center(x_height#+u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; .5[y8,y9]=y3; +lft x1=lft x5=u+2o; rt x3r=w-u; x8=x9=2/3[x6,x7]; top y8=bot y1l-rule_thickness; +x2=x4=x3-(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); bskpoints(9,8,.5hair,.5hair); +z8'l=(x8l,y6r); z8'r=(x8r,y6r); +z9'l=(x8l,y6l); z9'r=(x8r,y6l); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l-stem,y6r)---obl(8'r,6r,8r).m---z8r..z8ll + ---tobl(8'l,8ll,7r).m---z7r..z7l---tobl(9'l,7l,9l).m---z9l..z9rr + ---obl(9'r,9rr,6l).m---(x3l-stem,y6l)..subpath(rundy(p,tim2),infinity) of p + ..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,5,6,7,8,8',9,9'); labels(1rr,5rr,8ll,9rr); +endchar; + +iff known chars.math_ownership_bar: +bskchar "Ownership sign with bar at end"; +beginchar(chars.math_ownership_bar,9u#,v_center(x_height#+u#)); uni "0x22FB"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; .5[y8,y9]=y3; +lft x1=lft x5=u+2o; rt x3r=w-u; x8=x9=x7; top y8=.5[y6,y1]; +x2=x4=x3-(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); bskpoints(9,8,.5hair,.5hair); +z8'l=(x8l,y6r); z8'r=(x8r,y6r); +z9'l=(x8l,y6l); z9'r=(x8r,y6l); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l-stem,y6r)---obl(8'r,6r,8r).m---z8r..z8ll + ---z9l..z9rr---obl(9'r,9rr,6l).m---(x3l-stem,y6l) + ..subpath(rundy(p,tim2),infinity) of p + ..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,5,6,7,8,8',9,9'); labels(1rr,5rr,8ll,9rr); +endchar; + +iff known chars.math_ownership_small_bar: +bskchar "Small ownership sign with bar at end"; +beginchar(chars.math_ownership_small_bar,8u#,v_center(.85x_height#)); uni "0x22FC"; +adjust_fit(0,0); +pickup tiny.nib; +path p; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos8(rule_thickness,0); pos9(rule_thickness,0); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; .5[y8,y9]=y3; +lft x1=lft x5=u+2o; rt x3r=w-u; x8=x9=x7; top y8=.5[y6,y1]; +x2=x4=x3-(y2-y3); +y6=y7=y3; x7=x1; x6=x3r; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); bskpoints(9,8,.5hair,.5hair); +z8'l=(x8l,y6r); z8'r=(x8r,y6r); +z9'l=(x8l,y6l); z9'r=(x8r,y6l); +p:=z1l---z2l...z3l...z4l---z5l; +tim1=xpart(p intersectiontimes (z6r--z7r)); +tim2=xpart(p intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p,tim1).zpet) of p..(x3l-stem,y6r)---obl(8'r,6r,8r).m---z8r..z8ll + ---z9l..z9rr---obl(9'r,9rr,6l).m---(x3l-stem,y6l) + ..subpath(rundy(p,tim2),infinity) of p + ..z5+2o*left..z5rr---z4r...z3r...z2r---z1rr..z1+2o*left..cycle; +penlabels(1,2,3,4,5,6,7,8,8',9,9'); labels(1rr,5rr,8ll,9rr); +endchar; + +iff known chars.math_ownership_long: +bskchar "Ownership sign with long horizontal"; +beginchar(chars.math_ownership_long,11u#,v_center(x_height#+u#)); uni "0x22FA"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +pos4(rule_thickness,270); pos5(rule_thickness,270); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1r=top y2r=h; bot y4r=bot y5r=-d; y3=.5[y1,y4]+o; +lft x1=lft x5=u+2o; rt x3r=w-3u; +x2=x4=x3-(y2-y3); +y6=y7=y3; x7=x1; rt x6=w-u; x6'r=x6'l=.5[x3r,x6]; y6'r=y6r; y6'l=y6l; +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); +p0:=z1l---z2l...z3l...z4l---z5l; +p1:=z5rr---z4r...z3r...z2r---z1rr; +tim1=xpart(p0 intersectiontimes (z6r--z7r)); +tim2=xpart(p0 intersectiontimes (z6l--z7l)); +tim3=xpart(p1 intersectiontimes (z6r--z7r)); +tim4=xpart(p1 intersectiontimes (z6l--z7l)); +filldraw subpath (0, rundy(p0,tim1).zpet) of p0..(x3l-stem,y6r)---z7r..z7l---(x3l-stem,y6l).. +subpath(rundy(p0,tim2),infinity) of p0..z5+2o*left..subpath(0,rundy(p1,tim4).zpet) of p1..z6'l---z6l..z6r---z6'r..subpath(rundy(p1,tim3),infinity) of p1..z1+2o*left..cycle; +penlabels(1,2,3,4,5,6,6',7); labels(1rr,5rr); +endchar; + +iff known chars.symbol_smile: +bskchar "Smile"; +beginchar(chars.symbol_smile,17u#,v_center(.6x_height#)); uni "0x2323"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +lft x1=u; top y1=h; z2=z1+hair*down; +rt x3=w-u; y3=y1+.5apex_o; +bot y4=-d-o; +p:=z2..{dir70}z3; +x4=xpart(directionpoint right of p); +filldraw z2..z4..{dir70}z3{dir-140}..z1&z1{dir-100}..z2&cycle; +labels(1,2,3,4); +endchar; + +iff known chars.symbol_smile_eyes: +bskchar "Smile with eyes"; +beginchar(chars.symbol_smile_eyes,17u#,.65[asc_height#,x_height#],.3x_height#-math_axis#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +lft x1=u; top y1=math_axis+.3x_height; z2=z1+hair*down; +rt x3=w-u; y3=y1+.5apex_o; +bot y4=-d-o; +p:=z2..{dir70}z3; +x4=xpart(directionpoint right of p); +filldraw z2..z4..{dir70}z3{dir-140}..z1&z1{dir-100}..z2&cycle; +top y5=h-.5dot_size-o; y6=y5+o; +.5[x5,x6]=x4; x5=.5[x1,x4]; +dot(5); dot(6); +labels(1,2,3,4,5,6); +endchar; + +iff known chars.symbol_smile_simple: +bskchar "Simple smile"; +beginchar(chars.symbol_smile_simple,13u#,v_center(.6x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +lft x1=u; top y1r=h; rt x2=w-u; y2=y1+.5apex_o; +filldraw z2r{dir-120}..z1r&z1r--z1l{dir-60}..z2l&z2l--cycle; +penlabels(1,2); +endchar; + +iff known chars.symbol_frown: +bskchar "Frown"; +beginchar(chars.symbol_frown,17u#,v_center(.5x_height#)); uni "0x2322"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +lft x1=u; bot y1=-d; z2=z1+hair*up; +rt x3=w-u; y3=y1-.5apex_o; +top y4=h+o; +p:=z2..{dir-70}z3; +x4=xpart(directionpoint right of p); +filldraw z2..z4..{dir-70}z3{dir140}..z1&z1{dir100}..z2&cycle; +labels(1,2,3,4); +endchar; + +iff known chars.symbol_frown_simple: +bskchar "Simple frown"; +beginchar(chars.symbol_frown_simple,13u#,v_center(.5x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +lft x1=u; bot y1l=-d; rt x2=w-u; y2=y1-.5apex_o; +filldraw z2r{dir120}..z1r&z1r--z1l{dir60}..z2l&z2l--cycle; +penlabels(1,2); +endchar; + +iff known chars.symbol_flat: +bskchar "Musical flat sign"; +beginchar(chars.symbol_flat,7u#,asc_height#,0); uni "0x266D"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2.5oblu; +pos1(hair,0); pos2(hair,0); +pos3(curve,0); pos4(hair,90); pos5(vair,135); +lft x1l=u; x2=x1; top y1=h; bot y2=-d; x5l=x1r; y5=.5[y4,y3]; +rt x3r=w-u; y3=.75x_height; top y4r=x_height+o; x4=.5[x3,x2r]; +p0=z2r+up--z1r; +p1=z2r..{up}z3r..z4r..z5r; +p2=z5l..z4l..z3l{down}..z2r; +(tim1,tim2)=p0 intersectiontimes p1; +tim3=xpart(p0 intersectiontimes p2); +filldraw z1l---z2l--subpath (0, rundy(p1,tim2).zpet) of p1 + ..subpath(rundy(p0,tim1),infinity) of p0..cycle; +infill subpath (rundy(p2,0),rundy(p2,length p2).zpet) of p2 + ..subpath(rundy(p0,0),rundy(p0,tim3).zpet) of p0..cycle; +penlabels(1,2,3,4,5); +endchar; + +iff known chars.symbol_sharp: +bskchar "Musical sharp sign"; +beginchar(chars.symbol_sharp,7.5u#,asc_height#,0); uni "0x266F"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x3=x4; .5[x1,x3]=.5w; x3=2u; +top y1r=top y3r+stem=h; y2l-stem=y4l=0; +lft x5=lft x7=u; rt x6=rt x8=w-u; +y5=y6-stem; y7=y8-stem; .5[y5,y7]=.5h; y5-y7=.6x_height; +pos1(hair,180); pos2(hair,180); +pos3(hair,180); pos4(hair,180); +pos5(stem,90); pos6(stem,90); +pos7(stem,90); pos8(stem,90); +bskpoints(2,1,rule_thickness,0); bskpoints(4,3,0,rule_thickness); +bskpoints(6,5,rule_thickness,0); bskpoints(8,7,0,rule_thickness); +z10=whatever[z1r,z2r]=whatever[z6r,z5r]; +z11=whatever[z3l,z4l]=whatever[z6r,z5r]; +z12=whatever[z3r,z4r]=whatever[z6r,z5r]; +z13=whatever[z3r,z4r]=whatever[z6l,z5l]; +z14=whatever[z3r,z4r]=whatever[z7r,z8r]; +z15=whatever[z3r,z4r]=whatever[z7l,z8l]; +z16=whatever[z3l,z4l]=whatever[z7l,z8l]; +z17=whatever[z1r,z2r]=whatever[z7l,z8l]; +z18=whatever[z2l,z1l]=whatever[z7l,z8l]; +z19=whatever[z1l,z2l]=whatever[z7r,z8r]; +z20=whatever[z1l,z2l]=whatever[z5l,z6l]; +z21=whatever[z1l,z2l]=whatever[z6r,z5r]; +filldraw z1r---obl(10,1r,11)---obl(11,10,3l)---z3l..z3r---obl(12,3l,5r)---z5r--z5l + ---obl(13,5l,14)---obl(14,13,7r)---z7r--z7l---obl(15,7l,4l)---z4rr--z4l + ---obl(16,4l,17)---obl(17,16,2r)---z2r..z2l---obl(18,2l,8l)---z8l--z8r + ---obl(19,8r,20)---obl(20,19,6l)---z6l--z6r---tobl(21,6r,1ll)---z1ll..cycle; +z0=(x10,y20); z0'=(x11,y13); z0''=(x16,y14); z0'''=(x17,y19); +infill obl(0,0''',0')---obl(0',0,0'')---obl(0'',0',0''')---obl(0''',0'',0)---cycle; +penlabels(1,2,3,4,5,6,7,8); labels(0,0',0'',0''',10,11,12,13,14,15,16,17,18,19,20,21); +endchar; + +iff known chars.symbol_natural: +bskchar "Musical natural sign"; +beginchar(chars.symbol_natural,6.5u#,asc_height#,comma_depth#); uni "0x266E"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,180); pos2(hair,180); +pos3(hair,180); pos4(hair,180); +pos5(stem,90); pos6(stem,90); +pos7(stem,90); pos8(stem,90); +top y1=h; bot y4=-d; y1-y2=y3-y4; +lft x1r=u; rt x4l=w-u; x2=x1; x3=x4; +y6l=y5r=x_height; y3=y6r; x6=x3; x5=x1l; x8=x4r; +y7l=y2; z8-z7=z6-z5; +bskpoints(2,1,rule_thickness,rule_thickness); +bskpoints(4,3,rule_thickness,rule_thickness); +x5'=x7'; x6'=x8'; x5'-x5=x6-x6'=rule_thickness-currentbreadth; +z5'=whatever[z5l,z6l]; z6'=whatever[z5l,z6l]; +z7'=whatever[z7r,z8r]; z8'=whatever[z7r,z8r]; +filldraw z1r---obl(2r,1r,8l)---obl(8l,2r,4r)---z4rr..z4l---obl(3l,4l,5r)---obl(5r,3l,1l)---z1ll..cycle; +infill obl(5',6',7')---obl(7',5',8')---obl(8',7',6')---obl(6',8',5')---cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1ll,4rr,5',6',7',8'); +endchar; + +iff known chars.math_virgule: +bskchar "Virgule"; +beginchar(chars.math_virgule,8u#,v_center(16u#)); uni "0x2215"; +adjust_fit(0,0); +pickup rule.nib; +top rt z1=(w-u,h); bot lft z2=(u,-d); +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_backslash: +bskchar "Backslash"; +beginchar(chars.math_backslash,8u#,v_center(16u#)); uni "0x2216"; +adjust_fit(0,0); +pickup rule.nib; +top lft z1=(u,h); bot rt z2=(w-u,-d); +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_zero_slash: +bskchar "Zero width slash"; +beginchar(chars.math_zero_slash,12u#,asc_height#,asc_depth#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +top rt z1=(w-2u,h); lft x2=2u; .5[y1,y2]=math_axis; +pickup tiny.nib; +pos1(rule_thickness,angle(z2-z1)+90); pos2(rule_thickness,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); zero_width; +endchar; + +iff known chars.math_maps_to: +bskchar "Zero width maps to"; +beginchar(chars.math_maps_to,12u#,v_center(.5x_height#)); uni "non"; +adjust_fit(0,0); +oblu:=1.5oblu; +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +lft x1l=u; x2=x1; x3=x1r; y3=.5[y1,y2]=math_axis; +top y1=h; z4=z3+max(oblu,.5u)*right; +bskpoints(2,1,rule_thickness,rule_thickness); +filldraw z1ll---z2l..z2r---obl(3l,2r,4l)---z4l--z4r---obl(3r,4r,1r)---z1r..cycle; +penlabels(1,2,3,4); labels(1ll); zero_width; +endchar; + +charscription(5u,body_height,paren_depth)( +x1=x2=.5w; top y1=h; bot y2=-d; +pos1(rule_thickness,0); pos2(rule_thickness,0); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +); + +iff known chars.sign_vertical: +bskchar "Vertical line sign"; +beginchar(chars.sign_vertical,5u#,body_height#,paren_depth#); uni "0x007C"; +italcorr body_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.math_vertical: +bskchar "Vertical line"; +beginchar(chars.math_vertical,5u#,body_height#,paren_depth#); uni "0x2223"; +italcorr body_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.math_vertical_cute: +bskchar "Cute vertical line"; +beginchar(chars.math_vertical_cute,5u#,x_height#,0); uni "non"; +italcorr body_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=.5w; top y1=h+o; bot y2=-d-o; +pos1(rule_thickness,0); pos2(rule_thickness,0); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); labels(1ll,2rr); +endchar; + +iff known chars.math_vertical_neg: +bskchar "Negated vertical line"; +beginchar(chars.math_vertical_neg,5u#,body_height#,paren_depth#); uni "0x2224"; +italcorr body_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=.5w; top y1=h; bot y2=-d; +x3=.5u; x4=w-x3; .5[y3,y4]=math_axis; y4-y3=2u; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +bskpoints(2,1,rule_thickness,rule_thickness); bskpoints(3,4,rule_thickness,rule_thickness); +x3'l=x3'r=x1l; x4'r=x4'l=x1r; +z3'l=whatever[z3l,z4l]; z3'r=whatever[z3r,z4r]; +z4'l=whatever[z3l,z4l]; z4'r=whatever[z3r,z4r]; +filldraw z1ll---obl(3'l,1l,3l)---z3l..z3rr---tobl(3'r,3rr,2l)---z2l..z2rr---obl(4'r,2r,4r) + ---z4r..z4ll---tobl(4'l,4ll,1r)---z1r..cycle; +penlabels(1,2,3,3',4,4'); labels(1ll,2rr,3rr,4ll); +endchar; + +iff known chars.math_vertical_horizontal: +bskchar "Vertical line with horizontal stroke"; +beginchar(chars.math_vertical_horizontal,7.5u#,body_height#,paren_depth#); uni "0x27CA"; +italcorr body_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=.5w; top y1=h; bot y2=-d; +x3=u; x4=w-x3; y3=y4=math_axis; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,-90); pos4(rule_thickness,-90); +bskpoints(2,1,rule_thickness,rule_thickness); bskpoints(3,4,rule_thickness,rule_thickness); +x3'l=x3'r=x1l; x4'r=x4'l=x1r; +z3'l=whatever[z3l,z4l]; z3'r=whatever[z3r,z4r]; +z4'l=whatever[z3l,z4l]; z4'r=whatever[z3r,z4r]; +filldraw z1ll---obl(3'l,1l,3l)---z3l..z3rr---tobl(3'r,3rr,2l)---z2l..z2rr---obl(4'r,2r,4r) + ---z4r..z4ll---tobl(4'l,4ll,1r)---z1r..cycle; +penlabels(1,2,3,3',4,4'); labels(1ll,2rr,3rr,4ll); +endchar; + +iff known chars.math_vertical_revneg: +bskchar "Reverse-negated vertical line"; +beginchar(chars.math_vertical_revneg,5u#,body_height#,paren_depth#); uni "0x2AEE"; +italcorr body_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=.5w; top y1=h; bot y2=-d; +x3=.5u; x4=w-x3; .5[y3,y4]=math_axis; y3-y4=2u; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +bskpoints(2,1,rule_thickness,rule_thickness); bskpoints(3,4,rule_thickness,rule_thickness); +x3'l=x3'r=x1l; x4'r=x4'l=x1r; +z3'l=whatever[z3l,z4l]; z3'r=whatever[z3r,z4r]; +z4'l=whatever[z3l,z4l]; z4'r=whatever[z3r,z4r]; +filldraw z1ll---obl(3'l,1l,3l)---z3l..z3rr---tobl(3'r,3rr,2l)---z2l..z2rr---obl(4'r,2r,4r) + ---z4r..z4ll---tobl(4'l,4ll,1r)---z1r..cycle; +penlabels(1,2,3,3',4,4'); labels(1ll,2rr,3rr,4ll); +endchar; + +iff known chars.math_vertical_neg_cute: +bskchar "Negated cute vertical line"; +beginchar(chars.math_vertical_neg_cute,5u#,x_height#,0); uni "non"; +italcorr body_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=.5w; top y1=h+o; bot y2=-d-o; +x3=.5u; x4=w-x3; .5[y3,y4]=math_axis; y4-y3=2u; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,angle(z3-z4)+90); pos4(rule_thickness,angle(z3-z4)+90); +bskpoints(2,1,rule_thickness,rule_thickness); bskpoints(3,4,rule_thickness,rule_thickness); +x3'l=x3'r=x1l; x4'r=x4'l=x1r; +z3'l=whatever[z3l,z4l]; z3'r=whatever[z3r,z4r]; +z4'l=whatever[z3l,z4l]; z4'r=whatever[z3r,z4r]; +filldraw z1ll---obl(3'l,1l,3l)---z3l..z3rr---tobl(3'r,3rr,2l)---z2l..z2rr---obl(4'r,2r,4r) + ---z4r..z4ll---tobl(4'l,4ll,1r)---z1r..cycle; +penlabels(1,2,3,3',4,4'); labels(1ll,2rr,3rr,4ll); +endchar; + +iff known chars.sign_broken_bar: +bskchar "Broken bar sign"; +beginchar(chars.sign_broken_bar,5u#,body_height#,paren_depth#); uni "0x00A6"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2=x3=x4=.5w; top y1=h; bot y4=-d; .5[y2,y3]=.5[h,-d]; bot y2-top y3=3rule_thickness; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +filldraw bskrule(3,4,rule_thickness,rule_thickness); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_slanted_double: +bskchar "Double slanted vertical line"; +beginchar(chars.math_slanted_double,8u#,body_height#,paren_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +.5[x1,x4]=.5w; top y1=top y3=h; bot y2=bot y4=-d; +x1-x2=x3-x4=x3-x1=max(3curve,3u); +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +filldraw bskrule(1,2,rule_thickness,rule_thickness); +filldraw bskrule(4,3,rule_thickness,rule_thickness); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_vertical_double: +bskchar "Double vertical line"; +beginchar(chars.math_vertical_double,8u#,body_height#,paren_depth#); uni "0x2225"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x3=x4; .5[x1,x3]=.5w; top y1=top y3=h; bot y2=bot y4=-d; +x3-x1=max(3curve,3u); +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +filldraw bskrule(1,2,rule_thickness,rule_thickness); +filldraw bskrule(4,3,rule_thickness,rule_thickness); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_vertical_double: +bskchar "Double vertical line (norm)"; +beginchar(chars.math_vertical_double,6u#,body_height#,paren_depth#); uni "0x2016"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x3=x4; .5[x1,x3]=.5w; top y1=top y3=h; bot y2=bot y4=-d; +x3-x1=2u+rule_thickness; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +filldraw bskrule(1,2,rule_thickness,rule_thickness); +filldraw bskrule(4,3,rule_thickness,rule_thickness); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_vertical_double_cute: +bskchar "Cute double vertical line"; +beginchar(chars.math_vertical_double_cute,8u#,x_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x3=x4; .5[x1,x3]=.5w; top y1=top y3=h+o; bot y2=bot y4=-d-o; +x3-x1=max(3curve,3u); +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +filldraw bskrule(1,2,rule_thickness,rule_thickness); +filldraw bskrule(4,3,rule_thickness,rule_thickness); +penlabels(1,2,3,4); labels(1rr,2ll,4rr,3ll); +endchar; + +iff known chars.math_vertical_double_neg: +bskchar "Negated double vertical line"; +beginchar(chars.math_vertical_double_neg,8u#,body_height#,paren_depth#); uni "0x2226"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x3=x4; .5[x1,x3]=.5w; top y1=top y3=h; bot y2=bot y4=-d; +x3-x1=max(3curve,3u); +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +x5=.5u; x6=w-x5; .5[y5,y6]=math_axis; y6-y5=4u; +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +x5'l=x5'r=x1l; x6'r=x6'l=x1r; x5''l=x5''r=x3l; x6''l=x6''r=x3r; +z5'l=whatever[z5l,z6l]; z5'r=whatever[z5r,z6r]; +z5''l=whatever[z5l,z6l]; z5''r=whatever[z5r,z6r]; +z6'l=whatever[z5l,z6l]; z6'r=whatever[z5r,z6r]; +z6''l=whatever[z5l,z6l]; z6''r=whatever[z5r,z6r]; +bskpoints(1,2,rule_thickness,rule_thickness); +bskpoints(4,3,rule_thickness,rule_thickness); +bskpoints(5,6,rule_thickness,rule_thickness); +filldraw z1l---obl(5'l,1l,5l)---z5l..z5rr---tobl(5'r,5rr,2l)---z2ll..z2r + ---obl(6'r,2r,6r)---obl(5''r,5r,4l)---z4l..z4rr---obl(6''r,4r,6r) + ---z6r..z6ll---tobl(6''l,6ll,3r)---z3r..z3ll---obl(5''l,3l,5l) + ---obl(6'l,6l,1r)---z1rr..cycle; +penlabels(1,2,3,4,5,5',5'',6,6',6''); labels(1rr,2ll,4rr,3ll,5rr,6ll); +endchar; + +iff known chars.math_vertical_double_neg_cute: +bskchar "Negated cute double vertical line"; +beginchar(chars.math_vertical_double_neg_cute,8u#,x_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x3=x4; .5[x1,x3]=.5w; top y1=top y3=h+o; bot y2=bot y4=-d-o; +x3-x1=max(3curve,3u); +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +x5=.5u; x6=w-x5; .5[y5,y6]=math_axis; y6-y5=4u; +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +x5'l=x5'r=x1l; x6'r=x6'l=x1r; x5''l=x5''r=x3l; x6''l=x6''r=x3r; +z5'l=whatever[z5l,z6l]; z5'r=whatever[z5r,z6r]; +z5''l=whatever[z5l,z6l]; z5''r=whatever[z5r,z6r]; +z6'l=whatever[z5l,z6l]; z6'r=whatever[z5r,z6r]; +z6''l=whatever[z5l,z6l]; z6''r=whatever[z5r,z6r]; +bskpoints(1,2,rule_thickness,rule_thickness); +bskpoints(4,3,rule_thickness,rule_thickness); +bskpoints(5,6,rule_thickness,rule_thickness); +filldraw z1l---obl(5'l,1l,5l)---z5l..z5rr---tobl(5'r,5rr,2l)---z2ll..z2r + ---obl(6'r,2r,6r)---obl(5''r,5r,4l)---z4l..z4rr---obl(6''r,4r,6r) + ---z6r..z6ll---tobl(6''l,6ll,3r)---z3r..z3ll---obl(5''l,3l,5l) + ---obl(6'l,6l,1r)---z1rr..cycle; +penlabels(1,2,3,4,5,5',5'',6,6',6''); labels(1rr,2ll,4rr,3ll,5rr,6ll); +endchar; + +iff known chars.math_parallel_hbar: +bskchar "Parallel sign with horizontal bar"; +beginchar(chars.math_parallel_hbar,8u#,body_height#,paren_depth#); uni "0x2AF2"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x3=x4; .5[x1,x3]=.5w; top y1=top y3=h; bot y2=bot y4=-d; +x3-x1=max(3curve,3u); +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +x5=.5u; x6=w-x5; y5=y6=math_axis; +pos5(rule_thickness,-90); pos6(rule_thickness,-90); +bskpoints(5,6,rule_thickness,rule_thickness); +x5'l=x5'r=x1l; x6'r=x6'l=x1r; x5''l=x5''r=x3l; x6''l=x6''r=x3r; +z5'l=whatever[z5l,z6l]; z5'r=whatever[z5r,z6r]; +z5''l=whatever[z5l,z6l]; z5''r=whatever[z5r,z6r]; +z6'l=whatever[z5l,z6l]; z6'r=whatever[z5r,z6r]; +z6''l=whatever[z5l,z6l]; z6''r=whatever[z5r,z6r]; +bskpoints(1,2,rule_thickness,rule_thickness); +bskpoints(4,3,rule_thickness,rule_thickness); +bskpoints(5,6,rule_thickness,rule_thickness); +filldraw z1l---obl(5'l,1l,5l)---z5l..z5rr---tobl(5'r,5rr,2l)---z2ll..z2r + ---obl(6'r,2r,6r)---obl(5''r,5r,4l)---z4l..z4rr---obl(6''r,4r,6r) + ---z6r..z6ll---tobl(6''l,6ll,3r)---z3r..z3ll---obl(5''l,3l,5l) + ---obl(6'l,6l,1r)---z1rr..cycle; +penlabels(1,2,3,4,5,5',5'',6,6',6''); labels(1rr,2ll,4rr,3ll,5rr,6ll); +endchar; + +iff known chars.math_parallel_tilde: +bskchar "Parallel sign with tilde"; +beginchar(chars.math_parallel_tilde,10u#,body_height#,paren_depth#); uni "0x2AF3"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +x1=x2; x3=x4; .5[x1,x3]=.5w; top y1=top y3=h; bot y2=bot y4=-d; +x3-x1=max(3curve,3u); +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +.5[y5,y6]=math_axis; spread:=.45x_height; +bskpoints(1,2,rule_thickness,rule_thickness); +bskpoints(4,3,rule_thickness,rule_thickness); +vlnka(5,6).nodraw; +p0=_vlnka; +p1=z1l--z2ll; +p2=z2r--z1rr; +p3=z3ll--z4l; +p4=z4rr--z3r; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3)=p0 intersectiontimes p2; +(tim4,tim5)=p0 intersectiontimes p3; +(tim6,tim7)=p0 intersectiontimes p4; +(tim8-4,tim9)=subpath(4,infinity) of p0 intersectiontimes p4; +(tim10-4,tim11)=subpath(4,infinity) of p0 intersectiontimes p3; +(tim12-4,tim13)=subpath(4,infinity) of p0 intersectiontimes p2; +(tim14-4,tim15)=subpath(4,infinity) of p0 intersectiontimes p1; +filldraw subpath(0,rundy(p0,(tim0,2oblu)).zpet) of p0 + ..subpath(rundy(p1,(tim1,2oblu)),infinity) of p1 + ..subpath(0,rundy(p2,(tim3,2oblu)).zpet) of p2 + ..subpath(rundy(p0,(tim2,2oblu)),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p3,tim5),infinity) of p3 + ..subpath(0,rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p0,tim6),rundy(p0,(tim8,2oblu)).zpet) of p0 + ..subpath(rundy(p4,(tim9,2oblu)),infinity) of p4 + ..subpath(0,rundy(p3,(tim11,2oblu)).zpet) of p3 + ..subpath(rundy(p0,(tim10,2oblu)),rundy(p0,tim12).zpet) of p0 + ..subpath(rundy(p2,tim13),infinity) of p2 + ..subpath(0,rundy(p1,tim15).zpet) of p1 + ..subpath(rundy(p0,tim14),infinity) of p0..cycle; +penlabels(1,2,3,4,5,5',5'',6,6',6''); labels(1rr,2ll,4rr,3ll); +endchar; + +iff known chars.math_vertical_triple: +bskchar "Triple vertical line"; +beginchar(chars.math_vertical_triple,9u#,body_height#,paren_depth#); uni "0x2AF4"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x3=x4; x5=x6; .5[x1,x5]=.5w; top y1=top y3=top y5=h; bot y2=bot y4=bot y6=-d; +x5-x3=x3-x1=2u+rule_thickness; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,0); pos6(rule_thickness,0); +filldraw bskrule(1,2,rule_thickness,rule_thickness); +filldraw bskrule(3,4,0,0); +filldraw bskrule(6,5,rule_thickness,rule_thickness); +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_vertical_triple_hbar: +bskchar "Triple vertical line with horizontal bar"; +beginchar(chars.math_vertical_triple_hbar,11u#,body_height#,paren_depth#); uni "0x2AF5"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,0); pos6(rule_thickness,0); +pos7(rule_thickness,90); pos8(rule_thickness,90); +x1=x2; x3=x4; x5=x6; .5[x1,x5]=.5w; top y1=top y3=top y5=h; bot y2=bot y4=bot y6=-d; +x5-x3=x3-x1=2u+rule_thickness; +lft x7=u; rt x8=w-u; y7=y8=math_axis; +bskpoints(1,2,rule_thickness,rule_thickness); +bskpoints(6,5,rule_thickness,rule_thickness); +bskpoints(7,8,rule_thickness,rule_thickness); +y10=y11=y12=y13=y14=y15=y7l; y16=y17=y18=y19=y20=y21=y7r; +x10=x21=x1l; x11=x20=x1r; x12=x19=x3l; x13=x18=x3r; x14=x17=x5l; x15=x16=x5r; +filldraw z7l---obl(10,7l,2l)---z2ll..z2r---tobl(11,2ll,12)---tobl(12,11,4l)---z4l + ..z4r---tobl(13,4r,14)---tobl(14,13,6l)---z6l..z6rr---tobl(15,6r,8ll)---z8ll + ..z8r---tobl(16,8r,5r)---z5r..z5ll---tobl(17,5l,18)--tobl(18,17,3r)---z3r..z3l + ---tobl(19,3l,20)---tobl(20,19,1r)---z1rr..z1l---tobl(21,1l,7rr)---z7rr..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(2ll,6rr,10,11,12,13,14,15,16,17,18,19,21); +endchar; + +iff known chars.math_vertical_triple_op: +bskchar "N-ary triple vertical bar operator"; +beginchar(chars.math_vertical_triple_op,12u#,v_center(10/6dh#)); uni "0x2AFC"; +adjust_fit(0,0); +pickup tiny.nib; +x1=x2; x3=x4; x5=x6; .5[x1,x5]=.5w; top y1=top y3=top y5=h; bot y2=bot y4=bot y6=-d; +x5-x3=x3-x1=3u+rule_thickness; +pos1(stem,0); pos2(stem,0); +pos3(stem,0); pos4(stem,0); +pos5(stem,0); pos6(stem,0); +filldraw bskrule(1,2,rule_thickness,rule_thickness); +filldraw bskrule(3,4,0,0); +filldraw bskrule(6,5,rule_thickness,rule_thickness); +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_uptack_double: +bskchar "Double up tack"; +beginchar(chars.math_uptack_double,12u#,asc_height#,0); uni "0x2AEB"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,90); pos6(rule_thickness,90); +x1=x2; x3=x4; .5[x1,x3]=.5w; top y1=top y3=h; x3-x1=max(3curve,3u); +y2=y4=y5r; bot y5l=bot y6l=-d; lft x5=u; x6=w-x5; +bskpoints(1,2,rule_thickness,rule_thickness); bskpoints(4,3,rule_thickness,rule_thickness); +bskpoints(5,6,rule_thickness,rule_thickness); +filldraw z1l---tobl(2l,1l,5rr)---z5rr..z5l---z6ll..z6r---obl(4r,6r,3r)---z3r + ..z3ll---obl(4l,3l,2r)---obl(2r,4r,1r)---z1rr..cycle; +penlabels(1,2,3,4,5,6); labels(1rr,3ll,5rr,6ll); +endchar; + +iff known chars.math_times: +bskchar "Times operator sign"; +beginarithchar(chars.math_times); uni "0x00D7"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_times_uni: +bskchar "N-ary times operator sign (for Unicode)"; +beginchar(chars.math_times_uni,15u#,v_center(10/6dh#)); uni "0x2A09"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.2oblu; +pos1(stem,135); pos2(stem,135); +pos3(stem,45); pos4(stem,45); +lft x1r=lft x3l=u; rt x2l=rt x4r=w-u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,stem,stem); bskpoints(4,3,.5stem,.5stem); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_times_underbar: +bskchar "Times operator sign with underbar"; +beginchar(chars.math_times_underbar,13u#,5.5u#+math_axis#,5.5u#+rule_thickness#-math_axis#); uni "0x2A31"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +pos9(rule_thickness,90); pos10(rule_thickness,90); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u+rule_thickness; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +x9=x1; x10=x4; bot y9l=bot y10l=-d; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +filldraw bskrule(9,10,hair,0); +penlabels(1,2,3,4,9,10); labels(5,6,7,8); +endchar; + +iff known chars.math_times_semicircle_left: +bskchar "Times operator sign in left half circle"; +beginchar(chars.math_times_semicircle_left,11u#,v_center(11u#)); uni "0x2A34"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.2oblu; +pos9(rule_thickness,135); pos10(rule_thickness,135); +pos11(rule_thickness,45); pos12(rule_thickness,45); +lft x6=u+.5rule_thickness; .5[x6,x2]=.5[x11,x10]=.5w+u; y8-y4=x2-x6; +x9r=x11l; x10l=x12r; lft x9r=3u+rule_thickness; +y9l=y12l; y10r=y11r; y2=.5[y10r,y9l]=math_axis; y11r-y9l=x10l-x11l; +bskpoints(9,10,hair,hair); bskpoints(12,11,.5hair,.5hair); +circle_points(rule_thickness); +z13=whatever[z12l,z11l]=whatever[z9l,z10l]; +z14=whatever[z12r,z11r]=whatever[z9l,z10l]; +z15=whatever[z12r,z11r]=whatever[z9r,z10r]; +z16=whatever[z12l,z11l]=whatever[z9r,z10r]; +filldraw z9l---obl(13,9l,12l)---z12l..z12rr---obl(14,12r,10l)---z10ll..z10r--- + obl(15,10r,11r)---z11r..z11ll---obl(16,11l,9r)---z9rr..cycle; +filldraw subpath(4,8) of (draw_circle.l)..reverse subpath(4,8) of (draw_circle.r)..cycle; +penlabels(9,10,11,12); labels(13,14,15,16); +endchar; + +iff known chars.math_times_semicircle_right: +bskchar "Times operator sign in right half circle"; +beginchar(chars.math_times_semicircle_right,11u#,v_center(11u#)); uni "0x2A35"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.2oblu; +pos9(rule_thickness,135); pos10(rule_thickness,135); +pos11(rule_thickness,45); pos12(rule_thickness,45); +rt x2=w-u-.5rule_thickness; .5[x6,x2]=.5[x11,x10]=.5w-u; y8-y4=x2-x6; +x9r=x11l; x10l=x12r; lft x9r=u+rule_thickness; +y9l=y12l; y10r=y11r; y2=.5[y10r,y9l]=math_axis; y11r-y9l=x10l-x11l; +bskpoints(9,10,hair,hair); bskpoints(12,11,.5hair,.5hair); +circle_points(rule_thickness); +z13=whatever[z12l,z11l]=whatever[z9l,z10l]; +z14=whatever[z12r,z11r]=whatever[z9l,z10l]; +z15=whatever[z12r,z11r]=whatever[z9r,z10r]; +z16=whatever[z12l,z11l]=whatever[z9r,z10r]; +filldraw z9l---obl(13,9l,12l)---z12l..z12rr---obl(14,12r,10l)---z10ll..z10r--- + obl(15,10r,11r)---z11r..z11ll---obl(16,11l,9r)---z9rr..cycle; +filldraw subpath(0,4) of (draw_circle.l)..reverse subpath(0,4) of (draw_circle.r)..cycle; +penlabels(9,10,11,12); labels(13,14,15,16); +endchar; + +iff known chars.math_times_circle_circumflex: +bskchar "Times operator sign in circle with circumflex"; +beginchar(chars.math_times_circle_circumflex,13u#,5.5u#+math_axis#+.5x_height#,5.5u#-math_axis#); uni "0x2A36"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.2oblu; +pos9(rule_thickness,135); pos10(rule_thickness,135); +pos11(rule_thickness,45); pos12(rule_thickness,45); +rt x2=w-u-.5rule_thickness; .5[x6,x2]=.5[x11,x10]=x18-o=.5w; y8-y4=x2-x6; y2=.5[y11,y12]; +x9r=x11l; x10l=x12r; lft x9r=3u+rule_thickness; +y9l=y12l; y10r=y11r; .5[y10r,y9l]=math_axis; y11r-y9l=x10l-x11l; +bskpoints(9,10,hair,hair); bskpoints(12,11,.5hair,.5hair); +circle_points(rule_thickness); +z13=whatever[z12l,z11l]=whatever[z9l,z10l]; +z14=whatever[z12r,z11r]=whatever[z9l,z10l]; +z15=whatever[z12r,z11r]=whatever[z9r,z10r]; +z16=whatever[z12l,z11l]=whatever[z9r,z10r]; +filldraw draw_circle.l; +infill draw_circle.r; +filldraw z9l---obl(13,9l,12l)---z12l..z12rr---obl(14,12r,10l)---z10ll..z10r--- + obl(15,10r,11r)---z11r..z11ll---obl(16,11l,9r)---z9rr..cycle; +circumflex(17,18,19); +penlabels(9,10,11,12); labels(13,14,15,16); +endchar; + +iff known chars.math_times_circle_double: +bskchar "Times operator sign in double circle"; +beginarithchar(chars.math_times_circle_double); uni "0x2A37"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.2oblu; +rt x2=w-u; .5[x6,x2]=.5w; y8-y4=x2-x6; y2=math_axis; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +save x,y; +rt x2=w-u-1.5rule_thickness; .5[x6,x2]=.5w; y8-y4=x2-x6; y2=math_axis; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +pos9(rule_thickness,135); pos10(rule_thickness,135); +pos11(rule_thickness,45); pos12(rule_thickness,45); +x9r=x11l; x10l=x12r; lft x9r=3.5u+rule_thickness; .5[x11,x10]=.5w; +y9l=y12l; y10r=y11r; .5[y10r,y9l]=math_axis; y11r-y9l=x10l-x11l; +bskpoints(9,10,hair,hair); bskpoints(12,11,.5hair,.5hair); +z13=whatever[z12l,z11l]=whatever[z9l,z10l]; +z14=whatever[z12r,z11r]=whatever[z9l,z10l]; +z15=whatever[z12r,z11r]=whatever[z9r,z10r]; +z16=whatever[z12l,z11l]=whatever[z9r,z10r]; +filldraw z9l---obl(13,9l,12l)---z12l..z12rr---obl(14,12r,10l)---z10ll..z10r--- + obl(15,10r,11r)---z11r..z11ll---obl(16,11l,9r)---z9rr..cycle; +penlabels(9,10,11,12); labels(13,14,15,16); +endchar; + +iff known chars.math_times_dot: +bskchar "Times operator sign with dot"; +beginarithchar(chars.math_times_dot); uni "0x2A30"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +x9=.5w; top y9+.5dot_size=h+o; +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +dot(9); +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_times_bot: +bskchar "Times operator with bottom closed"; +beginarithchar(chars.math_times_bot); uni "0x2A32"; +pickup tiny.nib; +oblu:=2.2oblu; +pos0(rule_thickness,0); +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +x0=.5w; y0l=y1l; y1'=y4'=y1r; +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +z1'=whatever[z1l,z5]; z4'=whatever[z4l,z5]; +filldraw z1l---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3l---obl(8,3l,1r)---z1r..cycle; +infill obl(5,1',4')---obl(4',5,1')---obl(1',4',5)---cycle; +penlabels(0,1,2,3,4); labels(1',4',5,6,7,8); +endchar; + +iff known chars.math_times_left: +bskchar "Times operator with left vertical"; +beginarithchar(chars.math_times_left); uni "0x22C9"; +pickup tiny.nib; +oblu:=2.2oblu; +pos0(rule_thickness,0); +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +y0=math_axis; x0l=x3l; x1'=x3'=x0r; +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +z1'=whatever[z1r,z8]; z3'=whatever[z3l,z8]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3l---z1r..cycle; +infill obl(8,1',3')---obl(3',8,1')---obl(1',3',8)---cycle; +penlabels(0,1,2,3,4); labels(1',3',5,6,7,8); +endchar; + +iff known chars.math_times_left_black: +bskchar "Times operator with left half black"; +beginarithchar(chars.math_times_left_black); uni "0x29D4"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3l---z1r..cycle; +penlabels(1,2,3,4); labels(5,6,7); +endchar; + +iff known chars.math_times_right: +bskchar "Times operator with right vertical"; +beginarithchar(chars.math_times_right); uni "0x22CA"; +pickup tiny.nib; +oblu:=2.2oblu; +pos0(rule_thickness,0); +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +y0=math_axis; x0r=x4r; x2'=x4'=x0l; +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +z2'=whatever[z2l,z6]; z4'=whatever[z4r,z6]; +filldraw z1l---obl(5,1l,4l)---z4l..z4r---z2l..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +infill obl(6,2',4')---obl(4',6,2')---obl(2',4',6)---cycle; +penlabels(0,1,2,3,4); labels(2',4',5,6,7,8); +endchar; + +iff known chars.math_times_right_black: +bskchar "Times operator with right half black"; +beginarithchar(chars.math_times_right_black); uni "0x29D5"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1r,z2r]; +z7=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4r---z2l..z2r--- + obl(6,2r,3r)---z3r..z3ll---obl(7,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(5,6,7); +endchar; + +iff known chars.math_times_verticals: +bskchar "Times operator with both vertical (bowtie)"; +beginarithchar(chars.math_times_verticals); uni "0x22C8"; +pickup tiny.nib; +oblu:=2.2oblu; +pos0(rule_thickness,0); pos0'(rule_thickness,0); +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +y0=y0'=math_axis; x0r=x4r; x0'l=x3l; x1'=x3'=x0'r; x2'=x4'=x0l; +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +z1'=whatever[z1r,z8]; z3'=whatever[z3l,z8]; +z2'=whatever[z2l,z6]; z4'=whatever[z4r,z6]; +filldraw z1l---obl(5,1l,4l)---z4l..z4r---z2l..z2r--- + obl(7,2r,3r)---z3r..z3l---z1r..cycle; +infill obl(8,1',3')---obl(3',8,1')---obl(1',3',8)---cycle; +infill obl(6,2',4')---obl(4',6,2')---obl(2',4',6)---cycle; +penlabels(0,0',1,2,3,4); labels(1',2',3',4',5,6,7,8); +endchar; + +iff known chars.math_join: +bskchar "Join"; +beginchar(chars.math_join,16u#,asc_height#,0); uni "0x2A1D"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.2oblu; +pos0(rule_thickness,0); pos0'(rule_thickness,0); +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=u; rt x2l=rt x4r=w-u; +bot y1l=bot y4l=-d; top y2r=top y3r=h; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +y0=y0'=math_axis; x0r=x4r; x0'l=x3l; x1'=x3'=x0'r; x2'=x4'=x0l; +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +z1'=whatever[z1r,z8]; z3'=whatever[z3l,z8]; +z2'=whatever[z2l,z6]; z4'=whatever[z4r,z6]; +filldraw z1l---obl(5,1l,4l)---z4l..z4r---z2l..z2r--- + obl(7,2r,3r)---z3r..z3l---z1r..cycle; +infill obl(8,1',3')---obl(3',8,1')---obl(1',3',8)---cycle; +infill obl(6,2',4')---obl(4',6,2')---obl(2',4',6)---cycle; +penlabels(0,0',1,2,3,4); labels(1',2',3',4',5,6,7,8); +endchar; + +iff known chars.math_bowtie_black: +bskchar "Black bowtie"; +beginarithchar(chars.math_bowtie_black); uni "0x29D3"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4r---z2l..z2r--- + obl(6,2r,3r)---z3r..z3l---z1r..cycle; +penlabels(1,2,3,4); labels(5,6); +endchar; + +iff known chars.math_bowtie_left_black: +bskchar "Bowtie with left half black"; +beginarithchar(chars.math_bowtie_left_black); uni "0x29D1"; +pickup tiny.nib; +oblu:=2.2oblu; +pos0(rule_thickness,0); +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +y0=math_axis; x0r=x4r; x2'=x4'=x0l; +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z2'=whatever[z2l,z6]; z4'=whatever[z4r,z6]; +filldraw z1l---obl(5,1l,4l)---z4l..z4r---z2l..z2r--- + obl(7,2r,3r)---z3r..z3l---z1r..cycle; +infill obl(6,2',4')---obl(4',6,2')---obl(2',4',6)---cycle; +penlabels(0,1,2,3,4); labels(2',4',5,6,7); +endchar; + +iff known chars.math_bowtie_right_black: +bskchar "Bowtie with right half black"; +beginarithchar(chars.math_bowtie_right_black); uni "0x29D2"; +pickup tiny.nib; +oblu:=2.2oblu; +pos0(rule_thickness,0); +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +y0=math_axis; x0l=x3l; x1'=x3'=x0r; +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1r,z2r]; +z7=whatever[z4l,z3l]=whatever[z1r,z2r]; +z1'=whatever[z1r,z7]; z3'=whatever[z3l,z7]; +filldraw z1l---obl(5,1l,4l)---z4l..z4r---z2l..z2r--- + obl(6,2r,3r)---z3r..z3l---z1r..cycle; +infill obl(7,1',3')---obl(3',7,1')---obl(1',3',7)---cycle; +penlabels(0,1,2,3,4); labels(1',3',5,6,7); +endchar; + +iff known chars.math_semiproduct_left: +bskchar "Left semidirect product"; +beginarithchar(chars.math_semiproduct_left); uni "0x22CB"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_semiproduct_right: +bskchar "Right semidirect product"; +beginarithchar(chars.math_semiproduct_right); uni "0x22CC"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r---z1rr..cycle; +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_times_BB: +bskchar "Blackboard-bold times operator sign"; +beginarithchar(chars.math_times_BB); uni "non"; +pickup tiny.nib; +path p; +oblu:=2.2oblu; +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(cap_stem,45); pos4(cap_stem,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +bskpoints(1,2,cap_stem,cap_stem); bskpoints(4,3,.5cap_stem,.5cap_stem); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +infill z4l..z4rr---z3r..z3ll---cycle; +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_product_cartesian: +bskchar "Cartesian product operator sign"; +beginchar(chars.math_product_cartesian,8u#,v_center(asc_height#)); uni "0x2A2F"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2.2oblu; +lft x1r=lft x3l=u; rt x2r=rt x4l=w-u-.5rule_thickness; +bot y1r-.25rule_thickness=bot y4l=-d+u; top y2r=top y3l+.25rule_thickness=h-u; +pos1(rule_thickness,angle(z2r-z1r)+90); pos2(rule_thickness,angle(z2r-z1r)+90); +pos3(rule_thickness,angle(z4l-z3l)+90); pos4(rule_thickness,angle(z4l-z3l)+90); +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +iff known chars.math_smash: +bskchar "Smash product sign"; +compute_spread(.45x_height#,.55x_height#); +beginarithchar(chars.math_smash); uni "0x2A33"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,45); pos2(rule_thickness,45); +pos3(rule_thickness,45); pos4(rule_thickness,45); +pos5(rule_thickness,-45); pos6(rule_thickness,-45); +pos7(rule_thickness,-45); pos8(rule_thickness,-45); +top y1=top y5=h; bot y4=bot y8=-d; lft x3=lft x6=u; rt x2=rt x7=w-u; +z3-z1=spread*dir225; z2-z1=z4-z3; z6-z5=z8-z7; z7-z5=spread*dir-45; +bskpoints(1,2,hair,0); bskpoints(4,3,hair,0); +bskpoints(5,6,rule_thickness,rule_thickness); bskpoints(8,7,rule_thickness,rule_thickness); +z1'=whatever[z5l,z6l]=whatever[z1r,z2r]; +z2'=whatever[z5r,z6r]=whatever[z1r,z2r]; +z3'=whatever[z5r,z6r]=whatever[z1l,z2l]; +z4'=whatever[z5r,z6r]=whatever[z3r,z4r]; +z5'=whatever[z5r,z6r]=whatever[z3l,z4l]; +z6'=whatever[z5l,z6l]=whatever[z3l,z4l]; +z7'=whatever[z5l,z6l]=whatever[z3r,z4r]; +z8'=whatever[z5l,z6l]=whatever[z1l,z2l]; +z9'=whatever[z7l,z8l]=whatever[z1r,z2r]; +z10'=whatever[z7r,z8r]=whatever[z1r,z2r]; +z11'=whatever[z7r,z8r]=whatever[z1l,z2l]; +z12'=whatever[z7r,z8r]=whatever[z3r,z4r]; +z13'=whatever[z7r,z8r]=whatever[z3l,z4l]; +z14'=whatever[z7l,z8l]=whatever[z3l,z4l]; +z15'=whatever[z7l,z8l]=whatever[z3r,z4r]; +z16'=whatever[z7l,z8l]=whatever[z1l,z2l]; +filldraw z1r---obl(1',1r,5l)---z5l..z5rr---obl(2',5r,9')---obl(9',2',7l)---z7ll..z7r + ---obl(10',7r,2r)---z2r..z2ll---obl(11',2l,12')---obl(12',11',4r)---z4r..z4l + ---obl(13',4l,8r)---z8rr..z8l---obl(14',8l,5')---obl(5',4l,6r)---z6r..z6ll + ---obl(6',6l,3l)---z3ll..z3r---obl(7',3r,8')---obl(8',7',1l)---z1l..cycle; +infill obl(3',16',4')---obl(4',3',15')---obl(15',4',16')---obl(16',15',3')---cycle; +penlabels(1,2,3,4,5,6,7,8); +labels(2ll,3ll,5rr,6ll,7ll,8rr,1',2',3',4',5',6',7',8',9',10',11',12',13',14',15',16'); +endchar; + +iff known chars.math_plus_minus: +bskchar "Plus-minus sign"; +beginarithchar(chars.math_plus_minus); uni "0x00B1"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos9(rule_thickness,90); pos10(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; x9=x1; x10=x2; +x3=x4=.5w; top y3=h; y4=y9r; y9=y10; bot y9l=-d; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +bskpoints(9,10,hair,hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---obl(4l,5,9r)---z9rr..z9l---z10ll..z10r---obl(4r,10r,6) + ---obl(6,4r,2l)---z2ll..z2r---obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4,9,10); labels(5,6,7,8); +endchar; + +iff known chars.math_minus_plus: +bskchar "Minus-plus sign"; +beginarithchar(chars.math_minus_plus); uni "0x2213"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos9(rule_thickness,90); pos10(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; x9=x1; x10=x2; +x3=x4=.5w; y3=y9l; y4=-d; y9=y10; top y9r=h; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +bskpoints(9,10,hair,hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l...z4rr---obl(6,4r,2l)---z2ll..z2r + ---obl(7,2r,3r)---obl(3r,7,10l)---z10ll..z10r---z9rr..z9l + ---obl(3l,9l,8)---obl(8,3l,1r)---z1rr..cycle; +penlabels(1,2,3,4,9,10); labels(5,6,7,8); +endchar; + +iff known chars.math_equals_plus: +bskchar "Equals-plus sign"; +beginchar(chars.math_equals_plus,13u#,v_center(11u#+.45x_height#)); uni "0x2A71"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos9(rule_thickness,90); pos10(rule_thickness,90); +pos11(rule_thickness,90); pos12(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=.5[y3,y4]; x9=x11=x1; x10=x12=x2; +x3=x4=.5w; y3=y9l; y4=-d; y9=y10=y11-.45x_height; y12=y11; top y11r=h; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +bskpoints(10,9,hair,0); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---z4l...z4rr---obl(6,4r,2l)---z2ll..z2r + ---obl(7,2r,3r)---obl(3r,7,10l)---z10l..z10rr---z9r..z9ll + ---obl(3l,9l,8)---obl(8,3l,1r)---z1rr..cycle; +filldraw bskrule(11,12,hair,0); +penlabels(1,2,3,4,9,10,11,12); labels(5,6,7,8); +endchar; + +iff known chars.math_plus_equals: +bskchar "Plus-equals sign"; +beginchar(chars.math_plus_equals,13u#,v_center(11u#+.45x_height#)); uni "0x2A72"; +pickup tiny.nib; +oblu:=2.2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos9(rule_thickness,90); pos10(rule_thickness,90); +pos11(rule_thickness,90); pos12(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=.5[y3,y4]; x9=x11=x1; x10=x12=x2; +x3=x4=.5w; top y3=h; y4=y9r; y9=y10=y11+.45x_height; y11=y12; bot y11l=-d; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +bskpoints(9,10,hair,0); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +filldraw z1l---obl(5,1l,4l)---obl(4l,5,9r)---z9rr..z9l---z10ll..z10r---obl(4r,10r,6) + ---obl(6,4r,2l)---z2ll..z2r---obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +filldraw bskrule(12,11,hair,0); +penlabels(1,2,3,4,9,10,11,12); labels(5,6,7,8); +endchar; + +iff known chars.math_minus: +bskchar "Minus sign"; +beginarithchar(chars.math_minus); uni "0x2212"; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +filldraw bskrule(1,2,hair,hair); +penlabels(1,2); +endchar; + +iff known chars.math_minus_dot: +bskchar "Minus sign with dot above"; +beginarithchar(chars.math_minus_dot); uni "0x2238"; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; x3=.5w; y3=y1+2rule_thickness+dot_size; +bskpoints(1,2,hair,hair); +filldraw z1rr..z1l---z2ll..z2r---cycle; +dot(3); +penlabels(1,2); +endchar; + +iff known chars.math_minus_comma: +bskchar "Minus sign with comma above"; +beginarithchar(chars.math_minus_comma); uni "0x2A29"; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; x3=.5w; y3=y1+2rule_thickness+dot_size+.25comma_depth; +bskpoints(1,2,hair,hair); +filldraw z1rr..z1l---z2ll..z2r---cycle; +comma(3,dot_size,infinity,.6comma_depth); +penlabels(1,2); +endchar; + +iff known chars.math_minus_dot_below: +bskchar "Minus sign with dot below"; +beginarithchar(chars.math_minus_dot_below); uni "0x2A2A"; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; x3=.5w; y3=y1-2rule_thickness-dot_size; +bskpoints(1,2,hair,hair); +filldraw z1rr..z1l---z2ll..z2r---cycle; +dot(3); +penlabels(1,2); +endchar; + +iff known chars.math_minus_dot_lr: +bskchar "Dotted (left-right) minus sign"; +beginarithchar(chars.math_minus_dot_lr); uni "0x2A2B"; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=.5[y3,y4]=math_axis; +.5[x3,x4]=.5w; y3=y1+2rule_thickness+dot_size; lft x3=x1+.5dot_size; +bskpoints(1,2,hair,hair); +filldraw z1rr..z1l---z2ll..z2r---cycle; +dot(3); dot(4); +penlabels(1,2); +endchar; + +iff known chars.math_minus_dot_rl: +bskchar "Dotted (right-left) minus sign"; +beginarithchar(chars.math_minus_dot_rl); uni "0x2A2C"; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=.5[y3,y4]=math_axis; +.5[x3,x4]=.5w; y3=y1+2rule_thickness+dot_size; lft x4=x1+.5dot_size; +bskpoints(1,2,hair,hair); +filldraw z1rr..z1l---z2ll..z2r---cycle; +dot(3); dot(4); +penlabels(1,2); +endchar; + +iff known chars.math_minus_through_circ: +bskchar "Minus through circle"; +beginarithchar(chars.math_minus_through_circ); uni "non"; +pickup tiny.nib; +path p[]; numeric tim[]; +pos9(rule_thickness,90); pos10(rule_thickness,90); +.5[y8,y4]=math_axis; .5[x2,x6]=.5w; x2-x6=y8-y4=w-6u; +circle_points(rule_thickness); +lft x9=u; rt x10=w-u; y9=y10=math_axis; +bskpoints(9,10,hair,hair); +p0:=reverse (draw_circle.l); +p1:=reverse (draw_circle.r); +p2:=z9rr{left}..z9l---z10ll..z10r---z9rr; +(tim0-1,tim1-1)=subpath(1,3) of p0 intersectiontimes subpath(1,2) of p2; +(tim2-5,tim3)=subpath(5,7) of p0 intersectiontimes subpath(0,2) of p2; +(tim4-5,tim5-3)=subpath(5,7) of p0 intersectiontimes subpath(3,4) of p2; +(tim6-1,tim7-3)=subpath(1,3) of p0 intersectiontimes subpath(3,4) of p2; +(tim8-1,tim9-1)=subpath(1,3) of p1 intersectiontimes subpath(1,2) of p2; +(tim10-5,tim11)=subpath(5,7) of p1 intersectiontimes subpath(0,2) of p2; +(tim12-5,tim13-3)=subpath(5,7) of p1 intersectiontimes subpath(3,4) of p2; +(tim14-1,tim15-3)=subpath(1,3) of p1 intersectiontimes subpath(3,4) of p2; +filldraw subpath(0,rundy(p2,tim1).zpet) of p2 + ..subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0 + ..subpath(rundy(p2,tim3),rundy(p2,tim5).zpet) of p2 + ..subpath(rundy(p0,tim4),length p0) of p0 + ..subpath(0,rundy(p0,tim6).zpet) of p0 + ..subpath(rundy(p2,tim7),infinity) of p2..cycle; +infill subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 + ..subpath(rundy(p1,tim10).zpet,rundy(p1,tim8)) of p1..cycle; +infill subpath(rundy(p2,tim13),rundy(p2,tim15).zpet) of p2 + ..reverse subpath(0,rundy(p1,tim14).zpet) of p1 + ..reverse subpath(rundy(p1,tim12),length p1) of p1..cycle; +penlabels(9,10); +endchar; + +iff known chars.math_division: +bskchar "Division sign"; +beginarithchar(chars.math_division); uni "0x00F7"; +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +x3=x4=.5w; .5[y3,y4]=y1; y3-y4=x_height; +bskpoints(1,2,hair,hair); +filldraw z1rr..z1l---z2ll..z2r---cycle; +dot(3); dot(4); +penlabels(1,2); +endchar; + +iff known chars.math_cdot: +bskchar "Verticaly raised period"; +beginchar(chars.math_cdot, 5u#, v_center(dot_size#)); uni "0x22C5"; +italcorr math_axis#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +y1=math_axis; x1=.5w; +dot(1); +endchar; + +iff known chars.sign_middle_dot: +bskchar "Middle dot"; +beginchar(chars.sign_middle_dot, 5u#,x_height#, 0); uni "0x00B7"; +italcorr bar_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +y1=bar_height; x1=.5w; +dot(1); +endchar; + +iff known chars.sign_hyphen_dot: +bskchar "Hyphenation point"; +beginchar(chars.sign_hyphen_dot, 5u#,x_height#, 0); uni "0x2027"; +italcorr bar_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +y1+.5dot_size=.6h; x1=.5w; +dot(1); +endchar; + +iff known chars.math_equivalence: +bskchar "Equivalence sign"; +beginchar(chars.math_equivalence,13u#,v_center(x_height#+rule_thickness#)); uni "0x2261"; +italcorr h#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +y3=y4; y5=y6; .5[y3,y5]=y1; +x3=x5=x1; x4=x6=x2; +y3-y5=x_height; +bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); +filldraw z1l---z2l..z2r---z1r..cycle; +filldraw z3rr..z3l---z4ll..z4r---cycle; +filldraw z5rr..z5l---z6ll..z6r---cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_equivalence_neg: +bskchar "Negated equivalence sign"; +beginchar(chars.math_equivalence_neg,13u#,v_center(13u#)); uni "0x2262"; +italcorr h#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +y3=y4; y5=y6; .5[y3,y5]=y1; +x3=x5=x1; x4=x6=x2; +y3-y5=x_height; +top rt z7=(w-2u,h); top lft z8=(2u,-d); +pos7(rule_thickness,angle(z8-z7)+90); pos8(rule_thickness,angle(z8-z7)+90); +bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +y10=y11=y5l; y12=y13=y5r; y14=y15=y1l; y16=y17=y1r; y18=y19=y3l; y20=y21=y3r; +forsuffixes $=10,12,14,16,18,20: z$=whatever[z8l,z7l]; endfor +forsuffixes $=11,13,15,17,19,21: z$=whatever[z8r,z7r]; endfor +filldraw z1l---obl(14,1l,12).more---obl(12,14,5r)---z5rr..z5l---tobl(10,5l,8ll).more + ---z8ll..z8r---obl(11,8r,6l)---z6ll..z6r---obl(13,6r,15).more---obl(15,13,2l) + ---z2l..z2r---obl(17,2r,19).more---obl(19,17,4l)---z4ll..z4r---tobl(21,4r,7rr).more + ---z7rr..z7l---obl(20,7l,3r)---z3rr..z3l---obl(18,3l,16).more---obl(16,18,1r)---z1r..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(10,11,12,13,14,15,16,17,18,19,20,21,8ll); +endchar; + +iff known chars.math_equivalence_neg_vert: +bskchar "Negated equivalence sign with vertical stroke"; +beginchar(chars.math_equivalence_neg_vert,13u#,v_center(13u#)); uni "non"; %"0x2262.vert"; +italcorr h#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,0); pos8(rule_thickness,0); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +y3=y4; y5=y6; .5[y3,y5]=y1; +x3=x5=x1; x4=x6=x2; +y3-y5=x_height; +top y7=h; top y8=-d; x7=x8=.5w; +bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); +y10=y11=y5l; y12=y13=y5r; y14=y15=y1l; y16=y17=y1r; y18=y19=y3l; y20=y21=y3r; +forsuffixes $=10,12,14,16,18,20: z$=whatever[z8l,z7l]; endfor +forsuffixes $=11,13,15,17,19,21: z$=whatever[z8r,z7r]; endfor +filldraw z1l---obl(14,1l,12)---obl(12,14,5r)---z5rr..z5l---obl(10,5l,8ll) + ---z8ll..z8r---obl(11,8r,6l)---z6ll..z6r---obl(13,6r,15)---obl(15,13,2l) + ---z2l..z2r---obl(17,2r,19)---obl(19,17,4l)---z4ll..z4r---obl(21,4r,7rr) + ---z7rr..z7l---obl(20,7l,3r)---z3rr..z3l---obl(18,3l,16)---obl(16,18,1r)---z1r..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(10,11,12,13,14,15,16,17,18,19,20,21,8ll); +endchar; + +iff known chars.math_equivalence_parallel: +bskchar "Equivalence and parallel sign"; +beginchar(chars.math_equivalence_parallel,13u#,v_center(13u#)); uni "0x2A68"; +italcorr h#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,0); pos8(rule_thickness,0); +pos9(rule_thickness,0); pos10(rule_thickness,0); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +y3=y4; y5=y6; .5[y3,y5]=y1; +x3=x5=x1; x4=x6=x2; +y3-y5=x_height; +top y7=top y9=h; bot y8=bot y10=-d; x7=x8; x9=x10; .5[x7,x9]=.5w; x9-x7=max(3curve,3u); +bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); bskpoints(9,10,rule_thickness,rule_thickness); +z11l=whatever[z7l,z8l]=whatever[z3r,z4r]; z11r=whatever[z7r,z8r]=whatever[z3r,z4r]; +z12l=whatever[z7l,z8l]=whatever[z3l,z4l]; z12r=whatever[z7r,z8r]=whatever[z3l,z4l]; +z13l=whatever[z7l,z8l]=whatever[z1r,z2r]; z13r=whatever[z7r,z8r]=whatever[z1r,z2r]; +z14l=whatever[z7l,z8l]=whatever[z1l,z2l]; z14r=whatever[z7r,z8r]=whatever[z1l,z2l]; +z15l=whatever[z7l,z8l]=whatever[z5r,z6r]; z15r=whatever[z7r,z8r]=whatever[z5r,z6r]; +z16l=whatever[z7l,z8l]=whatever[z5l,z6l]; z16r=whatever[z7r,z8r]=whatever[z5l,z6l]; +z17l=whatever[z9l,z10l]=whatever[z3r,z4r]; z17r=whatever[z9r,z10r]=whatever[z3r,z4r]; +z18l=whatever[z9l,z10l]=whatever[z3l,z4l]; z18r=whatever[z9r,z10r]=whatever[z3l,z4l]; +z19l=whatever[z9l,z10l]=whatever[z1r,z2r]; z19r=whatever[z9r,z10r]=whatever[z1r,z2r]; +z20l=whatever[z9l,z10l]=whatever[z1l,z2l]; z20r=whatever[z9r,z10r]=whatever[z1l,z2l]; +z21l=whatever[z9l,z10l]=whatever[z5r,z6r]; z21r=whatever[z9r,z10r]=whatever[z5r,z6r]; +z22l=whatever[z9l,z10l]=whatever[z5l,z6l]; z22r=whatever[z9r,z10r]=whatever[z5l,z6l]; +filldraw z1l---obl(14l,1l,15l)---obl(15l,14l,5rr)---z5rr..z5l---tobl(16l,5l,8ll)---z8ll + ..z8r---obl(16r,8r,22l)---tobl(22l,16r,10ll)---z10ll..z10r---obl(22r,10r,6ll)---z6ll + ..z6r---obl(21r,6r,20r)---obl(20r,21r,2l)---z2l..z2r---obl(19r,2r,18r)---obl(18r,19r,4ll) + ---z4ll..z4r---tobl(17r,4r,9rr)---z9rr..z9l---obl(17l,9l,11r)---tobl(11r,17l,7rr)---z7rr + ..z7l---obl(11l,7l,3rr)---z3rr..z3l---obl(12l,3l,13l)---obl(13l,12l,1r)---z1r..cycle; +infill obl(13r,12r,19l)---obl(19l,13r,18l)---obl(18l,19l,12r)---obl(12r,18l,13r)---cycle; +infill obl(15r,14r,21l)---obl(21l,15r,20l)---obl(20l,21l,14r)---obl(14r,20l,15r)---cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22); labels(7rr,8ll,9rr,10ll); +endchar; + +iff known chars.math_equivalence_parallel_sl: +bskchar "Equivalence and slanted parallel sign"; +beginchar(chars.math_equivalence_parallel_sl,13u#,v_center(13u#)); uni "non"; %"0x2A68.slant"; +italcorr h#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=1.5f_obl; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +y3=y4; y5=y6; .5[y3,y5]=y1; +x3=x5=x1; x4=x6=x2; +y3-y5=x_height; +top y7=top y9=h; bot y8=bot y10=-d; .5[x8,x9]=.5w; x9-x7=x10-x8=max(3curve,3u); x7-x8=2/3(x9-x7); +pos7(rule_thickness,angle(z7-z8)-90); pos8(rule_thickness,angle(z7-z8)-90); +pos9(rule_thickness,angle(z7-z8)-90); pos10(rule_thickness,angle(z7-z8)-90); +bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); bskpoints(9,10,rule_thickness,rule_thickness); +z11l=whatever[z7l,z8l]=whatever[z3r,z4r]; z11r=whatever[z7r,z8r]=whatever[z3r,z4r]; +z12l=whatever[z7l,z8l]=whatever[z3l,z4l]; z12r=whatever[z7r,z8r]=whatever[z3l,z4l]; +z13l=whatever[z7l,z8l]=whatever[z1r,z2r]; z13r=whatever[z7r,z8r]=whatever[z1r,z2r]; +z14l=whatever[z7l,z8l]=whatever[z1l,z2l]; z14r=whatever[z7r,z8r]=whatever[z1l,z2l]; +z15l=whatever[z7l,z8l]=whatever[z5r,z6r]; z15r=whatever[z7r,z8r]=whatever[z5r,z6r]; +z16l=whatever[z7l,z8l]=whatever[z5l,z6l]; z16r=whatever[z7r,z8r]=whatever[z5l,z6l]; +z17l=whatever[z9l,z10l]=whatever[z3r,z4r]; z17r=whatever[z9r,z10r]=whatever[z3r,z4r]; +z18l=whatever[z9l,z10l]=whatever[z3l,z4l]; z18r=whatever[z9r,z10r]=whatever[z3l,z4l]; +z19l=whatever[z9l,z10l]=whatever[z1r,z2r]; z19r=whatever[z9r,z10r]=whatever[z1r,z2r]; +z20l=whatever[z9l,z10l]=whatever[z1l,z2l]; z20r=whatever[z9r,z10r]=whatever[z1l,z2l]; +z21l=whatever[z9l,z10l]=whatever[z5r,z6r]; z21r=whatever[z9r,z10r]=whatever[z5r,z6r]; +z22l=whatever[z9l,z10l]=whatever[z5l,z6l]; z22r=whatever[z9r,z10r]=whatever[z5l,z6l]; +filldraw z1l---obl(14l,1l,15l).more---obl(15l,14l,5rr)---z5rr..z5l---tobl(16l,5l,8ll).more---z8ll + ..z8r---obl(16r,8r,22l)---tobl(22l,16r,10ll).more---z10ll..z10r---obl(22r,10r,6ll)---z6ll + ..z6r---obl(21r,6r,20r).more---obl(20r,21r,2l)---z2l..z2r---obl(19r,2r,18r).more + ---obl(18r,19r,4ll)---z4ll..z4r---tobl(17r,4r,9rr).more---z9rr..z9l---obl(17l,9l,11r) + ---tobl(11r,17l,7rr).more---z7rr..z7l---obl(11l,7l,3rr)---z3rr..z3l + ---obl(12l,3l,13l).more---obl(13l,12l,1r)---z1r..cycle; +infill obl(13r,12r,19l).more---obl(19l,13r,18l)---obl(18l,19l,12r).more---obl(12r,18l,13r)---cycle; +infill obl(15r,14r,21l).more---obl(21l,15r,20l)---obl(20l,21l,14r).more---obl(14r,20l,15r)---cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22); labels(7rr,8ll,9rr,10ll); +endchar; + +iff known chars.math_equivalence_triple: +bskchar "Equivalence with triple vertical line"; +beginchar(chars.math_equivalence_triple,13u#,v_center(13u#)); uni "0x2A69"; +italcorr h#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,0); pos8(rule_thickness,0); +pos9(rule_thickness,0); pos10(rule_thickness,0); +pos11(rule_thickness,0); pos12(rule_thickness,0); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +y3=y4; y5=y6; .5[y3,y5]=y1; +x3=x5=x1; x4=x6=x2; +y3-y5=x_height; +top y7=top y9=top y11=h; bot y8=bot y10=bot y12=-d; +x7=x8; x9=x10; x11=x12; .5[x7,x9]=.5w; x9-x11=x11-x7=max(2curve,2u); +bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); +bskpoints(7,8,rule_thickness,rule_thickness); bskpoints(9,10,rule_thickness,rule_thickness); +bskpoints(11,12,rule_thickness,rule_thickness); +z13l=whatever[z7l,z8l]=whatever[z3r,z4r]; z13r=whatever[z7r,z8r]=whatever[z3r,z4r]; +z14l=whatever[z7l,z8l]=whatever[z3l,z4l]; z14r=whatever[z7r,z8r]=whatever[z3l,z4l]; +z15l=whatever[z7l,z8l]=whatever[z1r,z2r]; z15r=whatever[z7r,z8r]=whatever[z1r,z2r]; +z16l=whatever[z7l,z8l]=whatever[z1l,z2l]; z16r=whatever[z7r,z8r]=whatever[z1l,z2l]; +z17l=whatever[z7l,z8l]=whatever[z5r,z6r]; z17r=whatever[z7r,z8r]=whatever[z5r,z6r]; +z18l=whatever[z7l,z8l]=whatever[z5l,z6l]; z18r=whatever[z7r,z8r]=whatever[z5l,z6l]; +z19l=whatever[z9l,z10l]=whatever[z3r,z4r]; z19r=whatever[z9r,z10r]=whatever[z3r,z4r]; +z20l=whatever[z9l,z10l]=whatever[z3l,z4l]; z20r=whatever[z9r,z10r]=whatever[z3l,z4l]; +z21l=whatever[z9l,z10l]=whatever[z1r,z2r]; z21r=whatever[z9r,z10r]=whatever[z1r,z2r]; +z22l=whatever[z9l,z10l]=whatever[z1l,z2l]; z22r=whatever[z9r,z10r]=whatever[z1l,z2l]; +z23l=whatever[z9l,z10l]=whatever[z5r,z6r]; z23r=whatever[z9r,z10r]=whatever[z5r,z6r]; +z24l=whatever[z9l,z10l]=whatever[z5l,z6l]; z24r=whatever[z9r,z10r]=whatever[z5l,z6l]; +z25l=whatever[z11l,z12l]=whatever[z3r,z4r]; z25r=whatever[z11r,z12r]=whatever[z3r,z4r]; +z26l=whatever[z11l,z12l]=whatever[z3l,z4l]; z26r=whatever[z11r,z12r]=whatever[z3l,z4l]; +z27l=whatever[z11l,z12l]=whatever[z1r,z2r]; z27r=whatever[z11r,z12r]=whatever[z1r,z2r]; +z28l=whatever[z11l,z12l]=whatever[z1l,z2l]; z28r=whatever[z11r,z12r]=whatever[z1l,z2l]; +z29l=whatever[z11l,z12l]=whatever[z5r,z6r]; z29r=whatever[z11r,z12r]=whatever[z5r,z6r]; +z30l=whatever[z11l,z12l]=whatever[z5l,z6l]; z30r=whatever[z11r,z12r]=whatever[z5l,z6l]; +filldraw z1l---obl(16l,1l,17l)---obl(17l,16l,5rr)---z5rr..z5l---tobl(18l,5l,8ll)---z8ll + ..z8r---obl(18r,8r,30l)---tobl(30l,18r,12ll)---z12ll..z12r---obl(30r,12r,24l) + ---tobl(24l,18r,10ll)---z10ll..z10r---obl(24r,10r,6ll)---z6ll..z6r---obl(23r,6r,22r) + ---obl(22r,23r,2l)---z2l..z2r---obl(21r,2r,20r)---obl(20r,21r,4ll)---z4ll..z4r + ---tobl(19r,4r,9rr)---z9rr..z9l---obl(19l,9l,25r)---tobl(25r,19l,11rr)---z11rr + ..z11l---obl(25l,11l,13r)---tobl(13r,19l,7rr)---z7rr..z7l---obl(13l,7l,3rr)---z3rr + ..z3l---obl(14l,3l,15l)---obl(15l,14l,1r)---z1r..cycle; +infill obl(15r,14r,27l)---obl(27l,15r,26l)---obl(26l,27l,14r)---obl(14r,26l,15r)---cycle; +infill obl(17r,16r,29l)---obl(29l,17r,28l)---obl(28l,29l,16r)---obl(16r,28l,17r)---cycle; +infill obl(27r,26r,21l)---obl(21l,27r,20l)---obl(20l,21l,26r)---obl(26r,20l,27r)---cycle; +infill obl(29r,28r,23l)---obl(23l,29r,22l)---obl(22l,23l,28r)---obl(28r,22l,29r)---cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,22,23,24,25,26,27,28,29,30); +labels(7rr,8ll,9rr,10ll,11rr,12ll); +endchar; + +iff known chars.math_equivalence_dot: +bskchar "Equivalence sign with dot"; +beginchar(chars.math_equivalence_dot,13u#,.5x_height#+2.5rule_thickness#+dot_size#+math_axis#,.5x_height#+.5rule_thickness#-math_axis#); uni "0x2A67"; +italcorr h#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +y3=y4; y5=y6; .5[y3,y5]=y1; +x3=x5=x1; x4=x6=x2; +y3-y5=x_height; +x7=.5w; top y7=h+o; +bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); +filldraw z1l---z2l..z2r---z1r..cycle; +filldraw z3rr..z3l---z4ll..z4r---cycle; +filldraw z5rr..z5l---z6ll..z6r---cycle; +dot(7); +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_equivalence_dot_four: +bskchar "Four-dotted equivalence sign"; +beginchar(chars.math_equivalence_dot_four,13u#,.5x_height#+2.5rule_thickness#+dot_size#+math_axis#,.5x_height#+.5rule_thickness#-math_axis#); uni "0x2A78"; +italcorr h#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x1=u; rt x2=w-u; y1=y2=math_axis; +y3=y4; y5=y6; .5[y3,y5]=y1; +x3=x5=x1; x4=x6=x2; +y3-y5=x_height; +top y7=h+o; y7=y8=y9=y10; x10-x9=x9-x8=x8-x7; .5[x7,x10]=.5w; x7=u+dot_size; +bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); +filldraw z1l---z2l..z2r---z1r..cycle; +filldraw z3rr..z3l---z4ll..z4r---cycle; +filldraw z5rr..z5l---z6ll..z6r---cycle; +dot(7); dot(8); dot(9); dot(10); +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_equivalence_strict: +bskchar "Strict equivalence sign"; +beginchar(chars.math_equivalence_strict,13u#,v_center(1.5x_height#+rule_thickness#)); uni "0x2263"; +italcorr h#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,90); pos8(rule_thickness,90); +lft x1=u; rt x2=w-u; +y1=y2; y3=y4; y5=y6; y7=y8; .5[y1,y7]=.5[y3,y5]=math_axis; +x3=x5=x7=x1; x4=x6=x8=x2; +y1-y3=y3-y5; top y1r=h; +bskpoints(3,4,hair,hair); +bskpoints(5,6,hair,hair); +bskpoints(7,8,hair,hair); +filldraw z1l---z2l..z2r---z1r..cycle; +filldraw z3rr..z3l---z4ll..z4r---cycle; +filldraw z5rr..z5l---z6ll..z6r---cycle; +filldraw z7l---z8l..z8r---z7r..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_circle_op: +bskchar "Circle operator"; +beginchar(chars.math_circle_op,8u#,v_center(6u#)); uni "0x2218"; +adjust_fit(0,0); +pickup tiny.nib; +z0=(.5w,math_axis); +filldraw fullcircle scaled (w-rt 2u) shifted z0; +infill fullcircle scaled (w-rt 2u-rule_thickness+.5currentbreadth) shifted z0; +endchar; + +iff known chars.math_bullet: +bskchar "Bullet"; +beginchar(chars.math_bullet,8u#,v_center(6u#)); uni "0x2219"; +adjust_fit(0,0); +pickup tiny.nib; +z0=(.5w,math_axis); +filldraw fullcircle scaled (w-rt 2u) shifted z0; +endchar; + +iff known chars.sign_bullet: +bskchar "Bullet sign"; +beginchar(chars.sign_bullet,6.5u#,x_height#,0); uni "0x2022"; +adjust_fit(0,0); +pickup tiny.nib; +z0=(.5w,bar_height); +filldraw fullcircle scaled (w-rt 2u) shifted z0; +endchar; + +iff known chars.sign_bullet_triangle: +bskchar "Triangle bullet"; +beginchar(chars.sign_bullet_triangle,6.5u#,x_height#,0); uni "0x2023"; +adjust_fit(0,0); +pickup tiny.nib; +numeric lw; +lw=rule_thickness-currentbreadth; +lft x1=u; x2=x1; y3=.5[y1,y2]=bar_height; rt x3=w-u+hair; +top y1=h; +x1'=x2'=x1+lw; +y1'-y1=y2-y2'=-lw/cosd(angle(z3-z1)); +z3'=z2'+whatever*(z3-z2)=z1'+whatever*(z3-z1); +filldraw obl(1,3,2)---obl(2,1,3)---obl(3,2,1)---cycle; +labels(1,1',2,2',3,3'); +endchar; + +iff known chars.sign_bullet_hyphen: +bskchar "Hyphen bullet"; +beginchar(chars.sign_bullet_hyphen,6.5u#,x_height#,0); uni "0x2043"; +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(stem+rule_thickness,90); pos2(stem+rule_thickness,90); +y1=y2=bar_height; x2=w-x1; +lft x1=.5u+.5rule_thickness+.5stem; +filldraw bskrule(1,2,hair,hair); +penlabels(1,2); +endchar; + +iff known chars.math_diamond_op: +bskchar "Diamond operator"; +beginchar(chars.math_diamond_op,9u#,v_center(7u#)); uni "0x22C4"; +italcorr math_axis#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=math_axis; x2=x4=.5w; +y4-y2=x3-x1; +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +oblu:=2oblu; +infill obl(1r,4r,2r)---obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_diamond_op_dot: +bskchar "Diamond operator with dot"; +beginchar(chars.math_diamond_op_dot,9u#,v_center(7u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=math_axis; x2=x4=.5w; +y4-y2=x3-x1; +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +infill fullcircle scaled (x2-x1) shifted .5[z1,z3]; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_diamond: +bskchar "Diamond"; +beginchar(chars.math_diamond,10u#,asc_height#,rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=.5[h,-d]; x2=x4=.5w; y4l=h+o; +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +oblu:=2oblu; +infill obl(1r,4r,2r)---obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_diamond_dot: +bskchar "Diamond with dot"; +beginchar(chars.math_diamond_dot,10u#,asc_height#,rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=.5[h,-d]; x2=x4=.5w; y4l=h+o; +z0=.5[z1,z3]; +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +oblu:=2oblu; +infill obl(1r,4r,2r)---obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +dot(0); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_diamond_black: +bskchar "Black diamond"; +beginchar(chars.math_diamond_black,10u#,asc_height#,rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x1=u; rt x3=w-u; y1=y3=.5[y2,y4]=.5[h,-d]; x2=x4=.5w; y4=h+o; +filldraw obl(1,4,2)---obl(2,1,3)--obl(3,2,4)---obl(4,3,1)---cycle; +labels(1,2,3,4); +endchar; + +iff known chars.math_diamond_uni: +bskchar "Diamond (for Unicode)"; +beginchar(chars.math_diamond_uni,14u#,asc_height#,rule_thickness#); uni "0x25C7"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=.5[h,-d]; x2=x4=.5w; y4l=h+o; +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +oblu:=2oblu; +infill obl(1r,4r,2r)---obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_diamond_dot_uni: +bskchar "Diamond with dot (for Unicode)"; +beginchar(chars.math_diamond_dot_uni,14u#,asc_height#,rule_thickness#); uni "0x27D0"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=.5[h,-d]; x2=x4=.5w; y4l=h+o; +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +oblu:=2oblu; +infill obl(1r,4r,2r)---obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +z0=.5[z1,z3]; +dot(0); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_asterisk: +bskchar "Asterisk on axis"; +beginchar(chars.math_asterisk,8u#,v_center(x_height#)); uni "0x2217"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size, ast, vast; +path p; +z0=(.5w,math_axis); ast:=3/4stem; vast=.7stem; +pos1(ast,0); x1=x0; +size=1/3h; if (size+.5ast)*cosd(30) > (lft w)-u-x0: + size:= (lft w-u-x0)/cosd(30)-.5ast; fi; +y1=y0+size; +p:=z0---z1r{dir120}..z1l---z0; +p:=subpath (xpart(p intersectiontimes ((x0,y0+vast)--(w,y0+vast))), + xpart(p intersectiontimes ((x0,y0+vast)--(0,y0+vast)))) of p; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z0,i).. endfor cycle; +labels(0); penlabels(1); +endchar; + +iff known chars.math_asterisk_big: +bskchar "Big asterisk on axis"; +beginchar(chars.math_asterisk_big,13u#,v_center(12u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size, ast, vast; +path p; +z0=(.5w,math_axis); ast:=2rule_thickness; vast=2rule_thickness; +pos1(ast,0); x1=x0; +size=1/2h; if (size+.5ast)*cosd(30) > (lft w)-u-x0: + size:= (lft w-u-x0)/cosd(30)-.5ast; fi; +y1=y0+size; +p:=z0---z1r{dir120}..z1l---z0; +p:=subpath (xpart(p intersectiontimes ((x0,y0+vast)--(w,y0+vast))), + xpart(p intersectiontimes ((x0,y0+vast)--(0,y0+vast)))) of p; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z0,i).. endfor cycle; +labels(0); penlabels(1); +endchar; + +iff known chars.math_convolution: +bskchar "Convolution sign"; +beginchar(chars.math_convolution,10u#,v_center(8u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,-45); pos6(rule_thickness,-45); +pos7(rule_thickness,45); pos8(rule_thickness,45); +y1=y2=.5[y3,y4]=math_axis; .5[x1,x2]=x3=x4=.5w; .5[z5,z6]=.5[z7,z8]=(x3,y1); +z5-z6=(z2-z1) rotated 45; z7-z8=(z2-z1) rotated -45; +x1=u+.5rule_thickness; y4-y3=x2-x1; +z1'=whatever[z1l,z2l]=whatever[z5l,z6l]; +z2'=whatever[z3l,z4l]=whatever[z5r,z6r]; +z3'=whatever[z3r,z4r]=whatever[z7l,z8l]; +z4'=whatever[z7r,z8r]=whatever[z1l,z2l]; +z5'=whatever[z1r,z2r]=whatever[z5r,z6r]; +z6'=whatever[z3r,z4r]=whatever[z5l,z6l]; +z7'=whatever[z3l,z4l]=whatever[z7r,z8r]; +z8'=whatever[z1r,z2r]=whatever[z7l,z8l]; +bskpoints(1,2,hair,hair); bskpoints(3,4,hair,hair); +filldraw z1l---obl(1',1l,6l)---z6l..z6r---obl(2',6r,3l)---z3l..z3rr + ---obl(3',3rr,7l)---z7l..z7r---obl(4',7r,2ll)---z2ll..z2r + ---obl(5',2r,5r)---z5r..z5l---obl(6',5l,4r)---z4r..z4ll + ---obl(7',4ll,8r)---z8r..z8l---obl(8',8l,1rr)---z1rr..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(1',2',3',4',5',6',1rr,2ll,3rr,4ll); +endchar; + +iff known chars.math_diamond_curved_dot: +bskchar "Curved diamond with dot"; +beginchar(chars.math_diamond_curved_dot,9u#,v_center(7u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric st; st:=rule_thickness; +pos1(st,0); pos2(st,90); pos3(st,180); pos4(st,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=math_axis; x2=x4=.5w; +z0=.5[z1,z3]; +y4-y2=x3-x1; +filldraw z1l.. .75[z0,.5[z1,z2]] ..z2l& z2l.. .75[z0,.5[z3,z2]] ..z3l& z3l.. .75[z0,.5[z3,z4]] ..z4l& z4l.. .75[z0,.5[z1,z4]] ..z1l&cycle; +infill fullcircle scaled (x2-x1) shifted .5[z1,z3]; +penlabels(1,2,3,4); labels(0); +endchar; + +iff known chars.math_circle_minus: +bskchar "Circle-minus operator"; +beginarithchar(chars.math_circle_minus); uni "0x2296"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +pos9(rule_thickness,90); pos10(rule_thickness,90); +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +y9=y10=y2; x9-x6r=x2r-x10=curve; +circle_points(rule_thickness); +path p; +filldraw draw_circle.l; +p:=subpath (-2,2) of (draw_circle.r); +tim1=xpart(p intersectiontimes ((0,y9r)--(x4,y9r))); +tim2=xpart(p intersectiontimes ((x4,y9r)--(w,y9r))); +infill subpath (rundy(p,tim1),rundy(p,tim2).zpet) of p..z10r---z9r..cycle; +p:=subpath (2,6) of (draw_circle.r); +tim3=xpart(p intersectiontimes ((x4,y9l)--(w,y9l))); +tim4=xpart(p intersectiontimes ((x4,y9l)--(0,y9l))); +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z9l---z10l..cycle; +penlabels(9,10); +endchar; + +iff known chars.math_circle_bar_top: +bskchar "Circle-bar top operator"; +beginarithchar(chars.math_circle_bar_top); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +pos9(rule_thickness,90); pos10(rule_thickness,90); +pos11(rule_thickness,0); pos12(rule_thickness,0); +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +y9=y10=y2; x9-x6r=x2r-x10=curve; z12=.5[z9r,z10r]; z11=z8+curve*down; +circle_points(rule_thickness); +path p; +filldraw draw_circle.l; +p:=subpath (-2,2) of (draw_circle.r); +tim1=xpart(p intersectiontimes (z11r--(x11r,2h))); +tim2=xpart(p intersectiontimes ((x4,y9r)--(w,y9r))); +infill subpath (rundy(p,tim1),rundy(p,tim2).zpet) of p..z10r---obl(12r,10r,11r)---z11r..cycle; +p:=subpath (-3,1) of (draw_circle.r); +tim3=xpart(p intersectiontimes ((0,y9r)--(x4,y9r))); +tim4=xpart(p intersectiontimes (z11l--(x11l,2h))); +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z11l---obl(12l,11l,9r)---z9r..cycle; +p:=subpath (2,6) of (draw_circle.r); +tim5=xpart(p intersectiontimes ((x4,y9l)--(w,y9l))); +tim6=xpart(p intersectiontimes ((x4,y9l)--(0,y9l))); +infill subpath (rundy(p,tim5),rundy(p,tim6).zpet) of p..z9l---z10l..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_bar_bot: +bskchar "Circle-bar bot operator"; +beginarithchar(chars.math_circle_bar_bot); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +pos9(rule_thickness,90); pos10(rule_thickness,90); +pos11(rule_thickness,0); pos12(rule_thickness,0); +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +y9=y10=y2; x9-x6r=x2r-x10=curve; z12=.5[z9l,z10l]; z11=z4+curve*up; +circle_points(rule_thickness); +path p; +filldraw draw_circle.l; +p:=subpath (-2,2) of (draw_circle.r); +tim1=xpart(p intersectiontimes ((0,y9r)--(x4,y9r))); +tim2=xpart(p intersectiontimes ((x4,y9r)--(w,y9r))); +infill subpath (rundy(p,tim1),rundy(p,tim2).zpet) of p..z10r---z9r..cycle; +p:=subpath (2,5) of (draw_circle.r); +tim3=xpart(p intersectiontimes (z11r--(x11r,-d))); +tim4=xpart(p intersectiontimes ((x4,y9l)--(w,y9l))); +infill subpath (rundy(p,tim4),rundy(p,tim3).zpet) of p..z11r---obl(12r,11r,10l)---z10l..cycle; +p:=subpath (3,7) of (draw_circle.r); +tim5=xpart(p intersectiontimes ((0,y9l)--(x4,y9l))); +tim6=xpart(p intersectiontimes (z11l--(x11l,-d))); +infill subpath (rundy(p,tim6),rundy(p,tim5).zpet) of p..z9l---obl(12l,9l,11l)---z11l..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_divide: +bskchar "Circle-divide operator"; +beginarithchar(chars.math_circle_divide); uni "0x2298"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,angle(direction 1 of _circle_path)); +pos10(rule_thickness,angle(direction 5 of _circle_path)+180); +z9=z1+curve*unitvector(z5-z1); z10=z5+curve*unitvector(z1-z5); +path p; +filldraw draw_circle.l; +p:=subpath (-3,1) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim2=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +infill subpath (rundy(p,tim1),rundy(p,tim2).zpet) of p..z9l---z10l..cycle; +p:=subpath (1,5) of (draw_circle.r); +tim4=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z10r---z9r..cycle; +penlabels(9,10); +endchar; + +iff known chars.math_circle_set_minus: +bskchar "Circle-set minus operator"; +beginarithchar(chars.math_circle_set_minus); uni "0x29B8"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,angle(direction 3 of _circle_path)); +pos10(rule_thickness,angle(direction 7 of _circle_path)+180); +z9=z3+curve*unitvector(z7-z3); z10=z7+curve*unitvector(z3-z7); +path p; +filldraw draw_circle.l; +p:=subpath (-2,4) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim2=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +infill subpath (rundy(p,tim1),rundy(p,tim2).zpet) of p..z9l---z10l..cycle; +p:=subpath (3,8) of (draw_circle.r); +tim4=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z10r---z9r..cycle; +penlabels(9,10); +endchar; + +iff known chars.math_circle_vbar: +bskchar "Circle-vertical bar operator"; +beginarithchar(chars.math_circle_vbar); uni "0x29B6"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,180); +pos10(rule_thickness,180); +z9=z4+curve*unitvector(z8-z4); z10=z8+curve*unitvector(z4-z8); +path p; +filldraw draw_circle.l; +p:=subpath (-1,5) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim2=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +infill subpath (rundy(p,tim1),rundy(p,tim2).zpet) of p..z9l---z10l..cycle; +p:=subpath (3,9) of (draw_circle.r); +tim4=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z10r---z9r..cycle; +penlabels(9,10); +endchar; + +iff known chars.math_circle_bar_right: +bskchar "Circle-bar right operator"; +beginarithchar(chars.math_circle_bar_right); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,180); pos10(rule_thickness,180); +pos11(rule_thickness,90); pos12(rule_thickness,90); +z9=z4+curve*unitvector(z8-z4); z10=z8+curve*unitvector(z4-z8); +z12=.5[z9l,z10l]; z11=z2+curve*left; +path p; +filldraw draw_circle.l; +p:=subpath (-1,3) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim2=xpart(p intersectiontimes (z11r--(w,y11r))); +infill subpath (rundy(p,tim1),rundy(p,tim2).zpet) of p..z11r---obl(12r,11r,10l)---z10l..cycle; +p:=subpath (2,5) of (draw_circle.r); +tim3=xpart(p intersectiontimes (z11l--(w,y11l))); +tim4=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z9l---obl(12l,9l,11l)---z11l..cycle; +p:=subpath (3,9) of (draw_circle.r); +tim6=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim5=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +infill subpath (rundy(p,tim5),rundy(p,tim6).zpet) of p..z10r---z9r..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_bar_left: +bskchar "Circle-bar left operator"; +beginarithchar(chars.math_circle_bar_left); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,180); pos10(rule_thickness,180); +pos11(rule_thickness,90); pos12(rule_thickness,90); +z9=z4+curve*unitvector(z8-z4); z10=z8+curve*unitvector(z4-z8); +z12=.5[z10r,z9r]; z11=z6+curve*right; +path p; +filldraw draw_circle.l; +p:=subpath (-1,5) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim2=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +infill subpath (rundy(p,tim1),rundy(p,tim2).zpet) of p..z9l---z10l..cycle; +p:=subpath (3,7) of (draw_circle.r); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +tim4=xpart(p intersectiontimes (z11l--(0,y11l))); +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z11l---obl(12l,11l,9r)---z9r..cycle; +p:=subpath (5,9) of (draw_circle.r); +tim6=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim5=xpart(p intersectiontimes (z11r--(0,y11r))); +infill subpath (rundy(p,tim5),rundy(p,tim6).zpet) of p..z10r---obl(12r,10r,11r)---z11r..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_dot: +bskchar "Circle-dot operator"; +beginarithchar(chars.math_circle_dot); uni "0x2299"; +adjust_fit(0,0); +pickup tiny.nib; +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +y2=y0; x0=x8; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +dot(0); +endchar; + +iff known chars.math_circle_dot_uni: +bskchar "N-ary circle-dot operator (for Unicode)"; +beginchar(chars.math_circle_dot_uni,14u#,v_center(10/6dh#)); uni "0x2A00"; +adjust_fit(0,0); +pickup tiny.nib; +lft x6=u; x2=w-x6; y2=y0=.5[h,-d]; x0=x8; y8-y4=x2-x6; +circle_points(stem); +filldraw draw_circle.l; +infill draw_circle.r; +filldraw fullcircle scaled 2stem shifted z0; +endchar; + +iff known chars.math_circle_dot_text: +bskchar "\textstyle circle-dot operator"; +beginchar(chars.math_circle_dot_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x6=u; x2=w-x6; y2=y0=.5[h,-d]; x0=x8; y8-y4=x2-x6; +circle_points(stem); +filldraw draw_circle.l; +infill draw_circle.r; +filldraw fullcircle scaled 2stem shifted z0; +endchar; + +iff known chars.math_circle_dot_disp: +bskchar "\displaystyle circle-dot operator"; +beginchar(chars.math_circle_dot_disp,20u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x6=u; x2=w-x6; y2=y0=.5[h,-d]; x0=x8; y8-y4=x2-x6; +circle_points(bourstem); +filldraw draw_circle.l; +infill draw_circle.r; +filldraw fullcircle scaled (2*.5[bourstem,stem]) shifted z0; +endchar; + +iff known chars.math_circle_times: +bskchar "Circle-times operator"; +beginarithchar(chars.math_circle_times); uni "0x2297"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,angle(direction 1 of _circle_path)); +pos10(rule_thickness,angle(direction 5 of _circle_path)+180); +pos11(rule_thickness,angle(direction 3 of _circle_path)); +pos12(rule_thickness,angle(direction 7 of _circle_path)+180); +z9=z1+curve*unitvector(z5-z1); z10=z5+curve*unitvector(z1-z5); +z11=z3+curve*unitvector(z7-z3); z12=z7+curve*unitvector(z3-z7); +path p; +filldraw draw_circle.l; +p:=subpath (-1,1) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +tim2=xpart(p intersectiontimes (.5[z11l,z12l]--2[z11l,z12l])); +z100=whatever[z12l,z11l]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim1).zpet,rundy(p,tim2)) of p..z12l---obl(100,12l,9l)---z9l..cycle; +p:=subpath (1,3) of (draw_circle.r); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +tim4=xpart(p intersectiontimes (.5[z11l,z12l]--2[z12l,z11l])); +z101=whatever[z12l,z11l]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z11l---obl(101,11l,9r)---z9r..cycle; +p:=subpath (3,5) of (draw_circle.r); +tim5=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim6=xpart(p intersectiontimes (.5[z11r,z12r]--2[z12r,z11r])); +z102=whatever[z12r,z11r]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim6),rundy(p,tim5).zpet) of p..z10r---obl(102,10r,11r)---z11r..cycle; +p:=subpath (5,7) of (draw_circle.r); +tim7=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim8=xpart(p intersectiontimes (.5[z11r,z12r]--2[z11r,z12r])); +z103=whatever[z12r,z11r]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim7),rundy(p,tim8).zpet) of p..z12r---obl(103,12r,10l)---z10l..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_times_uni: +bskchar "N-ary circle-times operator (for Unicode)"; +beginchar(chars.math_circle_times_uni,14u#,v_center(10/6dh#)); uni "0x2A02"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u; x2=w-x6; y2=.5[h,-d]; y8-y4=x2-x6; +circle_points(stem); +pos9(stem,angle(direction 1 of _circle_path)); +pos10(stem,angle(direction 5 of _circle_path)+180); +pos11(stem,angle(direction 3 of _circle_path)); +pos12(stem,angle(direction 7 of _circle_path)+180); +z9=z1+curve*unitvector(z5-z1); z10=z5+curve*unitvector(z1-z5); +z11=z3+curve*unitvector(z7-z3); z12=z7+curve*unitvector(z3-z7); +path p; +filldraw draw_circle.l; +p:=subpath (-1,1) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +tim2=xpart(p intersectiontimes (.5[z11l,z12l]--2[z11l,z12l])); +z100=whatever[z12l,z11l]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim1).zpet,rundy(p,tim2)) of p..z12l---obl(100,12l,9l)---z9l..cycle; +p:=subpath (1,3) of (draw_circle.r); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +tim4=xpart(p intersectiontimes (.5[z11l,z12l]--2[z12l,z11l])); +z101=whatever[z12l,z11l]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z11l---obl(101,11l,9r)---z9r..cycle; +p:=subpath (3,5) of (draw_circle.r); +tim5=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim6=xpart(p intersectiontimes (.5[z11r,z12r]--2[z12r,z11r])); +z102=whatever[z12r,z11r]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim6),rundy(p,tim5).zpet) of p..z10r---obl(102,10r,11r)---z11r..cycle; +p:=subpath (5,7) of (draw_circle.r); +tim7=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim8=xpart(p intersectiontimes (.5[z11r,z12r]--2[z11r,z12r])); +z103=whatever[z12r,z11r]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim7),rundy(p,tim8).zpet) of p..z12r---obl(103,12r,10l)---z10l..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_times_text: +bskchar "\textstyle circle-times operator"; +beginchar(chars.math_circle_times_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u; x2=w-x6; y2=.5[h,-d]; y8-y4=x2-x6; +circle_points(stem); +pos9(stem,angle(direction 1 of _circle_path)); +pos10(stem,angle(direction 5 of _circle_path)+180); +pos11(stem,angle(direction 3 of _circle_path)); +pos12(stem,angle(direction 7 of _circle_path)+180); +z9=z1+curve*unitvector(z5-z1); z10=z5+curve*unitvector(z1-z5); +z11=z3+curve*unitvector(z7-z3); z12=z7+curve*unitvector(z3-z7); +path p; +filldraw draw_circle.l; +p:=subpath (-1,1) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +tim2=xpart(p intersectiontimes (.5[z11l,z12l]--2[z11l,z12l])); +z100=whatever[z12l,z11l]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim1).zpet,rundy(p,tim2)) of p..z12l---obl(100,12l,9l)---z9l..cycle; +p:=subpath (1,3) of (draw_circle.r); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +tim4=xpart(p intersectiontimes (.5[z11l,z12l]--2[z12l,z11l])); +z101=whatever[z12l,z11l]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z11l---obl(101,11l,9r)---z9r..cycle; +p:=subpath (3,5) of (draw_circle.r); +tim5=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim6=xpart(p intersectiontimes (.5[z11r,z12r]--2[z12r,z11r])); +z102=whatever[z12r,z11r]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim6),rundy(p,tim5).zpet) of p..z10r---obl(102,10r,11r)---z11r..cycle; +p:=subpath (5,7) of (draw_circle.r); +tim7=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim8=xpart(p intersectiontimes (.5[z11r,z12r]--2[z11r,z12r])); +z103=whatever[z12r,z11r]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim7),rundy(p,tim8).zpet) of p..z12r---obl(103,12r,10l)---z10l..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_times_disp: +bskchar "\displaystyle circle-times operator"; +beginchar(chars.math_circle_times_disp,18u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u; x2=w-x6; y2=.5[h,-d]; y8-y4=x2-x6; +circle_points(bourstem); +pos9(bourstem,angle(direction 1 of _circle_path)); +pos10(bourstem,angle(direction 5 of _circle_path)+180); +pos11(bourstem,angle(direction 3 of _circle_path)); +pos12(bourstem,angle(direction 7 of _circle_path)+180); +z9=z1+curve*unitvector(z5-z1); z10=z5+curve*unitvector(z1-z5); +z11=z3+curve*unitvector(z7-z3); z12=z7+curve*unitvector(z3-z7); +path p; +filldraw draw_circle.l; +p:=subpath (-1,1) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +tim2=xpart(p intersectiontimes (.5[z11l,z12l]--2[z11l,z12l])); +z100=whatever[z12l,z11l]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim1).zpet,rundy(p,tim2)) of p..z12l---obl(100,12l,9l)---z9l..cycle; +p:=subpath (1,3) of (draw_circle.r); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +tim4=xpart(p intersectiontimes (.5[z11l,z12l]--2[z12l,z11l])); +z101=whatever[z12l,z11l]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z11l---obl(101,11l,9r)---z9r..cycle; +p:=subpath (3,5) of (draw_circle.r); +tim5=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim6=xpart(p intersectiontimes (.5[z11r,z12r]--2[z12r,z11r])); +z102=whatever[z12r,z11r]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim6),rundy(p,tim5).zpet) of p..z10r---obl(102,10r,11r)---z11r..cycle; +p:=subpath (5,7) of (draw_circle.r); +tim7=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim8=xpart(p intersectiontimes (.5[z11r,z12r]--2[z11r,z12r])); +z103=whatever[z12r,z11r]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim7),rundy(p,tim8).zpet) of p..z12r---obl(103,12r,10l)---z10l..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_plus: +bskchar "Circle-plus operator"; +beginarithchar(chars.math_circle_plus); uni "0x2295"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,angle(direction 2 of _circle_path)); +pos10(rule_thickness,angle(direction 6 of _circle_path)+180); +pos11(rule_thickness,angle(direction 4 of _circle_path)); +pos12(rule_thickness,angle(direction 8 of _circle_path)+180); +z9=z2+curve*unitvector(z6-z2); z10=z6+curve*unitvector(z2-z6); +z11=z4+curve*unitvector(z8-z4); z12=z8+curve*unitvector(z4-z8); +path p; +filldraw draw_circle.l; +p:=subpath (0,2) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +tim2=xpart(p intersectiontimes (.5[z11l,z12l]--2[z11l,z12l])); +z100=whatever[z12l,z11l]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim1).zpet,rundy(p,tim2)) of p..z12l---obl(100,12l,9l)---z9l..cycle; +p:=subpath (2,4) of (draw_circle.r); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +tim4=xpart(p intersectiontimes (.5[z11l,z12l]--2[z12l,z11l])); +z101=whatever[z12l,z11l]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z11l---obl(101,11l,9r)---z9r..cycle; +p:=subpath (4,6) of (draw_circle.r); +tim5=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim6=xpart(p intersectiontimes (.5[z11r,z12r]--2[z12r,z11r])); +z102=whatever[z12r,z11r]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim6),rundy(p,tim5).zpet) of p..z10r---obl(102,10r,11r)---z11r..cycle; +p:=subpath (6,8) of (draw_circle.r); +tim7=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim8=xpart(p intersectiontimes (.5[z11r,z12r]--2[z11r,z12r])); +z103=whatever[z12r,z11r]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim7),rundy(p,tim8).zpet) of p..z12r---obl(103,12r,10l)---z10l..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_plus_uni: +bskchar "N-ary circle-plus operator (for Unicode)"; +beginchar(chars.math_circle_plus_uni,14u#,v_center(10/6dh#)); uni "0x2A01"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u; x2=w-x6; y2=.5[h,-d]; y8-y4=x2-x6; +circle_points(stem); +pos9(stem,angle(direction 2 of _circle_path)); +pos10(stem,angle(direction 6 of _circle_path)+180); +pos11(stem,angle(direction 4 of _circle_path)); +pos12(stem,angle(direction 8 of _circle_path)+180); +z9=z2+curve*unitvector(z6-z2); z10=z6+curve*unitvector(z2-z6); +z11=z4+curve*unitvector(z8-z4); z12=z8+curve*unitvector(z4-z8); +path p; +filldraw draw_circle.l; +p:=subpath (0,2) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +tim2=xpart(p intersectiontimes (.5[z11l,z12l]--2[z11l,z12l])); +z100=whatever[z12l,z11l]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim1).zpet,rundy(p,tim2)) of p..z12l---obl(100,12l,9l)---z9l..cycle; +p:=subpath (2,4) of (draw_circle.r); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +tim4=xpart(p intersectiontimes (.5[z11l,z12l]--2[z12l,z11l])); +z101=whatever[z12l,z11l]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z11l---obl(101,11l,9r)---z9r..cycle; +p:=subpath (4,6) of (draw_circle.r); +tim5=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim6=xpart(p intersectiontimes (.5[z11r,z12r]--2[z12r,z11r])); +z102=whatever[z12r,z11r]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim6),rundy(p,tim5).zpet) of p..z10r---obl(102,10r,11r)---z11r..cycle; +p:=subpath (6,8) of (draw_circle.r); +tim7=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim8=xpart(p intersectiontimes (.5[z11r,z12r]--2[z11r,z12r])); +z103=whatever[z12r,z11r]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim7),rundy(p,tim8).zpet) of p..z12r---obl(103,12r,10l)---z10l..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_plus_text: +bskchar "\textstyle circle-plus operator"; +beginchar(chars.math_circle_plus_text,14u#,0,10/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u; x2=w-x6; y2=.5[h,-d]; y8-y4=x2-x6; +circle_points(stem); +pos9(stem,angle(direction 2 of _circle_path)); +pos10(stem,angle(direction 6 of _circle_path)+180); +pos11(stem,angle(direction 4 of _circle_path)); +pos12(stem,angle(direction 8 of _circle_path)+180); +z9=z2+curve*unitvector(z6-z2); z10=z6+curve*unitvector(z2-z6); +z11=z4+curve*unitvector(z8-z4); z12=z8+curve*unitvector(z4-z8); +path p; +filldraw draw_circle.l; +p:=subpath (0,2) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +tim2=xpart(p intersectiontimes (.5[z11l,z12l]--2[z11l,z12l])); +z100=whatever[z12l,z11l]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim1).zpet,rundy(p,tim2)) of p..z12l---obl(100,12l,9l)---z9l..cycle; +p:=subpath (2,4) of (draw_circle.r); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +tim4=xpart(p intersectiontimes (.5[z11l,z12l]--2[z12l,z11l])); +z101=whatever[z12l,z11l]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z11l---obl(101,11l,9r)---z9r..cycle; +p:=subpath (4,6) of (draw_circle.r); +tim5=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim6=xpart(p intersectiontimes (.5[z11r,z12r]--2[z12r,z11r])); +z102=whatever[z12r,z11r]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim6),rundy(p,tim5).zpet) of p..z10r---obl(102,10r,11r)---z11r..cycle; +p:=subpath (6,8) of (draw_circle.r); +tim7=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim8=xpart(p intersectiontimes (.5[z11r,z12r]--2[z11r,z12r])); +z103=whatever[z12r,z11r]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim7),rundy(p,tim8).zpet) of p..z12r---obl(103,12r,10l)---z10l..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_plus_disp: +bskchar "\displaystyle circle-plus operator"; +beginchar(chars.math_circle_plus_disp,18u#,0,14/6dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +lft x6=u; x2=w-x6; y2=.5[h,-d]; y8-y4=x2-x6; +circle_points(bourstem); +pos9(bourstem,angle(direction 2 of _circle_path)); +pos10(bourstem,angle(direction 6 of _circle_path)+180); +pos11(bourstem,angle(direction 4 of _circle_path)); +pos12(bourstem,angle(direction 8 of _circle_path)+180); +z9=z2+curve*unitvector(z6-z2); z10=z6+curve*unitvector(z2-z6); +z11=z4+curve*unitvector(z8-z4); z12=z8+curve*unitvector(z4-z8); +path p; +filldraw draw_circle.l; +p:=subpath (0,2) of (draw_circle.r); +tim1=xpart(p intersectiontimes (.5[z9l,z10l]--2[z10l,z9l])); +tim2=xpart(p intersectiontimes (.5[z11l,z12l]--2[z11l,z12l])); +z100=whatever[z12l,z11l]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim1).zpet,rundy(p,tim2)) of p..z12l---obl(100,12l,9l)---z9l..cycle; +p:=subpath (2,4) of (draw_circle.r); +tim3=xpart(p intersectiontimes (.5[z9r,z10r]--2[z10r,z9r])); +tim4=xpart(p intersectiontimes (.5[z11l,z12l]--2[z12l,z11l])); +z101=whatever[z12l,z11l]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim3),rundy(p,tim4).zpet) of p..z11l---obl(101,11l,9r)---z9r..cycle; +p:=subpath (4,6) of (draw_circle.r); +tim5=xpart(p intersectiontimes (.5[z9r,z10r]--2[z9r,z10r])); +tim6=xpart(p intersectiontimes (.5[z11r,z12r]--2[z12r,z11r])); +z102=whatever[z12r,z11r]=whatever[z9r,z10r]; +infill subpath (rundy(p,tim6),rundy(p,tim5).zpet) of p..z10r---obl(102,10r,11r)---z11r..cycle; +p:=subpath (6,8) of (draw_circle.r); +tim7=xpart(p intersectiontimes (.5[z9l,z10l]--2[z9l,z10l])); +tim8=xpart(p intersectiontimes (.5[z11r,z12r]--2[z11r,z12r])); +z103=whatever[z12r,z11r]=whatever[z9l,z10l]; +infill subpath (rundy(p,tim7),rundy(p,tim8).zpet) of p..z12r---obl(103,12r,10l)---z10l..cycle; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_circle_division: +bskchar "Circle-division operator"; +beginarithchar(chars.math_circle_division); uni "0x2A38"; +adjust_fit(0,0); +pickup tiny.nib; +lft x6=u+.5rule_thickness; x2=w-x6; y0=y2=math_axis; top y8=h-.5rule_thickness; +x0=x8; circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +pos9(rule_thickness,90); pos10(rule_thickness,90); +.5[x9,x10]=x4=x11=x12; lft x9=rt x6r+u; y9=y10=math_axis; +.5[y11,y12]=y9; y11-y12=.75(x10-x9); +filldraw bskrule(9,10,hair,hair)---cycle; +dot(11); dot(12); +penlabels(9,10); +endchar; + +iff known chars.math_circle_circle: +bskchar "Circle-circle operator"; +beginarithchar(chars.math_circle_circle); uni "0x229A"; +adjust_fit(0,0); +pickup tiny.nib; +lft x6=u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness; +y2=y0; x0=x8; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +save x,y; +lft x6=4u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness-3u; +y2=y0; x0=x8; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +endchar; + +iff known chars.math_circle_equals: +bskchar "Circle-equals operator"; +compute_spread(.45x_height#,.55x_height#); +beginarithchar(chars.math_circle_equals); uni "0x229C"; +adjust_fit(0,0); +pickup tiny.nib; +pos11(rule_thickness,90); pos12(rule_thickness,90); +pos13(rule_thickness,90); pos14(rule_thickness,90); +lft x6=u; x2=w-x6; y2=math_axis; top y8=h; +lft x11=3u; x12+x11=w; x13=x11; x14=x12; +y11=y12; y13=y14; .5[y11,y13]=y2; y11-y13=spread; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +filldraw bskrule(11,12,hair,0); +filldraw bskrule(14,13,hair,0); +penlabels(11,12,13,14); +endchar; + +iff known chars.math_circle_bar: +bskchar "Circle-bar operator"; +beginarithchar(chars.math_circle_bar); uni "0x229D"; +adjust_fit(0,0); +pickup tiny.nib; +pos9(hair,90); pos10(hair,90); +lft x6=u+.5rule_thickness; x2=w-x6; y2=y9=y10=math_axis; top y8=h-.5rule_thickness; +y2=y0; x0=x8; +.5[x9,x10]=x8; x10-x9=1/2(x2r-x6r); +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +filldraw bskrule(9,10,.5hair,.5hair); +penlabels(9,10); +endchar; + +iff known chars.math_circle_asterisk: +bskchar "Circle-asterisk operator"; +beginarithchar(chars.math_circle_asterisk); uni "0x229B"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size, ast, vast; +path p; +lft x6=u+.5rule_thickness; x2=w-x6; y0=y2=math_axis; top y8=h-.5rule_thickness; +x0=x8; circle_points(rule_thickness); +z9=(x8,y2); ast:=3/4stem; vast=.7stem; +pos10(ast,0); x10=x9; +size=1/3h; if (size+.5ast)*cosd(30) > (lft w)-u-x9: + size:= (lft w-u-x9)/cosd(30)-.5ast; fi; +y10=y9+size; +p:=z9---z10r{dir120}..z10l---z9; +p:=subpath (xpart(p intersectiontimes ((x9,y9+vast)--(w,y9+vast))), + xpart(p intersectiontimes ((x9,y9+vast)--(0,y9+vast)))) of p; +filldraw draw_circle.l; +infill draw_circle.r; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z9,i).. endfor cycle; +labels(9); penlabels(10); +endchar; + +iff known chars.math_circle_triangle: +bskchar "Circle-triangle operator"; +beginarithchar(chars.math_circle_triangle); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x6=u+.5rule_thickness; x2=w-x6; y0=y2=math_axis; top y8=h-.5rule_thickness; +x0=x8; circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +x11=.5[x9,x10]=.5w; x10-x9=1.5(y11-y9)=w-7u; +y9=y10; 1/3[y9,y11]=math_axis; +y9'=y10'=y9+(rule_thickness-currentbreadth); +x9'-x9=x10-x10'=(rule_thickness-currentbreadth)/cosd(angle(z11-z9)); +z11'=z10'+whatever*(z11-z10)=z9'+whatever*(z11-z9); +filldraw obl(9,11,10)---obl(10,9,11)---obl(11,10,9)---cycle; +oblu:=2oblu; +infill obl(9',11',10')---obl(10',9',11')---obl(11',10',9')---cycle; +labels(9,9',10,10',11,11',12,12'); +endchar; + +iff known chars.math_circle_less: +bskchar "Circle-less than operator"; +beginarithchar(chars.math_circle_less); uni "0x29C0"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +lft x6=u+.5rule_thickness; x2=w-x6; y0=y2=math_axis; top y8=h-.5rule_thickness; +x0=x8; circle_points(rule_thickness); +p0:=draw_circle; +pos9(whatever,0); pos10(rule_thickness,angle(direction 1 of p0)); +pos11(rule_thickness,angle(direction 3 of p0)); +z9l=z6; z10=z1; z11=z3; z9r=z11l+whatever*(z9l-z11r); +filldraw draw_circle.l; +p0:=draw_circle.r; +p1:=z10l--z9l; +p2:=z9l--z11r; +p3:=z11l--z9r; +p4:=z9r--z10r; +(tim0,tim1)=subpath(0,2) of p0 intersectiontimes p1; +(tim2-2,tim3)=subpath(2,4) of p0 intersectiontimes p2; +(tim4-5,tim5)=subpath(5,8) of p0 intersectiontimes p1; +(tim6-4,tim7)=subpath(4,7) of p0 intersectiontimes p2; +(tim8,tim9)=subpath(0,2) of p0 intersectiontimes p4; +(tim10-2,tim11)=subpath(2,4) of p0 intersectiontimes p3; +oblu:=2oblu; +infill subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim5).zpet) of p1 + ..subpath(rundy(p0,tim4),length p0) of p0&cycle; +infill subpath(rundy(p0,tim2),rundy(p0,tim6).zpet) of p0 + ..subpath(rundy(p2,tim7),rundy(p2,tim3).zpet) of p2..cycle; +infill subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0 + ..subpath(rundy(p3,tim11),rundy(p3,1).zpet) of p3 + ..subpath(rundy(p4,0),rundy(p4,tim9).zpet) of p4..cycle; +penlabels(9,10,11); +endchar; + +iff known chars.math_circle_greater: +bskchar "Circle-greater than operator"; +beginarithchar(chars.math_circle_greater); uni "0x29C1"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +lft x6=u+.5rule_thickness; x2=w-x6; y0=y2=math_axis; top y8=h-.5rule_thickness; +x0=x8; circle_points(rule_thickness); +p0:=draw_circle; +pos9(whatever,180); pos10(rule_thickness,angle(direction 7 of p0)); +pos11(rule_thickness,angle(direction 5 of p0)); +z9l=z2; z10=z7; z11=z5; z9r=z11r+whatever*(z9l-z11l); +filldraw draw_circle.l; +p0:=draw_circle.r; +p1:=z9l--z10r; +p2:=z11l--z9l; +p3:=z9r--z11r; +p4:=z10l--z9r; +(tim0-1,tim1)=subpath(1,3) of p0 intersectiontimes p1; +(tim2-1,tim3)=subpath(1,3) of p0 intersectiontimes p2; +(tim4-6,tim5)=subpath(6,8) of p0 intersectiontimes p1; +(tim6-4,tim7)=subpath(4,6) of p0 intersectiontimes p2; +(tim8-4,tim9)=subpath(4,6) of p0 intersectiontimes p3; +(tim10-6,tim11)=subpath(6,8) of p0 intersectiontimes p4; +oblu:=2oblu; +infill subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim5).zpet) of p1 + ..subpath(rundy(p0,tim4),length p0) of p0&cycle; +infill subpath(rundy(p0,tim2),rundy(p0,tim6).zpet) of p0 + ..subpath(rundy(p2,tim7),rundy(p2,tim3).zpet) of p2..cycle; +infill subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0 + ..subpath(rundy(p4,0),rundy(p4,tim9).zpet) of p4 + ..subpath(rundy(p3,tim11),rundy(p3,1).zpet) of p3..cycle; +penlabels(9,10,11); +endchar; + +iff known chars.math_circle_vee: +bskchar "Circle-vee operator"; +beginarithchar(chars.math_circle_vee); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +lft x6=u+.5rule_thickness; x2=w-x6; y0=y2=math_axis; top y8=h-.5rule_thickness; +x0=x8; circle_points(rule_thickness); +p0:=draw_circle; +pos9(whatever,90); pos10(rule_thickness,angle(direction 1 of p0)); +pos11(rule_thickness,angle(direction 7 of p0)); +z9l=z4; z10=z1; z11=z7; z9r=z11r+whatever*(z9l-z11l); +filldraw draw_circle.l; +p0:=draw_circle.r; +p1:=z9l--z10r; +p2:=z11l--z9l; +p3:=z9r--z11r; +p4:=z10l--z9r; +(tim0,tim1)=subpath(0,2) of p0 intersectiontimes p1; +(tim2-3,tim3)=subpath(3,5) of p0 intersectiontimes p2; +(tim4-3,tim5)=subpath(3,5) of p0 intersectiontimes p1; +(tim6-6,tim7)=subpath(6,8) of p0 intersectiontimes p2; +(tim8-6,tim9)=subpath(6,8) of p0 intersectiontimes p3; +(tim10,tim11)=subpath(0,2) of p0 intersectiontimes p4; +oblu:=2oblu; +infill subpath(rundy(p0,tim0),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),rundy(p1,tim1).zpet) of p1..cycle; +infill subpath(rundy(p0,tim2),rundy(p0,tim6).zpet) of p0 + ..subpath(rundy(p2,tim7),rundy(p2,tim3).zpet) of p2..cycle; +infill subpath(rundy(p0,tim8),8+rundy(p0,tim10).zpet) of p0 + ..subpath(rundy(p4,tim11),rundy(p4,1).zpet) of p4 + ..subpath(rundy(p3,0),rundy(p3,tim9).zpet) of p3..cycle; +penlabels(9,10,11); +endchar; + +iff known chars.math_circle_wedge: +bskchar "Circle-wedge operator"; +beginarithchar(chars.math_circle_wedge); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +lft x6=u+.5rule_thickness; x2=w-x6; y0=y2=math_axis; top y8=h-.5rule_thickness; +x0=x8; circle_points(rule_thickness); +p0:=draw_circle; +pos9(whatever,90); pos10(rule_thickness,angle(direction 3 of p0)); +pos11(rule_thickness,angle(direction 5 of p0)); +z9l=z8; z10=z3; z11=z5; z9r=z11l+whatever*(z9l-z11r); +filldraw draw_circle.l; +p0:=draw_circle.r; +p1:=z10l--z9l; +p2:=z9l--z11r; +p3:=z11l--z9r; +p4:=z9r--z10r; +(tim0,tim1)=subpath(0,1) of p0 intersectiontimes p1; +(tim2-4,tim3)=subpath(4,6) of p0 intersectiontimes p2; +(tim4-2,tim5)=subpath(2,4) of p0 intersectiontimes p1; +(tim6-7,tim7)=subpath(7,8) of p0 intersectiontimes p2; +(tim8-2,tim9)=subpath(2,4) of p0 intersectiontimes p4; +(tim10-4,tim11)=subpath(4,6) of p0 intersectiontimes p3; +oblu:=2oblu; +infill subpath(rundy(p0,tim0),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p1,tim5),rundy(p1,tim1).zpet) of p1..cycle; +infill subpath(rundy(p0,tim2),rundy(p0,tim6).zpet) of p0 + ..subpath(rundy(p2,tim7),rundy(p2,tim3).zpet) of p2..cycle; +infill subpath(rundy(p0,tim8),rundy(p0,tim10).zpet) of p0 + ..subpath(rundy(p3,tim11),rundy(p3,1).zpet) of p3 + ..subpath(rundy(p4,0),rundy(p4,tim9).zpet) of p4..cycle; +penlabels(9,10,11); +endchar; + +iff known chars.math_circle_copy: +bskchar "Circle for copyright"; +beginchar(chars.math_circle_copy,20u#,asc_height#,desc_depth#); uni "0x25EF"; +pickup tiny.nib; +adjust_fit(0,0); +lft x6=u; x2=w-x6; y2=.5[h,-d]; top y8=h; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +endchar; + +iff known chars.math_oblong: +bskchar "Oblong"; +beginchar(chars.math_oblong,11u#,.8asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; top y1r=h; bot y4r=-d; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,4l,2l)---obl(2l,1l,3l)---obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_oblong_tall: +compute_spread(.45x_height#,.55x_height#); +bskchar "Tall oblong"; +beginchar(chars.math_oblong_tall,8u#,body_height#,paren_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +x1=x4; x2=x3; .5[x1,x2]=.5w; x2-x1=spread; +y1=y2; y3=y4; top y1r=h; bot y4r=-d; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,4l,2l)---obl(2l,1l,3l)---obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_qed: +bskchar "End-of-proof sign"; +beginchar(chars.math_qed,10u#,.8asc_height#,0); uni "0x220E"; +adjust_fit(0,0); +pickup tiny.nib; +lft x1=lft x4=u; x2=x3=w-x1; +top y1=top y2=h; bot y3=bot y4=-d; +filldraw obl(1,4,2)---obl(2,1,3)---obl(3,2,4)---obl(4,3,1)---cycle; +labels(1,2,3,4); +endchar; + +iff known chars.math_box_operator_black: +bskchar "Black-box operator"; +beginarithchar(chars.math_box_operator_black); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1-y3=x2-x1; +filldraw obl(1,4,2)---obl(2,1,3)---obl(3,2,4)---obl(4,3,1)---cycle; +labels(1,2,3,4); +endchar; + +iff known chars.math_box_operator: +bskchar "Box operator"; +beginarithchar(chars.math_box_operator); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,4l,2l)---obl(2l,1l,3l)---obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_box_plus: +bskchar "Box-plus operator"; +beginarithchar(chars.math_box_plus); uni "0x229E"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +pos5(rule_thickness,90); pos6(rule_thickness,0); +pos7(rule_thickness,-90); pos8(rule_thickness,180); +z5=.5[z1l,z4l]; z6=.5[z1l,z2l]; z7=.5[z2l,z3l]; z8=.5[z3l,z4l]; +z5'=(x6l,y5r); z6'=(x6r,y7l); z7'=(x8l,y7r); z8'=(x8r,y5l); +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,5r,6l)---obl(6l,1l,5')---obl(5',6l,5r)---obl(5r,5',1l)---cycle; +infill obl(2l,6r,7l)---obl(7l,2l,6')---obl(6',7l,6r)---obl(6r,6',2l)---cycle; +infill obl(3l,7r,8l)---obl(8l,3l,7')---obl(7',8l,7r)---obl(7r,7',3l)---cycle; +infill obl(4l,8r,5l)---obl(5l,4l,8')---obl(8',5l,8r)---obl(8r,8',4l)---cycle; +penlabels(1,2,3,4,5,6,7,8); labels(5',6',7',8'); +endchar; + +iff known chars.math_box_times: +bskchar "Box-times operator"; +beginarithchar(chars.math_box_times); uni "0x22A0"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +pos5(rule_thickness,45); pos6(rule_thickness,-45); +pos7(rule_thickness,-135); pos8(rule_thickness,-225); +for i=5 upto 8: z[i]=z[i-4]l; endfor; +z5'=whatever[z5r,z7l]=whatever[z6l,z8r]; z6'=whatever[z6r,z8l]=whatever[z5r,z7l]; +z7'=whatever[z5l,z7r]=whatever[z6r,z8l]; z8'=whatever[z6l,z8r]=whatever[z5l,z7r]; +z5'r=whatever[z5',z5r]=whatever[z1l,z2l]; z6'l=whatever[z5',z6l]=whatever[z1l,z2l]; +z6'r=whatever[z6',z6r]=whatever[z2l,z3l]; z7'l=whatever[z6',z7l]=whatever[z2l,z3l]; +z7'r=whatever[z7',z7r]=whatever[z3l,z4l]; z8'l=whatever[z7',z8l]=whatever[z3l,z4l]; +z8'r=whatever[z8',z8r]=whatever[z1l,z4l]; z5'l=whatever[z8',z5l]=whatever[z1l,z4l]; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(5'r,5',6'l).more---obl(6'l,5'r,5').more---obl(5',6'l,5'r)---cycle; +infill obl(6'r,6',7'l).more---obl(7'l,6'r,6').more---obl(6',7'l,6'r)---cycle; +infill obl(7'r,7',8'l).more---obl(8'l,7'r,7').more---obl(7',8'l,7'r)---cycle; +infill obl(8'r,8',5'l).more---obl(5'l,8'r,8').more---obl(8',5'l,8'r)---cycle; +penlabels(1,2,3,4,5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.math_box_divide: +bskchar "Box-divide operator"; +beginarithchar(chars.math_box_divide); uni "0x29C4"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +pos5(rule_thickness,-45); pos6(rule_thickness,-45); +z5=z2l; z6=z4l; +z5'l=whatever[z6l,z5l]=whatever[z1l,z2l]; z5'r=whatever[z6r,z5r]=whatever[z3l,z2l]; +z6'l=whatever[z6r,z5r]=whatever[z3l,z4l]; z6'r=whatever[z6l,z5l]=whatever[z1l,z4l]; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(3l,6'l,5'r)---obl(5'r,3l,6'l).more---obl(6'l,5'r,3l).more---cycle; +infill obl(1l,6'r,5'l)---obl(5'l,1l,6'r).more---obl(6'r,5'l,1l).more---cycle; +penlabels(1,2,3,4,5,5',6,6'); +endchar; + +iff known chars.math_box_set_minus: +bskchar "Box-set minus operator"; +beginarithchar(chars.math_box_set_minus); uni "0x29C5"; +adjust_fit(0,0); +pickup tiny.nib; +oblu.more:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +pos5(rule_thickness,45); pos6(rule_thickness,45); +z5=z1l; z6=z3l; +z5'l=whatever[z6r,z5r]=whatever[z1l,z2l]; z5'r=whatever[z6l,z5l]=whatever[z4l,z1l]; +z6'r=whatever[z6l,z5l]=whatever[z3l,z4l]; z6'l=whatever[z6r,z5r]=whatever[z2l,z3l]; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(4l,6'r,5'r)---obl(5'r,4l,6'r).more---obl(6'r,5'r,4l).more---cycle; +infill obl(2l,6'l,5'l)---obl(5'l,2l,6'l).more---obl(6'l,5'l,2l).more---cycle; +penlabels(1,2,3,4,5,5',6,6'); +endchar; + +iff known chars.math_box_minus: +bskchar "Box-minus operator"; +beginarithchar(chars.math_box_minus); uni "0x229F"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +y5=y6=math_axis; x5=x1l; x6=x2l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,5r,2l)---obl(2l,1l,6r)---obl(6r,2l,5r)---obl(5r,6r,1l)---cycle; +infill obl(4l,5l,3l)---obl(3l,4l,6l)---obl(6l,3l,5l)---obl(5l,6l,4l)---cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_box_vbar: +bskchar "Box-vertical bar operator"; +beginarithchar(chars.math_box_vbar); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +pos5(rule_thickness,0); pos6(rule_thickness,0); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +x5=x6=.5w; y5=y1l; y6=y3l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,5l,4l)---obl(4l,1l,6l)---obl(6l,4l,5l)---obl(5l,6l,1l)---cycle; +infill obl(2l,5r,3l)---obl(3l,2l,6r)---obl(6r,3l,5r)---obl(5r,6r,2l)---cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_box_bar_top: +bskchar "Box-bar top operator"; +beginarithchar(chars.math_box_bar_top); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,0); pos8(rule_thickness,0); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +y5=y6=math_axis; x5=x1l; x6=x2l; x7=x8=.5w; y7=y5r; y8=y1l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,5r,8l)---obl(8l,1l,7l)---obl(7l,8l,5r)---obl(5r,7l,1l)---cycle; +infill obl(2l,6r,8r)---obl(8r,2l,7r)---obl(7r,8r,6r)---obl(6r,7r,2l)---cycle; +infill obl(4l,5l,3l)---obl(3l,4l,6l)---obl(6l,3l,5l)---obl(5l,6l,4l)---cycle; +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_box_bar_bot: +bskchar "Box-bar bottom operator"; +beginarithchar(chars.math_box_bar_bot); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,0); pos8(rule_thickness,0); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +y5=y6=math_axis; x5=x1l; x6=x2l; x7=x8=.5w; y7=y5l; y8=y4l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,5r,2l)---obl(2l,1l,6r)---obl(6r,2l,5r)---obl(5r,6r,1l)---cycle; +infill obl(4l,5l,8l)---obl(8l,4l,7l)---obl(7l,8l,5l)---obl(5l,7l,4l)---cycle; +infill obl(6l,3l,7r)---obl(7r,6l,8r)---obl(8r,7r,3l)---obl(3l,8r,6l)---cycle; +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_box_bar_right: +bskchar "Box-bar right operator"; +beginarithchar(chars.math_box_bar_right); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +pos5(rule_thickness,0); pos6(rule_thickness,0); +pos7(rule_thickness,90); pos8(rule_thickness,90); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +x5=x6=.5w; y5=y1l; y6=y3l; y7=y8=math_axis; x7=x5r; x8=x2l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,5l,4l)---obl(4l,1l,6l)---obl(6l,4l,5l)---obl(5l,6l,1l)---cycle; +infill obl(2l,8r,5r)---obl(5r,2l,7r)---obl(7r,5r,8r)---obl(8r,7r,2l)---cycle; +infill obl(3l,6r,8l)---obl(8l,3l,7l)---obl(7l,8l,6r)---obl(6r,7l,3l)---cycle; +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_box_bar_left: +bskchar "Box-bar left operator"; +beginarithchar(chars.math_box_bar_left); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +pos5(rule_thickness,0); pos6(rule_thickness,0); +pos7(rule_thickness,90); pos8(rule_thickness,90); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +x5=x6=.5w; y5=y1l; y6=y3l; y7=y8=math_axis; x7=x1l; x8=x5l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,5l,7r)---obl(7r,1l,8r)---obl(8r,7r,5l)---obl(5l,8r,1l)---cycle; +infill obl(4l,7l,6l)---obl(6l,4l,8l)---obl(8l,6l,7l)---obl(7l,8l,4l)---cycle; +infill obl(2l,5r,3l)---obl(3l,2l,6r)---obl(6r,3l,5r)---obl(5r,6r,2l)---cycle; +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_box_dot: +bskchar "Box-dot operator"; +beginarithchar(chars.math_box_dot); uni "0x22A1"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +z0=.5[z1,z3]; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,4l,2l)---obl(2l,1l,3l)---obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +dot(0); +penlabels(1,2,3,4); +endchar; + +iff known chars.math_box_asterisk: +bskchar "Box-asterisk operator"; +beginarithchar(chars.math_box_asterisk); uni "0x29C6"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size, ast, vast; +path p; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,4l,2l)---obl(2l,1l,3l)---obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +z5=.5[z1l,z3l]; ast:=3/4stem; vast=.7stem; +pos6(ast,0); x6=x5; +size=1/3h; if (size+.5ast)*cosd(30) > (lft w)-u-x5: + size:= (lft w-u-x5)/cosd(30)-.5ast; fi; +y6=y5+size; +p:=z5---z6r{dir120}..z6l---z5; +p:=subpath (xpart(p intersectiontimes ((x5,y5+vast)--(w,y5+vast))), + xpart(p intersectiontimes ((x5,y5+vast)--(0,y5+vast)))) of p; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z5,i).. endfor cycle; +penlabels(1,2,3,4,6); labels(5); +endchar; + +iff known chars.math_box_circle: +bskchar "Box-circle operator"; +beginarithchar(chars.math_box_circle); uni "0x29C7"; +adjust_fit(0,0); +pickup tiny.nib; +pos9(rule_thickness,90); pos10(rule_thickness,90); +pos11(rule_thickness,270); pos12(rule_thickness,270); +lft x9=lft x12=u; x10=x11=w-x9; +y9=y10; y11=y12; .5[y9,y11]=math_axis; y9r-y11r=x10-x9; +x9l:=x12l:=x9l+rule_thickness-currentbreadth; x10l:=x11l:=w-x9l; +filldraw obl(9r,12r,10r)---obl(10r,9r,11r)---obl(11r,10r,12r)---obl(12r,11r,9r)---cycle; +infill obl(9l,12l,10l)---obl(10l,9l,11l)---obl(11l,10l,12l)---obl(12l,11l,9l)---cycle; +lft x6=4u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness-3u; +y2=y0; x0=x8; +circle_points(rule_thickness); +filldraw draw_circle.l; +infill draw_circle.r; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_box_triangle: +bskchar "Box-triangle operator"; +beginarithchar(chars.math_box_triangle); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,4l,2l)---obl(2l,1l,3l)---obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +x7=.5[x5,x6]=.5w; x6-x5=1.5(y7-y5)=w-7u; +y5=y6; 1/3[y5,y7]=math_axis; +y5'=y6'=y5+(rule_thickness-currentbreadth); +x5'-x5=x6-x6'=(rule_thickness-currentbreadth)/cosd(angle(z7-z5)); +z7'=z6'+whatever*(z7-z6)=z5'+whatever*(z7-z5); +filldraw obl(5,7,6)---obl(6,5,7)---obl(7,6,5)---cycle; +oblu:=2oblu; +infill obl(5',7',6')---obl(6',5',7')---obl(7',6',5')---cycle; +penlabels(1,2,3,4); labels(5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.math_box_division: +bskchar "Box-division operator"; +beginarithchar(chars.math_box_division); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,4l,2l)---obl(2l,1l,3l)---obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +pos5(rule_thickness,90); pos6(rule_thickness,90); +.5[x5,x6]=.5w=x7=x8; lft x5=rt x1l+u; y5=y6=math_axis; +.5[y7,y8]=y5; y7-y8=.75(x6-x5); +filldraw bskrule(5,6,hair,hair)---cycle; +dot(7); dot(8); +penlabels(1,2,3,4); penlabels(5,6); +endchar; + +iff known chars.math_box_box: +bskchar "Box-box operator"; +beginarithchar(chars.math_box_box); uni "0x29C8"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,270); pos4(rule_thickness,270); +pos5(rule_thickness,90); pos6(rule_thickness,90); +pos7(rule_thickness,270); pos8(rule_thickness,270); +lft x1=lft x4=u; x2=x3=w-x1; +y1=y2; y3=y4; .5[y1,y3]=.5[y5,y7]=math_axis; y1r-y3r=x2-x1; +x1l:=x4l:=x1l+rule_thickness-currentbreadth; x2l:=x3l:=w-x1l; +.5[x1,x2]=.5[x5,x7]; x5=x8; x6=x7; y5=y6; y7=y8; y5r-y7r=x6-x5=w-7u; +x5l:=x8l:=x5l+rule_thickness-currentbreadth; x6l:=x7l:=w-x5l; +filldraw obl(1r,4r,2r)---obl(2r,1r,3r)---obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +infill obl(1l,4l,2l)---obl(2l,1l,3l)---obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +filldraw obl(5r,8r,6r)---obl(6r,5r,7r)---obl(7r,6r,8r)---obl(8r,7r,5r)---cycle; +infill obl(5l,8l,6l)---obl(6l,5l,7l)---obl(7l,6l,8l)---obl(8l,7l,5l)---cycle; +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_diamond_wider: +bskchar "Wider diamond"; +beginarithchar(chars.math_diamond_wider); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=math_axis; x2=x4=.5w; y4l=h+o; +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +oblu:=2oblu; +infill obl(1r,4r,2r)---obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_diamond_triangle: +bskchar "Diamond-triangle operator"; +beginarithchar(chars.math_diamond_triangle); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=math_axis; x2=x4=.5w; y4l=h+o; +x7=.5[x5,x6]=.5w; x6-x5=1.5(y7-y5)=w-7.5u; +y5=y6; .2[y5,y7]=math_axis; +y5'=y6'=y5+(rule_thickness-currentbreadth); +x5'-x5=x6-x6'=(rule_thickness-currentbreadth)/cosd(angle(z7-z5)); +z7'=z6'+whatever*(z7-z6)=z5'+whatever*(z7-z5); +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +oblu:=2oblu; +infill obl(1r,4r,2r)---obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +oblu:=f_obl; +filldraw obl(5,7,6)---obl(6,5,7)---obl(7,6,5)---cycle; +oblu:=2oblu; +infill obl(5',7',6')---obl(6',5',7')---obl(7',6',5')---cycle; +penlabels(1,2,3,4); labels(5,5',6,6',7,7',8,8'); +endchar; + +iff known chars.math_diamond_circle: +bskchar "Diamond-circle operator"; +beginarithchar(chars.math_diamond_circle); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x6=4u+.5rule_thickness; x2=w-x6; y2=math_axis; top y8=h-.5rule_thickness-3u; +y2=y0; x0=x8; +circle_points(rule_thickness); +pos9(rule_thickness,0); pos10(rule_thickness,90); pos11(rule_thickness,180); pos12(rule_thickness,270); +lft x9l=u; rt x11l=w-u; y9=y11=.5[y10,y12]=math_axis; x10=x12=.5w; y12l=h+o; +filldraw obl(9l,12l,10l)---obl(10l,9l,11l)--obl(11l,10l,12l)---obl(12l,11l,9l)---cycle; +oblu:=2oblu; +infill obl(9r,12r,10r)---obl(10r,9r,11r)--obl(11r,10r,12r)---obl(12r,11r,9r)---cycle; +filldraw draw_circle.l; +infill draw_circle.r; +penlabels(9,10,11,12); +endchar; + +iff known chars.math_diamond_minus: +bskchar "Diamond-minus operator"; +beginarithchar(chars.math_diamond_minus); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=math_axis=y5=y6; x2=x4=.5w; y4l=h+o; +x5=x1; x6=x3; +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +oblu:=2oblu; +p0=obl(4r,3r,1r)---obl(1r,4r,2r)---obl(2r,1r,3r)--obl(3r,2r,4r)---cycle; +p1=z6l--z5l; +p2=z5r--z6r; +(tim0,tim1)=subpath(0,3) of p0 intersectiontimes p1; +(tim2-3,tim3)=subpath(3,length p0) of p0 intersectiontimes p1; +(tim4,tim5)=subpath(0,3) of p0 intersectiontimes p2; +(tim6-6,tim7)=subpath(6,length p0) of p0 intersectiontimes p2; +infill subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0 + ..subpath(rundy(p1,tim3),rundy(p1,tim1).zpet) of p1..cycle; +infill subpath(rundy(p0,tim6),length p0) of p0 + ..subpath(0,rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p2,tim5),rundy(p2,tim7).zpet) of p2..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_diamond_vbar: +bskchar "Diamond-vertical bar operator"; +beginarithchar(chars.math_diamond_vbar); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +pos5(rule_thickness,180); pos6(rule_thickness,180); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=math_axis; x2=x4=x5=x6=.5w; y4l=h+o; +y5=y2; y6=y4; +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +oblu:=2oblu; +p0=obl(1r,4r,2r)---obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +p1=z6l--z5l; +p2=z5r--z6r; +(tim0,tim1)=subpath(0,3) of p0 intersectiontimes p1; +(tim2-3,tim3)=subpath(3,length p0) of p0 intersectiontimes p1; +(tim4,tim5)=subpath(0,3) of p0 intersectiontimes p2; +(tim6-6,tim7)=subpath(6,length p0) of p0 intersectiontimes p2; +infill subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0 + ..subpath(rundy(p1,tim3),rundy(p1,tim1).zpet) of p1..cycle; +infill subpath(rundy(p0,tim6),length p0) of p0 + ..subpath(0,rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p2,tim5),rundy(p2,tim7).zpet) of p2..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_diamond_plus: +bskchar "Diamond-plus operator"; +beginarithchar(chars.math_diamond_plus); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +pos5(rule_thickness,180); pos6(rule_thickness,180); +pos7(rule_thickness,90); pos8(rule_thickness,90); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=y7=y8=math_axis; x2=x4=x5=x6=.5w; y4l=h+o; +y5=y2; y6=y4; x7=x1; x8=x3; +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +oblu:=2oblu; +p0=obl(1r,4r,2r)---obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +p5=obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---obl(1r,4r,2r)---cycle; +p1=z6l--z5l; +p2=z5r--z6r; +p3=z8l--z7l; +p4=z7r--z8r; +(tim0,tim1)=subpath(0,2) of p0 intersectiontimes p3; +(tim2-1,tim3)=subpath(1,length p0) of p0 intersectiontimes p2; +(tim4,tim5)=p2 intersectiontimes p3; +(tim6-2,tim7)=subpath(2,4) of p0 intersectiontimes p1; +(tim8-4,tim9)=subpath(4,6) of p0 intersectiontimes p3; +(tim10,tim11)=p3 intersectiontimes p1; +(tim12-4,tim13)=subpath(4,6) of p0 intersectiontimes p4; +(tim14-6,tim15)=subpath(6,8) of p0 intersectiontimes p1; +(tim16,tim17)=p1 intersectiontimes p4; +(tim18-4,tim19)=subpath(4,7) of p5 intersectiontimes p2; +(tim20-6,tim21)=subpath(6,length p5) of p5 intersectiontimes p4; +(tim22,tim23)=p4 intersectiontimes p2; +infill subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0 + ..subpath(rundy(p2,tim3),rundy(p2,tim4).zpet) of p2 + ..subpath(rundy(p3,tim5),rundy(p3,tim1).zpet) of p3..cycle; +infill subpath(rundy(p0,tim6),rundy(p0,tim8).zpet) of p0 + ..subpath(rundy(p3,tim9),rundy(p3,tim10).zpet) of p3 + ..subpath(rundy(p1,tim11),rundy(p1,tim7).zpet) of p1..cycle; +infill subpath(rundy(p0,tim12),rundy(p0,tim14).zpet) of p0 + ..subpath(rundy(p1,tim15),rundy(p1,tim16).zpet) of p1 + ..subpath(rundy(p4,tim17),rundy(p4,tim13).zpet) of p4..cycle; +infill subpath(rundy(p5,tim18),rundy(p5,tim20).zpet) of p5 + ..subpath(rundy(p4,tim21),rundy(p4,tim22).zpet) of p4 + ..subpath(rundy(p2,tim23),rundy(p2,tim19).zpet) of p2..cycle; +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_diamond_times: +bskchar "Diamond-times operator"; +beginarithchar(chars.math_diamond_times); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +pos5(rule_thickness,225); pos6(rule_thickness,225); +pos7(rule_thickness,135); pos8(rule_thickness,135); +lft x1l=u; rt x3l=w-u; y1=y3=.5[y2,y4]=math_axis; x2=x4=.5w; y4l=h+o; +z5=.5[z2,z3]; z6=.5[z1,z4]; z7=.5[z1,z2]; z8=.5[z3,z4]; +filldraw obl(1l,4l,2l)---obl(2l,1l,3l)--obl(3l,2l,4l)---obl(4l,3l,1l)---cycle; +oblu:=2oblu; +p0=obl(1r,4r,2r)---obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---cycle; +p5=obl(2r,1r,3r)--obl(3r,2r,4r)---obl(4r,3r,1r)---obl(1r,4r,2r)---cycle; +p1=z6l--z5l; +p2=z5r--z6r; +p3=z8l--z7l; +p4=z7r--z8r; +(tim0,tim1)=subpath(0,2) of p0 intersectiontimes p3; +(tim2-1,tim3)=subpath(1,length p0) of p0 intersectiontimes p2; +(tim4,tim5)=p2 intersectiontimes p3; +(tim6-2,tim7)=subpath(2,4) of p0 intersectiontimes p1; +(tim8-4,tim9)=subpath(4,6) of p0 intersectiontimes p3; +(tim10,tim11)=p3 intersectiontimes p1; +(tim12-4,tim13)=subpath(4,6) of p0 intersectiontimes p4; +(tim14-6,tim15)=subpath(6,8) of p0 intersectiontimes p1; +(tim16,tim17)=p1 intersectiontimes p4; +(tim18-4,tim19)=subpath(4,7) of p5 intersectiontimes p2; +(tim20-6,tim21)=subpath(6,length p5) of p5 intersectiontimes p4; +(tim22,tim23)=p4 intersectiontimes p2; +infill subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0 + ..subpath(rundy(p2,tim3),rundy(p2,tim4).zpet) of p2 + ..subpath(rundy(p3,tim5),rundy(p3,tim1).zpet) of p3..cycle; +infill subpath(rundy(p0,tim6),rundy(p0,tim8).zpet) of p0 + ..subpath(rundy(p3,tim9),rundy(p3,tim10).zpet) of p3 + ..subpath(rundy(p1,tim11),rundy(p1,tim7).zpet) of p1..cycle; +infill subpath(rundy(p0,tim12),rundy(p0,tim14).zpet) of p0 + ..subpath(rundy(p1,tim15),rundy(p1,tim16).zpet) of p1 + ..subpath(rundy(p4,tim17),rundy(p4,tim13).zpet) of p4..cycle; +infill subpath(rundy(p5,tim18),rundy(p5,tim20).zpet) of p5 + ..subpath(rundy(p4,tim21),rundy(p4,tim22).zpet) of p4 + ..subpath(rundy(p2,tim23),rundy(p2,tim19).zpet) of p2..cycle; +penlabels(1,2,3,4,5,6,7,8); +endchar; + +iff known chars.math_prime: +bskchar "Prime symbol"; +beginchar(chars.math_prime,4u#+curve#,.8asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y2=u; y1+.5curve=h; x2=.5u+.5stem; x1+.5curve=w-.5curve; +numeric theta; theta:=angle(z1-z2)-90; +penpos1(curve,theta); pos2(stem,theta); +z1'=z1l+.5curve*dir(theta+50); +bskpoints(2,1,curve,curve); +filldraw z1ll{dir(angle(z2l-z1l)+5)}...z2l&z2l..z2rr---z1r...z1'..cycle; +penlabels(1,2); labels(1',1ll,2rr); +endchar; + +charscription(4u,asc_height,0)( +h-y2=.7(.8asc_height-u); y1+.35curve=h; x2=.5u+.35stem; x1+.35curve=w-.35curve; +numeric theta; theta:=angle(z1-z2)-90; +penpos1(.7curve,theta); pos2(.7stem,theta); +z1'=z1l+.35curve*dir(theta+50); +bskpoints(2,1,.7curve,.7curve); +filldraw z1ll{dir(angle(z2l-z1l)+5)}...z2l&z2l..z2rr---z1r...z1'..cycle; +penlabels(1,2); labels(1',1ll,2rr); +); + +iff known chars.sign_prime: +bskchar "Prime sign (superscript)"; +beginchar(chars.sign_prime,4u#,asc_height#,0); uni "0x2032"; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.sign_prime_double: +bskchar "Double prime sign (superscript)"; +beginchar(chars.sign_prime_double,7u#,asc_height#,0); uni "0x2033"; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +save x,y; +usechar shifted (WW-4u,0); +endchar; + +iff known chars.sign_prime_triple: +bskchar "Triple prime sign (superscript)"; +beginchar(chars.sign_prime_triple,10u#,asc_height#,0); uni "0x2034"; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +save x,y; +usechar shifted (WW-7u,0); +save x,y; +usechar shifted (WW-4u,0); +endchar; + +iff known chars.sign_prime_quadruple: +bskchar "Quadruple prime sign (superscript)"; +beginchar(chars.sign_prime_quadruple,13u#,asc_height#,0); uni "0x2057"; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +save x,y; +usechar shifted (WW-10u,0); +save x,y; +usechar shifted (WW-7u,0); +save x,y; +usechar shifted (WW-4u,0); +endchar; + +iff known chars.math_backprime: +bskchar "Back prime symbol"; +beginchar(chars.math_backprime,4u#+curve#,.8asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y2=u; y1+.5curve=h; x2=w-.5u-.5stem; x1-.5curve=.5curve; +numeric theta; theta:=angle(z1-z2)-90; +penpos1(curve,theta); pos2(stem,theta); +z1'=z1r+.5curve*dir(theta+140); +bskpoints(1,2,curve,curve); +filldraw z1rr{dir(angle(z2r-z1r)-5)}...z2r&z2r..z2ll---z1l...z1'..cycle; +penlabels(1,2); labels(1',1rr,2ll); +endchar; + +charscription(4u,asc_height,0)( +h-y2=.7(.8asc_height-u); y1+.35curve=h; x2=w-.5u-.35stem; x1-.35curve=.35curve; +numeric theta; theta:=angle(z1-z2)-90; +penpos1(.7curve,theta); pos2(.7stem,theta); +z1'=z1r+.35curve*dir(theta+140); +bskpoints(1,2,.7curve,.7curve); +filldraw z1rr{dir(angle(z2r-z1r)-5)}...z2r&z2r..z2ll---z1l...z1'..cycle; +penlabels(1,2); labels(1',1rr,2ll); +); + +iff known chars.sign_backprime: +bskchar "Back prime sign (superscript)"; +beginchar(chars.sign_backprime,4u#,asc_height#,0); uni "0x2035"; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.sign_backprime_double: +bskchar "Double back prime sign"; +beginchar(chars.sign_backprime_double,7u#,asc_height#,0); uni "0x2036"; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +save x,y; +usechar shifted (WW-4u,0); +endchar; + +iff known chars.sign_backprime_triple: +bskchar "Triple back prime sign"; +beginchar(chars.sign_backprime_triple,10u#,asc_height#,0); uni "0x2037"; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +save x,y; +usechar shifted (WW-7u,0); +save x,y; +usechar shifted (WW-4u,0); +endchar; + +iff known chars.math_sim: +bskchar "Similarity sign"; +beginchar(chars.math_sim, 14u#, v_center(.5x_height#)); uni "0x223C"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=h+d; +vlnka(0,1); +endchar; + +iff known chars.math_sim_thick: +bskchar "Thick similarity sign"; +beginchar(chars.math_sim_thick, 14u#, v_center(.5x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=h+d; +{{ numeric old_curve, old_hair; old_curve:=curve; old_hair:=hair; + save curve, hair; numeric curve, hair; + curve:=1.5old_curve; hair:=1.5old_hair; + vlnka(0,1); +}}; +endchar; + +iff known chars.math_sim_dots: +bskchar "Similarity sign with dots"; +beginchar(chars.math_sim_dots, 14u#, v_center(x_height#)); uni "0x223B"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +x2=x3=.5w; .5[y2,y3]=.5[y0,y1]=math_axis; top y2+.5dot_size=h; +vlnka(0,1); +dot(2); dot(3); +endchar; + +iff known chars.math_sim_dot: +bskchar "Similarity sign with dot"; +beginchar(chars.math_sim_dot, 14u#, v_center(x_height#)); uni "0x2A6A"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +x2=.5w; .5[y0,y1]=math_axis; top y2+.5dot_size=h; +vlnka(0,1); +dot(2); +endchar; + +iff known chars.math_sim_dots_rising: +bskchar "Similarity sign with rising dots"; +beginchar(chars.math_sim_dots_rising, 14u#, v_center(.8x_height#)); uni "0x2A6B"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +.5[x2,x3]=.5w; rt x2=x1a; +.5[y2,y3]=.5[y0,y1]=math_axis; top y2+.5dot_size=h; +vlnka(0,1); +dot(2); dot(3); +endchar; + +iff known chars.math_sim_BB: +bskchar "Blackboard-bold similarity sign"; +beginchar(chars.math_sim_BB, 14u#, v_center(.5x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=h+d; +{{ numeric old_curve, old_hair; old_curve:=curve; old_hair:=hair; + save curve, hair; numeric curve, hair; + curve:=1.5old_curve; hair:=1.5old_hair; + vlnka(0,1); +}}; +path p[]; numeric tim[]; +p100:=subpath(0,4) of _vlnka; +p101:=subpath(5,infinity) of _vlnka; +z100=bsktouch(subpath(0,2) of p100,dir135,p101,dir-45); +z101=bsktouch(subpath(2,infinity) of p100,dir135,p101,dir-45); +tim100=xpart(p100 intersectiontimes (z100--(x100,y0r-5))); +tim101=xpart(p101 intersectiontimes (z100--(x100,y1))); +tim102=xpart(p100 intersectiontimes (z101--(x101,y0))); +tim103=xpart(p101 intersectiontimes (z101--(x101,y1))); +oblu:=curve; +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.math_sim_not: +bskchar "Not similarity sign"; +beginchar(chars.math_sim_not, 14u#, v_center(.7x_height#)); uni "0x2241"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread, tim[]; spread:=.5x_height; +.5[y0,y1]=math_axis; +vlnka(0,1).nodraw; +top y2=h; bot y3=-d; .5[x2,x3]=.5w; x2=x1a; +pos2(rule_thickness,angle(z3-z2)+90); pos3(rule_thickness,angle(z3-z2)+90); +bskpoints(2,3,rule_thickness,rule_thickness); +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +p2:=z2l---z3ll..{z2-z3}z3r; +p3:=z3r---z2rr..{z3-z2}z2l; +(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,2oblu)).zpet) of p0 + ..subpath(rundy(p2,(tim1,2oblu)),infinity) of p2 + ..subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p0,tim2),infinity) of p0 + ..subpath(0,rundy(p1,(tim4,2oblu)).zpet) of p1 + ..subpath(rundy(p3,(tim5,2oblu)),infinity) of p3 + ..subpath(0,rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(p1,tim6),infinity) of p1..cycle; +penlabels(2,3); labels(2rr,3ll); +endchar; + +iff known chars.math_lazyS: +bskchar "Inverted lazy S sign"; +beginchar(chars.math_lazyS, 14u#, v_center(.5x_height#)); uni "0x223E"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=h+d; +pos0(rule_thickness,0); pos1(rule_thickness,0); pos2(rule_thickness,250); pos3(rule_thickness,250); +pos4(hair,90); pos5(hair,90); +top y2l=top y5r=h; bot y3r=bot y4l=-d; x1-x3=1/4(x1-x0); .5[x0,x1]=.5[x2,x3]=.5w; lft x0l=u; +y0=y1=.5[y2,y3]; x4=x2; x5=x3; +filldraw z4l{left}..z0l..z2l..z3l..z1l..{left}z5l..{right}z5r..z1r..z3r..z2r..z0r..{right}z4r..cycle; +penlabels(0,1,2,3,4,5); +endchar; + +iff known chars.math_sinus: +bskchar "Sinus sign"; +beginchar(chars.math_sinus, 14u#, v_center(.5x_height#)); uni "0x223F"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=h+d; +pos0(rule_thickness,0); pos1(rule_thickness,0); pos2(rule_thickness,270); pos3(rule_thickness,270); +pos4(rule_thickness,180); +x1-x3=1/4(x1-x0); .5[x0,x1]=.5[x2,x3]=x4=.5w; lft x0l=u; +y0=y1=.5[y2,y3]=y4=math_axis; y2-y0=(x1-x0)/6.28; +filldraw z0l{dir45}..{right}z2l..{dir-45}z4l..{right}z3l..{dir45}z1l + ..z1r{dir-135}..{left}z3r..{dir135}z4r..{left}z2r..{dir-135}z0r..cycle; +penlabels(0,1,2,3,4,5); +endchar; + +iff known chars.math_sim_eq: +bskchar "Similar or equal sign"; +beginchar(chars.math_sim_eq, 14u#, v_center(.5x_height#+3u#)); uni "0x2243"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +pos2(rule_thickness,90); pos3(rule_thickness,90); +top y1=h; lft x2=u; rt x3=w-u; y2l=y3l=-d; +vlnka(0,1); +filldraw bskrule(2,3,hair,hair); +penlabels(2,3); +endchar; + +iff known chars.math_sim_eq_neg: +bskchar "Negated similar or equal sign"; +beginchar(chars.math_sim_eq_neg, 14u#,.25x_height#+1.5u#+math_axis#,.25x_height#+1.5u#-math_axis#); uni "0x2244"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +numeric spread; spread:=.5x_height; +oblu:=oblu; oblu.more:=2oblu; +pos2(rule_thickness,90); pos3(rule_thickness,90); +top y1=h; lft x2=u; rt x3=w-u; y2l=y3l=-d; +vlnka(0,1).nodraw; +bskpoints(2,3,hair,hair); +top y4=h; bot y5=-d-2.5rule_thickness; .5[x4,x5]=.5w; x4=x1a; +pos4(rule_thickness,angle(z5-z4)+90); pos5(rule_thickness,angle(z5-z4)+90); +bskpoints(4,5,rule_thickness,rule_thickness); +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +p2:=z4l---z5ll..{z4-z5}z5r; +p3:=z5r---z4rr..{z5-z4}z4l; +p4:=z3r--z2rr; +(tim0,tim1)=p0 intersectiontimes p2; +(tim2,tim3)=p0 intersectiontimes p3; +(tim4,tim5)=p1 intersectiontimes p3; +(tim6,tim7)=p1 intersectiontimes p2; +(tim8,tim9)=p2 intersectiontimes p4; +(tim10,tim11)=p3 intersectiontimes p4; +y1'l=y1'r=y2r; z1'l=whatever[z4l,z5l]; z1'r=whatever[z4r,z5r]; +y2'l=y2'r=y2l; z2'l=whatever[z4l,z5l]; z2'r=whatever[z4r,z5r]; +filldraw subpath(0,rundy(p0,(tim0,2oblu)).zpet) of p0 + ..subpath(rundy(p2,(tim1,2oblu)),rundy(p2,tim8).zpet) of p2 + ..subpath(rundy(p4,tim9),infinity) of p4 + ..z2l---tobl(2'l,2l,5ll).more---z5ll..z5r---tobl(2'r,5r,3l)---z3ll..z3r + ..subpath(0,rundy(p4,(tim11,2oblu)).zpet) of p4 + ..subpath(rundy(p3,(tim10,2oblu)),rundy(p3,(tim3,2oblu)).zpet) of p3 + ..subpath(rundy(p0,(tim2,2oblu)),infinity) of p0 + ..subpath(0,rundy(p1,(tim4,2oblu)).zpet) of p1 + ..subpath(rundy(p3,(tim5,2oblu)),infinity) of p3 + ..subpath(0,rundy(p2,(tim7,2oblu)).zpet) of p2 + ..subpath(rundy(p1,(tim6,2oblu)),infinity) of p1..cycle; +penlabels(1',2,2',3,4,5,6,7); labels(2rr,3ll,4rr,5ll); +endchar; + +iff known chars.math_eq_double_sim: +bskchar "Double equal or similar sign"; +beginchar(chars.math_eq_double_sim, 14u#, v_center(.95x_height#+2u#)); uni "0x2A73"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +pos2(rule_thickness,90); pos3(rule_thickness,90); +pos4(rule_thickness,90); pos5(rule_thickness,90); +bot y0=-d; lft x2=lft x4=u; rt x3=rt x5=w-u; y4r=y5r=h; y2=y3=y4-.45x_height; +vlnka(0,1); +filldraw bskrule(2,3,hair,hair); +filldraw bskrule(4,5,hair,hair); +penlabels(2,3,4,5); +endchar; + +iff known chars.math_sim_eq_double: +bskchar "Similar or double equal sign"; +beginchar(chars.math_sim_eq_double, 14u#, v_center(.95x_height#+2u#)); uni "0x2245"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +pos2(rule_thickness,90); pos3(rule_thickness,90); +pos4(rule_thickness,90); pos5(rule_thickness,90); +top y1=h; lft x2=lft x4=u; rt x3=rt x5=w-u; y2l=y3l=-d; y4=y5=y3+.45x_height; +vlnka(0,1); +filldraw bskrule(2,3,hair,hair); +filldraw bskrule(4,5,hair,hair); +penlabels(2,3,4,5); +endchar; + +iff known chars.math_congruent_dot: +bskchar "Congruent with dot"; +beginchar(chars.math_congruent_dot, 14u#, .775x_height#+u#+math_axis#,.475x_height#+u#-math_axis#); uni "0x2A6D"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +pos2(rule_thickness,90); pos3(rule_thickness,90); +pos4(rule_thickness,90); pos5(rule_thickness,90); +top y1=h-.3x_height; lft x2=lft x4=u; rt x3=rt x5=w-u; y2l=y3l=-d; y4=y5=y3+.45x_height; +x6=.5w; top y6+.5dot_size=h; +vlnka(0,1); +filldraw bskrule(2,3,hair,hair); +filldraw bskrule(4,5,hair,hair); +dot(6); +penlabels(2,3,4,5); +endchar; + +iff known chars.math_sim_neq_double: +bskchar "Similar or not double equal sign"; +beginchar(chars.math_sim_neq_double, 14u#, v_center(.95x_height#+2u#)); uni "0x2246"; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=2oblu; +numeric spread; spread:=.5x_height; +pos2(rule_thickness,90); pos3(rule_thickness,90); +pos4(rule_thickness,90); pos5(rule_thickness,90); +top y1=h; lft x2=lft x4=u; rt x3=rt x5=w-u; y2l=y3l=-d; y4=y5=y3+.45x_height; +vlnka(0,1); +top top y6=bot y1a.r; bot y7=-d-2.5rule_thickness; .5[x6,x7]=.5w; x6-x7=3u; +pos6(rule_thickness,angle(z7-z6)+90); pos7(rule_thickness,angle(z7-z6)+90); +bskpoints(2,3,hair,hair); bskpoints(4,5,hair,hair); +bskpoints(6,7,rule_thickness,rule_thickness); +y2'l=y2'r=y2l; y3'l=y3'r=y2r; y4'l=y4'r=y4l; y5'l=y5'r=y4r; +z5'l=whatever[z6l,z7l]; z5'r=whatever[z6r,z7r]; +z4'l=whatever[z6l,z7l]; z4'r=whatever[z6r,z7r]; +z3'l=whatever[z6l,z7l]; z3'r=whatever[z6r,z7r]; +z2'l=whatever[z6l,z7l]; z2'r=whatever[z6r,z7r]; +filldraw z4l---obl(4'l,4l,3'l).more---obl(3'l,4'l,2r)---z2rr..z2l---obl(2'l,2l,7l).more---z7l..z7r---obl(2'r,7r,3l)---z3ll..z3r---obl(3'r,3r,4'r).more---obl(4'r,3'r,5l)---z5ll..z5r---obl(5'r,5r,6r).more---z6r..z6l---obl(5'l,6l,4r)---z4rr..cycle; +penlabels(2,2',3,3',4,4',5,5',6,7); +endchar; + +iff known chars.math_sim_eq_double_neg: +bskchar "Negated similar or double equal sign"; +beginchar(chars.math_sim_eq_double_neg, 14u#, v_center(.95x_height#+2u#)); uni "0x2247"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +numeric spread; spread:=.5x_height; +oblu:=oblu; oblu.more:=2oblu; +pos2(rule_thickness,90); pos3(rule_thickness,90); +pos4(rule_thickness,90); pos5(rule_thickness,90); +top y1=h; lft x2=lft x4=u; rt x3=rt x5=w-u; y2l=y3l=-d; y4=y5=y3+.45x_height; +vlnka(0,1).nodraw; +bskpoints(2,3,hair,hair); bskpoints(4,5,hair,hair); +top y6=h; bot y7=-d-2.5rule_thickness; .5[x6,x7]=.5w; x6=x1a; +pos6(rule_thickness,angle(z7-z6)+90); pos7(rule_thickness,angle(z7-z6)+90); +bskpoints(6,7,rule_thickness,rule_thickness); +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +p2:=z6l---z7ll..{z6-z7}z7r; +p3:=z7r---z6rr..{z7-z6}z6l; +p4:=z5r--z4rr; +(tim0,tim1)=p0 intersectiontimes p2; +(tim2,tim3)=p0 intersectiontimes p3; +(tim4,tim5)=p1 intersectiontimes p3; +(tim6,tim7)=p1 intersectiontimes p2; +(tim8,tim9)=p2 intersectiontimes p4; +(tim10,tim11)=p3 intersectiontimes p4; +y2'l=y2'r=y2l; z2'l=whatever[z6l,z7l]; z2'r=whatever[z6r,z7r]; +y3'l=y3'r=y2r; z3'l=whatever[z6l,z7l]; z3'r=whatever[z6r,z7r]; +y4'l=y4'r=y4l; z4'l=whatever[z6l,z7l]; z4'r=whatever[z6r,z7r]; +filldraw subpath(0,rundy(p0,(tim0,2oblu)).zpet) of p0 + ..subpath(rundy(p2,(tim1,2oblu)),rundy(p2,tim8).zpet) of p2 + ..subpath(rundy(p4,tim9),infinity) of p4 + ..z4l---obl(4'l,4l,3'l).more---obl(3'l,4'l,2r)---z2rr..z2l + ---obl(2'l,2l,7l).more---z7ll..z7r + ---obl(2'r,7r,3l)---z3ll..z3r---obl(3'r,3r,4'r).more---obl(4'r,3'r,5l) + ---z5ll..z5r + ..subpath(0,rundy(p4,(tim11,2oblu)).zpet) of p4 + ..subpath(rundy(p3,(tim10,2oblu)),rundy(p3,(tim3,2oblu)).zpet) of p3 + ..subpath(rundy(p0,(tim2,2oblu)),infinity) of p0 + ..subpath(0,rundy(p1,(tim4,2oblu)).zpet) of p1 + ..subpath(rundy(p3,(tim5,2oblu)),infinity) of p3 + ..subpath(0,rundy(p2,(tim7,2oblu)).zpet) of p2 + ..subpath(rundy(p1,(tim6,2oblu)),infinity) of p1..cycle; +penlabels(2,2',3,3',4,4',5,6,7); labels(2rr,3ll,4rr,5ll); +endchar; + +iff known chars.math_eq_sim: +bskchar "Equal or similar sign"; +beginchar(chars.math_eq_sim, 14u#, v_center(.5x_height#+3u#)); uni "0x2242"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=(h+d)-3u; +pos2(rule_thickness,90); pos3(rule_thickness,90); +bot y0=-d; lft x2=u; rt x3=w-u; y2r=y3r=h; +vlnka(0,1); +filldraw bskrule(2,3,hair,hair); +endchar; + +iff known chars.math_approx: +bskchar "Approximate sign"; +beginchar(chars.math_approx, 14u#, v_center(x_height#)); uni "0x2248"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5(h+d); +top y1=h; bot y2=-d; +vlnka(0,1); +vlnka(2,3); +endchar; + +iff known chars.math_approx_thick: +bskchar "Thick approximate sign"; +beginchar(chars.math_approx_thick, 14u#, v_center(x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5(h+d); +top y1=h; bot y2=-d; +{{ numeric old_curve, old_hair; old_curve:=curve; old_hair:=hair; + save curve, hair; numeric curve, hair; + curve:=1.5old_curve; hair:=1.5old_hair; + vlnka(0,1); + vlnka(2,3); +}}; +endchar; + +iff known chars.math_sim_minus_sim: +bskchar "Similar-minus-similar sign"; +beginchar(chars.math_sim_minus_sim, 14u#, v_center(1.5x_height#)); uni "0x2A6C"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +pos4(rule_thickness,90); pos5(rule_thickness,90); +top y1=h; bot y2=-d; +lft x4=u; rt x5=w-u; y4=y5=math_axis; +vlnka(0,1); +vlnka(2,3); +filldraw bskrule(4,5,hair,hair); +penlabels(4,5); +endchar; + +iff known chars.math_approx_circumflex: +bskchar "Approximate sign with circumflex accent"; +beginchar(chars.math_approx_circumflex, 14u#, asc_height#,.5x_height#-math_axis#); uni "0x2A6F"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +top y1=.5x_height+math_axis; bot y2=-d; x5=.5w+u; +vlnka(0,1); +vlnka(2,3); +circumflex(4,5,6); +endchar; + +iff known chars.math_tilde_triple: +bskchar "Triple tilde"; +beginchar(chars.math_tilde_triple, 14u#, v_center(1.2x_height#)); uni "0x224B"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.4x_height; +top y1=h; bot y2=-d; .5[y4,y5]=math_axis; +vlnka(0,1); +vlnka(2,3); +vlnka(4,5); +endchar; + +iff known chars.math_approx_bar: +bskchar "Approximate sign with lower bar"; +beginchar(chars.math_approx_bar, 14u#, v_center(x_height#+3u#)); uni "0x224A"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +pos4(rule_thickness,90); pos5(rule_thickness,90); +top y1=h; bot y2=-d+3u; +y4l=y5l=-d; lft x4=u; rt x5=w-u; +vlnka(0,1); +vlnka(2,3); +filldraw bskrule(4,5,hair,hair); +penlabels(4,5); +endchar; + +iff known chars.math_approx_eq_double: +bskchar "Approximate sign with lower bar"; +beginchar(chars.math_approx_eq_double, 14u#, v_center(x_height#+2u#+.45x_height#)); uni "0x2A70"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +pos4(rule_thickness,90); pos5(rule_thickness,90); +pos6(rule_thickness,90); pos7(rule_thickness,90); +top y1=h; bot y2=-d+2u+.45x_height; +y6l=y7l=-d; y4=y5=y6+.45x_height; lft x4=lft x6=u; rt x5=rt x7=w-u; +vlnka(0,1); +vlnka(2,3); +filldraw bskrule(4,5,hair,0); +filldraw bskrule(7,6,hair,0); +penlabels(4,5,6,7); +endchar; + +iff known chars.math_approx_neg: +bskchar "Negated approximate sign"; +beginchar(chars.math_approx_neg, 14u#, v_center(x_height#)); uni "0x2249"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], spread; spread:=.5(h+d); +top y1=h; bot y2=-d; +vlnka(0,1).nodraw; p0:=_vlnka; +vlnka(2,3).nodraw; +.5[y4,y5]=math_axis;top y4=h+rule_thickness; .5[x4,x5]=.5w; rt x4=lft x1a; +pos4(rule_thickness,angle(z5-z4)+90); pos5(rule_thickness,angle(z5-z4)+90); +bskpoints(4,5,rule_thickness,rule_thickness); +p1:=subpath(0,4) of p0; +p2:=subpath(5,infinity) of p0; +p3:=subpath(0,4) of _vlnka; +p4:=subpath(5,infinity) of _vlnka; +p5:=z4l---z5ll..{z4-z5}z5r; +p6:=z5r---z4rr..{z5-z4}z4l; +(tim0,tim1)=p1 intersectiontimes p5; +(tim2,tim3)=p1 intersectiontimes p6; +(tim4,tim5)=p2 intersectiontimes p6; +(tim6,tim7)=p2 intersectiontimes p5; +(tim8,tim9)=p3 intersectiontimes p5; +(tim10,tim11)=p3 intersectiontimes p6; +(tim12,tim13)=p4 intersectiontimes p6; +(tim14,tim15)=p4 intersectiontimes p5; +filldraw subpath(0,rundy(p1,(tim0,2oblu)).zpet) of p1 + ..subpath(rundy(p5,(tim1,2oblu)),rundy(p5,tim15).zpet) of p5 + ..subpath(rundy(p4,tim14),infinity) of p4 + ..subpath(0,rundy(p3,(tim8,2oblu)).zpet) of p3 + ..subpath(rundy(p5,(tim9,2oblu)),infinity) of p5 + ..subpath(0,rundy(p6,tim11).zpet) of p6 + ..subpath(rundy(p3,tim10),infinity) of p3 + ..subpath(0,rundy(p4,(tim12,2oblu)).zpet) of p4 + ..subpath(rundy(p6,(tim13,2oblu)),rundy(p6,tim3).zpet) of p6 + ..subpath(rundy(p1,tim2),infinity) of p1 + ..subpath(0,rundy(p2,(tim4,2oblu)).zpet) of p2 + ..subpath(rundy(p6,(tim5,2oblu)),infinity) of p6 + ..subpath(0,rundy(p5,tim7).zpet) of p5 + ..subpath(rundy(p2,tim6),infinity) of p2..cycle; +penlabels(4,5); +endchar; + +iff known chars.math_ceiling_left: +bskchar "Left ceiling bracket"; +beginchar(chars.math_ceiling_left,5.5u#,body_height#,paren_depth#); uni "0x2308"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); +lft x2r=1.75u; x3r=x2r; rt x1r=w-.5u; +top y2r=top y1r=h; bot y3r=-d; +rt z2l=(x2r+.5[stem,hair],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,3l)---z3l---obl(2l,3l,1l)---z1l+hair*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_ceiling_left_big: +bskchar "\big left ceiling bracket"; +beginchar(chars.math_ceiling_left_big,5.5u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=hair; +pos1(breadth,90); +lft x2r=1.75u; x3r=x2r; rt x1r=w-.5u-.25breadth; +top y2r=top y1r=h; bot y3r=-d; +rt z2l=(x2r+.5[stem,breadth],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,3l)---z3l---obl(2l,3l,1l)---z1l+breadth*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_ceiling_left_Big: +bskchar "\Big left ceiling bracket"; +beginchar(chars.math_ceiling_left_Big,6u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.25[hair,stem]; +pos1(breadth,90); +lft x2r=1.75u; x3r=x2r; rt x1r=w-.5u-.25breadth; +top y2r=top y1r=h; bot y3r=-d; +rt z2l=(x2r+.5[stem,breadth],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,3l)---z3l---obl(2l,3l,1l)---z1l+breadth*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_ceiling_left_bigg: +bskchar "\bigg left ceiling bracket"; +beginchar(chars.math_ceiling_left_bigg,6.5u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.5[hair,stem]; +pos1(breadth,90); +lft x2r=1.75u; x3r=x2r; rt x1r=w-.5u-.25breadth; +top y2r=top y1r=h; bot y3r=-d; +rt z2l=(x2r+.5[stem,breadth],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,3l)---z3l---obl(2l,3l,1l)---z1l+breadth*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_ceiling_left_Bigg: +bskchar "\Bigg left ceiling bracket"; +beginchar(chars.math_ceiling_left_Bigg,7u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.75[hair,stem]; +pos1(breadth,90); +lft x2r=1.75u; x3r=x2r; rt x1r=w-.5u-.25breadth; +top y2r=top y1r=h; bot y3r=-d; +rt z2l=(x2r+.5[stem,breadth],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,3l)---z3l---obl(2l,3l,1l)---z1l+breadth*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_floor_left: +bskchar "Left floor bracket"; +beginchar(chars.math_floor_left,5.5u#,body_height#,paren_depth#); uni "0x230A"; +adjust_fit(0,0); +pickup tiny.nib; +pos3(hair,270); +lft x1r=1.75u; x2r=x1r; rt x3r=w-.5u; +top y1r=h; bot y2r=bot y3r=-d; +rt z1l=(x1r+.5[stem,hair],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---obl(1r,2r,1l)---z1l---obl(2l,1l,3l)---z3l+hair*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_floor_left_big: +bskchar "\big left floor bracket"; +beginchar(chars.math_floor_left_big,5.5u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=hair; +pos3(breadth,270); +lft x1r=1.75u; x2r=x1r; rt x3r=w-.5u; +top y1r=h; bot y2r=bot y3r=-d; +rt z1l=(x1r+.5[stem,breadth],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---obl(1r,2r,1l)---z1l---obl(2l,1l,3l)---z3l+breadth*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_floor_left_Big: +bskchar "\Big left floor bracket"; +beginchar(chars.math_floor_left_Big,6u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.25[hair,stem]; +pos3(breadth,270); +lft x1r=1.75u; x2r=x1r; rt x3r=w-.5u-.25breadth; +top y1r=h; bot y2r=bot y3r=-d; +rt z1l=(x1r+.5[stem,breadth],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---obl(1r,2r,1l)---z1l---obl(2l,1l,3l)---z3l+breadth*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_floor_left_bigg: +bskchar "\bigg left floor bracket"; +beginchar(chars.math_floor_left_bigg,6.5u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.5[hair,stem]; +pos3(breadth,270); +lft x1r=1.75u; x2r=x1r; rt x3r=w-.5u-.25breadth; +top y1r=h; bot y2r=bot y3r=-d; +rt z1l=(x1r+.5[stem,breadth],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---obl(1r,2r,1l)---z1l---obl(2l,1l,3l)---z3l+breadth*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_floor_left_Bigg: +bskchar "\Bigg left floor bracket"; +beginchar(chars.math_floor_left_Bigg,7u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.75[hair,stem]; +pos3(breadth,270); +lft x1r=1.75u; x2r=x1r; rt x3r=w-.5u-.25breadth; +top y1r=h; bot y2r=bot y3r=-d; +rt z1l=(x1r+.5[stem,breadth],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---obl(1r,2r,1l)---z1l---obl(2l,1l,3l)---z3l+breadth*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_ceiling_right: +bskchar "Right ceiling bracket"; +beginchar(chars.math_ceiling_right,5.5u#,body_height#,paren_depth#); uni "0x2309"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(hair,90); +rt x2r=w-1.75u; x3r=x2r; lft x1r=.5u; +top y2r=top y1r=h; bot y3r=-d; +lft z2l=(x2r-.5[stem,hair],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,3l)---z3l---obl(2l,3l,1l)---z1l+hair*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_ceiling_right_big: +bskchar "\big right ceiling bracket"; +beginchar(chars.math_ceiling_right_big,5.5u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=hair; +pos1(breadth,90); +rt x2r=w-1.75u; x3r=x2r; lft x1r=.5u+.25breadth; +top y2r=top y1r=h; bot y3r=-d; +lft z2l=(x2r-.5[stem,breadth],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,3l)---z3l---obl(2l,3l,1l)---z1l+breadth*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_ceiling_right_Big: +bskchar "\Big right ceiling bracket"; +beginchar(chars.math_ceiling_right_Big,6u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.25[hair,stem]; +pos1(breadth,90); +rt x2r=w-1.75u; x3r=x2r; lft x1r=.5u+.25breadth; +top y2r=top y1r=h; bot y3r=-d; +lft z2l=(x2r-.5[stem,breadth],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,3l)---z3l---obl(2l,3l,1l)---z1l+breadth*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_ceiling_right_bigg: +bskchar "\big right ceiling bracket"; +beginchar(chars.math_ceiling_right_bigg,6.5u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.5[hair,stem]; +pos1(breadth,90); +rt x2r=w-1.75u; x3r=x2r; lft x1r=.5u+.25breadth; +top y2r=top y1r=h; bot y3r=-d; +lft z2l=(x2r-.5[stem,breadth],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,3l)---z3l---obl(2l,3l,1l)---z1l+breadth*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_ceiling_right_Bigg: +bskchar "\Bigg right ceiling bracket"; +beginchar(chars.math_ceiling_right_Bigg,7u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.75[hair,stem]; +pos1(breadth,90); +rt x2r=w-1.75u; x3r=x2r; lft x1r=.5u+.25breadth; +top y2r=top y1r=h; bot y3r=-d; +lft z2l=(x2r-.5[stem,breadth],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,3l)---z3l---obl(2l,3l,1l)---z1l+breadth*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_floor_right: +bskchar "Right floor bracket"; +beginchar(chars.math_floor_right,5.5u#,body_height#,paren_depth#); uni "0x230B"; +adjust_fit(0,0); +pickup tiny.nib; +pos3(hair,270); +rt x1r=w-1.75u; x2r=x1r; lft x3r=.5u; +top y1r=h; bot y2r=bot y3r=-d; +lft z1l=(x1r-.5[stem,hair],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---obl(1r,2r,1l)---z1l---obl(2l,1l,3l)---z3l+hair*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_floor_right_big: +bskchar "\big right floor bracket"; +beginchar(chars.math_floor_right_big,5.5u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=hair; +pos3(breadth,270); +rt x1r=w-1.75u; x2r=x1r; lft x3r=.5u; +top y1r=h; bot y2r=bot y3r=-d; +lft z1l=(x1r-.5[stem,breadth],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---obl(1r,2r,1l)---z1l---obl(2l,1l,3l)---z3l+breadth*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_floor_right_Big: +bskchar "\Big right floor bracket"; +beginchar(chars.math_floor_right_Big,6u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.25[hair,stem]; +pos3(breadth,270); +rt x1r=w-1.75u; x2r=x1r; lft x3r=.5u; +top y1r=h; bot y2r=bot y3r=-d; +lft z1l=(x1r-.5[stem,breadth],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---obl(1r,2r,1l)---z1l---obl(2l,1l,3l)---z3l+breadth*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_floor_right_bigg: +bskchar "\bigg right floor bracket"; +beginchar(chars.math_floor_right_bigg,6.5u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.5[hair,stem]; +pos3(breadth,270); +rt x1r=w-1.75u; x2r=x1r; lft x3r=.5u; +top y1r=h; bot y2r=bot y3r=-d; +lft z1l=(x1r-.5[stem,breadth],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---obl(1r,2r,1l)---z1l---obl(2l,1l,3l)---z3l+breadth*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_floor_right_Bigg: +bskchar "\Bigg right floor bracket"; +beginchar(chars.math_floor_right_Bigg,7u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.75[hair,stem]; +pos3(breadth,270); +rt x1r=w-1.75u; x2r=x1r; lft x3r=.5u; +top y1r=h; bot y2r=bot y3r=-d; +lft z1l=(x1r-.5[stem,breadth],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---obl(1r,2r,1l)---z1l---obl(2l,1l,3l)---z3l+breadth*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_logical_not: +bskchar "Logical not sign"; +beginchar(chars.math_logical_not,13u#, x_height#,0); uni "0x00AC"; +italcorr x_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(rule_thickness,0); +lft x1=u; rt x3r=w-u; x2=x3r; +y1=y2=.5[bar_height,x_height]; y1-y3=1/3(x2-x1); if y3y5l: y8ll:=y8l; x8ll:=x8l; fi +oblu:=f_obl; oblu.more:=2f_obl; +filldraw z3rr---obl(3',3r,7l)---z7l..z7rr---tobl(4',7rr,4r).more---z4r + ..z4ll---obl(5',4l,6')---obl(6',5',6rr).more---z6rr..z6l + ---obl(7',6l,8r)---z8r..z8ll---tobl(8',8ll,5ll).more---z5ll + ..z5r---obl(9',5r,10')---obl(10',9',3l).more---z3l..cycle; +penlabels(0,1,2,3,4,5,6,7,8); labels(0',4ll,5ll,7rr,8ll,3',4',5',6',7',8',9',10'); +endchar; + +iff known chars.math_precedes_sim: +bskchar "Precedes or similar to sign"; +beginchar(chars.math_precedes_sim,12u#,v_center(1.5x_height#+2rule_thickness#)); uni "0x227E"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[], spread; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+.25x_height+rule_thickness; lft x0=1.5u; x0'=2/3[x0,x1]; +top y1=h; x1+.5rule_thickness=w-u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +p1:=z1l{z0'-z1}..{left}z0l; +p2:=z0r{right}..{z2-z0'}z2r; +z5=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z5--(x5,h))); +tim2=xpart(p2 intersectiontimes (z5--(x5,-d))); +bot y3=-d; spread:=.5x_height; +filldraw z2l+.5hair*unitvector(z0'-z2){z0'-z2}..{left}z0l..z0r{right} + ..{z1-z0'}z1r..{z0'-z1}z1l..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +vlnka(3,4); +penlabels(0,1,2); labels(0'); +endchar; + +iff known chars.math_precedes_not_sim: +bskchar "Precedes and not similar to sign"; +beginchar(chars.math_precedes_not_sim,12u#,v_center(1.5x_height#+2rule_thickness#)); uni "0x22E8"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[], spread; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+.25x_height+rule_thickness; lft x0=1.5u; x0'=2/3[x0,x1]; +top y1=h; x1+.5rule_thickness=w-u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +p1:=z1l{z0'-z1}..{left}z0l; +p2:=z0r{right}..{z2-z0'}z2r; +z5=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z5--(x5,h))); +tim2=xpart(p2 intersectiontimes (z5--(x5,-d))); +bot y3=-d; spread:=.5x_height; +filldraw z2l+.5hair*unitvector(z0'-z2){z0'-z2}..{left}z0l..z0r{right} + ..{z1-z0'}z1r..{z0'-z1}z1l..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +vlnka(3,4).nodraw; +top y6-bot y7=.7x_height; .5[y6,y7]=.5[y3,y4]; .5[x6,x7]=.5w; x6=x4a; +pos6(rule_thickness,angle(z7-z6)+90); pos7(rule_thickness,angle(z7-z6)+90); +bskpoints(6,7,rule_thickness,rule_thickness); +p3:=subpath(0,4) of _vlnka; +p4:=subpath(5,infinity) of _vlnka; +p5:=z6l---z7ll..{z6-z7}z7r; +p6:=z7r---z6rr..{z7-z6}z6l; +(tim3,tim4)=p3 intersectiontimes p5; +(tim5,tim6)=p3 intersectiontimes p6; +(tim7,tim8)=p4 intersectiontimes p6; +(tim9,tim10)=p4 intersectiontimes p5; +filldraw subpath(0,rundy(p3,(tim3,2oblu)).zpet) of p3 + ..subpath(rundy(p5,(tim4,2oblu)),infinity) of p5 + ..subpath(0,rundy(p6,tim6).zpet) of p6 + ..subpath(rundy(p3,tim5),infinity) of p3 + ..subpath(0,rundy(p4,(tim7,2oblu)).zpet) of p4 + ..subpath(rundy(p6,(tim8,2oblu)),infinity) of p6 + ..subpath(0,rundy(p5,tim10).zpet) of p5 + ..subpath(rundy(p4,tim9),infinity) of p4..cycle; +penlabels(0,1,2,6,7); labels(0'); +endchar; + +iff known chars.math_precedes_approx: +bskchar "Precedes or approximately equal to sign"; +beginchar(chars.math_precedes_approx,12u#,v_center(1.8x_height#+2rule_thickness#)); uni "0x2AB7"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[], spread; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+.4x_height+rule_thickness; lft x0=1.5u; x0'=2/3[x0,x1]; +top y1=h; x1+.5rule_thickness=w-u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +p1:=z1l{z0'-z1}..{left}z0l; +p2:=z0r{right}..{z2-z0'}z2r; +z5=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z5--(x5,h))); +tim2=xpart(p2 intersectiontimes (z5--(x5,-d))); +bot y3=-d; spread:=.4x_height; y6-y3=spread; +filldraw z2l+.5hair*unitvector(z0'-z2){z0'-z2}..{left}z0l..z0r{right} + ..{z1-z0'}z1r..{z0'-z1}z1l..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +vlnka(3,4); vlnka(6,7); +penlabels(0,1,2); labels(0'); +endchar; + +iff known chars.math_precedes_not_approx: +bskchar "Precedes and not approximately equal to sign"; +beginchar(chars.math_precedes_not_approx,12u#,v_center(1.8x_height#+2rule_thickness#)); uni "0x2AB9"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +spread:=.4x_height; +bot y1=-d; y3-y1=spread; +top y5-bot y6=x_height; .5[y5,y6]=y3; .5[x5,x6]=.5w; z5=z6+whatever*dir60; +pos5(rule_thickness,angle(z6-z5)+90); pos6(rule_thickness,angle(z6-z5)+90); +y7=y7'-.5o=.5[y8,y9]=math_axis+.4x_height+rule_thickness; lft x7=1.5u; x7'=2/3[x7,x8]; +top y8=h; x8+.5rule_thickness=w-u; x9=x8; +pos7(rule_thickness,90); +pos8(rule_thickness,angle(z8-z7')+90); pos9(rule_thickness,angle(z9-z7')+90); +bskpoints(5,6,rule_thickness,rule_thickness); +vlnka(1,2).nodraw; +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +vlnka(3,4).nodraw; +p2:=subpath(0,4) of _vlnka; +p3:=subpath(5,infinity) of _vlnka; +p4:=z5l---z6ll..{z5-z6}z6r; +p5:=z6r---z5rr..{z6-z5}z5l; +(tim0,tim1)=p0 intersectiontimes p4; +(tim2,tim3)=p0 intersectiontimes p5; +(tim4,tim5)=p1 intersectiontimes p5; +(tim6,tim7)=p1 intersectiontimes p4; +(tim8,tim9)=p2 intersectiontimes p4; +(tim10,tim11)=p2 intersectiontimes p5; +(tim12,tim13)=p3 intersectiontimes p5; +(tim14,tim15)=p3 intersectiontimes p4; +p6:=z8l{z7'-z8}..{left}z7l; +p7:=z7r{right}..{z9-z7'}z9r; +z12=bsktouch(p6,down,p7,up); +tim16=xpart(p6 intersectiontimes (z12--(x12,h))); +tim17=xpart(p7 intersectiontimes (z12--(x12,-d))); +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p4,tim1),infinity) of p4 + ..subpath(0,rundy(p5,tim3).zpet) of p5 + ..subpath(rundy(p0,tim2),infinity) of p0 + ..subpath(0,rundy(p1,tim6).zpet) of p1 + ..subpath(rundy(p5,(tim5,f_obl)),rundy(p5,(tim11,f_obl)).zpet) of p5 + ..subpath(rundy(p2,tim10),infinity) of p2 + ..subpath(0,rundy(p3,tim12).zpet) of p3 + ..subpath(rundy(p5,tim13),infinity) of p5 + ..subpath(0,rundy(p4,tim15).zpet) of p4 + ..subpath(rundy(p3,tim14),infinity) of p3 + ..subpath(0,rundy(p2,tim8).zpet) of p2 + ..subpath(rundy(p4,(tim9,f_obl)),rundy(p4,(tim7,f_obl)).zpet) of p4 + ..subpath(rundy(p1,tim6),infinity) of p1..cycle; +filldraw z9l+.5hair*unitvector(z7'-z9){z7'-z9}..{left}z7l..z7r{right} + ..{z8-z7'}z8r..{z7'-z8}z8l..subpath (0,rundy(p6,tim16).zpet) of p6 + ..subpath(rundy(p7,tim17),infinity) of p7..cycle; +penlabels(5,6,7,8,9); labels(7'); +endchar; + +iff known chars.math_precedes_eq_not: +bskchar "Not precedes or equals to sign"; +beginchar(chars.math_precedes_eq_not,12u#,v_center(.75(body_height#+desc_depth#))); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+1.5u; lft x0=1.5u; x0'=2/3[x0,x1]; +top y1=vround((math_axis#+.5x_height#+1.5u#)*hppp); x1+.5rule_thickness=w-u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos6(rule_thickness,90); pos7(rule_thickness,90); +y6l=y7l=math_axis-.5x_height-1.5u; x6=x0; x7=x1; bskpoints(6,7,hair,hair); +p1:=z1l{z0'-z1}..{left}z0l; +p2:=z0r{right}..{z2-z0'}z2r; +z3=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z3--(x3,h))); +tim2=xpart(p2 intersectiontimes (z3--(x3,-d))); +top rt z4=(w-3u,h); top lft z5=(3u,-d); +pos4(rule_thickness,angle(z5-z4)+90); pos5(rule_thickness,angle(z5-z4)+90); +bskpoints(4,5,rule_thickness,rule_thickness); +p3:=z2l+.5hair*unitvector(z0'-z2){z0'-z2}..{left}z0l; +p4:=z0r{right}..{z1-z0'}z1r..{z0'-z1}z1l; +p5:=z5r{z5-z4}..z5ll---z4l; +p6:=z4l{z4-z5}..z4rr---z5r; +p7:=z6l{left}..z6rr---z7r; +p8:=z7r{right}..z7ll---z6l; +(tim3,tim4)=p3 intersectiontimes p6; +(tim5,tim6)=p3 intersectiontimes p5; +(tim7,tim8)=p4 intersectiontimes p5; +(tim9,tim10)=p4 intersectiontimes p6; +(tim11,tim12)=p1 intersectiontimes p6; +(tim13,tim14)=p2 intersectiontimes p6; +(tim15,tim16)=p6 intersectiontimes p7; +(tim17,tim18)=p6 intersectiontimes p8; +(tim19,tim20)=p5 intersectiontimes p8; +(tim21,tim22)=p5 intersectiontimes p7; +filldraw subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p6,tim4),rundy(p6,tim15).zpet) of p6 + ..subpath(rundy(p7,tim16),infinity) of p7 + ..subpath(0,rundy(p8,(tim18,f_obl)).zpet) of p8 + ..subpath(rundy(p6,(tim17,f_obl)),infinity) of p6 + ..subpath(0,rundy(p5,tim19).zpet) of p5 + ..subpath(rundy(p8,tim20),infinity) of p8 + ..subpath(0,rundy(p7,(tim22,f_obl)).zpet) of p7 + ..subpath(rundy(p5,(tim21,f_obl)),rundy(p5,tim6).zpet) of p5 + ..subpath(rundy(p3,tim5),infinity) of p3 + ..subpath(0,rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p5,tim8),infinity) of p5 + ..subpath(0,rundy(p6,tim10).zpet) of p6 + ..subpath(rundy(p4,tim9),infinity) of p4 + ..subpath (0,rundy(p1,tim11).zpet) of p1 + ..subpath(rundy(p6,(tim12,.5f_obl)),rundy(p6,(tim14,.5f_obl)).zpet) of p6 + ..subpath(rundy(p2,tim13),infinity) of p2..cycle; +penlabels(0,1,2,3,4,5,6,7); labels(0',4rr,5ll,6rr,7ll); +endchar; + +iff known chars.math_precedes_eq_curved: +bskchar "Precedes or curvy equals to sign"; +beginchar(chars.math_precedes_eq_curved,12u#,v_center(x_height#+3u#)); uni "0x227C"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+1.5u; lft x0=1.5u; x0'=2/3[x0,x1]; x3=x0; +top y1=h; x1+.5rule_thickness=w-u; x2=x4+u=x1; +bot y4=-d; y0-y3=y2-y4; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos3(rule_thickness,90); pos4(rule_thickness,angle(z2-z0')+90); +p1:=z1l{z0'-z1}..{left}z0l; +p2:=z0r{right}..{z2-z0'}z2r; +z5=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z5--(x5,h))); +tim2=xpart(p2 intersectiontimes (z5--(x5,-d))); +filldraw z2l+.5hair*unitvector(z0'-z2){z0'-z2}..{left}z0l..z0r{right} + ..{z1-z0'}z1r..{z0'-z1}z1l..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +filldraw z4l+.5hair*unitvector(z0'-z2){z0'-z2}..{left}z3l..z3r{right}..{z2-z0'}z4r..cycle; +penlabels(0,1,2,3,4); labels(0'); +endchar; + +iff known chars.math_precedes_eq_curved_not: +bskchar "Not precedes or curved equals to sign"; +beginchar(chars.math_precedes_eq_curved_not,12u#,v_center(.75(body_height#+desc_depth#))); uni "0x22E0"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+1.5u; lft x0=1.5u; x0'=2/3[x0,x1]; +top y1=vround((math_axis#+.5x_height#+1.5u#)*hppp); x1+.5rule_thickness=w-u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos6(rule_thickness,90); pos7(rule_thickness,angle(z2-z0')+90); +bot y7=.5x_height-math_axis; y0-y6=y2-y7; x6=x0; x7=x1-u; +p1:=z1l{z0'-z1}..{left}z0l; +p2:=z0r{right}..{z2-z0'}z2r; +z3=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z3--(x3,h))); +tim2=xpart(p2 intersectiontimes (z3--(x3,-d))); +top rt z4=(w-3u,h); top lft z5=(3u,-d); +pos4(rule_thickness,angle(z5-z4)+90); pos5(rule_thickness,angle(z5-z4)+90); +bskpoints(4,5,rule_thickness,rule_thickness); +p3:=z2l+.5hair*unitvector(z0'-z2){z0'-z2}..{left}z0l; +p4:=z0r{right}..{z1-z0'}z1r..{z0'-z1}z1l; +p5:=z5r{z5-z4}..z5ll---z4l; +p6:=z4l{z4-z5}..z4rr---z5r; +p7:=z6r{right}..{z2-z0'}z7r; +p8:=z7l+.5hair*unitvector(z0'-z2){z0'-z2}..{left}z6l; +(tim3,tim4)=p3 intersectiontimes p6; +(tim5,tim6)=p3 intersectiontimes p5; +(tim7,tim8)=p4 intersectiontimes p5; +(tim9,tim10)=p4 intersectiontimes p6; +(tim11,tim12)=p1 intersectiontimes p6; +(tim13,tim14)=p2 intersectiontimes p6; +(tim15,tim16)=p6 intersectiontimes p7; +(tim17,tim18)=p6 intersectiontimes p8; +(tim19,tim20)=p5 intersectiontimes p8; +(tim21,tim22)=p5 intersectiontimes p7; +filldraw subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p6,tim4),rundy(p6,tim15).zpet) of p6 + ..subpath(rundy(p7,tim16),infinity) of p7 + ..subpath(0,rundy(p8,(tim18,f_obl)).zpet) of p8 + ..subpath(rundy(p6,(tim17,f_obl)),infinity) of p6 + ..subpath(0,rundy(p5,tim19).zpet) of p5 + ..subpath(rundy(p8,tim20),infinity) of p8 + ..subpath(0,rundy(p7,(tim22,f_obl)).zpet) of p7 + ..subpath(rundy(p5,(tim21,f_obl)),rundy(p5,tim6).zpet) of p5 + ..subpath(rundy(p3,tim5),infinity) of p3 + ..subpath(0,rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p5,tim8),infinity) of p5 + ..subpath(0,rundy(p6,tim10).zpet) of p6 + ..subpath(rundy(p4,tim9),infinity) of p4 + ..subpath (0,rundy(p1,tim11).zpet) of p1 + ..subpath(rundy(p6,(tim12,.5f_obl)),rundy(p6,(tim14,.5f_obl)).zpet) of p6 + ..subpath(rundy(p2,tim13),infinity) of p2..cycle; +penlabels(0,1,2,3,4,5,6,7); labels(0',4rr,5ll,6rr,7ll); +endchar; + +iff known chars.math_eq_precedes: +bskchar "Equals to or precedes sign"; +beginchar(chars.math_eq_precedes,12u#,v_center(x_height#+3u#)); uni "0x22DE"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis-1.5u; lft x0=1.5u; x0'=2/3[x0,x1]; x3=x0; +bot y2=-d; x1+.5rule_thickness=w-u; x2=x4+u=x1; +top y4=h; y0-y3=y1-y4; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos3(rule_thickness,90); pos4(rule_thickness,angle(z1-z0')+90); +p1:=z1l{z0'-z1}..{left}z0l; +p2:=z0r{right}..{z2-z0'}z2r; +z5=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z5--(x5,h))); +tim2=xpart(p2 intersectiontimes (z5--(x5,-d))); +filldraw z2l+.5hair*unitvector(z0'-z2){z0'-z2}..{left}z0l..z0r{right} + ..{z1-z0'}z1r..{z0'-z1}z1l..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +filldraw z4l+.5hair*unitvector(z0'-z1){z0'-z1}..{left}z3l..z3r{right}..{z1-z0'}z4r..cycle; +penlabels(0,1,2,3,4); labels(0'); +endchar; + +iff known chars.math_precedes_double: +bskchar "Double precedes sign"; +beginchar(chars.math_precedes_double,15u#,v_center(x_height#)); uni "0x2ABB"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=y4=y4'-.5o=.5[y5,y6]=math_axis; lft x0=1.5u; x0'=2/3[x0,x1]; +top y1=top y5=h; x1+.5rule_thickness=w-4.5u; x2=x1; +lft x4=7.5u; x4'=2/3[x4,x5]; x5+.5rule_thickness=w-u; x6=x5; +pos0(rule_thickness,90); pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos4(rule_thickness,90); pos5(rule_thickness,angle(z5-z4')+90); pos6(rule_thickness,angle(z6-z4')+90); +p1:=z1l{z0'-z1}..{left}z0l; +p2:=z0r{right}..{z2-z0'}z2r; +p3:=z5l{z4'-z5}..{left}z4l; +p4:=z4r{right}..{z6-z4'}z6r; +z3=bsktouch(p1,down,p2,up); +z7=bsktouch(p3,down,p4,up); +tim1=xpart(p1 intersectiontimes (z3--(x3,h))); +tim2=xpart(p2 intersectiontimes (z3--(x3,-d))); +tim3=xpart(p3 intersectiontimes (z7--(x7,h))); +tim4=xpart(p4 intersectiontimes (z7--(x7,-d))); +filldraw z2l+.5hair*unitvector(z0'-z2){z0'-z2}..{left}z0l..z0r{right}..{z1-z0'}z1r + ..{z0'-z1}z1l..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +filldraw z6l+.5hair*unitvector(z4'-z2){z4'-z6}..{left}z4l..z4r{right}..{z5-z4'}z5r + ..{z4'-z5}z5l..subpath (0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p4,tim4),infinity) of p4..cycle; +penlabels(0,1,2,4,5,6); labels(0',3,4',7); +endchar; + +iff known chars.math_follows: +bskchar "Follows sign"; +beginchar(chars.math_follows,12u#,v_center(x_height#)); uni "0x227B"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis; rt x0=w-1.5u; x0'=2/3[x0,x1]; +top y1=h; x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z3=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z3--(x3,h))); +tim2=xpart(p2 intersectiontimes (z3--(x3,-d))); +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +penlabels(0,1,2); labels(0'); +endchar; + +iff known chars.math_follows_not: +bskchar "Not follows sign"; +beginchar(chars.math_follows_not,12u#,v_center(.75(body_height#+desc_depth#))); uni "0x2281"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis; rt x0=w-1.5u; x0'=2/3[x0,x1]; +top y1=vround((math_axis#+.5x_height#)*hppp); x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z3=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z3--(x3,h))); +tim2=xpart(p2 intersectiontimes (z3--(x3,-d))); +top rt z4=(w-2u,h); top lft z5=(2u,-d); +pos4(rule_thickness,angle(z5-z4)+90); pos5(rule_thickness,angle(z5-z4)+90); +bskpoints(4,5,rule_thickness,rule_thickness); +p3:=z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l; +p4:=z0r{left}..{z1-z0'}z1l..{z0'-z1}z1r; +p5:=z5r---z4rr..{z5-z4}z4l; +p6:=z4l---z5ll..{z4-z5}z5r; +(tim3,tim4)=p3 intersectiontimes p6; +(tim5,tim6)=p3 intersectiontimes p5; +(tim7,tim8)=p4 intersectiontimes p5; +(tim9,tim10)=p4 intersectiontimes p6; +(tim11,tim12)=p1 intersectiontimes p6; +(tim13,tim14)=p2 intersectiontimes p6; +filldraw subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p6,tim4),infinity) of p6 + ..subpath(0,rundy(p5,tim6).zpet) of p5 + ..subpath(rundy(p3,tim5),infinity) of p3 + ..subpath(0,rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p5,tim8),infinity) of p5 + ..subpath(0,rundy(p6,tim10).zpet) of p6 + ..subpath(rundy(p4,tim9),infinity) of p4 + ..subpath (0,rundy(p1,tim11).zpet) of p1 + ..subpath(rundy(p6,(tim12,.5f_obl)),rundy(p6,(tim14,.5f_obl)).zpet) of p6 + ..subpath(rundy(p2,tim13),infinity) of p2..cycle; +penlabels(0,1,2,3,4,5); labels(0',4rr,5ll); +endchar; + +iff known chars.math_follows_eq: +bskchar "Follows or equals to sign"; +beginchar(chars.math_follows_eq,12u#,v_center(x_height#+3u#)); uni "0x2AB0"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+1.5u; rt x0=w-1.5u; x0'=2/3[x0,x1]; x3=x1; x4=x0; +top y1=h; x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z5=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z5--(x5,h))); +tim2=xpart(p2 intersectiontimes (z5--(x5,-d))); +y3l=y4l=-d; bskpoints(3,4,hair,hair); +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +filldraw z3rr..z3l---z4ll..z4r---cycle; +penlabels(0,1,2,3,4); labels(0'); +endchar; + +iff known chars.math_follows_neq: +bskchar "Follows or not equals to sign"; +beginchar(chars.math_follows_neq,12u#,v_center(x_height#+3u#)); uni "0x2AB2"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+1.5u; rt x0=w-1.5u; x0'=2/3[x0,x1]; x3=x1; x4=x0; +top y1=h; x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z10=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z10--(x10,h))); +tim2=xpart(p2 intersectiontimes (z10--(x10,-d))); +y3l=y4l=-d; bskpoints(3,4,hair,hair); +.5[x5,x6]=.5[x3,x4]; .5[y5,y6]=y3; x6-x5=.75(y6-y5)=3u; +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +y6'r=y6'l=y4r; z6'r=whatever[z6r,z5r]; z6'l=whatever[z6l,z5l]; +y5'r=y5'l=y4l; z5'r=whatever[z6r,z5r]; z5'l=whatever[z6l,z5l]; +filldraw z3rr..z3l---obl(5'l,3l,5l)---z5l..z5rr---obl(5'r,5r,4l)---z4ll..z4r--- + obl(6'r,4r,6r)---z6r..z6ll---obl(6'l,6l,3r)---cycle; +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +penlabels(0,1,2,3,4); labels(0'); +endchar; + +iff known chars.math_follows_neq_vert: +bskchar "Follows or not equals to sign with vertical stroke"; +beginchar(chars.math_follows_neq_vert,12u#,v_center(x_height#+3u#)); uni "non"; %"0x2AB2.vert"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+1.5u; rt x0=w-1.5u; x0'=2/3[x0,x1]; x3=x1; x4=x0; +top y1=h; x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z10=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z10--(x10,h))); +tim2=xpart(p2 intersectiontimes (z10--(x10,-d))); +y3l=y4l=-d; bskpoints(3,4,hair,hair); +x5=x6=.5[x3,x4]; .5[y5,y6]=y3; .75(y6-y5)=3u; +pos5(rule_thickness,0); pos6(rule_thickness,0); +bskpoints(5,6,rule_thickness,rule_thickness); +y6'r=y6'l=y4r; z6'r=whatever[z6r,z5r]; z6'l=whatever[z6l,z5l]; +y5'r=y5'l=y4l; z5'r=whatever[z6r,z5r]; z5'l=whatever[z6l,z5l]; +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +oblu:=f_obl; +filldraw z3rr..z3l---obl(5'l,3l,5l)---z5l..z5rr---obl(5'r,5r,4l)---z4ll..z4r--- + obl(6'r,4r,6r)---z6r..z6ll---obl(6'l,6l,3r)---cycle; +penlabels(0,1,2,3,4); labels(0'); +endchar; + +iff known chars.math_follows_eq_double: +bskchar "Follows and double equals to sign"; +beginchar(chars.math_follows_eq_double,12u#,v_center(1.45x_height#+3u#)); uni "0x2AB4"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+1.5u+.225x_height; rt x0=w-1.5u; x0'=2/3[x0,x1]; +top y1=h; x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z9=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z9--(x9,h))); +tim2=xpart(p2 intersectiontimes (z9--(x9,-d))); +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +x3=x5=x1; x4=x6=x0; y5l=y6l=-d; y3=y4=y5+.45x_height; +filldraw bskrule(3,4,hair,0); +filldraw bskrule(6,5,hair,0); +penlabels(0,1,2,3,4,5,6); labels(0',4ll,5ll); +endchar; + +iff known chars.math_follows_not_eq_double: +bskchar "Follows and not double equals to sign"; +beginchar(chars.math_follows_not_eq_double,12u#,v_center(1.45x_height#+3u#)); uni "0x2AB6"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+1.5u+.225x_height; rt x0=w-1.5u; x0'=2/3[x0,x1]; +top y1=h; x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z9=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z9--(x9,h))); +tim2=xpart(p2 intersectiontimes (z9--(x9,-d))); +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos6(rule_thickness,90); +x3=x5=x1; x4=x6=x0; y5l=y6l=-d; y3=y4=y5+.45x_height; +top y7=y2l-rule_thickness; x8=x2+2u; .5[x8,x7]=.5w; .5[y8,y7]=.5[y3,y5]; +pos7(rule_thickness,angle(z8-z7)+90); pos8(rule_thickness,angle(z8-z7)+90); +bskpoints(3,4,hair,0); bskpoints(6,5,hair,0); +bskpoints(7,8,rule_thickness,rule_thickness); +z3'=whatever[z7l,z8l]=whatever[z3r,z4r]; +z4'=whatever[z7r,z8r]=whatever[z3r,z4r]; +z5'=whatever[z7r,z8r]=whatever[z3l,z4l]; +z6'=whatever[z7r,z8r]=whatever[z5r,z6r]; +z7'=whatever[z7r,z8r]=whatever[z5l,z6l]; +z8'=whatever[z7l,z8l]=whatever[z5l,z6l]; +z9'=whatever[z7l,z8l]=whatever[z5r,z6r]; +z10'=whatever[z7l,z8l]=whatever[z3l,z4l]; +oblu:=f_obl; oblu.more:=2f_obl; +if y7rry5l: y8ll:=y8l; x8ll:=x8l; fi +filldraw z3rr---obl(3',3r,7l)---z7l..z7rr---tobl(4',7rr,4r).more---z4r + ..z4ll---obl(5',4l,6')---obl(6',5',6rr).more---z6rr..z6l + ---obl(7',6l,8r)---z8r..z8ll---tobl(8',8ll,5ll).more---z5ll + ..z5r---obl(9',5r,10')---obl(10',9',3l).more---z3l..cycle; +penlabels(0,1,2,3,4,5,6,7,8); labels(0',4ll,5ll,7rr,8ll,3',4',5',6',7',8',9',10'); +endchar; + +iff known chars.math_follows_sim: +bskchar "Follows or similar to sign"; +beginchar(chars.math_follows_sim,12u#,v_center(1.5x_height#+2rule_thickness#)); uni "0x227F"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[], spread; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+.25x_height+rule_thickness; rt x0=w-1.5u; x0'=2/3[x0,x1]; +top y1=h; x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z5=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z5--(x5,h))); +tim2=xpart(p2 intersectiontimes (z5--(x5,-d))); +bot y3=-d; spread:=.5x_height; +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +vlnka(3,4); +penlabels(0,1,2); labels(0'); +endchar; + +iff known chars.math_follows_not_sim: +bskchar "Follows and not similar to sign"; +beginchar(chars.math_follows_not_sim,12u#,v_center(1.5x_height#+2rule_thickness#)); uni "0x22E9"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[], spread; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+.25x_height+rule_thickness; rt x0=w-1.5u; x0'=2/3[x0,x1]; +top y1=h; x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z5=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z5--(x5,h))); +tim2=xpart(p2 intersectiontimes (z5--(x5,-d))); +bot y3=-d; spread:=.5x_height; +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +vlnka(3,4).nodraw; +top y6-bot y7=.7x_height; .5[y6,y7]=.5[y3,y4]; .5[x6,x7]=.5w; x6=x4a; +pos6(rule_thickness,angle(z7-z6)+90); pos7(rule_thickness,angle(z7-z6)+90); +bskpoints(6,7,rule_thickness,rule_thickness); +p3:=subpath(0,4) of _vlnka; +p4:=subpath(5,infinity) of _vlnka; +p5:=z6l---z7ll..{z6-z7}z7r; +p6:=z7r---z6rr..{z7-z6}z6l; +(tim3,tim4)=p3 intersectiontimes p5; +(tim5,tim6)=p3 intersectiontimes p6; +(tim7,tim8)=p4 intersectiontimes p6; +(tim9,tim10)=p4 intersectiontimes p5; +filldraw subpath(0,rundy(p3,(tim3,2oblu)).zpet) of p3 + ..subpath(rundy(p5,(tim4,2oblu)),infinity) of p5 + ..subpath(0,rundy(p6,tim6).zpet) of p6 + ..subpath(rundy(p3,tim5),infinity) of p3 + ..subpath(0,rundy(p4,(tim7,2oblu)).zpet) of p4 + ..subpath(rundy(p6,(tim8,2oblu)),infinity) of p6 + ..subpath(0,rundy(p5,tim10).zpet) of p5 + ..subpath(rundy(p4,tim9),infinity) of p4..cycle; +penlabels(0,1,2,6,7); labels(0'); +endchar; + +iff known chars.math_follows_approx: +bskchar "Follows or approximately equal to sign"; +beginchar(chars.math_follows_approx,12u#,v_center(1.8x_height#+2rule_thickness#)); uni "0x2AB8"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[], spread; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+.4x_height+rule_thickness; rt x0=w-1.5u; x0'=2/3[x0,x1]; +top y1=h; x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z5=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z5--(x5,h))); +tim2=xpart(p2 intersectiontimes (z5--(x5,-d))); +bot y3=-d; spread:=.4x_height; y6-y3=spread; +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +vlnka(3,4); vlnka(6,7); +penlabels(0,1,2); labels(0'); +endchar; + +iff known chars.math_follows_not_approx: +bskchar "Follows and not approximately equal to sign"; +beginchar(chars.math_follows_not_approx,12u#,v_center(1.8x_height#+2rule_thickness#)); uni "0x2ABA"; +italcorr h#*slant; +adjust_fit(0,0); +numeric spread; +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +spread:=.4x_height; +bot y1=-d; y3-y1=spread; +top y5-bot y6=x_height; .5[y5,y6]=y3; .5[x5,x6]=.5w; z5=z6+whatever*dir60; +y7=y7'-.5o=.5[y8,y9]=math_axis+.4x_height+rule_thickness; rt x7=w-1.5u; x7'=2/3[x7,x8]; +top y8=h; x8-.5rule_thickness=u; x9=x8; +pos7(rule_thickness,90); +pos8(rule_thickness,angle(z8-z7')+90); pos9(rule_thickness,angle(z9-z7')+90); +pos5(rule_thickness,angle(z6-z5)+90); pos6(rule_thickness,angle(z6-z5)+90); +bskpoints(5,6,rule_thickness,rule_thickness); +vlnka(1,2).nodraw; +p0:=subpath(0,4) of _vlnka; +p1:=subpath(5,infinity) of _vlnka; +vlnka(3,4).nodraw; +p2:=subpath(0,4) of _vlnka; +p3:=subpath(5,infinity) of _vlnka; +p4:=z5l---z6ll..{z5-z6}z6r; +p5:=z6r---z5rr..{z6-z5}z5l; +(tim0,tim1)=p0 intersectiontimes p4; +(tim2,tim3)=p0 intersectiontimes p5; +(tim4,tim5)=p1 intersectiontimes p5; +(tim6,tim7)=p1 intersectiontimes p4; +(tim8,tim9)=p2 intersectiontimes p4; +(tim10,tim11)=p2 intersectiontimes p5; +(tim12,tim13)=p3 intersectiontimes p5; +(tim14,tim15)=p3 intersectiontimes p4; +p7:=z8r{z7'-z8}..{right}z7l; +p8:=z7r{left}..{z9-z7'}z9l; +z12=bsktouch(p7,down,p8,up); +tim16=xpart(p7 intersectiontimes (z12--(x12,h))); +tim17=xpart(p8 intersectiontimes (z12--(x12,-d))); +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p4,tim1),infinity) of p4 + ..subpath(0,rundy(p5,tim3).zpet) of p5 + ..subpath(rundy(p0,tim2),infinity) of p0 + ..subpath(0,rundy(p1,tim6).zpet) of p1 + ..subpath(rundy(p5,(tim5,f_obl)),rundy(p5,(tim11,f_obl)).zpet) of p5 + ..subpath(rundy(p2,tim10),infinity) of p2 + ..subpath(0,rundy(p3,tim12).zpet) of p3 + ..subpath(rundy(p5,tim13),infinity) of p5 + ..subpath(0,rundy(p4,tim15).zpet) of p4 + ..subpath(rundy(p3,tim14),infinity) of p3 + ..subpath(0,rundy(p2,tim8).zpet) of p2 + ..subpath(rundy(p4,(tim9,f_obl)),rundy(p4,(tim7,f_obl)).zpet) of p4 + ..subpath(rundy(p1,tim6),infinity) of p1..cycle; +filldraw z9r+.5hair*unitvector(z7'-z9){z7'-z9}..{right}z7l..z7r{left}..{z8-z7'}z8l + ..{z7'-z8}z8r..subpath (0,rundy(p7,tim16).zpet) of p7 + ..subpath(rundy(p8,tim17),infinity) of p8..cycle; +penlabels(5,6,7,8,9); labels(7'); +endchar; + +iff known chars.math_follows_eq_not: +bskchar "Not follows or equals to sign"; +beginchar(chars.math_follows_eq_not,12u#,v_center(.75(body_height#+desc_depth#))); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+1.5u; rt x0=w-1.5u; x0'=2/3[x0,x1]; +top y1=vround((math_axis#+.5x_height#+1.5u#)*hppp); x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos6(rule_thickness,90); pos7(rule_thickness,90); +y6l=y7l=math_axis-.5x_height-1.5u; x6=x0; x7=x1; bskpoints(6,7,hair,hair); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z3=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z3--(x3,h))); +tim2=xpart(p2 intersectiontimes (z3--(x3,-d))); +top rt z4=(w-3u,h); top lft z5=(3u,-d); +pos4(rule_thickness,angle(z5-z4)+90); pos5(rule_thickness,angle(z5-z4)+90); +bskpoints(4,5,rule_thickness,rule_thickness); +p3:=z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l; +p4:=z0r{left}..{z1-z0'}z1l..{z0'-z1}z1r; +p5:=z5r---z4rr..{z5-z4}z4l; +p6:=z4l---z5ll..{z4-z5}z5r; +p7:=z6l{right}..z6rr---z7r; +p8:=z7r{left}..z7ll---z6l; +(tim3,tim4)=p3 intersectiontimes p6; +(tim5,tim6)=p3 intersectiontimes p5; +(tim7,tim8)=p4 intersectiontimes p5; +(tim9,tim10)=p4 intersectiontimes p6; +(tim11,tim12)=p1 intersectiontimes p6; +(tim13,tim14)=p2 intersectiontimes p6; +(tim15,tim16)=p6 intersectiontimes p7; +(tim17,tim18)=p6 intersectiontimes p8; +(tim19,tim20)=p5 intersectiontimes p8; +(tim21,tim22)=p5 intersectiontimes p7; +filldraw subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p6,tim4),rundy(p6,(tim15,f_obl)).zpet) of p6 + ..subpath(rundy(p7,(tim16,f_obl)),infinity) of p7 + ..subpath(0,rundy(p8,tim18).zpet) of p8 + ..subpath(rundy(p6,tim17),infinity) of p6 + ..subpath(0,rundy(p5,(tim19,f_obl)).zpet) of p5 + ..subpath(rundy(p8,(tim20,f_obl)),infinity) of p8 + ..subpath(0,rundy(p7,tim22).zpet) of p7 + ..subpath(rundy(p5,tim21),rundy(p5,tim6).zpet) of p5 + ..subpath(rundy(p3,tim5),infinity) of p3 + ..subpath(0,rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p5,tim8),infinity) of p5 + ..subpath(0,rundy(p6,tim10).zpet) of p6 + ..subpath(rundy(p4,tim9),infinity) of p4 + ..subpath (0,rundy(p1,tim11).zpet) of p1 + ..subpath(rundy(p2,tim13),infinity) of p2..cycle; +penlabels(0,1,2,3,4,5,6,7); labels(0',4rr,5ll,6rr,7ll); +endchar; + +iff known chars.math_follows_eq_curved: +bskchar "Follows or curvy equals to sign"; +beginchar(chars.math_follows_eq_curved,12u#,v_center(x_height#+3u#)); uni "0x227D"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+1.5u; rt x0=w-1.5u; x0'=2/3[x0,x1]; x3=x0; +top y1=h; x1-.5rule_thickness=u; x2=x4-u=x1; +bot y4=-d; y0-y3=y2-y4; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos3(rule_thickness,270); pos4(rule_thickness,angle(z2-z0')+90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z5=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z5--(x5,h))); +tim2=xpart(p2 intersectiontimes (z5--(x5,-d))); +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +filldraw z4l+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z3l..z3r{left}..{z2-z0'}z4r..cycle; +penlabels(0,1,2,3,4); labels(0'); +endchar; + +iff known chars.math_follows_eq_curved_not: +bskchar "Not follows or curved equals to sign"; +beginchar(chars.math_follows_eq_curved_not,12u#,v_center(.75(body_height#+desc_depth#))); uni "0x22E1"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis+1.5u; rt x0=w-1.5u; x0'=2/3[x0,x1]; +top y1=vround((math_axis#+.5x_height#+1.5u#)*hppp); x1-.5rule_thickness=u; x2=x1; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos6(rule_thickness,90); pos7(rule_thickness,angle(z2-z0')-90); +bot y7=.5x_height-math_axis; y0-y6=y2-y7; x6=x0; x7=x1+u; +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z3=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z3--(x3,h))); +tim2=xpart(p2 intersectiontimes (z3--(x3,-d))); +top rt z4=(w-3u,h); top lft z5=(3u,-d); +pos4(rule_thickness,angle(z5-z4)+90); pos5(rule_thickness,angle(z5-z4)+90); +bskpoints(4,5,rule_thickness,rule_thickness); +p3:=z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l; +p4:=z0r{left}..{z1-z0'}z1l..{z0'-z1}z1r; +p5:=z5r---z4rr..{z5-z4}z4l; +p6:=z4l---z5ll..{z4-z5}z5r; +p7:=z6r{left}..{z2-z0'}z7r; +p8:=z7l+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z6l; +(tim3,tim4)=p3 intersectiontimes p6; +(tim5,tim6)=p3 intersectiontimes p5; +(tim7,tim8)=p4 intersectiontimes p5; +(tim9,tim10)=p4 intersectiontimes p6; +(tim11,tim12)=p1 intersectiontimes p6; +(tim13,tim14)=p2 intersectiontimes p6; +(tim15,tim16)=p6 intersectiontimes p7; +(tim17,tim18)=p6 intersectiontimes p8; +(tim19,tim20)=p5 intersectiontimes p8; +(tim21,tim22)=p5 intersectiontimes p7; +filldraw subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p6,tim4),rundy(p6,(tim15,f_obl)).zpet) of p6 + ..subpath(rundy(p7,(tim16,f_obl)),infinity) of p7 + ..subpath(0,rundy(p8,tim18).zpet) of p8 + ..subpath(rundy(p6,tim17),infinity) of p6 + ..subpath(0,rundy(p5,(tim19,f_obl)).zpet) of p5 + ..subpath(rundy(p8,(tim20,f_obl)),infinity) of p8 + ..subpath(0,rundy(p7,tim22).zpet) of p7 + ..subpath(rundy(p5,tim21),rundy(p5,tim6).zpet) of p5 + ..subpath(rundy(p3,tim5),infinity) of p3 + ..subpath(0,rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p5,tim8),infinity) of p5 + ..subpath(0,rundy(p6,tim10).zpet) of p6 + ..subpath(rundy(p4,tim9),infinity) of p4 + ..subpath (0,rundy(p1,tim11).zpet) of p1 + ..subpath(rundy(p2,tim13),infinity) of p2..cycle; +penlabels(0,1,2,3,4,5,6,7); labels(0',4rr,5ll,6rr,7ll); +endchar; + +iff known chars.math_eq_follows: +bskchar "Equals to or follows sign"; +beginchar(chars.math_eq_follows,12u#,v_center(x_height#+3u#)); uni "0x22DF"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=math_axis-1.5u; rt x0=w-1.5u; x0'=2/3[x0,x1]; x3=x0; +bot y2=-d; x1-.5rule_thickness=u; x2=x4-u=x1; +top y4=h; y0-y3=y1-y4; +pos0(rule_thickness,90); +pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos3(rule_thickness,270); pos4(rule_thickness,angle(z1-z0')+90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +z5=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z5--(x5,h))); +tim2=xpart(p2 intersectiontimes (z5--(x5,-d))); +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +filldraw z4l+.5hair*unitvector(z0'-z1){z0'-z1}..{right}z3l..z3r{left}..{z1-z0'}z4r..cycle; +penlabels(0,1,2,3,4); labels(0'); +endchar; + +iff known chars.math_follows_double: +bskchar "Double follows sign"; +beginchar(chars.math_follows_double,15u#,v_center(x_height#)); uni "0x2ABC"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +y0=y0'-.5o=.5[y1,y2]=y4=y4'-.5o=.5[y5,y6]=math_axis; rt x0=w-1.5u; x0'=2/3[x0,x1]; +top y1=top y5=h; x1-.5rule_thickness=4.5u; x2=x1; +rt x4=w-7.5u; x4'=2/3[x4,x5]; x5-.5rule_thickness=u; x6=x5; +pos0(rule_thickness,90); pos1(rule_thickness,angle(z1-z0')+90); pos2(rule_thickness,angle(z2-z0')+90); +pos4(rule_thickness,90); pos5(rule_thickness,angle(z5-z4')+90); pos6(rule_thickness,angle(z6-z4')+90); +p1:=z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l; +p3:=z5r{z4'-z5}..{right}z4l; +p4:=z4r{left}..{z6-z4'}z6l; +z3=bsktouch(p1,down,p2,up); +z7=bsktouch(p3,down,p4,up); +tim1=xpart(p1 intersectiontimes (z3--(x3,h))); +tim2=xpart(p2 intersectiontimes (z3--(x3,-d))); +tim3=xpart(p3 intersectiontimes (z7--(x7,h))); +tim4=xpart(p4 intersectiontimes (z7--(x7,-d))); +filldraw z2r+.5hair*unitvector(z0'-z2){z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l + ..{z0'-z1}z1r..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +filldraw z6r+.5hair*unitvector(z4'-z6){z4'-z6}..{right}z4l..z4r{left}..{z5-z4'}z5l + ..{z4'-z5}z5r..subpath (0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p4,tim4),infinity) of p4..cycle; +penlabels(0,1,2,4,5,6); labels(0',3,4',7); +endchar; + +iff known chars.math_precedes_relation: +bskchar "Precedes under relation sign"; +beginchar(chars.math_precedes_relation,12u#,v_center(1.3x_height#)); uni "0x22B0"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +pos0(rule_thickness,90); +pos1(rule_thickness,180); pos1'(rule_thickness,-90); +pos2(rule_thickness,0); pos2'(rule_thickness,-90); +y0=y0'-.5o=.5[y1,y2]=.5[y1',y2']=math_axis; lft x0=1.5u; x0'=.85[x0,x1]; +top y1=h-.25x_height; x1+.5rule_thickness=w-u; x2=x1; +top y1'l=h; x1'=x2'=x1r-rule_thickness; +p1:=z1'l{right}..z1l{z0'-z1}..{left}z0l; +p2:=z0r{right}..{z2-z0'}z2r..{left}z2'r; +z3=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z3--(x3,h))); +tim2=xpart(p2 intersectiontimes (z3--(x3,-d))); +filldraw z2'l{right}..z2l{z0'-z2}..{left}z0l..z0r{right}..{z1-z0'}z1r..{left}z1'r + ..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +penlabels(0,1,1',2,2'); labels(0',3); +endchar; + +iff known chars.math_follows_relation: +bskchar "Follows under relation sign"; +beginchar(chars.math_follows_relation,12u#,v_center(1.3x_height#)); uni "0x22B1"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; oblu:=2oblu; +path p[]; +pos0(rule_thickness,90); +pos1(rule_thickness,180); pos1'(rule_thickness,90); +pos2(rule_thickness,0); pos2'(rule_thickness,90); +y0=y0'-.5o=.5[y1,y2]=.5[y1',y2']=math_axis; rt x0=w-1.5u; x0'=.85[x0,x1]; +top y1=h-.25x_height; x1-.5rule_thickness=u; x2=x1; +top y1'r=h; x1'=x2'=x1l+rule_thickness; +p1:=z1'r{left}..z1r{z0'-z1}..{right}z0l; +p2:=z0r{left}..{z2-z0'}z2l..{right}z2'l; +z3=bsktouch(p1,down,p2,up); +tim1=xpart(p1 intersectiontimes (z3--(x3,h))); +tim2=xpart(p2 intersectiontimes (z3--(x3,-d))); +filldraw z2'r{left}..z2r{z0'-z2}..{right}z0l..z0r{left}..{z1-z0'}z1l..{right}z1'l + ..subpath (0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2..cycle; +penlabels(0,1,1',2,2'); labels(0'); +endchar; + +iff known chars.math_angle_left: +bskchar "Left angle bracket"; +beginchar(chars.math_angle_left,6u#,body_height#,paren_depth#); uni "0x27E8"; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta; oblu:=2oblu; +lft x0l=u; y0=math_axis; +pos0(rule_thickness,0); x1=x2; .5[y1r,y2r]=y0; +y1r=h; x1r=w-x0l; +theta:=angle(z1r-z0r); +pos1(.85rule_thickness,theta-90); pos2(rule_thickness,theta-45); +z0'=z0l+(.85rule_thickness-currentbreadth)*dir(theta-90); +z0''=z0l+(rule_thickness-currentbreadth)*dir(theta-90); +z0'''=whatever[z0',z1r]=whatever[z0'',z2r]; +y0l'=y0l+o; z0l'=whatever[z0l,z1l]; +bskpoints(0,1,hair,hair); +filldraw z0l..z0l'---z1ll..z1r---obl(0''',1r,2r)---z2r..z2l---cycle; +penlabels(0,1,2); labels(0',0'',0''',1ll,0l'); +endchar; + +iff known chars.math_angle_left_big: +bskchar "\big left angle bracket"; +beginchar(chars.math_angle_left_big,6u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta, breadth; oblu:=2oblu; breadth:=rule_thickness; +lft x0l=u; y0=.5[-d,h]; +pos0(breadth,0); x1=x2; .5[y1r,y2r]=y0; +y1r=h; x1r=w-x0l; +theta:=angle(z1r-z0r); +pos1(.85breadth,theta-90); pos2(breadth,theta-45); +z0'=z0l+(.85breadth-currentbreadth)*dir(theta-90); +z0''=z0l+(breadth-currentbreadth)*dir(theta-90); +z0'''=whatever[z0',z1r]=whatever[z0'',z2r]; +y0l'=y0l+o; z0l'=whatever[z0l,z1l]; +bskpoints(0,1,hair,hair); +filldraw z0l..z0l'---z1ll..z1r---obl(0''',1r,2r)---z2r..z2l---cycle; +penlabels(0,1,2); labels(0',0'',0''',1ll,0l'); +endchar; + +iff known chars.math_angle_left_Big: +bskchar "\Big left angle bracket"; +beginchar(chars.math_angle_left_Big,9u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta, breadth; oblu:=2oblu; breadth:=1.1rule_thickness; +lft x0l=u; y0=.5[-d,h]; +pos0(breadth,0); x1=x2; .5[y1r,y2r]=y0; +y1r=h; x1r=w-x0l; +theta:=angle(z1r-z0r); +pos1(.85breadth,theta-90); pos2(breadth,theta-45); +z0'=z0l+(.85breadth-currentbreadth)*dir(theta-90); +z0''=z0l+(breadth-currentbreadth)*dir(theta-90); +z0'''=whatever[z0',z1r]=whatever[z0'',z2r]; +y0l'=y0l+o; z0l'=whatever[z0l,z1l]; +bskpoints(0,1,hair,hair); +filldraw z0l..z0l'---z1ll..z1r---obl(0''',1r,2r)---z2r..z2l---cycle; +penlabels(0,1,2); labels(0',0'',0''',1ll,0l'); +endchar; + +iff known chars.math_angle_left_bigg: +bskchar "\bigg left angle bracket"; +beginchar(chars.math_angle_left_bigg,12u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta, breadth; oblu:=2oblu; breadth:=1.25rule_thickness; +lft x0l=u; y0=.5[-d,h]; +pos0(breadth,0); x1=x2; .5[y1r,y2r]=y0; +y1r=h; x1r=w-x0l; +theta:=angle(z1r-z0r); +pos1(.85breadth,theta-90); pos2(breadth,theta-45); +z0'=z0l+(.85breadth-currentbreadth)*dir(theta-90); +z0''=z0l+(breadth-currentbreadth)*dir(theta-90); +z0'''=whatever[z0',z1r]=whatever[z0'',z2r]; +y0l'=y0l+o; z0l'=whatever[z0l,z1l]; +bskpoints(0,1,hair,hair); +filldraw z0l..z0l'---z1ll..z1r---obl(0''',1r,2r)---z2r..z2l---cycle; +penlabels(0,1,2); labels(0',0'',0''',1ll,0l'); +endchar; + +iff known chars.math_angle_left_Bigg: +bskchar "\Bigg left angle bracket"; +beginchar(chars.math_angle_left_Bigg,15u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta, breadth; oblu:=2oblu; breadth:=1.5rule_thickness; +lft x0l=u; y0=.5[-d,h]; +pos0(breadth,0); x1=x2; .5[y1r,y2r]=y0; +y1r=h; x1r=w-x0l; +theta:=angle(z1r-z0r); +pos1(.85breadth,theta-90); pos2(breadth,theta-45); +z0'=z0l+(.85breadth-currentbreadth)*dir(theta-90); +z0''=z0l+(breadth-currentbreadth)*dir(theta-90); +z0'''=whatever[z0',z1r]=whatever[z0'',z2r]; +y0l'=y0l+o; z0l'=whatever[z0l,z1l]; +bskpoints(0,1,hair,hair); +filldraw z0l..z0l'---z1ll..z1r---obl(0''',1r,2r)---z2r..z2l---cycle; +penlabels(0,1,2); labels(0',0'',0''',1ll,0l'); +endchar; + +iff known chars.math_angle_right: +bskchar "Right angle bracket"; +beginchar(chars.math_angle_right,6u#,body_height#,paren_depth#); uni "0x27E9"; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta; oblu:=2oblu; +lft x0r=w-u; y0=math_axis; +pos0(rule_thickness,0); x1=x2; .5[y1r,y2r]=y0; +y1l=h; x1l=w-x0r; +theta:=angle(z1l-z0l); +pos1(rule_thickness,theta-90); pos2(.85rule_thickness,theta-135); +z0'=z0r+(rule_thickness-currentbreadth)*dir(theta+90); +z0''=z0r+(.85rule_thickness-currentbreadth)*dir(theta+45); +z0'''=whatever[z0',z1r]=whatever[z0'',z2r]; +y0r'=y0r+o; z0r'=whatever[z0r,z1r]; +bskpoints(1,0,hair,hair); +filldraw z0r..z0r'---z1rr..z1l---obl(0''',1l,2r)---z2l..z2r---cycle; +penlabels(0,1,2); labels(0',0'',0''',1ll,0l'); +endchar; + +iff known chars.math_angle_right_big: +bskchar "\big right angle bracket"; +beginchar(chars.math_angle_right_big,6u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta, breadth; oblu:=2oblu; breadth:=rule_thickness; +lft x0r=w-u; y0=.5[-d,h]; +pos0(breadth,0); x1=x2; .5[y1r,y2r]=y0; +y1l=h; x1l=w-x0r; +theta:=angle(z1l-z0l); +pos1(breadth,theta-90); pos2(.85breadth,theta-135); +z0'=z0r+(breadth-currentbreadth)*dir(theta+90); +z0''=z0r+(.85breadth-currentbreadth)*dir(theta+45); +z0'''=whatever[z0',z1r]=whatever[z0'',z2r]; +y0r'=y0r+o; z0r'=whatever[z0r,z1r]; +bskpoints(1,0,hair,hair); +filldraw z0r..z0r'---z1rr..z1l---obl(0''',1l,2r)---z2l..z2r---cycle; +penlabels(0,1,2); labels(0',0'',0''',1ll,0l'); +endchar; + +iff known chars.math_angle_right_Big: +bskchar "\Big right angle bracket"; +beginchar(chars.math_angle_right_Big,9u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta, breadth; oblu:=2oblu; breadth:=1.1rule_thickness; +lft x0r=w-u; y0=.5[-d,h]; +pos0(breadth,0); x1=x2; .5[y1r,y2r]=y0; +y1l=h; x1l=w-x0r; +theta:=angle(z1l-z0l); +pos1(breadth,theta-90); pos2(.85breadth,theta-135); +z0'=z0r+(breadth-currentbreadth)*dir(theta+90); +z0''=z0r+(.85breadth-currentbreadth)*dir(theta+45); +z0'''=whatever[z0',z1r]=whatever[z0'',z2r]; +y0r'=y0r+o; z0r'=whatever[z0r,z1r]; +bskpoints(1,0,hair,hair); +filldraw z0r..z0r'---z1rr..z1l---obl(0''',1l,2r)---z2l..z2r---cycle; +penlabels(0,1,2); labels(0',0'',0''',1ll,0l'); +endchar; + +iff known chars.math_angle_right_bigg: +bskchar "\bigg right angle bracket"; +beginchar(chars.math_angle_right_bigg,12u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta, breadth; oblu:=2oblu; breadth:=1.25rule_thickness; +lft x0r=w-u; y0=.5[-d,h]; +pos0(breadth,0); x1=x2; .5[y1r,y2r]=y0; +y1l=h; x1l=w-x0r; +theta:=angle(z1l-z0l); +pos1(breadth,theta-90); pos2(.85breadth,theta-135); +z0'=z0r+(breadth-currentbreadth)*dir(theta+90); +z0''=z0r+(.85breadth-currentbreadth)*dir(theta+45); +z0'''=whatever[z0',z1r]=whatever[z0'',z2r]; +y0r'=y0r+o; z0r'=whatever[z0r,z1r]; +bskpoints(1,0,hair,hair); +filldraw z0r..z0r'---z1rr..z1l---obl(0''',1l,2r)---z2l..z2r---cycle; +penlabels(0,1,2); labels(0',0'',0''',1ll,0l'); +endchar; + +iff known chars.math_angle_right_Bigg: +bskchar "\Bigg right angle bracket"; +beginchar(chars.math_angle_right_Bigg,15u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta, breadth; oblu:=2oblu; breadth:=1.5rule_thickness; +lft x0r=w-u; y0=.5[-d,h]; +pos0(breadth,0); x1=x2; .5[y1r,y2r]=y0; +y1l=h; x1l=w-x0r; +theta:=angle(z1l-z0l); +pos1(breadth,theta-90); pos2(.85breadth,theta-135); +z0'=z0r+(breadth-currentbreadth)*dir(theta+90); +z0''=z0r+(.85breadth-currentbreadth)*dir(theta+45); +z0'''=whatever[z0',z1r]=whatever[z0'',z2r]; +y0r'=y0r+o; z0r'=whatever[z0r,z1r]; +bskpoints(1,0,hair,hair); +filldraw z0r..z0r'---z1rr..z1l---obl(0''',1l,2r)---z2l..z2r---cycle; +penlabels(0,1,2); labels(0',0'',0''',1ll,0l'); +endchar; + +iff known chars.math_nabla: +bskchar "Nabla operator"; +beginchar(chars.math_nabla,13u#,cap_height#,0); uni "0x2207"; +adjust_fit(0,0); +pickup tiny.nib; +numeric alpha, right_stem, left_stem, old_jut; oblu:=2oblu; +pickup tiny.nib; +old_jut:=cap_jut; +rt x1l=w-u; lft x2r=u; top y1l=top y2r=h; +x3l=.5w; bot y3l=-d-apex_o; +left_stem=cap_hair; +right_stem=cap_stem; +alpha=diag_ratio(2,left_stem,y3l-y1l,x3l-x1l); +pos1(alpha*left_stem,180); pos2(alpha*right_stem,180); +pos1'(alpha*left_stem,180); pos2'(alpha*right_stem,180); +z1'l=z3l=z2'r; +z1''=z1r+(cap_stem-currentbreadth)*unitvector(z3l-z1l); +z2''=z2l+(cap_stem-currentbreadth)*unitvector(z3l-z2r); +z3'=whatever[z1'r,z1r]=whatever[z2'l,z2l]; y3'l=y3'r=y3'+.25[cap_hair,cap_stem]; +filldraw z1l---z2r--z3l--cycle; +infill obl(1'',3',2'')---obl(2'',1'',3')---obl(3',2'',1'')---cycle; +penlabels(1,1',2,2',3); labels(1'',2'',3'); +endchar; + +iff known chars.math_nabla_small: +bskchar "Nabla operator (smaller)"; +beginchar(chars.math_nabla_small,12u#,.9cap_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric alpha, right_stem, left_stem, old_jut; oblu:=2oblu; +pickup tiny.nib; +old_jut:=cap_jut; +rt x1l=w-u; lft x2r=u; top y1l=top y2r=h; +x3l=.5w; bot y3l=-d-apex_o; +left_stem=cap_hair; +right_stem=cap_stem; +alpha=diag_ratio(2,left_stem,y3l-y1l,x3l-x1l); +pos1(alpha*left_stem,180); pos2(alpha*right_stem,180); +pos1'(alpha*left_stem,180); pos2'(alpha*right_stem,180); +z1'l=z3l=z2'r; +z1''=z1r+(cap_stem-currentbreadth)*unitvector(z3l-z1l); +z2''=z2l+(cap_stem-currentbreadth)*unitvector(z3l-z2r); +z3'=whatever[z1'r,z1r]=whatever[z2'l,z2l]; y3'l=y3'r=y3'+.25[cap_hair,cap_stem]; +filldraw z1l---z2r--z3l--cycle; +infill obl(1'',3',2'')---obl(2'',1'',3')---obl(3',2'',1'')---cycle; +penlabels(1,1',2,2',3); labels(1'',2'',3'); +endchar; + +iff known chars.math_laplace: +bskchar "Laplace operator"; +beginchar(chars.math_laplace,13u#,cap_height#,0); uni "0x2206"; +adjust_fit(0,0); +pickup tiny.nib; +numeric alpha, right_stem, left_stem, old_jut; oblu:=2oblu; +pickup tiny.nib; +old_jut:=cap_jut; +rt x1l=w-u; lft x2r=u; bot y1l=bot y2r=-d; +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,180); pos2(alpha*right_stem,180); +pos1'(alpha*left_stem,180); pos2'(alpha*right_stem,180); +z1'l=z3l=z2'r; +z1''=z1r+(cap_stem-currentbreadth)*unitvector(z3l-z1l); +z2''=z2l+(cap_stem-currentbreadth)*unitvector(z3l-z2r); +z3'=whatever[z1'r,z1r]=whatever[z2'l,z2l]; y3'l=y3'r=y3'+.25[cap_hair,cap_stem]; +filldraw z1l---z2r--z3l--cycle; +infill obl(1'',3',2'')---obl(2'',1'',3')---obl(3',2'',1'')---cycle; +penlabels(1,1',2,2',3); labels(1'',2'',3'); +endchar; + +iff known chars.math_laplace_small: +bskchar "Laplace operator (smaller)"; +beginchar(chars.math_laplace_small,12u#,.9cap_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric alpha, right_stem, left_stem, old_jut; oblu:=2oblu; +pickup tiny.nib; +old_jut:=cap_jut; +rt x1l=w-u; lft x2r=u; bot y1l=bot y2r=-d; +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,180); pos2(alpha*right_stem,180); +pos1'(alpha*left_stem,180); pos2'(alpha*right_stem,180); +z1'l=z3l=z2'r; +z1''=z1r+(cap_stem-currentbreadth)*unitvector(z3l-z1l); +z2''=z2l+(cap_stem-currentbreadth)*unitvector(z3l-z2r); +z3'=whatever[z1'r,z1r]=whatever[z2'l,z2l]; y3'l=y3'r=y3'+.25[cap_hair,cap_stem]; +filldraw z1l---z2r--z3l--cycle; +infill obl(1'',3',2'')---obl(2'',1'',3')---obl(3',2'',1'')---cycle; +penlabels(1,1',2,2',3); labels(1'',2'',3'); +endchar; + +iff known chars.math_dalembert: +bskchar "D'Alembert operator"; +beginchar(chars.math_dalembert,13u#,.9cap_height#,0); uni "0x29E0"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(cap_stem,0); pos2(cap_stem,0); pos3(cap_hair,0); pos4(cap_hair,0); +lft x1l=lft x2l=u; rt x3r=rt x4r=w-u; +bot y2=bot y3=0; top y1=top y4=h; +y1r:=y4l:=y1r-cap_hair+currentbreadth; +y2r:=y3l:=y2r+cap_stem-currentbreadth; +filldraw obl(1l,4r,2l)---obl(2l,1l,3r)---obl(3r,2l,4r)---obl(4r,3r,1l)---cycle; +infill obl(1r,4l,2r)---obl(2r,1r,3l)---obl(3l,2r,4l)---obl(4l,3l,1r)---cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_wreath: +bskchar "Wreath product"; +beginchar(chars.math_wreath,6u#, asc_height#,asc_depth#); uni "0x2240"; +adjust_fit(0,0); +pickup tiny.nib; +x1a.r=x2; x2a.l=x1; .5[y1,y2]=.5[y1a,y2a]=math_axis; +y1-y2=12u; +rt x2- lft x1= w-2u; +rt x2=w-u; y2-y2a=1/4(y2-y1); +pos1(hair,90); pos2(hair,90); pos1a(curve,20); pos2a(curve,-20); +z2a.s=z2a.r+curve*unitvector(z2-z1); +filldraw z1r{z1a-z1}..z1a.r..z2a.r..z2a.s..{z2-z2a.r}z2r.. + z2l{z2a-z2}..z2a.l..z1a.l..{z1-z1a.l}z1l..cycle; +penlabels(1,1a,2,2a); labels(2a.s); +endchar; + +iff known chars.math_empty_set: +bskchar "Empty set"; +beginchar(chars.math_empty_set,12u#,asc_height#,0); uni "0x2205"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2.5oblu; +pos1(curve,0); pos2(hair,90); pos3(curve,180); pos4(hair,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5y4; .5[x2,x4]=.5[x1,x3]; x2-x4=0; bot y2l=-o; top y4r=h; +top z5=(x1,-apex_o); bot z6=(x3,h+o); +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +z0r=.5[z5r,z6r]; z0l=.5[z5l,z6l]; +p0:=z1l{down}..z2l..z3l..z4l..{down}z1l; +p1:=z1r{up}..z4r..z3r..z2r..{up}z1r; +p2:=z5r--z0r--z6r; +p3:=z6l--z0l--z5l; +(tim0,tim1-.5)=p0 intersectiontimes subpath(.5,infinity) of p2; +(tim2,tim3)=(subpath (0,1) of p3) intersectiontimes p0; +(tim4-1,tim5)=(subpath (1,infinity) of p3) intersectiontimes p0; +(tim6,tim7)=p2 intersectiontimes p0; +filldraw subpath (rundy(p0,tim7),rundy(p0,tim0).zpet) of p0..subpath(rundy(p2,tim1),infinity) of p2{z6-z5} + ..subpath(0,rundy(p3,(tim2,3/4oblu)).zpet) of p3..subpath(rundy(p0,tim3),infinity) of p0 + ..subpath(0,rundy(p0,tim5).zpet) of p0..subpath(rundy(p3,tim4),infinity) of p3 + ..subpath(0,rundy(p2,tim6).zpet) of p2..cycle; +numeric tim[]; +(tim1,tim2)=p1 intersectiontimes p2; +(tim3,tim4)=p1 intersectiontimes subpath(0,1) of p2; +infill subpath(rundy(p2,tim4),rundy(p2,tim2).zpet) of p2 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1..cycle; +(tim5,tim6)=p1 intersectiontimes p3; +(tim7,tim8-1)=p1 intersectiontimes subpath(1,infinity) of p3; +infill subpath(rundy(p3,tim6),rundy(p3,tim8).zpet) of p3..subpath(rundy(p1,tim7),infinity) of p1 + ..subpath(0,rundy(p1,tim5).zpet) of p1..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_empty_set_alt: +bskchar "Empty set (alternative)"; +beginchar(chars.math_empty_set_alt,15u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2.5oblu; +pos1(curve,0); pos2(hair,90); pos3(curve,180); pos4(hair,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5y4; .5[x2,x4]=.5[x1,x3]; x2-x4=0; bot y2l=-o; top y4r=h; +top z5=(x1,-apex_o); bot z6=(x3,h+o); +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +z0r=.5[z5r,z6r]; z0l=.5[z5l,z6l]; +p0:=z1l{down}..z2l..z3l..z4l..{down}z1l; +p1:=z1r{up}..z4r..z3r..z2r..{up}z1r; +p2:=z5r--z0r--z6r; +p3:=z6l--z0l--z5l; +(tim0,tim1-.5)=p0 intersectiontimes subpath(.5,infinity) of p2; +(tim2,tim3)=(subpath (0,1) of p3) intersectiontimes p0; +(tim4-1,tim5)=(subpath (1,infinity) of p3) intersectiontimes p0; +(tim6,tim7)=p2 intersectiontimes p0; +filldraw subpath (rundy(p0,tim7),rundy(p0,tim0).zpet) of p0..subpath(rundy(p2,tim1),infinity) of p2{z6-z5} + ..subpath(0,rundy(p3,(tim2,3/4oblu)).zpet) of p3..subpath(rundy(p0,tim3),infinity) of p0 + ..subpath(0,rundy(p0,tim5).zpet) of p0..subpath(rundy(p3,tim4),infinity) of p3 + ..subpath(0,rundy(p2,tim6).zpet) of p2..cycle; +numeric tim[]; +(tim1,tim2)=p1 intersectiontimes p2; +(tim3,tim4)=p1 intersectiontimes subpath(0,1) of p2; +infill subpath(rundy(p2,tim4),rundy(p2,tim2).zpet) of p2 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1..cycle; +(tim5,tim6)=p1 intersectiontimes p3; +(tim7,tim8-1)=p1 intersectiontimes subpath(1,infinity) of p3; +infill subpath(rundy(p3,tim6),rundy(p3,tim8).zpet) of p3..subpath(rundy(p1,tim7),infinity) of p1 + ..subpath(0,rundy(p1,tim5).zpet) of p1..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.math_null_set: +bskchar "Null set"; +beginarithchar(chars.math_null_set); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2.5oblu; +pos1(rule_thickness,0); pos2(rule_thickness,90); pos3(rule_thickness,180); pos4(rule_thickness,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5y4; .5[x2,x4]=.5[x1,x3]; x2-x4=0; bot y2l=-o; top y4r=h; +top z5=(x1,-apex_o); bot z6=(x3,h+o); +pos5(rule_thickness,angle(z5-z6)+90); pos6(rule_thickness,angle(z5-z6)+90); +z0r=.5[z5r,z6r]; z0l=.5[z5l,z6l]; +p0:=z1l{down}..z2l..z3l..z4l..{down}z1l; +p1:=z1r{up}..z4r..z3r..z2r..{up}z1r; +p2:=z5r--z0r--z6r; +p3:=z6l--z0l--z5l; +(tim0,tim1-.5)=p0 intersectiontimes subpath(.5,infinity) of p2; +(tim2,tim3)=(subpath (0,1) of p3) intersectiontimes p0; +(tim4-1,tim5)=(subpath (1,infinity) of p3) intersectiontimes p0; +(tim6,tim7)=p2 intersectiontimes p0; +filldraw subpath (rundy(p0,tim7),rundy(p0,tim0).zpet) of p0..subpath(rundy(p2,tim1),infinity) of p2{z6-z5} + ..subpath(0,rundy(p3,(tim2,3/4oblu)).zpet) of p3..subpath(rundy(p0,tim3),infinity) of p0 + ..subpath(0,rundy(p0,tim5).zpet) of p0..subpath(rundy(p3,tim4),infinity) of p3 + ..subpath(0,rundy(p2,tim6).zpet) of p2..cycle; +numeric tim[]; +(tim1,tim2)=p1 intersectiontimes p2; +(tim3,tim4)=p1 intersectiontimes subpath(0,1) of p2; +infill subpath(rundy(p2,tim4),rundy(p2,tim2).zpet) of p2 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1..cycle; +(tim5,tim6)=p1 intersectiontimes p3; +(tim7,tim8-1)=p1 intersectiontimes subpath(1,infinity) of p3; +infill subpath(rundy(p3,tim6),rundy(p3,tim8).zpet) of p3..subpath(rundy(p1,tim7),infinity) of p1 + ..subpath(0,rundy(p1,tim5).zpet) of p1..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.arrow_double_right: +bskchar "Double rightward arrow"; +beginchar(chars.arrow_double_right,15u#,v_center(5u#)); uni "0x21D2"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x0=w-u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +filldraw dvojsipka(0,1,2,3)..cycle; +endchar; + +iff known chars.arrow_double_right_long: +bskchar "Long double rightward arrow"; +beginchar(chars.arrow_double_right_long,22u#,v_center(5u#)); uni "0x27F9"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,90); +rt x0=w-u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +filldraw dvojsipka(0,1,2,3)..cycle; +endchar; + +iff known chars.arrow_double_right_not: +bskchar "Double rightward arrow with negation"; +beginchar(chars.arrow_double_right_not,15u#,v_center(7u#)); uni "0x21CF"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,90); +rt x0=w-u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +.5[x4,x5]=.5[x0c,x1]; .5[y4,y5]=y0; x5-x4=.5(y5-y4); top y5=h; +pos4(rule_thickness,angle(z4-z5)+90); pos5(rule_thickness,angle(z4-z5)+90); +y4'l=y4'r=y1l; z4'l=whatever[z4l,z5l]; z4'r=whatever[z4r,z5r]; +y5'l=y5'r=y1r; z5'l=whatever[z4l,z5l]; z5'r=whatever[z4r,z5r]; +bskpoints(4,5,rule_thickness,rule_thickness); +sipka_points(0,1); dvojsipka_points(0,1,2,3); +p2=z4l--z5ll; +p1=z5r---z4rr..{z5-z4}z4l; +(tim0,tim1)=bskap3 intersectiontimes p1; +(tim2,tim3)=bskap6 intersectiontimes p1; +(tim4,tim5)=bskap5 intersectiontimes p1; +(tim6,tim7)=bskap5 intersectiontimes p2; +(tim8,tim9)=bskap6 intersectiontimes p2; +(tim10,tim11)=bskap3 intersectiontimes p2; +(tim12,tim13)=bskap4 intersectiontimes p2; +(tim14,tim15)=bskap4 intersectiontimes p1; +filldraw z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),rundy(bskap5,tim4).zpet) of bskap5 + ..subpath(rundy(p1,tim5),infinity) of p1{z5-z4} + ..subpath(0,rundy(p2,(tim7,2oblu)).zpet) of p2 + ..subpath(rundy(bskap5,(tim6,2oblu)),infinity) of bskap5 + ..subpath(0,rundy(bskap6,tim8).zpet) of bskap6 + ..subpath(rundy(p2,tim9),rundy(p2,(tim11,2oblu)).zpet) of p2 + ..subpath(rundy(bskap3,(tim10,2oblu)),infinity) of bskap3 + ..subpath(0,rundy(bskap4,tim12).zpet) of bskap4 + ..subpath(rundy(p2,tim13),infinity) of p2 + ..subpath(0,rundy(p1,(tim15,2oblu)).zpet) of p1 + ..subpath(rundy(bskap4,(tim14,2oblu)),rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1&cycle; +infill subpath(0,rundy(bskap1,bsktim11).zpet) of bskap1 + ..subpath(rundy(bskap3,bsktim12),rundy(bskap3,tim0).zpet) of bskap3 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(bskap6,tim2),rundy(bskap6,bsktim18).zpet) of bskap6 + ..subpath(rundy(bskap0,bsktim17),infinity) of bskap0..cycle; +penlabels(2,3,4,5); labels(4rr,5ll); +endchar; + +iff known chars.arrow_double_right_not_vert: +bskchar "Double rightward arrow with vertical negation"; +beginchar(chars.arrow_double_right_not_vert,15u#,v_center(7u#)); uni "0x2903"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,90); +rt x0=w-u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +x4=x5=.5[x0c,x1]; .5[y4,y5]=y0; top y5=h; +pos4(rule_thickness,0); pos5(rule_thickness,0); +y4'l=y4'r=y1l; z4'l=whatever[z4l,z5l]; z4'r=whatever[z4r,z5r]; +y5'l=y5'r=y1r; z5'l=whatever[z4l,z5l]; z5'r=whatever[z4r,z5r]; +bskpoints(4,5,rule_thickness,rule_thickness); +sipka_points(0,1); dvojsipka_points(0,1,2,3); +p2=z4l--z5ll; +p1=z5r---z4rr..{z5-z4}z4l; +(tim0,tim1)=bskap3 intersectiontimes p1; +(tim2,tim3)=bskap6 intersectiontimes p1; +(tim4,tim5)=bskap5 intersectiontimes p1; +(tim6,tim7)=bskap5 intersectiontimes p2; +(tim8,tim9)=bskap6 intersectiontimes p2; +(tim10,tim11)=bskap3 intersectiontimes p2; +(tim12,tim13)=bskap4 intersectiontimes p2; +(tim14,tim15)=bskap4 intersectiontimes p1; +filldraw z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),rundy(bskap5,tim4).zpet) of bskap5 + ..subpath(rundy(p1,tim5),infinity) of p1{z5-z4} + ..subpath(0,rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(bskap5,tim6),infinity) of bskap5 + ..subpath(0,rundy(bskap6,tim8).zpet) of bskap6 + ..subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 + ..subpath(rundy(bskap3,tim10),infinity) of bskap3 + ..subpath(0,rundy(bskap4,tim12).zpet) of bskap4 + ..subpath(rundy(p2,tim13),infinity) of p2 + ..subpath(0,rundy(p1,tim15).zpet) of p1 + ..subpath(rundy(bskap4,tim14),rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1&cycle; +infill subpath(0,rundy(bskap1,bsktim11).zpet) of bskap1 + ..subpath(rundy(bskap3,bsktim12),rundy(bskap3,tim0).zpet) of bskap3 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(bskap6,tim2),rundy(bskap6,bsktim18).zpet) of bskap6 + ..subpath(rundy(bskap0,bsktim17),infinity) of bskap0..cycle; +penlabels(2,3,4,5); labels(4rr,5ll); +endchar; + +iff known chars.arrow_double_left: +bskchar "Double leftward arrow"; +beginchar(chars.arrow_double_left,15u#,v_center(5u#)); uni "0x21D0"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); +lft x0=u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +filldraw dvojsipka(0,1,3,2)..cycle; +endchar; + +iff known chars.arrow_double_left_long: +bskchar "Long double leftward arrow"; +beginchar(chars.arrow_double_left_long,22u#,v_center(5u#)); uni "0x27F8"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,-90); +lft x0=u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +filldraw dvojsipka(0,1,3,2)..cycle; +endchar; + +iff known chars.arrow_double_left_not: +bskchar "Double leftward arrow with negation"; +beginchar(chars.arrow_double_left_not,15u#,v_center(7u#)); uni "0x21CD"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,-90); +lft x0=u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +.5[x4,x5]=.5[x0c,x1]; .5[y4,y5]=y0; x5-x4=.5(y5-y4); top y5=h; +pos4(rule_thickness,angle(z4-z5)+90); pos5(rule_thickness,angle(z4-z5)+90); +y4'l=y4'r=y1l; z4'l=whatever[z4l,z5l]; z4'r=whatever[z4r,z5r]; +y5'l=y5'r=y1r; z5'l=whatever[z4l,z5l]; z5'r=whatever[z4r,z5r]; +bskpoints(4,5,rule_thickness,rule_thickness); +sipka_points(0,1); dvojsipka_points(0,1,3,2); +p1=z4l--z5ll; +p2=z5r---z4rr..{z5-z4}z4l; +(tim0,tim1)=bskap3 intersectiontimes p1; +(tim2,tim3)=bskap6 intersectiontimes p1; +(tim4,tim5)=bskap5 intersectiontimes p1; +(tim6,tim7)=bskap5 intersectiontimes p2; +(tim8,tim9)=bskap6 intersectiontimes p2; +(tim10,tim11)=bskap3 intersectiontimes p2; +(tim12,tim13)=bskap4 intersectiontimes p2; +(tim14,tim15)=bskap4 intersectiontimes p1; +filldraw z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),rundy(bskap5,tim4).zpet) of bskap5 + ..subpath(rundy(p1,tim5),infinity) of p1{z5-z4} + ..subpath(0,rundy(p2,(tim7,2oblu)).zpet) of p2 + ..subpath(rundy(bskap5,(tim6,2oblu)),infinity) of bskap5 + ..subpath(0,rundy(bskap6,tim8).zpet) of bskap6 + ..subpath(rundy(p2,tim9),rundy(p2,(tim11,2oblu)).zpet) of p2 + ..subpath(rundy(bskap3,(tim10,2oblu)),infinity) of bskap3 + ..subpath(0,rundy(bskap4,tim12).zpet) of bskap4 + ..subpath(rundy(p2,tim13),infinity) of p2 + ..subpath(0,rundy(p1,(tim15,2oblu)).zpet) of p1 + ..subpath(rundy(bskap4,(tim14,2oblu)),rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1&cycle; +infill subpath(0,rundy(bskap1,bsktim11).zpet) of bskap1 + ..subpath(rundy(bskap3,bsktim12),rundy(bskap3,tim0).zpet) of bskap3 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(bskap6,tim2),rundy(bskap6,bsktim18).zpet) of bskap6 + ..subpath(rundy(bskap0,bsktim17),infinity) of bskap0..cycle; +penlabels(2,3,4,5); labels(4rr,5ll); +endchar; + +iff known chars.arrow_double_left_not_vert: +bskchar "Double leftward arrow with vertical negation"; +beginchar(chars.arrow_double_left_not_vert,15u#,v_center(7u#)); uni "0x2902"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,-90); +lft x0=u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +x4=x5=.5[x0c,x1]; .5[y4,y5]=y0; top y5=h; +pos4(rule_thickness,0); pos5(rule_thickness,0); +y4'l=y4'r=y1l; z4'l=whatever[z4l,z5l]; z4'r=whatever[z4r,z5r]; +y5'l=y5'r=y1r; z5'l=whatever[z4l,z5l]; z5'r=whatever[z4r,z5r]; +bskpoints(4,5,rule_thickness,rule_thickness); +sipka_points(0,1); dvojsipka_points(0,1,3,2); +p1=z4l--z5ll; +p2=z5r---z4rr..{z5-z4}z4l; +(tim0,tim1)=bskap3 intersectiontimes p1; +(tim2,tim3)=bskap6 intersectiontimes p1; +(tim4,tim5)=bskap5 intersectiontimes p1; +(tim6,tim7)=bskap5 intersectiontimes p2; +(tim8,tim9)=bskap6 intersectiontimes p2; +(tim10,tim11)=bskap3 intersectiontimes p2; +(tim12,tim13)=bskap4 intersectiontimes p2; +(tim14,tim15)=bskap4 intersectiontimes p1; +filldraw z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),rundy(bskap5,tim4).zpet) of bskap5 + ..subpath(rundy(p1,tim5),infinity) of p1{z5-z4} + ..subpath(0,rundy(p2,tim7).zpet) of p2 + ..subpath(rundy(bskap5,tim6),infinity) of bskap5 + ..subpath(0,rundy(bskap6,tim8).zpet) of bskap6 + ..subpath(rundy(p2,tim9),rundy(p2,tim11).zpet) of p2 + ..subpath(rundy(bskap3,tim10),infinity) of bskap3 + ..subpath(0,rundy(bskap4,tim12).zpet) of bskap4 + ..subpath(rundy(p2,tim13),infinity) of p2 + ..subpath(0,rundy(p1,tim15).zpet) of p1 + ..subpath(rundy(bskap4,tim14),rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1&cycle; +infill subpath(0,rundy(bskap1,bsktim11).zpet) of bskap1 + ..subpath(rundy(bskap3,bsktim12),rundy(bskap3,tim0).zpet) of bskap3 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(bskap6,tim2),rundy(bskap6,bsktim18).zpet) of bskap6 + ..subpath(rundy(bskap0,bsktim17),infinity) of bskap0..cycle; +penlabels(2,3,4,5); labels(4rr,5ll); +endchar; + +iff known chars.arrow_double_up: +bskchar "Double upward arrow"; +beginchar(chars.arrow_double_up,9u#,asc_height#,0); uni "0x21D1"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,180); +x0=x1r=.5w-o=.5[x2,x3]; x3-x2=dbf; +top y0=h+apex_o; bot y1=-d; y2=y3=y1; +filldraw dvojsipka(0,1,2,3)..cycle; +labels(1rr); +endchar; + +iff known chars.arrow_double_down: +bskchar "Double downward arrow"; +beginchar(chars.arrow_double_down,9u#,asc_height#,0); uni "0x21D3"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); +x0=x1r=.5w+o=.5[x2,x3]; x3-x2=dbf; +top y0=-d-apex_o; bot y1=h; y2=y3=y1; +filldraw dvojsipka(0,1,3,2)..cycle; +labels(1rr); +endchar; + +iff known chars.arrow_double_up_down: +bskchar "Double up-down arrow"; +beginchar(chars.arrow_double_up_down,9u#,asc_height#,0); uni "0x21D5"; +adjust_fit(0,0); +pickup tiny.nib; +numeric oldtim[], tim[], oldat, ooldat; path oldap[]; +pos1(rule_thickness,0); pos101(rule_thickness,180); +x0=x1r=x100=x101r=.5w=.5[x2,x3]; x3-x2=dbf; +top y0=-d-apex_o; bot y1=h; y2=y3=y1; +x102=x2; x103=x3; y102=y103=y0q; bot y100=h+apex_o; top y101=-d; +sipka_points(0,1); dvojsipka_points(0,1,3,2); oldat:=bskat; +for i:=11 upto 18: oldtim[i]:=bsktim[i]; endfor +for i:=0 upto 6: oldap[i]:=bskap[i]; endfor; +sipka_points(100,101); dvojsipka_points(100,101,102,103); ooldat:=bskat; +tim1=xpart(bskap4 intersectiontimes ((0,x_height)--(x0,x_height))); +tim2=xpart(bskap5 intersectiontimes ((w,x_height)--(x0,x_height))); +tim3=xpart(oldap4 intersectiontimes ((w,bar_height)--(x0,bar_height))); +tim4=xpart(oldap5 intersectiontimes ((0,bar_height)--(x0,bar_height))); +tim5=xpart(bskap6 intersectiontimes ((w,bar_height)--(x0,bar_height))); +tim6=xpart(bskap3 intersectiontimes ((0,x_height)--(x0,x_height))); +tim7=xpart(oldap6 intersectiontimes ((0,bar_height)--(x0,bar_height))); +tim8=xpart(oldap3 intersectiontimes ((w,bar_height)--(x0,bar_height))); +filldraw subpath(tim1,rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1 + &z100e+(hair*down rotated bskat){dir(bskat+135)}..z100e{dir(bskat-45)} + ..{dir(bskat-30)}z100{dir(bskat-160)}..{dir(bskat-135)}z100b + ..{dir(bskat+45)}z100b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),tim2) of bskap5 + hide(bskat:=oldat) + --subpath(tim3,rundy(oldap4,oldtim14).zpet) of oldap4 + ..subpath(rundy(oldap1,oldtim13),infinity) of oldap1 + &z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(oldap0,oldtim15).zpet) of oldap0 + ..subpath(rundy(oldap5,oldtim16),tim4) of oldap5--cycle; +bskat:=ooldat; +infill subpath(tim5,rundy(bskap6,bsktim18).zpet) of bskap6 + ..subpath(rundy(bskap0,bsktim17),infinity) of bskap0 + ..subpath(0,rundy(bskap1,bsktim11).zpet) of bskap1 + ..subpath(rundy(bskap3,bsktim12),tim6) of bskap3 + --subpath(tim7,rundy(oldap6,oldtim18).zpet) of oldap6 + ..subpath(rundy(oldap0,oldtim17),infinity) of oldap0 + ..subpath(0,rundy(oldap1,oldtim11).zpet) of oldap1 + ..subpath(rundy(oldap3,oldtim12),tim8) of oldap3..cycle; +penlabels(2,3,102,103); labels(1rr); +endchar; + +iff known chars.arrow_double_left_right: +bskchar "Double left-right arrow"; +beginchar(chars.arrow_double_left_right,18u#,v_center(5u#)); uni "0x21D4"; +adjust_fit(0,0); +pickup tiny.nib; +numeric oldtim[], tim[], ls, rs, oldat, ooldat; path oldap[]; +pos1(rule_thickness,90); pos101(rule_thickness,-90); +y0=y1r=y100=y101r=math_axis=.5[y2,y3]; y2-y3=dbf; +lft x0=w-u; rt x1=u; x2=x3=x1; +y102=y2; y103=y3; x102=x103=x0q; rt x100=u; lft x101=w-u; +sipka_points(0,1); dvojsipka_points(0,1,2,3); oldat:=bskat; +for i:=11 upto 18: oldtim[i]:=bsktim[i]; endfor +for i:=0 upto 6: oldap[i]:=bskap[i]; endfor; +sipka_points(100,101); dvojsipka_points(100,101,103,102); ooldat:=bskat; +ls=.5w-2u; rs=.5w+2u; +tim1=xpart(bskap4 intersectiontimes ((ls,0)--(ls,math_axis))); +tim2=xpart(bskap5 intersectiontimes ((ls,math_axis)--(ls,h))); +tim3=xpart(oldap4 intersectiontimes ((rs,math_axis)--(rs,h))); +tim4=xpart(oldap5 intersectiontimes ((rs,0)--(rs,math_axis))); +tim5=xpart(bskap6 intersectiontimes ((ls,math_axis)--(ls,h))); +tim6=xpart(bskap3 intersectiontimes ((ls,0)--(ls,math_axis))); +tim7=xpart(oldap6 intersectiontimes ((rs,0)--(rs,math_axis))); +tim8=xpart(oldap3 intersectiontimes ((rs,math_axis)--(rs,h))); +filldraw subpath(tim1,rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1 + &z100e+(hair*down rotated bskat){dir(bskat+135)}..z100e{dir(bskat-45)} + ..{dir(bskat-30)}z100{dir(bskat-160)}..{dir(bskat-135)}z100b + ..{dir(bskat+45)}z100b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),tim2) of bskap5 + hide(bskat:=oldat) + --subpath(tim3,rundy(oldap4,oldtim14).zpet) of oldap4 + ..subpath(rundy(oldap1,oldtim13),infinity) of oldap1 + &z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(oldap0,oldtim15).zpet) of oldap0 + ..subpath(rundy(oldap5,oldtim16),tim4) of oldap5--cycle; +bskat:=ooldat; +infill subpath(tim5,rundy(bskap6,bsktim18).zpet) of bskap6 + ..subpath(rundy(bskap0,bsktim17),infinity) of bskap0 + ..subpath(0,rundy(bskap1,bsktim11).zpet) of bskap1 + ..subpath(rundy(bskap3,bsktim12),tim6) of bskap3 + --subpath(tim7,rundy(oldap6,oldtim18).zpet) of oldap6 + ..subpath(rundy(oldap0,oldtim17),infinity) of oldap0 + ..subpath(0,rundy(oldap1,oldtim11).zpet) of oldap1 + ..subpath(rundy(oldap3,oldtim12),tim8) of oldap3..cycle; +penlabels(2,3,102,103); labels(1rr); +endchar; + +iff known chars.arrow_double_left_right_long: +bskchar "Long double left-right arrow"; +beginchar(chars.arrow_double_left_right_long,25u#,v_center(5u#)); uni "0x27FA"; +adjust_fit(0,0); +pickup tiny.nib; +numeric oldtim[], tim[], ls, rs, oldat, ooldat; path oldap[]; +pos1(rule_thickness,90); pos101(rule_thickness,-90); +y0=y1r=y100=y101r=math_axis=.5[y2,y3]; y2-y3=dbf; +lft x0=w-u; rt x1=u; x2=x3=x1; +y102=y2; y103=y3; x102=x103=x0q; rt x100=u; lft x101=w-u; +sipka_points(0,1); dvojsipka_points(0,1,2,3); oldat:=bskat; +for i:=11 upto 18: oldtim[i]:=bsktim[i]; endfor +for i:=0 upto 6: oldap[i]:=bskap[i]; endfor; +sipka_points(100,101); dvojsipka_points(100,101,103,102); ooldat:=bskat; +ls=.5w-2u; rs=.5w+2u; +tim1=xpart(bskap4 intersectiontimes ((ls,0)--(ls,math_axis))); +tim2=xpart(bskap5 intersectiontimes ((ls,math_axis)--(ls,h))); +tim3=xpart(oldap4 intersectiontimes ((rs,math_axis)--(rs,h))); +tim4=xpart(oldap5 intersectiontimes ((rs,0)--(rs,math_axis))); +tim5=xpart(bskap6 intersectiontimes ((ls,math_axis)--(ls,h))); +tim6=xpart(bskap3 intersectiontimes ((ls,0)--(ls,math_axis))); +tim7=xpart(oldap6 intersectiontimes ((rs,0)--(rs,math_axis))); +tim8=xpart(oldap3 intersectiontimes ((rs,math_axis)--(rs,h))); +filldraw subpath(tim1,rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1 + &z100e+(hair*down rotated bskat){dir(bskat+135)}..z100e{dir(bskat-45)} + ..{dir(bskat-30)}z100{dir(bskat-160)}..{dir(bskat-135)}z100b + ..{dir(bskat+45)}z100b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),tim2) of bskap5 + hide(bskat:=oldat) + --subpath(tim3,rundy(oldap4,oldtim14).zpet) of oldap4 + ..subpath(rundy(oldap1,oldtim13),infinity) of oldap1 + &z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(oldap0,oldtim15).zpet) of oldap0 + ..subpath(rundy(oldap5,oldtim16),tim4) of oldap5--cycle; +bskat:=ooldat; +infill subpath(tim5,rundy(bskap6,bsktim18).zpet) of bskap6 + ..subpath(rundy(bskap0,bsktim17),infinity) of bskap0 + ..subpath(0,rundy(bskap1,bsktim11).zpet) of bskap1 + ..subpath(rundy(bskap3,bsktim12),tim6) of bskap3 + --subpath(tim7,rundy(oldap6,oldtim18).zpet) of oldap6 + ..subpath(rundy(oldap0,oldtim17),infinity) of oldap0 + ..subpath(0,rundy(oldap1,oldtim11).zpet) of oldap1 + ..subpath(rundy(oldap3,oldtim12),tim8) of oldap3..cycle; +penlabels(2,3,102,103); labels(1rr); +endchar; + +iff known chars.arrow_left_right_black: +bskchar "Black left-right arrow"; +beginchar(chars.arrow_left_right_black,18u#,v_center(5u#)); uni "0x2B0C"; +adjust_fit(0,0); +pickup tiny.nib; +numeric oldtim[], tim[], ls, rs, oldat, ooldat; path oldap[]; +pos1(rule_thickness,90); pos101(rule_thickness,-90); +y0=y1r=y100=y101r=math_axis=.5[y2,y3]; y2-y3=dbf; +lft x0=w-u; rt x1=u; x2=x3=x1; +y102=y2; y103=y3; x102=x103=x0q; rt x100=u; lft x101=w-u; +sipka_points(0,1); dvojsipka_points(0,1,2,3); oldat:=bskat; +for i:=11 upto 18: oldtim[i]:=bsktim[i]; endfor +for i:=0 upto 6: oldap[i]:=bskap[i]; endfor; +sipka_points(100,101); dvojsipka_points(100,101,103,102); ooldat:=bskat; +ls=.5w-2u; rs=.5w+2u; +tim1=xpart(bskap4 intersectiontimes ((ls,0)--(ls,math_axis))); +tim2=xpart(bskap5 intersectiontimes ((ls,math_axis)--(ls,h))); +tim3=xpart(oldap4 intersectiontimes ((rs,math_axis)--(rs,h))); +tim4=xpart(oldap5 intersectiontimes ((rs,0)--(rs,math_axis))); +tim5=xpart(bskap6 intersectiontimes ((ls,math_axis)--(ls,h))); +tim6=xpart(bskap3 intersectiontimes ((ls,0)--(ls,math_axis))); +tim7=xpart(oldap6 intersectiontimes ((rs,0)--(rs,math_axis))); +tim8=xpart(oldap3 intersectiontimes ((rs,math_axis)--(rs,h))); +filldraw subpath(tim1,rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1 + &z100e+(hair*down rotated bskat){dir(bskat+135)}..z100e{dir(bskat-45)} + ..{dir(bskat-30)}z100{dir(bskat-160)}..{dir(bskat-135)}z100b + ..{dir(bskat+45)}z100b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),tim2) of bskap5 + hide(bskat:=oldat) + --subpath(tim3,rundy(oldap4,oldtim14).zpet) of oldap4 + ..subpath(rundy(oldap1,oldtim13),infinity) of oldap1 + &z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(oldap0,oldtim15).zpet) of oldap0 + ..subpath(rundy(oldap5,oldtim16),tim4) of oldap5--cycle; +penlabels(2,3,102,103); labels(1rr); +endchar; + +iff known chars.arrow_double_left_right_not: +bskchar "Double left-right arrow with negation"; +beginchar(chars.arrow_double_left_right_not,18u#,v_center(7u#)); uni "0x21CE"; +adjust_fit(0,0); +pickup tiny.nib; +numeric oldtim[], tim[], ls, rs, oldat, ooldat; path oldap[], p[]; +pos1(rule_thickness,90); pos101(rule_thickness,-90); +y0=y1r=y100=y101r=math_axis=.5[y2,y3]; y2-y3=dbf; +lft x0=w-u; rt x1=u; x2=x3=x1; +y102=y2; y103=y3; x102=x103=x0q; rt x100=u; lft x101=w-u; +.5[x4,x5]=.5[x0,x1]; .5[y4,y5]=y0; x5-x4=.5(y5-y4); top y5=h; +pos4(rule_thickness,angle(z4-z5)+90); pos5(rule_thickness,angle(z4-z5)+90); +y4'l=y4'r=y1l; z4'l=whatever[z4l,z5l]; z4'r=whatever[z4r,z5r]; +y5'l=y5'r=y1r; z5'l=whatever[z4l,z5l]; z5'r=whatever[z4r,z5r]; +bskpoints(4,5,rule_thickness,rule_thickness); +p1:=z4l---z5ll..{z4-z5}z5r; +p2:=z5r---z4rr..{z5-z4}z4l; +sipka_points(0,1); dvojsipka_points(0,1,2,3); oldat:=bskat; +for i:=11 upto 18: oldtim[i]:=bsktim[i]; endfor +for i:=0 upto 6: oldap[i]:=bskap[i]; endfor; +sipka_points(100,101); dvojsipka_points(100,101,103,102); ooldat:=bskat; +ls=.5w-2u; rs=.5w+2u; +(tim1,tim11)=bskap4 intersectiontimes p1; +(tim2,tim12)=bskap5 intersectiontimes p1; +(tim3,tim13)=oldap4 intersectiontimes p2; +(tim4,tim14)=oldap5 intersectiontimes p2; +(tim5,tim15)=bskap6 intersectiontimes p1; +(tim6,tim16)=bskap3 intersectiontimes p1; +(tim7,tim17)=oldap6 intersectiontimes p2; +(tim8,tim18)=oldap3 intersectiontimes p2; +filldraw subpath(rundy(bskap4,(tim1,2oblu)),rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1 + &z100e+(hair*down rotated bskat){dir(bskat+135)}..z100e{dir(bskat-45)} + ..{dir(bskat-30)}z100{dir(bskat-160)}..{dir(bskat-135)}z100b + ..{dir(bskat+45)}z100b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),rundy(bskap5,tim2).zpet) of bskap5 + ..subpath(rundy(p1,tim12),infinity) of p1 + ..subpath(0,rundy(p2,(tim13,2oblu)).zpet) of p2 + hide(bskat:=oldat) + ..subpath(rundy(oldap4,(tim3,2oblu)),rundy(oldap4,oldtim14).zpet) of oldap4 + ..subpath(rundy(oldap1,oldtim13),infinity) of oldap1 + &z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(oldap0,oldtim15).zpet) of oldap0 + ..subpath(rundy(oldap5,oldtim16),rundy(oldap5,tim4).zpet) of oldap5 + ..subpath(rundy(p2,tim14),infinity) of p2 + ..subpath(0,rundy(p1,(tim11,2oblu)).zpet) of p1..cycle + ; +bskat:=ooldat; +infill subpath(rundy(bskap6,(tim5,2oblu)),rundy(bskap6,bsktim18).zpet) of bskap6 + ..subpath(rundy(bskap0,bsktim17),infinity) of bskap0 + ..subpath(0,rundy(bskap1,bsktim11).zpet) of bskap1 + ..subpath(rundy(bskap3,bsktim12),rundy(bskap3,tim6).zpet) of bskap3 + ..subpath(rundy(p1,tim16),rundy(p1,(tim15,oblu)).zpet) of p1..cycle; +infill subpath(rundy(oldap6,(tim7,2oblu)),rundy(oldap6,oldtim18).zpet) of oldap6 + ..subpath(rundy(oldap0,oldtim17),infinity) of oldap0 + ..subpath(0,rundy(oldap1,oldtim11).zpet) of oldap1 + ..subpath(rundy(oldap3,oldtim12),rundy(oldap3,tim8).zpet) of oldap3 + ..subpath(rundy(p2,tim18),rundy(p2,(tim17,oblu)).zpet) of p2..cycle; +penlabels(2,3,4,5,102,103); labels(1rr,4rr,5ll); +endchar; + +iff known chars.arrow_double_left_right_not_vert: +bskchar "Double left-right arrow with vertical negation"; +beginchar(chars.arrow_double_left_right_not_vert,18u#,v_center(7u#)); uni "0x2904"; +adjust_fit(0,0); +pickup tiny.nib; +numeric oldtim[], tim[], ls, rs, oldat, ooldat; path oldap[], p[]; +pos1(rule_thickness,90); pos101(rule_thickness,-90); +y0=y1r=y100=y101r=math_axis=.5[y2,y3]; y2-y3=dbf; +lft x0=w-u; rt x1=u; x2=x3=x1; +y102=y2; y103=y3; x102=x103=x0q; rt x100=u; lft x101=w-u; +x4=x5=.5[x0,x1]; .5[y4,y5]=y0; top y5=h; +pos4(rule_thickness,0); pos5(rule_thickness,0); +y4'l=y4'r=y1l; z4'l=whatever[z4l,z5l]; z4'r=whatever[z4r,z5r]; +y5'l=y5'r=y1r; z5'l=whatever[z4l,z5l]; z5'r=whatever[z4r,z5r]; +bskpoints(4,5,rule_thickness,rule_thickness); +p1:=z4l---z5ll..{z4-z5}z5r; +p2:=z5r---z4rr..{z5-z4}z4l; +sipka_points(0,1); dvojsipka_points(0,1,2,3); oldat:=bskat; +for i:=11 upto 18: oldtim[i]:=bsktim[i]; endfor +for i:=0 upto 6: oldap[i]:=bskap[i]; endfor; +sipka_points(100,101); dvojsipka_points(100,101,103,102); ooldat:=bskat; +ls=.5w-2u; rs=.5w+2u; +(tim1,tim11)=bskap4 intersectiontimes p1; +(tim2,tim12)=bskap5 intersectiontimes p1; +(tim3,tim13)=oldap4 intersectiontimes p2; +(tim4,tim14)=oldap5 intersectiontimes p2; +(tim5,tim15)=bskap6 intersectiontimes p1; +(tim6,tim16)=bskap3 intersectiontimes p1; +(tim7,tim17)=oldap6 intersectiontimes p2; +(tim8,tim18)=oldap3 intersectiontimes p2; +filldraw subpath(rundy(bskap4,tim1),rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1 + &z100e+(hair*down rotated bskat){dir(bskat+135)}..z100e{dir(bskat-45)} + ..{dir(bskat-30)}z100{dir(bskat-160)}..{dir(bskat-135)}z100b + ..{dir(bskat+45)}z100b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),rundy(bskap5,tim2).zpet) of bskap5 + ..subpath(rundy(p1,tim12),infinity) of p1 + ..subpath(0,rundy(p2,tim13).zpet) of p2 + hide(bskat:=oldat) + ..subpath(rundy(oldap4,tim3),rundy(oldap4,oldtim14).zpet) of oldap4 + ..subpath(rundy(oldap1,oldtim13),infinity) of oldap1 + &z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(oldap0,oldtim15).zpet) of oldap0 + ..subpath(rundy(oldap5,oldtim16),rundy(oldap5,tim4).zpet) of oldap5 + ..subpath(rundy(p2,tim14),infinity) of p2 + ..subpath(0,rundy(p1,tim11).zpet) of p1..cycle + ; +bskat:=ooldat; +infill subpath(rundy(bskap6,tim5),rundy(bskap6,bsktim18).zpet) of bskap6 + ..subpath(rundy(bskap0,bsktim17),infinity) of bskap0 + ..subpath(0,rundy(bskap1,bsktim11).zpet) of bskap1 + ..subpath(rundy(bskap3,bsktim12),rundy(bskap3,tim6).zpet) of bskap3 + ..subpath(rundy(p1,tim16),rundy(p1,tim15).zpet) of p1..cycle; +infill subpath(rundy(oldap6,tim7),rundy(oldap6,oldtim18).zpet) of oldap6 + ..subpath(rundy(oldap0,oldtim17),infinity) of oldap0 + ..subpath(0,rundy(oldap1,oldtim11).zpet) of oldap1 + ..subpath(rundy(oldap3,oldtim12),rundy(oldap3,tim8).zpet) of oldap3 + ..subpath(rundy(p2,tim18),rundy(p2,tim17).zpet) of p2..cycle; +penlabels(2,3,4,5,102,103); labels(1rr,4rr,5ll); +endchar; + +iff known chars.arrow_double_left_right_not_out: +bskchar "Double left-right arrow with (outer) negation"; +beginchar(chars.arrow_double_left_right_not_out,18u#,v_center(7u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric oldtim[], tim[], ls, rs, oldat, ooldat; path oldap[], p[]; +pos1(rule_thickness,90); pos101(rule_thickness,-90); +y0=y1r=y100=y101r=math_axis=.5[y2,y3]; y2-y3=dbf; +lft x0=w-u; rt x1=u; x2=x3=x1; +y102=y2; y103=y3; x102=x103=x0q; rt x100=u; lft x101=w-u; +.5[x4,x5]=.5[x0,x1]; .5[y4,y5]=y0; x5-x4=.5(y5-y4); top y5=h; +pos4(rule_thickness,angle(z4-z5)+90); pos5(rule_thickness,angle(z4-z5)+90); +y4'l=y4'r=y1l; z4'l=whatever[z4l,z5l]; z4'r=whatever[z4r,z5r]; +y5'l=y5'r=y1r; z5'l=whatever[z4l,z5l]; z5'r=whatever[z4r,z5r]; +bskpoints(4,5,rule_thickness,rule_thickness); +p1:=z4l---z5ll..{z4-z5}z5r; +p2:=z5r---z4rr..{z5-z4}z4l; +sipka_points(0,1); dvojsipka_points(0,1,2,3); oldat:=bskat; +for i:=11 upto 18: oldtim[i]:=bsktim[i]; endfor +for i:=0 upto 6: oldap[i]:=bskap[i]; endfor; +sipka_points(100,101); dvojsipka_points(100,101,103,102); ooldat:=bskat; +ls=.5w-2u; rs=.5w+2u; +(tim1,tim11)=bskap4 intersectiontimes p1; +(tim2,tim12)=bskap5 intersectiontimes p1; +(tim3,tim13)=oldap4 intersectiontimes p2; +(tim4,tim14)=oldap5 intersectiontimes p2; +tim5=xpart(bskap6 intersectiontimes ((ls,math_axis)--(ls,h))); +tim6=xpart(bskap3 intersectiontimes ((ls,0)--(ls,math_axis))); +tim7=xpart(oldap6 intersectiontimes ((rs,0)--(rs,math_axis))); +tim8=xpart(oldap3 intersectiontimes ((rs,math_axis)--(rs,h))); +filldraw subpath(rundy(bskap4,(tim1,2oblu)),rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1 + &z100e+(hair*down rotated bskat){dir(bskat+135)}..z100e{dir(bskat-45)} + ..{dir(bskat-30)}z100{dir(bskat-160)}..{dir(bskat-135)}z100b + ..{dir(bskat+45)}z100b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),rundy(bskap5,tim2).zpet) of bskap5 + ..subpath(rundy(p1,tim12),infinity) of p1 + ..subpath(0,rundy(p2,(tim13,2oblu)).zpet) of p2 + hide(bskat:=oldat) + ..subpath(rundy(oldap4,(tim3,2oblu)),rundy(oldap4,oldtim14).zpet) of oldap4 + ..subpath(rundy(oldap1,oldtim13),infinity) of oldap1 + &z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(oldap0,oldtim15).zpet) of oldap0 + ..subpath(rundy(oldap5,oldtim16),rundy(oldap5,tim4).zpet) of oldap5 + ..subpath(rundy(p2,tim14),infinity) of p2 + ..subpath(0,rundy(p1,(tim11,2oblu)).zpet) of p1..cycle + ; +bskat:=ooldat; +infill subpath(tim5,rundy(bskap6,bsktim18).zpet) of bskap6 + ..subpath(rundy(bskap0,bsktim17),infinity) of bskap0 + ..subpath(0,rundy(bskap1,bsktim11).zpet) of bskap1 + ..subpath(rundy(bskap3,bsktim12),tim6) of bskap3 + --subpath(tim7,rundy(oldap6,oldtim18).zpet) of oldap6 + ..subpath(rundy(oldap0,oldtim17),infinity) of oldap0 + ..subpath(0,rundy(oldap1,oldtim11).zpet) of oldap1 + ..subpath(rundy(oldap3,oldtim12),tim8) of oldap3..cycle; +penlabels(2,3,4,5,102,103); labels(1rr,4rr,5ll); +endchar; + +iff known chars.arrow_double_up_white_bar: +bskchar "Upward white arrow from bar"; +beginchar(chars.arrow_double_up_white_bar,9u#,asc_height#,0); uni "0x21EA"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,180); +pos4(rule_thickness,0); pos5(rule_thickness,0); pos6(rule_thickness,0); pos7(rule_thickness,0); +x0=x1r=.5w=.5[x2,x3]; x3-x2=dbf; +top y0=h+apex_o; bot y1=math_axis; y2=y3=y1; +p:=dvojsipka(0,1,2,3); +z2'-z2l=z3'-z3r=(rule_thickness-currentbreadth)*up; +x4=x5=x2; x6=x7=x3; bot y4=bot y6=-d; top y5=top y7=bot y2l-2rule_thickness; +y4r:=y6l:=y4r+(rule_thickness-currentbreadth); +y5r:=y7l:=y5r-(rule_thickness-currentbreadth); +filldraw obl(2r,3l,0q.r)---subpath(5,13) of p---obl(3l,0p.l,2r)---cycle; +infill whitehead(0,1,2,3)..(x0q.l,y0a)---obl(2',0q.l,3')---obl(3',2',0p.r)---(x0p.r,y0a)..cycle; +filldraw obl(4l,6r,5l)---obl(5l,4l,7r)---obl(7r,5l,6r)---obl(6r,7r,4l)---cycle; +infill obl(4r,6l,5r)---obl(5r,4r,7l)---obl(7l,5r,6l)---obl(6l,7l,4r)---cycle; +penlabels(4,5,6,7); labels(1rr,2',3'); +endchar; + +iff known chars.arrow_double_up_white_pedestal: +bskchar "Upward white arrow on pedestal"; +beginchar(chars.arrow_double_up_white_pedestal,9u#,asc_height#,0); uni "0x21EB"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,180); +pos4(rule_thickness,0); pos5(rule_thickness,0); pos6(rule_thickness,0); pos7(rule_thickness,0); +x0=x1r=.5w=.5[x2,x3]; x3-x2=dbf; +top y0=h+apex_o; bot y1=3/4[h,-d]; y2=y3=y1; +p:=dvojsipka(0,1,2,3); +z2'-z2l=z3'-z3r=(rule_thickness-currentbreadth)*down; +lft x4l=lft x5l=u; rt x6r=rt x7r=w-u; bot y4=bot y6=-d; y5r=y7r=y2; +y4r:=y6l:=y4r+(rule_thickness-currentbreadth); +y5r:=y7l:=y5r-(rule_thickness-currentbreadth); +filldraw subpath(5,13) of p---obl(3l,0p.l,7r)---obl(7r,5l,6r)---obl(6r,7r,4l) + ---obl(4l,6r,5l)---obl(5l,4l,2r)---obl(2r,5l,0q.r)---cycle; +infill whitehead(0,1,2,3)..(x0q.l,y0a)---obl(2',0q.l,5r)---obl(5r,2',4r) + ---obl(4r,5r,6l)---obl(6l,4r,7l)---obl(7l,6l,3')---obl(3',7l,0p.r)---(x0p.r,y0a)..cycle; +penlabels(4,5,6,7); labels(1rr,2',3'); +endchar; + +iff known chars.arrow_double_up_white_pedestal_hbar: +bskchar "Upward white arrow on pedestal with horizontal bar"; +beginchar(chars.arrow_double_up_white_pedestal_hbar,9u#,asc_height#,0); uni "0x21EC"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,180); +pos4(rule_thickness,0); pos5(rule_thickness,0); pos6(rule_thickness,0); pos7(rule_thickness,0); +pos8(rule_thickness,90); pos9(rule_thickness,90); +x0=x1r=.5w=.5[x2,x3]; x3-x2=dbf; +top y0=h+apex_o; bot y1=3/4[h,-d]; y2=y3=y1; +p:=dvojsipka(0,1,2,3); +z2'-z2l=z3'-z3r=(rule_thickness-currentbreadth)*down; +lft x4l=lft x5l=u; rt x6r=rt x7r=w-u; bot y4=bot y6=-d; y5r=y7r=y2; +x8=x2l; x9=x3r; y8=y9=y0a-rule_thickness; +y4r:=y6l:=y4r+(rule_thickness-currentbreadth); +y5r:=y7l:=y5r-(rule_thickness-currentbreadth); +filldraw subpath(5,13) of p---obl(3l,0p.l,7r)---obl(7r,5l,6r)---obl(6r,7r,4l) + ---obl(4l,6r,5l)---obl(5l,4l,2r)---obl(2r,5l,0q.r)---cycle; +infill whitehead(0,1,2,3)..(x0q.l,y0a)---obl(8r,0q.l,9r)---obl(9r,8r,0p.r)---(x0p.r,y0a)..cycle; +infill obl(9l,3',8l)---obl(8l,9l,2')---obl(2',0q.l,5r)---obl(5r,2',4r)---obl(4r,5r,6l) + ---obl(6l,4r,7l)---obl(7l,6l,3')---obl(3',7l,0p.r)---cycle; +penlabels(4,5,6,7,8,9); labels(1rr,2',3'); +endchar; + +iff known chars.arrow_double_up_white_pedestal_vbar: +bskchar "Upward white arrow on pedestal with vertical bar"; +beginchar(chars.arrow_double_up_white_pedestal_vbar,9u#,asc_height#,0); uni "0x21ED"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,180); +pos4(rule_thickness,0); pos5(rule_thickness,0); pos6(rule_thickness,0); pos7(rule_thickness,0); +pos8(rule_thickness,0); pos9(rule_thickness,0); +x0=x1r=.5w=.5[x2,x3]=x8=x9; x3-x2=dbf; +top y0=h+apex_o; bot y1=3/4[h,-d]; y2=y3=y1; +p0:=dvojsipka(0,1,2,3); +z2'-z2l=z3'-z3r=(rule_thickness-currentbreadth)*down; +lft x4l=lft x5l=u; rt x6r=rt x7r=w-u; bot y4=bot y6=-d; y5r=y7r=y2; +y4r:=y6l:=y4r+(rule_thickness-currentbreadth); +y5r:=y7l:=y5r-(rule_thickness-currentbreadth); +y8=y4r; y9=y0; +p1=whitehead(0,1,2,3); +p2=z8l+2oblu*up--z9l; +p3=z9r--z8r+2oblu*up; +(tim1,tim2)=p1 intersectiontimes p2; +(tim3,tim4)=p1 intersectiontimes p3; +filldraw subpath(5,13) of p0---obl(3l,0p.l,7r)---obl(7r,5l,6r)---obl(6r,7r,4l) + ---obl(4l,6r,5l)---obl(5l,4l,2r)---obl(2r,5l,0q.r)---cycle; +infill subpath(rundy(p1,(tim1,2oblu)),infinity) of p1..(x0q.l,y0a)---obl(2',0q.l,5r) + ---obl(5r,2',4r)---obl(4r,5r,6l)---obl(8l,4r,9l) + ---subpath(0,rundy(p2,(tim2,2oblu)).zpet) of p2..cycle; +infill subpath(0,rundy(p1,(tim3,2oblu)).zpet) of p1 + ..subpath(rundy(p3,(tim4,2oblu)),infinity) of p3 + ---obl(8r,9r,6l)---obl(6l,4r,7l)---obl(7l,6l,3')---obl(3',7l,0p.r)---(x0p.r,y0a)..cycle; +penlabels(4,5,6,7,8,9); labels(1rr,2',3'); +endchar; + +iff known chars.arrow_double_up_white_doublehead: +bskchar "Upward doublehead white arrow"; +beginchar(chars.arrow_double_up_white_doublehead,9u#,asc_height#,0); uni "0x21EE"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,180); +x0=x1r=.5w-o=.5[x2,x3]; x3-x2=dbf; +top y0=h+apex_o-4rule_thickness; bot y1=-d; y2=y3=y1; +z2'-z2l=z3'-z3r=(rule_thickness-currentbreadth)*up; +p0:=dvojsipka(0,1,2,3); +p1:=subpath(4,14) of p0 shifted (0,4rule_thickness); +p2:=whitehead(0,1,2,3); +(tim0-6,tim1)=subpath(6,infinity) of p0 intersectiontimes subpath(0,5) of p1; +(tim2-9,tim3-6)=subpath(9,infinity) of p0 intersectiontimes subpath(6,infinity) of p1; +tim4-6=xpart(subpath(6,infinity) of p0 intersectiontimes (z2'--(x2',h))); +tim5-9=xpart(subpath(9,infinity) of p0 intersectiontimes (z3'--(x3',h))); +filldraw obl(2r,3l,0q.r)---subpath(5,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),13) of p0---obl(3l,0p.l,2r)---cycle; +infill p2..(x0q.l,y0a)---obl(2',0q.l,3')---obl(3',2',0p.r)---(x0p.r,y0a)..cycle; +infill ((x0p.r,y0a)..p2..(x0q.l,y0a)) shifted (0,4rule_thickness) + ..subpath(rundy(p0,(tim4,2oblu)),rundy(p0,(tim5,2oblu)).zpet) of p0..cycle; +labels(1rr,2',3'); +endchar; + +iff known chars.arrow_double_up_white_doublehead_pedestal: +bskchar "Upward doublehead white arrow on pedestal"; +beginchar(chars.arrow_double_up_white_doublehead_pedestal,9u#,asc_height#,0); uni "0x21EF"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(rule_thickness,180); +pos4(rule_thickness,0); pos5(rule_thickness,0); pos6(rule_thickness,0); pos7(rule_thickness,0); +x0=x1r=.5w=.5[x2,x3]; x3-x2=dbf; +top y0=h+apex_o-4rule_thickness; bot y1=3/4[h,-d]; y2=y3=y1; +z2'-z2l=z3'-z3r=(rule_thickness-currentbreadth)*down; +lft x4l=lft x5l=u; rt x6r=rt x7r=w-u; bot y4=bot y6=-d; y5r=y7r=y2; +y4r:=y6l:=y4r+(rule_thickness-currentbreadth); +y5r:=y7l:=y5r-(rule_thickness-currentbreadth); +p0:=dvojsipka(0,1,2,3); +p1:=z2l--(subpath(4,14) of p0 shifted (0,4rule_thickness))--z3l; +p2:=whitehead(0,1,2,3); +(tim0-6,tim1)=subpath(6,infinity) of p0 intersectiontimes subpath(0,6) of p1; +(tim2-9,tim3-7)=subpath(9,infinity) of p0 intersectiontimes subpath(7,infinity) of p1; +tim4-6=xpart(subpath(6,infinity) of p0 intersectiontimes (z2'--(x2',h))); +tim5-9=xpart(subpath(9,infinity) of p0 intersectiontimes (z3'--(x3',h))); +filldraw obl(3l,0p.l,7r)---obl(7r,3l,6r)---obl(6r,7r,4l)---obl(4l,6r,5l) + ---obl(5l,4l,2r)---obl(2r,5l,0q.r) + ---subpath(5,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p0,tim2),13) of p0---cycle; +infill p2..(x0q.l,y0a)---obl(2',0q.l,5r)---obl(5r,2',4r) + ---obl(4r,5r,6l)---obl(6l,4r,7l)---obl(7l,6l,3')---obl(3',7l,0p.r)---(x0p.r,y0a)..cycle; +infill ((x0p.r,y0a)..p2..(x0q.l,y0a)) shifted (0,4rule_thickness) + ..subpath(rundy(p0,(tim4,2oblu)),rundy(p0,(tim5,2oblu)).zpet) of p0..cycle; +labels(1rr,2',3'); penlabels(4,5,6,7); +endchar; + +iff known chars.arrow_double_down_white: +bskchar "Downward white arrow"; +beginchar(chars.arrow_double_down_white,9u#,asc_height#,0); uni "0x21E9"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,0); +x0=x1r=.5w+o=.5[x2,x3]; x3-x2=dbf; +top y0=-d-apex_o; bot y1=h; y2=y3=y1; +p:=dvojsipka(0,1,3,2); +z2'-z2r=z3'-z3l=(rule_thickness-currentbreadth)*down; +filldraw obl(3r,2l,0q.r)---subpath(5,13) of p---obl(2l,0p.l,3r)---cycle; +infill whitehead(0,1,3,2)..(x0q.l,y0a)---obl(3',0q.l,2')---obl(2',3',0p.r)---(x0p.r,y0a)..cycle; +labels(1rr,2',3'); +endchar; + +iff known chars.arrow_down_black: +bskchar " Downward black arrow"; +beginchar(chars.arrow_down_black,9u#,asc_height#,0); uni "0x2B07"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,0); +x0=x1r=.5w+o=.5[x2,x3]; x3-x2=dbf; +top y0=-d-apex_o; bot y1=h; y2=y3=y1; +p:=dvojsipka(0,1,3,2); +filldraw obl(3r,2l,0q.r)---subpath(5,13) of p---obl(2l,0p.l,3r)---cycle; +labels(1rr); +endchar; + +iff known chars.arrow_double_up_down_white: +bskchar "Double white up-down arrow"; +beginchar(chars.arrow_double_up_down_white,9u#,asc_height#,0); uni "0x21F3"; +adjust_fit(0,0); +pickup tiny.nib; +numeric oldtim[], tim[], oldat, ooldat; path oldap[], p[]; +pos1(rule_thickness,0); pos101(rule_thickness,180); +x0=x1r=x100=x101r=.5w=.5[x2,x3]; x3-x2=dbf; +top y0=-d-apex_o; bot y1=h; y2=y3=y1; +x102=x2; x103=x3; y102=y103=y0q; bot y100=h+apex_o; top y101=-d; +sipka_points(0,1); dvojsipka_points(0,1,3,2); oldat:=bskat; +p0=whitehead(0,1,3,2); +for i:=11 upto 18: oldtim[i]:=bsktim[i]; endfor +for i:=0 upto 6: oldap[i]:=bskap[i]; endfor; +sipka_points(100,101); dvojsipka_points(100,101,102,103); ooldat:=bskat; +p1=whitehead(100,101,102,103); +tim1=xpart(bskap4 intersectiontimes ((0,x_height)--(x0,x_height))); +tim2=xpart(bskap5 intersectiontimes ((w,x_height)--(x0,x_height))); +tim3=xpart(oldap4 intersectiontimes ((w,bar_height)--(x0,bar_height))); +tim4=xpart(oldap5 intersectiontimes ((0,bar_height)--(x0,bar_height))); +filldraw subpath(tim1,rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1 + &z100e+(hair*down rotated bskat){dir(bskat+135)}..z100e{dir(bskat-45)} + ..{dir(bskat-30)}z100{dir(bskat-160)}..{dir(bskat-135)}z100b + ..{dir(bskat+45)}z100b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),tim2) of bskap5 + hide(bskat:=oldat) + --subpath(tim3,rundy(oldap4,oldtim14).zpet) of oldap4 + ..subpath(rundy(oldap1,oldtim13),infinity) of oldap1 + &z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(oldap0,oldtim15).zpet) of oldap0 + ..subpath(rundy(oldap5,oldtim16),tim4) of oldap5--cycle; +infill p0..(x0q.l,y0a)---(x100p.r,y100a)..p1..(x100q.l,y100a)---(x0p.r,y0a)..cycle; +penlabels(2,3,102,103); labels(1rr); +endchar; + +iff known chars.arrow_up_down_black: +bskchar "Black up-down arrow"; +beginchar(chars.arrow_up_down_black,9u#,asc_height#,0); uni "0x2B0D"; +adjust_fit(0,0); +pickup tiny.nib; +numeric oldtim[], tim[], oldat, ooldat; path oldap[], p[]; +pos1(rule_thickness,0); pos101(rule_thickness,180); +x0=x1r=x100=x101r=.5w=.5[x2,x3]; x3-x2=dbf; +top y0=-d-apex_o; bot y1=h; y2=y3=y1; +x102=x2; x103=x3; y102=y103=y0q; bot y100=h+apex_o; top y101=-d; +sipka_points(0,1); dvojsipka_points(0,1,3,2); oldat:=bskat; +p0=whitehead(0,1,3,2); +for i:=11 upto 18: oldtim[i]:=bsktim[i]; endfor +for i:=0 upto 6: oldap[i]:=bskap[i]; endfor; +sipka_points(100,101); dvojsipka_points(100,101,102,103); ooldat:=bskat; +p1=whitehead(100,101,102,103); +tim1=xpart(bskap4 intersectiontimes ((0,x_height)--(x0,x_height))); +tim2=xpart(bskap5 intersectiontimes ((w,x_height)--(x0,x_height))); +tim3=xpart(oldap4 intersectiontimes ((w,bar_height)--(x0,bar_height))); +tim4=xpart(oldap5 intersectiontimes ((0,bar_height)--(x0,bar_height))); +filldraw subpath(tim1,rundy(bskap4,bsktim14).zpet) of bskap4 + ..subpath(rundy(bskap1,bsktim13),infinity) of bskap1 + &z100e+(hair*down rotated bskat){dir(bskat+135)}..z100e{dir(bskat-45)} + ..{dir(bskat-30)}z100{dir(bskat-160)}..{dir(bskat-135)}z100b + ..{dir(bskat+45)}z100b+(hair*up rotated bskat) + &subpath(0,rundy(bskap0,bsktim15).zpet) of bskap0 + ..subpath(rundy(bskap5,bsktim16),tim2) of bskap5 + hide(bskat:=oldat) + --subpath(tim3,rundy(oldap4,oldtim14).zpet) of oldap4 + ..subpath(rundy(oldap1,oldtim13),infinity) of oldap1 + &z0e+(hair*down rotated bskat){dir(bskat+135)}..z0e{dir(bskat-45)} + ..{dir(bskat-30)}z0{dir(bskat-160)}..{dir(bskat-135)}z0b + ..{dir(bskat+45)}z0b+(hair*up rotated bskat) + &subpath(0,rundy(oldap0,oldtim15).zpet) of oldap0 + ..subpath(rundy(oldap5,oldtim16),tim4) of oldap5--cycle; +penlabels(2,3,102,103); labels(1rr); +endchar; + +iff known chars.arrow_double_right_white: +bskchar "Rightward white arrow"; +beginchar(chars.arrow_double_right_white,15u#,v_center(5u#)); uni "0x21E8"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,90); +rt x0=w-u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +p:=dvojsipka(0,1,2,3); +z2'-z2l=z3'-z3r=(rule_thickness-currentbreadth)*right; +filldraw obl(2r,3l,0q.r)---subpath(5,13) of p---obl(3l,0p.l,2r)---cycle; +infill whitehead(0,1,2,3)..(x0a,y0q.l)---obl(2',0q.l,3')---obl(3',2',0p.r)---(x0a,y0p.r)..cycle; +labels(2',3'); +endchar; + +iff known chars.arrow_right_black: +bskchar "Rightward black arrow"; +beginchar(chars.arrow_right_black,15u#,v_center(5u#)); uni "0x27A1"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,90); +rt x0=w-u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +p:=dvojsipka(0,1,2,3); +filldraw obl(2r,3l,0q.r)---subpath(5,13) of p---obl(3l,0p.l,2r)---cycle; +endchar; + +iff known chars.arrow_double_up_white: +bskchar "Upward white arrow"; +beginchar(chars.arrow_double_up_white,9u#,asc_height#,0); uni "0x21E7"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,180); +x0=x1r=.5w-o=.5[x2,x3]; x3-x2=dbf; +top y0=h+apex_o; bot y1=-d; y2=y3=y1; +p:=dvojsipka(0,1,2,3); +z2'-z2l=z3'-z3r=(rule_thickness-currentbreadth)*up; +filldraw obl(2r,3l,0q.r)---subpath(5,13) of p---obl(3l,0p.l,2r)---cycle; +infill whitehead(0,1,2,3)..(x0q.l,y0a)---obl(2',0q.l,3')---obl(3',2',0p.r)---(x0p.r,y0a)..cycle; +labels(1rr,2',3'); +endchar; + +iff known chars.arrow_up_black: +bskchar "Upward black arrow"; +beginchar(chars.arrow_up_black,9u#,asc_height#,0); uni "0x2B06"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,180); +x0=x1r=.5w-o=.5[x2,x3]; x3-x2=dbf; +top y0=h+apex_o; bot y1=-d; y2=y3=y1; +p:=dvojsipka(0,1,2,3); +filldraw obl(2r,3l,0q.r)---subpath(5,13) of p---obl(3l,0p.l,2r)---cycle; +endchar; + +iff known chars.arrow_double_left_white: +bskchar "Leftward white arrow"; +beginchar(chars.arrow_double_left_white,15u#,v_center(5u#)); uni "0x21E6"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,-90); +lft x0=u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +p:=dvojsipka(0,1,3,2); +z2'-z2r=z3'-z3l=(rule_thickness-currentbreadth)*left; +filldraw obl(3r,2l,0q.r)---subpath(5,13) of p---obl(2l,0p.l,3r)---cycle; +infill whitehead(0,1,3,2)..(x0a,y0q.l)---obl(3',0q.l,2')---obl(2',3',0p.r)---(x0a,y0p.r)..cycle; +labels(2',3'); +endchar; + +iff known chars.arrow_left_black: +bskchar "Leftward black arrow"; +beginchar(chars.arrow_left_black,15u#,v_center(5u#)); uni "0x2B05"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,-90); +lft x0=u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; y2-y3=dbf; +p:=dvojsipka(0,1,3,2); +filldraw obl(3r,2l,0q.r)---subpath(5,13) of p---obl(2l,0p.l,3r)---cycle; +endchar; + +iff known chars.arrow_double_right_white_round: +bskchar "Double rightward white arrow with rounded end"; +beginchar(chars.arrow_double_right_white_round,15u#,v_center(5u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,90); pos4(rule_thickness,0); +rt x0=w-u; x1=x2=x3=w-x0+.5(y2-y3); y0=y1r=y4=math_axis=.5[y2,y3]; y2-y3=dbf; lft x4l=u; +p:=dvojsipka(0,1,2,3); +filldraw z4l..subpath(4,14) of p..cycle; +infill subpath(0,3) of p..z4r..subpath(15,infinity) of p..cycle; +penlabels(4); +endchar; + +iff known chars.arrow_double_left_white_round: +bskchar "Double leftward white arrow with rounded end"; +beginchar(chars.arrow_double_left_white_round,15u#,v_center(5u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,-90); pos4(rule_thickness,180); +lft x0=u; x1=x2=x3=w-x0-.5(y2-y3); y0=y1r=y4=math_axis=.5[y2,y3]; y2-y3=dbf; rt x4l=w-u; +p:=dvojsipka(0,1,3,2); +filldraw z4l..subpath(4,14) of p..cycle; +infill subpath(0,3) of p..z4r..subpath(15,infinity) of p..cycle; +penlabels(4); +endchar; + +iff known chars.arrow_double_right_white_bar: +bskchar "Double white rightward arrow from bar"; +beginchar(chars.arrow_double_right_white_bar,15u#,v_center(7u#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,90); pos2'(rule_thickness,90); pos3'(rule_thickness,90); +pos4(rule_thickness,0); pos5(rule_thickness,0); +rt x0=w-u; x1=x2=x3=x4l=x5l=w-x0; y0=y1r=math_axis=.5[y2,y3]=.5[y4,y5]; y2-y3=dbf; top y4=h; +y2'l=y2l; y3'r=y3r; x2'=x3'=x4r; +p:=dvojsipka(0,1,2,3); +filldraw z4l..z4r---obl(2'r,4r,0q.r)---subpath(5,13) of p---obl(3'l,0p.l,5r)---z5r..z5l---cycle; +infill whitehead(0,1,2,3)..(x0a,y0q.l)---obl(2'l,0q.l,3')---obl(3'r,2',0p.r)---(x0a,y0p.r)..cycle; +penlabels(2',3',4,5); +endchar; + +iff known chars.arrow_double_right_white_wall: +bskchar "Double white rightward arrow from wall"; +beginchar(chars.arrow_double_right_white_wall,15u#,v_center(7u#)); uni "0x21F0"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,90); pos2'(rule_thickness,90); pos3'(rule_thickness,90); +pos4(rule_thickness,0); pos5(rule_thickness,0); +pos6(rule_thickness,0); pos7(rule_thickness,0); +rt x0=w-u; x1=x2=x3=x4l=x5l=w-x0; y0=y1r=math_axis=.5[y2,y3]=.5[y4,y5]; y2-y3=dbf; top y4=h; +y2'l=y2l; y3'r=y3r; x2'=x3'=x6r; y6=y4; y7=y5; x6=x7=x4+3rule_thickness; +y4r:=y6l:=y4r-(rule_thickness-currentbreadth); x2'l:=x6l; +y5r:=y7l:=y5r+(rule_thickness-currentbreadth); x3'r:=x7l; +p:=dvojsipka(0,1,2,3); +filldraw obl(4l,5l,6r)---obl(6r,4l,2'r)---obl(2'r,6r,0q.r) + ---subpath(5,13) of p---obl(3'l,0p.l,7r)---obl(7r,3'l,5l)---obl(5l,7r,4l)---cycle; +infill whitehead(0,1,2,3)..(x0a,y0q.l)---obl(2'l,0q.l,6l)---obl(6l,2'l,4r) + ---obl(4r,6l,5r)---obl(5r,4r,7l)---obl(7l,5r,3'r)---obl(3'r,7l,0p.r)---(x0a,y0p.r)..cycle; +penlabels(2',3',4,5,6,7); +endchar; + +iff known chars.arrow_double_right_bar: +bskchar "Double rightward arrow from bar"; +beginchar(chars.arrow_double_right_bar,15u#,v_center(7u#)); uni "0x2907"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,90); pos2'(rule_thickness,90); pos3'(rule_thickness,90); +pos4(rule_thickness,0); pos5(rule_thickness,0); +rt x0=w-u; x1=x2=x3=x4l=x5l=w-x0; y0=y1r=math_axis=.5[y2,y3]=.5[y4,y5]; y2-y3=dbf; top y4=h; +y2'=y2; y3'=y3; x2'=x3'=x4r; +p:=dvojsipka(0,1,2,3); +filldraw z4l..z4r---obl(2'r,4r,0q.r)---subpath(5,13) of p---obl(3'l,0p.l,5r)---z5r..z5l---cycle; +infill subpath(0,2) of p---obl(2'l,0q.l,3'r)---obl(3'r,2'l,0p.r)---subpath(16,infinity) of p..cycle; +penlabels(2',3',4,5); labels(2',3'); +endchar; + +iff known chars.arrow_double_right_bar_long: +bskchar "Long double rightward arrow from bar"; +beginchar(chars.arrow_double_right_bar_long,22u#,v_center(7u#)); uni "0x27FE"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,90); pos2'(rule_thickness,90); pos3'(rule_thickness,90); +pos4(rule_thickness,0); pos5(rule_thickness,0); +rt x0=w-u; x1=x2=x3=x4l=x5l=w-x0; y0=y1r=math_axis=.5[y2,y3]=.5[y4,y5]; y2-y3=dbf; top y4=h; +y2'=y2; y3'=y3; x2'=x3'=x4r; +p:=dvojsipka(0,1,2,3); +filldraw z4l..z4r---obl(2'r,4r,0q.r)---subpath(5,13) of p---obl(3'l,0p.l,5r)---z5r..z5l---cycle; +infill subpath(0,2) of p---obl(2'l,0q.l,3'r)---obl(3'r,2'l,0p.r)---subpath(16,infinity) of p..cycle; +penlabels(2',3',4,5); labels(2',3'); +endchar; + +iff known chars.arrow_double_left_bar: +bskchar "Double leftward arrow from bar"; +beginchar(chars.arrow_double_left_bar,15u#,v_center(7u#)); uni "0x2906"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,-90); pos2'(rule_thickness,-90); pos3'(rule_thickness,-90); +pos4(rule_thickness,0); pos5(rule_thickness,0); +lft x0=u; x1=x2=x3=x4r=x5r=w-x0; y0=y1r=math_axis=.5[y2,y3]=.5[y4,y5]; y2-y3=dbf; top y4=h; +y2'=y2; y3'=y3; x2'=x3'=x4l; +p:=dvojsipka(0,1,3,2); +filldraw z5r..z5l---obl(3'r,5l,0q.r)---subpath(5,13) of p---obl(2'l,0p.l,4l)---z4l..z4r---cycle; +infill subpath(0,2) of p---obl(3'l,0q.l,2'r)---obl(2'r,3'l,0p.r)---subpath(16,infinity) of p..cycle; +penlabels(2',3',4,5); +endchar; + +iff known chars.arrow_double_left_bar_long: +bskchar "Long double leftward arrow from bar"; +beginchar(chars.arrow_double_left_bar_long,22u#,v_center(7u#)); uni "0x27FD"; +adjust_fit(0,0); +pickup tiny.nib; +path p; +pos1(rule_thickness,-90); pos2'(rule_thickness,-90); pos3'(rule_thickness,-90); +pos4(rule_thickness,0); pos5(rule_thickness,0); +lft x0=u; x1=x2=x3=x4r=x5r=w-x0; y0=y1r=math_axis=.5[y2,y3]=.5[y4,y5]; y2-y3=dbf; top y4=h; +y2'=y2; y3'=y3; x2'=x3'=x4l; +p:=dvojsipka(0,1,3,2); +filldraw z5r..z5l---obl(3'r,5l,0q.r)---subpath(5,13) of p---obl(2'l,0p.l,4l)---z4l..z4r---cycle; +infill subpath(0,2) of p---obl(3'l,0q.l,2'r)---obl(2'r,3'l,0p.r)---subpath(16,infinity) of p..cycle; +penlabels(2',3',4,5); +endchar; + +iff known chars.arrow_triple_right: +bskchar "Triple rightward arrow"; +beginchar(chars.arrow_triple_right,15u#,v_center(6u#)); uni "0x21DB"; +adjust_fit(0,0); +pickup tiny.nib; +{{ + numeric old_arr; old_arr:=arrsize; save arrwidth, arrsize; + numeric arrwidth, arrsize; arrsize=1.2arrwidth=if not boldmath: 1.2\\ else: 1.5\\fi old_arr; + pos1(rule_thickness,90); + rt x0=w-u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; + y2-y3=(if not boldmath: 5 else: 3.75 fi)*rule_thickness; + filldraw trojsipka(0,1,2,3)..cycle; +}}; +endchar; + +iff known chars.arrow_triple_left: +bskchar "Triple leftward arrow"; +beginchar(chars.arrow_triple_left,15u#,v_center(6u#)); uni "0x21DA"; +adjust_fit(0,0); +pickup tiny.nib; +{{ + numeric old_arr; old_arr:=arrsize; save arrwidth, arrsize; + numeric arrwidth, arrsize; arrsize=1.2arrwidth=if not boldmath: 1.2\\ else: 1.5\\fi old_arr; + pos1(rule_thickness,-90); + lft x0=u; x1=x2=x3=w-x0; y0=y1r=math_axis=.5[y2,y3]; + y3-y2=(if not boldmath: 5 else: 3.75 fi)*rule_thickness; + filldraw trojsipka(0,1,2,3)..cycle; +}}; +endchar; + +iff known chars.math_curly_brace_left: +bskchar "Left curly brace"; +beginchar(chars.math_curly_brace_left,7u#, body_height#,paren_depth#); uni "0x007B"; +italcorr body_height#*slant-.25u#; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,80); pos2(.5[stem,hair],135); pos3(bourstem,190); pos4(hair,90); +pos5(bourstem,170); pos6(.5[stem,hair],225); pos7(hair,-100); +y4=.5(h-d)+o; lft x4=u; rt x1r=w-u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3l=x1-stem; x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{right}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{left}z4r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z1r{z2r-z1l}..z2r..z3r..{left}z4r..{right}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0 + ..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_left_big: +bskchar "\big left curly brace"; +beginchar(chars.math_curly_brace_left_big,7u#, rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,80); pos2(.5[stem,hair],135); pos3(bourstem,190); pos4(hair,90); +pos5(bourstem,170); pos6(.5[stem,hair],225); pos7(hair,-100); +y4=.5(h-d)+o; lft x4=u; rt x1r=w-u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3=2/3(w-u); x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{right}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{left}z4r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z1r{z2r-z1l}..z2r..z3r..{left}z4r..{right}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0 + ..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_left_Big: +bskchar "\Big left curly brace"; +beginchar(chars.math_curly_brace_left_Big,9u#, rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,80); pos2(.45[stem,hair],135); pos3(1.05bourstem,190); pos4(.25[hair,stem],90); +pos5(1.05bourstem,170); pos6(.45[stem,hair],225); pos7(hair,-100); +y4=.5(h-d)+o; lft x4=u; rt x1r=w-u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3=2/3(w-u); x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{right}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{left}z4r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z1r{z2r-z1l}..z2r..z3r..{left}z4r..{right}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0 + ..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_left_bigg: +bskchar "\bigg left curly brace"; +beginchar(chars.math_curly_brace_left_bigg,10u#, rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,80); pos2(.4[stem,hair],135); pos3(1.1bourstem,190); pos4(.5[hair,stem],90); +pos5(1.1bourstem,170); pos6(.4[stem,hair],225); pos7(hair,-100); +y4=.5(h-d)+o; lft x4=u; rt x1r=w-u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3=2/3(w-u); x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{right}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{left}z4r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z1r{z2r-z1l}..z2r..z3r..{left}z4r..{right}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0 + ..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_left_Bigg: +bskchar "\Bigg left curly brace"; +beginchar(chars.math_curly_brace_left_Bigg,11u#, rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,80); pos2(stem,135); pos3(1.5bourstem,190); pos4(.75[hair,stem],90); +pos5(1.5bourstem,170); pos6(stem,225); pos7(hair,-100); +y4=.5(h-d)+o; lft x4=u; rt x1r=w-u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3=2/3(w-u); x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{right}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{left}z4r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z1r{z2r-z1l}..z2r..z3r..{left}z4r..{right}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0 + ..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +def brace_ext_left:= + numeric H, D; H=0; D=6dh; + pos1(hair,80); pos2(stem,135); pos3(1.5bourstem,190); pos4(.75[hair,stem],90); + pos5(1.5bourstem,170); pos6(stem,225); pos7(hair,-100); + y4=.5(H-D)+o; lft x4=u; rt x1r=w-u; top y1r=y2r; .5[y4,y1]=y3; + top y2r=H-hair; x3=2/3(w-u); x2r=x3r; + x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-D+hair; .5[y7,y4]=y5; + p0=z1r{z2r-z1l}..z2r..z3r..{left}z4r; + p1=z4l{right}..z3l..z2l..{z1l-z2r}z1l; + p2=z4l{right}..z5r..z6r..{z7l-z6r}z7r; + p3=z7l{z6r-z7l}..z6l..z5l..{left}z4r; +enddef; + +iff known chars.math_curly_brace_left_top: +bskchar "Extensible left curly brace---top"; +beginchar(chars.math_curly_brace_left_top,11.5u#, 0,2.1dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +brace_ext_left; +tim100=directiontime up of p1; +tim101=xpart(p0 intersectiontimes (point tim100 of p1 --(point tim100 of p1 shifted (-w,0)))); +filldraw subpath (0,tim101) of p0--subpath(tim100,infinity) of p1..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_left_bot: +bskchar "Extensible left curly brace---bottom"; +beginchar(chars.math_curly_brace_left_bot,11.5u#, 0,2.1dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +brace_ext_left; +tim100-2=directiontime up of subpath (2,infinity) of p3; +tim101=xpart(p2 intersectiontimes (point tim100 of p3 --(point tim100 of p3 shifted (-w,0)))); +filldraw (subpath (tim101,infinity) of p2..subpath(0,tim100) of p3--cycle) + shifted (0,-ypart(point tim101 of p2)); +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_left_mid: +bskchar "Extensible left curly brace---middle"; +beginchar(chars.math_curly_brace_left_mid,11.5u#, 0,1.8dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +brace_ext_left; +z8=bsktouch(p1,down,p3,up); +tim0=xpart(p1 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p3 intersectiontimes (z8--(x8,y5))); +tim100=directiontime up of p1; +tim101=xpart(p0 intersectiontimes (point tim100 of p1 --(point tim100 of p1 shifted (-w,0)))); +tim102-2=directiontime up of subpath (2,infinity) of p3; +tim103=xpart(p2 intersectiontimes (point tim102 of p3 --(point tim102 of p3 shifted (-w,0)))); +filldraw (subpath(tim101, infinity) of p0..subpath(0,tim103) of p2 + --subpath(tim102,rundy(p3,tim1).zpet) of p3 + ..subpath(rundy(p1,tim0),tim100) of p1--cycle) shifted (0,-ypart(point tim101 of p0)); +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_left_ext: +bskchar "Extensible left curly brace---extension module"; +beginchar(chars.math_curly_brace_left_ext,11.5u#, 0,.5dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=1.5curve; +brace_ext_left; +tim100=directiontime up of p1; +tim101=xpart(p0 intersectiontimes (point tim100 of p1 --(point tim100 of p1 shifted (-w,0)))); +tim0=xpart(point tim100 of p1); tim1=xpart(point tim101 of p0); +filldraw (tim0,h)--(tim0,-d)--(tim1,-d)--(tim1,h)--cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_white_left: +bskchar "Left white curly brace"; +beginchar(chars.math_curly_brace_white_left,7u#, body_height#,paren_depth#); uni "0x2983"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(hair,80); pos2(.5[stem,hair],135); pos3(bourstem,190); pos4(hair,90); +pos5(bourstem,170); pos6(.5[stem,hair],225); pos7(hair,-100); +y4=.5(h-d)+o; lft x4=u; rt x1r=w-u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3l=x1-stem; x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{right}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{left}z4r; +p2=(x1-stem,-d-stem)--(x1-stem,h+stem); +(tim0-2,tim2)=subpath(2,infinity) of p0 intersectiontimes p2; +(tim1,tim3)=p1 intersectiontimes p2; +filldraw z1r{z2r-z1l}..z2r..z3r..{left}z4r..{right}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim3),rundy(p2,(tim2,hair)).zpet) of p2 + ..subpath(rundy(p0,tim0),infinity) of p0..cycle; +pos2'(hair,135); pos6'(hair,225); z2'r=z2r; z6'r=z6r; +pos3'(hair,190); pos5'(hair,170); z3'r=z3r; z5'r=z5r; +p3=z4l{right}..z3'l..z2'l..{z1l-z2r}z1l; +p4=z7l{z6r-z7l}..z6'l..z5'l..{left}z4r; +z8=bsktouch(p3,down,p4,up); +tim4=xpart(p3 intersectiontimes (z8--(x8,h))); +tim5=xpart(p4 intersectiontimes (z8--(x8,0))); +(tim6,tim7)=p3 intersectiontimes p2; +(tim8,tim9)=p4 intersectiontimes p2; +infill subpath(rundy(p4,tim8),rundy(p4,tim5).zpet) of p4 + ..subpath(rundy(p3,tim4),rundy(p3,tim6).zpet) of p3 + ..reverse subpath(rundy(p2,tim9),rundy(p2,tim7).zpet) of p2..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(2'r,3'r,5'r,6'r); +endchar; + +iff known chars.math_curly_brace_right: +bskchar "Right curly brace"; +beginchar(chars.math_curly_brace_right,7u#, body_height#,paren_depth#); uni "0x007D"; +italcorr math_axis#*slant; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,100); pos2(.5[stem,hair],45); pos3(bourstem,-10); pos4(hair,90); +pos5(bourstem,10); pos6(.5[stem,hair],-45); pos7(hair,-80); +y4=.5(h-d)-o; rt x4=w-u; lft x1r=u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3l=x1+stem; x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{left}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{right}z4r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z1r{z2r-z1l}..z2r..z3r..{right}z4r..{left}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0 + ..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_right_big: +bskchar "\big right curly brace"; +beginchar(chars.math_curly_brace_right_big,7u#, rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,100); pos2(.5[stem,hair],45); pos3(bourstem,-10); pos4(hair,90); +pos5(bourstem,10); pos6(.5[stem,hair],-45); pos7(hair,-80); +y4=.5(h-d)-o; rt x4=w-u; lft x1r=u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3l=x1+stem; x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{left}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{right}z4r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z1r{z2r-z1l}..z2r..z3r..{right}z4r..{left}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0 + ..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_right_Big: +bskchar "\Big right curly brace"; +beginchar(chars.math_curly_brace_right_Big,9u#, rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,100); pos2(.45[stem,hair],45); pos3(1.05bourstem,-10); pos4(.25[hair,stem],90); +pos5(1.05bourstem,10); pos6(.45[stem,hair],-45); pos7(hair,-80); +y4=.5(h-d)-o; rt x4=w-u; lft x1r=u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3l=x1+stem; x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{left}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{right}z4r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z1r{z2r-z1l}..z2r..z3r..{right}z4r..{left}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0 + ..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_right_bigg: +bskchar "\bigg right curly brace"; +beginchar(chars.math_curly_brace_right_bigg,10u#, rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,100); pos2(.4[stem,hair],45); pos3(1.1bourstem,-10); pos4(.5[hair,stem],90); +pos5(1.1bourstem,10); pos6(.4[stem,hair],-45); pos7(hair,-80); +y4=.5(h-d)-o; rt x4=w-u; lft x1r=u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3l=x1+stem; x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{left}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{right}z4r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z1r{z2r-z1l}..z2r..z3r..{right}z4r..{left}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0 + ..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_right_Bigg: +bskchar "\Bigg right curly brace"; +beginchar(chars.math_curly_brace_right_Bigg,11u#, rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,100); pos2(stem,45); pos3(1.5bourstem,-10); pos4(.75[hair,stem],90); +pos5(1.5bourstem,10); pos6(stem,-45); pos7(hair,-80); +y4=.5(h-d)-o; rt x4=w-u; lft x1r=u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3l=x1+stem; x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{left}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{right}z4r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z1r{z2r-z1l}..z2r..z3r..{right}z4r..{left}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0 + ..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +def brace_ext_right:= + numeric H, D; H=0; D=6dh; + pos1(hair,100); pos2(stem,45); pos3(1.5bourstem,-10); pos4(.75[hair,stem],90); + pos5(1.5bourstem,10); pos6(stem,-45); pos7(hair,-80); + y4=.5(H-D)-o; rt x4=w-u; lft x1r=u; top y1r=y2r; .5[y4,y1]=y3; + top y2r=h-hair; x3l=x1+stem; x2r=x3r; + x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-D+hair; .5[y7,y4]=y5; + p0=z1r{z2r-z1l}..z2r..z3r..{right}z4r; + p1=z4l{left}..z3l..z2l..{z1l-z2r}z1l; + p2=z4l{left}..z5r..z6r..{z7l-z6r}z7r; + p3=z7l{z6r-z7l}..z6l..z5l..{right}z4r; +enddef; + +iff known chars.math_curly_brace_right_top: +bskchar "Extensible right curly brace---top"; +beginchar(chars.math_curly_brace_right_top,11.5u#, 0,2.1dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +brace_ext_right; +tim100=directiontime up of p1; +tim101=xpart(p0 intersectiontimes (point tim100 of p1 --(point tim100 of p1 shifted (w,0)))); +filldraw subpath (0,tim101) of p0--subpath(tim100,infinity) of p1..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_right_bot: +bskchar "Extensible right curly brace---bottom"; +beginchar(chars.math_curly_brace_right_bot,11.5u#, 0,2.1dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +brace_ext_right; +tim100-2=directiontime up of subpath (2,infinity) of p3; +tim101=xpart(p2 intersectiontimes (point tim100 of p3 --(point tim100 of p3 shifted (w,0)))); +filldraw (subpath (tim101,infinity) of p2..subpath(0,tim100) of p3--cycle) + shifted (0,-ypart(point tim101 of p2)); +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_right_mid: +bskchar "Extensible right curly brace---middle"; +beginchar(chars.math_curly_brace_right_mid,11.5u#, 0,1.8dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], oblu; oblu:=1.5curve; +brace_ext_right; +z8=bsktouch(p1,down,p3,up); +tim0=xpart(p1 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p3 intersectiontimes (z8--(x8,y5))); +tim100=directiontime up of p1; +tim101=xpart(p0 intersectiontimes (point tim100 of p1 --(point tim100 of p1 shifted (w,0)))); +tim102-2=directiontime up of subpath (2,infinity) of p3; +tim103=xpart(p2 intersectiontimes (point tim102 of p3 --(point tim102 of p3 shifted (w,0)))); +filldraw (subpath(tim101, infinity) of p0..subpath(0,tim103) of p2 + --subpath(tim102,rundy(p3,tim1).zpet) of p3 + ..subpath(rundy(p1,tim0),tim100) of p1--cycle) shifted (0,-ypart(point tim101 of p0)); +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_right_ext: +bskchar "Extensible right curly brace---extension module"; +beginchar(chars.math_curly_brace_right_ext,11.5u#, 0,.5dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +brace_ext_right; +tim100=directiontime up of p1; +tim101=xpart(p0 intersectiontimes (point tim100 of p1 --(point tim100 of p1 shifted (w,0)))); +tim0=xpart(point tim100 of p1); tim1=xpart(point tim101 of p0); +filldraw (tim0,h)--(tim0,-d)--(tim1,-d)--(tim1,h)--cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.math_curly_brace_white_right: +bskchar "Right white curly brace"; +beginchar(chars.math_curly_brace_white_right,7u#, body_height#,paren_depth#); uni "0x2984"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +pos1(hair,100); pos2(.5[stem,hair],45); pos3(bourstem,-10); pos4(hair,90); +pos5(bourstem,10); pos6(.5[stem,hair],-45); pos7(hair,-80); +y4=.5(h-d)-o; rt x4=w-u; lft x1r=u; top y1r=y2r; .5[y4,y1]=y3; +top y2r=h-hair; x3l=x1+stem; x2r=x3r; +x5=x3; x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=y5; +p0=z4l{left}..z3l..z2l..{z1l-z2r}z1l; +p1=z7l{z6r-z7l}..z6l..z5l..{right}z4r; +p2=(x1+stem,-d-stem)--(x1+stem,h+stem); +(tim0-2,tim2)=subpath(2,infinity) of p0 intersectiontimes p2; +(tim1,tim3)=p1 intersectiontimes p2; +draw z1r{z2r-z1l}..z2r..z3r..{right}z4r..{left}z4l..z5r..z6r..{z7l-z6r}z7r + ..subpath(0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim3),rundy(p2,tim2).zpet) of p2 + ..subpath(rundy(p0,tim0),infinity) of p0 + ..cycle; +pos2'(hair,45); pos6'(hair,-45); z2'r=z2r; z6'r=z6r; +pos3'(hair,-10); pos5'(hair,10); z3'r=z3r; z5'r=z5r; +p3=z4l{left}..z3'l..z2'l..{z1l-z2r}z1l; +p4=z7l{z6r-z7l}..z6'l..z5'l..{right}z4r; +z8=bsktouch(p3,down,p4,up); +tim4=xpart(p3 intersectiontimes (z8--(x8,h))); +tim5=xpart(p4 intersectiontimes (z8--(x8,0))); +(tim6,tim7)=p3 intersectiontimes p2; +(tim8,tim9)=p4 intersectiontimes p2; +infill subpath(rundy(p4,tim8),rundy(p4,tim5).zpet) of p4 + ..subpath(rundy(p3,tim4),rundy(p3,tim6).zpet) of p3 + ..reverse subpath(rundy(p2,tim9),rundy(p2,tim7).zpet) of p2..cycle; +penlabels(1,2,3,4,5,6,7,8); labels(2'r,3'r,5'r,6'r); +endchar; + +iff known chars.math_curly_brace_quill_left: +bskchar "Left curly brace with quill"; +beginchar(chars.math_curly_brace_quill_left,6u#, body_height#,paren_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,80); pos2(.5[stem,hair],135); pos3(bourstem,180); pos3'(bourstem,180); +pos4(hair,90); pos5(bourstem,180); pos5'(bourstem,180); +pos6(.5[stem,hair],225); pos7(hair,-100); +y4=.5(h-d)+o; rt x4=w-u; rt x1r=w-u; top y1r=y2r; .5[y4,y1]=.5[y3,y3']; +y3-y3'=y5'-y5=.5(y1-y4); +top y2r=h-hair; x3l=x2l-.75stem; x2=x1-u; x3=x3'=x5=x5'; +x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=.5[y5,y5']; +y3r:=y3r+o; y5r:=y5r-o; +p0=z1r{z2r-z1l}..z2r{left}..z3r---z3'r..{right}z4r; +p1=z4l{left}..z5'r---z5r..z6r{right}..{z7l-z6r}z7r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z7l{z6r-z7l}..z6l..z5l---z5'l..{right}z4l..z4r{left}..z3'l---z3l..z2l..{z1l-z2r}z1l + ..subpath(0,rundy(p0,tim0).zpet) of p0..subpath(rundy(p1,tim1),infinity) of p1 + ..cycle; +penlabels(1,2,3,3',4,5,5',6,7); +endchar; + +iff known chars.math_curly_brace_quill_right: +bskchar "Right curly brace with quill"; +beginchar(chars.math_curly_brace_quill_right,6u#, body_height#,paren_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,80); pos2(.5[stem,hair],45); pos3(bourstem,0); pos3'(bourstem,0); +pos4(hair,90); pos5(bourstem,0); pos5'(bourstem,0); +pos6(.5[stem,hair],315); pos7(hair,-100); +y4=.5(h-d)+o; lft x4=u; lft x1r=u; top y1r=y2r; .5[y4,y1]=.5[y3,y3']; +y3-y3'=y5'-y5=.5(y1-y4); +top y2r=h-hair; x3l=x2l+.75stem; x2=x1+u; x3=x3'=x5=x5'; +x2=x6; x1=x7; y7-y6=y2-y1; bot y6l=-d+hair; .5[y7,y4]=.5[y5,y5']; +y3r:=y3r+o; y5r:=y5r-o; +p0=z1r{z2r-z1l}..z2r{right}..z3r---z3'r..{left}z4r; +p1=z4l{right}..z5'r---z5r..z6r{left}..{z7l-z6r}z7r; +z8=bsktouch(p0,down,p1,up); +tim0=xpart(p0 intersectiontimes (z8--(x8,y3))); +tim1=xpart(p1 intersectiontimes (z8--(x8,y5))); +filldraw z7l{z6r-z7l}..z6l..z5l---z5'l..{left}z4l..z4r{right}..z3'l---z3l..z2l..{z1l-z2r}z1l + ..subpath(0,rundy(p0,tim0).zpet) of p0..subpath(rundy(p1,tim1),infinity) of p1 + ..cycle; +penlabels(1,2,3,3',4,5,5',6,7); +endchar; + +iff known chars.sign_paragraph: +bskchar "Paragraph sign"; +beginchar(chars.sign_paragraph,11u#,cap_height#,0); uni "0x00B6"; +adjust_fit(0,cap_serif_fit#); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); pos4'(rule_thickness,270); +pos5(.75ser_height,90); pos6(cap_hair,90); pos7(cap_curve,180); +pos8(cap_hair,270); pos9(.8ser_height,270); +bot y1=bot y3=0; top y2=top y4=top y6r=h; +rt x1r= rt x2r= w-2u; x3=x4=x2-3rule_thickness; +x5=x9=x3l; y8r=y9r; y8=bar_height; lft x7r=u; y7=.5[y8,y6]; x8=x6; +x6=.5[x7l,x3l]; z4'l=z4r; y2l:=y4'r; y5r=y4r-serif_o; +cap_serifs_tr(2r); cap_serifs_br(1r); cap_serifs_bl(3l); +filldraw z1l---z1r.a..z1r.c{left}..z1r.b---z2r.b..{right}z2r.c..z2r.a{left} + ...z6r{left}..z7r..z8r--- + if not testdpi:tobl(9r,8r,3l) else:z9r fi ---z3l.b..{left}z3l.c..z3l.a---z3r + ---obl(4'r,3r,2l)..z2l+oblu*down---cycle; +penlabels(1,2,3,4,4',5,6,7,8,9); +endchar; + +iff known chars.sign_paragraph_empty: +bskchar "Paragraph sign (alternative)"; +beginchar(chars.sign_paragraph_empty,11u#,cap_height#,0); uni "non"; +adjust_fit(0,cap_serif_fit#); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); pos4'(rule_thickness,270); +pos5(.75ser_height,90); pos6(cap_hair,90); pos7(cap_curve,180); +pos8(cap_hair,270); pos9(.8ser_height,270); +bot y1=bot y3=0; top y2=top y4=top y6r=h; +rt x1r= rt x2r= w-2u; x3=x4=x2-3rule_thickness; +x5=x9=x3l; y8r=y9r; y8=bar_height; lft x7r=u; y7=.5[y8,y6]; x8=x6; +x6=.5[x7l,x3l]; z4'l=z4r; y2l:=y4'r; y5r=y4r-serif_o; +cap_serifs_tr(2r); cap_serifs_br(1r); cap_serifs_bl(3l); +filldraw z1l---z1r.a..z1r.c{left}..z1r.b---z2r.b..{right}z2r.c..z2r.a{left} + ...z6r{left}..z7r..z8r--- + if not testdpi:obl(9r,8r,3l) else:z9r fi ---z3l.b..{left}z3l.c..z3l.a---z3r + ---obl(4'r,3r,2l)..z2l+oblu*down---cycle; +infill z9l{down}..{left}z8l..z7l..{right}z6l..{down}z5l..cycle; +penlabels(1,2,3,4,4',5,6,7,8,9); +endchar; + +iff known chars.sign_paragraph_reversed: +bskchar "Reversed paragraph sign"; +beginchar(chars.sign_paragraph_reversed,11u#,cap_height#,0); uni "0x204B"; +adjust_fit(cap_serif_fit#,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); pos4'(rule_thickness,270); +pos5(.75ser_height,90); pos6(cap_hair,270); pos7(cap_curve,180); +pos8(cap_hair,90); pos9(.8ser_height,90); +bot y1=bot y3=0; top y2=top y4=top y6l=h; +lft x1l= lft x2l=2u; x3=x4=x2+3rule_thickness; +x5=x9=x3r; y8l=y9l; y8=bar_height; rt x7l=w-u; y7=.5[y8,y6]; x8=x6; +x6=.5[x7r,x3r]; z4'l=z4l; y2r:=y4'r; y5r=y4r-serif_o; +cap_serifs_tl(2l); cap_serifs_bl(1l); cap_serifs_br(3r); +filldraw z1r---z1l.a..z1l.c{right}..z1l.b---z2l.b..{left}z2l.c + ..z2l.a{right}...{right}z6l..z7l..z8l--- + if not testdpi:obl(9l,8l,3r) else: z9l fi + ---z3r.b..{right}z3r.c..z3r.a---z3l---obl(4'l,3l,2r) + ..z2r+oblu*down---cycle; +penlabels(1,2,3,4,4',5,6,7,8,9); +endchar; + +iff known chars.sign_paragraph_reversed_empty: +bskchar "Reversed paragraph sign (alternative)"; +beginchar(chars.sign_paragraph_reversed_empty,11u#,cap_height#,0); uni "non"; +adjust_fit(cap_serif_fit#,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); pos4'(rule_thickness,270); +pos5(.75ser_height,270); pos6(cap_hair,270); pos7(cap_curve,180); +pos8(cap_hair,90); pos9(.8ser_height,90); +bot y1=bot y3=0; top y2=top y4=top y6l=h; +lft x1l= lft x2l=2u; x3=x4=x2+3rule_thickness; +x5=x9=x3r; y8l=y9l; y8=bar_height; rt x7l=w-u; y7=.5[y8,y6]; x8=x6; +x6=.5[x7r,x3r]; z4'l=z4l; y2r:=y4'r; y5l=y4l-serif_o; +cap_serifs_tl(2l); cap_serifs_bl(1l); cap_serifs_br(3r); +filldraw z1r---z1l.a..z1l.c{right}..z1l.b---z2l.b..{left}z2l.c + ..z2l.a{right}...{right}z6l..z7l..z8l--- + if not testdpi:obl(9l,8l,3r) else: z9l fi + ---z3r.b..{right}z3r.c..z3r.a---z3l---obl(4'l,3l,2r) + ..z2r+oblu*down---cycle; +infill z9r{down}..{right}z8r..z7r..{left}z6r..{down}z5r..cycle; +penlabels(1,2,3,4,4',5,6,7,8,9); +endchar; + +iff known chars.sign_paragraph_bullet_left: +bskchar "Leftwards paragraph bullet"; +beginchar(chars.sign_paragraph_bullet_left,11u#,x_height#,0); uni "0x204C"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); pos4'(rule_thickness,270); +pos5(.75ser_height,90); pos6(cap_hair,90); pos7(cap_curve,180); +pos8(cap_hair,270); +bot y1=bot y3=bot y8r=0; top y2=top y4=top y6r=h; +rt x1r= rt x2r= w-2.5u; x3=x4=x2-3rule_thickness; +lft x7r=u; y7=.5[y8,y6]; x8=x6; +x6=.5[x7l,x4l]; z4'l=z4r; y2l:=y4'r; y5r=y4r-serif_o; +cap_serifs_tr(2r); cap_serifs_br(1r); +filldraw z1l---z1r.a..z1r.c{left}..z1r.b---z2r.b..{right}z2r.c..z2r.a{left} + ...z6r{left}..z7r..z8r---cycle; +infill z4r+oblu*down..z2l+oblu*down---z1l+oblu*up..z3r+oblu*up---cycle; +penlabels(1,2,3,4,4',5,6,7,8); +endchar; + +iff known chars.sign_paragraph_bullet_right: +bskchar "Rightward paragraph bullet"; +beginchar(chars.sign_paragraph_bullet_right,11u#,x_height#,0); uni "0x204D"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); pos4'(rule_thickness,270); +pos5(.75ser_height,90); pos6(cap_hair,270); pos7(cap_curve,180); +pos8(cap_hair,90); +bot y1=bot y3=bot y8l=0; top y2=top y4=top y6l=h; +lft x1l= lft x2l=2.5u; x3=x4=x2+3rule_thickness; +x5=x3r; rt x7l=w-u; y7=.5[y8,y6]; x8=x6; +x6=.5[x7r,x3r]; z4'l=z4l; y2r:=y4'r; y5r=y4r-serif_o; +cap_serifs_tl(2l); cap_serifs_bl(1l); cap_serifs_br(3r); +filldraw z1r---z1l.a..z1l.c{right}..z1l.b---z2l.b..{left}z2l.c + ..z2l.a{right}...{right}z6l..z7l..z8l---cycle; +infill z4l+oblu*down..z2r+oblu*down---z1r+oblu*up..z3l+oblu*up---cycle; +penlabels(1,2,3,4,4',5,6,7,89); +endchar; + +iff known chars.sign_pilcrow: +bskchar "Pilcrow sign"; +beginchar(chars.sign_pilcrow,8u#,cap_height#,0); uni "non"; +adjust_fit(0,cap_serif_fit#); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(cap_hair,90); pos4(cap_curve,180); +pos5(cap_hair,270); pos6(.8ser_height,270); +bot y1=0; top y2=top y3r=h; +rt x1r= rt x2r= w-2u; +x6=x1l; y5r=y6r; y5=bar_height; lft x4r=u; y4=.5[y5,y3]; x5=x3; +x3=.5[x4l,x1l]; +cap_serifs_tr(2r); cap_serifs_br(1r); cap_serifs_bl(1l); +filldraw z1l---z1r.a..z1r.c{left}..z1r.b---z2r.b..{right}z2r.c..z2r.a{left} + ...z3r{left}..z4r..z5r---obl(6r,5r,1l)---z1l.b..{left}z1l.c..z1l.a---cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_pilcrow_empty: +bskchar "Pilcrow sign (alternative)"; +beginchar(chars.sign_pilcrow_empty,8u#,cap_height#,0); uni "non"; +adjust_fit(0,cap_serif_fit#); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(cap_hair,90); pos4(cap_curve,180); +pos5(cap_hair,270); pos6(.8ser_height,270); +bot y1=0; top y2=top y3r=h; +rt x1r= rt x2r= w-2u; +x6=x1l; y5r=y6r; y5=bar_height; lft x4r=u; y4=.5[y5,y3]; x5=x3; +x3=.5[x4l,x1l]; y2l:=y2l-.75ser_height; +cap_serifs_tr(2r); cap_serifs_br(1r); cap_serifs_bl(1l); +filldraw z1l---z1r.a..z1r.c{left}..z1r.b---z2r.b..{right}z2r.c..z2r.a{left} + ...z3r{left}..z4r..z5r---obl(6r,5r,1l)---z1l.b..{left}z1l.c..z1l.a---cycle; +infill z6l{down}..{left}z5l..z4l..{right}z3l..{down}z2l..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_diamond_suit: +bskchar "Diamond suit"; +beginchar(chars.sign_diamond_suit,13u#, asc_height#,0); uni "0x2662"; +adjust_fit(0,0); +pickup tiny.nib; +string tx; path p[]; numeric tim[]; +pos1(rule_thickness,-90); pos2(rule_thickness,0); pos3(rule_thickness,90); pos4(rule_thickness,180); +x1=x3=.5w; lft x2l=u; x4l=w-x2l; top y1l=h+apex_o; bot y3l=-d-apex_o; .5[y1,y3]=y2=y4; z0=(x1,y2); +for i=1 upto 4: + z[i+100]=.5[z[i],z[i mod 4 +1]]+.5u*unitvector(z0-.5[z[i],z[i mod 4 +1]]); + tx:="pos"&decimal (100+i)&"(rule_thickness,"&decimal (90*i-135)&")";scantokens tx; +endfor; +filldraw lft z1l..z101l..top z2l&top z2l{left}..bot z2l&bot z2l..z102l..lft z3l&lft z3l{down}..rt z3l& + rt z3l..z103l..bot z4l&bot z4l{right}..top z4l&top z4l..z104l..rt z1l&rt z1l{up}..lft z1l&cycle; +p1=lft z1r..z101r..top z2r; +p2=bot z2r..z102r..lft z3r; +p3=rt z3r..z103r..bot z4r; +p4=top z4r..z104r..rt z1r; +tim0=xpart(p1 intersectiontimes ((0,y1r-2oblu)--(w,y1r-2oblu))); +tim1=xpart(p1 intersectiontimes ((x2r+oblu,0)--(x2r+oblu,h))); +tim2=xpart(p2 intersectiontimes ((x2r+oblu,0)--(x2r+oblu,h))); +tim3=xpart(p2 intersectiontimes ((0,y3r+2oblu)--(w,y3r+2oblu))); +tim4=xpart(p3 intersectiontimes ((0,y3r+2oblu)--(w,y3r+2oblu))); +tim5=xpart(p3 intersectiontimes ((x4r-oblu,0)--(x4r-oblu,h))); +tim6=xpart(p4 intersectiontimes ((x4r-oblu,0)--(x4r-oblu,h))); +tim7=xpart(p4 intersectiontimes ((0,y1r-2oblu)--(w,y1r-2oblu))); +infill subpath(tim0,tim1) of p1..subpath(tim2,tim3) of p2 + ..subpath(tim4,tim5) of p3..subpath(tim6,tim7) of p4..cycle; +penlabels(0,1,2,3,4,101,102,103,104); +endchar; + +iff known chars.sign_diamond_suit_black: +bskchar "Black diamond suit"; +beginchar(chars.sign_diamond_suit_black,13u#, asc_height#,0); uni "0x2666"; +adjust_fit(0,0); +pickup tiny.nib; +string tx; path p[]; numeric tim[]; +pos1(rule_thickness,-90); pos2(rule_thickness,0); pos3(rule_thickness,90); pos4(rule_thickness,180); +x1=x3=.5w; lft x2l=u; x4l=w-x2l; top y1l=h+apex_o; bot y3l=-d-apex_o; .5[y1,y3]=y2=y4; z0=(x1,y2); +for i=1 upto 4: + z[i+100]=.5[z[i],z[i mod 4 +1]]+.5u*unitvector(z0-.5[z[i],z[i mod 4 +1]]); + tx:="pos"&decimal (100+i)&"(rule_thickness,"&decimal (90*i-135)&")";scantokens tx; +endfor; +filldraw lft z1l..z101l..top z2l&top z2l{left}..bot z2l&bot z2l..z102l..lft z3l&lft z3l{down}..rt z3l& + rt z3l..z103l..bot z4l&bot z4l{right}..top z4l&top z4l..z104l..rt z1l&rt z1l{up}..lft z1l&cycle; +penlabels(0,1,2,3,4,101,102,103,104); +endchar; + +iff known chars.sign_heart_suit: +bskchar "Heart suit"; +beginchar(chars.sign_heart_suit,13u#, asc_height#,0); uni "0x2661"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,270); pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,180); pos6(rule_thickness,270); +x1=x4+o=.5w=.5[x6,x2]=.5[x5,x3]; y4l=-d; +lft x3l=u; y3=y5=x_height; top y2l=top y6l=h; +x1-x2=(x2-x3); y1l=.5[x_height,h]; +p1=z1l..z2l..z3l..{down}z4l; +p2=z4r{up}..z5l..z6l..z1r; +p3=z1l+tiny*left..z2r..z3r..{down}z4; +p4=z4{up}..z5r..z6r..z1r+tiny*right; +tim1=xpart(p1 intersectiontimes ((x1,y1+oblu)--(0,y1+oblu))); +tim2=xpart(p2 intersectiontimes ((x1,y1+oblu)--(x6,y1+oblu))); +filldraw subpath (tim1,infinity) of p1..subpath(0,tim2) of p2..cycle; +oblu:=2oblu; +tim3=xpart(p3 intersectiontimes ((w,y4+oblu)--(0,y4+oblu))); +tim4=xpart(p4 intersectiontimes ((w,y4+oblu)--(0,y4+oblu))); +infill subpath(0,tim3) of p3..subpath(tim4,infinity) of p4..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_heart_suit_black: +bskchar "Black heart suit"; +beginchar(chars.sign_heart_suit_black,13u#, asc_height#,0); uni "0x2665"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(rule_thickness,0); pos2(rule_thickness,270); pos3(rule_thickness,0); pos4(rule_thickness,0); +pos5(rule_thickness,180); pos6(rule_thickness,270); +x1=x4+o=.5w=.5[x6,x2]=.5[x5,x3]; y4l=-d; +lft x3l=u; y3=y5=x_height; top y2l=top y6l=h; +x1-x2=(x2-x3); y1l=.5[x_height,h]; +p1=z1l..z2l..z3l..{down}z4l; +p2=z4r{up}..z5l..z6l..z1r; +p3=z1l+tiny*left..z2r..z3r..{down}z4; +p4=z4{up}..z5r..z6r..z1r+tiny*right; +tim1=xpart(p1 intersectiontimes ((x1,y1+oblu)--(0,y1+oblu))); +tim2=xpart(p2 intersectiontimes ((x1,y1+oblu)--(x6,y1+oblu))); +filldraw subpath (tim1,infinity) of p1..subpath(0,tim2) of p2..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_spade_suit: +bskchar "Spade suit"; +beginchar(chars.sign_spade_suit,13u#, asc_height#,0); uni "0x2660"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=4oblu; +pos1(rule_thickness,0); pos4(rule_thickness,0); +pos7(cap_curve,0); +x1=x4=x7=.5w=.5[x6,x2]=.5[x5,x3]; y4=h; +lft x3=u; y3=y5=bar_height; bot y2=bot y6=curve; +x1-x2=(x2-x3); y1=h-.25[x_height,h]; +y7=-hair; +p1=z1l..z2..z3..{up}z4l; +p2=z4r{down}..z5..z6..z1r; +p3=z7l--z1l; +p4=z1r--z7r; +tim1=xpart(p1 intersectiontimes ((x1-.5(stem-currentbreadth),0)--(x1-.5(stem-currentbreadth),h))); +tim2=xpart(p2 intersectiontimes ((x1+.5(stem-currentbreadth),0)--(x1+.5(stem-currentbreadth),y5))); +z100=(0,ypart(point tim1 of p1)); +tim3=xpart(p3 intersectiontimes (z100--(w,y100))); +tim4=xpart(p4 intersectiontimes (z100--(w,y100))); +filldraw subpath(0,rundy(p3,tim3).zpet) of p3..subpath (rundy(p1,tim1),infinity) of p1 + ..subpath(0,rundy(p2,tim2).zpet) of p2..subpath(rundy(p4,tim4),infinity) of p4..cycle; +penlabels(1,4,7); labels(2,3,5,6); +endchar; + +iff known chars.sign_spade_suit_white: +bskchar "White spade suit"; +beginchar(chars.sign_spade_suit_white,13u#, asc_height#,0); uni "0x2664"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], shift; oblu:=4oblu; shift:=rule_thickness-currentbreadth; +pos1(rule_thickness,0); pos4(rule_thickness,0); +pos7(cap_curve,0); +x1=x4=x7=.5w=.5[x6r,x2r]=.5[x5r,x3r]; y4=h; +lft x3r=u; y3r=y5r=bar_height; bot y2r=bot y6r=curve; +x1-x2r=(x2r-x3r); y1=h-.25[x_height,h]; +y7=-hair; +p1=z1l..z2r..z3r..{up}z4l; +p2=z4r{down}..z5r..z6r..z1r; +p3=z7l--z1l; +p4=z1r--z7r; +tim1=xpart(p1 intersectiontimes ((x1-.5(stem-currentbreadth),0)--(x1-.5(stem-currentbreadth),h))); +tim2=xpart(p2 intersectiontimes ((x1+.5(stem-currentbreadth),0)--(x1+.5(stem-currentbreadth),y5r))); +z100=(0,ypart(point tim1 of p1)); +tim3=xpart(p3 intersectiontimes (z100--(w,y100))); +tim4=xpart(p4 intersectiontimes (z100--(w,y100))); +p5=subpath(0,rundy(p3,tim3).zpet) of p3..subpath (rundy(p1,tim1),infinity) of p1; +p6=subpath(0,rundy(p2,tim2).zpet) of p2..subpath(rundy(p4,tim4),infinity) of p4; +pos2(rule_thickness,angle(direction 1 of p1)+90); pos3(rule_thickness,angle(direction 2 of p1)+90); +pos5(rule_thickness,angle(direction 1 of p2)+90); pos6(rule_thickness,angle(direction 2 of p2)+90); +y4'l=y4'r=y4; x4'l-x4l=x4r-x4'r=shift; +p7=z1l..z2l..z3l..{up}z4'l; +p8=z4'r{down}..z5l..z6l..z1r; +z8=bsktouch(subpath(1,infinity) of p7,right,p8,left); +tim7=xpart(p7 intersectiontimes (z8--(0,y8))); +tim8=xpart(p8 intersectiontimes (z8--(w,y8))); +filldraw p5..p6..cycle; +infill subpath(0,rundy(p7,(tim7,2f_obl)).zpet) of p7..subpath(rundy(p8,(tim8,2f_obl)),infinity) of p8..cycle; +penlabels(1,2,3,4,5,6,7); +endchar; + +iff known chars.sign_club_suit: +bskchar "Club suit"; +beginchar(chars.sign_club_suit,13u#, asc_height#,0); uni "0x2663"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos5(rule_thickness,0); pos5'(cap_curve,0); +top z1=(.5w,h); lft x2=u; rt x3=w-u; y2=y3=bar_height; +.5[x4,x6]=x1=x5=x5'; y4=y6=curve; y5=.45[y2,y4]; z4=whatever[(x2,0),z3]; y5'=-hair; +z7=.5[z1,z3]+.5(y5-y4)*unitvector((z1-z3)rotated 90); +z8=.5[z1,z2]+.5(y5-y4)*unitvector((z1-z2)rotated -90); +y7'=.5[y7,y1]; x7'=1/3[x7,x3]; +y8'=.5[y8,y1]; x8'=1/3[x8,x2]; +p0=z2{down}..z4..z5..z6..{up}z3.. {z2-z7}.5[z3,z7]..z7..z7'..{left}z1 + ..z8'..z8..{z8-z3}.5[z8,z2]..{down}z2; +p1=z5l--z5'l; p2=z5'r--z5r; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3)=p2 intersectiontimes p0; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0..subpath(rundy(p1,tim1),infinity) of p1 + ..subpath(0,rundy(p0,tim2).zpet) of p2..subpath(rundy(p0,tim3),infinity) of p0 + &cycle; +labels(1,2,3,4,6,7,7',8,8'); penlabels(5,5'); +endchar; + +iff known chars.sign_club_suit_white: +bskchar "White club suit"; +beginchar(chars.sign_club_suit_white,13u#, asc_height#,0); uni "0x2667"; +adjust_fit(0,0); +pickup tiny.nib; +save spd; vardef spd(expr tim, pp):= shift*unitvector((direction tim of pp) rotated 90) enddef; +path p[]; numeric tim[], shift; oblu:=2oblu; shift:=rule_thickness-currentbreadth; +pos5(rule_thickness,0); pos5'(cap_curve,0); +top z1=(.5w,h); lft x2=u; rt x3=w-u; y2=y3=bar_height; +.5[x4,x6]=x1=x5=x5'; y4=y6=curve; y5=.45[y2,y4]; z4=whatever[(x2,0),z3]; y5'=-hair; +z7=.5[z1,z3]+.5(y5-y4)*unitvector((z1-z3)rotated 90); +z8=.5[z1,z2]+.5(y5-y4)*unitvector((z1-z2)rotated -90); +y7'=.5[y7,y1]; x7'=1/3[x7,x3]; +y8'=.5[y8,y1]; x8'=1/3[x8,x2]; +p0=z2{down}..z4..z5..z6..{up}z3.. {z2-z7}.5[z3,z7]..z7..z7'..{left}z1 + ..z8'..z8..{z8-z3}.5[z8,z2]..{down}z2; +p1=z5l--z5'l; p2=z5'r--z5r; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3)=p2 intersectiontimes p0; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0..subpath(rundy(p1,tim1),infinity) of p1 + ..subpath(0,rundy(p0,tim2).zpet) of p2..subpath(rundy(p0,tim3),infinity) of p0 + &cycle; +infill z2+shift*right{down}..z4+spd(1,p0)..z5+spd(2,p0)..z6+spd(3,p0)..z3+shift*left{up}..{z2-z7}.5[z3,z7]+spd(5,p0)..z7+spd(6,p0)..z7'+spd(7,p0)..{left}z1+shift*down..z8'+spd(9,p0)..z8+spd(10,p0)..{z8-z3}.5[z8,z2]+spd(11,p0)..cycle; +labels(1,2,3,4,6,7,7',8,8'); penlabels(5,5'); +endchar; + +iff known chars.math_section: +bskchar "Section sign"; +beginchar(chars.math_section,8u#,asc_height#, .5asc_height#-.75bar_height#-.5cap_hair#-.5o#); uni "0x00A7"; +adjust_fit(0,0); +pickup tiny.nib; +numeric exc; exc=(w-u)/(h-.5bar_height); +path p[]; numeric tim[]; oblu:=2.5oblu; +pos2(cap_hair,90); pos3(cap_curve,angle((w-u,h-.5bar_height))+180); pos4(cap_hair,90); +pos12(cap_hair,90); pos13(cap_curve,angle((w-u,h-.5bar_height))+180); pos14(cap_hair,90); +pos5(cap_stem,180); pos6(cap_stem,180); +pos15(cap_stem,180); pos16(cap_stem,180); +z2-z12=z3-z13=z4-z14=z5-z15=z6-z16=z2r-z3; +y5=.5[y2l,y3]+.5like_cap_hair; x3-x5l=.5(y2l-y3l)*exc; +y6=.5[y4r,y3]-.5like_cap_hair; rt x6l=w-u; +x2=x3=x4=.5w; top y2r=h+o; y4l=.5bar_height; +y3=.5[y2r,y4r]+.5cap_hair; +pos1(cap_hair,0); x1r=w-x5r; y1=y5-.5cap_hair; +pos7(cap_hair,0); x7l=w-x6l; y7=y16+.5cap_hair; +p0=z1r{up}..z2r{left}..z5r..z3r..z6r..{left}z4r; +p1=z4l{right}..z6l..z3l..z5l..{right}z2l..{down}z1l; +p2=z12r{left}..z15r..z13r..z16r..{left}z14r..{up}z7r; +p3=z7l{dir-80}..z14l{right}..z16l..z13l..z15l..{right}z12l; +tim1=xpart(p0 intersectiontimes ((.5w,y2-.5cap_hair)--(w,y2-.5cap_hair))); +(tim2,tim3)=p0 intersectiontimes p2; +tim4=xpart(p3 intersectiontimes ((.5w,y14+cap_hair)--(0,y14+cap_hair))); +(tim5,tim6)=p3 intersectiontimes p1; +(tim7,tim8)=p0 intersectiontimes p3; +(tim9,tim10)=p0 intersectiontimes subpath(0,3.5) of p3; +filldraw z1r--(x1r-.5o,h+o){dir-100}..subpath(tim1,rundy(p0,tim2).zpet) of p0 + ..subpath(rundy(p2,tim3),infinity) of p2..z7l--(x7l+o,bot y14l){dir80} + ..subpath(tim4,rundy(p3,tim5).zpet) of p3 + ..subpath(rundy(p1,tim6),infinity) of p1..cycle; +oblu:=f_obl; +infill subpath(rundy(p0,tim7),rundy(p0,tim9).zpet) of p0 + ..subpath(rundy(p3,tim10),rundy(p3,tim8).zpet) of p3..cycle; +penlabels(0,1,2,3,4,5,6,7,12,13,14,15,16); +endchar; + +iff known chars.math_accent_hat_wide: +bskchar "Wide hat accent"; +beginchar(chars.math_accent_hat_wide,9u#,.5[asc_height#,body_height#],0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y3; top y2l=h; top y1l=1/2[x_height,top y2]; lft x1=0; rt x3=w; x2=.5[x1,x3]; +pos1(hair,-10); pos2(.1[stem,hair],270); pos2'(stem,0); pos3(hair,0); +z2'=z2+.25tiny*left; +filldraw z3l---obl(2r,3l,1r)---z1r..z1---z2'l..z2l..z2'r---z3r--cycle; +penlabels(1,2,2',3); +endchar; + +iff known chars.math_accent_hat_wider: +bskchar "Wider hat accent"; +beginchar(chars.math_accent_hat_wider,17u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y3; top y2l=h; top y1l=1/2[x_height,top y2]; lft x1=0; rt x3=w; x2=.5[x1,x3]; +pos1(hair,-10); pos2(.1[stem,hair],270); pos2'(1.75stem,0); pos3(hair,0); +z2'=z2+.25tiny*left; +filldraw z3l---obl(2r,3l,1r)---z1r..z1---z2'l..z2l..z2'r---z3r--cycle; +penlabels(1,2,2',3); +endchar; + +iff known chars.math_accent_hat_widest: +bskchar "Widest hat accent"; +beginchar(chars.math_accent_hat_widest,25u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y3; top y2l=h; top y1l=1/2[x_height,top y2]; lft x1=0; rt x3=w; x2=.5[x1,x3]; +pos1(hair,-10); pos2(.1[stem,hair],270); pos2'(1.75stem,0); pos3(hair,0); +z2'=z2+.25tiny*left; +filldraw z3l---obl(2r,3l,1r)---z1r..z1---z2'l..z2l..z2'r---z3r--cycle; +penlabels(1,2,2',3); +endchar; + +iff known chars.math_accent_hat_wide_widest: +bskchar "Wide than widest hat accent"; +beginchar(chars.math_accent_hat_wide_widest,33u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y3; top y2l=h; top y1l=1/2[x_height,top y2]; lft x1=0; rt x3=w; x2=.5[x1,x3]; +pos1(hair,-10); pos2(.1[stem,hair],270); pos2'(1.75stem,0); pos3(hair,0); +z2'=z2+.25tiny*left; +filldraw z3l---obl(2r,3l,1r)---z1r..z1---z2'l..z2l..z2'r---z3r--cycle; +penlabels(1,2,2',3); +endchar; + +iff known chars.math_accent_hat_very_wide: +bskchar "Very wide hat accent"; +beginchar(chars.math_accent_hat_very_wide,41u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y3; top y2l=h; top y1l=1/2[x_height,top y2]; lft x1=0; rt x3=w; x2=.5[x1,x3]; +pos1(hair,-10); pos2(.1[stem,hair],270); pos2'(1.75stem,0); pos3(hair,0); +z2'=z2+.25tiny*left; +filldraw z3l---obl(2r,3l,1r)---z1r..z1---z2'l..z2l..z2'r---z3r--cycle; +penlabels(1,2,2',3); +endchar; + +iff known chars.math_accent_triangle_wide: +bskchar "Wide triangle accent"; +beginchar(chars.math_accent_triangle_wide,9u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y3; top y2l=h; top y1l=1/2[x_height,top y2]; lft x1=0; rt x3=w; x2=.5[x1,x3]; +pos1(hair,-10); pos2(.5[stem,hair],270); pos2'(stem,0); pos3(hair,0); +z2'=z2+.25tiny*left; +y1'=y3'=y1+hair-currentbreadth; +z1'=whatever[z1r,z2r]; z3'=whatever[z2r,z3l]; +filldraw z3l--z1r...z1---z2'l..z2l..z2'r---z3r--cycle; +oblu.more:=1/5(x3'-x1'); +infill obl(3',1',2r).more---obl(2r,3',1')---obl(1',2r,3').more---cycle; +penlabels(1,2,2',3); labels(1',3'); +endchar; + +iff known chars.math_accent_triangle_wider: +bskchar "Wider triangle accent"; +beginchar(chars.math_accent_triangle_wider,17u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y3; top y2l=h; top y1l=1/2[x_height,top y2]; lft x1=0; rt x3=w; x2=.5[x1,x3]; +pos1(hair,-10); pos2(.5[stem,hair],270); pos2'(stem,0); pos3(hair,0); +z2'=z2+.25tiny*left; +y1'=y3'=y1+hair-currentbreadth; +z1'=whatever[z1r,z2r]; z3'=whatever[z2r,z3l]; +filldraw z3l--z1r...z1---z2'l..z2l..z2'r---z3r--cycle; +oblu.more:=1/5(x3'-x1'); +infill obl(3',1',2r).more---obl(2r,3',1')---obl(1',2r,3').more---cycle; +penlabels(1,2,2',3); labels(1',3'); +endchar; + +iff known chars.math_accent_triangle_widest: +bskchar "Widest triangle accent"; +beginchar(chars.math_accent_triangle_widest,25u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y3; top y2l=h; top y1l=1/2[x_height,top y2]; lft x1=0; rt x3=w; x2=.5[x1,x3]; +pos1(hair,-10); pos2(.5[stem,hair],270); pos2'(stem,0); pos3(hair,0); +z2'=z2+.25tiny*left; +y1'=y3'=y1+hair-currentbreadth; +z1'=whatever[z1r,z2r]; z3'=whatever[z2r,z3l]; +filldraw z3l--z1r...z1---z2'l..z2l..z2'r---z3r--cycle; +oblu.more:=1/5(x3'-x1'); +infill obl(3',1',2r).more---obl(2r,3',1')---obl(1',2r,3').more---cycle; +penlabels(1,2,2',3); labels(1',3'); +endchar; + +iff known chars.math_accent_triangle_wide_widest: +bskchar "Wide than widest triangle accent"; +beginchar(chars.math_accent_triangle_wide_widest,33u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y3; top y2l=h; top y1l=1/2[x_height,top y2]; lft x1=0; rt x3=w; x2=.5[x1,x3]; +pos1(hair,-10); pos2(.5[stem,hair],270); pos2'(stem,0); pos3(hair,0); +z2'=z2+.25tiny*left; +y1'=y3'=y1+hair-currentbreadth; +z1'=whatever[z1r,z2r]; z3'=whatever[z2r,z3l]; +filldraw z3l--z1r...z1---z2'l..z2l..z2'r---z3r--cycle; +oblu.more:=1/5(x3'-x1'); +infill obl(3',1',2r).more---obl(2r,3',1')---obl(1',2r,3').more---cycle; +penlabels(1,2,2',3); labels(1',3'); +endchar; + +iff known chars.math_accent_triangle_very_wide: +bskchar "Very wide triangle accent"; +beginchar(chars.math_accent_triangle_very_wide,41u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +y1=y3; top y2l=h; top y1l=1/2[x_height,top y2]; lft x1=0; rt x3=w; x2=.5[x1,x3]; +pos1(hair,-10); pos2(.5[stem,hair],270); pos2'(stem,0); pos3(hair,0); +z2'=z2+.25tiny*left; +y1'=y3'=y1+hair-currentbreadth; +z1'=whatever[z1r,z2r]; z3'=whatever[z2r,z3l]; +filldraw z3l--z1r...z1---z2'l..z2l..z2'r---z3r--cycle; +oblu.more:=1/5(x3'-x1'); +infill obl(3',1',2r).more---obl(2r,3',1')---obl(1',2r,3').more---cycle; +penlabels(1,2,2',3); labels(1',3'); +endchar; + +iff known chars.math_accent_tilde_wide: +bskchar "Wide tilde accent"; +beginchar(chars.math_accent_tilde_wide,9u#,.5[asc_height#,body_height#],0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=0; y0=.6[x_height,h]; +tilde(0,1); +endchar; + +iff known chars.math_accent_tilde_wider: +bskchar "Wider tilde accent"; +beginchar(chars.math_accent_tilde_wider,17u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=0; y0=.6[x_height,h]; +tilde(0,1); +endchar; + +iff known chars.math_accent_tilde_widest: +bskchar "Widest tilde accent"; +beginchar(chars.math_accent_tilde_widest,25u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=0; y0=.6[x_height,h]; +tilde(0,1); +endchar; + +iff known chars.math_accent_tilde_wide_widest: +bskchar "Wide than widest tilde accent"; +beginchar(chars.math_accent_tilde_wide_widest,33u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=0; y0=.6[x_height,h]; +tilde(0,1); +endchar; + +iff known chars.math_accent_tilde_very_wide: +bskchar "Very wide tilde accent"; +beginchar(chars.math_accent_tilde_very_wide,41u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +lft x0=0; y0=.6[x_height,h]; +tilde(0,1); +endchar; + +iff known chars.math_parent_left_big: +bskchar "\big left parenthesis"; +beginchar(chars.math_parent_left_big,6u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(bourstem,0); +rt x1r=w-u; rt x3r=w-u; lft x2l=u; +y2=.5[y1l,y3l]; top y1l=h+apex_o; bot y3l=-d-apex_o; +pos1(.5[stem,hair], angle((x1r,y1l)-z2)-90); pos3(.5[stem,hair],angle((x3r,y3l)-z2)+90); +filldraw z3r..z2r{up}..z1r&z1r{up}..z1l&z1l..z2l{down}..z3l&z3l..{up}z3r&cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_parent_left_Big: +bskchar "\Big left parenthesis"; +beginchar(chars.math_parent_left_Big,7u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(1.05bourstem,0); +rt x1r=w-u; rt x3r=w-u; lft x2l=u; +y2=.5[y1l,y3l]; top y1l=h+apex_o; bot y3l=-d-apex_o; +pos1(.45[stem,hair], angle((x1r,y1l)-z2)-90); pos3(.45[stem,hair],angle((x3r,y3l)-z2)+90); +filldraw z3r..z2r{up}..z1r&z1r{up}..z1l&z1l..z2l{down}..z3l&z3l..{up}z3r&cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_parent_left_bigg: +bskchar "\bigg left parenthesis"; +beginchar(chars.math_parent_left_bigg,9u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(1.1bourstem,0); +rt x1r=w-u; rt x3r=w-u; lft x2l=u; +y2=.5[y1l,y3l]; top y1l=h+apex_o; bot y3l=-d-apex_o; +pos1(.4[stem,hair], angle((x1r,y1l)-z2)-90); pos3(.4[stem,hair],angle((x3r,y3l)-z2)+90); +filldraw z3r..z2r{up}..z1r&z1r{up}..z1l&z1l..z2l{down}..z3l&z3l..{up}z3r&cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_parent_left_Bigg: +bskchar "\Bigg left parenthesis"; +beginchar(chars.math_parent_left_Bigg,10u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(1.5bourstem,0); +rt x1r=w-u; rt x3r=w-u; lft x2l=u; +y2=.5[y1l,y3l]; top y1l=h+apex_o; bot y3l=-d-apex_o; +pos1(stem, angle((x1r,y1l)-z2)-90); pos3(stem,angle((x3r,y3l)-z2)+90); +filldraw z3r..z2r{up}..z1r&z1r{up}..z1l&z1l..z2l{down}..z3l&z3l..{up}z3r&cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_parent_left_top: +bskchar "Extensible left parenthesis---top"; +beginchar(chars.math_parent_left_top,10.5u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(1.5bourstem,0); +rt x1r=w-u; lft x2l=u; +bot y2=-d; top y1l=h+apex_o; +pos1(stem, angle((x1r,y1l)-z2)-90); +filldraw z2r{up}..z1r&z1r{up}..z1l&z1l..{down}z2l--cycle; +penlabels(1,2); +endchar; + +iff known chars.math_parent_left_bot: +bskchar "Extensible left parenthesis---bot"; +beginchar(chars.math_parent_left_bot,10.5u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(1.5bourstem,0); +rt x1r=w-u; lft x2l=u; +top y2=h; bot y1l=-d-apex_o; +pos1(stem,angle((x1r,y1l)-z2)+90); +filldraw z1r..{up}z2r--z2l{down}..z1l&z1l..{up}z1r&cycle; +penlabels(1,2); +endchar; + +iff known chars.math_parent_left_mid: +bskchar "Extensible left parenthesis---mid"; +beginchar(chars.math_parent_left_mid,10.5u#,0,dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(1.5bourstem,0); pos2(1.5bourstem,0); +lft x1l=lft x2l=u; +top y1=h; bot y2=-d; +filldraw z1l--z2l--z2r--z1r--cycle; +penlabels(1,2); +endchar; + +iff known chars.math_parent_right_big: +bskchar "\big right parenthesis"; +beginchar(chars.math_parent_right_big,6u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(bourstem,180); +lft x1r=u; lft x3r=u; rt x2l=w-u; +y2=.5[y1l,y3l]; top y1l=h+apex_o; bot y3l=-d-apex_o; +pos1(.5[stem,hair], angle((x1r,y1l)-z2)+90); pos3(.5[stem,hair],angle((x3r,y3l)-z2)-90); +filldraw z3r..z2r{up}..z1r&z1r{up}..z1l&z1l..z2l{down}..z3l&z3l..{up}z3r&cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_parent_right_Big: +bskchar "\Big right parenthesis"; +beginchar(chars.math_parent_right_Big,7u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(1.05bourstem,180); +lft x1r=u; lft x3r=u; rt x2l=w-u; +y2=.5[y1l,y3l]; top y1l=h+apex_o; bot y3l=-d-apex_o; +pos1(.45[stem,hair], angle((x1r,y1l)-z2)+90); pos3(.45[stem,hair],angle((x3r,y3l)-z2)-90); +filldraw z3r..z2r{up}..z1r&z1r{up}..z1l&z1l..z2l{down}..z3l&z3l..{up}z3r&cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_parent_right_bigg: +bskchar "\bigg right parenthesis"; +beginchar(chars.math_parent_right_bigg,9u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(1.1bourstem,180); +lft x1r=u; lft x3r=u; rt x2l=w-u; +y2=.5[y1l,y3l]; top y1l=h+apex_o; bot y3l=-d-apex_o; +pos1(.4[stem,hair], angle((x1r,y1l)-z2)+90); pos3(.4[stem,hair],angle((x3r,y3l)-z2)-90); +filldraw z3r..z2r{up}..z1r&z1r{up}..z1l&z1l..z2l{down}..z3l&z3l..{up}z3r&cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_parent_right_Bigg: +bskchar "\Bigg right parenthesis"; +beginchar(chars.math_parent_right_Bigg,10u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(1.5bourstem,180); +lft x1r=u; lft x3r=u; rt x2l=w-u; +y2=.5[y1l,y3l]; top y1l=h+apex_o; bot y3l=-d-apex_o; +pos1(stem, angle((x1r,y1l)-z2)+90); pos3(stem,angle((x3r,y3l)-z2)-90); +filldraw z3r..z2r{up}..z1r&z1r{up}..z1l&z1l..z2l{down}..z3l&z3l..{up}z3r&cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_parent_right_top: +bskchar "Extensible right parenthesis---top"; +beginchar(chars.math_parent_right_top,10.5u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(1.5bourstem,180); +lft x1r=u; rt x2l=w-u; +bot y2=-d; top y1l=h+apex_o; +pos1(stem, angle((x1r,y1l)-z2)+90); +filldraw z2r{up}..z1r&z1r{up}..z1l&z1l..{down}z2l--cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_parent_right_bot: +bskchar "Extensible right parenthesis---bot"; +beginchar(chars.math_parent_right_bot,10.5u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos2(1.5bourstem,180); +lft x1r=u; rt x2l=w-u; +top y2=h; bot y1l=-d-apex_o; +pos1(stem, angle((x1r,y1l)-z2)-90); +filldraw z1r..{up}z2r--z2l{down}..z1l&z1l..{up}z1r&cycle; +penlabels(1,2); +endchar; + +iff known chars.math_parent_right_mid: +bskchar "Extensible right parenthesis---mid"; +beginchar(chars.math_parent_right_mid,10.5u#,0,dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(1.5bourstem,0); pos2(1.5bourstem,0); +rt x1r=rt x2r=w-u; +top y1=h; bot y2=-d; +filldraw z1l--z2l--z2r--z1r--cycle; +penlabels(1,2); +endchar; + +{{ save arrwidth, arrsize; numeric arrwidth, arrsize; + arrwidth=arrsize/1.2=4u; + iff known chars.arrow_double_ext_top: + bskchar "Extensible double vertical arrow--top"; + beginchar(chars.arrow_double_ext_top,10u#,0,dh#); uni "non"; + adjust_fit(0,0); + pickup tiny.nib; + pos1(rule_thickness,180); + x0=x1r=.5w=.5[x2,x3]; x3-x2=4rule_thickness; + top y0=h+apex_o; bot y1=-d; y2=y3=y1; + filldraw dvojsipka(0,1,2,3)..cycle; + labels(1rr); + endchar; + + iff known chars.arrow_double_ext_bot: + bskchar "Extensible double vertical arrow---bot"; + beginchar(chars.arrow_double_ext_bot,10u#,0,dh#); uni "non"; + adjust_fit(0,0); + pickup tiny.nib; + pos1(rule_thickness,0); + x0=x1r=.5w=.5[x2,x3]; x3-x2=4rule_thickness; + top y0=-d-apex_o; bot y1=h; y2=y3=y1; + filldraw dvojsipka(0,1,3,2)..cycle; + labels(1rr); + endchar; + + iff known chars.arrow_ext_top: + bskchar "Extensible vertical arrow---top"; + beginchar(chars.arrow_ext_top,10u#,0,dh#); uni "non"; + adjust_fit(0,0); + pickup tiny.nib; + pos1(rule_thickness,0); + x0=x1=.5w; + top y0=h+apex_o; bot y1=-d; + filldraw sipka_ext(0,1)---z1r..z1l---cycle; + endchar; + + iff known chars.arrow_ext_bot: + bskchar "Extensible vertical arrow---bot"; + beginchar(chars.arrow_ext_bot,10u#,0,dh#); uni "non"; + adjust_fit(0,0); + pickup tiny.nib; + pos1(rule_thickness,0); + x0=x1=.5w; + top y0=-d-apex_o; bot y1=h; + filldraw sipka_ext(0,1)---z1l..z1r---cycle; + endchar; +}}; + +iff known chars.arrow_ext_mid: +bskchar "Extensible vertical arrow---middle"; +beginchar(chars.arrow_ext_mid,10u#,0,dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); +x1=x2=.5w; +top y1=h; bot y2=-d; +filldraw z1r..z1l---z2l..z2r---cycle; +endchar; + +iff known chars.arrow_double_ext_mid: +bskchar "Extensible double vertical arrow---middle"; +beginchar(chars.arrow_double_ext_mid,10u#,0,dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +x1=x2; x3=x4; .5[x1,x3]=.5w; +x3-x2=4rule_thickness; +top y1=top y3=h; bot y2=bot y4=-d; +filldraw z1r..z1l---z2l..z2r---cycle; +filldraw z3r..z3l---z4l..z4r---cycle; +endchar; + +iff known chars.math_vertical_ext: +bskchar "Extensible vertical line"; +beginchar(chars.math_vertical_ext,6u#,0,dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); +x1=x2=.5w; +top y1=h; bot y2=-d; +filldraw z1r..z1l---z2l..z2r---cycle; +endchar; + +iff known chars.math_double_vertical_ext: +bskchar "Extensible double vertical line"; +beginchar(chars.math_double_vertical_ext,10u#,0,dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(rule_thickness,0); pos4(rule_thickness,0); +x1=x2; x3=x4; .5[x1,x3]=.5w; +x3-x2=4rule_thickness; +top y1=top y3=h; bot y2=bot y4=-d; +filldraw z1r..z1l---z2l..z2r---cycle; +filldraw z3r..z3l---z4l..z4r---cycle; +endchar; + +iff known chars.math_slash_big: +bskchar "\big slash"; +beginchar(chars.math_slash_big,10u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +numeric breadth; breadth:=rule_thickness; +top rt z1=(w-u,h); bot lft z2=(u,-d); +pickup tiny.nib; +pos1(breadth,angle(z2-z1)+90); pos2(breadth,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_slash_Big: +bskchar "\Big slash"; +beginchar(chars.math_slash_Big,13u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +numeric breadth; breadth:=1.1rule_thickness; +top rt z1=(w-u,h); bot lft z2=(u,-d); +pickup tiny.nib; +pos1(breadth,angle(z2-z1)+90); pos2(breadth,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_slash_bigg: +bskchar "\bigg slash"; +beginchar(chars.math_slash_bigg,17u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +numeric breadth; breadth:=1.25rule_thickness; +top rt z1=(w-u,h); bot lft z2=(u,-d); +pickup tiny.nib; +pos1(breadth,angle(z2-z1)+90); pos2(breadth,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_slash_Bigg: +bskchar "\Bigg slash"; +beginchar(chars.math_slash_Bigg,21u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +numeric breadth; breadth:=1.5rule_thickness; +top rt z1=(w-u,h); bot lft z2=(u,-d); +pickup tiny.nib; +pos1(breadth,angle(z2-z1)+90); pos2(breadth,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_backslash_big: +bskchar "\big slash"; +beginchar(chars.math_backslash_big,10u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +numeric breadth; breadth:=rule_thickness; +top lft z1=(u,h); bot rt z2=(w-u,-d); +pickup tiny.nib; +pos1(breadth,angle(z2-z1)+90); pos2(breadth,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_backslash_Big: +bskchar "\Big slash"; +beginchar(chars.math_backslash_Big,13u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +numeric breadth; breadth:=1.1rule_thickness; +top lft z1=(u,h); bot rt z2=(w-u,-d); +pickup tiny.nib; +pos1(breadth,angle(z2-z1)+90); pos2(breadth,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_backslash_bigg: +bskchar "\bigg slash"; +beginchar(chars.math_backslash_bigg,17u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +numeric breadth; breadth:=1.25rule_thickness; +top lft z1=(u,h); bot rt z2=(w-u,-d); +pickup tiny.nib; +pos1(breadth,angle(z2-z1)+90); pos2(breadth,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_backslash_Bigg: +bskchar "\Bigg slash"; +beginchar(chars.math_backslash_Bigg,21u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup rule.nib; +numeric breadth; breadth:=1.5rule_thickness; +top lft z1=(u,h); bot rt z2=(w-u,-d); +pickup tiny.nib; +pos1(breadth,angle(z2-z1)+90); pos2(breadth,angle(z2-z1)+90); +filldraw bskrule(2,1,rule_thickness,rule_thickness); +penlabels(1,2); +endchar; + +iff known chars.math_bracket_left_big: +bskchar "\big left bracket"; +beginchar(chars.math_bracket_left_big,5.5u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=hair; +pos1(breadth,90); pos4(breadth,270); +lft x2r=1.75u; x3r=x2r; rt x4r=rt x1r=w-.5u; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +rt z2l=(x2r+.5[stem,breadth],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+breadth*left + ---obl(3l,4l,2l)---obl(2l,3l,1l)---z1l+breadth*left..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_bracket_left_Big: +bskchar "\Big left bracket"; +beginchar(chars.math_bracket_left_Big,6u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.25[hair,stem]; +pos1(breadth,90); pos4(breadth,270); +lft x2r=1.75u; x3r=x2r; rt x4r=rt x1r=w-.5u-.25breadth; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +rt z2l=(x2r+.5[stem,breadth],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+breadth*left + ---obl(3l,4l,2l)---obl(2l,3l,1l)---z1l+breadth*left..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_bracket_left_bigg: +bskchar "\bigg left bracket"; +beginchar(chars.math_bracket_left_bigg,6.5u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.5[hair,stem]; +pos1(breadth,90); pos4(breadth,270); +lft x2r=1.75u; x3r=x2r; rt x4r=rt x1r=w-.5u-.25breadth; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +rt z2l=(x2r+.5[stem,breadth],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+breadth*left + ---obl(3l,4l,2l)---obl(2l,3l,1l)---z1l+breadth*left..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_bracket_left_Bigg: +bskchar "\Bigg left bracket"; +beginchar(chars.math_bracket_left_Bigg,7u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.75[hair,stem]; +pos1(breadth,90); pos4(breadth,270); +lft x2r=1.75u; x3r=x2r; rt x4r=rt x1r=w-.5u-.25breadth; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +rt z2l=(x2r+.5[stem,breadth],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+breadth*left + ---obl(3l,4l,2l)---obl(2l,3l,1l)---z1l+breadth*left..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_bracket_left_top: +bskchar "Extensible left bracket---top"; +beginchar(chars.math_bracket_left_top,7.5u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=stem; +pos1(breadth,90); +lft x2r=1.75u; x3r=x2r; rt x1r=w-.5u-.25breadth; +top y2r=top y1r=h; bot y3r=-d; +rt z2l=(x2r+.5[stem,breadth],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---z3r--z3l---obl(2l,3l,1l)---z1l+breadth*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_bracket_left_bot: +bskchar "Extensible left bracket---bottom"; +beginchar(chars.math_bracket_left_bot,7.5u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=.75[hair,stem]; +pos3(breadth,270); +lft x1r=1.75u; x2r=x1r; rt x3r=w-.5u-.25breadth; +top y1r=h; bot y2r=bot y3r=-d; +rt z1l=(x1r+.5[stem,breadth],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---z1r--z1l---obl(2l,1l,3l)---z3l+breadth*left..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_bracket_left_mid: +bskchar "Extensible left bracket---mid"; +beginchar(chars.math_bracket_left_mid,7.5u#,0,dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rt stem,0); pos2(rt stem,0); +lft x1l=lft x2l=1.75u; +top y1=h; bot y2=-d; +filldraw z1r---z2r..z2l---z1l..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_bracket_right_big: +bskchar "\big right bracket"; +beginchar(chars.math_bracket_right_big,5.5u#,rule_thickness#,2dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth=hair; +pos1(breadth,90); pos4(breadth,270); +rt x2r=w-1.75u; x3r=x2r; lft x4r=lft x1r=.5u; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +lft z2l=(x2r-.5[stem,breadth],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+breadth*right + ---obl(3l,4l,2l)---obl(2l,3l,1l)---z1l+breadth*right..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_bracket_right_Big: +bskchar "\Big right bracket"; +beginchar(chars.math_bracket_right_Big,6u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth=.25[hair,stem]; +pos1(breadth,90); pos4(breadth,270); +rt x2r=w-1.75u; x3r=x2r; lft x4r=lft x1r=.5u+.25breadth; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +lft z2l=(x2r-.5[stem,breadth],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+breadth*right---obl(3l,4l,2l)---obl(2l,3l,1l)---z1l+breadth*right..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_bracket_right_bigg: +bskchar "\bigg right bracket"; +beginchar(chars.math_bracket_right_bigg,6.5u#,rule_thickness#,4dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth=.5[hair,stem]; +pos1(breadth,90); pos4(breadth,270); +rt x2r=w-1.75u; x3r=x2r; lft x4r=lft x1r=.5u+.25breadth; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +lft z2l=(x2r-.5[stem,breadth],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+breadth*right---obl(3l,4l,2l)---obl(2l,3l,1l)---z1l+breadth*right..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_bracket_right_Bigg: +bskchar "\Bigg right bracket"; +beginchar(chars.math_bracket_right_Bigg,7u#,rule_thickness#,5dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth=.75[hair,stem]; +pos1(breadth,90); pos4(breadth,270); +rt x2r=w-1.75u; x3r=x2r; lft x4r=lft x1r=.5u+.25breadth; +top y2r=top y1r=h; bot y3r=bot y4r=-d; +lft z2l=(x2r-.5[stem,breadth],y1l); z3l=(x2l,y4l); +filldraw z1r---obl(2r,1r,3r)---obl(3r,2r,4r)---z4r..z4l+breadth*right---obl(3l,4l,2l)---obl(2l,3l,1l)---z1l+breadth*right..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_bracket_right_top: +bskchar "Extensible right bracket---top"; +beginchar(chars.math_bracket_right_top,7.5u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=stem; +pos1(breadth,90); +rt x2r=w-1.75u; x3r=x2r; lft x1r=.5u+.25breadth; +top y2r=top y1r=h; bot y3r=-d; +lft z2l=(x2r-.5[stem,breadth],y1l); z3l=(x2l,y3r); +filldraw z1r---obl(2r,1r,3r)---z3r--z3l---obl(2l,3l,1l)---z1l+breadth*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_bracket_right_bot: +bskchar "Extensible right bracket---bottom"; +beginchar(chars.math_bracket_right_bot,7.5u#,rule_thickness#,3dh#-rule_thickness#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric breadth; breadth:=stem; +pos3(breadth,270); +rt x1r=w-1.75u; x2r=x1r; lft x3r=.5u; +top y1r=h; bot y2r=bot y3r=-d; +lft z1l=(x1r-.5[stem,breadth],y1r); z2l=(x1l,y3l); +filldraw z3r---obl(2r,3r,1r)---z1r--z1l---obl(2l,1l,3l)---z3l+breadth*right..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_bracket_right_mid: +bskchar "Extensible right bracket---mid"; +beginchar(chars.math_bracket_right_mid,7.5u#,0,dh#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rt stem,0); pos2(rt stem,0); +rt x1r=rt x2r=w-1.75u; +top y1=h; bot y2=-d; +filldraw z1r---z2r..z2l---z1l..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.text_greek_mu: +bskchar "Micro sign (text Greek letter mu)"; +beginchar(chars.text_greek_mu,11u#,x_height#,desc_depth#); uni "0x00B5"; +adjust_fit(serif_fit#,0); +pickup tiny.nib; +numeric tim[]; path p[]; oblu:=2oblu; +pos1(stem,0); pos2(stem,0); pos2'(stem,0); +pos3(stem,0); pos4(hair,90); pos5(stem,70); +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; y2'=bar_height; x2'=x1; +x3l=x2; y3=-d+1.5curve; bot y4l=-d; x4-x3r=y3-y4; y5l=y4; x5-x4=stem; +drop_serif(1,jut); x1b:=.5[x1a,x1l]; +rt x10r=w-2u; y6=y8=bar_height; bot y7l=-o; x7=.5w; +x6=x2; top y9=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); +p0=z1r..{x1l-x1r,-.25serif_drop}z1.a&z1.a{z1b-z1a}..z1.b..z2'l + ---z2l..z3l..{right}z4l..z5l..z5r..z4r{left}..z3r..z2r---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; +z14=bsktouch(subpath(5,infinity) of p0,right,p2,left); +tim0-5=xpart(subpath(5,infinity) of p0 intersectiontimes (z14--(0,y14))); +tim1=xpart(p2 intersectiontimes (z14--(x7,y14))); +z0=bsktouch(p2,right,p3,left); +tim2=xpart(p2 intersectiontimes (z0--(.5w,y0))); +tim3=xpart(p3 intersectiontimes (z0--(w,y0))); +(tim4,tim5-5)=p1 intersectiontimes subpath(5,infinity) of p0; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p2,tim1),rundy(p2,tim2).zpet) of p2 + ..subpath(rundy(p3,tim3),infinity) of p3 + ..subpath(0,rundy(p1,tim4).zpet) of p1 + ..subpath(rundy(p0,tim5),infinity) of p0..cycle; +penlabels(1,2,2',3,4,5,6,7,8,9,10,11,12,13); labels(0,9rr); +endchar; + +iff known chars.math_Re: +bskchar "The real part sign"; +beginchar(chars.math_Re,13.5u#,cap_height#,0); uni "0x211C"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; path p[]; oblu:=2oblu; +pos1(cap_hair,90); pos2(cap_hair,90); pos3(cap_hair,120); +pos4(cap_hair,-90); pos5(cap_hair,-90); +pos7(cap_stem,0); pos8(cap_stem,0); +pos9(cap_hair,90); pos10(cap_hair,180); +pos11(cap_hair,180); pos12(cap_hair,135); pos12'(.5[cap_hair,stem],135); +pos13(cap_hair,-90); pos14(cap_hair,180); +pos15(cap_stem,0); pos16(cap_stem,0); +pos17(cap_hair,90); pos18(hair,150); +y1=y2+o=.5[x_height,bar_height]; +x1=5u; x3l=w-2.25u; y3=y1+stem; +top y4l=h; x4=2/3[x1,x2]; x5=x1-o; z5=z4+whatever*dir(210); +z2=z3+whatever*dir30; +x7r=x8r=x1; y8=y5; y7=.5bar_height; +top y9r=h+o; x9=.5[x8,u]; x11=.5[x10,x9]; z11=whatever[z4,z5]; +lft x10l=u; y10=y8; x12=x11+o; y12=y1; +bot y13r=-o; x13=.5[x12,x9]; lft x14r=u; y14=cap_curve; +x15+o=x16=x2; y15=y2l; y16=.75y7; rt x18l=w-u; y18=.75y7; bot y17l=-o; z17=z18+whatever*dir(45); +lft x12'r=u; z12'l=z12l+whatever*dir(225); z12''=z12'+.2stem*dir(90); +p0=z1l--z2l---z3l..z4l---z5l; +pos6(cap_stem,angle(direction 2.5 of p0)+90); +z6l=point 2.5 of p0; +p1=z7r---z8r..z9r---z10r&z10r..z11r..{dir225}z12r..z12''..z12'r..z12'l..z12l{dir45}..z11l + ..z10l+o*unitvector(z11l-z10l)..z10l+o*unitvector(z9l-z10l)---z9l..z8l---z7l..{left}z13l + --z14l--z14r--z13r{right}..{up}z7r; +p2=z16l{z16-z15}..{right}z17l..{dir70}z18l--z18r{dir-110}..z17r{left}..z16r---(x15r,h); +p3=z5r---z4r..z6r..z3r---z2r--z1r; +(tim0,tim1)=p2 intersectiontimes p0; +(tim2-1,tim3)=subpath(1,infinity) of p0 intersectiontimes p1; +filldraw z7r---obl(1l,7r,15l)---obl(15l,1l,16l) + ---subpath(0,rundy(p2,tim0).zpet) of p2 + ..subpath(rundy(p0,tim1),rundy(p0,tim2).zpet) of p0 + ..subpath(rundy(p1,tim3),infinity) of p1..cycle; +infill subpath(rundy(p3,0),rundy(p3,length p3).zpet) of p3 + ..subpath(rundy(z1r--z5r,0),rundy(z1r--z5r,1).zpet) of (z1r--z5r) + ..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,12',13,14,15,16,17,18); labels(12''); +endchar; + +iff known chars.math_Im: +bskchar "The imaginary part sign"; +beginchar(chars.math_Im,11u#,cap_height#,0); uni "0x2111"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(cap_hair,-30); pos2(cap_hair,240); pos2'(.5[cap_hair,cap_stem],-90); +pos3(cap_curve,0); pos4(cap_stem,-30); pos5(cap_hair,-90); +pos6(cap_curve,50); pos7(cap_hair,90); pos8(cap_hair,90); +pos9(cap_hair,135); pos10(.5[cap_hair,cap_stem],240); +lft x1l=u; .5[x2,x3]=.5w; rt x3r=w-2u; bot y2'r=-o; x2'=.5w; +y1=.25bar_height; y2r=.25bar_height; y3=.35x_height; y4l=bot y5r=x_height; +x4r=.65w; x5l=w-1.5u; top y7r=h+o; +2(x4l-x6)=y7-y6r=if h-x_height<2cap_curve: .45\\fi stem; +z8=z5+sqrt2*cap_curve*dir85; x7=x2+.5stem; lft x9l=1.25u; y9r=y6r; +y10l=.5[y6l,y5l]; x10=.35[x7,x9]; z10'=z10+.2stem*up+.2(stem-currentbreadth)*left; +filldraw z1l{dir60}..z2l..z2'l..z3l..z4l..{dir-20}z5l..z5r{dir160} + ..z4r..{down}z3r..z2'r..z2r..{dir240}z1r..cycle; +filldraw z10r..z9r..z7r..z6r..{dir40}z8r..z8l{dir220}..z6l + ..z7l..z9l..z10'..z10l&z10l..{left}cycle; +penlabels(1,2,2',3,4,5,6,7,8,9,10); labels(10'); +endchar; + +iff known chars.math_aleph: +bskchar "The Hebrew letter aleph"; +beginchar(chars.math_aleph,12u#,asc_height#,0); uni "0x2135"; +adjust_fit(0,0); +pickup tiny.nib; +numeric theta, tim[]; path p[]; oblu:=2.2oblu; +pos1(1.25curve,50); pos2(1.25curve,50); +top y1r=h+apex_o; bot y2l=0; +lft x1l=u; rt x2r=w-u; +theta=angle(z1-z2)-90; +pos3(like_stem,theta); pos4(like_stem,theta); +pos5(curve,50); pos6(curve,50); pos7(like_stem,theta); +pos8(1.25curve,30); pos9(hair,-90); pos10(like_stem,-10); pos11(like_hair,theta-90); +pos12(stem-o,-90); pos13(like_hair,theta-90); pos14(.85like_stem,theta-90); +.5[x3,x4]=x4-x3=.5w; z3=whatever[z1,z2]+stem*down; z4=whatever[z1,z2]+stem*up; +top y5r=h; rt x6r=w-u; z5=z6+whatever*dir(theta+90); bot y6l=x_height; +z7=.5[z5,z6]; +y8=.25bar_height; lft x9l=2u; bot y9r=0; x8l=x3r; lft x12l=u; bot y12r=y9r; +lft x10l=u; z10=whatever[z7l,(.5w,x_height)]; +z11=.5[.5[z7l,z10],z3]; +z12'=z12+.2stem*right+.2(stem-currentbreadth)*dir45; +.75[z11,z13]=.5[z3,z4]; z14=z7; +p0=z1r{left}..z1l..z3l---z4l..{down}z2l..{up}z2r..z4r---z3r..{up}z1r; +p1=z5r{left}..z5l..z7l..{down}z6l..{up}z6r..z7r..{up}z5r; +p2=z11l{z10-z11}..{down}z10l..z8l..{left}z9l..z12'{up}..z12l + ..z12r..{right}z9r..z8r..{up}z10r..{z11-z10}z11r; +p3=reverse (z13l{dir theta}..{dir theta}z14l--z14r{dir (theta+180)}..{dir (theta+180)}z13r); +(tim0,tim1)=p0 intersectiontimes p2; +(tim2,tim3-1)=p0 intersectiontimes subpath(1,infinity) of p2; +(tim4,tim5)=p0 intersectiontimes p3; +(tim6,tim7-1)=p0 intersectiontimes subpath(1,infinity) of p3; +(tim8,tim9)=p3 intersectiontimes p1; +(tim10-2,tim11)=subpath(2,infinity) of p3 intersectiontimes p1; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p2,tim1),rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p0,tim2),rundy(p0,tim4).zpet) of p0 + ..subpath(rundy(p3,tim5),rundy(p3,tim8).zpet) of p3 + ..subpath(rundy(p1,tim9),infinity) of p1 + ..subpath(0,rundy(p1,(tim11,1.5hair)).zpet) of p1 + ..subpath(rundy(p3,(tim10,1.5hair)),rundy(p3,tim7).zpet) of p3 + ..subpath(rundy(p0,tim6),infinity) of p0 + ..cycle; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); +endchar; + +iff known chars.math_beth: +bskchar "The Hebrew letter beth"; +beginchar(chars.math_beth,12u#,asc_height#,0); uni "0x2136"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos1(like_stem,90); pos2(like_stem,90); pos3(hair,0); penpos4(hair,0); +pos5(like_stem,90); penpos6(hair,30); +bot y1l=bot y2l=bot y3=-d; lft x1=u; rt x2=w-u; +x1r:=x1r+curve; x2l:=x2l-.75curve; x3r=x2l-stem; x4l=x3; +y5r=h-.5stem; x5=x1r+.5u; y4=y5l+o; y4r:=y5r+o; z5'=(x6r,y5l); +lft x6l=1.5u; top y6r=h+o; +p0:=z1l{dir80}..z1r...{dir10}z2r; +p1:=z2r..z2l{left}...{dir190}z1l; +p2:=z6r{dir-80}..z5r{right}..{right}z4r+o*left..z4r+o*down{down}..{down}z3r; +p3:=z3l{up}..{up}z4l+oblu*down..z4l+oblu*left{left}..z5l{left}..z5'..{dir90}z6l; +(tim0,tim1)=p0 intersectiontimes p3; +(tim2,tim3)=p0 intersectiontimes p2; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p3,tim1),infinity) of p3 + ..subpath(0,rundy(p2,tim3).zpet) of p2 + ..subpath(rundy(p0,tim2),infinity) of p0..p1..cycle; +penlabels(1,2,3,4,5,6); labels(5'); +endchar; + +iff known chars.math_gimel: +bskchar "The Hebrew letter gimel"; +beginchar(chars.math_gimel,9u#,asc_height#,0); uni "0x2137"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +oblu:=2oblu; +pos0(like_stem,160); pos1(like_stem,90); pos2(like_stem,90); pos3(.5[hair,stem],0); +penpos4(hair,0); pos5(like_stem,90); penpos6(hair,30); +bot y1l=bot y2l=-d; lft x1=u; rt x2=w-u; y3=.5x_height; +x1r:=x1r+curve; x2l:=x2l-.75curve; x3l=x2l-stem; x4l=x3r; +y5r=h-.5stem; x5=x1r+.5u; y4=y5l; y4r:=y5r-o; z5'=(x6r,y5l); +lft x6l=1.5u; top y6r=h+o; y0r=y3; rt x0l=w-u; +p0:=z2l..z3l{up}..{up}z4l+oblu*down..z4l+oblu*left{left}..z5l{left}..z5'..{dir90}z6l + ..z6r{dir-80}..z5r{right}..{right}z4r+o*left..z4r+o*down{down}..{down}z3r + ..{right}z2r{down}..z2l; +p1:=z1l{dir80}..z1r..{up}z0r; +p2:=z0l{down}..{dir190}z1l; +(tim0,tim1)=p0 intersectiontimes p1; +(tim2,tim3)=p0 intersectiontimes p2; +filldraw subpath(rundy(p0,tim0),infinity) of p0 + ..subpath(0,rundy(p0,tim2).zpet) of p0 + ..subpath(rundy(p2,tim3),infinity) of p2 + ..subpath(0,rundy(p1,tim1).zpet) of p1 + ..cycle; +penlabels(0,1,2,3,4,5,6); labels(5'); +endchar; + +iff known chars.math_dalet: +bskchar "The Hebrew letter dalet"; +beginchar(chars.math_dalet,10.5u#,asc_height#,0); uni "0x2138"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(like_stem,0); pos2(.5[hair,stem],0); +penpos3(hair,0); pos4(like_stem,90); penpos5(hair,30); +bot y1l=-d; rt x1r=w-1.5u; y2=.5x_height; +lft x2l=x1l; x3l=x2r; +y4r=h-.5stem; x4=u+curve; y3=y4l; y3'=y4r+o; x3'=x3r+.5u; z4'=(x5r,y4l); +lft x5l=u; top y5r=h+o; +filldraw z1l..z2l{up}..{up}z3l+oblu*down..z3l+oblu*left{left}..z4l{left}..z4'..{dir90}z5l + ..z5r{dir-80}..z4r{right}..{right}z3'+o*left..z3'+o*down{down}..z3r+o*down{down} + ..{down}z2r..{down}z1r..{up}cycle; +penlabels(1,2,3,4,5); labels(3',4'); +endchar; + +iff known chars.sign_dolar: +bskchar "The dollar sign"; +beginchar(chars.sign_dolar,9u#, asc_height#, 0); uni "0x0024"; +adjust_fit(0,0); +pickup tiny.nib; +numeric exc; exc=(w-u)/h; +path p[]; numeric tim[]; +pos2(hair,90); pos3(.9curve,angle((w-u,h))+180); pos4(hair,90); +pos5(stem,180); pos6(stem,180); pos8(hair,0); pos9(hair,0); +y5=.5[y2l,y3]+.5hair; x3-x5=.8(y2l-y3l)*exc; +y6=.5[y4r,y3]-.5hair; rt x6l=w-u; +x2=x3=x4=.5w; top y2r=h-hair; bot y4l=hair; +y3=.5[y2l,y4r]+.5hair; +x8=x9=x3; top y8=h+o; bot y9=-o; +bskpoints(8,9,.5hair,.5hair); +pos1(hair,0); x1r=w-x5r; y1=y5-.5hair; +pos7(hair,0); x7l=w-x6l; y7=y6+.5hair; +p0=z1r{up}..z2r{left}..z5r..z3r..z6r..{left}z4r..{up}z7r; +p1=z7l{dir-80}..z4l{right}..z6l..z3l..z5l..{right}z2l..{down}z1l; +p2=(x8l,y3)--(x8l,y6); p9=p2 shifted (z8r-z8l); +p3=(x9l,y6)--z9l; p10=p3 shifted (z8r-z8l); +p4=z9r--(x9r,y6); +p5=(x9r,y6)--(x9r,y5); p7=p5 shifted (z8l-z8r); +p6=(x8r,y5)--z8r; p8=p6 shifted (z8l-z8r); +tim1=xpart(p0 intersectiontimes ((.5w,y2-.5hair)--(w,y2-.5hair))); +tim2=xpart(p1 intersectiontimes ((.5w,y4+hair)--(0,y4+hair))); +tim3=xpart(p0 intersectiontimes ((x8r,y3)--z8r)); +tim4=xpart(p0 intersectiontimes ((x8l,y3)--z8l)); +(tim5,tim6)=p0 intersectiontimes p2; +(tim7,tim8)=p0 intersectiontimes p3; +tim9=xpart(p1 intersectiontimes p3); +tim10=xpart(p1 intersectiontimes p4); +(tim11,tim12)=p1 intersectiontimes p5; +(tim13,tim14)=p1 intersectiontimes p6; +(tim15,tim16)=p1 intersectiontimes p8; +(tim17,tim18)=p1 intersectiontimes p7; +(tim19,tim20)=p0 intersectiontimes p10; +(tim21,tim22)=p0 intersectiontimes p9; +filldraw z1r--(x1r-.5o,y2-.5hair){dir-100}..subpath(tim1,rundy(p0,tim3).zpet) of p0 + ..{up}z8rr..z8l---(x8l,y8rr) + ..subpath(rundy(p0,tim4),rundy(p0,tim5).zpet) of p0 + ..subpath(rundy(p2,(tim6,curve)), infinity) of p2 + --subpath(0,rundy(p3,(tim8,if bold_face:.5\\fi curve)).zpet) of p3 + ..subpath(rundy(p0,(tim7,curve)),infinity) of p0 + ..z7l--(x7l+o,y4+hair){dir80} + ..subpath(tim2, rundy(p1,tim9).zpet) of p1 + ..{down}z9ll..z9r---(x9r,y9ll) + ..subpath(rundy(p1,tim10),rundy(p1,tim11).zpet) of p1 + ..subpath(rundy(p5,(tim12,curve)),infinity) of p5 + ..subpath(0,rundy(p6,(tim14,if bold_face:.5\\fi curve)).zpet) of p6 + ..subpath(rundy(p1,(tim13,curve)),infinity) of p1..cycle; +oblu:=2.5f_obl; +infill subpath(rundy(p1,tim15).zpet,rundy(p1,tim17)) of p1.. + subpath(rundy(p7,tim18),infinity) of p7 + --subpath(0,rundy(p8,tim16).zpet) of p8..cycle; +if bold_face: oblu:=f_obl; fi +infill subpath(rundy(p0,tim19).zpet,rundy(p0,tim21)) of p0.. + subpath(rundy(p9,tim20),infinity) of p9 + --subpath(0,rundy(p10,tim22)) of p10..cycle; +penlabels(0,1,2,3,4,5,6,7,8,9); labels(8rr,9ll); +endchar; + +iff known chars.sign_dolar_old: +bskchar "The old-style dollar sign"; +beginchar(chars.sign_dolar_old,11u#, asc_height#, 0); uni "non"; %"0x0024.alt"; +adjust_fit(0,0); +pickup tiny.nib; +numeric exc; exc=(w-u)/h; +path p[]; numeric tim[]; +pos2(hair,90); pos3(.9curve,angle((w-u,h))+180); pos4(hair,90); +pos5(stem,180); pos6(stem,180); +pos8(hair,0); pos9(hair,0); pos10(hair,0); pos11(hair,0); +y5=.5[y2l,y3]+.5hair; x3-x5=.8(y2l-y3l)*exc; +y6=.5[y4r,y3]-.5hair; rt x6l=w-u; +x2=x3=x4=.5w; top y2r=h-hair; bot y4l=hair; +y3=.5[y2l,y4r]+.5hair; +x8=x9; x10=x11; .5[x8,x10]=x3; x8-x10=2u; top y8=top y10=h+o; bot y9=bot y11=-o; +bskpoints(8,9,.5hair,.5hair); bskpoints(10,11,.5hair,.5hair); +pos1(hair,0); x1r=w-x5r; y1=y5-.5hair; +pos7(hair,0); x7l=w-x6l; y7=y6+.5hair; +p0=z1r{up}..z2r{left}..z5r..z3r..z6r..{left}z4r..{up}z7r; +p1=z7l{dir-80}..z4l{right}..z6l..z3l..z5l..{right}z2l..{down}z1l; +p2=(x8l,y3)--(x8l,y6); p9=p2 shifted (z8r-z8l); +p3=(x9l,y6)--z9l; p10=p3 shifted (z8r-z8l); +p4=z9r--(x9r,y6); +p5=(x9r,y6)--(x9r,y5); p7=p5 shifted (z8l-z8r); +p6=(x8r,y5)--z8r; p8=p6 shifted (z8l-z8r); +p12=(x10l,y3)--(x10l,y6); p14=p2 shifted (z10r-z10l); +p13=(x11l,y6)--z11l; p15=p13 shifted (z10r-z10l); +p16=(x11r,y6)--(x11r,y5); p18=p16 shifted (z10l-z10r); +p17=(x10r,y5)--z10r; p19=p17 shifted (z10l-z10r); +tim1=xpart(p0 intersectiontimes ((.5w,y2-.5hair)--(w,y2-.5hair))); +tim2=xpart(p1 intersectiontimes ((.5w,y4+hair)--(0,y4+hair))); +tim3=xpart(p0 intersectiontimes ((x8r,y3)--z8r)); +tim4=xpart(p0 intersectiontimes ((x8l,y3)--z8l)); +(tim5,tim6)=p0 intersectiontimes p2; +(tim7,tim8)=p0 intersectiontimes p3; +tim9=xpart(p1 intersectiontimes p3); +tim10=xpart(p1 intersectiontimes p4); +(tim11,tim12)=p1 intersectiontimes p5; +(tim13,tim14)=p1 intersectiontimes p6; +(tim15,tim16)=p1 intersectiontimes p8; +(tim17,tim18)=p1 intersectiontimes p7; +(tim19,tim20)=p0 intersectiontimes p10; +(tim21,tim22)=p0 intersectiontimes p9; +tim23=xpart(p0 intersectiontimes ((x10r,y3)--z10r)); +tim24=xpart(p0 intersectiontimes ((x10l,y3)--z10l)); +(tim25,tim26)=p0 intersectiontimes p12; +(tim27,tim28)=p0 intersectiontimes p13; +tim29=xpart(p1 intersectiontimes ((x11l,y3)--z11l)); +tim30=xpart(p1 intersectiontimes p15); +(tim31,tim32)=p1 intersectiontimes p19; +(tim33,tim34)=p1 intersectiontimes p18; +(tim35,tim36)=p1 intersectiontimes p17; +(tim37,tim38)=p1 intersectiontimes p16; +(tim39,tim40)=p0 intersectiontimes p15; +(tim41,tim42)=p0 intersectiontimes p16; +filldraw z1r--(x1r-.5o,y2-.5hair){dir-100}..subpath(tim1,rundy(p0,tim3).zpet) of p0 + ..{up}z8rr..z8l---(x8l,y8rr) + ..subpath(rundy(p0,tim4),rundy(p0,tim23).zpet) of p0 + ..{up}z10rr..z10l---(x10l,y10rr) + ..subpath(rundy(p0,tim24),rundy(p0,tim25).zpet) of p0 + ..subpath(rundy(p12,(tim26,curve)), infinity) of p12 + --subpath(0,rundy(p13,(tim28,if bold_face:.5\\fi curve)).zpet) of p13 + ..subpath(rundy(p0,(tim27,curve)),infinity) of p0 + ..z7l--(x7l+o,y4+hair){dir80} + ..subpath(tim2,rundy(p1,tim29).zpet) of p1 + ..{down}z11ll..z11r---(x11r,y11ll) + ..subpath(rundy(p1,tim30),rundy(p1,tim9).zpet) of p1 + ..{down}z9ll..z9r---(x9r,y9ll) + ..subpath(rundy(p1,tim10),rundy(p1,tim11).zpet) of p1 + ..subpath(rundy(p5,(tim12,curve)),infinity) of p5 + ..subpath(0,rundy(p6,(tim14,if bold_face:.5\\fi curve)).zpet) of p6 + ..subpath(rundy(p1,(tim13,curve)),infinity) of p1..cycle; +oblu:=2.5f_obl; +infill subpath(rundy(p1,tim31).zpet,rundy(p1,tim33)) of p1 + ..subpath(rundy(p18,tim34),infinity) of p18 + --subpath(0,rundy(p19,tim32).zpet) of p19..cycle; +infill subpath(rundy(p7,tim18),infinity) of p7 + --subpath(0,rundy(p8,tim16).zpet) of p8 + .. .5[point tim15 of p1,point tim35 of p1] + ..(reverse subpath(0,rundy(p17,tim36).zpet) of p17) + ..(reverse subpath(rundy(p16,tim38),infinity) of p16) + .. .5[point tim37 of p1,point tim17 of p1] + ..cycle; +if bold_face: oblu:=f_obl; fi +infill subpath(rundy(p0,tim19).zpet,rundy(p0,tim21)) of p0.. + subpath(rundy(p9,tim20),infinity) of p9 + --subpath(0,rundy(p10,tim22)) of p10..cycle; +infill subpath(rundy(p2,tim6),infinity) of p2 + --subpath(0,rundy(p3,tim8).zpet) of p3 + .. .5[point tim7 of p0,point tim39 of p0] + ..(reverse subpath(0,rundy(p15,tim40).zpet) of p15) + ..(subpath(0,rundy(p16,tim42).zpet) of p16) + .. .5[point tim5 of p0,point tim41 of p0] + ..cycle; +penlabels(0,1,2,3,4,5,6,7,8,9,10,11); labels(8rr,9ll); +endchar; + +iff known chars.sign_pound: +bskchar "Pound sign"; +beginchar(chars.sign_pound,11.5u#,asc_height#,0); uni "0x00A3"; +italcorr asc_height#*slant-u#; +adjust_fit(serif_fit#,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(cap_stem,0); pos2(cap_stem,0); pos3(cap_hair,-90); +pos4(cap_hair,-90); pos5(stem,30); +pos6(bar,90); pos7(bar,90); pos8(bar,90); pos9(bar,90); +x1=x2=3u; y2=.5bar_height; .5[y1,y2]=.5h; +bot y4r=0; x4=.5u; x5r=w-1.5u; +top y3l=h+o; y5r=y3-1.5like_stem; x3=.5[x1,x5]; +z5'=z5+.25stem*unitvector(z5-z3); +y6=y7=y8=y9=2/3[bar_height,x_height]; +x1-x6=.5(x9-x1); x7=x1l; x8=x1r; lft x6=if monospace: 0 else: .5u fi; +bot y10r=0; rt x10r=w-u; z11r=(x2r,y4r); +bskpoints(6,9,bar,bar); +{{ save beak; numeric beak; beak=.5bar_height; + filldraw arm_bot_r_points(11r,10)..z2r---obl(8l,2r,9l) + ---z9ll..z9r---obl(8r,9r,1r)---z1r ..{right}z3r + ..z5l..z5'..z5r{up}..z3l{left}..z1l + ---tobl(7r,1l,6rr)---z6rr..z6l---obl(7l,6l,2l) + ---z2l..{left}z4l..z4r---cycle; +}}; +penlabels(1,2,3,4,5,6,7,8,9); labels(5',6rr,9ll); +endchar; + +iff known chars.sign_lira: +bskchar "Lira sign"; +beginchar(chars.sign_lira,11.5u#,asc_height#,0); uni "0x20A4"; +adjust_fit(serif_fit#,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(cap_stem,0); pos2(cap_stem,0); pos3(cap_hair,-90); +pos4(cap_hair,-90); pos5(stem,30); +pos6(bar,90); pos7(bar,90); pos8(bar,90); pos9(bar,90); +pos12(bar,90); pos13(bar,90); pos14(bar,90); pos15(bar,90); +x1=x2=3u; y2=.5bar_height; .5[y1,y2]=.5h; +bot y4r=0; x4=.5u; x5r=w-1.5u; +top y3l=h+o; y5r=y3-1.5like_stem; x3=.5[x1,x5]; +z5'=z5+.25stem*unitvector(z5-z3); +y6=y7=y8=y9; y12=y13=y14=y15; y6l-y12r=max(4hair,.3x_height); top y9r=x_height; +x1-x6=.5(x9-x1); x7=x13=x1l; x8=x14=x1r; lft x6=lft x12=if monospace: 0 else: .5u fi; x15=x9; +bot y10r=0; rt x10r=w-u; z11r=(x2r,y4r); +bskpoints(6,9,bar,bar); bskpoints(12,15,bar,bar); +{{ save beak; numeric beak; beak=.5bar_height; + filldraw arm_bot_r_points(11r,10)..z2r---obl(14l,2r,15l)---z15ll..z15r---obl(14r,15r,8l)---obl(8l,2r,9l) + ---z9ll..z9r---obl(8r,9r,1r)---z1r ..{right}z3r + ..z5l..z5'..z5r{up}..z3l{left}..z1l + ---obl(7r,1l,6r)---z6rr..z6l---obl(7l,6l,2l) + ---obl(13r,7l,12r)---z12r..z12l---obl(13l,12l,2l) + ---z2l..{left}z4l..z4r---cycle; +}}; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); labels(5',6rr,12rr,9ll,15ll); +endchar; + +iff known chars.sign_compound_word: +bskchar "Compound word mark"; +beginchar(chars.sign_compound_word,0,x_height#,0); uni "non"; +charwd:=0; +endchar; + +iff known chars.sign_compound_word_capital: +bskchar "Capital compound word mark"; +beginchar(chars.sign_compound_word_capital,0,cap_height#,0); uni "non"; +charwd:=0; +endchar; + +iff known chars.sign_compound_word_asc: +bskchar "Ascender height compound word mark"; +beginchar(chars.sign_compound_word_asc,0,asc_height#,0); uni "non"; +charwd:=0; +endchar; + +iff known chars.sign_degree: +bskchar "Degree sign"; +beginchar(chars.sign_degree,6u#,asc_height#,0); uni "0x00B0"; +adjust_fit(0,0); +pickup tiny.nib; +pos1a(hair,0); pos1b(hair,90); +pos1c(hair,180); pos1d(hair,270); +z0=(.5w,h-2u)=.5[z1a,z1c]=.5[z1b,z1d]; +x1b=x1d; y1a=y1c; y1d-y1b=(x1c-x1a); x1a.l=x1; lft x1=u; +filldraw z1a.l{down}..z1b.l..z1c.l..z1d.l..cycle; +infill z1a.r{down}..z1b.r..z1c.r..z1d.r..cycle; +penlabels(1a,1b,1c,1d); labels(0); +endchar; + +iff known chars.sign_space: +bskchar "Space"; +beginchar(chars.sign_space,5u#,x_height#,0); uni "0x0020"; +endchar; + +iff known chars.sign_space_nb: +bskchar "Non-breaking space"; +beginchar(chars.sign_space_nb,5u#,x_height#,0); uni "0x00A0"; +endchar; + +iff known chars.sign_reference: +bskchar "Reference mark sign"; +beginchar(chars.sign_reference,13u#,cap_height#,0); uni "0x203B"; +adjust_fit(0,0); +pickup tiny.nib; +oblu:=2oblu; +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +z0=.5[z1,z2]; +bskpoints(1,2,hair,hair); bskpoints(4,3,.5hair,.5hair); +z5=whatever[z4l,z3l]=whatever[z1l,z2l]; +z6=whatever[z4r,z3r]=whatever[z1l,z2l]; +z7=whatever[z4r,z3r]=whatever[z1r,z2r]; +z8=whatever[z4l,z3l]=whatever[z1r,z2r]; +for i=0 upto 3: z[10+i]=z0+(.25w,0) rotated (i*90); endfor; +filldraw z1l---obl(5,1l,4l)---z4l..z4rr---obl(6,4r,2l)---z2ll..z2r--- + obl(7,2r,3r)---z3r..z3ll---obl(8,3l,1r)---z1rr..cycle; +dot(10); dot(11); dot(12); dot(13); +penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +charscription(14u,cap_height,0)( +path p[]; +pos1(cap_curve,0); pos2(cap_hair,90); pos3(cap_curve,180); pos4(cap_hair,270); +pos5(cap_hair,0); pos6(cap_hair,180); +pos5'(cap_hair,0); pos6'(cap_hair,180); +lft x1l=u; 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=.4(x3r-x1r); +z5'-z5=z6'-z6=o*down; +x7r=x6r; x7l=x5r; bot y7l=bot y7r=0; +bot y8r=bot y9r=0; rt x8l=w-u; lft x9l=u; +{{ numeric oldbeak; oldbeak:=beak; save beak; numeric beak; beak:=.65oldbeak; +p0=arm_bot_r_points(7r,8).alt; z10=(x6l,y8d); +p1=arm_bot_l_points(7l,9).alt; z11=(x5l,y9d); +}}; +p2:=z5'l..z1l..z4l..z3l..z6'l; +filldraw subpath(rundy(p2,0),rundy(p2,infinity).zpet) of p2 + ..{down}z10+oblu*up--obl(10,6l,8d)---z8d...z8c..z8l.o + &z8l.o{up}..z8l---z8r--z8b...z8a---z7r--z6r..z3r..z4r + ..z1r..z5r--z7l---z9a...z9b--z9r---z9l..{down}z9l.o + &z9l.o..z9c...z9d---obl(11,9d,5l)--z11+oblu*up{up} + ..cycle; +penlabels(1,2,3,4,5,5',6,6',7,10,11); +); + +iff known chars.sign_Ohm: +bskchar "Ohm sign (modified greek letter Omega)"; +beginchar(chars.sign_Ohm,14u#,cap_height#,0); uni "0x2126"; +adjust_fit(0,0); +pickup tiny.nib; +usechar; +endchar; + +iff known chars.sign_Mho: +bskchar "Mho sign (rotated Ohm sign)"; +beginchar(chars.sign_Mho,14u#,cap_height#,0); uni "0x2127"; +adjust_fit(0,0); +pickup tiny.nib; +usechar rotatedaround((.5[x1,x3],.5h),180); +endchar; + +iff known chars.sign_info: +bskchar "Info sign"; +beginchar(chars.sign_info,8u#,asc_height#,0); uni "0x2139"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(3u,0); pos2(3u,0); +x1=x2=rt x3=.5w; bot y1=0; y2=x_height; +top y3+1.5u=h; +serif_bot(1); drop_serif(2)(1.5u).alt; +filldraw z2r..{(x1a-x1r,-.25serif_drop)}z2a&z2a + ---obl(2b,2a,1a)---z1a..z1b{left}..{right}z1c + ..z1+ser_boule*up.. z1d{right}..{left}z1e..{up}z1f--cycle; +filldraw fullcircle scaled 3u shifted z3; +penlabels(1,2,3); +endchar; + +iff known chars.sign_currency: +bskchar "Currency sign"; +beginchar(chars.sign_currency,10u#,x_height#,0); uni "0x00A4"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; +.5[x2,x6]=.5w; x2-x6=y8-y4; y2=y0=.5h; top y8=h; x0=x8; +circle_points(hair); +p0:=draw_circle.l; +forsuffixes i=1,3,5,7: + z[i+10]=z.i; pos[i+10](hair,angle(z[i]-z0)+90); + z[i+11]=z.i+3hair*unitvector(z[i]-z0); pos[i+11](hair,angle(z[i]-z0)+90); + p[i]=z[i+10].r--z[i+11].r; + p[i+1]=z[i+11].l--z[i+10].l; +endfor; +filldraw forsuffixes i=1,3,5,7: + subpath(i-1,rundy(p0,i).zpet) of p0..subpath(rundy(p[i],0),infinity) of p[i] + ..subpath(0,rundy(p[i+1],1).zpet) of p[i+1] .. subpath(rundy(p0,i),i+1) of p0.. + endfor + cycle; +infill draw_circle.r; +penlabels(0,11,12,13,14,15,16,17,18); +endchar; + +iff known chars.sign_diameter: +bskchar "Diameter sign"; +beginchar(chars.sign_diameter,14u#,asc_height#,0); uni "0x2300"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[]; oblu:=2oblu; +pos1(hair,0); pos2(hair,90); pos3(hair,180); pos4(hair,270); +lft x1l=u; rt x3l=w-u; y1=y3=.5y4; .5[x2,x4]=.5[x1,x3]; x2-x4=0; y4-y2=x3-x1; .5[y4,y2]=.5h; +top z5=(x1,-apex_o); bot z6=(x3,h+o); +pos5(hair,angle(z5-z6)+90); pos6(hair,angle(z5-z6)+90); +z0r=.5[z5r,z6r]; z0l=.5[z5l,z6l]; +p0:=z1l{down}..z2l..z3l..z4l..{down}z1l; +p1:=z1r{up}..z4r..z3r..z2r..{up}z1r; +p2:=z5r--z0r--z6r; +p3:=z6l--z0l--z5l; +(tim0,tim1-.5)=p0 intersectiontimes subpath(.5,infinity) of p2; +(tim2,tim3)=(subpath (0,1) of p3) intersectiontimes p0; +(tim4-1,tim5)=(subpath (1,infinity) of p3) intersectiontimes p0; +(tim6,tim7)=p2 intersectiontimes p0; +filldraw subpath (rundy(p0,tim7),rundy(p0,tim0).zpet) of p0..subpath(rundy(p2,tim1),infinity) of p2{z6-z5} + ..subpath(0,rundy(p3,tim2).zpet) of p3..subpath(rundy(p0,tim3),infinity) of p0 + ..subpath(0,rundy(p0,tim5).zpet) of p0..subpath(rundy(p3,tim4),infinity) of p3 + ..subpath(0,rundy(p2,tim6).zpet) of p2..cycle; +numeric tim[]; +(tim1,tim2)=p1 intersectiontimes p2; +(tim3,tim4)=p1 intersectiontimes subpath(0,1) of p2; +infill subpath(rundy(p2,tim4),rundy(p2,tim2).zpet) of p2 + ..subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1..cycle; +(tim5,tim6)=p1 intersectiontimes p3; +(tim7,tim8-1)=p1 intersectiontimes subpath(1,infinity) of p3; +infill subpath(rundy(p3,tim6),rundy(p3,tim8).zpet) of p3..subpath(rundy(p1,tim7),infinity) of p1 + ..subpath(0,rundy(p1,tim5).zpet) of p1..cycle; +penlabels(1,2,3,4,5,6); +endchar; + +iff known chars.sign_slash_asterisk: +bskchar "Slash and asterisk"; +beginchar(chars.sign_slash_asterisk,10u#,body_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size, ast, vast; +path p; +ast=3/4stem; vast=.55stem; +pos1(ast,0); x1=x0=w-3.25u; +size=1/4h; if (size+.5ast)*cosd(30) > (lft w)-u-x0: + size:= (lft w-u-x0)/cosd(30)-.5ast; fi; +y1=y0+size; y0=size; +top rt z2=(w-2u,h); bot lft z3=(u,-d); +pos2(rule_thickness,angle(z3-z2)+90); pos3(rule_thickness,angle(z3-z2)+90); +p:=z0---z1r{dir120}..z1l---z0; +p:=subpath (xpart(p intersectiontimes ((x0,y0+vast)--(w,y0+vast))), + xpart(p intersectiontimes ((x0,y0+vast)--(0,y0+vast)))) of p; +filldraw for i=0, 60, 120, 180, 240, 300: p rotatedaround(z0,i).. endfor cycle; +filldraw bskrule(3,2,rule_thickness,rule_thickness); +labels(0); penlabels(1,2,3); +endchar; + +iff known chars.sign_divorce: +bskchar "Divorce symbol"; +beginchar(chars.sign_divorce,15u#,x_height#,0); uni "0x26AE"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size; size=min(5u,h); +pos3(stem,0); pos4(2/3stem,0); pos5(stem,0); +y1=y2=.5h; x1=u+.5size; x1=w-x2; +x3=x4=x5; z4=.5[z1,z2]; y3=h; y5=-d; +filldraw z3r..z4r..z5r--z5l..z4l..z3l--cycle; +filldraw fullcircle scaled (size) shifted z1; +infill fullcircle scaled (size-hair+currentbreadth) shifted z1; +filldraw fullcircle scaled (size) shifted z2; +infill fullcircle scaled (size-hair+currentbreadth) shifted z2; +labels(1,2); penlabels(3,4,5); +endchar; + +iff known chars.sign_marriage: +bskchar "Marriage symbol"; +beginchar(chars.sign_marriage,10u#,x_height#,0); uni "0x26AD"; +adjust_fit(0,0); +pickup tiny.nib; +numeric size, tim[]; size=min(5u,h); +path p[]; +pos1(hair,0); pos11(hair,0); +x0=u+.5size; x10=w-x0; y0=y10=.5h=y1=y11; x11-x10=x1-x0=.5size; +forsuffixes i=2,3,4,5,6,7,8: + z[i]=z0+(z1-z0) rotated (45*(i-1)); pos[i](hair,45*(i-1)); endfor +forsuffixes i=12,13,14,15,16,17,18: + z[i]=z10+(z11-z10) rotated (45*(i-11)); pos[i](hair,45*(i-11)); endfor +p1=z1r{up}..z2r..z3r{left}..z4r..z5r{down}..z6r..z7r{right}..z8r..{up}z1r; +p2=z15r{down}..z16r..z17r{right}..z18r..{up}z11r..z12r..{left}z13r..z14r..{down}z15r; +p3=z1l{up}..z2l..z3l{left}..z4l..z5l{down}..z6l..z7l{right}..z8l..{up}z1l; +p4=z15l{down}..z16l..z17l{right}..z18l..{up}z11l..z12l..{left}z13l..z14l..{down}z15l; +(tim1,tim2)=p1 intersectiontimes p2; +(tim3-2,tim4)=subpath(2,infinity) of p1 intersectiontimes p2; +(tim5,tim6)=p3 intersectiontimes p2; +(tim7-2,tim8)=subpath(2,infinity) of p3 intersectiontimes p2; +(tim9,tim10)=p4 intersectiontimes p1; +(tim11-2,tim12)=subpath(2,infinity) of p4 intersectiontimes p1; +(tim13,tim14)=p3 intersectiontimes p4; +(tim15-2,tim16)=subpath(2,infinity) of p3 intersectiontimes p4; +filldraw subpath(rundy(p1,tim1),rundy(p1,tim3).zpet) of p1 + ..subpath(rundy(p2,tim4),rundy(p2,tim2).zpet) of p2..cycle; +infill subpath(0,rundy(p2,tim8).zpet) of p2 + ..reverse subpath (rundy(p3,tim5),rundy(p3,tim7).zpet) of p3 + ..subpath(rundy(p2,tim6),infinity) of p2..cycle; +infill subpath(0,rundy(p1,tim12).zpet) of p1 + ..reverse subpath(rundy(p4,tim9),rundy(p4,tim11).zpet) of p4 + ..subpath(rundy(p1,tim10),infinity) of p1..cycle; +infill subpath(0,rundy(p3,tim13).zpet) of p3 + ..subpath(rundy(p4,tim14),infinity) of p4 + ..subpath(0,rundy(p4,tim16).zpet) of p4 + ..subpath(rundy(p3,tim15),infinity) of p3..cycle; +penlabels(0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18); +endchar; + +iff known chars.sign_estimated: +bskchar "Estimated sign"; +beginchar(chars.sign_estimated,13u#,cap_height#,0); uni "0x212E"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], shift, est_height; +oblu:=2.5f_obl; est_height:=.5[bar_height,x_height]; +penpos1(cap_curve,0); pos2(hair,90); pos3(hair,270); penpos4(cap_curve,180); +lft x1l=u; y1=y4=.5h; x2=x3=.5w+hair; bot y2l=-o; top y3l=h+o; +rt x0=w-u; y0=.2h; z0'=z0+hair*dir220; x4=w-x1; +p0=z0---z0'+o*down..{left}z2l..z1l..{right}z3l..{down}z4l; +p1=z4r{up}..z3r{left}..z1r..{right}z2r..z0'; +tim1=xpart(p0 intersectiontimes ((.5w,est_height)--(w,est_height))); +tim2=xpart(p1 intersectiontimes ((.5w,est_height)--(w,est_height))); +shift:=lft xpart(point tim1 of p0)- w+u; +x4l:=x4l-shift; x4r:=x4r-shift; +p0:=z0---z0'+o*down..{left}z2l..z1l..{right}z3l..{down}z4l; +p1:=z4r{up}..z3r{left}..z1r..{right}z2r..z0'if testdpi:+up fi; +tim3=xpart(p0 intersectiontimes ((w,est_height)--(x3,est_height))); +tim4=xpart(p1 intersectiontimes ((0,est_height)--(x3,est_height))); +tim5=xpart(p1 intersectiontimes ((0,est_height)--(x3,est_height))); +tim6=xpart(p1 intersectiontimes ((w,est_height+bar-tiny)--(x3,est_height+bar-tiny))); +tim7=xpart(p1 intersectiontimes ((0,est_height+bar-tiny)--(x3,est_height+bar-tiny))); +p2=point tim3 of p0 -- point tim4 of p1; +p3=point tim7 of p1 -- point tim6 of p1; +filldraw subpath(0,rundy(p0,(tim3,hair)).zpet) of p0--(subpath(0,rundy(p2,1).zpet) of p2).. + subpath(rundy(p1,(tim5,if bold_face: 1.5f_obl else: oblu fi)),infinity) of p1 + {z0-z0'-o*down}..cycle; +oblu:=1.5f_obl; +infill subpath (rundy(p1,tim6),rundy(p1,tim7).zpet) of p1..subpath(rundy(p3,0),rundy(p3,1).zpet) + of p3..cycle; +penlabels(1,2,3,4); labels(0,0'); +endchar; + +iff known chars.special_two: +bskchar "Special two"; +beginchar(chars.special_two,12u#,cap_height#,.5desc_depth#); uni "non"; +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,135); pos6(cap_hair,180); +pos5'(cap_hair,135); pos6'(cap_hair,180); +lft x1l=u-o; rt x3l=w-u+o; y1=y3=x_height; +.5[x2,x4]=.5[x1,x3]; x2-x4=.5u; bot y2l=-o; top y4l=h+o; +x5=x2; y6=.35bar_height; y5=.75x_height; x6=.25[x4,x1r]; +z6'-z6=o*down; z5'-z5=o*dir45; +pos7(whatever,0); +z7=(x2,0); x7r=x6l; +bot y8r=0; rt x8l=w-u; +{{ numeric oldbeak; oldbeak:=beak; save beak; numeric beak; beak:=.65oldbeak; +p0=arm_bot_r_points(7r,8); y8f:=.5[y8f,y8d]; +}}; +filldraw z5'l---z5l..z1l{up}..z4l..z3l..{z6-z3}z6'l.. + ((z8f...z8d...z8c..z8l.o&z8l.o{up}..z8l---z8r--z8b..z8a---z7r) + rotatedaround(z7r,30) shifted ((x8r-x7r)*(1-cosd30),-d)) + ..z6r{z3-z6}..z3r..z4r..z1r{down}..z5r---z5'r--cycle; +penlabels(1,2,3,4,5,5',6,6',7); +endchar; + +iff known chars.special_sum: +bskchar "Special summation"; +beginchar(chars.special_sum,13u#,cap_height#,0); uni "non"; +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); +bot y1=0; top y2=h; +lft x1l=lft x2l-o=2u; +cap_serifs_bl(1l); cap_serifs_tl(2l); cap_serifs_br(1r); cap_serifs_tr(2r); +bot y3r=0; top y4r=h; rt x3r=w-u; x4r=w-2.5u; +x5r=.5w; y5=.5[x_height,bar_height]; +alpha=diag_ratio(2,cap_stem,y2-y5,x5r-x2r); +pos5(alpha*cap_stem,0); pos7(alpha*cap_stem,180); y5=y7; +alpha:=diag_ratio(2,cap_hair,y5-y1,x5r-x1r); +pos6(alpha*cap_hair,0); z5r=z6r; pos8(alpha*cap_hair,180); y8=y6; +p1:=arm_bot_r_points(1r,3).alt; +p2:=arm_top_r_points(2r,4); +y1'=y1l.b; z1'=z6l+whatever*(z3.f-z6r); +z5'=whatever[z2l.b,z5l]=whatever[z6l,z1']; +.5[x7,x5]=.5[x8,x6]=x2; +z7'=whatever[z2r.b,z8l]=whatever[z7l,z1']; +z2'=whatever[z2l.b,z5']=whatever[z7',z2r]; +filldraw subpath(0, length(p1)-1) of p1..z3f---obl(5r,3f,2r.b)--- + z2r.b..(reverse subpath(0,length(p2)-1) of p2)---z2l.a.. + {right}z2l.c..obl(2l.b,2l.c,7r)---obl(7r,2l.b,1l.b)--z1l.b + ..{left}z1l.c..z1l.a---cycle; +infill obl(5',2l.b,1')---obl(1',5',7')---obl(7',1',2r.b)---obl(2',7',5')---cycle; +pos9(cap_hair,0); pos10(cap_hair,0); +y9=.5[y5,y2']; y10=.5[y5,y1']; +z9=z2'+whatever*down; z10=z1'+whatever*up; +filldraw bskrule(9,10,.5hair,.5hair); ; +penlabels(1,2,5,6,7,8); labels(1',1'',2',5',7'); +endchar; + +iff known chars.special_alpha: +bskchar "Special alpha"; +beginchar(chars.special_alpha,11u#,x_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; path p[]; oblu:=2oblu; +pos0(hair,-90); pos1(stem,0); pos2(stem,0); +pos3(hair,-90); pos4(curve,180); pos5(hair,90); +pos6(hair,0); pos7(hair,90); pos8(stem,180); +top y0l=h; x0=w-u; +rt x1r=w-1.5u; x2=x1-stem; top y1=h-u; y2=.5bar_height; +x3=.5x2; x5=.55x1; bot y3r=-o; top y5r=h+o; +lft x4r=u; y4=y6=bar_height; x6=.25[x2,x5]; +x7=w-1.75u; bot y7l=-o; lft x8l=w-.5u; 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''..{up}z8r; +p1=z8r{up}..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-5,tim5-6)=subpath(5,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,y6-y2)).zpet) of p0 + ..subpath(rundy(p1,(tim5,y6-y2)),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.special_infinity: +bskchar "Special infinity sign"; +beginchar(chars.special_infinity,16u#,x_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric testem, tlstem, tim[]; oblu:=2oblu; +testem=.5[curve, hair]; tlstem=.75[curve,stem]; +pos1(testem,90); pos2(tlstem,270); pos3(tlstem,270); pos4(testem,90); +pos5(vair,180); pos6(vair,180); +lft x6r=u; rt x5l=w-u; +bot y3r=bot y1l=-o; top y4r=top y2l=h+o; +x3=x4=.27(w-2u)+u; x1=x2=.76(w-2u)+u; +y5=y6=.5h; z0=(.5w,.5h); +pos7(hair,180); pos8(stem,180); z7=(.35[x4,x6],.9bar_height); y8=y3r; x8=x7; +pos9(.5[hair,stem],180); y9=.75[x_height,bar_height]; x9r=x6l; +pos10(hair,-90); z10=z9+stem*unitvector(dir-45); +p0:=z6{down}..z3..z0..z2..{up}z5; pos0(curve,angle(direction 2 of p0)-90); +p1=z6r{down}..z3r..z0r..z2r..z5r{down}; +p2=z10l..z9l{up}..z4l{right}..z0{dir-70}..{right}z1l; +p3=z5l{up}..z2l..z0l..z3l..{up}z6l; +p4=z1r{left}..z0{dir110}..{left}z4r..{down}z9r..z10r; +p5=z6l{down}..z3l..z0l..z2l..z5l{down}; + +z11=bsktouch(p1,right,p2,left); +tim1=xpart(p1 intersectiontimes (z11--(x3,y11))); +tim2=xpart(p2 intersectiontimes (z11--(x1,y11))); +z12=bsktouch(p3,left,p4,right); +tim3=xpart(p3 intersectiontimes (z12--(x2,y12))); +tim4=xpart(p4 intersectiontimes (z12--(x3,y12))); +(tim5,tim6)=p1 intersectiontimes p4; +(tim9,tim10)=p2 intersectiontimes p3; + +tim7=xpart(p1 intersectiontimes (z7r--z8r)); +tim8=xpart(p3 intersectiontimes (z7l--z8l)); +p6=point tim8 of p3{direction tim8 of p3 rotated -90}..z7l&z7l..z7r& +z7r..{direction tim7 of p1 rotated -90}point tim7 of p1; +filldraw subpath(rundy(p6,(0,f_obl)),rundy(p6,(infinity,f_obl)).zpet) of p6 + ..subpath(rundy(p1,tim7),rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p2,tim2),infinity) of p2 + ..subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p4,tim4),infinity) of p4 + ..subpath(0,rundy(p2,tim9).zpet) of p2 + ..subpath(rundy(p3,tim10),rundy(p3,(tim8,f_obl)).zpet) of p3 + ..cycle + ; +infill subpath(rundy(p1,tim5),infinity) of p1 + ..subpath(0,rundy(p4,tim6).zpet) of p4..cycle; +penlabels(0,1,2,3,4,5,6,7,8,9,10); +endchar; + +iff known chars.sign_note: +bskchar "Note symbol"; +beginchar(chars.sign_note,10u#,asc_height#,0); uni "0x266A"; +adjust_fit(0,0); +pickup tiny.nib; oblu:=2oblu; +pos3(hair,0); pos5(hair,0); pos6(hair,90); pos7(hair,45); +path p[]; numeric tim[]; +rt x1=u; bot y2=-o; .5[y4,y2]=y1=y3; x2=x4=.5[x3r,x1]; y4-y2=2/3(x3-x1); x3r=w-4u; +x3=x5+hair; top y5=h; z5r=z6r; +rt x7=w-u; y7=.5[bar_height,x_height]; +p0:=z4{left}..z1{down}..z2{right}..{up}z3r..{left}z4; +p1:=z5l{down}..{down}z3l; +p2:=z3r{up}..{up}z6l; +p3:=z6l{z3-z4}..{z3-z4}z7l..{z4-z3}z7r..{left}z6r; +z0=bsktouch(p0,up,p1,left); +tim0=xpart(p0 intersectiontimes (z0--(x0,y3))); +tim1=xpart(p1 intersectiontimes (z0--(w,y0))); +filldraw subpath(0,3) of p0..subpath(0,rundy(p2,infinity).zpet) of p2..subpath(rundy(p3,0),infinity) of p3..subpath(0,rundy(p1,tim1).zpet) of p1..subpath(rundy(p0,tim0),infinity) of p0..cycle; +labels(1,2,4); penlabels(3,5,6,7); +endchar; + +iff known chars.sign_angle_arc: +bskchar "Angle arc symbol"; +beginchar(chars.sign_angle_arc,12u#,v_center(x_height#)); uni "0x2222"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric theta, tim[]; +pos1(rule_thickness,0); +lft x1l=u; y1=math_axis; +y2r=x_height; +x2r=w-x1l; x2=x3; .5[y2r,y3r]=y1; +theta:=angle(z2r-z1r); +pos2(rule_thickness,theta-90); pos3(rule_thickness,theta+45); +z1'=z1l+(rule_thickness-currentbreadth)*dir(theta-90); +z1''=z1l+(rule_thickness-currentbreadth)*dir(theta+45); +z1'''=whatever[z1',z2r]=whatever[z1'',z3r]; +y1l'=y1l+o; z1l'=whatever[z1l,z2l]; +bskpoints(1,2,hair,hair); +pos4(rule_thickness,0); x4r=.8[x1,x2]; x6=x5; .5[y5,y6]=y4=y1; +z5=(fullcircle scaled (2 abs(z4-z1)) shifted z1) intersectionpoint ((0,h)--(w,h)); +pos5(rule_thickness,angle(z5-z1)); pos6(rule_thickness,angle(z6-z1)); +p0:=z1l..z1l'---z2ll..{z1'''-z2r}z2r; +oblu:=2oblu; p1:=z2r---obl(1''',2r,3r)---z3r; oblu:=f_obl; +p2:=z3r{z3r-z1'''}..z3l---z1l; +p3:=z5r..{down}z4r..z6r; +p4:=z6l..{up}z4l..z5l; +(tim0,tim1)=p0 intersectiontimes p4; +(tim2,tim3)=p0 intersectiontimes p3; +(tim4,tim5)=p1 intersectiontimes p3; +(tim6-1,tim7)=subpath(1,infinity) of p1 intersectiontimes p3; +(tim8,tim9)=p2 intersectiontimes p3; +(tim10,tim11)=p2 intersectiontimes p4; +(tim12,tim13)=subpath(0,1) of p1 intersectiontimes p4; +(tim14-1,tim15)=subpath(1,infinity) of p1 intersectiontimes p4; +filldraw subpath(0,rundy(p0,tim1).zpet) of p0 + ..subpath(rundy(p4,tim1),infinity) of p4 + ..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),rundy(p3,tim7).zpet) of p3 + ..subpath(rundy(p1,tim6),infinity) of p1 + ..subpath(0,rundy(p2,tim8).zpet) of p2 + ..subpath(rundy(p3,tim9),infinity) of p3 + ..subpath(0,rundy(p4,tim11).zpet) of p4 + ..subpath(rundy(p2,tim10),infinity) of p2..cycle; +infill subpath(rundy(p1,tim12),rundy(p1,tim14).zpet) of p1 + ..subpath(rundy(p4,tim15),rundy(p4,tim13).zpet) of p4 ..cycle; +penlabels(1,2,3,4,5,6); labels(1',1'',1''',2ll,1l'); +endchar; + +iff known chars.sign_numero: +bskchar "Numero sign"; +beginchar(chars.sign_numero,16u#,cap_height#,0); uni "0x2116"; +adjust_fit(cap_serif_fit#,cap_serif_fit#); +pickup tiny.nib; oblu:=3oblu; +numeric tim[]; path p[]; +pos1(cap_hair,0); pos2(cap_hair,0); +pos3(cap_hair,0); pos4(cap_hair,0); +penpos5(whatever,0); penpos6(whatever,90); +pos0(hair,-90); pos0'(stem,250); +pos10(hair,-90); pos11(.85curve,180); pos12(hair,90); pos13(.85curve,0); +bot y1=.25bar_height; top y2=h; +lft x1l=lft x2l=2.5u; +bot y3=-apex_o; rt x3r=rt x4r=w-6u; +z5r=z2l; z6l=z3l; +cap_serifs_tl(2l); +bot y0r=-o; x1-x0=y1-y0; x0'r=.5u; y0'-y0=.5(x1-x0); +z0''=z0'+.5(stem-currentbreadth)*dir135; +z7=z6l+(cap_stem,0) rotated (angle(z5r-z6l)-90); +z5l=z7+whatever*(z5r-z6l); z6r=z7+whatever*(z5r-z6l); +y2'+o=y5'=y2l.b-cap_hair; x2'=x2r; z5'=whatever[z6l,z5r]; +y4'-o=y6'=y6r+2cap_hair; x4'=x4l; z6'=whatever[z6r,z5l]; +z8=z5l+(cap_hair,0) rotated (angle(z6l-z5r)); +y10-y4=x10-x3; top y10l=h+o; x10=.5[x11,x13]; lft x13l=rt x4r+hair; +.5[y10,y12]=y11=y13; y10-y12=(sqrt2)*(x11-x13); +x11l=w-u; x12=x10; +p0:=z0'l{up}..z0''..z0'r..z0r{right}..z1r---z2'..z5' + ---z6l..z3r---z4r..z10r{right}..{down}z11r..z12r..{up}z13r..{right}z10r; +p1:=z10l{left}..z13l{down}..z12l..z11l{up}..{left}z10l..z4l + ---z4'..z6'---z8..z5---z2l.a..{right}z2l.c..z2l.b---z1l..{left}z0l..{up}z0'l; +z14=bsktouch(subpath(0,1) of p1,left,subpath(8,infinity) of p0,right); +tim0=xpart(p0 intersectiontimes (z14--(.5w,y14))); +tim1=xpart(p1 intersectiontimes (z14--(x10,y14))); +filldraw subpath(rundy(p1,tim1),infinity) of p1 + ..subpath(0,rundy(p0,tim0).zpet) of p0..cycle; +infill z10r{right}..z11r{down}..z12r..{up}z13r..cycle; +penlabels(0,0',1,2,3,4,5,6,10,11,12,13); labels(0'',2',4',5',6',7,8,9,14); +endchar; + +iff known chars.sign_leaf: +bskchar "Leaf"; +beginchar(chars.sign_leaf, 14u#,asc_height#,0); uni "0xEB42"; %Uni form LM +adjust_fit(0,0); +pickup tiny.nib; +path p[]; numeric tim[], theta; theta:=20; +lft bot z1r=(1.5u,-apex_o); top z2r=(w-u,h+apex_o); z0=.5[z1,z2]; +pos1(hair,angle(z2r-z1r)-90); pos2(hair,angle(z2r-z1r)-90); +z3=(w-2.5u,bar_height); z4=z3 reflectedabout(z1,z2); +p1:=z1{dir-theta}..z3..{up}z2; pos3(hair,angle(point 1 of p1)-90); +p2:=z2{left}..z4..{dir(-90+theta)}z1; pos4(hair,angle(point 1 of p2)-90); +p3:=z2l+(hair-currentbreadth)*down{left}..z4r..{dir(-90+theta)}z1l+(hair-currentbreadth)*right; +p4:=z1r+(hair-currentbreadth)*up{dir-theta}..z3l..{up}z2r+(hair-currentbreadth)*left; +z5=2/3[z2,z1]; z6=1/3[z2,z1]; +pos5(hair,angle(z2-z1)-90); pos6(hair,angle(z2-z1)-90); +pos5'(hair,angle(z2-z1)-90); pos6'(hair,angle(z2-z1)-90); +z5'=z5+(hair-currentbreadth)*unitvector(z0-z5); +z6'=z6+(hair-currentbreadth)*unitvector(z0-z6); +tim0=xpart(p3 intersectiontimes (z6--z6+5(z4-z0))); z7=point tim0 of p3; +tim1=xpart(p4 intersectiontimes (z6--z6+5(z3-z0))); z8=point tim1 of p4; +tim2=xpart(p3 intersectiontimes (z5--z5+5(z4-z0))); z9=point tim2 of p3; +tim3=xpart(p4 intersectiontimes (z5--z5+5(z3-z0))); z10=point tim3 of p4; +z7l=point rundy(p3,(tim0,hair-currentbreadth)) of p3; +z8l=point rundy(p4,(tim1,hair-currentbreadth)).zpet of p4; +z9l=point rundy(p3,(tim2,hair-currentbreadth)) of p3; +z10l=point rundy(p4,(tim3,hair-currentbreadth)).zpet of p4; +p5:=z1l---obl(5l,1l,9l)---z9l; +p6:=z10l---obl(5r,10l,1r)--z1r; +p7:=z7---obl(6l,7,2l)---z2l; +p8:=z2r---obl(6r,2r,8)--z8; +p9:=z7l---obl(6'l,7l,5'l)---obl(5'l,6'l,9)---z9; +p10:=z8l---obl(6'r,8l,5'r)---obl(5'r,6'r,10)---z10; +filldraw z1r{dir-theta}..z3r..{up}z2r..z2l{left}..z4l..{dir(-90+theta)}z1l..cycle; +infill subpath(rundy(p3,(0,2oblu)),rundy(p3,tim0).zpet) of p3 + ..subpath(rundy(p7,0),rundy(p7,(infinity,2oblu)).zpet) of p7..cycle; +infill subpath(rundy(p4,tim1),rundy(p4,(infinity,2oblu)).zpet) of p4 + ..subpath(rundy(p8,(0,2oblu)),rundy(p8,infinity).zpet) of p8..cycle; +infill subpath(rundy(p3,(tim2,2oblu)),rundy(p3,infinity).zpet) of p3 + ..subpath(rundy(p5,0),rundy(p5,infinity).zpet) of p5..cycle; +infill subpath(rundy(p4,0),rundy(p4,(tim3,2oblu)).zpet) of p4 + ..subpath(rundy(p6,0),rundy(p6,infinity).zpet) of p6..cycle; +infill subpath(rundy(p9,0),rundy(p9,infinity).zpet) of p9 + ..reverse subpath (rundy(p2,tim0),rundy(p2,tim2).zpet) of p2..cycle; +infill subpath(rundy(p10,0),rundy(p10,infinity).zpet) of p10 + ..subpath (rundy(p1,tim3),rundy(p1,tim1).zpet) of p1..cycle; +penlabels(0,1,2,3,4,5,5',6,6',7,8,9,10); +endchar; + +iff known chars.math_multimap: +bskchar "Multimap symbol"; +beginchar(chars.math_multimap,16u#,v_center(.6x_height#)); uni "0x22B8"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; oblu:=rule_thickness; +rt x2=w-u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=z6l+rule_thickness*left; lft x9=u; y9=y10; +bskpoints(9,10,hair,hair); +p0=draw_circle.l; +p1=z10l---z9l..z9rr---z10r; +filldraw subpath(0,rundy(p0,6).zpet) of p0 + ..subpath(rundy(p1,0),rundy(p1,length p1).zpet) of p1 + ..subpath(rundy(p0,6),length p0) of p0..cycle; +infill draw_circle.r; +penlabels(9,10); labels(9rr); +endchar; + +iff known chars.math_multimapdot: +bskchar "Multimap symbol with dot"; +beginchar(chars.math_multimapdot,16u#,v_center(.6x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; oblu:=rule_thickness; +rt x2=w-u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=z6l+rule_thickness*left; lft x9=u; y9=y10; +bskpoints(9,10,hair,hair); +p0=draw_circle.l; +p1=z10l---z9l..z9rr---z10r; +filldraw subpath(0,rundy(p0,6).zpet) of p0 + ..subpath(rundy(p1,0),rundy(p1,length p1).zpet) of p1 + ..subpath(rundy(p0,6),length p0) of p0..cycle; +penlabels(9,10); labels(9rr); +endchar; + +iff known chars.math_multimap_inverted: +bskchar "Inverted multimap symbol"; +beginchar(chars.math_multimap_inverted,16u#,v_center(.6x_height#)); uni "0x27DC"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; oblu:=rule_thickness; +lft x6=u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=z2l+rule_thickness*right; rt x9=w-u; y9=y10; +bskpoints(9,10,hair,hair); +p0=draw_circle.l; +p1=z10r---z9rr..z9l---z10l; +filldraw subpath(0,rundy(p0,2).zpet) of p0 + ..subpath(rundy(p1,0),rundy(p1,length p1).zpet) of p1 + ..subpath(rundy(p0,2),length p0) of p0..cycle; +infill draw_circle.r; +penlabels(9,10); labels(9rr); +endchar; + +iff known chars.math_multimapdot_inverted: +bskchar "Inverted multimap symbol with dot"; +beginchar(chars.math_multimapdot_inverted,16u#,v_center(.6x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; oblu:=rule_thickness; +lft x6=u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=z2l+rule_thickness*right; rt x9=w-u; y9=y10; +bskpoints(9,10,hair,hair); +p0=draw_circle.l; +p1=z10r---z9rr..z9l---z10l; +filldraw subpath(0,rundy(p0,2).zpet) of p0 + ..subpath(rundy(p1,0),rundy(p1,length p1).zpet) of p1 + ..subpath(rundy(p0,2),length p0) of p0..cycle; +penlabels(9,10); labels(9rr); +endchar; + +iff known chars.math_multimap_both: +bskchar "Multimap-both symbol"; +beginchar(chars.math_multimap_both,16u#,v_center(.6x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; pair pol; oblu:=rule_thickness; +rt x2=w-u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +p0=draw_circle.l; +p1=draw_circle.r; +pol:=z6l; +save x,y; +lft x6=u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=pol+rule_thickness*left; z9=z2l+rule_thickness*right; +p2=draw_circle.l; +p3=z10l---z9l; +p4=z9r---z10r; +filldraw subpath(0,rundy(p0,6).zpet) of p0 + ..subpath(rundy(p3,0),rundy(p3,1).zpet) of p3 + ..subpath(rundy(p2,2),length p2) of p2 + ..subpath(0,rundy(p2,2).zpet) of p2 + ..subpath(0,rundy(p4,1).zpet) of p4 + ..subpath(rundy(p0,6),length p0) of p0..cycle; +infill p1; +infill draw_circle.r; +penlabels(9,10); +endchar; + +iff known chars.math_multimapdot_both: +bskchar "Multimap-both symbol with dots"; +beginchar(chars.math_multimapdot_both,16u#,v_center(.6x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; pair pol; oblu:=rule_thickness; +rt x2=w-u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +p0=draw_circle.l; +pol:=z6l; +save x,y; +lft x6=u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=pol+rule_thickness*left; z9=z2l+rule_thickness*right; +p1=draw_circle.l; +p2=z10l---z9l; +p3=z9r---z10r; +filldraw subpath(0,rundy(p0,6).zpet) of p0 + ..subpath(rundy(p2,0),rundy(p2,1).zpet) of p2 + ..subpath(rundy(p1,2),length p1) of p1 + ..subpath(0,rundy(p1,2).zpet) of p1 + ..subpath(0,rundy(p3,1).zpet) of p3 + ..subpath(rundy(p0,6),length p0) of p0..cycle; +penlabels(9,10); +endchar; + +iff known chars.math_multimapdot_left_both: +bskchar "Multimap-both symbol with left dot"; +beginchar(chars.math_multimapdot_left_both,16u#,v_center(.6x_height#)); uni "0x22B7"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; pair pol; oblu:=rule_thickness; +rt x2=w-u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +p0=draw_circle.l; +p1=draw_circle.r; +pol:=z6l; +save x,y; +lft x6=u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=pol+rule_thickness*left; z9=z2l+rule_thickness*right; +p2=draw_circle.l; +p3=z10l---z9l; +p4=z9r---z10r; +filldraw subpath(0,rundy(p0,6).zpet) of p0 + ..subpath(rundy(p3,0),rundy(p3,1).zpet) of p3 + ..subpath(rundy(p2,2),length p2) of p2 + ..subpath(0,rundy(p2,2).zpet) of p2 + ..subpath(0,rundy(p4,1).zpet) of p4 + ..subpath(rundy(p0,6),length p0) of p0..cycle; +infill p1; +penlabels(9,10); +endchar; + +iff known chars.math_multimapdot_right_both: +bskchar "Multimap-both symbol with right dot"; +beginchar(chars.math_multimapdot_right_both,16u#,v_center(.6x_height#)); uni "0x22B6"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; pair pol; oblu:=rule_thickness; +rt x2=w-u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +p0=draw_circle.l; +pol:=z6l; +save x,y; +lft x6=u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=pol+rule_thickness*left; z9=z2l+rule_thickness*right; +p1=draw_circle.l; +p2=z10l---z9l; +p3=z9r---z10r; +filldraw subpath(0,rundy(p0,6).zpet) of p0 + ..subpath(rundy(p2,0),rundy(p2,1).zpet) of p2 + ..subpath(rundy(p1,2),length p1) of p1 + ..subpath(0,rundy(p1,2).zpet) of p1 + ..subpath(0,rundy(p3,1).zpet) of p3 + ..subpath(rundy(p0,6),length p0) of p0..cycle; +infill draw_circle.r; +penlabels(9,10); +endchar; + +iff known chars.math_multimap_both_vert: +bskchar "Vertical multimap-both symbol"; +beginchar(chars.math_multimap_both_vert,10u#,body_height#,paren_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; pair pol; oblu:=rule_thickness; +x8=.5w; y8-y4=x2-x6; top y8=h-.5rule_thickness; top y8-y2=.3x_height-.5rule_thickness; +circle_points(rule_thickness); +p0=draw_circle.l; +p1=draw_circle.r; +pol:=z4l; +save x,y; +x8=.5w; y8-y4=x2-x6; bot y4=-d+.5rule_thickness; top y8-y2=.3x_height-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,180); pos10(rule_thickness,180); +z10=pol+rule_thickness*down; z9=z8l+rule_thickness*up; +p2=draw_circle.l; +p3=z10l---z9l; +p4=z9r---z10r; +filldraw subpath(0,rundy(p0,4).zpet) of p0 + ..subpath(rundy(p3,0),rundy(p3,1).zpet) of p3 + ..subpath(rundy(p2,0),rundy(p2,length p2).zpet) of p2 + ..subpath(0,rundy(p4,1).zpet) of p4 + ..subpath(rundy(p0,4),length p0) of p0..cycle; +infill p1; +infill draw_circle.r; +penlabels(9,10); +endchar; + +iff known chars.math_multimapdot_both_vert: +bskchar "Vertical multimap-both symbol with dots"; +beginchar(chars.math_multimapdot_both_vert,10u#,body_height#,paren_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; pair pol; oblu:=rule_thickness; +x8=.5w; y8-y4=x2-x6; top y8=h-.5rule_thickness; top y8-y2=.3x_height-.5rule_thickness; +circle_points(rule_thickness); +p0=draw_circle.l; +pol:=z4l; +save x,y; +x8=.5w; y8-y4=x2-x6; bot y4=-d+.5rule_thickness; top y8-y2=.3x_height-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,180); pos10(rule_thickness,180); +z10=pol+rule_thickness*down; z9=z8l+rule_thickness*up; +p1=draw_circle.l; +p2=z10l---z9l; +p3=z9r---z10r; +filldraw subpath(0,rundy(p0,4).zpet) of p0 + ..subpath(rundy(p2,0),rundy(p2,1).zpet) of p2 + ..subpath(rundy(p1,0),rundy(p1,length p1).zpet) of p1 + ..subpath(0,rundy(p3,1).zpet) of p3 + ..subpath(rundy(p0,4),length p0) of p0..cycle; +penlabels(9,10); +endchar; + +iff known chars.math_multimapdot_top_both_vert: +bskchar "Vertical multimap-both symbol with top dot"; +beginchar(chars.math_multimapdot_top_both_vert,10u#,body_height#,paren_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; pair pol; oblu:=rule_thickness; +x8=.5w; y8-y4=x2-x6; top y8=h-.5rule_thickness; top y8-y2=.3x_height-.5rule_thickness; +circle_points(rule_thickness); +p0=draw_circle.l; +pol:=z4l; +save x,y; +x8=.5w; y8-y4=x2-x6; bot y4=-d+.5rule_thickness; top y8-y2=.3x_height-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,180); pos10(rule_thickness,180); +z10=pol+rule_thickness*down; z9=z8l+rule_thickness*up; +p1=draw_circle.l; +p2=z10l---z9l; +p3=z9r---z10r; +filldraw subpath(0,rundy(p0,4).zpet) of p0 + ..subpath(rundy(p2,0),rundy(p2,1).zpet) of p2 + ..subpath(rundy(p1,0),rundy(p1,length p1).zpet) of p1 + ..subpath(0,rundy(p3,1).zpet) of p3 + ..subpath(rundy(p0,4),length p0) of p0..cycle; +infill draw_circle.r; +penlabels(9,10); +endchar; + +iff known chars.math_multimapdot_bot_both_vert: +bskchar "Vertical multimap-both symbol with botttom dot"; +beginchar(chars.math_multimapdot_bot_both_vert,10u#,body_height#,paren_depth#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; pair pol; oblu:=rule_thickness; +x8=.5w; y8-y4=x2-x6; top y8=h-.5rule_thickness; top y8-y2=.3x_height-.5rule_thickness; +circle_points(rule_thickness); +p0=draw_circle.l; +p1=draw_circle.r; +pol:=z4l; +save x,y; +x8=.5w; y8-y4=x2-x6; bot y4=-d+.5rule_thickness; top y8-y2=.3x_height-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,180); pos10(rule_thickness,180); +z10=pol+rule_thickness*down; z9=z8l+rule_thickness*up; +p2=draw_circle.l; +p3=z10l---z9l; +p4=z9r---z10r; +filldraw subpath(0,rundy(p0,4).zpet) of p0 + ..subpath(rundy(p3,0),rundy(p3,1).zpet) of p3 + ..subpath(rundy(p2,0),rundy(p2,length p2).zpet) of p2 + ..subpath(0,rundy(p4,1).zpet) of p4 + ..subpath(rundy(p0,4),length p0) of p0..cycle; +infill p1; +penlabels(9,10); +endchar; + +iff known chars.math_line_vert_circle: +bskchar "Vertical line with circle above"; +beginchar(chars.math_multimap_both_vert,7u#,body_height#,paren_depth#); uni "0x2AEF"; +adjust_fit(0,0); +pickup tiny.nib; +path p; oblu:=rule_thickness; +x8=.5w; y8-y4=x2-x6; top y8=h-.5rule_thickness; top y8-y2=.3x_height-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,180); pos10(rule_thickness,180); +z10=z4l+rule_thickness*down; bot z9=(x10,-d);; +bskpoints(9,10,rule_thickness,rule_thickness); +p=draw_circle.l; +filldraw subpath(0,rundy(p,4).zpet) of p..z10l---z9l..z9rr---z10r + ..subpath(rundy(p,4),length p) of p..cycle; +infill draw_circle.r; +penlabels(9,10); labels(9rr); +endchar; + +iff known chars.math_circle_line_vert: +bskchar "Vertical line with circle below"; +beginchar(chars.math_circle_line_vert,7u#,body_height#,paren_depth#); uni "0x2AF0"; +adjust_fit(0,0); +pickup tiny.nib; +path p; oblu:=rule_thickness; +x8=.5w; y8-y4=x2-x6; bot y4=-d+.5rule_thickness; top y8-y2=.3x_height-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,180); pos10(rule_thickness,180); +top z10=(x9,h); z9=z8l+rule_thickness*up; +bskpoints(9,10,rule_thickness,rule_thickness); +p=draw_circle.l; +filldraw z10ll---z9l..subpath(rundy(p,0),rundy(p,length p).zpet) of p..z9r---z10r..cycle; +infill draw_circle.r; +penlabels(9,10); labels(10ll); +endchar; + +iff known chars.math_circle_tack_down: +bskchar "Down tack with circle below"; +beginchar(chars.math_circle_tack_down,7u#,body_height#,paren_depth#); uni "0x2AF1"; +adjust_fit(0,0); +pickup tiny.nib; +path p; oblu:=rule_thickness; +x8=.5w; y8-y4=x2-x6; bot y4=-d+.5rule_thickness; top y8-y2=.3x_height-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,180); pos10(rule_thickness,180); +pos11(rule_thickness,90); pos12(rule_thickness,90); +x10=x9; y10=y11l; z9=z8l+rule_thickness*up; +lft x11=u; rt x12=w-u; top y11r=top y12r=h; +bskpoints(11,12,rule_thickness,rule_thickness); +p=draw_circle.l; +filldraw z12ll---obl(10l,12ll,9l)---z9l + ..subpath(rundy(p,0),rundy(p,length p).zpet) of p + ..z9r---obl(10r,9r,11l)---z11l..z11rr---z12r..cycle; +infill draw_circle.r; +penlabels(9,10,11,12); labels(11rr,12ll); +endchar; + +iff known chars.math_dfourier: +bskchar "Dfourier symbol"; +beginchar(chars.math_dfourier,13u#,v_center(.6x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; oblu:=rule_thickness; +lft x6=u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=z2l+rule_thickness*right; x9=.5[x10,x11]; y9=y10; +top rt z11=(w-u,h); +pos11(rule_thickness,angle(z9-z11)-90); +bskpoints(9,11,hair,hair); +p0=draw_circle.l; +p1=z10r---obl(9r,10r,11r)---z11r..z11ll---obl(9l,11l,10l)---z10l; +filldraw subpath(0,rundy(p0,2).zpet) of p0 + ..subpath(rundy(p1,0),rundy(p1,length p1).zpet) of p1 + ..subpath(rundy(p0,2),length p0) of p0..cycle; +infill draw_circle.r; +penlabels(9,10,11); labels(11ll); +endchar; + +iff known chars.math_dfourier_inverted: +bskchar "Inverted dfourier symbol"; +beginchar(chars.math_dfourier_inverted,13u#,v_center(.6x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; oblu:=rule_thickness; +rt x2=w-u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=z6l+rule_thickness*left; x9=.5[x10,x11]; y9=y10; +top lft z11=(u,h); +pos11(rule_thickness,angle(z9-z11)+90); +bskpoints(9,11,hair,hair); +p0=draw_circle.l; +p1=z10l---obl(9l,10l,11l)---z11ll..z11r---obl(9r,11r,10r)---z10r; +filldraw subpath(0,rundy(p0,6).zpet) of p0 + ..subpath(rundy(p1,0),rundy(p1,length p1).zpet) of p1 + ..subpath(rundy(p0,6),length p0) of p0..cycle; +infill draw_circle.r; +penlabels(9,10,11); labels(11ll); +endchar; + +iff known chars.math_ztrans: +bskchar "Z transformation symbol"; +beginchar(chars.math_ztrans,19u#,v_center(.6x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; oblu:=rule_thickness; +lft x6=u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=z2l+rule_thickness*right; x9=.5[x10,x11]; y9=y10; +top rt z11=(w-8u,h); +pos11(rule_thickness,angle(z9-z11)-90); +bskpoints(9,11,hair,hair); +p0=draw_circle.l; +p1=z10r---obl(9r,10r,11r)---z11r..z11ll---obl(9l,11l,10l)---z10l; +filldraw subpath(0,rundy(p0,2).zpet) of p0 + ..subpath(rundy(p1,0),rundy(p1,length p1).zpet) of p1 + ..subpath(rundy(p0,2),length p0) of p0..cycle; +infill draw_circle.r; +penlabels(9,10,11); labels(11ll); +save x,y; +rt x2=w-u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos12(rule_thickness,90); pos13(rule_thickness,90); +z12=z6l+rule_thickness*left; y12=y13; x13=w-8u; +bskpoints(13,12,hair,hair); +p2=draw_circle.l; +p3=z12l---z13l..z13rr---z12r; +filldraw subpath(0,rundy(p2,6).zpet) of p2 + ..subpath(rundy(p3,0),rundy(p3,infinity).zpet) of p3 + ..subpath(rundy(p2,6),length p2) of p2..cycle; +penlabels(12,13); labels(13rr); +endchar; + +iff known chars.math_ztrans_inv: +bskchar "Inverted Z transformation symbol"; +beginchar(chars.math_ztrans_inv,19u#,v_center(.6x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; oblu:=rule_thickness; +rt x2=w-u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos9(rule_thickness,90); pos10(rule_thickness,90); +z10=z6l+rule_thickness*left; x9=.5[x10,x11]; y9=y10; +top lft z11=(8u,h); +pos11(rule_thickness,angle(z9-z11)-90); +bskpoints(9,11,hair,hair); +p0=draw_circle.l; +p1=z10l---obl(9l,10l,11r)---z11r..z11ll---obl(9r,11l,10r)---z10r; +filldraw subpath(0,rundy(p0,6).zpet) of p0 + ..subpath(rundy(p1,0),rundy(p1,length p1).zpet) of p1 + ..subpath(rundy(p0,6),length p0) of p0..cycle; +infill draw_circle.r; +penlabels(9,10,11); labels(11ll); +save x,y; +lft x6=u; y2=math_axis; y8-y4=x2-x6; top y8=h-.5rule_thickness; +circle_points(rule_thickness); +pos12(rule_thickness,90); pos13(rule_thickness,90); +z12=z2l+rule_thickness*right; y12=y13; x13=8u; +bskpoints(13,12,hair,hair); +p2=draw_circle.l; +p3=z12r---z13rr..z13l---z12l; +filldraw subpath(0,rundy(p2,2).zpet) of p2 + ..subpath(rundy(p3,0),rundy(p3,infinity).zpet) of p3 + ..subpath(rundy(p2,2),length p2) of p2..cycle; +penlabels(12,13); labels(13rr); +endchar; + +iff known chars.math_lambda: +bskchar "Stylized lambda symbol"; +beginchar(chars.math_lambda,13u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=1.5oblu; +numeric thr; +lft x1=u+.5rule_thickness; x2=w-x1; top y1=h; bot y2=0; +x3l=x1l; y3l=y2; y4l=.5[x_height,bar_height]; +thr:=rule_thickness/abs(sind(angle(z2-z1))); +pos1(thr,0); pos2(thr,0); +z4l=whatever[z2l,z1l]; +thr:=rule_thickness/abs(sind(angle(z3l-z4l))); +pos3(thr,0); z4r=whatever[z2l,z1l]=z3r+whatever*(z4l-z3l); +filldraw z1l---obl(4l,1l,3l)---z3l..z3r---obl(4r,3r,2l).more---z2l..z2r---z1r..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_lambda_refl: +bskchar "Reflected stylized lambda symbol"; +beginchar(chars.math_lambda_refl,13u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=1.5oblu; +numeric thr; +rt x1=w-u-.5rule_thickness; x2=w-x1; top y1=h; bot y2=0; +x3l=x1l; y3l=y2; y4l=.5[x_height,bar_height]-.5rule_thickness; +thr:=rule_thickness/abs(sind(angle(z2-z1))); +pos1(thr,0); pos2(thr,0); +z4l=whatever[z2r,z1r]; +thr:=rule_thickness/abs(sind(angle(z3l-z4l))); +pos3(thr,0); z4r=whatever[z2r,z1r]=z3r+whatever*(z4l-z3l); +filldraw z1r---obl(4r,1r,3r)---z3r..z3l---obl(4l,3l,2r).more---z2r..z2l---z1l..cycle; +penlabels(1,2,3,4); +endchar; + +iff known chars.math_right_angle_nw: +bskchar "Northwest right angle symbol"; +beginchar(chars.math_right_angle_nw,10u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,270); +lft x1l=lft x2l=u; rt x3=w-u; +top y2=top y3l=h; y2-y1=x3-x2l; y2r:=y2-rule_thickness+currentbreadth; +filldraw z1l---obl(2l,1l,3l)---z3l..z3r---obl(2r,3r,1r)---z1r..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_right_angle_nw_dot: +bskchar "Northwest right angle symbol with dot"; +beginchar(chars.math_right_angle_nw_dot,10u#,asc_height#,0); uni "0x27D4"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,270); +lft x1l=lft x2l=u; rt x3=w-u; z4=.5[z1,z3]; +top y2=top y3l=h; y2-y1=x3-x2l; y2r:=y2-rule_thickness+currentbreadth; +filldraw z1l---obl(2l,1l,3l)---z3l..z3r---obl(2r,3r,1r)---z1r..cycle; +dot(4); +penlabels(1,2,3); +endchar; + +iff known chars.math_right_angle_ne: +bskchar "Northeast right angle symbol"; +beginchar(chars.math_right_angle_ne,10u#,asc_height#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,90); +rt x1r=rt x2r=w-u; lft x3=u; +top y2=top y3r=h; y2-y1=x2r-x3; y2l:=y2-rule_thickness+currentbreadth; +filldraw z1l---obl(2l,1l,3l)---z3l..z3r---obl(2r,3r,1r)---z1r..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_right_angle_sw: +bskchar "Southwest right angle symbol"; +beginchar(chars.math_right_angle_sw,10u#,8u#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,90); +lft x1l=lft x2l=u; rt x3=w-u; +bot y2=bot y3l=0; y1-y2=x3-x2l; y2r:=y2+rule_thickness-currentbreadth; +filldraw z1l---obl(2l,1l,3l)---z3l..z3r---obl(2r,3r,1r)---z1r..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_right_angle_se: +bskchar "Southeast right angle symbol"; +beginchar(chars.math_right_angle_se,10u#,8u#,0); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,270); +rt x1r=rt x2r=w-u; lft x3=u; +bot y2=bot y3r=0; y1-y2=x2r-x3; y2l:=y2+rule_thickness-currentbreadth; +filldraw z1l---obl(2l,1l,3l)---z3l..z3r---obl(2r,3r,1r)---z1r..cycle; +penlabels(1,2,3); +endchar; + +iff known chars.math_right_angle_se_dot: +bskchar "Southeast right angle symbol with dot"; +beginchar(chars.math_right_angle_se_dot,10u#,8u#,0); uni "0x27D3"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,270); +rt x1r=rt x2r=w-u; lft x3=u; z4=.5[z1,z3]; +bot y2=bot y3r=0; y1-y2=x2r-x3; y2l:=y2+rule_thickness-currentbreadth; +filldraw z1l---obl(2l,1l,3l)---z3l..z3r---obl(2r,3r,1r)---z1r..cycle; +dot(4); +penlabels(1,2,3); +endchar; + +iff known chars.math_axis_line_short: +bskchar "Short axis line"; +beginchar(chars.math_axis_line_short,10u#,v_center(x_height#)); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; +pos0(rule_thickness,90); pos1(rule_thickness,90); +y0=y1=math_axis; lft x0=1.5u; x1=w-x0; +filldraw bskrule(0,1,rule_thickness,rule_thickness); +penlabels(0,1); +endchar; + +iff known chars.math_angle: +bskchar "Simple angle sign"; +beginchar(chars.math_angle,12u#,.8asc_height#,0); uni "0x2220"; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=2oblu; +numeric thr; +rt x1=w-u-.5rule_thickness; x2=w-x1; top y1=h; bot y2=bot y4l=bot y3l=0; +thr:=rule_thickness/abs(sind(angle(z2-z1))); +pos1(thr,0); pos2(thr,0); pos3(rule_thickness,90); pos4(rule_thickness,90); +rt x4=w-u; z3r=whatever[z2r,z1r]; +bskpoints(4,3,rule_thickness,rule_thickness); +filldraw z1r---obl(3r,1r,4r).more---z4rr..z4l---obl(2l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4); labels(4rr); +endchar; + +iff known chars.math_angle_arc: +bskchar "Simple angle sign with arc"; +beginchar(chars.math_angle_arc,12u#,.8asc_height#,0); uni "0x2221"; +adjust_fit(0,0); +pickup tiny.nib; +numeric thr; path p[]; +rt x1=w-u-.5rule_thickness; x2=w-x1; top y1=h; bot y2=bot y4l=bot y3l=0; +thr:=rule_thickness/abs(sind(angle(z2-z1))); +pos1(thr,0); pos2(thr,0); pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); +rt x4=w-u; z3r=whatever[z2r,z1r]; y5=y4r; x5=.5[x3,x4]; +z6l-z3r=(z5l-z3r) rotated angle(z1-z2); +z6r-z3r=(z5r-z3r) rotated angle(z1-z2); +bskpoints(4,3,rule_thickness,rule_thickness); +p0=z6r{dir(angle(z1-z2)-90)}..{down}z5r; +p1=z6l{dir(angle(z1-z2)-90)}..{down}z5l; +p2=z1r--z6r; +p3=z5r--z4rr; +p4=z3r--z6l; +p5=z5l--z3r; +filldraw subpath(0,rundy(p2,1).zpet) of p2 + ..subpath(rundy(p0,0),rundy(p0,1).zpet) of p0 + ..subpath(rundy(p3,0),1) of p3{right} + ..z4l---obl(2l,4l,1l)---z1l..cycle; +infill subpath(rundy(p5,0),rundy(p5,(1,2oblu)).zpet) of p5 + ..subpath(rundy(p4,(0,2oblu)),rundy(p4,1).zpet) of p4 + ..subpath(rundy(p1,0),rundy(p1,1).zpet) of p1..cycle; +penlabels(1,2,3,4,5,6); labels(4rr); +endchar; + +iff known chars.math_angle_right: +bskchar "Simple right-angle sign"; +beginchar(chars.math_angle_right,12u#,.8asc_height#,0); uni "0x221F"; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=2oblu; +numeric thr; +lft x1=u+.5rule_thickness; x2=x1; top y1=h; bot y2=bot y4l=bot y3l=0; +thr:=rule_thickness/abs(sind(angle(z2-z1))); +pos1(thr,0); pos2(thr,0); pos3(rule_thickness,90); pos4(rule_thickness,90); +rt x4=w-u; z3r=whatever[z2r,z1r]; +bskpoints(4,3,rule_thickness,rule_thickness); +filldraw z1r---obl(3r,1r,4r).more---z4rr..z4l---obl(2l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4); labels(4rr); +endchar; + +iff known chars.math_angle_right_arc: +bskchar "Simple right-angle sign with arc"; +beginchar(chars.math_angle_right_arc,12u#,.8asc_height#,0); uni "0x22BE"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; +lft x1=u+.5rule_thickness; x2=x1; top y1=h; bot y2=bot y4l=bot y3l=0; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); +rt x4=w-u; z3r=whatever[z2r,z1r]; y5=y4r; x5=.5[x3,x4]; +z6l-z3r=(z5l-z3r) rotated angle(z1-z2); +z6r-z3r=(z5r-z3r) rotated angle(z1-z2); +bskpoints(4,3,rule_thickness,rule_thickness); +p0=z6r{dir(angle(z1-z2)-90)}..{down}z5r; +p1=z6l{dir(angle(z1-z2)-90)}..{down}z5l; +p2=z1r--z6r; +p3=z5r--z4rr; +p4=z3r--z6l; +p5=z5l--z3r; +filldraw subpath(0,rundy(p2,1).zpet) of p2 + ..subpath(rundy(p0,0),rundy(p0,1).zpet) of p0 + ..subpath(rundy(p3,0),1) of p3{right} + ..z4l---obl(2l,4l,1l)---z1l..cycle; +infill subpath(rundy(p5,0),rundy(p5,(1,2oblu)).zpet) of p5 + ..subpath(rundy(p4,(0,2oblu)),rundy(p4,1).zpet) of p4 + ..subpath(rundy(p1,0),rundy(p1,1).zpet) of p1..cycle; +penlabels(1,2,3,4,5,6); labels(4rr); +endchar; + +iff known chars.math_angle_right_arc_dot: +bskchar "Simple right-angle sign with arc and dot inside"; +beginchar(chars.math_angle_right_arc_dot,12u#,.8asc_height#,0); uni "0x299D"; +adjust_fit(0,0); +pickup tiny.nib; +path p[]; +lft x1=u+.5rule_thickness; x2=x1; top y1=h; bot y2=bot y4l=bot y3l=0; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); +rt x4=w-u; z3r=whatever[z2r,z1r]; y5=y4r; x5=2/3[x3,x4]; +z6l-z3r=(z5l-z3r) rotated angle(z1-z2); +z6r-z3r=(z5r-z3r) rotated angle(z1-z2); +bskpoints(4,3,rule_thickness,rule_thickness); +p0=z6r{dir(angle(z1-z2)-90)}..{down}z5r; +p1=z6l{dir(angle(z1-z2)-90)}..{down}z5l; +p2=z1r--z6r; +p3=z5r--z4rr; +p4=z3r--z6l; +p5=z5l--z3r; +z7=.5[z3r+oblu*dir45, (z3r--z3r+w*dir45) intersectionpoint p1]; +filldraw subpath(0,rundy(p2,1).zpet) of p2 + ..subpath(rundy(p0,0),rundy(p0,1).zpet) of p0 + ..subpath(rundy(p3,0),1) of p3{right} + ..z4l---obl(2l,4l,1l)---z1l..cycle; +infill subpath(rundy(p5,0),rundy(p5,(1,2oblu)).zpet) of p5 + ..subpath(rundy(p4,(0,2oblu)),rundy(p4,1).zpet) of p4 + ..subpath(rundy(p1,0),rundy(p1,1).zpet) of p1..cycle; +dot(7); +penlabels(1,2,3,4,5,6); labels(4rr); +endchar; + +iff known chars.math_angle_right_square: +bskchar "Simple right-angle sign with square"; +beginchar(chars.math_angle_right_square,12u#,.8asc_height#,0); uni "0x299C"; +adjust_fit(0,0); +pickup tiny.nib; +lft x1=u+.5rule_thickness; x2=x1; top y1=h; bot y2=bot y4l=bot y3l=0; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,0); +rt x4=w-u; z3r=whatever[z2r,z1r]; y5=y4r; x5=.5[x3,x4]; +z6l-z3r=(z5l-z3r) rotated angle(z1-z2); +z6r-z3r=(z5r-z3r) rotated angle(z1-z2); +z7r=(x5r,y6r); z7l=(x5l,y6l); +bskpoints(4,3,rule_thickness,rule_thickness); +filldraw z1r---obl(6r,1r,7r)---obl(7r,6r,5r)---obl(5r,7r,4r)---z4rr..z4l + ---obl(2l,4l,1l)---z1l..cycle; +infill obl(6l,3r,7l)---obl(7l,6l,5l)---obl(5l,7l,3r)---obl(3r,5l,6l)---cycle; +penlabels(1,2,3,4,5,6,7); labels(4rr); +endchar; + +iff known chars.math_angle_3D: +bskchar "Threedimensional angle sign"; +beginchar(chars.math_angle_3D,12u#,.8asc_height#,0); uni "0x27C0"; +adjust_fit(0,0); +pickup tiny.nib; oblu.more:=2oblu; +numeric thr; +lft x1=u+.5rule_thickness; x2=x1; top y1=h; bot y2=bot y4l=bot y3l=0; +thr:=rule_thickness/abs(sind(angle(z2-z1))); +pos1(thr,0); pos2(thr,0); pos3(rule_thickness,90); pos4(rule_thickness,90); +rt x4=w-u; z3r=whatever[z2r,z1r]; +x5=x4-.5rule_thickness; y5=y1-.5rule_thickness; y6r=y4r; x6l=x1r; +pos5(rule_thickness,angle(z5-z2)-90); +z6r=z5r+whatever*(z2-z5); z6l=z5l+whatever*(z2-z5); z6=.5[z6l,z6r]; +bskpoints(4,3,rule_thickness,rule_thickness); bskpoints(5,6,rule_thickness,rule_thickness); +filldraw z1r---obl(6l,1r,5l).more--z5l..z5rr---obl(6r,5r,4r).more---z4rr..z4l---obl(2l,4l,1l)---z1l..cycle; +penlabels(1,2,3,4,5,6); labels(4rr); +endchar; + +iff known chars.math_propto_circ: +bskchar "Proportionality sign made from circles"; +beginchar(chars.math_propto_circ,1.5x_height#+2u#,x_height#,0); +adjust_fit(0,0); +pickup tiny.nib; +numeric shift, tim[]; path p[]; +lft x6=u+.5rule_thickness; y2=y0=.5h; x0=x8; y8-y4=x2-x6; top y8=h; +circle_points(rule_thickness); +forsuffixes $=8,7,6,5,4: z$ll-z$l=z$rr-z$r=shift*right; endfor; +z6ll=z2r; +p0=z2l{up}..z1l..{left}z8l..z7l..{down}z6l..z5l..{right}z4l..z3l..{up}z2l; +p1=z8ll{left}..z7ll..{down}z2r; +p2=z2r{down}..z5ll..{right}z4ll; +z9=bsktouch(p0,right,p1,left); z10=bsktouch(p0,right,p2,left); +tim0=xpart(p0 intersectiontimes (z9--(x8,y9))); +tim1=xpart(p1 intersectiontimes (z9--(x8ll,y9))); +tim2=xpart(p0 intersectiontimes (z10--(x8,y10))); +tim3=xpart(p2 intersectiontimes (z10--(x8ll,y10))); +filldraw subpath(0,rundy(p1,tim1).zpet) of p1 + ..subpath(rundy(p0,tim0),rundy(p0,tim2).zpet) of p0 + ..subpath(rundy(p2,tim3),infinity) of p2 + ..z4rr{left}..z2l{up}..{right}z8rr..cycle; +infill draw_circle.r; +labels(8ll,8rr,7ll,7rr,6ll,6rr,5ll,5rr,4ll,4rr); +endchar; + +iff known chars.math_sim_inv: +bskchar "Inverted similarity sign"; +beginchar(chars.math_sim_inv, 14u#, v_center(.5x_height#)); uni "0x223D"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=h+d; +vlnka_inv(0,1); +endchar; + +iff known chars.math_sim_inv_eq: +bskchar "Inverted similar or equal sign"; +beginchar(chars.math_sim_inv_eq, 14u#, v_center(.5x_height#+3u#)); uni "0x22CD"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=(h+d)-3u; +pos2(rule_thickness,90); pos3(rule_thickness,90); +top y0=h; lft x2=u; rt x3=w-u; y2l=y3l=-d; +vlnka_inv(0,1); +filldraw bskrule(2,3,hair,hair); +endchar; + +iff known chars.math_sim_inv_eq_double: +bskchar "Inverted similar or double equal sign (All equal to)"; +beginchar(chars.math_sim_inv_eq_double, 14u#, v_center(.95x_height#+2u#)); uni "0x224C"; +adjust_fit(0,0); +pickup tiny.nib; +numeric spread; spread:=.5x_height; +pos2(rule_thickness,90); pos3(rule_thickness,90); +pos4(rule_thickness,90); pos5(rule_thickness,90); +top y0=h; lft x2=lft x4=u; rt x3=rt x5=w-u; y2l=y3l=-d; y4=y5=y3+.45x_height; +vlnka_inv(0,1); +filldraw bskrule(2,3,hair,hair); +filldraw bskrule(4,5,hair,hair); +penlabels(2,3,4,5); +endchar; + +iff known chars.math_division_times: +bskchar "Division times sign"; +beginarithchar(chars.math_division_times); uni "0x22C7"; +pickup tiny.nib; +oblu:=1.5oblu; oblu.more:=2f_obl; +pos1(rule_thickness,135); pos2(rule_thickness,135); +pos3(rule_thickness,45); pos4(rule_thickness,45); +pos5(rule_thickness,90); pos6(rule_thickness,90); +lft x1r=lft x3l=2u; rt x2l=rt x4r=w-2u; +bot y1l=bot y4l=-d+u; top y2r=top y3r=h-u; +y5=y6=.5[y13,y14]=math_axis; lft x5=u; rt x6=w-u; +x13=x14=.5w; top y13+.25dot_size=y3r; +bskpoints(5,6,hair,hair); +z7=whatever[z4l,z3l]=whatever[z1l,z2l]; +z8=whatever[z1r,z2r]=whatever[z5l,z6l]; +z9=whatever[z3l,z4l]=whatever[z5r,z6r]; +z10=whatever[z3r,z4r]=whatever[z1r,z2r]; +z11=whatever[z2l,z1l]=whatever[z5r,z6r]; +z12=whatever[z4r,z3r]=whatever[z5l,z6l]; +filldraw z4l---obl(7,4l,1l)---z1l..z1r---obl(8,1r,5l).more---z5l + ..z5rr---obl(9,5r,3l).more---z3l..z3r---obl(10,3r,2r)---z2r + ..z2l---obl(11,2l,6r).more---z6r..z6ll---obl(12,6l,4r).more---z4r..cycle; +dot(13); dot(14); +penlabels(1,2,3,4,5,6); labels(5rr,6ll,7,8,9,10,11,12); +endchar; + +iff known chars.math_sunrise: +bskchar "Sunrise symbol"; +beginchar(chars.math_sunrise,13u#,.425x_height#+.5rule_thickness#+math_axis#,.225x_height#+.5rule_thickness#-math_axis#); uni "0x224F"; +adjust_fit(0,0); +pickup tiny.nib; path p[]; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos1'(rule_thickness,180); pos2'(rule_thickness,0); +lft x1=u; x2+x1=w; x3=x1; x4=x2; x5=.5[x1,x2]=.5[x1',x2']; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1-y3=.45x_height; +top y5r=h+o; y1'=y2'=y1r; x2'-x1'=2(y5-y2'); y2'l:=y1'l:=y2l; +bskpoints(1,2,hair,0); +p0=z1r--z1'r; +p1=z1'r{up}..z5r..{down}z2'r; +p2=z2'r--z2r; +p3=z2ll--z2'l; +p4=z2'l{up}..z5l..{down}z1'l; +p5=z1'l--z1l; +filldraw subpath(0,rundy(p0,1).zpet) of p0 + ..subpath(rundy(p1,0),rundy(p1,2).zpet) of p1 + ..subpath(rundy(p2,0),infinity) of p2{right} + ..subpath(0,rundy(p3,1).zpet) of p3 + ..subpath(rundy(p4,0),rundy(p4,2).zpet) of p4 + ..subpath(rundy(p5,0),infinity) of p5..cycle; +filldraw bskrule(4,3,hair,0); +penlabels(1,1',2,2',3,4,5); +endchar; + +iff known chars.math_equals_bumpy: +bskchar "Equals sign with bumpy"; +beginchar(chars.math_equals_bumpy,13u#,.65x_height#+.5rule_thickness#+math_axis#,.5x_height#+.5rule_thickness#-math_axis#); uni "0x2AAE"; +adjust_fit(0,0); +pickup tiny.nib; path p[]; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos6(rule_thickness,90); pos7(rule_thickness,90); +pos5(rule_thickness,90); pos1'(rule_thickness,180); pos2'(rule_thickness,0); +lft x1=lft x6=u; x2+x1=w; x3=x1; x4=x7=x2; x5=.5[x1,x2]=.5[x1',x2']; +y1=y2; y3=y4; y6=y7; .5[y1,y6]=y3=math_axis; y1-y3=.45x_height; +top y5r=h+o; y1'=y2'=y1r; x2'-x1'=2(y5-y2'); y2'l:=y1'l:=y2l; +bskpoints(1,2,hair,0); +p0=z1r--z1'r; +p1=z1'r{up}..z5r..{down}z2'r; +p2=z2'r--z2r; +p3=z2ll--z2'l; +p4=z2'l{up}..z5l..{down}z1'l; +p5=z1'l--z1l; +filldraw subpath(0,rundy(p0,1).zpet) of p0 + ..subpath(rundy(p1,0),rundy(p1,2).zpet) of p1 + ..subpath(rundy(p2,0),infinity) of p2{right} + ..subpath(0,rundy(p3,1).zpet) of p3 + ..subpath(rundy(p4,0),rundy(p4,2).zpet) of p4 + ..subpath(rundy(p5,0),infinity) of p5..cycle; +filldraw bskrule(3,4,hair,0); +filldraw bskrule(7,6,hair,0); +penlabels(1,1',2,2',3,4,5,6,7); +endchar; + +iff known chars.math_over_water: +bskchar "Over water symbol"; +beginchar(chars.math_over_water,13u#,.225x_height#+.5rule_thickness#+math_axis#,.425x_height#+.5rule_thickness#-math_axis#); uni "non"; +adjust_fit(0,0); +pickup tiny.nib; path p[]; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,270); pos3'(rule_thickness,180); pos4'(rule_thickness,0); +lft x1=u; x2+x1=w; x3=x1; x4=x2; x5=.5[x1,x2]=.5[x3',x4']; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1-y3=.45x_height; +bot y5r=-d-o; y3'=y4'=y3l; x4'-x3'=2(y3'-y5); +y4'l:=y3'l:=y4r; +bskpoints(4,3,hair,0); +p1=z3ll--z3'r; +p2=z3'r{down}..z5r..{up}z4'r; +p3=z4'r--z4l; +p4=z4r--z4'l; +p5=z4'l{down}..z5l..{up}z3'l; +p6=z3'l--z3r; +filldraw bskrule(1,2,hair,0); +filldraw subpath(0,rundy(p1,1).zpet) of p1 + ..subpath(rundy(p2,0),rundy(p2,2).zpet) of p2 + ..subpath(rundy(p3,0),infinity) of p3{right} + ..subpath(0,rundy(p4,1).zpet) of p4 + ..subpath(rundy(p5,0),rundy(p5,2).zpet) of p5 + ..subpath(rundy(p6,0),infinity) of p6..cycle; +penlabels(1,2,3,3',4,4',5,6); +endchar; + +iff known chars.math_sunrise_water: +bskchar "Sunrise over water symbol"; +beginchar(chars.math_sunrise_water,13u#,v_center(.85x_height#+rule_thickness#)); uni "0x224E"; +adjust_fit(0,0); +pickup tiny.nib; path p[]; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos5(rule_thickness,90); pos1'(rule_thickness,180); pos2'(rule_thickness,0); +pos6(rule_thickness,270); pos3'(rule_thickness,180); pos4'(rule_thickness,0); +lft x1=u; x2+x1=w; x3=x1; x4=x2; x5=x6=.5[x1,x2]=.5[x1',x2']=.5[x3',x4']; +y1=y2; y3=y4; .5[y1,y3]=math_axis; y1-y3=.45x_height; +top y5r=h+o; bot y6r=-d-o; y1'=y2'=y1r; y3'=y4'=y3l; x2'-x1'=x4'-x3'=2(y5-y2'); +y2'l:=y1'l:=y2l; y4'l:=y3'l:=y4r; +bskpoints(1,2,hair,0); bskpoints(4,3,hair,0); +p0=z1r--z1'r; +p1=z1'r{up}..z5r..{down}z2'r; +p2=z2'r--z2r; +p3=z2ll--z2'l; +p4=z2'l{up}..z5l..{down}z1'l; +p5=z1'l--z1l; +p6=z3ll--z3'r; +p7=z3'r{down}..z6r..{up}z4'r; +p8=z4'r--z4l; +p9=z4r--z4'l; +p10=z4'l{down}..z6l..{up}z3'l; +p11=z3'l--z3r; +filldraw subpath(0,rundy(p0,1).zpet) of p0 + ..subpath(rundy(p1,0),rundy(p1,2).zpet) of p1 + ..subpath(rundy(p2,0),infinity) of p2{right} + ..subpath(0,rundy(p3,1).zpet) of p3 + ..subpath(rundy(p4,0),rundy(p4,2).zpet) of p4 + ..subpath(rundy(p5,0),infinity) of p5..cycle; +filldraw subpath(0,rundy(p6,1).zpet) of p6 + ..subpath(rundy(p7,0),rundy(p7,2).zpet) of p7 + ..subpath(rundy(p8,0),infinity) of p8{right} + ..subpath(0,rundy(p9,1).zpet) of p9 + ..subpath(rundy(p10,0),rundy(p10,2).zpet) of p10 + ..subpath(rundy(p11,0),infinity) of p11..cycle; +penlabels(1,1',2,2',3,3',4,4',5,6); +endchar; + +iff known chars.math_pitchfork: +bskchar "Pitchfork symbol"; +beginchar(chars.math_pitchfork,11u#,asc_height#,0); uni "0x22D4"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; path p[]; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,0); pos7(rule_thickness,0); +bot y1=bot y5=bot y6=-d; top y3l=.7h; top y7=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=x6=x7=.5w; +y2=y4=y3-(x3-x2); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); bskpoints(6,7,0,hair); +p0=z1l---z2l...{right}z3l; +p1=z3l{right}...z4l---z5l; +p2=z5rr---z4r...{left}z3r; +p3=z3r{left}...z2r---z1rr; +p4=z6l--z7ll; +p5=z7r--z6r; +(tim0,tim1)=p0 intersectiontimes p4; +(tim2,tim3)=p1 intersectiontimes p5; +(tim4,tim5)=p2 intersectiontimes p5; +(tim6,tim7)=p3 intersectiontimes p4; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p4,tim1),infinity) of p4 + ..subpath(0,rundy(p5,tim3).zpet) of p5 + ..subpath(rundy(p1,tim2),infinity) of p1 + ..subpath(0,rundy(p2,(tim4,2oblu)).zpet) of p2 + ..subpath(rundy(p5,(tim5,2oblu)),infinity) of p5 + ..subpath(0,rundy(p4,(tim7,2oblu)).zpet) of p4 + ..subpath(rundy(p3,(tim6,2oblu)),infinity) of p3..cycle; +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr,7ll); +endchar; + +iff known chars.math_pitchfork_top: +bskchar "Pitchfork symbol with top"; +beginchar(chars.math_pitchfork_top,11u#,asc_height#,0); uni "0x2ADA"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; path p[]; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,0); pos7(rule_thickness,0); +pos8(rule_thickness,90); pos9(rule_thickness,90); +bot y1=bot y5=bot y6=-d; top y3l=.7h; top y8r=top y9r=h; y7=y8l; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=x6=x7=.5w; +y2=y4=y3-(x3-x2); .5[x8,x9]=x7; x9-x8=1.5(y7-y3); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); bskpoints(8,9,hair,hair); +p0=z1l---z2l...{right}z3l; +p1=z3l{right}...z4l---z5l; +p2=z5rr---z4r...{left}z3r; +p3=z3r{left}...z2r---z1rr; +p4=z6l---obl(7l,6l,8l)---z8l..z8rr---z9r; +p5=z9ll---obl(7r,9l,6r)---z6r; +(tim0,tim1)=p0 intersectiontimes p4; +(tim2,tim3)=p1 intersectiontimes p5; +(tim4,tim5)=p2 intersectiontimes p5; +(tim6,tim7)=p3 intersectiontimes p4; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p4,tim1),infinity) of p4 + ..subpath(0,rundy(p5,tim3).zpet) of p5 + ..subpath(rundy(p1,tim2),infinity) of p1 + ..subpath(0,rundy(p2,(tim4,2oblu)).zpet) of p2 + ..subpath(rundy(p5,(tim5,2oblu)),infinity) of p5 + ..subpath(0,rundy(p4,(tim7,2oblu)).zpet) of p4 + ..subpath(rundy(p3,(tim6,2oblu)),infinity) of p3..cycle; +penlabels(1,2,3,4,5,6,7,8,9); labels(1rr,5rr,7ll,8rr,9ll); +endchar; + +iff known chars.math_intersection_trans: +bskchar "Transversal intersection symbol"; +beginchar(chars.math_intersection_trans,11u#,asc_height#,.5desc_depth#); uni "0x2ADB"; +italcorr .8asc_height#*slant-u#; +adjust_fit(0,0); +pickup tiny.nib; +numeric tim[]; path p[]; +pos1(rule_thickness,0); pos2(rule_thickness,0); pos3(rule_thickness,-90); +pos4(rule_thickness,180); pos5(rule_thickness,180); +pos6(rule_thickness,0); pos7(rule_thickness,0); +bot y1=bot y5=0; bot y6=-d; top y3l=.7h; top y7=h+o; +lft x1l=lft x2l=u; x4l=x5l=w-x1l; x3=x6=x7=.5w; +y2=y4=y3-(x3-x2); +bskpoints(1,2,hair,hair); bskpoints(5,4,hair,hair); bskpoints(6,7,0,hair); +p0=z1l---z2l...{right}z3l; +p1=z3l{right}...z4l---z5l; +p2=z5rr---z4r...{left}z3r; +p3=z3r{left}...z2r---z1rr; +p4=z6l--z7ll; +p5=z7r--z6r; +(tim0,tim1)=p0 intersectiontimes p4; +(tim2,tim3)=p1 intersectiontimes p5; +(tim4,tim5)=p2 intersectiontimes p5; +(tim6,tim7)=p3 intersectiontimes p4; +filldraw subpath(0,rundy(p0,tim0).zpet) of p0 + ..subpath(rundy(p4,tim1),infinity) of p4 + ..subpath(0,rundy(p5,tim3).zpet) of p5 + ..subpath(rundy(p1,tim2),infinity) of p1 + ..subpath(0,rundy(p2,(tim4,2oblu)).zpet) of p2 + ..subpath(rundy(p5,(tim5,2oblu)),infinity) of p5 + ..subpath(0,rundy(p4,(tim7,2oblu)).zpet) of p4 + ..subpath(rundy(p3,(tim6,2oblu)),infinity) of p3..cycle; +penlabels(1,2,3,4,5,6,7); labels(1rr,5rr,7ll); +endchar; + +iff known chars.math_iron_cross: +bskchar "Iron cross"; +beginchar(chars.math_iron_cross,asc_height#+2u#,asc_height#,0); uni "0x2720"; +adjust_fit(0,0); +pickup tiny.nib; +numeric crw, tim[]; crw:=x_height; oblu:=2oblu; +path p[]; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos1'(crw,0); pos2'(crw,0); +pos3(rule_thickness,90); pos4(rule_thickness,90); +pos3'(crw,90); pos4'(crw,90); +x1=x2=x1'=x2'=.5w; x3=x1l; x4=x1r; top y1'=h; bot y2'=-d; +y3=y4=y3'=y4'=.5[h,-d]; y1=y3r; y2=y3l; lft x3'=u; rt x4'=w-u; +p1=z1'l..z1l---z2l..z2'l; +p2=z2'r..z2r---z1r..z1'r; +p3=z3'l..z3l---z4l..z4'l; +p4=z4'r..z4r---z3r..z3'r; +(tim0,tim1)=p1 intersectiontimes p4; +(tim2,tim3)=p1 intersectiontimes p3; +(tim4,tim5)=p2 intersectiontimes p3; +(tim6,tim7)=p2 intersectiontimes p4; +filldraw subpath(0,rundy(p1,tim0).zpet) of p1 + ..subpath(rundy(p4,tim1),infinity) of p4{down} + ..rt z3'..{down}subpath(0,rundy(p3,tim3).zpet) of p3 + ..subpath(rundy(p1,tim2),infinity) of p1{right} + ..top z2'..{right}subpath(0,rundy(p2,tim4).zpet) of p2 + ..subpath(rundy(p3,tim5),infinity) of p3{up} + ..lft z4'..{up}subpath(0,rundy(p4,tim7).zpet) of p4 + ..subpath(rundy(p2,tim6),infinity) of p2{left} + ..bot z1'..{left}cycle; +penlabels(1,1',2,2',3,3',4,4'); +endchar; + +iff known chars.math_bourbaki_C: +bskchar "Bourbaki C symbol"; +beginchar(chars.math_bourbaki_C,9.5u#, body_height#,0); uni "0x2201"; +adjust_fit(0,0); +pickup tiny.nib; +pos1(bourstem,180); pos2(bourstem,180); pos3(bourstem,270); +pos4(bourstem,0); pos5(bourstem,0); pos6(bourstem,90); +pos7(bourstem,180); pos8(bourstem,180); +rt x1l= rt x2l=rt x7l=rt x8l=w-u; lft x4l=lft x5l=u; +x3=x6=.5w; top y3l=h+o; bot y6l=-d-o; +y2-y1=y8-y7=bourstem; y4=y2; y5=y7; y3-y2=y7-y6=x2-x3-currentbreadth; +y2l:=y4l:=y2l+.35bourstem; y5l:=y7l:=y5l-.35bourstem; +if y1-y8