%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