summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf')
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf498
1 files changed, 498 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf
new file mode 100644
index 00000000000..f08a8eba68e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf
@@ -0,0 +1,498 @@
+% mathematical symbols by Anthony Phan.
+% file: mathmbcb.mf (symbols medium or big in circles or boxes)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list=
+ 0.5[-d,h]-math_axis,0.5[-d,h]-math_axis+x_height,
+ 0.25[-d,h],0.5[-d,h],0.75[-d,h] enddef;
+
+extra_beginchar_save:=extra_beginchar;
+numeric display_over_text;
+
+% Beware: one can not execute conditionnal commands
+% thru the following construction. For instance,
+% on_size(use_rule1,use_rule2,use_rule3) would
+% lead to the use of rule3.
+
+def on_size(expr $,$$,$$$)=
+ if substring (0,1) of main_name_string="m": $
+ elseif substring (0,1) of main_name_string="b": $$
+ else: $$$ fi% "B" case or else
+enddef;
+
+if substring (0,1) of main_name_string="m":
+ let tmp_bounds=arithmetic_bounds;
+ def tmp_radius=6.75u enddef;
+ use_rule1;
+elseif substring (0,1) of main_name_string="b":
+ def tmp_bounds=10/6dh#+2appr#,0,10/6dh# enddef;
+ % def tmp_bounds=18u#+2appr#,0,10/6dh# enddef;
+ def tmp_radius=0.5(h+d) enddef;
+ use_rule2;
+else:% "B" case or else
+ def tmp_bounds= 1.20*10/6dh#+2appr#,
+ 0,1.20*10/6dh# enddef;
+ % def tmp_bounds= 25.2u#+2appr#,0,14/6dh# enddef;
+ def tmp_radius=0.5(h+d) enddef;
+ use_rule3;
+fi
+
+numeric tmp_dtsz;
+a:=on_size(max(0.82u,1.25u-rth1),1.33u,1.20*1.33u);
+tmp_dtsz=on_size(dtsz,1.2dtsz,1.20*1.2dtsz);
+tmp_string:=on_size("Medium ","Textstyle ","Displaystyle ")
+& substring (1,infinity) of main_name_string;
+extra_beginchar:=extra_beginchar & on_size("","","padded bigop_padding#;");
+
+% I know what anyone will think while reading this file:
+% ``this guy had totally messed up with boundaries''.
+% Believe me, I had not.
+
+% The next programs put a circle or a box exactly around the point
+% z0. So that z0 must be adjusted with respect to the pen
+% with which the circle will be drawn.
+
+if substring (1,infinity) of main_name_string="circle":
+ vardef tmp_program=
+ autorounded; pickup rule.nib;
+ x0=good.x 0.5w; y0=good.y 0.5[-d,h];
+ for i=1 upto 8:
+ z[i]=z0+round(tmp_radius-0.5rth)*right rotated(45*(i-1));
+ endfor; labels(0,1,2,3,4,5,6,7,8);
+ tmp_path:=z1{up}...z2{z3-z1}
+ ...z3{left}...z4{z5-z3}...z5{down}...z6{z7-z5}
+ ...z7{right}...z8{z1-z7}...cycle; draw tmp_path;
+ enddef;
+ def dot_spread=4*tmp_radius/(3*3.14159) enddef;
+ % average point of some half disc
+ def prepare_triangle(expr orientation)=
+ save b,c; pickup tiny.nib;
+ b=min(on_size(7u,12u,1.20*12u),
+ 2*sqrt(3)*(tmp_radius-rth-a));
+ c=on_size(rth0,rth1,rth2);
+ tmp_boolean:=true
+ enddef;
+else:
+ vardef tmp_program=
+ pickup rule.nib;
+ x0=good.x 0.5w; y0=good.y 0.5[-d,h];
+ pickup tiny.nib;
+ for i=1 step 2 until 7:
+ z[i]=z0+round(tmp_radius-0.5rth)*right rotated(45*(i-1));
+ endfor;
+ pos1(rth,0); pos5(rth,180);
+ pos3(rth,90); pos7(rth,-90);
+ forsuffixes $=,r,l:
+ x1$=x2$=x8$; x5$=x4$=x6$;
+ y2$=y3$=y4$; y6$=y7$=y8$;
+ endfor
+ penlabels(0,1,2,3,4,5,6,7,8);
+ filldraw stroke z8e--z6e--z4e--z2e--z8e;
+ tmp_path:=z1--z2--z3--z4--z5--z6--z7--z8--cycle;
+ pickup rule.nib;
+ enddef;
+ def dot_spread=0.5(y3-y0) enddef;
+ def prepare_triangle(expr orientation)=
+ save b,c; pickup tiny.nib;
+ b=min(on_size(7u,12u,1.20*12u),
+ 2*sqrt(3)*(tmp_radius-rth-a));
+ c=on_size(rth0,rth1,rth2);
+ tmp_boolean:=false;
+ save triangle_foot;
+ triangle_foot=
+ if (orientation=up)or(orientation=down): y0 else: x0 fi
+ if (orientation=up)or(orientation=right): - else: + fi
+ 0.5[1/3,1/2]*0.5b*sqrt 3
+ enddef;
+fi
+
+%
+% Let's go
+%
+
+beginchar(main_name_with(_plus),tmp_bounds);
+ tmp_string & " plus";
+ tmp_program;
+ pickup tiny.nib;
+ top y9=vround(y3-0.5rth-a); y3-y9=y10-y7; y11=y12=y0;
+ rt x12=hround(x1-0.5rth-a); x1-x12=x11-x5; x9=x10=x0;
+ pos9(rth,0); pos10(rth,0); pos11(rth,90); pos12(rth,90);
+ filldraw stroke z9e..z10e; filldraw stroke z11e..z12e;
+ penlabels(9,10,11,12);
+endchar;
+
+beginchar(main_name_with(_minus),tmp_bounds);
+ tmp_string & " minus";
+ tmp_program;
+ pickup tiny.nib;
+ rt x9=hround(x1-0.5rth-a);
+ x10-x5=x1-x9; y9=y10=y0; pos9(rth,90); pos10(rth,90);
+ filldraw stroke z10e..z9e; penlabels(9,10,11,12);
+endchar;
+
+beginchar(main_name_with(_times),tmp_bounds);
+ tmp_string & " times";
+ tmp_program;
+ pickup tiny.nib;
+ rt x0'=hround(x1-0.5rth-a); y0=y0';
+ z9-z0=z0-z10=(z0'-z0) rotated 45; z11-z0=z0-z12=(z0'-z0) rotated -45;
+ pos9(rth+2eps,-45); pos10(rth+2eps,-45);
+ pos11(rth+2eps,45); pos12(rth+2eps,45);
+ filldraw stroke z9e..z10e; filldraw stroke z12e..z11e;
+ penlabels(9,10,11,12);
+endchar;
+
+beginchar(main_name_with(_division),tmp_bounds);
+ tmp_string & " division";
+ tmp_program;
+ pickup tiny.nib;
+ rt x9=hround(x1-0.5rth-a); x10-x5=x1-x9;
+ y9=y10=y0; pos9(rth,90); pos10(rth,90);
+ filldraw stroke z10e..z9e; penlabels(9,10);
+ pickup null.nib;
+ adjust_dot11((x0,y0+dot_spread),tmp_dtsz,true,false); dot(11,11');
+ adjust_dot12((x0,y0-dot_spread),tmp_dtsz,true,false); dot(12,12');
+endchar;
+
+beginchar(main_name_with(_dot),tmp_bounds);
+ tmp_string & " dot";
+ tmp_program;
+ pickup null.nib;
+ adjust_dot9(z0,1.3tmp_dtsz,true,true); dot(9,9');
+endchar;
+
+beginchar(main_name_with(_circle),tmp_bounds);
+ tmp_string & " circle";
+ tmp_program;
+ numeric b;
+ b=min(max(on_size(7u,7u,1.20*7u),tmp_dtsz),tmp_radius-rth-a);
+ pickup rule.nib0; adjust_dot9((x0,y0),b,true,true);
+ full_dot:=false; dot(9,9');
+endchar;
+
+% the asterisk is the same in textstyle and displaystyle
+
+beginchar(main_name_with(_asterisk),tmp_bounds);
+ tmp_string & " asterisk";
+ tmp_program;
+ autorounded;
+ interim stress:=0.5;
+ pickup null.nib;
+ numeric b,c,dag_stem,dag_curve;
+ dag_curve=on_size(ast_curve,round 1.1cap_curve,round 1.1cap_curve);
+ dag_stem=on_size(ast_stem,hair,hair);
+ b=on_size(1.8ast_stem,2.6hair,2.6hair);
+ c=on_size(1.4dag_stem,0.625b,0.625b);
+ spread:=min(on_size(ast_size,12u,12u),2(tmp_radius-rth-a));
+ for $=9 upto 14: z[$]=b*dir(($-9)*60+30)+z0;
+ z[$]'=c*dir(($-9)*60+60)+z0; endfor
+ filldraw for $=9 upto 14: dagger_stroke[$](round(0.5spread-b)+eps,
+ dag_curve,dag_stem,dir(($-9)*60+30))...z[$]'...endfor cycle;
+endchar;
+
+% the asterisk is the same in textstyle and displaystyle
+
+beginchar(main_name_with(_co_asterisk),tmp_bounds);
+ tmp_string & " co-asterisk";
+ tmp_program;
+ autorounded;
+ interim stress:=0.5;
+ pickup null.nib;
+ numeric b,c,dag_stem,dag_curve;
+ dag_curve=on_size(ast_curve,round 1.1cap_curve,round 1.1cap_curve);
+ dag_stem=on_size(ast_stem,hair,hair);
+ b=1.8dag_stem; c=1.4dag_stem;
+ spread:=min(on_size(ast_size,12u,12u),2(tmp_radius-rth-a));
+ for $=9 upto 14: z[$]=b*dir(($-9)*60)+z0;
+ z[$]'=c*dir(($-9)*60+30)+z0; endfor
+ filldraw for $=9 upto 14: dagger_stroke[$](round(0.5spread-b)+eps,
+ dag_curve,dag_stem,dir(($-9)*60))...z[$]'...endfor cycle;
+endchar;
+
+beginchar(main_name_with(_left),tmp_bounds);
+ tmp_string & " left";
+ tmp_program;
+ draw z3..z7; draw z0..z5;
+endchar;
+
+beginchar(main_name_with(_right),tmp_bounds);
+ tmp_string & " right";
+ tmp_program;
+ draw z3..z7; draw z0..z1;
+endchar;
+
+beginchar(main_name_with(_top),tmp_bounds);
+ tmp_string & " top";
+ tmp_program;
+ draw z1..z5; draw z0..z7;
+endchar;
+
+beginchar(main_name_with(_bot),tmp_bounds);
+ tmp_string & " bot";
+ tmp_program;
+ draw z1..z5; draw z0..z3;
+endchar;
+
+beginchar(main_name_with(_slash),tmp_bounds);
+ tmp_string & " slash";
+ tmp_program;
+ draw z2..z6;
+endchar;
+
+beginchar(main_name_with(_backslash),tmp_bounds);
+ tmp_string & " backslash";
+ tmp_program;
+ draw z4..z8;
+endchar;
+
+beginchar(main_name_with(_sign),tmp_bounds);
+ tmp_string & " sign";
+ tmp_program;
+endchar;
+
+beginchar(main_name_with(_triangle_up),tmp_bounds);
+ tmp_string & " triangle up";
+ tmp_program;
+ begingroup save math_axis; math_axis=y0;
+ prepare_triangle(up);
+ set_triangle'(up,b,c,tmp_boolean,false);
+ filldraw stroke z1'e--z2'e--z3'e--z1'e;
+ endgroup;
+endchar;
+
+% UNSUPPORTED
+
+beginchar(main_name_with(_truc),tmp_bounds);
+ tmp_string & " truc";
+ tmp_program;
+ x9=x0; y9=good.y
+ if substring (1,infinity) of main_name_string="circle":
+ 0.632466 else: 2/3 fi [top y7,bot y3];
+ z10=tmp_path intersectionpoint (z9..(x5,y9));
+ z11=tmp_path intersectionpoint (z9..(x1,y9));
+ draw z7..z9; draw z10..z11; labels(9,10,11);
+endchar;
+
+% numerics are such that all the three parts
+% have almost the same area. (look at the circle's case)
+
+beginchar(main_name_with(_curt),tmp_bounds);
+ tmp_string & " curt";
+ tmp_program;
+ x9=x0; y9=good.y
+ if substring (1,infinity) of main_name_string="circle":
+ 0.632466 else: 2/3 fi [bot y3,top y7];
+ z10=tmp_path intersectionpoint (z9..(x5,y9));
+ z11=tmp_path intersectionpoint (z9..(x1,y9));
+ draw z3..z9; draw z10..z11; labels(9,10,11);
+endchar;
+
+% hummm, too big
+beginchar(main_name_with(_full_circle),tmp_bounds);
+ tmp_string & " full circle";
+ tmp_program;
+ numeric b;
+ b=min(max(on_size(7u-rth0,7u-rth0,1.20*7u-rth0),
+ tmp_dtsz),tmp_radius-rth-a);
+ pickup rule.nib0; adjust_dot9((x0,y0),b,true,true);
+ dot(9,9');
+endchar;
+
+% the star is the same in textstyle and displaystyle
+
+beginchar(main_name_with(_five_star),tmp_bounds);
+ tmp_string & " five star";
+ tmp_program;
+ pickup tiny.nib;
+ save b,tense;
+ b=on_size(3.5u+o,6u+o,6u+o);
+ tense=on_size(0.2,0.1,0.1);
+ draw_star.a(z0,5,b,tense,90,false);
+ labels(a);
+endchar;
+
+% the star is the same in textstyle and displaystyle
+
+beginchar(main_name_with(_six_star),tmp_bounds);
+ tmp_string & " six star";
+ tmp_program;
+ pickup tiny.nib;
+ save b,tense;
+ b=on_size(3.5u,6u+o,6u+o);
+ tense=on_size(0.4,0.3,0.3);
+ draw_star.a(z0,6,b,tense,90,false);
+ labels(a);
+endchar;
+
+beginchar(main_name_with(_triangle_down),tmp_bounds);
+ tmp_string & " triangle down";
+ tmp_program;
+ begingroup save math_axis; math_axis=y0;
+ prepare_triangle(down);
+ set_triangle'(down,b,c,tmp_boolean,false);
+ filldraw stroke z1'e--z2'e--z3'e--z1'e;
+ endgroup;
+endchar;
+
+beginchar(main_name_with(_triangle_left),tmp_bounds);
+ tmp_string & " triangle left";
+ tmp_program;
+ begingroup save math_axis; math_axis=y0;
+ prepare_triangle(left);
+ set_triangle'(left,b,c,tmp_boolean,false);
+ filldraw stroke z1'e--z2'e--z3'e--z1'e;
+ endgroup;
+endchar;
+
+beginchar(main_name_with(_triangle_right),tmp_bounds);
+ tmp_string & " triangle right";
+ tmp_program;
+ begingroup save math_axis; math_axis=y0;
+ prepare_triangle(right);
+ set_triangle'(right,b,c,tmp_boolean,false);
+ filldraw stroke z1'e--z2'e--z3'e--z1'e;
+ endgroup;
+endchar;
+
+beginchar(main_name_with(_top_dot_minus),tmp_bounds);
+ tmp_string & " top dot minus";
+ tmp_program; pickup tiny.nib;
+ rt x9=hround(x1-0.5rth-a); x10-x5=x1-x9;
+ y9=y10=y0; pos9(rth,90); pos10(rth,90);
+ filldraw stroke z10e..z9e; penlabels(9,10);
+ pickup null.nib;
+ adjust_dot11((x0,y0+dot_spread),tmp_dtsz,true,false); dot(11,11');
+endchar;
+
+beginchar(main_name_with(_bot_dot_minus),tmp_bounds);
+ tmp_string & " bot dot minus";
+ tmp_program;
+ pickup tiny.nib;
+ rt x9=hround(x1-0.5rth-a); x10-x5=x1-x9;
+ y9=y10=y0; pos9(rth,90); pos10(rth,90);
+ filldraw stroke z10e..z9e; penlabels(9,10);
+ pickup null.nib;
+ adjust_dot11((x0,y0-dot_spread),tmp_dtsz,true,false); dot(11,11');
+endchar;
+
+beginchar(main_name_with(_horiz),tmp_bounds);
+ tmp_string & " horizontal";
+ tmp_program;
+ draw z1..z5;
+endchar;
+
+beginchar(main_name_with(_vert),tmp_bounds);
+ tmp_string & " vertical";
+ tmp_program;
+ draw z3..z7;
+endchar;
+
+beginchar(main_name_with(_cross),tmp_bounds);
+ tmp_string & " cross";
+ tmp_program;
+ draw z1..z5; draw z3..z7;
+endchar;
+
+beginchar(main_name_with(_across),tmp_bounds);
+ tmp_string & " across";
+ tmp_program;
+ draw z2..z6; draw z4..z8;
+endchar;
+
+beginchar(main_name_with(_wedge),tmp_bounds);
+ tmp_string & " wedge";
+ tmp_program;
+ draw z8--z3--z6;
+endchar;
+
+beginchar(main_name_with(_vee),tmp_bounds);
+ tmp_string & " vee";
+ tmp_program;
+ draw z2--z7--z4;
+endchar;
+
+beginchar(main_name_with(_black_left),tmp_bounds);
+ tmp_string & " black left";
+ tmp_program;
+ fill subpath (2,6) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_right),tmp_bounds);
+ tmp_string & " black right";
+ tmp_program;
+ fill subpath (6,8) of tmp_path
+ & subpath (0,2) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_top),tmp_bounds);
+ tmp_string & " black top";
+ tmp_program;
+ fill subpath (0,4) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_bot),tmp_bounds);
+ tmp_string & " black bot";
+ tmp_program;
+ fill subpath (4,8) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_northwest),tmp_bounds);
+ tmp_string & " black north-west";
+ tmp_program;
+ fill subpath (1,5) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_northeast),tmp_bounds);
+ tmp_string & " black north-east";
+ tmp_program;
+ fill subpath (7,8) of tmp_path
+ --subpath (0,3) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_southwest),tmp_bounds);
+ tmp_string & " black south-west";
+ tmp_program;
+ fill subpath (3,7) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_southeast),tmp_bounds);
+ tmp_string & " black south-east";
+ tmp_program;
+ fill subpath (5,8) of tmp_path
+ --subpath (0,1) of tmp_path--cycle;
+endchar;
+
+% There is no normalization for the next symbol as it seems...
+
+beginchar(main_name_with(_ying_yang),tmp_bounds);
+ tmp_string & " Ying-Yang";
+ tmp_program;
+ autorounded;
+ y9=bot y3; y10=0.5[y9,y0]; y11=0.5[y0,y12]; y12=top y7;
+ x0=x9=x12; x10=ceiling(x0+y0-y11); x10-x0=x0-x11;
+ pickup null.nib;
+ fill subpath (6,8) of tmp_path
+ -- subpath (0,2) of tmp_path
+ --z9 right_to_down z10 down_to_left
+ z0 left_to_down z11 down_to_right z12
+ --cycle;
+ adjust_dot13((x0,y10),tmp_dtsz,true,true);
+ adjust_dot14((x0,y11),tmp_dtsz,true,true);
+ dot(13,13'); unfill dot_path(14,14');
+ labels(9,10,11,12,14,14');
+endchar;
+
+beginchar(main_name_with(_peace_and_love),tmp_bounds);
+ tmp_string & " peace and love";
+ tmp_program;
+ z9=tmp_path intersectionpoint (z0..(z0+2(tmp_radius)*dir 210));
+ z10=tmp_path intersectionpoint (z0..(z0+2(tmp_radius)*dir 330));
+ draw z3..z7; draw z0..z9; draw z0..z10;
+ labels(9,10);
+endchar;
+
+% numerics are such that all the three parts
+% have almost the same area. (look at the circle's case)
+
+extra_beginchar:=extra_beginchar_save;