diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/mnsymbol/source/Sym-Operators.mf |
Initial commit
Diffstat (limited to 'fonts/mnsymbol/source/Sym-Operators.mf')
-rw-r--r-- | fonts/mnsymbol/source/Sym-Operators.mf | 882 |
1 files changed, 882 insertions, 0 deletions
diff --git a/fonts/mnsymbol/source/Sym-Operators.mf b/fonts/mnsymbol/source/Sym-Operators.mf new file mode 100644 index 0000000000..bb93d8291d --- /dev/null +++ b/fonts/mnsymbol/source/Sym-Operators.mf @@ -0,0 +1,882 @@ + +for scale = 1, 1.4: + beginsquarebigop(scale, scale); "big plus"; + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + draw (centre + op_height/2 * dir 0) -- (centre + op_height/2 * dir 180); + draw (centre + op_height/2 * dir 90) -- (centre + op_height/2 * dir 270); + endchar; +endfor; +charlist current_char - 1: current_char; + +for scale = 1, 1.4: + beginbigop(scale, scale); "big times"; + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + z1 - z0 = z3 - z2 = op_width * dir 0; + z2 - z0 = op_width * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + draw z0 -- z3; + draw z1 -- z2; + endchar; +endfor; +charlist current_char - 1: current_char; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(scale, scale); "big wedge"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + z3 - z0 = z2 - z1 = op_width * dir 0; + z1 - z0 = sign * op_height * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + draw z0 -- 1/2[z1, z2] -- z3; + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(scale, scale); "big wedge dot"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + z3 - z0 = z2 - z1 = op_width * dir 0; + z1 - z0 = sign * op_height * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + draw z0 -- 1/2[z1, z2] -- z3; + fill circle(centre - sign * 1/4op_height * dir 90, 4/3dot_size * sqrt scale); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(6/5scale, scale); "double big wedge"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + z3 - z0 = z2 - z1 = 5/6op_width * dir 0; + z1 - z0 = sign * op_height * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + 1/2[z0a,z0b] = z0; + 1/2[z1a,z1b] = 1/2[z1, z2]; + 1/2[z2a,z2b] = z3; + z0b - z0a = z1b - z1a = z2b - z2a = 1/3(plus_size + 11/5rule_thickness) * dir 0; + + draw z0a -- z1a -- z2a; + draw z0b -- z1b -- z2b; + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(scale, scale); "big curly wedge"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + draw prec(centre + sign * op_height/2 * dir 90, + centre - sign * op_height/2 * dir 90, + op_width); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(scale, scale); "big curly wedge dot"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + draw prec(centre + sign * op_height/2 * dir 90, + centre - sign * op_height/2 * dir 90, + op_width); + fill circle(centre - sign * 3/8op_height * dir 90, 4/3dot_size * sqrt scale); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(6/5scale, scale); "double big curly wedge"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + 1/2[z0,z1] = centre; + z1 - z0 = 1/3(plus_size + 11/5rule_thickness) * dir 0; + + draw prec(z0 + sign * op_height/2 * dir 90, + z0 - sign * op_height/2 * dir 90, + 5/6op_width); + draw prec(z1 + sign * op_height/2 * dir 90, + z1 - sign * op_height/2 * dir 90, + 5/6op_width); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(scale, scale); "big union"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + draw subset(centre + sign * op_height/2 * dir 90, + centre - sign * op_height/2 * dir 90, + op_width); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(scale, scale); "big union dot"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + draw subset(centre + sign * op_height/2 * dir 90, + centre - sign * op_height/2 * dir 90, + op_width); + fill circle(centre - sign * 1/8op_height * dir 90, 4/3dot_size * sqrt scale); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(scale, scale); "big union plus"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + draw subset(centre + sign * op_height/2 * dir 90, + centre - sign * op_height/2 * dir 90, + op_width); + + t := 2rule_thickness; + r := 3/8op_width - t; + + draw (centre - sign * 1/8op_width * dir 90 + r * dir 0) + -- (centre - sign * 1/8op_width * dir 90 + r * dir 180); + draw (centre + (r - sign * 1/8op_width) * dir 90) + -- (centre + (r + sign * 1/8op_width) * dir 270); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(scale, scale); "big square union"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + z3 - z0 = z2 - z1 = op_width * dir 0; + z1 - z0 = sign * op_height * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + draw z0 -- z1 -- z2 -- z3; + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(scale, scale); "big square union dot"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + z3 - z0 = z2 - z1 = op_width * dir 0; + z1 - z0 = sign * op_height * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + draw z0 -- z1 -- z2 -- z3; + fill circle(centre - sign * 1/8op_height * dir 90, 4/3dot_size * sqrt scale); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 1, 1.4: + beginbigop(scale, scale); "big square union plus"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + z3 - z0 = z2 - z1 = op_width * dir 0; + z1 - z0 = sign * op_height * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + draw z0 -- z1 -- z2 -- z3; + + t := 2rule_thickness; + r := 3/8op_width - t; + + draw (centre - sign * 1/8op_width * dir 90 + r * dir 0) + -- (centre - sign * 1/8op_width * dir 90 + r * dir 180); + draw (centre + (r - sign * 1/8op_width) * dir 90) + -- (centre + (r + sign * 1/8op_width) * dir 270); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for scale = 1, 1.4: + beginsquarebigop(scale, scale); "big circle"; + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + draw circle(centre, op_height/2); + endchar; +endfor; +charlist current_char - 1: current_char; + +for alpha = 0, 90, 45, 135: + for scale = 1, 1.4: + beginsquarebigop(scale, scale); "big circle minus"; + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + r := op_height/2 - 11/10 * (4/3rule_thickness * sqrt scale); + + draw circle(centre, op_height/2); + draw (centre - r * dir alpha) -- (centre + r * dir alpha); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for alpha = 0, 45: + for scale = 1, 1.4: + beginsquarebigop(scale, scale); "big circle plus"; + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + r := op_height/2 - 11/10 * (4/3rule_thickness * sqrt scale); + + draw circle(centre, op_height/2); + draw (centre - r * dir alpha) -- (centre + r * dir alpha); + draw (centre - r * dir (alpha + 90)) -- (centre + r * dir (alpha + 90)); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for scale = 1, 1.4: + beginsquarebigop(scale, scale); "big circle dot"; + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + draw circle(centre, op_height/2); + fill circle(centre, scale * 1.3dot_size); + endchar; +endfor; +charlist current_char - 1: current_char; + +for scale = 1, 1.4: + beginsquarebigop(scale, scale); "big circle circle"; + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + draw circle(centre, op_height/2); + draw circle(centre, op_height/5); + endchar; +endfor; +charlist current_char - 1: current_char; + +for scale = 1, 1.4: + beginsquarebigop(scale, scale); "big circle triangle"; + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + draw circle(centre, op_height/2); + + pickup rule_pen; + + draw triangle(centre, op_height/5, 90); + endchar; +endfor; +charlist current_char - 1: current_char; + +for scale = 1, 1.4: + beginsquarebigop(scale, scale); "big circle asterisk"; + thick := 4/3rule_thickness * sqrt scale; + + pickup pencircle scaled thick; + + r := op_height/2 - 11/10rule_thickness * (4/3 * sqrt scale); + + draw circle(centre, op_height/2); + + penpos a0(4/3thick, 0 - 7); + penpos a1(4/3thick, 72 - 7); + penpos a2(4/3thick, 144 - 7); + penpos a3(4/3thick, 216 - 7); + penpos a4(4/3thick, 288 - 7); + + penpos b0(2/3thick, 0 - 7); + penpos b1(2/3thick, 72 - 7); + penpos b2(2/3thick, 144 - 7); + penpos b3(2/3thick, 216 - 7); + penpos b4(2/3thick, 288 - 7); + + reg_poly_points(a)(5, centre, r, 77); + + z.b0 = z.b1 = z.b2 = z.b3 = z.b4 = centre; + + fill stroke z.a0e -- z.b0e; + fill stroke z.a1e -- z.b1e; + fill stroke z.a2e -- z.b2e; + fill stroke z.a3e -- z.b3e; + fill stroke z.a4e -- z.b4e; + endchar; +endfor; +charlist current_char - 1: current_char; + +for scale = 1, 1.4: + beginsquarebigop(scale, scale); "big circle star"; + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + r := op_height/2 - 11/10rule_thickness * (4/3 * sqrt scale); + + draw circle(centre, op_height/2); + + pickup rule_pen; + + reg_poly_points(a)(5, centre, r, 90); + reg_poly_points(b)(5, centre, r/10, 126); + + draw z.a0 -- z.b0 -- z.a1 -- z.b1 -- z.a2 -- z.b2 -- z.a3 -- z.b3 -- z.a4 -- z.b4 -- cycle; + fill z.a0 -- z.b0 -- z.a1 -- z.b1 -- z.a2 -- z.b2 -- z.a3 -- z.b3 -- z.a4 -- z.b4 -- cycle; + endchar; +endfor; +charlist current_char - 1: current_char; + +for sign = 1, -1: + for scale = 1.1, 1.54: + beginbigop(1.1scale, scale); "product"; + draw_product(centre, op_width, op_height, sign, 5/3rule_thickness * sqrt scale); + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +def draw_sum(suffix $)(expr centre, width, height, thick) = + thin := 2/3thick; + + z1$ - z0$ = z3$ - z2$ = width * dir 0; + z2$ - z0$ = height * dir 90; + + 1/2[1/2[z0$,z1$], 1/2[z2$,z3$]] = centre; + + z4$ - z1$ = z3$ - z5$ = 1/5height * dir 90; + + z6$ = whatever[z0$,z1$] = z4$ - whatever * dir 77; + z7$ = whatever[z2$,z3$] = z5$ + whatever * dir -77; + + penpos 0$(thick, 90); + penpos 6$(thick, 90); + penpos 4$(thin, 167); + penpos 2$(thin, -90); + penpos 7$(thin, -90); + penpos 5$(thin, 203); + + z8$ = centre; + penpos 8$(2thin, 20); + + z9$ = z8$r + whatever * (z2$r - z8$l) = whatever[z2$r,z7$r]; + + z10$ = z0$l + thin * dir 90; + z11$ = z8$r + whatever * (z10$ - z8$l); + y11$ = y10$; + + z12$ = whatever[z10$,z8$l]; + y12$ = y0$r; + + fill z0$l -- z6$l -- z4$l -- z4$r{-dir 77} .. {dir 180}1/4[z6$r,z0$r] -- z12$ -- z10$ -- cycle; + fill z2$l -- z7$l -- z5$l -- z5$r{dir 113} .. {dir 180}1/4[z7$r,z2$r] -- z2$r -- cycle; + fill z2$r -- z8$l -- z8$r -- z9$ -- cycle; + fill z10$ -- z8$l -- z8$r -- z11$ -- cycle; +enddef; + +for scale = 1.1, 1.54: + beginbigop(scale, scale); "sum"; + draw_sum(a)(centre, op_width, op_height, 4/3rule_thickness * sqrt scale); + endchar; +endfor; +charlist current_char - 1: current_char; + +for number = 0, 1, 2, 3: + for scale = 1, 1.8: + + display_shift# := (1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := (scale-1) * 1/2order_width#; + define_whole_pixels(display_shift, text_shift); + + beginsymbol(scale * (1/2 + 2/3number) * order_width# + 2side_bearing# + display_shift# - text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "integral"; + + italcorr (1 + 3/2(scale-1)) * 2/3order_width#; % kerning between upper limit and lower limit + + pair centre; + + for i = 0 upto number: + centre := ((w - scale * (number - 2*i) * 2/3order_width + display_shift + text_shift)/2, + (h - d)/2); + + draw_integral([i])(scale, centre); + endfor; + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for scale = 1, 1.8: + + display_shift# := (1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := (scale-1) * 1/2order_width#; + define_whole_pixels(display_shift, text_shift); + + beginsymbol(scale * (1/2 + 1) * order_width# + 2side_bearing# + display_shift# - text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "integral dots"; + + italcorr (1 + 3/2(scale-1)) * 2/3order_width#; % kerning between upper limit and lower limit + + pair centre; + + centre := ((w - 2scale * order_width + display_shift + text_shift)/2, + (h - d)/2); + + draw_integral([0])(scale, centre); + + centre := ((w + 2scale * order_width + display_shift + text_shift)/2, + (h - d)/2); + + draw_integral([2])(scale, centre); + + z0 = 1/4[z0[0],z0[2]]; + z1 = 2/4[z0[0],z0[2]]; + z2 = 3/4[z0[0],z0[2]]; + + fill circle(z0, dot_size); + fill circle(z1, dot_size); + fill circle(z2, dot_size); + endchar; +endfor; +charlist current_char - 1: current_char; + +for sign = 1, -1: + for scale = 1, 1.8: + + display_shift# := (1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := (scale-1) * 1/2order_width#; + define_whole_pixels(display_shift, text_shift); + + beginsymbol(scale * 1/2order_width# + 2side_bearing# + display_shift# - text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "landup/down integral"; + + italcorr (1 + 3/2(scale-1)) * 2/3order_width#; % kerning between upper limit and lower limit + + pair centre; + + centre := ((w + display_shift + text_shift)/2, (h - d)/2); + + draw_integral(a)(scale, centre); + + pickup pencircle scaled 1/2thick; + + z0 = z0a + sign * sqrt scale * (-2thick, -2/3thick); + z1 = z0a + sign * sqrt scale * ( 0, 2/3thick); + z2 = z0a + sign * sqrt scale * ( 2thick, -2/3thick); + + draw z0 .. z1 .. z2; + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for scale = 1, 1.8: + + display_shift# := (1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := (scale-1) * 1/2order_width#; + define_whole_pixels(display_shift, text_shift); + + beginsymbol(scale * 1/2order_width# + 2side_bearing# + display_shift# - text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "stroked integral"; + + italcorr (1 + 3/2(scale-1)) * 2/3order_width#; % kerning between upper limit and lower limit + + pair centre; + + centre := ((w + display_shift + text_shift)/2, (h - d)/2); + + draw_integral(a)(scale, centre); + + alpha := angle (z1a - z3a) - 70; + + pickup pencircle scaled 1/2thick; + + draw (z0a - sqrt scale * 2thick * dir alpha) -- (z0a + sqrt scale * 2thick * dir alpha); + endchar; +endfor; +charlist current_char - 1: current_char; + +for number = 0, 1: + for scale = 1, 1.8: + + display_shift# := (1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := (scale-1.3) * 4/5order_width#; + define_whole_pixels(display_shift, text_shift); + + beginsymbol(scale * (1/2 + 2/3number) * order_width# + 2side_bearing# + display_shift# - text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "contour integral"; + + italcorr (1 + 3/2(scale-1)) * 2/3order_width#; % kerning between upper limit and lower limit + + pair centre; + + for i = 0 upto number: + centre := ((w - scale * (number - 2*i) * 2/3order_width + display_shift + text_shift)/2, + (h - d)/2); + + draw_integral([i])(scale, centre); + endfor; + + centre := 1/2[z0[0], z0[number]]; + + pickup pencircle scaled 5/12thick; + + if number = 0: + draw circle(centre, 2thick * sqrt scale); + else: + draw super_ellipse(centre, + (2thick + number * 5/5thick) * sqrt scale, + (2thick + number * 1/5thick) * sqrt scale, + 7/8, 0); + fi; + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for alpha = -90, 90: + for sign = 1, -1: + for scale = 1, 1.8: + + display_shift# := (1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := (scale-1.3) * 4/5order_width#; + define_whole_pixels(display_shift, text_shift); + + beginsymbol(scale * 1/2order_width# + 2side_bearing# + display_shift# - text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "oriented contour integral"; + + italcorr (1 + 3/2(scale-1)) * 2/3order_width#; % kerning between upper limit and lower limit + + pair centre; + centre := ((w+display_shift+text_shift)/2, (h-d)/2); + + draw_integral(a)(scale, centre); + + pickup pencircle scaled 5/12thick; + + r := 2thick * sqrt scale; + + beta := alpha + angle (z1a - z3a) + 25sign; + + reg_poly_points(a)(8, z0a, r, beta); + + z0 = z0a + r * dir (beta + 10); + z1 = z0a + r * dir (beta - 10); + + draw z0{dir (beta + 100)} .. z.a1 .. z.a2 .. z.a3 .. z.a4 .. z.a5 .. z.a6 .. z.a7 .. + {dir (beta + 80)}z1; + + if sign > 0: + draw arrowhead(z1, (beta + 65), 1/2scale * arrow_spread); + else: + draw arrowhead(z0, (beta - 65), 1/2scale * arrow_spread); + fi; + endchar; + endfor; + charlist current_char - 1: current_char; + endfor; +endfor; + +for scale = 1, 1.8: + + display_shift# := (1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := (scale-1) * 1/2order_width#; + define_whole_pixels(display_shift, text_shift); + + beginsymbol(scale * 1/2order_width# + 2side_bearing# + display_shift# - text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "sum integral"; + + italcorr (1 + 3/2(scale-1)) * 2/3order_width#; % kerning between upper limit and lower limit + + pair centre; + + centre := ((w + display_shift + text_shift)/2, (h - d)/2); + + draw_integral(a)(scale, centre); + draw_sum(b, 1/3[z0a.l,z0a.r], scale * order_width, 3/4scale * asc_height, 1/2thick); + + endchar; +endfor; +charlist current_char - 1: current_char; + +%for scale = 1, 1.8: +% +% display_shift# := 0;%(1 + 5/2(scale-1)) * 1/4order_width#; +% text_shift# := -2/8order_width#; +% script_delta# := (1 + 3/2(scale-1)) * 1/2order_width#; +% define_whole_pixels(display_shift, text_shift, script_delta); +% +% beginsymbol(scale * 1/2 * order_width# + 2side_bearing# - display_shift# - 2text_shift#, +% ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, +% (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); +% "partial integral"; +% +% italcorr script_delta#; % kerning between upper limit and lower limit +% endchar; +%endfor; +%charlist current_char - 1: current_char; + +for scale = 1, 1.8: + + display_shift# := 0;%(1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := -2/8order_width#; + script_delta# := (1 + 3/2(scale-1)) * 1/2order_width#; + define_whole_pixels(display_shift, text_shift, script_delta); + + beginsymbol(scale * (1/2 + 1) * order_width# + 2side_bearing# - display_shift# - 2text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "partial integral dots"; + + italcorr (1 + 3/2(scale-1)) * 2/3order_width#; % kerning between upper limit and lower limit + + pair centre; + + centre := (1/2(w + script_delta), (h-d)/2); + + z0 = centre + 1/2scale * order_width * left; + z1 = centre; + z2 = centre + 1/2scale * order_width * right; + + fill circle(z0, dot_size); + fill circle(z1, dot_size); + fill circle(z2, dot_size); + endchar; +endfor; +charlist current_char - 1: current_char; + +for sign = 1, -1: + for scale = 1, 1.8: + + display_shift# := 0;%(1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := -4/8order_width# + 5/4(scale-1) * 2/8order_width#; + script_delta# := (1/2 + 4/2(scale-1)) * 1/2order_width#; + define_whole_pixels(display_shift, text_shift, script_delta); + + beginsymbol(scale * 1/2 * order_width# + 2side_bearing# - display_shift# - 2text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "partial landup/down integral"; + + italcorr script_delta#; % kerning between upper limit and lower limit + + pair centre; + + centre := (1/2(w + script_delta), (h-d)/2); + + pickup pencircle scaled 1/2thick; + + z0 = centre + sign * sqrt scale * (-2thick, -2/3thick); + z1 = centre + sign * sqrt scale * ( 0, 2/3thick); + z2 = centre + sign * sqrt scale * ( 2thick, -2/3thick); + + draw z0 .. z1 .. z2; + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for scale = 1, 1.8: + + display_shift# := 0;%(1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := -4/8order_width# + 5/4(scale-1) * 2/8order_width#; + script_delta# := (1/2 + 4/2(scale-1)) * 1/2order_width#; + define_whole_pixels(display_shift, text_shift, script_delta); + + beginsymbol(scale * 1/2 * order_width# + 2side_bearing# - display_shift# - 2text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "partial stroked integral"; + + italcorr script_delta#; % kerning between upper limit and lower limit + + pair centre; + + centre := (1/2(w + script_delta), (h-d)/2); + + alpha := 10; + + pickup pencircle scaled 1/2thick; + + draw (centre - sqrt scale * 2thick * dir alpha) -- (centre + sqrt scale * 2thick * dir alpha); + endchar; +endfor; +charlist current_char - 1: current_char; + +for number = 0, 1: + for scale = 1, 1.8: + + display_shift# := 0;%(1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := -4/8order_width# + 5/4(scale-1) * 2/8order_width#; + script_delta# := (1/2 + 4/2(scale-1)) * 1/2order_width#; + define_whole_pixels(display_shift, text_shift, script_delta); + + beginsymbol(scale * (1/2 + 2/3number) * order_width# + 2side_bearing# - display_shift# - 2text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "partial contour integral"; + + italcorr script_delta#; % kerning between upper limit and lower limit + + pair centre; + + centre := (1/2(w + script_delta), (h-d)/2); + + pickup pencircle scaled (5/12thick * sqrt scale); + + if number = 0: + draw circle(centre, 2thick * sqrt scale); + else: + draw super_ellipse(centre, + (2thick + number * 5/5thick) * sqrt scale, + (2thick + number * 1/5thick) * sqrt scale, + 7/8, 0); + fi; + endchar; + endfor; + charlist current_char - 1: current_char; +endfor; + +for alpha = -90, 90: + for sign = 1, -1: + for scale = 1, 1.8: + + display_shift# := 0;%(1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := -4/8order_width# + 5/4(scale-1) * 2/8order_width#; + script_delta# := (1/2 + 4/2(scale-1)) * 1/2order_width#; + define_whole_pixels(display_shift, text_shift, script_delta); + + beginsymbol(scale * 1/2order_width# + 2side_bearing# - display_shift# - 2text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "partial oriented contour integral"; + + italcorr script_delta#; % kerning between upper limit and lower limit + + pair centre; + centre := (1/2(w + script_delta), (h-d)/2); + + pickup pencircle scaled (5/12thick * sqrt scale); + + r := 2thick * sqrt scale; + + beta := alpha + 80 + 25sign; + + reg_poly_points(a)(8, centre, r, beta); + + z0 = centre + r * dir (beta + 10); + z1 = centre + r * dir (beta - 10); + + draw z0{dir (beta + 100)} .. z.a1 .. z.a2 .. z.a3 .. z.a4 .. z.a5 .. z.a6 .. z.a7 .. + {dir (beta + 80)}z1; + + if sign > 0: + draw arrowhead(z1, (beta + 65), 1/2scale * arrow_spread); + else: + draw arrowhead(z0, (beta - 65), 1/2scale * arrow_spread); + fi; + endchar; + endfor; + charlist current_char - 1: current_char; + endfor; +endfor; + +for scale = 1, 1.8: + + display_shift# := (1 + 5/2(scale-1)) * 1/4order_width#; + text_shift# := (scale-1) * 1/2order_width#; + define_whole_pixels(display_shift, text_shift); + + beginsymbol(scale * 1/2order_width# + 2side_bearing# + display_shift# - text_shift#, + ((scale - 1)/2 + 1) * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#, + (scale - 1)/2 * 1.4asc_height# + scale * 1/6equal_spread# + 2/3rule_thickness#); + "partial sum integral"; + + italcorr (1 + 3/2(scale-1)) * 2/3order_width#; % kerning between upper limit and lower limit + + pair centre; + + z0 = (1/2(w + script_delta), (h-d)/2); + + penpos0(4/5thick, 0); + + draw_sum(a, 1/3[z0l,z0r], scale * order_width, 3/4scale * asc_height, 1/2thick * sqrt scale); + + endchar; +endfor; +charlist current_char - 1: current_char; + +for scale = 1, 1.4: + beginbigop(3/4scale, scale); "complement"; + + pickup pencircle scaled (4/3rule_thickness * sqrt scale); + + z0 = centre + op_height/2 * up; + z1 = centre - op_height/2 * up; + z2 = centre - op_width/2 * right; + z3 = centre + op_width/2 * right; + + draw (1/4[z0,z1] + op_width/2 * right){up} + .. z0 + .. {down}(1/3[z0,z1] - op_width/2 * right) + -- (2/3[z0,z1] - op_width/2 * right){down} + .. z1 + .. (3/4[z0,z1] + op_width/2 * right){up}; + endchar; +endfor; +charlist current_char - 1: current_char; + |