diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source')
121 files changed, 7562 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbol-Parameter.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbol-Parameter.mf new file mode 100644 index 00000000000..49690cc658f --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbol-Parameter.mf @@ -0,0 +1,51 @@ + +input Sym-Init; + +if bold_weight: + u# := interpolate(1/36pt#)(12.5, 14, 15.5, 17, 18.5, 20, 23.5); + asc_height# := interpolate(1/36pt#)( 120, 144, 168, 192, 216, 240, 288); + desc_depth# := interpolate(1/36pt#)( 35, 42, 49, 56, 63, 70, 84); + x_height# := interpolate(1/36pt#)( 77, 92, 107, 123, 138, 154, 184); + math_axis# := interpolate(1/36pt#)( 46, 55, 64, 73, 82, 92, 110); + rule_thickness# := 1.5 * interpolate(1/100pt#)( 31, 34, 38, 40, 42, 45, 54); + + side_bearing# := 1.5u#; + small_op_size# := 7u#; % radius of small operators + med_op_size# := 12u#; % radius of medium operators + plus_size# := 4/5med_op_size#-11/5rule_thickness#; + large_op_size# := 18u#; % radius of large operators + order_width# := 7u#; % width of equal sign + equal_spread# := .7math_axis#; % distance between the lines of the equal sign + greater_spread# := 10/4equal_spread#; % distance between the ends of the greater sign + arrow_horiz_len# := 12u#; % length of horizontal arrows + arrow_vert_len# := 3math_axis#; % length of vertical arrows + arrow_diag_len# := 0.5(arrow_horiz_len# + arrow_vert_len#); + arrow_spread# := 1.6equal_spread#; + delim_height# := 15/20asc_height#; + + dot_size# := 1.5 * 35/36u#; +else: + u# := interpolate(1/36pt#)(12.5, 14, 15.5, 17, 18.5, 20, 23.5); + asc_height# := interpolate(1/36pt#)( 120, 144, 168, 192, 216, 240, 288); + desc_depth# := interpolate(1/36pt#)( 35, 42, 49, 56, 63, 70, 84); + x_height# := interpolate(1/36pt#)( 77, 92, 107, 123, 138, 154, 184); + math_axis# := interpolate(1/36pt#)( 46, 55, 64, 73, 82, 92, 110); + rule_thickness# := interpolate(1/100pt#)( 31, 34, 38, 40, 42, 45, 54); + + side_bearing# := 1.5u#; + small_op_size# := 7u#; % radius of small operators + med_op_size# := 12u#; % radius of medium operators + plus_size# := 4/5med_op_size#-11/5rule_thickness#; + large_op_size# := 18u#; % radius of large operators + order_width# := 7u#; % width of equal sign + equal_spread# := .7math_axis#; % distance between the lines of the equal sign + greater_spread# := 10/4equal_spread#; % distance between the ends of the greater sign + arrow_horiz_len# := 12u#; % length of horizontal arrows + arrow_vert_len# := 3math_axis#; % length of vertical arrows + arrow_diag_len# := 0.5(arrow_horiz_len# + arrow_vert_len#); + arrow_spread# := 1.6equal_spread#; + delim_height# := 15/20asc_height#; + + dot_size# := 35/36u#; +fi; + diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold.mf new file mode 100644 index 00000000000..6a3ea69466d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold.mf @@ -0,0 +1,16 @@ + +font_identifier:="MnSymbolA-Bold"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := true; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; + +boolean negated; +negated := false; + +input Sym-Arrows.mf; + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold10.mf new file mode 100644 index 00000000000..474a066a303 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolA-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold12.mf new file mode 100644 index 00000000000..9590b7d0c68 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolA-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold5.mf new file mode 100644 index 00000000000..8072172c1db --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolA-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold6.mf new file mode 100644 index 00000000000..8f11d76e4d7 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolA-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold7.mf new file mode 100644 index 00000000000..9144bc3d936 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolA-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold8.mf new file mode 100644 index 00000000000..ef1f5347e49 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolA-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold9.mf new file mode 100644 index 00000000000..097021d83a4 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA-Bold9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolA-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA.mf new file mode 100644 index 00000000000..85489eccf65 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA.mf @@ -0,0 +1,16 @@ + +font_identifier:="MnSymbolA"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := false; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; + +boolean negated; +negated := false; + +input Sym-Arrows.mf; + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA10.mf new file mode 100644 index 00000000000..b08a02d8d9f --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolA; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA12.mf new file mode 100644 index 00000000000..0052b6750c3 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolA; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA5.mf new file mode 100644 index 00000000000..d9dad303472 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolA; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA6.mf new file mode 100644 index 00000000000..81bd6ccd7a5 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolA; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA7.mf new file mode 100644 index 00000000000..bf670974081 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolA; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA8.mf new file mode 100644 index 00000000000..35c6f1d0599 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolA; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA9.mf new file mode 100644 index 00000000000..ffd17fcc867 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolA9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolA; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold.mf new file mode 100644 index 00000000000..0460c37ba53 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold.mf @@ -0,0 +1,16 @@ + +font_identifier:="MnSymbolB-Bold"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := true; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; + +boolean negated; +negated := true; + +input Sym-Arrows.mf; + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold10.mf new file mode 100644 index 00000000000..f4e60decc9a --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolB-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold12.mf new file mode 100644 index 00000000000..c2e2ee94f16 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolB-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold5.mf new file mode 100644 index 00000000000..376ba0b786d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolB-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold6.mf new file mode 100644 index 00000000000..8c01e7cf2ae --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolB-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold7.mf new file mode 100644 index 00000000000..61826361ec2 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolB-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold8.mf new file mode 100644 index 00000000000..132731b80c0 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolB-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold9.mf new file mode 100644 index 00000000000..a80db75b88f --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB-Bold9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolB-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB.mf new file mode 100644 index 00000000000..d221e1e0171 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB.mf @@ -0,0 +1,16 @@ + +font_identifier:="MnSymbolB"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := false; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; + +boolean negated; +negated := true; + +input Sym-Arrows.mf; + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB10.mf new file mode 100644 index 00000000000..21ef6913632 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolB; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB12.mf new file mode 100644 index 00000000000..191e0041436 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolB; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB5.mf new file mode 100644 index 00000000000..a6b344b6a57 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolB; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB6.mf new file mode 100644 index 00000000000..93e2cca5abd --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolB; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB7.mf new file mode 100644 index 00000000000..6f935e60bfa --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolB; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB8.mf new file mode 100644 index 00000000000..edf188e984a --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolB; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB9.mf new file mode 100644 index 00000000000..f60246e0362 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolB9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolB; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold.mf new file mode 100644 index 00000000000..0bb70c1a740 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold.mf @@ -0,0 +1,13 @@ + +font_identifier:="MnSymbolC-Bold"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := true; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; + +input Sym-Geometric.mf; + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold10.mf new file mode 100644 index 00000000000..73ec65c5d27 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolC-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold12.mf new file mode 100644 index 00000000000..7115409841d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolC-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold5.mf new file mode 100644 index 00000000000..49e39745df1 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolC-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold6.mf new file mode 100644 index 00000000000..c55fc352ed7 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolC-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold7.mf new file mode 100644 index 00000000000..387086a6755 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolC-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold8.mf new file mode 100644 index 00000000000..45f532edfd2 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolC-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold9.mf new file mode 100644 index 00000000000..db9b09e1100 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC-Bold9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolC-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC.mf new file mode 100644 index 00000000000..e7ebf61ee05 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC.mf @@ -0,0 +1,13 @@ + +font_identifier:="MnSymbolC"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := false; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; + +input Sym-Geometric.mf; + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC10.mf new file mode 100644 index 00000000000..a8718dfb4c8 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolC; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC12.mf new file mode 100644 index 00000000000..2ac52af9dea --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolC; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC5.mf new file mode 100644 index 00000000000..edbb14ea699 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolC; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC6.mf new file mode 100644 index 00000000000..1031f1561ee --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolC; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC7.mf new file mode 100644 index 00000000000..4a09a10805b --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolC; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC8.mf new file mode 100644 index 00000000000..d2396f8ba34 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolC; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC9.mf new file mode 100644 index 00000000000..14cb0070422 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolC9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolC; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold.mf new file mode 100644 index 00000000000..1052b6af1e3 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold.mf @@ -0,0 +1,23 @@ + +font_identifier:="MnSymbolD-Bold"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := true; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; + +negated := 0; + +input Sym-Order.mf; + +negated := 1; + +input Sym-Order.mf; + +negated := 2; + +input Sym-Order.mf; + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold10.mf new file mode 100644 index 00000000000..4f95df55ce9 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolD-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold12.mf new file mode 100644 index 00000000000..403858077df --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolD-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold5.mf new file mode 100644 index 00000000000..fb1293a9284 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolD-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold6.mf new file mode 100644 index 00000000000..b653afff7ff --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolD-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold7.mf new file mode 100644 index 00000000000..4012179199d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolD-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold8.mf new file mode 100644 index 00000000000..6233ab2398c --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolD-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold9.mf new file mode 100644 index 00000000000..bc577235f91 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD-Bold9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolD-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD.mf new file mode 100644 index 00000000000..26abd7bb89a --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD.mf @@ -0,0 +1,23 @@ + +font_identifier:="MnSymbolD"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := false; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; + +negated := 0; + +input Sym-Order.mf; + +negated := 1; + +input Sym-Order.mf; + +negated := 2; + +input Sym-Order.mf; + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD10.mf new file mode 100644 index 00000000000..f9bae5a6b31 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolD; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD12.mf new file mode 100644 index 00000000000..d483167bb6b --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolD; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD5.mf new file mode 100644 index 00000000000..870242b7ef8 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolD; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD6.mf new file mode 100644 index 00000000000..557e0b8f2a3 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolD; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD7.mf new file mode 100644 index 00000000000..48702d94bb4 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolD; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD8.mf new file mode 100644 index 00000000000..aaa6e7677cb --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolD; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD9.mf new file mode 100644 index 00000000000..e2014caf75c --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolD9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolD; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold.mf new file mode 100644 index 00000000000..2c6b544661e --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold.mf @@ -0,0 +1,25 @@ + +font_identifier:="MnSymbolE-Bold"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := true; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; +input Sym-Delim.mf; + +current_char := 193; +input Sym-Accent.mf; + +font_x_height x_height#; + +fontdimen 8: + rule_thickness#, % default_rule_thickness + interpolate(1/36pt#)( 20, 24, 28, 32, 36, 40, 44), % big_op_spacing1 + interpolate(1/36pt#)( 30, 36, 42, 48, 54, 60, 66), % big_op_spacing2 + interpolate(1/36pt#)( 36.0, 43.2, 50.4, 57.6, 64.8, 72, 79.2), % big_op_spacing3 + interpolate(1/36pt#)(112, 133, 154, 175, 196, 216, 236), % big_op_spacing4 + 36/36pt#; % big_op_spacing5 + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold10.mf new file mode 100644 index 00000000000..01c5dd95873 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolE-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold12.mf new file mode 100644 index 00000000000..20b2a16fe84 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolE-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold5.mf new file mode 100644 index 00000000000..a5759f277c9 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolE-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold6.mf new file mode 100644 index 00000000000..076a50224b6 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolE-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold7.mf new file mode 100644 index 00000000000..2ac52430319 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolE-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold8.mf new file mode 100644 index 00000000000..41b03aa0c79 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolE-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold9.mf new file mode 100644 index 00000000000..93fa7826daa --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE-Bold9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolE-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE.mf new file mode 100644 index 00000000000..703a8e7e6db --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE.mf @@ -0,0 +1,25 @@ + +font_identifier:="MnSymbolE"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := false; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; +input Sym-Delim.mf; + +current_char := 193; +input Sym-Accent.mf; + +font_x_height x_height#; + +fontdimen 8: + rule_thickness#, % default_rule_thickness + interpolate(1/36pt#)( 20, 24, 28, 32, 36, 40, 44), % big_op_spacing1 + interpolate(1/36pt#)( 30, 36, 42, 48, 54, 60, 66), % big_op_spacing2 + interpolate(1/36pt#)( 36.0, 43.2, 50.4, 57.6, 64.8, 72, 79.2), % big_op_spacing3 + interpolate(1/36pt#)(112, 133, 154, 175, 196, 216, 236), % big_op_spacing4 + 36/36pt#; % big_op_spacing5 + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE10.mf new file mode 100644 index 00000000000..78c74e19102 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolE; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE12.mf new file mode 100644 index 00000000000..a6c38f7e09e --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolE; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE5.mf new file mode 100644 index 00000000000..5e752ff1680 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolE; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE6.mf new file mode 100644 index 00000000000..78cd514fdd6 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolE; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE7.mf new file mode 100644 index 00000000000..2e10da464db --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolE; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE8.mf new file mode 100644 index 00000000000..364ab65c658 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolE; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE9.mf new file mode 100644 index 00000000000..34efcc105dd --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolE9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolE; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold.mf new file mode 100644 index 00000000000..bcd4aa390bd --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold.mf @@ -0,0 +1,35 @@ + +font_identifier:="MnSymbolF-Bold"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := true; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; +input Sym-Operators.mf; + +font_slant 0; +font_x_height x_height#; +font_quad 16u#; + +subs := interpolate(1)(5/5, 5/6, 5/7, 6/8, 6/9, 7/10, 8/12); % subscript size +rth# := rule_thickness#; +fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed + math_axis# + 3.51rth# + interpolate(1/36pt#)(36, 36, 36, 36, 36, 44, 53) + subs * desc_depth#, % num1 + math_axis# + 1.51rth# + interpolate(1/36pt#)( 3, 9, 12, 24, 30, 30, 30), % num2 + math_axis# + 1.51rth# + interpolate(1/36pt#)(24, 29, 34, 38, 43, 48, 57), % num3 + interpolate(1/36pt#)(63, 74, 86, 98, 111, 124, 149) + 3.51rth# + subs * asc_height# - math_axis#, % denom1 + interpolate(1/36pt#)( 3, 9, 12, 24, 30, 30, 30) + 1.51rth# + subs * asc_height# - math_axis#, % denom2 + interpolate(pt#)(5.99, 6.49, 6.99, 7.49, 8.49, 8.99, 9.99) - subs * asc_height#, % sup1 + interpolate(pt#)(5.49, 5.99, 6.49, 6.99, 7.99, 8.49, 8.99) - subs * asc_height#, % sup2 + interpolate(1/36pt#)(53, 62, 72, 82, 93, 104, 125), % sup3 + interpolate(1/36pt#)(36, 36, 36, 36, 36, 54, 65), % sub1 + interpolate(1/36pt#)(72, 72, 72, 72, 57, 89, 100), % sub2 + subs * asc_height# - 36/36pt#, % sup\_drop + 18/36pt#, % sub\_drop + interpolate(pt#)(9.9, 11.9, 11.9, 11.9, 19.0, 19.0, 22.0), % delim1 + interpolate(pt#)(7.1, 8.1, 8.1, 9.1, 9.1, 10.1, 12.1), % delim2 + math_axis#; % axis\_height + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold10.mf new file mode 100644 index 00000000000..137d400def2 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolF-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold12.mf new file mode 100644 index 00000000000..e5ccf02e04c --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolF-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold5.mf new file mode 100644 index 00000000000..6a49854cfc4 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolF-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold6.mf new file mode 100644 index 00000000000..2fba4303a24 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolF-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold7.mf new file mode 100644 index 00000000000..16bc51db9b8 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolF-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold8.mf new file mode 100644 index 00000000000..2d768e9a8b0 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolF-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold9.mf new file mode 100644 index 00000000000..953a4add32b --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF-Bold9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolF-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF.mf new file mode 100644 index 00000000000..aea3a26b8fe --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF.mf @@ -0,0 +1,35 @@ + +font_identifier:="MnSymbolF"; +font_size design_size * pt#; + +boolean bold_weight; +bold_weight := false; + +input MnSymbol-Parameter.mf; +input Sym-Base.mf; +input Sym-Operators.mf; + +font_slant 0; +font_x_height x_height#; +font_quad 16u#; + +subs := interpolate(1)(5/5, 5/6, 5/7, 6/8, 6/9, 7/10, 8/12); % subscript size +rth# := rule_thickness#; +fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed + math_axis# + 3.51rth# + interpolate(1/36pt#)(36, 36, 36, 36, 36, 44, 53) + subs * desc_depth#, % num1 + math_axis# + 1.51rth# + interpolate(1/36pt#)( 3, 9, 12, 24, 30, 30, 30), % num2 + math_axis# + 1.51rth# + interpolate(1/36pt#)(24, 29, 34, 38, 43, 48, 57), % num3 + interpolate(1/36pt#)(63, 74, 86, 98, 111, 124, 149) + 3.51rth# + subs * asc_height# - math_axis#, % denom1 + interpolate(1/36pt#)( 3, 9, 12, 24, 30, 30, 30) + 1.51rth# + subs * asc_height# - math_axis#, % denom2 + interpolate(pt#)(5.99, 6.49, 6.99, 7.49, 8.49, 8.99, 9.99) - subs * asc_height#, % sup1 + interpolate(pt#)(5.49, 5.99, 6.49, 6.99, 7.99, 8.49, 8.99) - subs * asc_height#, % sup2 + interpolate(1/36pt#)(53, 62, 72, 82, 93, 104, 125), % sup3 + interpolate(1/36pt#)(36, 36, 36, 36, 36, 54, 65), % sub1 + interpolate(1/36pt#)(72, 72, 72, 72, 57, 89, 100), % sub2 + subs * asc_height# - 36/36pt#, % sup\_drop + 18/36pt#, % sub\_drop + interpolate(pt#)(9.9, 11.9, 11.9, 11.9, 19.0, 19.0, 22.0), % delim1 + interpolate(pt#)(7.1, 8.1, 8.1, 9.1, 9.1, 10.1, 12.1), % delim2 + math_axis#; % axis\_height + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF10.mf new file mode 100644 index 00000000000..431ce2e632a --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolF; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF12.mf new file mode 100644 index 00000000000..f96e07a38e9 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolF; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF5.mf new file mode 100644 index 00000000000..e4b30f47ea7 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolF; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF6.mf new file mode 100644 index 00000000000..c09c336ad8c --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolF; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF7.mf new file mode 100644 index 00000000000..2feb9c26148 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolF; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF8.mf new file mode 100644 index 00000000000..9de89329f21 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolF; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF9.mf new file mode 100644 index 00000000000..824d109752e --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolF9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolF; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold.mf new file mode 100644 index 00000000000..893d40278e6 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold.mf @@ -0,0 +1,121 @@ +if unknown cmbase: input cmbase fi + +font_identifier:="MnSymbolS-Bold"; +font_size design_size * pt#; + +input Sym-Init; + +u# := interpolate(1/36pt#)(14.5, 16.2, 17.9, 19.6, 21.3, 23, 26.4); +width_adj# := interpolate(1/36pt#)( 7, 7.8, 8.6, 9.4, 10.2, 11, 12.6); +serif_fit# := 0; +cap_serif_fit#:= interpolate(1/36pt#)(3, 3.8, 4.6, 5.4, 6.2, 7, 5.5); +letter_fit# := interpolate(1/36pt#)(6, 4, 2, 0, 0, 0, 0); + +body_height# := interpolate(1/36pt#)(135, 162, 189, 216, 243, 270, 324); +asc_height# := interpolate(1/36pt#)(125, 150, 175, 200, 225, 250, 300); +cap_height# := interpolate(1/36pt#)(123.5, 148.2, 172.9, 197.6, 222.3, 247, 296.2); +fig_height# := interpolate(1/36pt#)(116, 139.2, 162.4, 185.6, 208.8, 232, 278.4); +x_height# := interpolate(1/36pt#)(80, 96, 112, 128, 144, 160, 190); +math_axis# := interpolate(1/36pt#)(45, 54, 63, 72, 81, 92, 110); +bar_height# := interpolate(1/36pt#)(40, 49, 58, 67, 76, 85, 102); +comma_depth# := interpolate(1/36pt#)(35, 42, 49, 56, 63, 70, 84); +desc_depth# := interpolate(1/36pt#)(35, 42, 49, 56, 63, 70, 84); + +crisp# := interpolate(1/36pt#)(9, 10, 11, 12, 13, 13, 14); +tiny# := interpolate(1/36pt#)(9, 10, 11, 12, 13, 13, 14); +fine# := interpolate(1/36pt#)(8, 9, 9, 10, 10, 10, 11); +thin_join# := interpolate(1/36pt#)(8, 9, 9, 10, 10, 10, 11); +hair# := interpolate(1/36pt#)(15, 15.4, 15.8, 16.2, 16.6, 17, 17.8); +stem# := interpolate(1/36pt#)(23, 27, 31, 34, 37, 40, 46); +curve# := interpolate(1/36pt#)(26, 30, 34, 38, 42, 45, 51); +ess# := interpolate(1/36pt#)(18, 24, 28, 31, 34, 36, 40); +flare# := interpolate(1/36pt#)(26, 29, 33, 37, 40, 42, 45); +dot_size# := interpolate(1/36pt#)(31, 36, 41, 46, 51, 56, 66); +cap_hair# := interpolate(1/36pt#)(17, 18, 18, 19, 19, 19, 20); +cap_stem# := interpolate(1/36pt#)(27, 32, 37, 42, 46, 50, 58); +cap_curve# := interpolate(1/36pt#)(30, 35, 40, 45, 50, 53, 59); +cap_ess# := interpolate(1/36pt#)(23, 30, 36, 42, 47, 51, 58); +rule_thickness# := interpolate(1pt#)(.43, .47, .51, .54, .57, .6, .66); + +dish# := interpolate(1/36pt#)(.7, .8, .9, 1, 1, 1, 1); +bracket# := interpolate(1/36pt#)(5, 6, 7, 8, 9, 10, 12); +jut# := interpolate(1/36pt#)(15, 17, 19, 21, 24, 27, 33); +cap_jut# := interpolate(1/36pt#)(21, 24, 27, 30, 35, 39, 47); +beak_jut# := interpolate(1/36pt#)(7, 7.8, 8.6, 9.4, 10.2, 11, 12.6); +beak# := interpolate(1/36pt#)(25, 36, 46, 55, 63, 70, 82); +vair# := interpolate(1/36pt#)(10, 11, 11.5, 12, 12, 13, 13); +notch_cut# := interpolate(1pt#)(5, 6, 7, 8, 9, 10, 12); +bar# := interpolate(1/36pt#)(12, 13, 14, 15, 16, 17, 19); +slab# := interpolate(1/36pt#)(12, 13, 14, 15, 16, 17, 19); +cap_bar# := interpolate(1/36pt#)(12, 13, 14, 15, 16, 17, 19); +cap_band# := interpolate(1/36pt#)(12, 13, 14, 15, 16, 17, 19); +cap_notch_cut# := interpolate(1pt#)(5, 6, 7, 8, 9, 10, 12); +serif_drop# := interpolate(1/36pt#)(1.5, 1.8, 2.1, 2.4, 2.7, 3, 3.6); +stem_corr# := interpolate(1/36pt#)(1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.2); +vair_corr# := interpolate(1/36pt#)(1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.7); +apex_corr# := interpolate(1/36pt#)(9, 5, 2, 0, 0, 0, 0); + +o# := interpolate(1/36pt#)(3.5, 4, 4, 5, 5.5, 6, 7); +apex_o# := interpolate(1/36pt#)(3.5, 4, 4, 4.5, 5, 6, 7); + +slant := .25; +fudge := 1; +math_spread := interpolate(1)(1.5, 1.3, 1.1, .9, .7, .5, .1); +superness := 8/11; +superpull := 1/8; +beak_darkness := .4; +ligs := 2; + +square_dots := false; +hefty := false; +serifs := true; +monospace := false; +variant_g := true; +low_asterisk := false; +math_fitting := true; + +mode_setup; +font_setup; + +autorounding := hair; + +input calu; + +font_slant slant; +font_x_height x_height#; +font_quad 18u# + 4letter_fit#; + +subs := interpolate(1)(5/5, 5/6, 5/7, 6/8, 6/9, 7/10, 8/12); % subscript size +rth# := rule_thickness#; +fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed + math_axis# + 3.51rth# + interpolate(1/36pt#)(36, 36, 36, 36, 36, 54, 53) + subs * desc_depth#, % num1 + math_axis# + 1.51rth# + interpolate(1/36pt#)( 3, 9, 12, 24, 30, 30, 30), % num2 + math_axis# + 1.51rth# + interpolate(1/36pt#)(24, 29, 34, 38, 43, 48, 57), % num3 + interpolate(1/36pt#)(63, 74, 86, 98, 111, 155, 149) + 3.51rth# + subs * x_height# - math_axis#, % denom1 + interpolate(1/36pt#)( 3, 9, 12, 24, 30, 30, 30) + 1.51rth# + subs * x_height# - math_axis#, % denom2 + interpolate(pt#)(5.99, 6.49, 6.99, 7.49, 8.49, 8.99, 9.99) - subs * asc_height#, % sup1 + interpolate(pt#)(5.49, 5.99, 6.49, 6.99, 7.99, 8.49, 8.99) - subs * asc_height#, % sup2 + interpolate(1/36pt#)(53, 62, 72, 82, 93, 104, 125), % sup3 + interpolate(1/36pt#)(36, 36, 36, 36, 36, 54, 65), % sub1 + interpolate(1/36pt#)(72, 72, 72, 72, 57, 89, 100), % sub2 + subs * asc_height# - 36/36pt#, % sup\_drop + 18/36pt#, % sub\_drop + interpolate(pt#)(9.9, 11.9, 11.9, 11.9, 19.0, 19.0, 22.0), % delim1 + interpolate(pt#)(7.1, 8.1, 8.1, 9.1, 9.1, 10.1, 12.1), % delim2 + math_axis#; % axis\_height + +beginchar(0, 0, 0, 0) % dummy symbol for skew +endchar; + +skewchar = 0; +skew# = .5u#; + +ligtable "I": "T": "V": skewchar kern skew#; +ligtable "K": skewchar kern 2skew#; +ligtable "D": "N": "P": "R": "U": "W": "Y": skewchar kern 3skew#; +ligtable "E": "F": "G": "H": "O": "Q": skewchar kern 4skew#; +ligtable "B": "C": "L": "M": "S": "X": "Z": skewchar kern 5skew#; +ligtable "J": skewchar kern 6skew#; +ligtable "A": skewchar kern 7skew#; + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold10.mf new file mode 100644 index 00000000000..0097dff26eb --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolS-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold12.mf new file mode 100644 index 00000000000..16f52b771ea --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolS-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold5.mf new file mode 100644 index 00000000000..c017ac6c11c --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolS-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold6.mf new file mode 100644 index 00000000000..82d6868cbbb --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolS-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold7.mf new file mode 100644 index 00000000000..9ee4c3336cb --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolS-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold8.mf new file mode 100644 index 00000000000..2842af8dc46 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolS-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold9.mf new file mode 100644 index 00000000000..f4ad82810f4 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS-Bold9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolS-Bold; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS.mf new file mode 100644 index 00000000000..80ed94ef156 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS.mf @@ -0,0 +1,121 @@ +if unknown cmbase: input cmbase fi + +font_identifier:="MnSymbolS"; +font_size design_size * pt#; + +input Sym-Init; + +u# := interpolate(1/36pt#)(12.5, 14, 15.5, 17, 18.5, 20, 23); +width_adj# := 0; +serif_fit# := 0; +cap_serif_fit#:= interpolate(1/36pt#)(2, 2.8, 3.5, 4.1, 4.6, 5, 5.5); +letter_fit# := interpolate(1/36pt#)(10, 6, 4, 0, 0, 0, 0); + +body_height# := interpolate(1/36pt#)(135, 162, 189, 216, 243, 270, 324); +asc_height# := interpolate(1/36pt#)(125, 150, 175, 200, 225, 250, 300); +cap_height# := interpolate(1/36pt#)(123, 147.6, 172.2, 196.8, 221.4, 246, 295.2); +fig_height# := interpolate(1/36pt#)(116, 139.2, 162.4, 185.6, 208.8, 232, 278.4); +x_height# := interpolate(1/36pt#)(77.5, 93, 108.5, 124, 139.5, 155, 186); +math_axis# := interpolate(1/36pt#)(45, 54, 63, 72, 81, 92, 110); +bar_height# := interpolate(1/36pt#)(43.5, 52.2, 60.9, 69.6, 78.3, 87, 104.4); +comma_depth# := interpolate(1/36pt#)(35, 42, 49, 56, 63, 70, 84); +desc_depth# := interpolate(1/36pt#)(35, 42, 49, 56, 63, 70, 84); + +crisp# := interpolate(1/36pt#)(6, 6.5, 7, 8, 8, 8, 9); +tiny# := interpolate(1/36pt#)(6, 6.5, 7, 8, 8, 8, 9); +fine# := interpolate(1/36pt#)(5, 6, 6, 7, 7, 7, 8); +thin_join# := interpolate(1/36pt#)(5, 6, 6, 7, 7, 7, 8); +hair# := interpolate(1/36pt#)(8.3, 9, 9.4, 10, 10, 10, 11); +stem# := interpolate(1/36pt#)(15.5, 17.5, 19.5, 21.5, 23, 24, 26); +curve# := interpolate(1/36pt#)(17.5, 20, 22.5, 25, 27, 29, 32.5); +ess# := interpolate(1/36pt#)(12, 17, 21, 23, 25, 27, 31); +flare# := interpolate(1/36pt#)(18.5, 20.5, 23.5, 26.5, 29, 32, 38); +dot_size# := interpolate(1/36pt#)(22, 26, 29, 32, 35, 38, 44); +cap_hair# := interpolate(1/36pt#)( 9.6, 10.2, 10.8, 11.4, 12, 13, 14.5); +cap_stem# := interpolate(1/36pt#)(18.5, 21, 23.5, 25.5, 28, 30, 34); +cap_curve# := interpolate(1/36pt#)(20.5, 23.5, 26.5, 29, 32, 35, 41); +cap_ess# := interpolate(1/36pt#)(13.5, 18.5, 22.5, 26, 30, 33, 39); +rule_thickness# := interpolate(1pt#)(.31, .34, .38, .40, .42, .45, .49); + +dish# := interpolate(1/36pt#)(.7, .8, .9, 1, 1, 1, 1); +bracket# := interpolate(1/36pt#)(10, 12, 14, 16, 18, 20, 24); +jut# := interpolate(1/36pt#)(17, 19, 21, 24, 27, 30, 36); +cap_jut# := interpolate(1/36pt#)(20, 23, 26, 29, 33, 37, 45); +beak_jut# := interpolate(1/36pt#)(6, 6.8, 7.6, 8.4, 9.2, 10, 11.6); +beak# := interpolate(1/36pt#)(35, 42, 49, 56, 63, 70, 84); +vair# := interpolate(1/36pt#)(6, 7, 7, 8, 8, 8, 9); +notch_cut# := interpolate(1pt#)(5, 6, 7, 8, 9, 10, 12); +bar# := interpolate(1/36pt#)(8, 8.5, 9, 9.5, 10, 11, 13); +slab# := interpolate(1/36pt#)(8, 8.5, 9, 9.5, 10, 11, 13); +cap_bar# := interpolate(1/36pt#)(8, 8.5, 9, 9.5, 10, 11, 13); +cap_band# := interpolate(1/36pt#)(8, 8.5, 9, 9.5, 10, 11, 13); +cap_notch_cut# := interpolate(1pt#)(5, 6, 7, 8, 9, 10, 12); +serif_drop# := interpolate(1/36pt#)(2, 2.4, 2.8, 3.2, 3.6, 4, 4.8); +stem_corr# := interpolate(1/36pt#)(.7, .8, .9, 1, 1, 1, 1); +vair_corr# := interpolate(1/36pt#)(.5, .7, .9, 1, 1, 1, 1); +apex_corr# := 0; + +o# := interpolate(1/36pt#)(4, 4.5, 5, 6, 7, 8, 9.5); +apex_o# := interpolate(1/36pt#)(4, 4.5, 5, 6, 7, 8, 9.5); + +slant := .25; +fudge := 1; +math_spread := interpolate(1)(1, .8, .6, .4, .2, 0, 0); +superness := 1/sqrt2; +superpull := 1/6; +beak_darkness := 11/30; +ligs := 2; + +square_dots := false; +hefty := false; +serifs := true; +monospace := false; +variant_g := true; +low_asterisk := false; +math_fitting := true; + +mode_setup; +font_setup; + +autorounding := hair; + +input calu; + +font_slant slant; +font_x_height x_height#; +font_quad 18u# + 4letter_fit#; + +subs := interpolate(1)(5/5, 5/6, 5/7, 6/8, 6/9, 7/10, 8/12); % subscript size +rth# := rule_thickness#; +fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed + math_axis# + 3.51rth# + interpolate(1/36pt#)(36, 36, 36, 36, 36, 44, 53) + subs * desc_depth#, % num1 + math_axis# + 1.51rth# + interpolate(1/36pt#)( 3, 9, 12, 24, 30, 30, 30), % num2 + math_axis# + 1.51rth# + interpolate(1/36pt#)(24, 29, 34, 38, 43, 48, 57), % num3 + interpolate(1/36pt#)(63, 74, 86, 98, 111, 155, 149) + 3.51rth# + subs * x_height# - math_axis#, % denom1 + interpolate(1/36pt#)( 3, 9, 12, 24, 30, 30, 30) + 1.51rth# + subs * x_height# - math_axis#, % denom2 + interpolate(pt#)(5.99, 6.49, 6.99, 7.49, 8.49, 8.99, 9.99) - subs * asc_height#, % sup1 + interpolate(pt#)(5.49, 5.99, 6.49, 6.99, 7.99, 8.49, 8.99) - subs * asc_height#, % sup2 + interpolate(1/36pt#)(53, 62, 72, 82, 93, 104, 125), % sup3 + interpolate(1/36pt#)(36, 36, 36, 36, 36, 54, 65), % sub1 + interpolate(1/36pt#)(72, 72, 72, 72, 57, 89, 100), % sub2 + subs * asc_height# - 36/36pt#, % sup\_drop + 18/36pt#, % sub\_drop + interpolate(pt#)(9.9, 11.9, 11.9, 11.9, 19.0, 19.0, 22.0), % delim1 + interpolate(pt#)(7.1, 8.1, 8.1, 9.1, 9.1, 10.1, 12.1), % delim2 + math_axis#; % axis\_height + +beginchar(0, 0, 0, 0) % dummy symbol for skew +endchar; + +skewchar = 0; +skew# = .5u#; + +ligtable "I": "T": "V": skewchar kern skew#; +ligtable "K": skewchar kern 2skew#; +ligtable "D": "N": "P": "R": "U": "W": "Y": skewchar kern 3skew#; +ligtable "E": "F": "G": "H": "O": "Q": skewchar kern 4skew#; +ligtable "B": "C": "L": "M": "S": "X": "Z": skewchar kern 5skew#; +ligtable "J": skewchar kern 6skew#; +ligtable "A": skewchar kern 7skew#; + +bye; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS10.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS10.mf new file mode 100644 index 00000000000..3b66aaf3a67 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS10.mf @@ -0,0 +1,2 @@ +design_size := 10; +input MnSymbolS; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS12.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS12.mf new file mode 100644 index 00000000000..d4e03c21fda --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input MnSymbolS; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS5.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS5.mf new file mode 100644 index 00000000000..9c13ee79b78 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS5.mf @@ -0,0 +1,2 @@ +design_size := 5; +input MnSymbolS; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS6.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS6.mf new file mode 100644 index 00000000000..0acf60ad89d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS6.mf @@ -0,0 +1,2 @@ +design_size := 6; +input MnSymbolS; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS7.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS7.mf new file mode 100644 index 00000000000..f681cc06b53 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS7.mf @@ -0,0 +1,2 @@ +design_size := 7; +input MnSymbolS; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS8.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS8.mf new file mode 100644 index 00000000000..b1de0e90ab8 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS8.mf @@ -0,0 +1,2 @@ +design_size := 8; +input MnSymbolS; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS9.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS9.mf new file mode 100644 index 00000000000..9f2fb2af199 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/MnSymbolS9.mf @@ -0,0 +1,2 @@ +design_size := 9; +input MnSymbolS; diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Accent.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Accent.mf new file mode 100644 index 00000000000..5b055234f8d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Accent.mf @@ -0,0 +1,130 @@ + +for scale = 1, 2, 3, 4, 5: + beginsymbol(scale * 8u# + 2side_bearing#, asc_height#, 0); "wide hat"; + + thick := rule_thickness; + thin := 1/2thick; + + pickup pencircle scaled thin; + + penpos 2(thick, 90); + + top y2r = h; + x2 = w/2; + x1 = w - x3 = -eps; + y1 = y3 = 1/2[x_height, y2]; + + penpos 1(thin, angle(z2 - z1) + 90); + penpos 3(thin, angle(z3 - z2) + 90); + + filldraw stroke z1e--z2e--z3e; + endchar; +endfor; +charlist current_char - 4: current_char - 3: current_char - 2: current_char - 1: current_char; + +for scale = 1, 2, 3, 4, 5: + beginsymbol(scale * 8u# + 2side_bearing#, asc_height#, 0); "wide tilde"; + + thick := rule_thickness; + thin := 1/2thick; + + pickup pencircle scaled thin; + + numeric theta; + theta = angle (1/6(w - thin), 1/4(h - x_height)); + + penpos1(thin, theta + 90); + penpos2(thin, theta + 90); + penpos3(thin, theta + 90); + penpos4(thin, theta + 90); + + z2 - z1 = z4 - z3 = (thick - thin) * dir theta; + + lft x1r = w - rt x4l = 0; + top y4r = h; + bot y1l = vround(bot y1l + min(2/3[x_height, h], y3l- 1/4thin) - top y1r); + + pair delta; + ypart delta = 3(y3l - y1l); + delta = whatever * dir theta; + + filldraw z1l ..controls (z1l + delta) and (z3l - delta) .. z3l .. z4l + -- z4r ..controls(z4r - delta) and (z2r + delta) .. z2r .. z1r -- cycle; + endchar; +endfor; +charlist current_char - 4: current_char - 3: current_char - 2: current_char - 1: current_char; + +for scale = 1, 2, 3, 4, 5: + beginsymbol(scale * 8u# + 2side_bearing#, asc_height#, 0); "wide paren"; + + thick := rule_thickness; + thin := 1/2thick; + + pickup pencircle scaled thin; + + numeric theta; + theta = angle (1/6(w - thin), 1/4(h - x_height)); + + penpos1(thin, 90 + theta); + penpos2(thin, 90 + theta); + penpos3(thin, 90 - theta); + penpos4(thin, 90 - theta); + penpos5(thin, 90); + + z2 - z1 = (thick - thin) * dir theta; + z3 - z4 = (thick - thin) * dir (180 - theta); + + lft x1r = w - rt x4r = side_bearing; + x5 = w/2; + top y5r = h; + bot y4l = vround(bot y4l - top y4r + 2/3[x_height, h]); + bot y1l = vround(bot y1l - top y1r + 2/3[x_height, h]); + + filldraw z1l .. z2l .. z5l .. z3l .. z4l + -- z4r .. z3r .. z5r .. z2r .. z1r -- cycle; + endchar; +endfor; +charlist current_char - 4: current_char - 3: current_char - 2: current_char - 1: current_char; + +beginsymbol(6u# + 2side_bearing#, asc_height#, 0); "vec"; + pickup pencircle scaled 2/3rule_thickness; + + x0 = w - x1 = side_bearing; + top y0 = top y1 = h - 5/4rule_thickness; + + draw z0 -- z1; + draw arrowhead(z1, 0, 5/2rule_thickness); +endchar; + + +beginsymbol(5u# + 2side_bearing#, 1/3asc_height#, 0); "middle bar"; + + penpos0(7/5rule_thickness, 70); + penpos1(7/5rule_thickness, 70); + + x0 = w - x1 = side_bearing; + y0 = y1 = h; + + fill stroke z0e -- z1e; +endchar; + +beginsymbol(5u# + 2side_bearing#, 1/3asc_height#, 0); "middle slash"; + + penpos0(3/2rule_thickness, 70); + penpos1(3/2rule_thickness, 70); + + x0 = w - x1 = side_bearing; + 1/2[y0,y1] = h; + y1 - y0 = 2rule_thickness; + + fill stroke z0e -- z1e; +endchar; + +beginsymbol(5u# + 2side_bearing#, 6/4asc_height#, 0); "stroke through"; + pickup pencircle scaled rule_thickness; + + z0 = (w/2,1/6asc_height); + + draw (z0 - 3/4asc_height / cosd 20 * dir 70) -- (z0 + 3/4asc_height / cosd 20 * dir 70); +endchar; + diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Arrows.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Arrows.mf new file mode 100644 index 00000000000..745766027a9 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Arrows.mf @@ -0,0 +1,721 @@ + +def ifneg(expr a,b) = + if negated: a else: b fi +enddef; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "single arrow (" & decimal alpha & ")"; + pickup rule_pen; + draw foot -- head; + draw arrowhead(head, arrow_dir, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head - 1/2arrow_spread * dir arrow_dir], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 6/5, ifneg(19/10, 13/10) * arrow_spread#); "double arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = equal_spread * dir (arrow_dir + 90); + + 1/2[z0,z1] = foot; + 1/2[z2,z3] = head; + + draw z0 -- arrowhead_intersection(head, arrow_dir, 13/10arrow_spread, z0 -- z2); + draw z1 -- arrowhead_intersection(head, arrow_dir, 13/10arrow_spread, z1 -- z3); + + draw arrowhead(head, arrow_dir, 13/10arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head - arrow_spread * dir arrow_dir], alpha, 19/10arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 6/5, ifneg(3/2, 1) * arrow_spread#); "bidirectinal arrow (" & decimal alpha & ")"; + pickup rule_pen; + draw foot -- head; + draw arrowhead(head, arrow_dir, arrow_spread); + draw arrowhead(foot, arrow_dir+180, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 7/5, ifneg(19/10, 13/10) * arrow_spread#); "double bidirectional arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = equal_spread * dir (arrow_dir + 90); + + 1/2[z0,z1] = foot; + 1/2[z2,z3] = head; + + draw arrowhead_intersection(foot, arrow_dir+180, 13/10arrow_spread, z0 -- z2) + -- arrowhead_intersection(head, arrow_dir, 13/10arrow_spread, z0 -- z2); + draw arrowhead_intersection(foot, arrow_dir+180, 13/10arrow_spread, z1 -- z3) + -- arrowhead_intersection(head, arrow_dir, 13/10arrow_spread, z1 -- z3); + draw arrowhead(head, arrow_dir, 13/10arrow_spread); + draw arrowhead(foot, arrow_dir+180, 13/10arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 19/10arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 5/4, ifneg(3/2, 1) * arrow_spread#); "double-head arrow (" & decimal alpha & ")"; + pickup rule_pen; + draw foot -- head; + draw arrowhead(head, arrow_dir, arrow_spread); + draw arrowhead(head - 1/4arrow_len * dir arrow_dir, arrow_dir, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head - (1/2arrow_spread + 1/4arrow_len) * dir arrow_dir], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "tailed arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z0 = foot + 3/4arrow_spread * dir arrow_dir; + + draw z0 -- head; + draw arrowhead(head, arrow_dir, arrow_spread); + draw arrowhead(z0, arrow_dir, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "arrow with foot (" & decimal alpha & ")"; + pickup rule_pen; + + draw foot + 1/4rule_thickness * dir arrow_dir -- head; + draw (foot - 1/2arrow_spread * dir (arrow_dir + 90)) -- + (foot + 1/2arrow_spread * dir (arrow_dir + 90)); + draw arrowhead(head, arrow_dir, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head - 1/2arrow_spread * dir arrow_dir], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "left embedding (" & decimal alpha & ")"; + pickup rule_pen; + + draw arrowhead(head, arrow_dir, arrow_spread); + draw half_circle(foot + 1/4arrow_spread * (dir (arrow_dir + 90) + dir arrow_dir), + 1/4arrow_spread, arrow_dir + 90) + -- head; + + if negated: + stroke_through_arrow(1/2[foot, head - 1/2arrow_spread * dir arrow_dir], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "right embedding (" & decimal alpha & ")"; + pickup rule_pen; + + draw arrowhead(head, arrow_dir, arrow_spread); + draw head -- half_circle(foot + 1/4arrow_spread * (dir (arrow_dir - 90) + dir arrow_dir), + 1/4arrow_spread, arrow_dir + 90); + + if negated: + stroke_through_arrow(1/2[foot, head - 1/2arrow_spread * dir arrow_dir], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "left harpoon (" & decimal alpha & ")"; + pickup rule_pen; + draw foot -- head; + draw arrowhead_left(head, arrow_dir, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head - 1/2arrow_spread * dir arrow_dir], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "right harpoon (" & decimal alpha & ")"; + pickup rule_pen; + draw foot -- head; + draw arrowhead_right(head, arrow_dir, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head - 1/2arrow_spread * dir arrow_dir], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "left left harpoon (" & decimal alpha & ")"; + pickup rule_pen; + draw foot -- head; + draw arrowhead_left(head, arrow_dir, arrow_spread); + draw arrowhead_left(foot, arrow_dir+180, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 3/2arrow_spread) + (80, 80, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "right right harpoon (" & decimal alpha & ")"; + pickup rule_pen; + draw foot -- head; + draw arrowhead_right(head, arrow_dir, arrow_spread); + draw arrowhead_right(foot, arrow_dir+180, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 3/2arrow_spread) + (70, 70, 100, 100); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread# + equal_spread#); "double left left harpoon (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = equal_spread * dir (arrow_dir + 90); + + 0.5[z0,z1] = foot; + 0.5[z2,z3] = head; + + draw z0 -- z2; + draw z1 -- z3; + draw arrowhead_left(z3, arrow_dir, arrow_spread); + draw arrowhead_left(z0, arrow_dir+180, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 3/2arrow_spread + equal_spread) + (80, 80, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread# + equal_spread#); "double right right harpoon (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = equal_spread * dir (arrow_dir + 90); + + 0.5[z0,z1] = foot; + 0.5[z2,z3] = head; + + draw z0 -- z2; + draw z1 -- z3; + draw arrowhead_right(z2, arrow_dir, arrow_spread); + draw arrowhead_right(z1, arrow_dir+180, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 3/2arrow_spread + equal_spread) + (70, 70, 100, 100); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "broken arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z0 = ifneg( 2/10, 3/10)[foot,head]; + z1 = ifneg(13/20,11/20)[foot,head]; + + draw foot -- z0; + draw z1 -- head; + draw arrowhead(head, arrow_dir, arrow_spread); + + if negated: + stroke_through_arrow(1/2[z0, z1], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 6/5, ifneg(3/2, 1) * arrow_spread#); "multi map (" & decimal alpha & ")"; + pickup rule_pen; + + draw foot -- head - (4/5arrow_spread + 1/4rule_thickness) * dir arrow_dir; + draw circle(head - 2/5arrow_spread * dir arrow_dir, 2/5arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head - 4/5arrow_spread * dir arrow_dir], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 6/5, ifneg(3/2, 1) * arrow_spread#); "filled multi map (" & decimal alpha & ")"; + pickup rule_pen; + + draw foot -- head - 2/5arrow_spread * dir arrow_dir; + fill circle(head - 2/5arrow_spread * dir arrow_dir, 2/5arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head - 4/5arrow_spread * dir arrow_dir], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "line with foot (" & decimal alpha & ")"; + pickup rule_pen; + + draw foot -- head - 1/4rule_thickness * dir arrow_dir; + draw (head - 1/2arrow_spread * dir (arrow_dir + 90)) -- + (head + 1/2arrow_spread * dir (arrow_dir + 90)); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, 2/3med_op_size#); "arrow with round head (" & decimal alpha & ")"; + pickup rule_pen; + + z0 = head - 1/3equal_spread * dir arrow_dir; + + draw foot -- head - 1/4rule_thickness * dir arrow_dir; + draw smile(1, z0 - 1/3med_op_size * dir (arrow_dir + 90), + z0 + 1/3med_op_size * dir (arrow_dir + 90), + 2/3equal_spread, true); + + if negated: + stroke_through_arrow(1/2[foot, head - 2/3equal_spread * dir arrow_dir], alpha, 2/3med_op_size) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, 3/4plus_size# + ifneg(1,0) * arrow_spread#); "pitchfork (" & decimal alpha & ")"; + pickup rule_pen; + + draw foot -- head; + draw subset(foot + 3/4plus_size * dir arrow_dir, foot, 3/4plus_size); + + if negated: + stroke_through_arrow(1/2[foot, head - 3/8plus_size * dir arrow_dir], + alpha, 3/4plus_size + arrow_spread) + (80, 80, 100, 100, 80, 80, 100, 100); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, 2arrow_spread#); "parallel arrows (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = arrow_spread * dir (arrow_dir + 90); + + 0.5[z0,z1] = foot; + 0.5[z2,z3] = head; + + draw z0 -- z2; + draw z1 -- z3; + draw arrowhead(z2, arrow_dir, arrow_spread); + draw arrowhead(z3, arrow_dir, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head - 1/2arrow_spread * dir arrow_dir], alpha, 2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 1, 2arrow_spread#); "anti-parallel arrows right left (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = arrow_spread * dir (arrow_dir + 90); + + 0.5[z0,z1] = foot; + 0.5[z2,z3] = head; + + draw z0 -- z2; + draw z1 -- z3; + draw arrowhead(z3, arrow_dir, arrow_spread); + draw arrowhead(z0, arrow_dir+180, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 2arrow_spread) + (80, 80, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 1, 2arrow_spread#); "anti-parallel arrows left right (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = arrow_spread * dir (arrow_dir + 90); + + 0.5[z0,z1] = foot; + 0.5[z2,z3] = head; + + draw z0 -- z2; + draw z1 -- z3; + draw arrowhead(z2, arrow_dir, arrow_spread); + draw arrowhead(z1, arrow_dir+180, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 2arrow_spread) + (70, 70, 100, 100); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "left right wave arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z0 = foot - 1/10arrow_spread * dir (arrow_dir + 90); + z1 = 15/80[foot,head] + 1/4arrow_spread * dir (arrow_dir + 90); + z2 = 30/80[foot,head]; + z3 = 45/80[foot,head] - 1/4arrow_spread * dir (arrow_dir + 90); + z4 = 60/80[foot,head]; + z5 = head + 1/10arrow_spread * dir (arrow_dir + 90); + + draw z0{dir (arrow_dir + 45)} .. z1 .. z2{dir (arrow_dir - 45)} .. z3 .. z4 ... {dir (arrow_dir+15)}z5; + draw arrowhead(z5, arrow_dir+15, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head - 1/2arrow_spread * dir arrow_dir], alpha, 3/2arrow_spread) + (70, 70, 70, 70, 70, 70, 70, 70); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2, 1) * arrow_spread#); "right left wave arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z0 = foot + 1/10arrow_spread * dir (arrow_dir + 90); + z1 = 15/80[foot,head] - 1/4arrow_spread * dir (arrow_dir + 90); + z2 = 30/80[foot,head]; + z3 = 45/80[foot,head] + 1/4arrow_spread * dir (arrow_dir + 90); + z4 = 60/80[foot,head]; + z5 = head - 1/10arrow_spread * dir (arrow_dir + 90); + + draw z0{dir (arrow_dir - 45)} .. z1 .. z2{dir (arrow_dir + 45)} .. z3 .. z4 ... {dir (arrow_dir-15)}z5; + draw arrowhead(z5, arrow_dir-15, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head - 1/2arrow_spread * dir arrow_dir], alpha, 3/2arrow_spread) + (110, 110, 110, 110, 110, 110, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 19/16, ifneg(3/2, 1) * arrow_spread#); "left right bidirectional wave arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z0 = foot - 1/10arrow_spread * dir (arrow_dir + 90); + z1 = 4/20[foot,head]; + z2 = 7/20[foot,head] + 1/4arrow_spread * dir (arrow_dir + 90); + z3 = 10/20[foot,head]; + z4 = 13/20[foot,head] - 1/4arrow_spread * dir (arrow_dir + 90); + z5 = 16/20[foot,head]; + z6 = head + 1/10arrow_spread * dir (arrow_dir + 90); + + draw z0{dir (arrow_dir + 15)} .. z1 .. z2 .. z3{dir (arrow_dir - 45)} .. z4 .. z5 ... {dir (arrow_dir+15)}z6; + draw arrowhead(z0, arrow_dir + 195, arrow_spread); + draw arrowhead(z6, arrow_dir + 15, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 3/2arrow_spread) + (70, 70, 70, 70); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 19/16, ifneg(3/2, 1) * arrow_spread#); "right left bidirectional wave arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z0 = foot + 1/10arrow_spread * dir (arrow_dir + 90); + z1 = 4/20[foot,head]; + z2 = 7/20[foot,head] - 1/4arrow_spread * dir (arrow_dir + 90); + z3 = 10/20[foot,head]; + z4 = 13/20[foot,head] + 1/4arrow_spread * dir (arrow_dir + 90); + z5 = 16/20[foot,head]; + z6 = head - 1/10arrow_spread * dir (arrow_dir + 90); + + draw z0{dir (arrow_dir - 15)} .. z1 .. z2 .. z3{dir (arrow_dir + 45)} .. z4 .. z5 ... {dir (arrow_dir-15)}z6; + draw arrowhead(z0, arrow_dir - 195, arrow_spread); + draw arrowhead(z6, arrow_dir - 15, arrow_spread); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 3/2arrow_spread) + (110, 110, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2,10/9) * arrow_spread#); "right bend arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z0 = foot - 1/3arrow_spread * dir (arrow_dir + 90); + z1 = 2/5[foot,head] + 1/3arrow_spread * dir (arrow_dir + 90); + z2 = head - 5/9arrow_spread * dir (arrow_dir + 90); + + draw z0 .. z1 .. z2; + draw arrowhead(z2, arrow_dir - 55, arrow_spread); + + if negated: + stroke_through_arrow(1/10[z1,z2], alpha, 3/2arrow_spread) + (80, 80, 80, 80, 80, 80, 80, 80); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2,10/9)*arrow_spread#); "left bend arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z0 = foot + 1/3arrow_spread * dir (arrow_dir + 90); + z1 = 2/5[foot,head] - 1/3arrow_spread * dir (arrow_dir + 90); + z2 = head + 5/9arrow_spread * dir (arrow_dir + 90); + + draw z0 .. z1 .. z2; + draw arrowhead(z2, arrow_dir + 55, arrow_spread); + + if negated: + stroke_through_arrow(1/10[z1,z2], alpha, 3/2arrow_spread) + (110, 110, 110, 110, 110, 110, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(3/2,10/9)*arrow_spread#); "bend arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z0 = foot - 5/9arrow_spread * dir (arrow_dir + 90); + z1 = 1/2[foot,head] + 1/3arrow_spread * dir (arrow_dir + 90); + z2 = head - 5/9arrow_spread * dir (arrow_dir + 90); + + draw z0 .. z1 .. z2; + draw arrowhead(z0, arrow_dir + 240, arrow_spread); + draw arrowhead(z2, arrow_dir - 60, arrow_spread); + + if negated: + stroke_through_arrow(z1, alpha, 3/2arrow_spread) + (80, 80, 100, 100, 80, 80, 100, 100); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 1, ifneg(3/2,1) * arrow_spread#); "headless arrow (" & decimal alpha & ")"; + pickup rule_pen; + draw foot -- head; + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 3/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, 6/5, ifneg(19/10, 13/10) * arrow_spread#); "double headless arrow (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = equal_spread * dir (arrow_dir + 90); + + 0.5[z0,z1] = foot; + 0.5[z2,z3] = head; + + draw z0 -- z2; + draw z1 -- z3; + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 19/10arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 2/3, ifneg(2, 3/2) * arrow_spread#); "derives (" & decimal alpha & ")"; + pickup rule_pen; + draw foot + 1/4rule_thickness * dir arrow_dir -- head; + draw (foot - 3/4arrow_spread * dir (arrow_dir + 90)) -- + (foot + 3/4arrow_spread * dir (arrow_dir + 90)); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 2/3, ifneg(9/4, 7/4) * arrow_spread#); "models (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = equal_spread * dir (arrow_dir + 90); + + 0.5[z0,z1] = foot; + 0.5[z2,z3] = head; + + draw z0 + 1/4rule_thickness * dir arrow_dir -- z2; + draw z1 + 1/4rule_thickness * dir arrow_dir -- z3; + draw (foot - 7/8arrow_spread * dir (arrow_dir + 90)) -- + (foot + 7/8arrow_spread * dir (arrow_dir + 90)); + + if negated: + stroke_through_arrow(1/2[foot, head], alpha, 9/4arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 5/6, ifneg(9/4, 7/4) * arrow_spread#); "forces (" & decimal alpha & ")"; + pickup rule_pen; + + z0 = foot + equal_spread * dir arrow_dir; + + draw z0 + 1/4rule_thickness * dir arrow_dir -- head; + draw (foot - 7/8arrow_spread * dir (arrow_dir + 90)) -- + (foot + 7/8arrow_spread * dir (arrow_dir + 90)); + draw (z0 - 7/8arrow_spread * dir (arrow_dir + 90)) -- + (z0 + 7/8arrow_spread * dir (arrow_dir + 90)); + + if negated: + stroke_through_arrow(1/2[z0, head], alpha, 9/4arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for alpha = 0, 90, 180, 270, 45, 135, 225, 315: + beginarrow(alpha, 1, ifneg(5/2, 2) * arrow_spread#); "double models (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = equal_spread * dir (arrow_dir + 90); + + z4 = foot + equal_spread * dir arrow_dir; + + 0.5[z0,z1] = z4; + 0.5[z2,z3] = head; + + draw z0 + 1/4rule_thickness * dir arrow_dir -- z2; + draw z1 + 1/4rule_thickness * dir arrow_dir -- z3; + draw (foot - arrow_spread * dir (arrow_dir + 90)) -- + (foot + arrow_spread * dir (arrow_dir + 90)); + draw (z4 - arrow_spread * dir (arrow_dir + 90)) -- + (z4 + arrow_spread * dir (arrow_dir + 90)); + + if negated: + stroke_through_arrow(1/2[z4, head], alpha, 5/2arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; +endfor; + +for sign = 1, -1: + for alpha = 0, 90, 180, 270: + beginoperator(large_op_size#, 1); + if sign > 0: "right" else: "left" fi & " circle arrow (" & decimal alpha & ")"; + + pickup rule_pen; + + r := 0.8(w/2-u) - 1.1rule_thickness; + + reg_poly_points(a)(8, centre, r, alpha); + + z0 = centre + r * dir (alpha + 10); + z1 = centre + r * dir (alpha - 10); + + draw z0{dir (alpha + 100)} .. z.a1 .. z.a2 .. z.a3 .. z.a4 .. z.a5 .. z.a6 .. z.a7 .. + {dir (alpha + 80)}z1; + + if sign > 0: + draw arrowhead(z1, (alpha + 65), arrow_spread); + else: + draw arrowhead(z0, (alpha - 65), arrow_spread); + fi; + + if negated: + 1/2[z2,z3] = centre; + y2 - y3 = large_op_size; + z2 - z3 = whatever * dir 80; + + pickup stroke_pen; + draw z2 -- z3; + fi + endchar; + endfor; +endfor; + +%for alpha = 0, 90, 180, 270: +% beginoperator(large_op_size#, 1); "left circle arrow (" & decimal alpha & ")"; +% pickup rule_pen; +% +% r := 0.8(w/2-u) - 1.1rule_thickness; +% +% reg_poly_points(a)(8, centre, r, alpha); +% +% z0 = centre + r * dir (alpha + 10); +% z1 = centre + r * dir (alpha - 10); +% +% draw z0{dir (alpha + 100)} .. z.a1 .. z.a2 .. z.a3 .. z.a4 .. z.a5 .. z.a6 .. z.a7 .. +% {dir (alpha + 80)}z1; +% draw arrowhead(z0, (alpha - 65), arrow_spread); +% +% if negated: +% 1/2[z2,z3] = centre; +% y2 - y3 = large_op_size; +% z2 - z3 = whatever * dir 80; +% +% pickup stroke_pen; +% draw z2 -- z3; +% fi +% endchar; +%endfor; + diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Base.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Base.mf new file mode 100644 index 00000000000..a855273f35d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Base.mf @@ -0,0 +1,479 @@ + +mode_setup; + +% mf2pt1 support + +if known ps_output: + pencircle := mfplain_pencircle; + let filldraw := mfplain_filldraw; + let unfilldraw := mfplain_unfilldraw; +fi; + +define_pixels(u, asc_height, desc_depth, delim_height, x_height); +define_whole_pixels(dot_size, small_op_size, med_op_size, large_op_size, plus_size, + order_width, equal_spread, greater_spread, + arrow_horiz_len, arrow_vert_len, arrow_diag_len, arrow_spread); + +math_axis := good.y(math_axis# * hppp); +rule_thickness := ceiling(rule_thickness# * hppp); +side_bearing := ceiling(side_bearing# * hppp); +stroke_through_thickness := 2/3rule_thickness; + +pickup pencircle scaled rule_thickness; +rule_pen := savepen; +pickup pencircle scaled stroke_through_thickness; +stroke_pen := savepen; + +def vcentre(expr size) = + size/2 + math_axis#, size/2 - math_axis# +enddef; + +current_char := -1; + +def beginsymbol(expr width, height, depth) = + current_char := current_char + 1; + beginchar(current_char, width, height, depth); +enddef; + +def beginoperator(expr size, ratio) = + beginsymbol(size + 2side_bearing#, vcentre(ratio * size + rule_thickness#)); + pair centre; + centre := (w/2, (h-d)/2); +enddef; + +def beginbigop(expr xscale, yscale) = + beginsymbol(xscale * 3/2order_width# + 2side_bearing#, + ((yscale - 1)/2 + 1) * asc_height# + yscale * 1/6equal_spread# + 2/3rule_thickness#, + (yscale - 1)/2 * asc_height# + yscale * 1/6equal_spread# + 2/3rule_thickness#); + pair centre; + centre := (w/2, (h-d)/2); + op_width := xscale * 3/2order_width; + op_height := yscale * (asc_height + 1/3equal_spread); +enddef; + +def beginsquarebigop(expr xscale, yscale) = + beginsymbol(xscale * (asc_height# + 1/3equal_spread#) + 2side_bearing#, + ((yscale - 1)/2 + 1) * asc_height# + yscale * 1/6equal_spread# + 2/3rule_thickness#, + (yscale - 1)/2 * asc_height# + yscale * 1/6equal_spread# + 2/3rule_thickness#); + pair centre; + centre := (w/2, (h-d)/2); + op_width := xscale * (asc_height + 1/3equal_spread); + op_height := yscale * (asc_height + 1/3equal_spread); +enddef; + +def beginarrow(expr angle, scale, spread) = + arrow_len# := scale * + if angle mod 180 = 0: arrow_horiz_len# + elseif angle mod 180 = 90: arrow_vert_len# + else: arrow_diag_len# + fi; + arrow_len := scale * + if angle mod 180 = 0: arrow_horiz_len + elseif angle mod 180 = 90: arrow_vert_len + else: arrow_diag_len + fi; + + beginsymbol(arrow_len# * abs (cosd (angle)) + spread * abs (sind (angle)) + 2side_bearing#, + vcentre(arrow_len# * abs (sind (angle)) + spread * abs (cosd (angle)) + rule_thickness#)); + + pair centre, head, foot; + + centre := (w/2, (h-d)/2); + head := centre + arrow_len/2 * dir angle; + foot := centre - arrow_len/2 * dir angle; + arrow_dir := angle; +enddef; + +def beginorder(expr sign, width, spread) = + beginsymbol(width + 2u#, vcentre(spread)); + + pair centre, left_point, right_point; + + centre := (w/2, (h-d)/2); + + left_point := centre - sign * (w/2 - u - 1/2rule_thickness) * right; + right_point := centre + sign * (w/2 - u - 1/2rule_thickness) * right; +enddef; + +vardef stroke text t = + forsuffixes e = l, r: + path_.e := t; + endfor + path_.l -- reverse path_.r -- cycle +enddef; + +% paths + +def triangle(expr centre, size, angle) = + (centre + size * dir angle) -- + (centre + size * dir (angle + 120)) -- + (centre + size * dir (angle + 240)) -- + cycle +enddef; + +def square(expr centre, size, angle) = + (centre + sqrt(2) * size * dir (angle + 45)) -- + (centre + sqrt(2) * size * dir (angle + 135)) -- + (centre + sqrt(2) * size * dir (angle + 225)) -- + (centre + sqrt(2) * size * dir (angle + 315)) -- + cycle +enddef; + +def circle(expr centre, radius) = + (centre + radius * dir 0){dir 90} ... + (centre + radius * dir 45){dir 135} ... + (centre + radius * dir 90){dir 180} ... + (centre + radius * dir 135){dir 225} ... + (centre + radius * dir 180){dir 270} ... + (centre + radius * dir 225){dir 315} ... + (centre + radius * dir 270){dir 0} ... + (centre + radius * dir 315){dir 45} ... + cycle +enddef; + +def ellipse(expr centre, rad_a, rad_b, alpha) = + (centre + rad_a * dir alpha){dir (alpha + 90)} ... + (centre + 1/2sqrt 2 * rad_a * dir alpha + 1/2sqrt 2 * rad_b * dir (alpha + 90)){dir (alpha + 135)} ... + (centre + rad_b * dir (alpha + 90)){dir (alpha + 180)} ... + (centre - 1/2sqrt 2 * rad_a * dir alpha + 1/2sqrt 2 * rad_b * dir (alpha + 90)){dir (alpha + 225)} ... + (centre + rad_a * dir (alpha + 180)){dir (alpha + 270)} ... + (centre - 1/2sqrt 2 * rad_a * dir alpha - 1/2sqrt 2 * rad_b * dir (alpha + 90)){dir (alpha + 315)} ... + (centre + rad_b * dir (alpha + 270)){dir (alpha + 0)} ... + (centre + 1/2sqrt 2 * rad_a * dir alpha - 1/2sqrt 2 * rad_b * dir (alpha + 90)){dir (alpha + 45)} ... + cycle +enddef; + +def sign(expr x) = + if x < 0: -1 elseif x = 0: 0 else: 1 fi +enddef; + +def super_ellipse_point(expr centre, rad_a, rad_b, exponent, alpha, beta) = + begingroup + save c, s; + c := cosd beta; + s := sind beta; + + (centre + sign(c) * rad_a * (abs c ** exponent) * dir alpha + + sign(s) * rad_b * (abs s ** exponent) * dir (alpha + 90)) + endgroup +enddef; + +def super_ellipse(expr centre, rad_a, rad_b, exponent, alpha) = + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 0) .. + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 30) .. + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 60) .. + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 90) .. + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 120) .. + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 150) .. + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 180) .. + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 210) .. + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 240) .. + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 270) .. + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 300) .. + super_ellipse_point(centre, rad_a, rad_b, exponent, alpha, 330) .. + cycle +enddef; + +def half_circle(expr centre, radius, angle) = + (centre + radius * dir (angle + 0)){dir (angle + 90)} ... + (centre + radius * dir (angle + 45)){dir (angle + 135)} ... + (centre + radius * dir (angle + 90)){dir (angle + 180)} ... + (centre + radius * dir (angle + 135)){dir (angle + 225)} ... + (centre + radius * dir (angle + 180)){dir (angle + 270)} +enddef; + +def reg_poly_points(suffix $)(expr n, centre, radius, angle) = + for i = 0 upto n-1: + z$[i] = centre + radius * dir (angle + i/n * 360); + endfor; +enddef; + +% left half of an arrow head +def arrowhead_left(expr pos, angle, spread) = + pos{dir (angle + 170)} .. + {dir (angle + 130)}(pos - 3/4spread * dir angle + spread/2 * dir (angle + 90)){dir (angle - 50)} .. + {dir (angle - 50)}(pos - 1/4spread * dir angle) +enddef; + +% right half of an arrow head +def arrowhead_right(expr pos, angle, spread) = + (pos - 1/4spread * dir angle){dir (angle - 130)} .. + {dir (angle - 130)}(pos - 3/4spread * dir angle + spread/2 * dir (angle - 90)){dir (angle + 50)} .. + {dir (angle + 10)}pos +enddef; + +% the whole arrow head +def arrowhead(expr pos, angle, spread) = + arrowhead_left(pos, angle, spread) & arrowhead_right(pos, angle, spread) +enddef; + +% intersect the arrowhead curve with a path +def arrowhead_intersection(expr pos, angle, spread, p) = + (p intersectionpoint + ((pos - 3/4spread * dir angle + spread/2 * dir (angle + 90)){dir (angle - 50)} .. + {dir (angle - 50)}(pos - 1/4spread * dir angle){dir (angle - 130)} .. + {dir (angle - 130)}(pos - 3/4spread * dir angle + spread/2 * dir (angle - 90)))) +enddef; + +def stroke_through_arrow(expr pos, alpha, spread)(text angles) = + begingroup; + stroke_dir := arrow_dir + select(alpha/45)(angles); + stroke_len := 1/2spread / sind (stroke_dir - arrow_dir); + + pickup stroke_pen; + draw (pos + stroke_len * dir stroke_dir) -- (pos - stroke_len * dir stroke_dir); + endgroup; +enddef; + +def ellipse_set(suffix $,@,@@,$$) = + % given |z$,x@,z$$|, find |y@| and |z@@| + % such that the path |z${x@-x$,0}..z@{0,y@-y$}..{z$$-z@@}z@@| + % is consistent with an ellipse + % and such that the line |z@@--z$$| has a given |slope| + alpha_ := slope * (x@ - x$); + beta_ := y$$ - y$ - slope * (x$$ - x$); + gamma_ := alpha_ / beta_; + y@ - y$ = .5(beta_ - alpha_ * gamma_); + x@@ - x$ = -2gamma_ * (x@ - x$) / (1 + gamma_ * gamma_); + y@@ - y$$ = slope * (x@@ - x$$) +enddef; + +def bulb(suffix $,$$,$$$) = + z$$$r = z$$r; + + path_.l := z$l{x$$r - x$r, 0} ... {0, y$$r - y$r}z$$l; + + filldraw path_.l -- z$$r{0, y$r - y$$r} ... {x$r - x$$r, 0}z$r -- cycle; % link + + path_.r := z$$$l{0, y$r - y$$r} .. z$$$r{0, y$$r - y$r}; % near-circle + + filldraw subpath(0, xpart(path_.r intersectiontimes path_.l)) of path_.r + -- z$$r{0, y$$r - y$r} .. cycle; % bulb +enddef; + +vardef super_arc.r(suffix $,$$) = + % outside of super-ellipse + + pair center, corner; + + if y$ = y$r: + center = (x$$r, y$r); + corner = (x$r, y$$r); + else: + center = (x$r, y$$r); + corner = (x$$r, y$r); + fi + z$.r{corner - z$.r} ... superness[center,corner]{z$$.r - z$.r} + ... {z$$.r - corner}z$$.r +enddef; + +vardef super_arc.l(suffix $,$$) = + % inside of super-ellipse + + pair center, corner; + if y$ = y$r: + center = (x$$l, y$l); + corner = (x$l, y$$l); + else: + center = (x$l, y$$l); + corner = (x$$l, y$l); + fi + z$l{corner - z$l} ... superness[center,corner]{z$$l - z$l} + ... {z$$l - corner}z$$l +enddef; + +vardef pulled_super_arc.r(suffix $,$$)(expr superpull) = + pair center, corner; + + if y$ = y$r: + center = (x$$r, y$r); + corner = (x$r, y$$r); + else: + center = (x$r, y$$r); + corner = (x$$r, y$r); + fi + z$r{corner - z$r} ... superness[center,corner]{z$$r - z$r} + ... {z$$r - corner}z$$r +enddef; + +vardef pulled_super_arc.l(suffix $,$$)(expr superpull) = + pair center, corner, outer_point; + + if y$ = y$r: + center = (x$$l, y$l); + corner = (x$l, y$$l); + outer_point = superness[(x$$r, y$r), (x$r, y$$r)]; + else: + center = (x$l, y$$l); + corner = (x$$l, y$l); + outer_point = superness[(x$r, y$$r), (x$$r, y$r)]; + fi + z$l{corner - z$l} + ... superpull[superness[center,corner], outer_point]{z$$l - z$l} + ... {z$$l - corner}z$$l +enddef; + +vardef pulled_arc@#(suffix $,$$) = + pulled_super_arc@#($,$$)(superpull) +enddef; + +def sim(expr l, r) = + ( 0/26[l, r] - 1/3equal_spread * dir ((angle (r-l) + 90) mod 180)) + .. ( 1/26[l, r]) + .. ( 5/26[l, r] + 1/3equal_spread * dir ((angle (r-l) + 90) mod 180)) + .. (13/26[l, r]) + .. (21/26[l, r] - 1/3equal_spread * dir ((angle (r-l) + 90) mod 180)) + .. (25/26[l, r]) + .. (26/26[l, r] + 1/3equal_spread * dir ((angle (r-l) + 90) mod 180)) +enddef; + +def prec(expr l, r, spread) = + (r - 1/2spread * dir (angle (r-l) + 90)){dir (angle (r-l) + 140)} + .. {dir (angle (r-l) + 180)}l{dir (angle (r-l))} + .. {dir (angle (r-l) + 40)}(r + 1/2spread * dir (angle (r-l) + 90)); +enddef; + +def subset(expr l, r, spread) = + (r - 1/2spread * dir (angle (r-l) + 90)) + -- (1/3[l, r] - 1/2spread * dir (angle (r-l) + 90)){l - r} + .. l + .. (1/3[l, r] + 1/2spread * dir (angle (r-l) + 90)){r - l} + .. (r + 1/2spread * dir (angle (r-l) + 90)) +enddef; + +def smile(expr sign, l, r, spread, round_smile) = + if round_smile: + (l + sign * 1/2spread * dir (angle (r-l) + 90)) + .. {r - l}(1/2[l,r] - sign * 1/2spread * dir (angle (r-l) + 90)){r - l} + .. (r + sign * 1/2spread * dir (angle (r-l) + 90)) + else: + (l + sign * 1/2spread * dir (angle (r-l) + 90)) + -- (1/2[l,r] - sign * 1/2spread * dir (angle (r-l) + 90)) + -- (r + sign * 1/2spread * dir (angle (r-l) + 90)) + fi +enddef; + +def stroke_through(expr pos, spread) = + begingroup; + stroke_len := 1/2spread / cosd 15; + + pickup stroke_pen; + draw (pos + stroke_len * dir 75) -- (pos - stroke_len * dir 75); + endgroup; +enddef; + +def draw_product(expr centre, width, height, sign, thick) = + thin := 1/2thick; + + z1 - z0 = z3 - z2 = width * dir 0; + z2 - z0 = sign * height * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + x0 := hround (x0 - 0.5); + x1 := hround (x1 + 0.5); + x2 := hround (x2 - 0.5); + x3 := hround (x3 + 0.5); + + z4 = 1/3[z0,z1]; + z5 = 2/3[z0,z1]; + + x4 := hround (x4 + 0.5); + x5 := hround (x5 - 0.5); + + z6 = 1/2[z0,z4] + sign * max (1/8height, 3/2thin) * dir 90; + z7 = 1/2[z1,z5] + sign * max (1/8height, 3/2thin) * dir 90; + + z8 = z6 + sign * min (3/4height, height - 3thin) * dir 90; + z9 = z7 + sign * min (3/4height, height - 3thin) * dir 90; + + penpos 0(thin, sign * 90); + penpos 1(thin, sign * 90); + penpos 2(thin, sign * 90); + penpos 3(thin, sign * 90); + penpos 4(thin, sign * 90); + penpos 5(thin, sign * 90); + penpos 6(thick, 0); + penpos 7(thick, 0); + penpos 8(thick, 0); + penpos 9(thick, 0); + + x6l := hround (x6l - 0.5); + x6r := hround (x6r + 0.5); + x7l := hround (x7l - 0.5); + x7r := hround (x7r + 0.5); + x8l := hround (x8l - 0.5); + x8r := hround (x8r + 0.5); + x9l := hround (x9l - 0.5); + x9r := hround (x9r + 0.5); + + y10 = y11 = y2r - sign * 1/2[thin,thick]; + x10 = x6r; + x11 = x7l; + + z10a = z10 - sign * min (1/20height, 4/5sign * (y10 - y9)) * dir 90; + z10b = z10 + 1/20height * dir 0; + z11a = z11 - sign * min (1/20height, 4/5sign * (y10 - y9)) * dir 90; + z11b = z11 - 1/20height * dir 0; + + fill z0l -- z0r{dir 0} .. {sign * dir 90}z6l -- z6r{sign * dir -90} .. {dir 0}z4r -- z4l -- cycle; + fill z1l -- z1r{dir 180} .. {sign * dir 90}z7r -- z7l{sign * dir -90} .. {dir 180}z5r -- z5l -- cycle; + fill z2r -- z2l{dir 0} .. {sign * dir -90}z8l -- z8r -- z10a{sign * dir 90} .. {dir 0}z10b -- + z11b{dir 0} .. {sign * dir -90}z11a -- z9l -- z9r{sign * dir 90} .. z3l -- z3r -- cycle; + fill z6l -- z8l -- z8r -- z6r -- cycle; + fill z7l -- z9l -- z9r -- z7r -- cycle; + + penlabels(0,1,2,3,4,5,6,7,8,9,10,11,10a,10b,11a,11b); +enddef; + +def draw_integral(suffix $)(expr scale, center) = + thick := 2rule_thickness * sqrt (sqrt scale); + thin := 1/2thick; + + penpos0$(4/5thick, 0); + penpos1$(4/5thick, 0); + penpos2$(5/11thick, -90); + penpos3$(4/5thick, 0); + penpos4$(5/11thick, -90); + + z0$ = 1/2[z1$,z3$] = 1/2[z2$,z4$]; + z1$ - z3$ = whatever * dir 80; + z2$ - z4$ = whatever * dir 70; + + x0$l = xpart centre; + top y2$ = h; + bot y4$ = -d; + y1$ = 1/2[y0$,y2$]; + + penpos5$(2/3thick,-135); + penpos6$(2/3thick,-135); + y5$ = 1/9[y2$, y1$]; + x5$ = 8/5[x1$r, x2$r]; + y6$ = 1/9[y4$, y3$]; + x6$ = 8/5[x3$l, x4$l]; + + x2$r := floor min (x2$r, x5$r); + x4$l := ceiling max (x4$l, x6$l); + + x5$r := ceiling x5$r + 1; + y5$r := ceiling y5$r; + x6$l := floor x6$l - 1; + y6$l := floor y6$l; + + if abs (angle (z5$r - z2$r)) < 55: + fill z5$l .. z2$l{left} .. {z3$-z1$}z1$l -- z3$l{z3$-z1$} .. tension 1.5 .. z4$l{left} .. z6$l -- z6$r + .. z4$r{right} .. {z1$-z3$}z3$r -- z1$r{z1$-z3$} .. tension 1.5 .. z2$r{right} .. z5$r -- cycle; + else: + z7$ = z2$r + whatever * dir -30 = whatever[z5$l, z5$r]; + z8$ = z4$l + whatever * dir -30 = whatever[z6$l, z6$r]; + + fill z5$l .. z2$l{left} .. {z3$-z1$}z1$l -- z3$l{z3$-z1$} .. tension 1.5 .. z4$l .. z8$ -- z6$r + .. z4$r{right} .. {z1$-z3$}z3$r -- z1$r{z1$-z3$} .. tension 1.5 .. z2$r .. z7$ -- cycle; + fi; + + fill circle(z5$, 1/3thick); + fill circle(z6$, 1/3thick); + + penlabels(0$,1$,2$,3$,4$,5$,6$); +enddef; + diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Delim.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Delim.mf new file mode 100644 index 00000000000..cee9984a552 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Delim.mf @@ -0,0 +1,882 @@ +% brackets + +def draw_bracket(expr sign, thick, draw_top, draw_mid, draw_bot, draw_double) = + penpos0(thick, 90 - sign * 90); + penpos1(thick, 90 - sign * 90); + penpos2(3/2thick, 90); + penpos3(1/2thick, 90); + penpos4(3/2thick, 90); + penpos5(1/2thick, 90); + penpos6(1/2thick, 0); + penpos7(1/2thick, 0); + + x3 - x2 = x5 - x4 = sign * (w - 2side_bearing); % - 2u + thick); + + 1/2[x2,x3] = w/2 + sign * 1/2u; + + if draw_top: + y1 = h; + else: + y1 = h + 1/3rule_thickness; + fi; + + if draw_bot: + y0 = -d; + else: + y0 = -d - 1/3rule_thickness; + fi; + + x1 = x0; + + z6 = 1/3[z2l,z3l] + sign * thick * dir 0; + z7 = 1/3[z4r,z5r] + sign * thick * dir 0; + + y2l = y3l; + y4r = y5r; + z2l = z0l; + z4r = z1l; + + if draw_mid: + fill stroke z0e -- z1e; + else: + if draw_bot: fill stroke z0e -- 1/4[z0e,z1e]; fi; + if draw_top: fill stroke 3/4[z0e,z1e] -- z1e; fi; + fi; + if draw_top: fill stroke z4e .. {sign * dir 0}z5e; fi; + if draw_bot: fill stroke z2e .. {sign * dir 0}z3e; fi; + if draw_double: fill stroke z6e -- z7e; fi; +enddef; + +lsquare_char = current_char + 1; +rsquare_char = current_char + 6; +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 6)/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "square bracket"; + draw_bracket(sign, 5/4rule_thickness * sqrt (scale/2), true, true, true, false); + endchar; + endfor; +endfor; + +lfloor_char = current_char + 1; +rfloor_char = current_char + 6; +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 6)/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "floor"; + draw_bracket(sign, 5/4rule_thickness * sqrt (scale/2), false, true, true, false); + endchar; + endfor; +endfor; + +lceil_char = current_char + 1; +rceil_char = current_char + 6; +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 6)/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "ceiling"; + draw_bracket(sign, 5/4rule_thickness * sqrt (scale/2), true, true, false, false); + endchar; + endfor; +endfor; + +ulcorner_char = current_char + 1; +urcorner_char = current_char + 6; +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 6)/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "upper corner"; + draw_bracket(sign, 5/4rule_thickness * sqrt (scale/2), true, false, false, false); + endchar; + endfor; +endfor; + +charlist urcorner_char: urcorner_char + 1: urcorner_char + 2: urcorner_char + 3: urcorner_char + 4; +charlist ulcorner_char: ulcorner_char + 1: ulcorner_char + 2: ulcorner_char + 3: ulcorner_char + 4; + +llcorner_char = current_char + 1; +lrcorner_char = current_char + 6; +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 6)/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "lower corner"; + draw_bracket(sign, 5/4rule_thickness * sqrt (scale/2), false, false, true, false); + endchar; + endfor; +endfor; + +charlist lrcorner_char: lrcorner_char + 1: lrcorner_char + 2: lrcorner_char + 3: lrcorner_char + 4; +charlist llcorner_char: llcorner_char + 1: llcorner_char + 2: llcorner_char + 3: llcorner_char + 4; + +ullcorner_char = current_char + 1; +ulrcorner_char = current_char + 6; +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 6)/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "upper/lower corner"; + draw_bracket(sign, 5/4rule_thickness * sqrt (scale/2), true, false, true, false); + endchar; + endfor; +endfor; + +charlist ulrcorner_char: ulrcorner_char + 1: ulrcorner_char + 2: ulrcorner_char + 3: ulrcorner_char + 4; +charlist ullcorner_char: ullcorner_char + 1: ullcorner_char + 2: ullcorner_char + 3: ullcorner_char + 4; + +for sign = 1, -1: + beginsymbol((6 + 6)/2 * u# + 2side_bearing#, vcentre(delim_height#)); "square bracket -- top"; + draw_bracket(sign, 5/4rule_thickness * sqrt (6/2), true, true, false, false); + endchar; +endfor; + +for sign = 1, -1: + beginsymbol((6 + 6)/2 * u# + 2side_bearing#, vcentre(delim_height#)); "square bracket -- bot"; + draw_bracket(sign, 5/4rule_thickness * sqrt (6/2), false, true, true, false); + endchar; +endfor; + +for sign = 1, -1: + beginsymbol((6 + 6)/2 * u# + 2side_bearing#, vcentre(delim_height#)); "square bracket -- module"; + draw_bracket(sign, 5/4rule_thickness * sqrt (6/2), false, true, false, false); + endchar; +endfor; + +extensible current_char: current_char - 4, 0, current_char - 2, current_char; %right square bracket +extensible current_char - 1: current_char - 5, 0, current_char - 3, current_char - 1; %left square bracket +extensible current_char - 2: 0, 0, current_char - 2, current_char; %right floor +extensible current_char - 3: 0, 0, current_char - 3, current_char - 1; %left floor +extensible current_char - 4: current_char - 4, 0, 0, current_char; %right ceiling +extensible current_char - 5: current_char - 5, 0, 0, current_char - 1; %left ceiling + +charlist rsquare_char: rsquare_char + 1: rsquare_char + 2: rsquare_char + 3: rsquare_char + 4: current_char; +charlist lsquare_char: lsquare_char + 1: lsquare_char + 2: lsquare_char + 3: lsquare_char + 4: current_char - 1; +charlist rfloor_char: rfloor_char + 1: rfloor_char + 2: rfloor_char + 3: rfloor_char + 4: current_char - 2; +charlist lfloor_char: lfloor_char + 1: lfloor_char + 2: lfloor_char + 3: lfloor_char + 4: current_char - 3; +charlist rceil_char: rceil_char + 1: rceil_char + 2: rceil_char + 3: rceil_char + 4: current_char - 4; +charlist lceil_char: lceil_char + 1: lceil_char + 2: lceil_char + 3: lceil_char + 4: current_char - 5; + +% semantic brackets + +lsem_char = current_char + 1; +rsem_char = current_char + 6; +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 8)/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "semantic bracket"; + draw_bracket(sign, rule_thickness * sqrt (scale/2), true, true, true, true); + endchar; + endfor; +endfor; + +for sign = 1, -1: + beginsymbol((6 + 8)/2 * u# + 2side_bearing#, vcentre(delim_height#)); "semantic bracket -- top"; + draw_bracket(sign, 5/4rule_thickness * sqrt (6/2), true, true, false, true); + endchar; +endfor; + +for sign = 1, -1: + beginsymbol((6 + 8)/2 * u# + 2side_bearing#, vcentre(delim_height#)); "semantic bracket -- bot"; + draw_bracket(sign, 5/4rule_thickness * sqrt (6/2), false, true, true, true); + endchar; +endfor; + +for sign = 1, -1: + beginsymbol((6 + 8)/2 * u# + 2side_bearing#, vcentre(delim_height#)); "semantic bracket -- module"; + draw_bracket(sign, 5/4rule_thickness * sqrt (6/2), false, true, false, true); + endchar; +endfor; + +extensible current_char: current_char - 4, 0, current_char - 2, current_char; %right semanic bracket +extensible current_char - 1: current_char - 5, 0, current_char - 3, current_char - 1; %left semanic bracket +extensible current_char - 2: 0, 0, current_char - 2, current_char; %right semanic floor +extensible current_char - 3: 0, 0, current_char - 3, current_char - 1; %left semanic floor +extensible current_char - 4: current_char - 4, 0, 0, current_char; %right semanic ceiling +extensible current_char - 5: current_char - 5, 0, 0, current_char - 1; %left semanic ceiling + +charlist rsem_char: rsem_char + 1: rsem_char + 2: rsem_char + 3: rsem_char + 4: current_char; +charlist lsem_char: lsem_char + 1: lsem_char + 2: lsem_char + 3: lsem_char + 4: current_char - 1; + +beginsymbol(6/2 * u# + 2side_bearing#, vcentre(1/2delim_height#)); "vertical bar -- module"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + pickup pencircle scaled 1/12thick; + + penpos2 (thick, 0); + penpos3 (thick, 0); + + x2 = x3 = w/2; + + top y2 = h + 1/3rule_thickness; + bot y3 = -d - 1/3rule_thickness; + + filldraw stroke z2e -- z3e; +endchar; + +extensible current_char: 0, 0, 0, current_char; % vertical bar + +for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol(scale/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "vertical bar"; + thick := 5/8rule_thickness * sqrt scale; + + pickup pencircle scaled 1/12thick; + + penpos2 (thick, 0); + penpos3 (thick, 0); + + x2 = x3 = w/2; + + top y2 = h; + bot y3 = -d; + + filldraw stroke z2e -- z3e; + endchar; +endfor; + +charlist current_char - 4: current_char - 3: current_char - 2: current_char - 1: current_char: + current_char - 5; + +beginsymbol((5.1 + 8)/2 * u# + 2side_bearing#, vcentre(1/2delim_height#)); + "double vertical bar -- module"; + + thick := 3/8rule_thickness * sqrt 5.1; + + pickup pencircle scaled 1/12thick; + + penpos0 (thick, 0); + penpos1 (thick, 0); + penpos2 (thick, 0); + penpos3 (thick, 0); + + x0 = x1; + x2 = x3; + 1/2[x0,x2] = w/2; + x2 - x0 = 4thick; + + top y0 = top y2 = h + 1/3rule_thickness; + bot y1 = bot y3 = -d - 1/3rule_thickness; + + filldraw stroke z0e -- z1e; + filldraw stroke z2e -- z3e; +endchar; + +extensible current_char: 0, 0, 0, current_char; % double vertical line + +for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 8)/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "double vertical bar"; + thick := 4/8rule_thickness * sqrt scale; + + pickup pencircle scaled 1/12thick; + + penpos0 (thick, 0); + penpos1 (thick, 0); + penpos2 (thick, 0); + penpos3 (thick, 0); + + x0 = x1; + x2 = x3; + 1/2[x0,x2] = w/2; + x2 - x0 = 4thick; + + top y0 = top y2 = h; + bot y1 = bot y3 = -d; + + filldraw stroke z0e -- z1e; + filldraw stroke z2e -- z3e; + endchar; +endfor; + +charlist current_char - 4: current_char - 3: current_char - 2: current_char - 1: current_char: + current_char - 5; + +beginsymbol(5u# + 2side_bearing#, vcentre(delim_height#)); "wavy line"; + thick := rule_thickness; + + pickup pencircle scaled thick; + + x0 = x1 = x2 = x3 = w/2; + 1/2[y0,y1] = h; + 1/2[y2,y3] = -d; + y2 - y1 = y1 - y0 = y3 - y2; + + draw (subpath (0.5,2.5) of + (z0{dir (270-30)} + .. {dir (270+30)}z1{dir (270+30)} + .. {dir (270-30)}z2{dir (270-30)} + .. {dir (270+30)}z3)); +endchar; + +extensible current_char: 0, 0, 0, current_char; + +beginsymbol(8u# + 2side_bearing#, vcentre(delim_height#)); "double wavy line"; + thick := rule_thickness; + + pickup pencircle scaled thick; + + x0a = x1a = x2a = x3a = 1/3w; + x0b = x1b = x2b = x3b = 2/3w; + 1/2[y0a,y1a] = 1/2[y0b,y1b] = h; + 1/2[y2a,y3a] = 1/2[y2b,y3b] = -d; + + y2a - y1a = y1a - y0a = y3a - y2a; + y2b - y1b = y1b - y0b = y3b - y2b; + + draw (subpath (0.5,2.5) of + (z0a{dir (270-30)} + .. {dir (270+30)}z1a{dir (270+30)} + .. {dir (270-30)}z2a{dir (270-30)} + .. {dir (270+30)}z3a)); + draw (subpath (0.5,2.5) of + (z0b{dir (270-30)} + .. {dir (270+30)}z1b{dir (270+30)} + .. {dir (270-30)}z2b{dir (270-30)} + .. {dir (270+30)}z3b)); +endchar; + +extensible current_char: 0, 0, 0, current_char; + +def draw_angle(suffix $)(expr shift, sign, thick) = + pickup pencircle scaled (7/8thick); + + x0$ = x1$ = x2$ + sign * (w - 2side_bearing - 2abs shift - thick); + + x3$ = x2$ + sign * 3/8thick; + + top y1$ = h; + bot y0$ = -d; + 1/2[y0$,y1$] = y2$ = y3$; + 1/2[x0$,x2$] = w/2; + + draw (z0$ + shift * right) -- (z2$ + shift * right) -- (z1$ + shift * right) -- (z3$ + shift * right) -- cycle; +enddef; + +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 6)/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "angle"; + draw_angle(a, 0, sign, 7/8rule_thickness * sqrt scale); + endchar; + endfor; + charlist current_char - 4: current_char - 3: current_char - 2: current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 6)/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "angle bar"; + draw_angle(a, 0, sign, 7/8rule_thickness * sqrt scale); + + z3 = whatever[z0a,z2a]; + z4 = whatever[z1a,z2a]; + + x3 = x4 = (1/(2*scale))[x0a,x2a]; + + pickup pencircle scaled (11/25rule_thickness * sqrt scale); + + draw z3 -- z4; + endchar; + endfor; + charlist current_char - 4: current_char - 3: current_char - 2: current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 6)/2 * u# + 5/2rule_thickness# * sqrt scale + 2side_bearing#, + vcentre(scale * delim_height#)); + "double angle"; + thick := 5/8rule_thickness * sqrt scale; + draw_angle(a, -2thick, sign, thick); + draw_angle(b, 2thick, sign, thick); + endchar; + endfor; + charlist current_char - 4: current_char - 3: current_char - 2: current_char - 1: current_char; +endfor; + +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol(3scale * u# + side_bearing#, vcentre(scale * delim_height#)); "slash"; + thick := 5/4rule_thickness * sqrt (scale/2); + + pickup pencircle scaled thick; + + x1 - x0 = sign * (w - side_bearing - thick); + + top y1 = h; + bot y0 = -d; + 1/2[x0,x1] = w/2; + + draw z0 -- z1; + endchar; + endfor; + charlist current_char - 4: current_char - 3: current_char - 2: current_char - 1: current_char; +endfor; + +def draw_paren(expr sign, thick) = + penpos0(1/2thick, 90 - sign * 40); + penpos1(1/2thick, -90 + sign * 40); + penpos2(4/3thick, 90 - sign * 90); + + x0 = x1 = x2 + sign * (w - 2side_bearing - thick); + + top y1l = h; + bot y0l = -d; + 1/2[y0,y1] = y2; + 1/2[x0l,x2l] = w/2; + + fill stroke z0e{3(x2e - x0e), y2e - y0e} .. z2e .. {3(x1e - x2e), y1e - y2e}z1e; + + penlabels(0,1,2); +enddef; + +lparen_char = current_char + 1; +rparen_char = current_char + 6; +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol(2/3*(scale + 5.5) * u# + 2side_bearing#, vcentre(scale * delim_height#)); "parenthesis"; + draw_paren(sign, 9/20rule_thickness * sqrt (4*scale)); + endchar; + endfor; +endfor; + +% extensible parenthesis + +for sign = 1, -1: + beginsymbol(2/3*(6 + 5.5) * u# + 2side_bearing#, vcentre(6/2 * delim_height#)); "parenthesis -- top"; + thick := 9/20rule_thickness * sqrt 24; + + penpos1(1/2thick, -90 + sign * 40); + penpos2(4/3thick, 90 - sign * 90); + + x1 = x2 + sign * (w - 2side_bearing - thick); + + top y1l = h + eps; + y2 = -d - 1/2rule_thickness; + 1/2[x1l,x2l] = w/2; + + fill stroke z2e{up} .. {3(x1e - x2e), y1e - y2e}z1e; + endchar; +endfor; + +for sign = 1, -1: + beginsymbol(2/3*(6 + 5.5) * u# + 2side_bearing#, vcentre(6/2 * delim_height#)); "parenthesis -- bot"; + thick := 9/20rule_thickness * sqrt 24; + + penpos0(1/2thick, 90 - sign * 40); + penpos2(4/3thick, 90 - sign * 90); + + x0 = x2 + sign * (w - 2side_bearing - thick); + + y2 = h + 1/2rule_thickness; + bot y0l = -d - eps; + 1/2[x0l,x2l] = w/2; + + fill stroke z0e{3(x2e - x0e), y2e - y0e} .. {up}z2e; + endchar; +endfor; + +for sign = 1, -1: + beginsymbol(2/3*(6 + 5.5) * u# + 2side_bearing#, vcentre(delim_height#)); "parenthesis -- module"; + thick := 9/20rule_thickness * sqrt 24; + + penpos1(1/2thick, 90 - sign * 40); + penpos2(4/3thick, 90 - sign * 90); + penpos3(4/3thick, 90 - sign * 90); + + x2 = x3 = x1 - sign * (w - 2side_bearing - thick); + + y2 = h + 1/2rule_thickness; + y3 = -d - 1/2rule_thickness; + 1/2[x1l,x2l] = w/2; + + fill stroke z2e -- z3e; + endchar; +endfor; + +extensible current_char: current_char - 4, 0, current_char - 2, current_char; %right parenthesis +extensible current_char - 1: current_char - 5, 0, current_char - 3, current_char - 1; %left parenthesis + +charlist rparen_char: rparen_char + 1: rparen_char + 2: rparen_char + 3: rparen_char + 4: current_char; +charlist lparen_char: lparen_char + 1: lparen_char + 2: lparen_char + 3: lparen_char + 4: current_char - 1; + +% curly braces + +def draw_brace_tip(suffix $,@)(expr alpha,thick) = + pickup pencircle scaled 1/12thick; + + penpos$ (1/2thick, alpha); + penpos$'(1/2thick, alpha); + penpos@ (thick, alpha); + penpos@'(thick, alpha); + + beta := angle (5(x$l-x@l), y$-y@) - alpha; + + filldraw z$l{-dir (alpha + beta)} ... z@l --- z@'l -- z@'r + --- z@r ... {dir (alpha + beta)}z$'r -- z$r -- cycle; +enddef; + +def draw_brace(expr center, size, width, alpha, thick, top_size, mid_size, bot_size) = + + pickup pencircle scaled 1/12thick; + + penpos1 (1/2thick, alpha); + penpos1'(1/2thick, alpha); + penpos4 (1/2thick, alpha); + penpos4'(1/2thick, alpha); + penpos7 (1/2thick, alpha); + penpos7'(1/2thick, alpha); + penpos2 (thick, alpha); + penpos2'(thick, alpha); + penpos3 (thick, alpha); + penpos3'(thick, alpha); + penpos5 (thick, alpha); + penpos5'(thick, alpha); + penpos6 (thick, alpha); + penpos6'(thick, alpha); + + z1 - z7 = (size - 1/6thick) * dir (alpha + 90); + + center - 1/2[z1l,z7l] = 1/2[z4r,z4'r] - center = width/2 * dir alpha; + + z2 = center + whatever * dir (alpha + 90); + z3 = center + whatever * dir (alpha + 90); + + z3' = center + (mid_size/2 + 1/2rule_thickness) * dir (alpha + 90); + z5' = center - (mid_size/2 + 1/2rule_thickness) * dir (alpha + 90); + + z2' = center + (size/2 - top_size - 1/2rule_thickness) * dir (alpha + 90); + z6' = center - (size/2 - bot_size - 1/2rule_thickness) * dir (alpha + 90); + + 1/2[z2,z6] = 1/2[z3,z5] = center; + + z2 - z3 = z5 - z6 = 5/24(size - 1/3thick) * dir (alpha + 90); + + z1 - z2 = z3 - z4; + z7 - z6 = z5 - z4'; + + z1 - z1' = z4 - z4' = z7' - z7 = 1/4thick * dir (alpha + 90); + + beta := angle (5 (z1l-z2l) dotprod dir alpha, (z1l-z2l) dotprod dir (alpha+90)); + + if top_size > 0: + filldraw z1r{-dir (alpha + beta)} ... z2r --- z2'r -- z2'l + --- z2l ... {dir (alpha + beta)}z1'l -- z1l -- cycle; + penlabels(1,2,2'); + elseif bot_size > 0: + filldraw + z6'r --- z6r ... {dir (alpha - beta)}z7r + -- z7l -- z7'l{-dir (alpha - beta)} ... z6l --- z6'l -- cycle; + penlabels(6',6,7); + elseif mid_size > 0: + filldraw z3'r --- z3r{dir (alpha-90)} ... {dir alpha}z4r + -- z4'r{-dir alpha} ... {dir (alpha-90)}z5r --- z5'r -- z5'l --- z5l{dir (alpha+90)} + ... {dir alpha}1/2[z4l, z4'l]{-dir alpha} + ... {dir (alpha+90)}z3l --- z3'l -- cycle; + penlabels(3',3,4,5,5'); + else: + filldraw z1r{-dir (alpha + beta)} ... z2r --- z3r{dir (alpha-90)} ... {dir alpha}z4r + -- z4'r{-dir alpha} ... {dir (alpha-90)}z5r --- z6r ... {dir (alpha - beta)}z7r + -- z7l -- z7'l{-dir (alpha - beta)} ... z6l --- z5l{dir (alpha+90)} + ... {dir alpha}1/2[z4l, z4'l]{-dir alpha} + ... {dir (alpha+90)}z3l --- z2l ... {dir (alpha + beta)}z1'l -- z1l -- cycle; + penlabels(1,2,3,4,5,6,7); + fi; + +enddef; + +lcurly_char = current_char + 1; +rcurly_char = current_char + 6; +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((scale + 10)/2 * u# + 2side_bearing#, vcentre(scale * delim_height#)); "curly brace"; + thick := 5/4rule_thickness * sqrt sqrt (scale/2); + + draw_brace((w/2, (h-d)/2), h+d, w - 2side_bearing, 90 + sign * 90, thick, 0, 0, 0) + endchar; + endfor; +endfor; + +beginsymbol((6 + 10)/2 * u# + 2side_bearing#, vcentre(delim_height#)); "curly brace -- top"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + draw_brace((w/2, h - 3delim_height), 6delim_height, w - 2side_bearing, 180, thick, 0, 0, h+d); +endchar; + +beginsymbol((6 + 10)/2 * u# + 2side_bearing#, vcentre(delim_height#)); "curly brace -- top"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + draw_brace((w/2, h - 3delim_height), 6delim_height, w - 2side_bearing, 0, thick, h+d, 0, 0); +endchar; + +beginsymbol((6 + 10)/2 * u# + 2side_bearing#, vcentre(delim_height#)); "curly brace -- bot"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + draw_brace((w/2, 3delim_height - d), 6delim_height, w - 2side_bearing, 180, thick, h+d, 0, 0) +endchar; + +beginsymbol((6 + 10)/2 * u# + 2side_bearing#, vcentre(delim_height#)); "curly brace -- bot"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + draw_brace((w/2, 3delim_height - d), 6delim_height, w - 2side_bearing, 0, thick, 0, 0, h+d) +endchar; + +for sign = 1, -1: + beginsymbol((6 + 10)/2 * u# + 2side_bearing#, vcentre(2delim_height#)); "curly brace -- middle"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + draw_brace((w/2, (h-d)/2), 6delim_height, w - 2side_bearing, 90 + sign * 90, thick, 0, h+d, 0); + endchar; +endfor; + +beginsymbol((6 + 10)/2 * u# + 2side_bearing#, vcentre(1/2delim_height#)); "curly brace -- module"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + pickup pencircle scaled 1/12thick; + + penpos2 (thick, 0); + penpos3 (thick, 0); + + x2 = x3 = w/2; + + top y2 = h + 1/2rule_thickness; + bot y3 = -d - 1/2rule_thickness; + + filldraw stroke z2e -- z3e; +endchar; + +extensible current_char - 6: current_char - 6, 0, current_char - 4, current_char; %sharp left parenthesis +extensible current_char - 5: current_char - 5, 0, current_char - 3, current_char; %sharp right parenthesis +extensible current_char - 4: current_char - 5, 0, current_char - 4, current_char; %right moustache +extensible current_char - 3: current_char - 6, 0, current_char - 3, current_char; %left moustache +extensible current_char - 2: current_char - 6, current_char - 2, current_char - 4, current_char; %left curly brace +extensible current_char - 1: current_char - 5, current_char - 1, current_char - 3, current_char; %right curly brace +extensible current_char: 0, 0, 0, current_char; %vertical line + +charlist rcurly_char: rcurly_char + 1: rcurly_char + 2: rcurly_char + 3: rcurly_char + 4: current_char - 1; +charlist lcurly_char: lcurly_char + 1: lcurly_char + 2: lcurly_char + 3: lcurly_char + 4: current_char - 2; + +for sign = 1, -1: + for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol(scale * delim_height#, vcentre((scale + 10)/2 * u# + 2side_bearing#)); + "horizontal curly brace"; + + thick := 5/4rule_thickness * sqrt sqrt (scale/2); + + draw_brace((w/2, (h-d)/2), w, (h+d) - 2side_bearing, sign * 90, thick, 0, 0, 0) + endchar; + endfor; +endfor; + +beginsymbol(delim_height#, vcentre((6 + 10)/2 * u# + 2side_bearing#)); "curly brace -- left"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + draw_brace((3delim_height, (h-d)/2), 6delim_height, (h+d) - 2side_bearing, 90, thick, w, 0, 0); +endchar; + +beginsymbol(delim_height#, vcentre((6 + 10)/2 * u# + 2side_bearing#)); "curly brace -- left"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + draw_brace((3delim_height, (h-d)/2), 6delim_height, (h+d) - 2side_bearing, -90, thick, 0, 0, w); +endchar; + +beginsymbol(delim_height#, vcentre((6 + 10)/2 * u# + 2side_bearing#)); "curly brace -- right"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + draw_brace((w - 3delim_height, (h-d)/2), 6delim_height, (h+d) - 2side_bearing, 90, thick, 0, 0, w); +endchar; + +beginsymbol(delim_height#, vcentre((6 + 10)/2 * u# + 2side_bearing#)); "curly brace -- right"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + draw_brace((w - 3delim_height, (h-d)/2), 6delim_height, (h+d) - 2side_bearing, -90, thick, w, 0, 0); +endchar; + +for sign = 1, -1: + beginsymbol(2delim_height#, vcentre((6 + 10)/2 * u# + 2side_bearing#)); + "curly brace -- horizontal middle"; + + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + draw_brace((w/2, (h-d)/2), 6delim_height, (h+d) - 2side_bearing, sign * 90, thick, 0, w, 0); + endchar; +endfor; + +beginsymbol(u#, vcentre((6 + 10)/2 * u# + 2side_bearing#)); + "curly brace -- horizontal module"; + thick := 5/4rule_thickness * sqrt sqrt (6/2); + + pickup pencircle scaled 1/12thick; + + penpos1 (thick, 90); + penpos2 (thick, 90); + + x1 = -u/2; + x2 = w + u/2; + y1 = y2 = (h-d)/2; + + filldraw stroke z1e -- z2e; +endchar; + + +% roots + +def draw_root_top(expr scale, thick, vertical) = + pickup pencircle scaled thick; + + top y0 = h; + x0 = w; + + bot y1 = -d; + + if vertical: + x1 = 6/9w; + draw z0 -- (x1, y0) -- z1; + else: + x1 = 4/9w; + draw z0 -- z1; + fi; +enddef; + +def draw_root_bot(expr scale, thick, vertical) = + penpos2(3/2thick, 0); + penpos3(thick, 0); + + x2l = 1/9w; + y2 = 1/2[y0, y1]; + x3 = x1; + bot y3 = -d; + + z4 = whatever[z0, z1] = z2r + whatever * (z2l - z3l); + + penpos5(1/2thick, angle (z3l - z2l)); + z5l = z2r + 5/2thick * dir (angle (z3l - z2l) - 90); + + z6 = whatever[z2l, z3l] = z5r + whatever * dir (angle (z3l - z2l) - 90); + + fill z5r -- z6 -- z3l -- z3 -- z4 -- z2r -- z5l -- cycle; +enddef; + +root_char = current_char + 1; + +for scale = 2, 2.5, 3.3, 4.2, 5.1: + beginsymbol((2scale + 10) * u# + side_bearing#, + sqrt (scale/2) * rule_thickness#, + scale * delim_height# - sqrt (scale/2) * rule_thickness#); + "root"; + + draw_root_top(scale, sqrt (scale/2) * rule_thickness, false); + draw_root_bot(scale, sqrt (scale/2) * rule_thickness, false); + labels(0,1,2,3,4,5,6); + + endchar; +endfor; + +beginsymbol((12 + 10) * u# + side_bearing#, + sqrt (6/2) * rule_thickness#, + delim_height# - sqrt (6/2) * rule_thickness#); + "root -- top"; + + thick := vround (sqrt (6/2) * rule_thickness# * hppp); + + draw_root_top(6, thick, true); +endchar; + +beginsymbol((12 + 10) * u# + side_bearing#, 0, 3 * delim_height#); + "root -- bottom"; + + thick := vround (sqrt (6/2) * rule_thickness# * hppp); + + pickup pencircle scaled thick; + + x0 = x1 = 6/9w; + bot y0 = d; + bot y1 = -d; + + draw 1/2[z0, z1] -- z1; + + draw_root_bot(6, thick, true); +endchar; + +beginsymbol((12 + 10) * u# + side_bearing#, vcentre(delim_height#)); + "root -- module"; + + thick := vround (sqrt (6/2) * rule_thickness# * hppp); + + pickup pencircle scaled thick; + + x0 = x1 = 6/9w; + y0 = h; + y1 = -d; + + draw z0 -- z1; +endchar; + +extensible current_char - 2: current_char - 2, 0, current_char - 1, current_char; + +charlist root_char: root_char + 1: root_char + 2: root_char + 3: root_char + 4: current_char - 2; + +% reserve space for accents +current_char := 212; + +for arrow_dir = 90, 270: + beginsymbol(8u# + 2side_bearing#, vcentre(delim_height#)); "arrow up/down"; + pickup rule_pen; + + pair foot, head; + + if arrow_dir = 90: + head = (w/2, h); + foot = (w/2, -d); + else: + head = (w/2, -d); + foot = (w/2, h); + fi; + + draw foot -- head; + draw arrowhead(head, arrow_dir, arrow_spread); + endchar; +endfor; + +beginsymbol(8u# + 2side_bearing#, vcentre(delim_height#)); "arrow module"; + pickup rule_pen; + + z0 = (w/2, h + 1/2rule_thickness); + z1 = (w/2, -d - 1/2rule_thickness); + + draw z0 -- z1; +endchar; + +extensible current_char-2: current_char-2, 0, current_char, current_char; +extensible current_char-1: current_char, 0, current_char-1, current_char; +extensible current_char: current_char-2, 0, current_char-1, current_char; + +for arrow_dir = 90, 270: + beginsymbol(8u# + 2side_bearing#, vcentre(delim_height#)); "double arrow up/down"; + pickup rule_pen; + + pair foot, head; + + if arrow_dir = 90: + head = (w/2, h); + foot = (w/2, -d); + else: + head = (w/2, -d); + foot = (w/2, h); + fi; + + z1 - z0 = z3 - z2 = equal_spread * dir (arrow_dir + 90); + + 1/2[z0,z1] = foot - 1/2rule_thickness * dir arrow_dir; + 1/2[z2,z3] = head; + + draw z0 -- arrowhead_intersection(head, arrow_dir, 13/10arrow_spread, z0 -- z2); + draw z1 -- arrowhead_intersection(head, arrow_dir, 13/10arrow_spread, z1 -- z3); + + draw arrowhead(head, arrow_dir, 13/10arrow_spread); + endchar; +endfor; + +beginsymbol(8u# + 2side_bearing#, vcentre(delim_height#)); "double arrow module"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = equal_spread * right; + + 1/2[z0,z1] = (w/2, h + 1/2rule_thickness); + 1/2[z2,z3] = (w/2, -d - 1/2rule_thickness); + + draw z0 -- z2; + draw z1 -- z3; +endchar; + +extensible current_char-2: current_char-2, 0, current_char, current_char; +extensible current_char-1: current_char, 0, current_char-1, current_char; +extensible current_char: current_char-2, 0, current_char-1, current_char; + diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Geometric.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Geometric.mf new file mode 100644 index 00000000000..7f19a9d1d4c --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Geometric.mf @@ -0,0 +1,2277 @@ + +beginsymbol(dot_size# + 2side_bearing#, vcentre(2dot_size#)); "centre dot"; + pickup rule_pen; + + fill circle((w/2, (h-d)/2), dot_size); +endchar; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, (3dot_size# + equal_spread#)/arrow_horiz_len#, dot_size#); + "colon (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = (2dot_size + equal_spread) * dir alpha; + 1/2[z0,z1] = centre; + + fill circle(z0, dot_size); + fill circle(z1, dot_size); + endchar; +endfor; + +for alpha = 0, 90, 45, 135: + beginarrow(alpha, (5dot_size# + 2equal_spread#)/arrow_horiz_len#, dot_size#); + "triple colon (" & decimal alpha & ")"; + pickup rule_pen; + + z1 - z0 = (2dot_size + equal_spread) * dir alpha; + z2 - z1 = (2dot_size + equal_spread) * dir alpha; + z1 = centre; + + fill circle(z0, dot_size); + fill circle(z1, dot_size); + fill circle(z2, dot_size); + endchar; +endfor; + +for alpha = 0, 90, 180, 270: + beginoperator(plus_size#, 1); "therefore (" & decimal alpha & ")"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + r := r * 1/3[1, sqrt 2]; + + fill circle(centre + r * dir alpha, dot_size); + fill circle(centre + r * dir (alpha + 120), dot_size); + fill circle(centre + r * dir (alpha + 240), dot_size); + endchar; +endfor; + +for alpha = 0, 45: + beginoperator(plus_size#, 1); "quad dot (" & decimal alpha & ")"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + r := r * 1/3[1, sqrt 2]; + + fill circle(centre + r * dir alpha, dot_size); + fill circle(centre + r * dir (alpha + 90), dot_size); + fill circle(centre + r * dir (alpha + 180), dot_size); + fill circle(centre + r * dir (alpha + 270), dot_size); + endchar; +endfor; + +beginoperator(plus_size#, 1); "five dots"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + r := r * 1/3[1, sqrt 2]; + + fill circle(centre, dot_size); + fill circle(centre + r * dir 0, dot_size); + fill circle(centre + r * dir 90, dot_size); + fill circle(centre + r * dir 180, dot_size); + fill circle(centre + r * dir 270, dot_size); +endchar; + +beginoperator(plus_size#, 1); "minus"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre + r * dir 0) -- (centre + r * dir 180); +endchar; + +beginoperator(plus_size#, 1); "bar"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre + r * dir 90) -- (centre + r * dir 270); +endchar; + +beginoperator(plus_size#, 1); "medium slash"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + r := r * 1/3[1, sqrt 2]; + + draw (centre + r * dir 45) -- (centre + r * dir 225); +endchar; + +beginoperator(plus_size#, 1); "medium backslash"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + r := r * 1/3[1, sqrt 2]; + + draw (centre + r * dir 135) -- (centre + r * dir 315); +endchar; + +beginoperator(plus_size#, 1); "plus"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre + r * dir 0) -- (centre + r * dir 180); + draw (centre + r * dir 90) -- (centre + r * dir 270); +endchar; + +beginoperator(plus_size#, 1); "times"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + r := r * 1/3[1, sqrt 2]; + + draw (centre + r * dir 45) -- (centre + r * dir 225); + draw (centre + r * dir 135) -- (centre + r * dir 315); +endchar; + +beginoperator(plus_size#, 1); "plus minus"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre + r * dir 0) -- (centre + r * dir 180); + draw (centre + r * dir 90) -- (centre + (r - 1/4rule_thickness) * dir 270); + + draw (centre + r * (dir 0 - dir 90)) -- (centre + r * (dir 180 - dir 90)); +endchar; + +beginoperator(plus_size#, 1); "minus plus"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre + r * dir 0) -- (centre + r * dir 180); + draw (centre + (r - 1/4rule_thickness) * dir 90) -- (centre + r * dir 270); + + draw (centre + r * (dir 0 + dir 90)) -- (centre + r * (dir 180 + dir 90)); +endchar; + +for angle = 0, 90, 180, 270: + beginoperator(plus_size#, 1); "dot minus (" & decimal angle & ")"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre - r * dir angle) -- (centre + r * dir angle); + fill circle(centre + equal_spread * dir (angle + 90), dot_size); + endchar; +endfor; + +for angle = 0, 45, 90, 135: + beginoperator(plus_size#, 1); "divides"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre - r * dir angle) -- (centre + r * dir angle); + fill circle(centre + equal_spread * dir (angle + 90), dot_size); + fill circle(centre - equal_spread * dir (angle + 90), dot_size); + endchar; +endfor; + +% Warning: The other two orientations are below. +% They should stay consistent. + +beginoperator(plus_size#, 1); "logical not"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre + r * dir 180) -- (centre + r * dir 0) + -- (centre + r * dir 0 - equal_spread * dir 90); +endchar; + +beginoperator(plus_size#, 1); "reversed logical not"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre + r * dir 180 - equal_spread * dir 90) + -- (centre + r * dir 180) -- (centre + r * dir 0) +endchar; + +for alpha = 0, 90, 180, 270: + beginoperator(plus_size#, 1); "times (" & decimal alpha & ")"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + r := r * 1/3[1, sqrt 2]; + + draw (centre + r * dir (alpha + 45)) -- (centre + r * dir (alpha + 225)) -- + (centre + r * dir (alpha + 315)) -- (centre + r * dir (alpha + 135)); + endchar; +endfor; + +for alpha = 0, 90: + beginoperator(plus_size#, 1); "bowtie (" & decimal alpha & ")"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + r := r * 1/3[1, sqrt 2]; + + draw (centre + r * dir (alpha + 45)) -- (centre + r * dir (alpha + 225)) -- + (centre + r * dir (alpha + 135)) -- (centre + r * dir (alpha + 315)) -- cycle; + endchar; +endfor; + +for alpha = 0, 90, 180, 270: + beginoperator(plus_size#, 1); "Y (" & decimal alpha & ")"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + r := r * 1/3[1, sqrt 2]; + + draw centre -- (centre + r * dir alpha); + draw centre -- (centre + r * dir (alpha + 120)); + draw centre -- (centre + r * dir (alpha + 240)); + endchar; +endfor; + +% operators + +for sign = 1, -1: + beginoperator(plus_size#, 1); "wedge"; + pickup rule_pen; + + z2 - z0 = plus_size * dir 0; + + x1 = 1/2[x0, x2] = w/2; + + y1 - y0 = sign * plus_size; + 1/2[y0,y1] = ypart centre; + + draw z0 -- z1 -- z2; + endchar; +endfor; + +for sign = 1, -1: + beginoperator(plus_size#, 1); "wedge dot"; + pickup rule_pen; + + z2 - z0 = plus_size * dir 0; + + x1 = 1/2[x0, x2] = w/2; + + y1 - y0 = sign * plus_size; + 1/2[y0,y1] = ypart centre; + + draw z0 -- z1 -- z2; + fill circle(centre - sign * 1/3plus_size * dir 90, dot_size); + endchar; +endfor; + +for sign = 1, -1: + beginsymbol(13/9plus_size# + 2side_bearing#, vcentre(plus_size# + rule_thickness#)); + "double wedge"; + + pickup rule_pen; + + z2 - z0 = plus_size * dir 0; + + x1 = 1/2[x0, x2] = w/2; + + y1 - y0 = sign * plus_size; + 1/2[y0,y1] = ypart centre; + + 1/2[z0a,z0b] = z0; + 1/2[z1a,z1b] = z1; + 1/2[z2a,z2b] = z2; + z0b - z0a = z1b - z1a = z2b - z2a = 4/9plus_size * dir 0; + + draw z0a -- z1a -- z2a; + draw z0b -- z1b -- z2b; + endchar; +endfor; + +for sign = 1, -1: + beginoperator(plus_size#, 1); "curly wedge"; + pickup rule_pen; + + draw prec(centre + sign * 1/2plus_size * dir 90, + centre - sign * 1/2plus_size * dir 90, + plus_size); + endchar; +endfor; + +for sign = 1, -1: + beginoperator(plus_size#, 1); "curly wedge dot"; + pickup rule_pen; + + draw prec(centre + sign * 1/2plus_size * dir 90, + centre - sign * 1/2plus_size * dir 90, + plus_size); + fill circle(centre - sign * 5/12plus_size * dir 90, dot_size); + endchar; +endfor; + +for sign = 1, -1: + beginsymbol(13/9plus_size# + 2side_bearing#, vcentre(plus_size# + rule_thickness#)); + "double wedge"; + + pickup rule_pen; + + 1/2[z0,z1] = (w/2, (h-d)/2); + z1 - z0 = 4/9plus_size * dir 0; + + draw prec(z0 + sign * 1/2plus_size * dir 90, + z0 - sign * 1/2plus_size * dir 90, + plus_size); + draw prec(z1 + sign * 1/2plus_size * dir 90, + z1 - sign * 1/2plus_size * dir 90, + plus_size); + endchar; +endfor; + +for sign = 1, -1: + beginoperator(plus_size#, 1); "union"; + pickup rule_pen; + + draw subset(centre - sign * 1/2plus_size * dir 90, + centre + sign * 1/2plus_size * dir 90, + plus_size); + endchar; +endfor; + +for sign = 1, -1: + beginoperator(4/3plus_size#, 1); "double union"; + pickup rule_pen; + + draw subset(centre - sign * 5/18plus_size * dir 90, + centre + sign * 2/3plus_size * dir 90, + 5/9plus_size); + draw subset(centre - sign * 2/3plus_size * dir 90, + centre + sign * 2/3plus_size * dir 90, + 4/3plus_size); + endchar; +endfor; + +for sign = 1, -1: + beginoperator(plus_size#, 1); "union dot"; + pickup rule_pen; + + draw subset(centre - sign * 1/2plus_size * dir 90, + centre + sign * 1/2plus_size * dir 90, + plus_size); + fill circle(centre + sign * 1/6plus_size * dir 90, dot_size); + endchar; +endfor; + +for sign = 1, -1: + beginoperator(plus_size#, 1); "union plus"; + pickup rule_pen; + + draw subset(centre - sign * 1/2plus_size * dir 90, + centre + sign * 1/2plus_size * dir 90, + plus_size); + + t := 22/10rule_thickness; + r := 1/2plus_size - t; + + draw (centre + sign * 1/6plus_size * dir 90 + r * dir 0) + -- (centre + sign * 1/6plus_size * dir 90 + r * dir 180); + draw (centre + (r + sign * 1/6plus_size) * dir 90) + -- (centre + (r - sign * 1/6plus_size) * dir 270); + endchar; +endfor; + +for sign = 1, -1: + beginoperator(plus_size#, 1); "square union"; + pickup rule_pen; + + z3 - z0 = z2 - z1 = plus_size * dir 0; + z0 - z1 = sign * plus_size * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + draw z0 -- z1 -- z2 -- z3; + endchar; +endfor; + +for sign = 1, -1: + beginoperator(4/3plus_size#, 1); "double square union"; + pickup rule_pen; + + z3a - z0a = z2a - z1a = 4/3plus_size * dir 0; + z0a - z1a = sign * 4/3plus_size * dir 90; + + 1/2[1/2[z0a,z1a], 1/2[z2a,z3a]] = centre; + + z3b - z0b = z2b - z1b = 5/9plus_size * dir 0; + z0b - z1b = sign * 17/18plus_size * dir 90; + + y0b = y0a; + 1/2[x0b, x3b] = xpart centre; + + draw z0a -- z1a -- z2a -- z3a; + draw z0b -- z1b -- z2b -- z3b; + endchar; +endfor; + +for sign = 1, -1: + beginoperator(plus_size#, 1); "square union dot"; + pickup rule_pen; + + z3 - z0 = z2 - z1 = plus_size * dir 0; + z0 - z1 = sign * plus_size * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + draw z0 -- z1 -- z2 -- z3; + + fill circle(centre + sign * 1/6plus_size * dir 90, dot_size); + endchar; +endfor; + +for sign = 1, -1: + beginoperator(plus_size#, 1); "square union plus"; + pickup rule_pen; + + z3 - z0 = z2 - z1 = plus_size * dir 0; + z0 - z1 = sign * plus_size * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + draw z0 -- z1 -- z2 -- z3; + + t := 22/10rule_thickness; + r := 1/2plus_size - t; + + draw (centre + sign * 1/6plus_size * dir 90 + r * dir 0) + -- (centre + sign * 1/6plus_size * dir 90 + r * dir 180); + draw (centre + (r + sign * 1/6plus_size) * dir 90) + -- (centre + (r - sign * 1/6plus_size) * dir 270); + endchar; +endfor; + + +% triangles + +for alpha = 0, 90, 180, 270: + beginoperator(small_op_size#, 1); "small triangle (" & decimal alpha & ")"; + pickup rule_pen; + draw triangle(centre, w/2-side_bearing, alpha); + endchar; +endfor; + +for alpha = 0, 90, 180, 270: + beginoperator(small_op_size#, 1); "small filled triangle (" & decimal alpha & ")"; + pickup rule_pen; + draw triangle(centre, w/2-side_bearing, alpha); + fill triangle(centre, w/2-side_bearing, alpha); + endchar; +endfor; + +for alpha = 0, 90, 180, 270: + beginoperator(med_op_size#, 1); "medium triangle (" & decimal alpha & ")"; + pickup rule_pen; + draw triangle(centre, w/2-side_bearing, alpha); + endchar; +endfor; + +for alpha = 0, 90, 180, 270: + beginoperator(large_op_size#, 1); "large triangle (" & decimal alpha & ")"; + pickup rule_pen; + draw triangle(centre, w/2-side_bearing, alpha); + endchar; +endfor; + +% circles + +beginoperator(4/5small_op_size#, 1); "small circle"; + pickup rule_pen; + draw circle(centre, 4/10small_op_size); +endchar; + +beginoperator(4/5small_op_size#, 1); "small filled circle"; + pickup rule_pen; + draw circle(centre, 4/10small_op_size); + fill circle(centre, 4/10small_op_size); +endchar; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle"; + pickup rule_pen; + draw circle(centre, plus_size/2 + 11/10rule_thickness); +endchar; + +beginoperator(4/5large_op_size#, 1); "large circle"; + pickup rule_pen; + draw circle(centre, 4/10large_op_size); +endchar; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle minus"; + pickup rule_pen; + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + draw (centre + plus_size/2 * left) -- (centre + plus_size/2 * right); +endchar; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle bar"; + pickup rule_pen; + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + draw (centre + plus_size/2 * up) -- (centre + plus_size/2 * down); +endchar; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle slash"; + pickup rule_pen; + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + draw (centre + plus_size/2 * dir 45) -- (centre + plus_size/2 * dir 225); +endchar; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle backslash"; + pickup rule_pen; + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + draw (centre + plus_size/2 * dir 135) -- (centre + plus_size/2 * dir 315); +endchar; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle plus"; + pickup rule_pen; + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + draw (centre + plus_size/2 * left) -- (centre + plus_size/2 * right); + draw (centre + plus_size/2 * up) -- (centre + plus_size/2 * down); +endchar; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle times"; + pickup rule_pen; + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + draw (centre + plus_size/2 * dir 45) -- (centre + plus_size/2 * dir 225); + draw (centre + plus_size/2 * dir 135) -- (centre + plus_size/2 * dir 315); +endchar; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle dot"; + pickup rule_pen; + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + fill circle(centre, 1.3dot_size); +endchar; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle circle"; + pickup rule_pen; + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + draw circle(centre, (plus_size + 11/5rule_thickness)/5); +endchar; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle triangle"; + pickup rule_pen; + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + draw triangle(centre, small_op_size/2, 90); +endchar; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle asterisk"; + pickup rule_pen; + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + + penpos a0(4/3rule_thickness, 0 - 7); + penpos a1(4/3rule_thickness, 72 - 7); + penpos a2(4/3rule_thickness, 144 - 7); + penpos a3(4/3rule_thickness, 216 - 7); + penpos a4(4/3rule_thickness, 288 - 7); + + penpos b0(2/3rule_thickness, 0 - 7); + penpos b1(2/3rule_thickness, 72 - 7); + penpos b2(2/3rule_thickness, 144 - 7); + penpos b3(2/3rule_thickness, 216 - 7); + penpos b4(2/3rule_thickness, 288 - 7); + + reg_poly_points(a)(5, centre, plus_size/2, 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; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "medium circle star"; + pickup rule_pen; + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + + reg_poly_points(a)(5, centre, plus_size/2, 90); + reg_poly_points(b)(5, centre, plus_size/20, 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; + +beginoperator(plus_size# + 11/5rule_thickness#, 1); "negated medium circle"; + pickup rule_pen; + + r := 3/4(plus_size + 11/5rule_thickness); + + draw circle(centre, plus_size/2 + 11/10rule_thickness); + draw (centre + r * dir 45) -- (centre + r * dir 225); +endchar; + +% squares + +beginoperator(small_op_size#/sqrt(2), 1); "small square"; + pickup rule_pen; + draw square(centre, w/2 - side_bearing, 0); +endchar; +beginoperator(small_op_size#/sqrt(2), 1); "small filled square"; + pickup rule_pen; + draw square(centre, w/2 - side_bearing, 0); + fill square(centre, w/2 - side_bearing, 0); +endchar; +beginoperator(med_op_size#/sqrt(2), 1); "medium square"; + pickup rule_pen; + draw square(centre, w/2 - side_bearing, 0); +endchar; +beginoperator(large_op_size#/sqrt(2), 1); "large square"; + pickup rule_pen; + draw square(centre, w/2 - side_bearing, 0); +endchar; + +beginoperator(small_op_size#, 1); "small diamond"; + pickup rule_pen; + draw square(centre, (w/2 - side_bearing) / sqrt(2), 45); +endchar; +beginoperator(small_op_size#, 1); "small filled diamond"; + pickup rule_pen; + draw square(centre, (w/2 - side_bearing) / sqrt(2), 45); + fill square(centre, (w/2 - side_bearing) / sqrt(2), 45); +endchar; +beginoperator(med_op_size#, 1); "medium diamond"; + pickup rule_pen; + draw square(centre, (w/2 - side_bearing) / sqrt(2), 45); +endchar; +beginoperator(large_op_size#, 1); "large diamond"; + pickup rule_pen; + draw square(centre, (w/2 - side_bearing) / sqrt(2), 45); +endchar; + +beginoperator(med_op_size#/sqrt(2), 1); "medium square minus"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r, 0); + draw (centre + sqrt .5 * r * dir 0) -- (centre + sqrt .5 * r * dir 180); +endchar; +beginoperator(med_op_size#/sqrt(2), 1); "medium square vert"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r, 0); + draw (centre + sqrt .5 * r * dir 90) -- (centre + sqrt .5 * r * dir 270); +endchar; +beginoperator(med_op_size#/sqrt(2), 1); "medium square slash"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r, 0); + draw (centre + r * dir 45) -- (centre + r * dir 225); +endchar; +beginoperator(med_op_size#/sqrt(2), 1); "medium square backslash"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r, 0); + draw (centre + r * dir 135) -- (centre + r * dir 315); +endchar; +beginoperator(med_op_size#/sqrt(2), 1); "medium square plus"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r, 0); + draw (centre + sqrt .5 * r * dir 0) -- (centre + sqrt .5 * r * dir 180); + draw (centre + sqrt .5 * r * dir 90) -- (centre + sqrt .5 * r * dir 270); +endchar; +beginoperator(med_op_size#/sqrt(2), 1); "medium square times"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r, 0); + draw (centre + r * dir 45) -- (centre + r * dir 225); + draw (centre + r * dir 135) -- (centre + r * dir 315); +endchar; +beginoperator(med_op_size#/sqrt(2), 1); "medium square dot"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r, 0); + fill circle(centre, 1.3dot_size); +endchar; +beginoperator(med_op_size#/sqrt(2), 1); "medium square square"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r, 0); + draw square(centre, .4r, 0); +endchar; + +beginoperator(med_op_size#, 1); "medium diamond minus"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r / sqrt(2), 45); + draw (centre + r * dir 0) -- (centre + r * dir 180); +endchar; +beginoperator(med_op_size#, 1); "medium diamond vert"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r / sqrt(2), 45); + draw (centre + r * dir 90) -- (centre + r * dir 270); +endchar; +beginoperator(med_op_size#, 1); "medium diamond slash"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r / sqrt(2), 45); + draw (centre + sqrt .5 * r * dir 45) -- (centre + sqrt .5 * r * dir 225); +endchar; +beginoperator(med_op_size#, 1); "medium diamond backslash"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r / sqrt(2), 45); + draw (centre + sqrt .5 * r * dir 135) -- (centre + sqrt .5 * r * dir 315); +endchar; +beginoperator(med_op_size#, 1); "medium diamond plus"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r / sqrt(2), 45); + draw (centre + r * dir 0) -- (centre + r * dir 180); + draw (centre + r * dir 90) -- (centre + r * dir 270); +endchar; +beginoperator(med_op_size#, 1); "medium diamond times"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r / sqrt(2), 45); + draw (centre + sqrt .5 * r * dir 45) -- (centre + sqrt .5 * r * dir 225); + draw (centre + sqrt .5 * r * dir 135) -- (centre + sqrt .5 * r * dir 315); +endchar; +beginoperator(med_op_size#, 1); "medium diamond dot"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r / sqrt(2), 45); + fill circle(centre, 1.3dot_size); +endchar; +beginoperator(med_op_size#, 1); "medium diamond diamond"; + pickup rule_pen; + r := w/2 - side_bearing; + draw square(centre, r / sqrt(2), 45); + draw square(centre, .4r, 45); +endchar; + +beginoperator(small_op_size#, 1); "small star"; + pickup rule_pen; + r := w/2 - side_bearing; + reg_poly_points(a)(5, centre, r, 90); + reg_poly_points(b)(5, centre, .4r, 126); + draw z.a0 -- z.b0 -- z.a1 -- z.b1 -- z.a2 -- z.b2 -- z.a3 -- z.b3 -- z.a4 -- z.b4 -- cycle; +endchar; +beginoperator(small_op_size#, 1); "small filled star"; + pickup rule_pen; + r := w/2 - side_bearing; + reg_poly_points(a)(5, centre, r, 90); + reg_poly_points(b)(5, centre, .4r, 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; +beginoperator(med_op_size#, 1); "medium star"; + pickup rule_pen; + r := w/2 - side_bearing; + reg_poly_points(a)(5, centre, r, 90); + reg_poly_points(b)(5, centre, .4r, 126); + draw z.a0 -- z.b0 -- z.a1 -- z.b1 -- z.a2 -- z.b2 -- z.a3 -- z.b3 -- z.a4 -- z.b4 -- cycle; +endchar; +beginoperator(large_op_size#, 1); "large star"; + pickup rule_pen; + r := w/2 - side_bearing; + reg_poly_points(a)(5, centre, r, 90); + reg_poly_points(b)(5, centre, .4r, 126); + draw z.a0 -- z.b0 -- z.a1 -- z.b1 -- z.a2 -- z.b2 -- z.a3 -- z.b3 -- z.a4 -- z.b4 -- cycle; +endchar; +beginoperator(med_op_size#, 1); "medium pentagram"; + pickup rule_pen; + r := w/2 - side_bearing; + reg_poly_points(a)(5, centre, r, 90); + draw z.a0 -- z.a2 -- z.a4 -- z.a1 -- z.a3 -- cycle; +endchar; +beginoperator(large_op_size#, 1); "large pentagram"; + pickup rule_pen; + r := w/2 - side_bearing; + reg_poly_points(a)(5, centre, r, 90); + draw z.a0 -- z.a2 -- z.a4 -- z.a1 -- z.a3 -- cycle; +endchar; + +beginoperator(small_op_size#, 1); "medium thin filled star"; + pickup pencircle scaled 1/2rule_thickness; + + r := w/2 - side_bearing; + + reg_poly_points(a)(5, centre, r, 90); + reg_poly_points(b)(5, centre, .2r, 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; + +beginoperator(small_op_size#, 1); "asterisk"; + r := w/2 - side_bearing; + + penpos a0(4/3rule_thickness, 0 - 7); + penpos a1(4/3rule_thickness, 72 - 7); + penpos a2(4/3rule_thickness, 144 - 7); + penpos a3(4/3rule_thickness, 216 - 7); + penpos a4(4/3rule_thickness, 288 - 7); + + penpos b0(2/3rule_thickness, 0 - 7); + penpos b1(2/3rule_thickness, 72 - 7); + penpos b2(2/3rule_thickness, 144 - 7); + penpos b3(2/3rule_thickness, 216 - 7); + penpos b4(2/3rule_thickness, 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; + +for alpha = 0, 45, 90, 135: + beginsymbol(2order_width# * abs (cosd (alpha)) + 5/3equal_spread# * abs (sind (alpha)) + 2side_bearing#, + vcentre(2order_width# * abs (sind (alpha)) + 5/3equal_spread# * abs (cosd (alpha)) + rule_thickness#)); + "infinity"; + pickup rule_pen; + + pair centre; + centre := (w/2, (h-d)/2); + + z0 = centre - (order_width - 1/2rule_thickness) * dir alpha; + z1 = centre + (order_width - 1/2rule_thickness) * dir alpha; + + z6 = 1/5[z0,z1]; + z7 = 4/5[z0,z1]; + + z2 = z6 + 5/6equal_spread * dir (alpha + 90); + z3 = z6 - 5/6equal_spread * dir (alpha + 90); + z4 = z7 + 5/6equal_spread * dir (alpha + 90); + z5 = z7 - 5/6equal_spread * dir (alpha + 90); + + draw z4{dir (alpha + 180)} + .. {dir (alpha + 225)}1/2[z0,z1]{dir (alpha + 225)} + .. {dir (alpha + 180)}z3{dir (alpha + 180)} + .. {dir (alpha + 90)}z0{dir (alpha + 90)} + .. {dir (alpha + 0)}z2{dir (alpha + 0)} + .. {dir (alpha + -45)}1/2[z0,z1]{dir (alpha + -45)} + .. {dir (alpha + 0)}z5{dir (alpha + 0)} + .. {dir (alpha + 90)}z1{dir (alpha + 90)} + .. cycle; + labels (0,1,2,3,4,5,6,7); + endchar; +endfor + +for alpha = 0, 90, 180, 270: + beginsymbol(17/10order_width# * abs (cosd (alpha)) + 5/3equal_spread# * abs (sind (alpha)) + 2side_bearing#, + vcentre(17/10order_width# * abs (sind (alpha)) + 5/3equal_spread# * abs (cosd (alpha)) + rule_thickness#)); + "proportional"; + pickup rule_pen; + + pair centre; + centre := (w/2, (h-d)/2); + + z0 = centre - (17/20order_width - 1/2rule_thickness) * dir alpha; + z1 = centre + (15/20order_width - 1/2rule_thickness) * dir alpha; + + z4 = z1 + 5/6equal_spread * dir (alpha + 90); + z5 = z1 - 5/6equal_spread * dir (alpha + 90); + + z6 - z4 = z7 - z5 = 1/10order_width * dir alpha; + + z8 = 1/4[z0,z1]; + + z2 = z8 + 5/6equal_spread * dir (alpha + 90); + z3 = z8 - 5/6equal_spread * dir (alpha + 90); + + draw z6 -- z4{dir (alpha + 180)} + .. {dir (alpha + 225)}5/8[z0,z1]{dir (alpha + 225)} + .. {dir (alpha + 180)}z3{dir (alpha + 180)} + .. {dir (alpha + 90)}z0{dir (alpha + 90)} + .. {dir (alpha + 0)}z2{dir (alpha + 0)} + .. {dir (alpha + -45)}5/8[z0,z1]{dir (alpha + -45)} + .. {dir (alpha + 0)}z5 -- z7; + labels (0,1,2,3,4,5,6,7); + endchar; +endfor; + +for alpha = 0, 45, 90, 135: + beginsymbol(14/10order_width# * abs (cosd (alpha)) + 5/3equal_spread# * abs (sind (alpha)) + 2side_bearing#, + vcentre(14/10order_width# * abs (sind (alpha)) + 5/3equal_spread# * abs (cosd (alpha)) + rule_thickness#)); + "crossing"; + pickup rule_pen; + + pair centre; + centre := (w/2, (h-d)/2); + + z0 = centre - (14/20order_width - 1/2rule_thickness) * dir alpha; + z1 = centre + (14/20order_width - 1/2rule_thickness) * dir alpha; + + z2 = z0 + 5/6equal_spread * dir (alpha + 90); + z3 = z0 - 5/6equal_spread * dir (alpha + 90); + z4 = z1 + 5/6equal_spread * dir (alpha + 90); + z5 = z1 - 5/6equal_spread * dir (alpha + 90); + + z6 - z4 = z7 - z5 = 1/10order_width * dir alpha; + z2 - z8 = z3 - z9 = 1/10order_width * dir alpha; + + draw z6 -- z4{dir (alpha + 180)} + .. {dir (alpha + 225)}1/2[z0,z1]{dir (alpha + 225)} + .. {dir (alpha + 180)}z3 -- z9; + draw z8 -- z2{dir (alpha + 0)} + .. {dir (alpha + -45)}1/2[z0,z1]{dir (alpha + -45)} + .. {dir (alpha + 0)}z5 -- z7; + labels (0,1,2,3,4,5,6,7,8,9); + endchar; +endfor; + +beginoperator(med_op_size#, 1); "between"; + pickup rule_pen; + + r := w/2 - side_bearing; + + draw smile( 1, centre - r * dir 90, centre + r * dir 90, equal_spread, true); + draw smile(-1, centre - r * dir 90, centre + r * dir 90, equal_spread, true); +endchar; + +beginoperator(med_op_size#, 1); "reversed between"; + pickup rule_pen; + + r := w/2 - side_bearing; + + draw smile( 1, centre - 2/3equal_spread * dir 0 - r * dir 90, + centre - 2/3equal_spread * dir 0 + r * dir 90, + 2/3equal_spread, true); + draw smile(-1, centre + 2/3equal_spread * dir 0 - r * dir 90, + centre + 2/3equal_spread * dir 0 + r * dir 90, + 2/3equal_spread, true); +endchar; + +for sign = 1, -1: + beginsymbol(order_width# + 2side_bearing#, 2math_axis# + rule_thickness#, rule_thickness#); "top"; + pickup rule_pen; + + z1 - z0 = z3 - z2 = order_width * dir 0; + z2 - z0 = sign * 2math_axis * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = (w/2, (h-d)/2); + + draw z0 -- z1; + draw 1/2[z0,z1] -- 1/2[z2,z3]; + endchar; +endfor; + +beginsymbol(2/3equal_spread# + 2side_bearing#, vcentre(plus_size#+rule_thickness#)); "wreath"; + pickup rule_pen; + + z0 = (w/2, (h-d)/2); + + draw sim(z0 + 1/2plus_size * dir 90, z0 - 1/2plus_size * dir 90); +endchar; + +beginoperator(med_op_size#, 1); "angle"; + pickup rule_pen; + + z0 = centre - 1/3plus_size * dir 90; + + z1 = z0 + 1/2plus_size * dir 0; + z2 = z0 - 1/2plus_size * dir 0; + x3 = xpart centre + 1/2plus_size; + y3 = ypart centre + 2/3plus_size; + + draw z1 -- z2 -- 5/6[z2,z3]; +endchar; + +beginoperator(med_op_size#, 1); "measured angle"; + pickup rule_pen; + + z0 = centre - 1/3plus_size * dir 90; + + z1 = z0 + 1/2plus_size * dir 0; + z2 = z0 - 1/2plus_size * dir 0; + x3 = xpart centre + 1/2plus_size; + y3 = ypart centre + 2/3plus_size; + + z4 = 2/3 [z2,z1]; + z5 = z2 + (z4 - z2) rotated angle (z3 - z2); + + draw z1 -- z2 -- 5/6[z2,z3]; + draw z4{dir 90} .. {dir (angle (z3 - z2) + 90)}z5; +endchar; + +beginoperator(med_op_size#, 1); "spherical angle"; + pickup rule_pen; + + z0 = centre - 1/2plus_size * dir 0; + + z1 = z0 + plus_size * dir 25; + z2 = z0 + plus_size * dir -25; + z3 = z0 + 2/3plus_size * dir 25; + z4 = z0 + 2/3plus_size * dir -25; + + draw z1 -- z0 -- z2; + draw z4{dir 65} .. {dir 115}z3; +endchar; + +beginsymbol(5.5u#, 4/5asc_height#, 0); "prime"; + pickup penrazor; + + z0 = (w, h); + + z1 = z0 + 7/3u * dir 183; + + z2 = (1u, 1/9h); + z3 = z2 + u * dir -20; + + fill z0 -- z1 -- z2 -- z3 -- cycle; +endchar; + +beginsymbol(5.5u#, 4/5asc_height#, 0); "backprime"; + pickup penrazor; + + z0 = (0, h); + + z1 = z0 + 7/3u * dir -3; + + z2 = (w - 1u, 1/9h); + z3 = z2 + u * dir 200; + + fill z0 -- z1 -- z2 -- z3 -- cycle; +endchar; + +for sign = 1, -1: + beginoperator(plus_size#, 1); "product"; + draw_product(centre, plus_size, plus_size, sign, rule_thickness); + endchar; +endfor; + +beginsymbol(13u# + 2side_bearing#, asc_height#, 0); "check mark"; + pickup pencircle + xscaled 3/2rule_thickness + yscaled 3/4rule_thickness + rotated 30; + + lft x1 = hround(1.5u); + x2 = hround(w/3); + x3 = w - x1; + x4 = w - 3/2x2; + + y1 = math_axis; + y2 = -d; + y3 = y4 = h; + + draw z1 -- z2{z4 - z2} .. z3; + + penlabels(1,2,3,4); +endchar; + +beginsymbol(6u# + 2side_bearing#, 5/4asc_height#, 1/8asc_height#); "lightning"; + + penpos1 (2rule_thickness, -20); + penpos4 (5/6rule_thickness, -20); + + x3r = w - side_bearing; + x2l = side_bearing; + x4 = 1/4w; + + y1l = h; + y3r = 14/24h; + y4 = -d + 1/2rule_thickness; + + z2'l = z2l; + z3'r = z3r; + + z3'l = z2l + whatever * dir 15; + z2'r = z3r + whatever * dir 15; + + z2r - z2l = 3/2rule_thickness * dir 15; + z3r - z3l = 2rule_thickness * dir 15; + z3'l = z3r + rule_thickness * dir (angle (z4r - z3r)); + + z1l - z2l = whatever * (z4r - z3r); + z2'r = whatever[z1l,z2l]; + + fill stroke z1e -- z2e -- z2'e -- z3'e -- z3e -- z4e; + + pickup rule_pen; + + draw arrowhead(z4, angle (z4l - z3l), 4/5arrow_spread); + + penlabels(1,2,2',3',3,4); +endchar; + +beginsymbol(11u#, 1/2[x_height#,asc_height#], 0) + "diamond suit"; + + x0 = x2 = w/2; + 1/2[y0,y2] = h/2; + y2 - y0 = h; + + 1/2[x1,x3] = w/2; + x3 - x1 = w - 2side_bearing; + y1 = y3 = h/2; + + pickup pencircle scaled rule_thickness; + + draw z0{dir (90+30)} .. {dir (180-30)}z1{dir (0+30)} + .. {dir (90-30)}z2{dir (270+30)} + .. {dir (0-30)}z3{dir (180+30)} + .. {dir (270-30)}z0 & cycle; +endchar; + +beginsymbol(11u#, 1/2[x_height#,asc_height#], 0) + "heart suit"; + + x0 = x1 = w/2; + y0 = 0; + + 1/2[x2,x3] = w/2; + x3 - x2 = w - 2side_bearing; + + y1 = y2 = y3; + + x4 = 1/2[x1,x2]; + x5 = 1/2[x1,x3]; + + y4 = y5 = h; + + h - y1 = x4 - x2; + + pickup pencircle scaled rule_thickness; + + draw z0{dir (90+20)} .. z2 .. z4 .. {dir (270+20)}z1{dir (90-20)} .. z5 .. z3 .. {dir (270-20)}z0 & cycle; +endchar; + +beginsymbol(11u#, 1/2[x_height#,asc_height#], 0) + "spade suit"; + + x0 = x1 = w/2; + y0 = h + 1/2rule_thickness; + + 1/2[x2,x3] = w/2; + x3 - x2 = w - 2side_bearing; + + y2 = y3; + + x4 = 1/2[x1,x2]; + x5 = 1/2[x1,x3]; + + y4 = y5 = 1/6h; + + y2 - y4 = x4 - x2; + + y1 = 1/3[y2,y4]; + + x6 = x0; + y6 = 0; + penpos1(1/2rule_thickness, 0); + penpos6(3/2rule_thickness, 0); + + pickup pencircle scaled rule_thickness; + + fill z0{dir (270-20)} .. z2 .. z4 .. {dir (90-20)}(z1 + 1/2rule_thickness*left) + -- (z1 + 1/2rule_thickness*right){dir (270+20)} .. z5 .. z3 .. {dir (90+20)}z0 -- cycle; + + fill stroke z1e -- z6e; + + labels (0,1,2,3,4,5,6); +endchar; + +beginsymbol(11u#, 1/2[x_height#,asc_height#], 0) + "club suit"; + + radius := 5/11(w - 4side_bearing); + + x0 = w/2; + y0 = h - 2.5radius; + + x1 = w - x3 = 3/5x0; + y1 = y3 = y0; + x2 = x4 = x0; + y2 = h - radius; + y4 = 0; + + penpos0(2/3rule_thickness, 0); + penpos1(2/3rule_thickness, 90); + penpos2(2/3rule_thickness, 0); + penpos3(2/3rule_thickness, 90); + penpos4(3/2rule_thickness, 0); + + fill circle(z1, radius); + fill circle(z2, radius); + fill circle(z3, radius); + + fill stroke z2e -- z0e{down} .. z4e; + fill stroke z1e -- z3e; + + labels (0,1,2,3,4); +endchar; + +beginsymbol(5/4order_width# + 2side_bearing#, asc_height#, 0); + "forall"; + pickup rule_pen; + + lft x0 = side_bearing; + rt x1 = w - side_bearing; + x2 = w/2; + + top y0 = top y1 = h; + bot y2 = 0; + + z4 = whatever [z0,z2]; + z5 = whatever [z1,z2]; + + y4 = y5 = x_height; + + draw z0 -- z2 -- z1; + + pickup pencircle scaled 8/9rule_thickness; + + draw z4 -- z5; +endchar; + +for negated = 0, 1: + beginsymbol(order_width# + 2side_bearing#, + if negated = 0: asc_height# else: asc_height# + 2/3equal_spread# fi, + if negated = 0: 0 else: 2/3equal_spread# fi); + "exists"; + + pickup rule_pen; + + lft x0 = lft x2 = side_bearing; + rt x1 = rt x3 = w - side_bearing; + + top y0 = top y1 = asc_height; + bot y2 = bot y3 = 0; + + z4 = 1/8[1/2[z0,z2], 1/2[z1,z3]]; + + draw z0 -- z1 -- z3 -- z2; + draw z4 -- 1/2[z1,z3]; + + if negated = 1: + stroke_through(1/2[1/2[z0,z2], 1/2[z1,z3]], h + d - stroke_through_thickness) + fi; + endchar; +endfor; + +beginsymbol(3/2order_width# + 2side_bearing#, vcentre(med_op_size#)); "nabla"; + pickup pencircle scaled 2/3rule_thickness; + + top y0 = top y1 = h; + bot y2 = -d; + + x0 = side_bearing; + x1 = w - side_bearing; + x2 = w/2; + + y3 = y4 = y0 - 2/3rule_thickness; + + z3 = whatever[z0,z2]; + z4 = whatever[z1,z2]; + z5 = whatever[z0,z1]; + z6 = whatever[z1,z2]; + + x5 - x0 = -2/3rule_thickness / sind (angle (z2 - z0)); + + z6 = z5 + whatever * (z2 - z0); + + draw z0 -- z1 -- z2 -- cycle; + filldraw z0 -- z3 -- z4 -- z1 -- cycle; + filldraw z0 -- z5 -- z6 -- z2 -- cycle; +endchar; + +beginsymbol(2order_width# + 2side_bearing#, x_height#, 0); "infinity"; + pickup rule_pen; + + lft x0 = side_bearing; + rt x1 = w - side_bearing; + + top y2 = top y4 = h; + bot y3 = bot y5 = d + rule_thickness; + + y0 = y1 = 1/2[y2,y3]; + + x2 = x3 = 1/5[x0,x1]; + x4 = x5 = 4/5[x0,x1]; + + penpos0 (rule_thickness, 180); + penpos1 (rule_thickness, 180); + penpos2 (3/2rule_thickness * cosd 30, 75); + penpos5 (3/2rule_thickness * cosd 30, 75); + penpos6 (3/2rule_thickness, 45); + penpos7 (3/2rule_thickness, 45); + penpos8 (3/2rule_thickness, 45); + penpos9 (6/5rule_thickness, 135); + penpos10(6/6rule_thickness, 135); + + z6 = 1/2[z0,z1]; + + z7 = point 1/3 of (z2{right} .. {dir -45}z6); + z8 = point 2/3 of (z6{dir -45} .. {right}z5); + z9 = point 7/12 of (z0{up} .. {right}z2); + z10 = point 5/12 of (z5{right} .. {up}z1); + + fill stroke z0e{up} .. {dir 45}z9e .. z2e{right} .. z7e + .. {dir -45}z6e .. z8e .. {right}z5e .. {dir 45}z10e .. {up}z1e; + + draw z1{dir 90} .. z4{dir 180} .. {dir 225}z6{dir 225} .. {dir 180}z3{dir 180} + .. {dir 90}z0; + penlabels(0,1,2,3,4,5,6,7,8,9,10); +endchar; + +beginsymbol(1/2order_width# + 2side_bearing#, + asc_height# + 2/3rule_thickness#, + 2/3rule_thickness#); + "small integral"; + + pair centre; + centre := (w/2, (h - d)/2); + + draw_integral([0])(1/2, centre); +endchar; + +beginsymbol(order_width#, asc_height#, 0) + "flat"; + + x0 = x1 = x4 = side_bearing + rule_thickness; + y0 = 0; y1 = h; + x3 = w - side_bearing; + + y3 = 0.45[y0,y1]; + + y4 = 4/5x_height; + + penpos0(rule_thickness, 10); + penpos1(rule_thickness, 10); + penpos3(rule_thickness, 0); + + fill stroke z0e -- z1e; + + pickup pencircle scaled rule_thickness; + + draw z0{dir 40} .. {up}z3 .. {dir 230}z4; + + penlabels (0,1,3,4); + endchar; + +beginsymbol(order_width#, asc_height#, 0) + "natural"; + + x0 = x1 = w - x2 = w - x3 = side_bearing + 1/2rule_thickness; + x4 = x5 = w - x6 = w - x7 = side_bearing; + + y1 = y3 = h; + y7 = x_height; + y6l = 0; + y0 = y2 = -h/3; + + z6 = z4 + whatever * dir 15; + z5 = z7 + whatever * dir 15; + + z8 = whatever[z0,z1] = whatever[z4,z6]; + z9 = whatever[z2,z3] = whatever[z5,z7]; + + x10 = x0l; + x11 = x0l; + x12 = x2r; + x13 = x2r; + + z10 = whatever[z4,z6]; + z11 = whatever[z5,z7]; + z12 = whatever[z4,z6]; + z13 = whatever[z5,z7]; + + penpos0(rule_thickness, 10); + penpos1(rule_thickness, 10); + penpos2(rule_thickness, 10); + penpos3(rule_thickness, 10); + penpos4(5/4rule_thickness, 90); + penpos5(5/4rule_thickness, 90); + penpos6(5/4rule_thickness, 90); + penpos7(5/4rule_thickness, 90); + penpos8 (rule_thickness, 10); + penpos9 (rule_thickness, 10); + penpos10(5/4rule_thickness, 90); + penpos11(5/4rule_thickness, 90); + penpos12(5/4rule_thickness, 90); + penpos13(5/4rule_thickness, 90); + + fill stroke z1e -- z8e; + fill stroke z9e -- z2e; + fill stroke z10e -- z12e; + fill stroke z11e -- z13e; + + penlabels (0,1,2,3,4,5,6,7); + endchar; + +beginsymbol(order_width#, asc_height#, 0) + "sharp"; + + x0 = x1 = w - x2 = w - x3 = side_bearing + rule_thickness; + + x4 = x5 = w - x6 = w - x7 = side_bearing; + + y3 = h; + y7 = x_height; + y6l = 0; + y0 = -h/3; + + z2 = z0 + whatever * dir 20; + z1 = z3 + whatever * dir 20; + z6 = z4 + whatever * dir 15; + z5 = z7 + whatever * dir 15; + + penpos0(rule_thickness, 10); + penpos1(rule_thickness, 10); + penpos2(rule_thickness, 10); + penpos3(rule_thickness, 10); + penpos4(5/4rule_thickness, 90); + penpos5(5/4rule_thickness, 90); + penpos6(5/4rule_thickness, 90); + penpos7(5/4rule_thickness, 90); + + fill stroke z0e -- z1e; + fill stroke z2e -- z3e; + fill stroke z4e -- z6e; + fill stroke z5e -- z7e; + + penlabels (0,1,2,3,4,5,6,7); +endchar; + +beginsymbol(11u#, 0.85asc_height#, 0); "aleph"; + + pickup pencircle scaled 2/3rule_thickness; + + penpos 1(0, 65); + penpos 2(rule_thickness, 65); + penpos 3(rule_thickness, 65); + penpos 4(0, 65); + penpos 5(rule_thickness, 65); + penpos 6(rule_thickness, 65); + penpos 7(rule_thickness, 65); + penpos 8(rule_thickness, 65); + penpos 9(rule_thickness, 65); + penpos10(rule_thickness, 65); + penpos11(rule_thickness, 65); + penpos12(rule_thickness, 65); + penpos13(rule_thickness, 65); + + x1l = side_bearing; + x4r = w - side_bearing; + y1r = h; + y4l = 0; + + x2 - x1 = x4 - x3 = ceiling (u/2); + y1 - y2 = y3 - y4 = 2rule_thickness; + 1/2[z2,z3] = (w/2,h/2); + + z5 = 0.24[z2,z3]; + z6 = 0.60[z2,z3]; + + x7 = x8 = x2; + x9 = x5; + y7 = min (y6, y5 - 3/2rule_thickness); + bot y8l = bot y9l = 0; + + x10 = x11 = 0.85[x2,x3]; + y10 = max (y5, y6 + 3/2rule_thickness); + + x12 = x3 + 2/3rule_thickness; + x13 = 1/4[x6,x10]; + + top y13r = h; + z12 = z13 + whatever * (z3-z2); + z11 = z13 + whatever * (z3-z2); + + y11r := y11; % prevent the stroke from sticking out at the other side + + filldraw stroke z1e{down} ... {z3e-z2e}z2e -- z3e{z3e-z2e} ... {down}z4e; + filldraw stroke z12e -- z13e; + + alpha := angle (z5 - z7); + beta := (alpha + 90)/2; + penpos5'(3/2rule_thickness * abs cosd (155 - alpha), alpha - 90); + penpos7'(3/2rule_thickness * abs cosd (155 - beta), beta - 90); + z5' = z5; + z7' = z7; + + % We don't need a filldraw since the stroke is that thin. + % A filldraw might cause "Strange path" errors in low resolutions. + + draw stroke z5'e{-dir alpha} .. {-dir beta}z7'e -- z8e; + filldraw stroke z8e -- z9e; + + alpha := angle (z10 - z6); + beta := (alpha + 90)/2; + penpos 6'(3/2rule_thickness * abs cosd (155 - alpha), alpha - 90); + penpos10'(3/2rule_thickness * abs cosd (155 - beta), beta - 90); + z6' = z6; + z10' = z10; + + draw stroke z6'e{dir alpha} .. {dir beta}z10'e -- z11e; + + penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,5',7'); +endchar; + +beginsymbol(11u#, 0.85asc_height#, 0); "beth"; + + pickup pencircle scaled 2/3rule_thickness; + + penpos1(0, 65); + penpos2(rule_thickness, 65); + penpos3(rule_thickness, 65); + penpos4(rule_thickness, 65); + penpos5(rule_thickness, 65); + penpos6(rule_thickness, 65); + penpos7(rule_thickness, 65); + + x1l = side_bearing + rule_thickness; + y1r = h; + x2 - x1 = ceiling (u/2); + y1 - y2 = 3/2rule_thickness; + y3 = y2; + + x3 = w - x2; + bot y5l = 0; + + x4r = w - side_bearing; + y3l - y4 = y1 - y2r; + + x5 = x4; + + x6 = w - x7l = side_bearing; + y6 = y7 = y5; + + filldraw stroke z1e{down} ... {z3e-z2e}z2e -- z3e{z3e-z2e} ... {down}z4e -- z5e; + filldraw stroke z6e -- z7e; + + penlabels(1,2,3,4,5,6,7); +endchar; + +beginsymbol(7u#, 0.85asc_height#, 0); "gimel"; + + pickup pencircle scaled 2/3rule_thickness; + + penpos1(0, 65); + penpos2(rule_thickness, 65); + penpos3(rule_thickness, 65); + penpos4(rule_thickness, 65); + penpos5(rule_thickness, 65); + penpos6(rule_thickness, 65); + penpos7(rule_thickness, 65); + penpos8(rule_thickness, 65); + + x1l = side_bearing + rule_thickness; + y1r = h; + x2 - x1 = ceiling (u/2); + y1 - y2 = 3/2rule_thickness; + + z3 = z2 + whatever * dir -25; + + x3 = w - x2; + + x4r = w - side_bearing - 1/3rule_thickness; + y3l - y4 = y1 - y2r; + + x5 = x4; + x6 = w - side_bearing; + + y5l = y8r; + bot y6l = 0; + + x7 = side_bearing; + rt x8r = lft x5l; + y7 = y8 = y6; + + filldraw stroke z1e{down} ... {z3e-z2e}z2e -- z3e{z3e-z2e} ... {down}z4e -- z5e .. z6e; + filldraw stroke z7e -- z8e; + + penlabels(1,2,3,4,5,6,7,8); +endchar; + +beginsymbol(11u#, 0.85asc_height#, 0); "daleth"; + + pickup pencircle scaled 2/3rule_thickness; + + penpos1(0, 65); + penpos2(rule_thickness, 65); + penpos3(rule_thickness, 65); + penpos4(1/2rule_thickness, 65); + penpos5(rule_thickness, 65); + + x1l = side_bearing; + y1r = h; + x2 - x1 = ceiling (u/2); + y1 - y2 = 3/2rule_thickness; + y2 = y3 = y4; + + x3 = w - side_bearing; + x4 = x3 - 3/2rule_thickness; + y5 = 0; + x5l = x4l; + + + filldraw stroke z1e{down} ... {z3e-z2e}z2e -- z3e{z3e-z2e}; + filldraw stroke z4e{down} ... z5e; + + penlabels(1,2,3,4,5); +endchar; + + +begingroup; + +save slant; +save currenttransform; + +slant := 0.212557; + +transform currenttransform; + +currenttransform := identity slanted slant yscaled aspect_ratio scaled granularity shifted (-u,0); + +beginsymbol(11u#, x_height#, 8/25asc_height#); + "Weierstrass p"; + + pickup pencircle scaled 1/2rule_thickness; + + numeric theta; + theta = 90-angle(8u,h); + slope := -h/8u; % angle at middle + superness := 1/sqrt 2; + superpull := 1/6; + + penpos2(1/2rule_thickness, -90); + penpos1(5/6rule_thickness,theta); + penpos7(1/2rule_thickness, -90); + + x2 + .5u = x1 = x7 - .5u = 3u; + top y2l = h; + bot y7r = -d; + y1 = .4[-d, h]; + + lft x3l = hround .5u; + rt x6r = hround max(rt x7 + .5, .5w - .25u); + + x3r - x3l = x6r - x6l = (hround 3/4rule_thickness) - 1/10rule_thickness; + + ellipse_set(2l,3l,4l,1l); + ellipse_set(2r,3r,4r,1r); + ellipse_set(7l,6l,5l,1l); + ellipse_set(7r,6r,5r,1r); + + y3 = y3r; + y6 = y6r; + + filldraw stroke super_arc.e(2,3) & z3e{down} .. z4e --- z5e .. z6e{down} & super_arc.e(6,7); % flourish + + penpos8(1/2rule_thickness, 180); + penpos9(1/2rule_thickness, 90); + penpos10(rule_thickness, 0); + penpos11(1/2rule_thickness, -90); + penpos12(1/2rule_thickness, -180); + penpos13(5/7rule_thickness, -180); + + rt x10r = hround(w - 1.5u + 1/2rule_thickness); + lft x12r = hround(.5w - .5u); + rt x8l = hround 2.25u; + x9 = x11 = max(x12l + eps, .5w + 1.5u); + y8 = 0; + top y9r = vround .95h; + y10 = .5[y9,y11]; + bot y11r = y8; + + filldraw stroke z7e{left} ... z8e{up} ... pulled_arc.e(9,10) & pulled_arc.e(10,11); % stem and bowl + + y13 - 5/7rule_thickness = .15h; + bulb(11,12,13); % bulb + + penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); +endchar; + +beginsymbol(11u#, 11/10asc_height#, 1/10asc_height#); + "powerset"; + + pickup pencircle scaled 1/2rule_thickness; + + numeric theta; + theta = 90 - angle(12/7*8u, h); + slope := -h/(12/7*8u); % angle at middle + superness := 1/sqrt 2; + superpull := 1/6; + + penpos2(1/2rule_thickness, -90); + penpos1(rule_thickness,theta); + penpos7(1/2rule_thickness, -90); + + x2 + .5u = x1 = x7 - .5u = 3u; + top y2l = h; + bot y7r = -d; + y1 = .4h; + + lft x3l = hround .5u; + rt x6r = hround max(rt x7 + .5, .5w - .25u); + + x3r - x3l = x6r - x6l = (hround 3/4rule_thickness) - 1/10rule_thickness; + + ellipse_set(2l,3l,4l,1l); + ellipse_set(2r,3r,4r,1r); + ellipse_set(7l,6l,5l,1l); + ellipse_set(7r,6r,5r,1r); + + y3 = y3r; + y6 = y6r; + + filldraw stroke super_arc.e(2,3) & z3e{down} .. z4e --- z5e .. z6e{down} & super_arc.e(6,7); % flourish + + penpos8(1/2rule_thickness, 180); + penpos9(1/2rule_thickness, 90); + penpos10(rule_thickness, 0); + penpos11(1/2rule_thickness, -90); + penpos12(1/2rule_thickness, -180); + penpos13(5/7rule_thickness, -180); + + rt x10r = hround(w - 1.5u + 1/2rule_thickness); + lft x12r = hround(.5w - .5u); + rt x8l = hround 2.25u; + x9 = x11 = max(x12l + eps, .5w + 1.5u); + y8 = 10/11*5/12h; + top y9r = vround .95h; + y10 = .5[y9,y11]; + bot y11r = y8; + + filldraw stroke z7e{left} ... z8e{up} ... pulled_arc.e(9,10) & pulled_arc.e(10,11); % stem and bowl + + y13 - 5/7rule_thickness = y8 + 1/10h; + bulb(11,12,13); % bulb + + penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); +endchar; + +endgroup; + +% Warning: The other two orientations are above. +% They should stay consistent. + +beginoperator(plus_size#, 1); "upside down logical not"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre + r * dir 180) -- (centre + r * dir 0) + -- (centre + r * dir 0 + equal_spread * dir 90); +endchar; + +beginoperator(plus_size#, 1); "upside down reversed logical not"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre + r * dir 180 + equal_spread * dir 90) + -- (centre + r * dir 180) -- (centre + r * dir 0) +endchar; + +for sign = 1, -1: + beginoperator(plus_size#, 1); "half square union"; + pickup rule_pen; + + z3 - z0 = z2 - z1 = plus_size * dir 0; + z0 - z1 = sign * plus_size * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + draw z0 -- z1 -- z2; + endchar; + + beginoperator(plus_size#, 1); "half square union"; + pickup rule_pen; + + z3 - z0 = z2 - z1 = plus_size * dir 0; + z0 - z1 = sign * plus_size * dir 90; + + 1/2[1/2[z0,z1], 1/2[z2,z3]] = centre; + + draw z1 -- z2 -- z3; + endchar; +endfor; + +for alpha = 0, 90, 180, 270: + beginoperator(plus_size#, 1); "closed curly wedge"; + pickup rule_pen; + + z0 = centre + 1/2plus_size * dir alpha; + z1 = centre - 1/2plus_size * dir alpha; + z2 = z1 + 1/2plus_size * dir (alpha + 90); + z3 = z1 - 1/2plus_size * dir (alpha + 90); + + draw z2{dir (alpha - 40)} + .. {dir alpha}z0{dir (alpha + 180)} + .. {dir (alpha - 140)}z3{dir (alpha + 40)} + .. {dir (alpha + 140)}z2 & cycle; + + endchar; +endfor; + +for alpha = 0, 90, 180, 270: + beginoperator(6/5plus_size#, 1); "slice"; + pickup rule_pen; + + z1 - 1/2[z0,z2] = plus_size * dir alpha; + + z2 - z0 = plus_size * dir (alpha + 90); + + 7/12[z1,1/2[z0,z2]] = centre; + + draw z1 -- z0{dir (alpha + 120)} .. {dir (alpha + 60)}z2 -- cycle; + endchar; +endfor; + +beginoperator(5/6small_op_size#, 8/5); "small lozenge"; + pickup rule_pen; + + lft x0 = w - rt x2 = side_bearing; + y0 = y2 = ypart centre; + + x1 = x3 = xpart centre; + top y1 = h; + bot y3 = -d; + + draw z0 -- z1 -- z2 -- z3 -- cycle; +endchar; + +beginoperator(5/6small_op_size#, 8/5); "small filled lozenge"; + pickup rule_pen; + + lft x0 = w - rt x2 = side_bearing; + y0 = y2 = ypart centre; + + x1 = x3 = xpart centre; + top y1 = h; + bot y3 = -d; + + draw z0 -- z1 -- z2 -- z3 -- cycle; + fill z0 -- z1 -- z2 -- z3 -- cycle; +endchar; + +beginoperator(1/sqrt(2)*med_op_size#, 8/5); "medium lozenge"; + pickup rule_pen; + + lft x0 = w - rt x2 = side_bearing; + y0 = y2 = ypart centre; + + x1 = x3 = xpart centre; + top y1 = h; + bot y3 = -d; + + draw z0 -- z1 -- z2 -- z3 -- cycle; +endchar; + +beginoperator(1/sqrt(2)*med_op_size#, 8/5); "medium filled lozenge"; + pickup rule_pen; + + lft x0 = w - rt x2 = side_bearing; + y0 = y2 = ypart centre; + + x1 = x3 = xpart centre; + top y1 = h; + bot y3 = -d; + + draw z0 -- z1 -- z2 -- z3 -- cycle; + fill z0 -- z1 -- z2 -- z3 -- cycle; +endchar; + +beginoperator(1/sqrt(2)*large_op_size#, 8/5); "large lozenge"; + pickup rule_pen; + + lft x0 = w - rt x2 = side_bearing; + y0 = y2 = ypart centre; + + x1 = x3 = xpart centre; + top y1 = h; + bot y3 = -d; + + draw z0 -- z1 -- z2 -- z3 -- cycle; +endchar; + +for alpha = 0, 90, 180, 270: + beginoperator(med_op_size#, 1); "medium filled triangle (" & decimal alpha & ")"; + pickup rule_pen; + draw triangle(centre, w/2-side_bearing, alpha); + fill triangle(centre, w/2-side_bearing, alpha); + endchar; +endfor; + +beginoperator(med_op_size#/sqrt(2), 1); "medium filled square"; + pickup rule_pen; + draw square(centre, w/2 - side_bearing, 0); + fill square(centre, w/2 - side_bearing, 0); +endchar; + + +beginoperator(large_op_size#, 1); "large filled star"; + pickup rule_pen; + r := w/2 - side_bearing; + reg_poly_points(a)(5, centre, r, 90); + reg_poly_points(b)(5, centre, .4r, 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; + +beginoperator(med_op_size#, 1); "medium star of david"; + pickup pencircle scaled 4/5rule_thickness; + r := w/2 - side_bearing; + reg_poly_points(a)(6, centre, r, 90); + draw z.a0 -- z.a2 -- z.a4 -- cycle; + draw z.a1 -- z.a3 -- z.a5 -- cycle; +endchar; + +beginoperator(large_op_size#, 1); "large star of david"; + pickup rule_pen; + r := w/2 - side_bearing; + reg_poly_points(a)(6, centre, r, 90); + draw z.a0 -- z.a2 -- z.a4 -- cycle; + draw z.a1 -- z.a3 -- z.a5 -- cycle; +endchar; + +beginoperator(med_op_size#, 1); "maltese"; + pickup rule_pen; + + 1/2[z0,z1] = centre + 1/2med_op_size * dir 180; + 1/2[z2,z3] = centre + 1/2med_op_size * dir 270; + 1/2[z4,z5] = centre + 1/2med_op_size * dir 0; + 1/2[z6,z7] = centre + 1/2med_op_size * dir 90; + + z0 - z1 = z5 - z4 = 1/2med_op_size * up; + z3 - z2 = z6 - z7 = 1/2med_op_size * right; + + filldraw z1{dir 45} + .. {right}centre{down} + .. {dir 225}z2 -- z3{dir 135} + .. {up}centre{right} + .. {dir -45}z4 -- z5{dir 225} + .. {left}centre{up} + .. {dir 45}z6 -- z7{dir -45} + .. {down}centre{left} + .. z0{dir 135} -- cycle; +endchar; + + +current_char := 219; + +% Keep these consistent with the glyphs in Sym-Order.mf! + +for negated = 0, 1: + + vardef ifneg(text values) = + select(negated)(values) + enddef; + + beginorder(1, order_width# + rule_thickness#, ifneg(2,4) * equal_spread# + rule_thickness#); + "closedequal"; + pickup rule_pen; + + z2 - z1 = z1 - z0 = equal_spread * dir 90; + z5 - z4 = z4 - z3 = equal_spread * dir 90; + + 1/2[z0, z2] = left_point; + 1/2[z3, z5] = right_point; + + draw z0 -- z3; + draw z1 -- z4 -- z5 -- z2 -- cycle; + + if negated = 1: + stroke_through(centre, 4equal_spread); + fi; + endchar; + + beginorder(1, order_width# + rule_thickness#, ifneg(2,4) * equal_spread# + rule_thickness#); + "equalclosed"; + pickup rule_pen; + + z2 - z1 = z1 - z0 = equal_spread * dir 90; + z5 - z4 = z4 - z3 = equal_spread * dir 90; + + 1/2[z0, z2] = left_point; + 1/2[z3, z5] = right_point; + + draw z0 -- z3 -- z4 -- z1 -- cycle; + draw z2 -- z5; + + if negated = 1: + stroke_through(centre, 4equal_spread); + fi; + endchar; + + beginorder(1, order_width# + rule_thickness#, ifneg(2,4) * equal_spread# + rule_thickness#); + "equivclosed"; + pickup rule_pen; + + z2 - z1 = z1 - z0 = equal_spread * dir 90; + z5 - z4 = z4 - z3 = equal_spread * dir 90; + + 1/2[z0, z2] = left_point; + 1/2[z3, z5] = right_point; + + draw z0 -- z3 -- z5 -- z2 -- cycle; + draw (z1 + 1/4rule_thickness * right) -- (z4 + 1/4rule_thickness * left); + + if negated = 1: + stroke_through(centre, 4equal_spread); + fi; + endchar; + + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + greater_spread# + ifneg(4/3, 8/3) * equal_spread# + rule_thickness#); + "less sim"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + y2 = 1/2[y0, y1]; + x0 = xpart right_point; + x2 = xpart left_point; + y3 = y4 = y0 - equal_spread; + x4 - x3 = sign * (x0 - x2); + 1/2[x3,x4] = xpart centre; + + 1/2[y1, y4 - 1/3equal_spread] = ypart centre; + + draw z0 -- z2 -- z1; + draw sim(z3, z4); + + if negated = 1: + stroke_through(centre, 8/3equal_spread + greater_spread); + fi; + endchar; + endfor; + + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + greater_spread# + ifneg(7/3, 9/3) * equal_spread# + rule_thickness#); + "less approx"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + y2 = 1/2[y0, y1]; + x0 = xpart right_point; + x2 = xpart left_point; + y3 = y4 = y0 - equal_spread; + y5 = y6 = y4 - equal_spread; + x4 - x3 = sign * (x0 - x2); + 1/2[x3,x4] = xpart centre; + x6 = x4; + x5 = x3; + + 1/2[y1, y6 - 1/3equal_spread] = ypart centre; + + draw z0 -- z2 -- z1; + draw sim(z3, z4); + draw sim(z5, z6); + + if negated = 1: + stroke_through(centre, 9/3equal_spread + greater_spread); + fi; + endchar; + endfor; + + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + greater_spread# + ifneg(1,3) * equal_spread# + rule_thickness#); + "slanted equal or less than"; + + pickup rule_pen; + + z0 - z1 = greater_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + z4 - z0 = equal_spread * dir 90; + + 1/2[z2, z3] = left_point; + 1/2[z1, z4] = right_point; + + draw z0 -- z2 -- z1; + draw z3 -- z4; + + if negated = 1: + stroke_through(centre, 3equal_spread + greater_spread); + fi; + endchar; + endfor; + + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(1,3) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#); + "curly equal or curly less than"; + + pickup rule_pen; + + t := 2/3[equal_spread, greater_spread]; + + z0 - z1 = equal_spread * dir 90; + z2 - z4 = 7/5equal_spread * dir 90; + z4 - z3 = t/2 * dir 90; + y1 = y3; + y4 = ypart centre + 1/2(t - equal_spread); + x0 = xpart left_point; + x2 = xpart right_point; + + path p; + + p = z0{z3 - z1} .. z2; + + v := xpart (p intersectiontimes (z4 -- (z4 + h * dir (90 + sign * 20)))); + + draw prec(z1, z3, t); + draw subpath (0,v) of p; + + if negated = 1: + stroke_through(centre, 3equal_spread + 2/3[equal_spread, greater_spread]); + fi; + + labels(0,1,2,3,4); + endchar; + endfor; + + for alpha = 0, 180: + beginarrow(alpha, 6/5, ifneg(14/10, 21/10) * arrow_spread#); "triple arrow (" & decimal alpha & ")"; + + z1 - z0 = z2 - z1 = z4 - z3 = z5 - z4 = 2/3equal_spread * dir (arrow_dir + 90); + + z1 = foot; + z4 = head; + + pickup pencircle scaled 4/5rule_thickness; + + draw z0 -- arrowhead_intersection(head, arrow_dir, 14/10arrow_spread, z0 -- z3); + draw z1 -- arrowhead_intersection(head, arrow_dir, 14/10arrow_spread, z1 -- z4); + draw z2 -- arrowhead_intersection(head, arrow_dir, 14/10arrow_spread, z2 -- z5); + + pickup rule_pen; + + draw arrowhead(head, arrow_dir, 14/10arrow_spread); + + if negated = 1: + stroke_through_arrow(1/2[foot, head - arrow_spread * dir arrow_dir], alpha, 21/10arrow_spread) + (70, 70, 110, 110, 70, 70, 110, 110); + fi + endchar; + endfor; + +endfor; + +for sign = -1, 1: + beginsymbol(4/3arrow_spread# + 2side_bearing#, vcentre(2arrow_spread# + rule_thickness#)); + "left shift"; + + pickup rule_pen; + + top y0 = top y1 = h - 1/2arrow_spread; + bot y2 = -d; + + 1/2[x0,x1] = w/2; + x1 - x0 = sign * 4/3arrow_spread; + + x2 = x1; + + draw z0 -- z1 -- z2; + + draw arrowhead(z0, 90 + sign * 90, arrow_spread); + endchar; +endfor; + +for sign = -1, 1: + beginoperator(arrow_len#, 1); + "loop arrow"; + + pickup rule_pen; + + z0 = centre + sign * arrow_len/2 * left; + z1 = centre + arrow_len/2 * down; + z2 = centre + arrow_len/4 * up; + z3 = centre + sign * arrow_len/4 * right; + z4 = centre + arrow_len * (1/4sign, 1/2); + z5 = centre + arrow_len * (1/2sign, 1/4); + + draw z0 -- z3{sign * right} .. {up}z5 .. {sign * left}z4 .. {down}z2 -- z1; + + draw arrowhead(z0, 90 + sign * 90, arrow_spread); + endchar; +endfor; + +for sign = -1, 1: + beginoperator(plus_size#, 1); "three times"; + pickup rule_pen; + + r := plus_size/2; + r := r * 1/3[1, sqrt 2]; + + z0 = centre + r * dir (sign * 45); + z1 = centre + r * dir (sign * 225); + z2 = centre + r * dir (270 + sign * 45); + z3 = centre + 1/4rule_thickness * dir (270 + sign * 45); + + draw z0 -- z1; + draw z3 -- z2; + endchar; +endfor; + +beginarrow(0, 5/6, 7/4arrow_spread#); + "Vvdash"; + + pickup rule_pen; + + z0 = foot + 4/5equal_spread * dir arrow_dir; + z1 = foot + 8/5equal_spread * dir arrow_dir; + + draw z1 + 1/4rule_thickness * dir arrow_dir -- head; + draw (foot - 7/8arrow_spread * dir (arrow_dir + 90)) -- + (foot + 7/8arrow_spread * dir (arrow_dir + 90)); + draw (z0 - 7/8arrow_spread * dir (arrow_dir + 90)) -- + (z0 + 7/8arrow_spread * dir (arrow_dir + 90)); + draw (z1 - 7/8arrow_spread * dir (arrow_dir + 90)) -- + (z1 + 7/8arrow_spread * dir (arrow_dir + 90)); + +endchar; + +beginoperator(plus_size#, 1); "negated medium bar"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + draw (centre + r * dir 90) -- (centre + r * dir 270); + + stroke_through_arrow(centre, 90, 2/3plus_size, 45); +endchar; + +beginoperator(plus_size#, 1); "double bar"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + z1 - z0 = equal_spread * right; + 1/2[z0,z1] = centre; + + draw (z0 + r * up) -- (z0 + r * down); + draw (z1 + r * up) -- (z1 + r * down); +endchar; + +beginoperator(plus_size#, 1); "negated double bar"; + pickup rule_pen; + + r := plus_size/2; % - 11/10rule_thickness; + + z1 - z0 = equal_spread * right; + 1/2[z0,z1] = centre; + + draw (z0 + r * up) -- (z0 + r * down); + draw (z1 + r * up) -- (z1 + r * down); + + stroke_through_arrow(centre, 90, plus_size, 40); +endchar; + diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Init.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Init.mf new file mode 100644 index 00000000000..00a335a14c5 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Init.mf @@ -0,0 +1,29 @@ + +def select(expr n)(text values) = + begingroup; + i := 0; + for v = values: + result := v; + exitif i = n; + i := i + 1; + endfor; + result + endgroup +enddef; + +def interpolate(expr x)(text values) = + begingroup; + if design_size <= 5: + x * select(0)(values) * design_size/5 + elseif design_size >= 12: + x * select(6)(values) * design_size/12 + elseif design_size >= 10: + x * ((design_size - 10)/2)[select(5)(values), select(6)(values)] + else: + n := floor design_size; + + x * (design_size - n)[select(n-5)(values), select(n-4)(values)] + fi + endgroup +enddef; + diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Operators.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Operators.mf new file mode 100644 index 00000000000..bb93d8291de --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/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; + diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Order.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Order.mf new file mode 100644 index 00000000000..bc4cd2c8b9d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Order.mf @@ -0,0 +1,1417 @@ + +% There are some additional order glyphs in Sym-Geometric. Keep them consistent! + +vardef ifneg(text values) = + select(negated)(values) +enddef; + +% equal signs + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, ifneg(1,3) * equal_spread# + rule_thickness#); "equal"; + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + draw z0 -- z2; + draw z1 -- z3; + + if negated = 1: + stroke_through(centre, 3equal_spread); + fi; + endchar; +fi; + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, ifneg(2,4) * equal_spread# + rule_thickness#); "equiv"; + pickup rule_pen; + + z2 - z1 = z1 - z0 = equal_spread * dir 90; + z5 - z4 = z4 - z3 = equal_spread * dir 90; + + 1/2[z0, z2] = left_point; + 1/2[z3, z5] = right_point; + + draw z0 -- z3; + draw z1 -- z4; + draw z2 -- z5; + + if negated = 1: + stroke_through(centre, 4equal_spread); + fi; + endchar; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, ifneg(2/3, 8/3)*equal_spread# + rule_thickness#); "sim"; + pickup rule_pen; + + draw sim(left_point, right_point); + + if negated = 1: + stroke_through(centre, 8/3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#); + "approx"; + + pickup rule_pen; + + draw sim(left_point + 1/2equal_spread * dir 90, right_point + 1/2equal_spread * dir 90); + draw sim(left_point - 1/2equal_spread * dir 90, right_point - 1/2equal_spread * dir 90); + + if negated = 1: + stroke_through(centre, 11/3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#); + "triple sim"; + + pickup rule_pen; + + draw sim(left_point + equal_spread * dir 90, right_point + equal_spread * dir 90); + draw sim(left_point, right_point); + draw sim(left_point - equal_spread * dir 90, right_point - equal_spread * dir 90); + + if negated = 1: + stroke_through(centre, 14/3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#); + "sim equal"; + + pickup rule_pen; + + draw sim(left_point + 1/2equal_spread * dir 90, right_point + 1/2equal_spread * dir 90); + draw (left_point - 5/6equal_spread * dir 90) -- (right_point - 5/6equal_spread * dir 90); + + if negated = 1: + stroke_through(centre, 11/3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#); "equal sim"; + pickup rule_pen; + + draw (left_point + 5/6equal_spread * dir 90) -- (right_point + 5/6equal_spread * dir 90); + draw sim(left_point - 1/2equal_spread * dir 90, right_point - 1/2equal_spread * dir 90); + + if negated = 1: + stroke_through(centre, 11/3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#); "cong"; + pickup rule_pen; + + draw sim(left_point + equal_spread * dir 90, right_point + equal_spread * dir 90); + draw (left_point - 1/3equal_spread * dir 90) -- (right_point - 1/3equal_spread * dir 90); + draw (left_point - 4/3equal_spread * dir 90) -- (right_point - 4/3equal_spread * dir 90); + + if negated = 1: + stroke_through(centre, 14/3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#); + "approx equal"; + + pickup rule_pen; + + draw sim(left_point + equal_spread * dir 90, right_point + equal_spread * dir 90); + draw sim(left_point, right_point); + draw (left_point - 4/3equal_spread * dir 90) -- (right_point - 4/3equal_spread * dir 90); + + if negated = 1: + stroke_through(centre, 14/3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, ifneg(1,3) * equal_spread# + 2/5order_width# + rule_thickness#); + "bump equal"; + + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + draw z0 -- z2; + draw z3 -- half_circle(1/2[z1,z3], order_width/5, 0) -- z1; + + if negated = 1: + stroke_through(centre, 3equal_spread + 2/5order_width); + fi; + endchar; +fi; + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, ifneg(1,3) * equal_spread# + 2/5order_width# + rule_thickness#); + "equal bump"; + + pickup rule_pen; + + z0 - z1 = equal_spread * dir 90; + z2 - z3 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + draw z0 -- z2; + draw z1 -- half_circle(1/2[z1,z3], order_width/5, 180) -- z3; + + if negated = 1: + stroke_through(centre, 3equal_spread + 2/5order_width); + fi; + endchar; +fi; + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, ifneg(1,3) * equal_spread# + 2/5order_width# + rule_thickness#); + "double bump equal"; + + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + draw z0 -- half_circle(1/2[z0,z2], order_width/5, 180) -- z2; + draw z3 -- half_circle(1/2[z1,z3], order_width/5, 0) -- z1; + + if negated = 1: + stroke_through(centre, 3equal_spread + 2/5order_width); + fi; + endchar; +fi; + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, + 3equal_spread# + ifneg(2dot_size#, equal_spread# + rule_thickness#)); + "dot equal"; + + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + draw z0 -- z2; + draw z1 -- z3; + fill circle(centre + 3/2equal_spread * dir 90, dot_size); + + if negated = 1: + stroke_through(centre, 4equal_spread); + fi; + endchar; +fi; + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, + 3equal_spread# + ifneg(2dot_size#, equal_spread# + rule_thickness#)); + "equal dot"; + + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + draw z0 -- z2; + draw z1 -- z3; + fill circle(centre - 3/2equal_spread * dir 90, dot_size); + + if negated = 1: + stroke_through(centre, 4equal_spread); + fi; + endchar; +fi; + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, + 3equal_spread# + ifneg(2dot_size#, equal_spread# + rule_thickness#)); + "dot equal dot"; + + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + draw z0 -- z2; + draw z1 -- z3; + fill circle(centre + 3/2equal_spread * dir 90, dot_size); + fill circle(centre - 3/2equal_spread * dir 90, dot_size); + + if negated = 1: + stroke_through(centre, 4equal_spread); + fi; + endchar; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + 3equal_spread# + ifneg(2dot_size#, equal_spread# + rule_thickness#)); + "falling dot equal"; + + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + draw z0 -- z2; + draw z1 -- z3; + fill circle(left_point + 3/2equal_spread * dir 90, dot_size); + fill circle(right_point - 3/2equal_spread * dir 90, dot_size); + + if negated = 1: + stroke_through(centre, 4equal_spread); + fi; + endchar; + endfor; +fi; + +for round_smile = true, false: + + if negated < 2: + for sign = 1, -1: + beginorder(1, order_width# + rule_thickness#, ifneg(2/3, 8/3) * equal_spread# + rule_thickness#); + "smile"; + + pickup rule_pen; + + draw smile(sign, left_point, right_point, 2/3equal_spread, round_smile); + + if negated = 1: + stroke_through(centre, 8/3equal_spread); + fi; + endchar; + endfor; + fi; + + if negated < 2: + for sign = 1, -1: + beginorder(1, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#); "double smile"; + pickup rule_pen; + + s := 1/2equal_spread; + + draw smile(sign, left_point + s * dir 90, right_point + s * dir 90, 2/3equal_spread, round_smile); + draw smile(sign, left_point - s * dir 90, right_point - s * dir 90, 2/3equal_spread, round_smile); + + if negated = 1: + stroke_through(centre, 11/3equal_spread); + fi; + endchar; + endfor; + fi; + + if negated < 2: + for sign = 1, -1: + beginorder(1, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#); "triple smile"; + pickup rule_pen; + + s := equal_spread; + + draw smile(sign, left_point + s * dir 90, right_point + s * dir 90, 2/3equal_spread, round_smile); + draw smile(sign, left_point, right_point, 2/3equal_spread, round_smile); + draw smile(sign, left_point - s * dir 90, right_point - s * dir 90, 2/3equal_spread, round_smile); + + if negated = 1: + stroke_through(centre, 14/3equal_spread); + fi; + endchar; + endfor; + fi; + + if negated < 2: + for sign = 1, -1: + beginorder(1, order_width# + rule_thickness#, ifneg(7/3, 13/3) * equal_spread# + rule_thickness#); "smile frown"; + pickup rule_pen; + + s := 5/6equal_spread; + + draw smile(sign, left_point + s * dir 90, right_point + s * dir 90, 2/3equal_spread, round_smile); + draw smile(-sign, left_point - s * dir 90, right_point - s * dir 90, 2/3equal_spread, round_smile); + + if negated = 1: + stroke_through(centre, 13/3equal_spread); + fi; + endchar; + endfor; + fi; + + if negated < 2: + for sign = 1, -1: + beginorder(1, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#); "smile equal"; + pickup rule_pen; + + s := 1/6equal_spread; + + draw smile(sign, left_point + 3s * dir 90, right_point + 3s * dir 90, 2/3equal_spread, round_smile); + draw (left_point - 5s * dir 90) -- (right_point - 5s * dir 90); + + if negated = 1: + stroke_through(centre, 11/3equal_spread); + fi; + endchar; + endfor; + fi; + + if negated < 2: + for sign = 1, -1: + beginorder(1, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#); "equal smile"; + pickup rule_pen; + + s := 1/6equal_spread; + + draw (left_point + 5s * dir 90) -- (right_point + 5s * dir 90); + draw smile(sign, left_point - 3s * dir 90, right_point - 3s * dir 90, 2/3equal_spread, round_smile); + + if negated = 1: + stroke_through(centre, 11/3equal_spread); + fi; + endchar; + endfor; + fi; + + if negated < 2: + for sign = 1, -1: + beginorder(1, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#); + "double smile equal"; + + pickup rule_pen; + + s := 1/6equal_spread; + + draw smile(sign, left_point + 6s * dir 90, right_point + 6s * dir 90, 2/3equal_spread, round_smile); + draw smile(sign, left_point, right_point, 2/3equal_spread, round_smile); + draw (left_point - 8s * dir 90) -- (right_point - 8s * dir 90); + + if negated = 1: + stroke_through(centre, 14/3equal_spread); + fi; + endchar; + endfor; + fi; + + if negated < 2: + for sign = 1, -1: + beginorder(1, order_width# + rule_thickness#, ifneg(10/3, 16/3) * equal_spread# + rule_thickness#); + "smile equal frown"; + + pickup rule_pen; + + s := 4/3equal_spread; + + draw smile(sign, left_point + s * dir 90, right_point + s * dir 90, 2/3equal_spread, round_smile); + draw left_point -- right_point; + draw smile(-sign, left_point - s * dir 90, right_point - s * dir 90, 2/3equal_spread, round_smile); + + if negated = 1: + stroke_through(centre, 16/3equal_spread); + fi; + endchar; + endfor; + fi; + + % Only the round version since we have no free glyphs left. + if round_smile and (negated < 2): + for sign = 1, -1: + beginorder(1, order_width# + rule_thickness#, ifneg(10/3, 16/3) * equal_spread# + rule_thickness#); + "smile frown equal"; + + pickup rule_pen; + + s := 1/6equal_spread; + + draw smile(sign, left_point + 8s * dir 90, right_point + 8s * dir 90, 2/3equal_spread, round_smile); + draw smile(-sign, left_point - 1s * dir 90, right_point - 1s * dir 90, 2/3equal_spread, round_smile); + draw (left_point - 10s * dir 90) -- (right_point - 10s * dir 90); + + if negated = 1: + stroke_through(centre, 16/3equal_spread); + fi; + endchar; + endfor; +fi; + +endfor; + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, ifneg(1,3) * equal_spread# + rule_thickness#); + "equal circled"; + + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + draw z0 -- z2; + draw z1 -- z3; + + pickup pencircle scaled 3/4rule_thickness; + + draw circle(centre, 1/2equal_spread); + + if negated = 1: + stroke_through(centre, 3equal_spread); + fi; + endchar; +fi; + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, 3equal_spread# + 7/2dot_size# + rule_thickness#); + "circ equal"; + + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + draw z0 -- z2; + draw z1 -- z3; + + pickup pencircle scaled 3/4rule_thickness; + + draw circle(centre + 3/2equal_spread * dir 90, + min (7/4dot_size, equal_spread - 3/4rule_thickness)); + + if negated = 1: + stroke_through(centre, 3equal_spread + 7/2dot_size); + fi; + endchar; +fi; + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, 3equal_spread# + 7/2dot_size# + rule_thickness#); + "triangle equal"; + + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + x4 = xpart centre; + y4 = y5 + sind 60 * (x6 - x5) = h - 1/2rule_thickness; + + y5 = y6; + 1/2[x5, x6] = xpart centre; + + y5 - y1 = 2/3equal_spread; + + draw z0 -- z2; + draw z1 -- z3; + + pickup pencircle scaled 3/4rule_thickness; + + draw z4 -- z5 -- z6 -- cycle; + + if negated = 1: + stroke_through(centre, 3equal_spread + 7/2dot_size); + fi; + endchar; +fi; + +if negated < 2: + beginorder(1, order_width# + rule_thickness#, 5/2equal_spread# + 7/2dot_size# + rule_thickness#); + "hat equal"; + + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + x4 = xpart centre; + y4 = y5 + sind 30 * (x6 - x5) = h - 1/2rule_thickness; + + y5 = y6; + 1/2[x5, x6] = xpart centre; + + y5 - y1 = 2/3equal_spread; + + draw z0 -- z2; + draw z1 -- z3; + draw z6 -- z4 -- z5; + + if negated = 1: + stroke_through(centre, 3equal_spread + 7/2dot_size); + fi; + endchar; +fi; + +% element signs + +if negated < 2: + for sign = 1, -1: + beginorder(sign, 17/24order_width# + rule_thickness#, + ifneg(0,2) * equal_spread# + 8/9[equal_spread#, greater_spread#] + rule_thickness#); + "element"; + + pickup rule_pen; + + s := 8/9[equal_spread, greater_spread]; + + z1 - z0 = s * dir 90; + 1/2[z0, z1] = right_point; + z3 - z2 = s * dir 90; + 1/2[z2, z3] = 7/10[left_point,right_point]; + + draw z0 -- z2{left_point - right_point} .. left_point .. {right_point - left_point}z3 -- z1; + draw left_point -- right_point; + + if negated = 1: + stroke_through(centre, 2equal_spread + 8/9[equal_spread, greater_spread]); + fi; + endchar; + endfor; +fi; + +% orderings + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(0,2) * equal_spread# + greater_spread# + rule_thickness#); + "less than"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + + 1/2[z0, z1] = right_point; + + draw z0 -- left_point -- z1; + + if negated = 1: + stroke_through(centre, 2equal_spread + greater_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + greater_spread# + ifneg(2/3, 8/3) * equal_spread# + rule_thickness#); + "less than or equal"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + y2 = 1/2[y0, y1]; + x2 = x3 = xpart left_point; + y3 = y4; + z0 - z4 = 2/3equal_spread * dir 90; + + 1/2[z1, z4] = right_point; + + draw z0 -- z2 -- z1; + draw z3 -- z4; + + if negated = 1: + stroke_through(centre, 8/3equal_spread + greater_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + greater_spread# + ifneg(1,3) * equal_spread# + rule_thickness#); + "less than or slanted equal"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + z2 - z3 = equal_spread * dir 90; + z0 - z4 = equal_spread * dir 90; + + 1/2[z2, z3] = left_point; + 1/2[z1, z4] = right_point; + + draw z0 -- z2 -- z1; + draw z3 -- z4; + + if negated = 1: + stroke_through(centre, 3equal_spread + greater_spread); + fi; + endchar; + endfor; +fi; + +if negated < 3: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + greater_spread# + ifneg(5/3, 11/3, 11/3) * equal_spread# + rule_thickness#); + "less than or double equal"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + y2 = 1/2[y0, y1]; + x2 = x3 = x5 = xpart left_point; + y3 = y4; + z0 - z4 = 2/3equal_spread * dir 90; + y5 = y6; + z4 - z6 = equal_spread * dir 90; + + 1/2[z1, z6] = right_point; + + draw z0 -- z2 -- z1; + draw z3 -- z4; + draw z5 -- z6; + + if negated = 1: + stroke_through(centre, 11/3equal_spread + greater_spread); + elseif negated = 2: + stroke_through(1/2[1/2[z3,z4], 1/2[z5,z6]], 3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + 3/2greater_spread# + ifneg(1,3) * equal_spread# + rule_thickness#); + "less greater"; + + pickup rule_pen; + + y1 - y0 = greater_spread; + y2 - y3 = equal_spread; + y0 - y4 = equal_spread; + y3 - y5 = greater_spread; + + x2 = x3 = x5 = xpart left_point; + x0 = x1 = x4 = xpart right_point; + + y2 = 1/2[y0, y1]; + + 1/2[y1, y5] = ypart centre; + + draw z0 -- z2 -- z1; + draw z3 -- z4 -- z5; + + if negated = 1: + stroke_through(centre, 3equal_spread + 3/2greater_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + 2greater_spread# + ifneg(4/3, 10/3) * equal_spread# + rule_thickness#); + "less equal greater"; + + pickup rule_pen; + + y2 - y0 = greater_spread; + x0 = x2 = xpart right_point; + + y1 = 1/2[y0, y2]; + x1 = xpart left_point; + + y5 - y3 = greater_spread; + x3 = x5 = xpart left_point; + + y4 = 1/2[y3, y5]; + x4 = xpart right_point; + + y0 - y5 = 4/3equal_spread; + + 1/2[y0, y5] = ypart centre; + + draw z0 -- z1 -- z2; + draw z3 -- z4 -- z5; + draw left_point -- right_point; + + if negated = 1: + stroke_through(centre, 10/3equal_spread + 2greater_spread); + fi; + endchar; + endfor; +fi; + +if negated < 3: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + 2greater_spread# + ifneg(7/3, 13/3, 13/3) * equal_spread# + rule_thickness#); + "less double equal greater"; + + pickup rule_pen; + + y2 - y0 = greater_spread; + x0 = x2 = xpart right_point; + + y1 = 1/2[y0, y2]; + x1 = xpart left_point; + + y5 - y3 = greater_spread; + x3 = x5 = xpart left_point; + + y4 = 1/2[y3, y5]; + x4 = xpart right_point; + + y0 - y5 = 7/3equal_spread; + + 1/2[y0, y5] = ypart centre; + + 1/2[z6, z7] = left_point; + 1/2[z8, z9] = right_point; + + z7 - z6 = equal_spread * dir 90; + z9 - z8 = equal_spread * dir 90; + + draw z0 -- z1 -- z2; + draw z3 -- z4 -- z5; + draw z6 -- z8; + draw z7 -- z9; + + if negated = 1: + stroke_through(centre, 13/3equal_spread + 2greater_spread); + elseif negated = 2: + stroke_through(centre, 3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + 3/2greater_spread# + ifneg(2,4) * equal_spread# + rule_thickness#); + "less slanted equal greater"; + + pickup rule_pen; + + y2 - y0 = greater_spread; + x0 = x2 = xpart right_point; + + y1 = 1/2[y0, y2]; + x1 = xpart left_point; + + y5 - y3 = greater_spread; + x3 = x5 = xpart left_point; + + y4 = 1/2[y3, y5]; + x4 = xpart right_point; + + z6 = 1/2[z1, z5]; + z7 = 1/2[z0, z4]; + + y1 - y6 = equal_spread; + + 1/2[y6, y7] = ypart centre; + + draw z0 -- z1 -- z2; + draw z3 -- z4 -- z5; + draw z6 -- z7; + + if negated = 1: + stroke_through(centre, 4equal_spread + 3/2greater_spread); + fi; + endchar; + endfor; +fi; + + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + 2equal_spread# + rule_thickness#, + ifneg(0,2) * equal_spread# + greater_spread# + rule_thickness#); + "less less"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + z3 - z5 = greater_spread * dir 90; + z2 = left_point; + z4 - z2 = sign * 2equal_spread * dir 0; + z3 - z1 = sign * 2equal_spread * dir 0; + + 1/2[z3, z5] = right_point; + + draw z0 -- z2 -- z1; + draw z3 -- z4 -- z5; + + if negated = 1: + stroke_through(centre, 2equal_spread + greater_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + 4equal_spread# + rule_thickness#, + ifneg(0,2) * equal_spread# + greater_spread# + rule_thickness#); + "less less less"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + z3 - z5 = greater_spread * dir 90; + z6 - z8 = greater_spread * dir 90; + z2 = left_point; + z4 - z2 = sign * 2equal_spread * dir 0; + z3 - z1 = sign * 2equal_spread * dir 0; + z7 - z4 = sign * 2equal_spread * dir 0; + z6 - z3 = sign * 2equal_spread * dir 0; + + 1/2[z6, z8] = right_point; + + draw z0 -- z2 -- z1; + draw z3 -- z4 -- z5; + draw z6 -- z7 -- z8; + + if negated = 1: + stroke_through(centre, 2equal_spread + greater_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(0,2) * equal_spread# + greater_spread# + rule_thickness#); + "closed less than"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + + 1/2[z0, z1] = right_point; + + draw z0 -- left_point -- z1 -- cycle; + + if negated = 1: + stroke_through(centre, 2equal_spread + greater_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + greater_spread# + ifneg(2/3, 8/3) * equal_spread# + rule_thickness#); + "closed less than or equal"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + y2 = 1/2[y0, y1]; + x2 = x3 = xpart left_point; + y3 = y4; + z0 - z4 = 2/3equal_spread * dir 90; + + 1/2[z1, z4] = right_point; + + draw z0 -- z2 -- z1 -- cycle; + draw z3 -- z4; + + if negated = 1: + stroke_through(centre, 8/3equal_spread + greater_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + 1/2[equal_spread#, greater_spread#] + ifneg(0,2) * equal_spread# + rule_thickness#); + "square subset"; + + pickup rule_pen; + + z1 - z0 = 1/2[equal_spread, greater_spread] * dir 90; + z3 - z2 = 1/2[equal_spread, greater_spread] * dir 90; + + 1/2[z0, z1] = left_point; + 1/2[z2, z3] = right_point; + + draw z3 -- z1 -- z0 -- z2; + + if negated = 1: + stroke_through(centre, 2equal_spread + 1/2[equal_spread, greater_spread]); + fi; + endchar; + endfor; +fi; + +if negated < 3: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(1,3,3) * equal_spread# + 1/2[equal_spread#, greater_spread#] + rule_thickness#); + "square subset equal"; + + pickup rule_pen; + + z1 - z0 = 1/2[equal_spread, greater_spread] * dir 90; + z3 - z2 = 1/2[equal_spread, greater_spread] * dir 90; + + 1/2[z1, z4] = left_point; + 1/2[z3, z5] = right_point; + + y4 = y5 = y0 - equal_spread; + x4 = x0; + x5 = x2; + + draw z3 -- z1 -- z0 -- z2; + draw z4 -- z5; + + if negated = 1: + stroke_through(centre, 3equal_spread + 1/2[equal_spread, greater_spread]); + elseif negated = 2: + stroke_through(1/2[1/2[z0,z2], 1/2[z4,z5]], 3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 3: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(2,4,4) * equal_spread# + 1/2[equal_spread#, greater_spread#] + rule_thickness#); + "square subset double equal"; + + pickup rule_pen; + + z1 - z0 = 1/2[equal_spread, greater_spread] * dir 90; + z3 - z2 = 1/2[equal_spread, greater_spread] * dir 90; + + 1/2[z1, z6] = left_point; + 1/2[z3, z7] = right_point; + + y4 = y5 = y0 - equal_spread; + y6 = y7 = y4 - equal_spread; + x4 = x6 = x0; + x5 = x7 = x2; + + draw z3 -- z1 -- z0 -- z2; + draw z4 -- z5; + draw z6 -- z7; + + if negated = 1: + stroke_through(centre, 4equal_spread + 1/2[equal_spread, greater_spread]); + elseif negated = 2: + stroke_through(1/2[1/2[z4,z5], 1/2[z6,z7]], 3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(8/3, 14/3) * equal_spread# + rule_thickness#); + "double square subset"; + + pickup rule_pen; + + z1 - z0 = equal_spread * dir 90; + z3 - z2 = equal_spread * dir 90; + + 1/2[z1, z0] = left_point + 3/4equal_spread * dir (90 - sign * 90); + 1/2[z3, z2] = right_point; + + z5 - z4 = 8/3equal_spread * dir 90; + z7 - z6 = 8/3equal_spread * dir 90; + + 1/2[z5, z4] = left_point; + 1/2[z7, z6] = right_point; + + draw z3 -- z1 -- z0 -- z2; + draw z7 -- z5 -- z4 -- z6; + + if negated = 1: + stroke_through(centre, 14/3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(0,2) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#); + "subset"; + + pickup rule_pen; + + draw subset(left_point, right_point, 2/3[equal_spread, greater_spread]); + + if negated = 1: + stroke_through(centre, 2equal_spread + 2/3[equal_spread, greater_spread]); + fi; + endchar; + endfor; +fi; + +if negated < 3: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(1,3,3) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#); + "subset or equal"; + + pickup rule_pen; + + t := 2/3[equal_spread, greater_spread]; + s := 1/2equal_spread + 1/2t; + + z1 - z0 = z3 - z2 = (t/2 + equal_spread) * dir 90; + y0 = y2 = ypart centre - s; + x0 = xpart left_point; + x2 = xpart right_point; + + draw subset(z1, z3, t); + draw z0 -- z2; + + if negated = 1: + stroke_through(centre, 3equal_spread + 2/3[equal_spread, greater_spread]); + elseif negated = 2: + stroke_through(1/2[z0,z2] + 1/2equal_spread * dir 90, 3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 3: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(2,4,4) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#); + "subset or double equal"; + + pickup rule_pen; + + t := 2/3[equal_spread, greater_spread]; + s := 1/2t; + + z1 - z0 = z3 - z2 = (t/2 + equal_spread) * dir 90; + y0 = y2 = ypart centre - s; + x0 = xpart left_point; + x2 = xpart right_point; + + z0 - z4 = z2 - z5 = equal_spread * dir 90; + + draw subset(z1, z3, t); + draw z0 -- z2; + draw z4 -- z5; + + if negated = 1: + stroke_through(centre, 4equal_spread + 2/3[equal_spread, greater_spread]); + elseif negated = 2: + stroke_through(1/2[1/2[z0,z2], 1/2[z4,z5]], 3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#); + "double subset"; + + pickup rule_pen; + + draw subset(left_point + 3/4equal_spread * dir (90 - sign * 90), right_point, + equal_spread); + draw subset(left_point, right_point, 8/3equal_spread); + + if negated = 1: + stroke_through(centre, 14/3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(0,2) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#); + "curly less than"; + + pickup rule_pen; + + draw prec(left_point, right_point, 2/3[equal_spread, greater_spread]); + + if negated = 1: + stroke_through(centre, 2equal_spread + 2/3[equal_spread, greater_spread]); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(2/3, 8/3) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#); + "curly less than or equal"; + + pickup rule_pen; + + t := 2/3[equal_spread, greater_spread]; + s := 1/3equal_spread + 1/2t; + + z1 - z0 = z3 - z2 = (t/2 + 2/3equal_spread) * dir 90; + y0 = y2 = ypart centre - s; + x0 = xpart left_point; + x2 = xpart right_point; + + draw prec(z1, z3, t); + draw z0 -- z2; + + if negated = 1: + stroke_through(centre, 8/3equal_spread + 2/3[equal_spread, greater_spread]); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(1,3) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#); + "curly less than or curly equal"; + + pickup rule_pen; + + t := 2/3[equal_spread, greater_spread]; + + z1 - z0 = equal_spread * dir 90; + z4 - z2 = 7/5equal_spread * dir 90; + z3 - z4 = t/2 * dir 90; + y1 = y3; + y4 = ypart centre - 1/2(t - equal_spread); + x0 = xpart left_point; + x2 = xpart right_point; + + path p; + + p = z0{z3 - z1} .. z2; + + v := xpart (p intersectiontimes (z4 -- (z4 + h * dir (270 - sign * 20)))); + + draw prec(z1, z3, t); + draw subpath (0,v) of p; + + if negated = 1: + stroke_through(centre, 3equal_spread + 2/3[equal_spread, greater_spread]); + fi; + endchar; + endfor; +fi; + +if negated < 3: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(4/3, 10/3) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#); + "curly less sim"; + + pickup rule_pen; + + t := 2/3[equal_spread, greater_spread]; + s := 1/3equal_spread + t/2; + + z1 - z0 = z3 - z2 = (t/2 + equal_spread) * dir 90; + y0 = y2 = ypart centre - s; + x0 = xpart left_point; + x2 = xpart right_point; + + draw prec(z1, z3, t); + + if sign > 0: + draw sim(z0, z2); + else: + draw sim(z2, z0); + fi + + if negated = 1: + stroke_through(centre, 10/3equal_spread + 2/3[equal_spread, greater_spread]); + elseif negated = 2: + stroke_through(1/2[z0,z2], 8/3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 3: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(7/3, 13/3, 13/3) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#); + "curly less approx"; + + pickup rule_pen; + + t := 2/3[equal_spread, greater_spread]; + s := -1/6equal_spread + t/2; + + z1 - z0 = z3 - z2 = (t/2 + equal_spread) * dir 90; + y0 = y2 = ypart centre - s; + x0 = xpart left_point; + x2 = xpart right_point; + + z0 - z4 = z2 - z5 = equal_spread * dir 90; + + draw prec(z1, z3, t); + + if sign > 0: + draw sim(z0, z2); + draw sim(z4, z5); + else: + draw sim(z2, z0); + draw sim(z5, z4); + fi + + if negated = 1: + stroke_through(centre, 13/3equal_spread + 2/3[equal_spread, greater_spread]); + elseif negated = 2: + stroke_through(1/2[1/2[z0,z2], 1/2[z4,z5]], 11/3equal_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + ifneg(0,2) * equal_spread# + greater_spread# + rule_thickness#); + "less than dot"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + + 1/2[z0, z1] = right_point; + + draw z0 -- left_point -- z1; + fill circle(right_point - sign * dot_size * dir 0, dot_size); + + if negated = 1: + stroke_through(centre, 2equal_spread + greater_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + greater_spread# + ifneg(2/3, 10/3) * equal_spread# + rule_thickness#); + "less than or equal dot"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + y2 = 1/2[y0, y1]; + x2 = x3 = xpart left_point; + y3 = y4; + z0 - z4 = 2/3equal_spread * dir 90; + + 1/2[z1, z4] = right_point; + + draw z0 -- z2 -- z1; + draw z3 -- z4; + fill circle(1/2[z0,z1] - sign * dot_size * dir 0, dot_size); + + if negated = 1: + stroke_through(centre, 10/3equal_spread + greater_spread); + fi; + endchar; + endfor; +fi; + +if negated < 2: + for sign = 1, -1: + beginorder(sign, order_width# + rule_thickness#, + greater_spread# + ifneg(1,3) * equal_spread# + rule_thickness#); + "less than or slanted equal dot"; + + pickup rule_pen; + + z1 - z0 = greater_spread * dir 90; + z2 - z3 = equal_spread * dir 90; + z0 - z4 = equal_spread * dir 90; + + 1/2[z2, z3] = left_point; + 1/2[z1, z4] = right_point; + + draw z0 -- z2 -- z1; + draw z3 -- z4; + fill circle(1/2[z0,z1] - sign * dot_size * dir 0, dot_size); + + if negated = 1: + stroke_through(centre, 3equal_spread + greater_spread); + fi; + endchar; + endfor; +fi; + |