diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf | 498 |
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; |