diff options
author | Karl Berry <karl@freefriends.org> | 2008-09-15 00:34:37 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-09-15 00:34:37 +0000 |
commit | d0c1973e2a0b6ecebd5b4571c959ef8b32fd6ca8 (patch) | |
tree | 63be6df2b3e75d189fae53321cfe21fccd44ae34 /Master/texmf-dist/fonts/source | |
parent | 58151c6db30061d71c2627427b2958779c644adc (diff) |
new (mf) font package mathabx
git-svn-id: svn://tug.org/texlive/trunk@10599 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/fonts/source')
54 files changed, 17584 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha10.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha10.mf new file mode 100644 index 00000000000..dadcb3a2490 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/matha10.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: matha10.mf (math serie A at 10 points) +% last modification: May 16, 2005. + +font_identifier:="matha"; font_size 10pt#; +font_coding_scheme "matha"; + +input mathprmt; +input mathadrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha12.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha12.mf new file mode 100644 index 00000000000..7c5b5fe1652 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/matha12.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: matha12.mf (math serie A at 12 points) +% last modification: May 16, 2005. + +font_identifier:="matha"; font_size 12pt#; +font_coding_scheme "matha"; + +input mathprmt; +input mathadrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha5.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha5.mf new file mode 100644 index 00000000000..fdd43a1747d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/matha5.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: matha5.mf (math serie A at 5 points) +% last modification: May 16, 2005. + +font_identifier:="matha"; font_size 5pt#; +font_coding_scheme "matha"; + +input mathprmt; +input mathadrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha6.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha6.mf new file mode 100644 index 00000000000..f4096c42236 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/matha6.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: matha6.mf (math serie A at 6 points) +% last modification: May 16, 2005. + +font_identifier:="matha"; font_size 6pt#; +font_coding_scheme "matha"; + +input mathprmt; +input mathadrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha7.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha7.mf new file mode 100644 index 00000000000..155252b1d5c --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/matha7.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: matha7.mf (math serie A at 7 points) +% last modification: May 16, 2005. + +font_identifier:="matha"; font_size 7pt#; +font_coding_scheme "matha"; + +input mathprmt; +input mathadrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha8.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha8.mf new file mode 100644 index 00000000000..045bb4e47ad --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/matha8.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: matha8.mf (math serie A at 8 points) +% last modification: May 16, 2005. + +font_identifier:="matha"; font_size 8pt#; +font_coding_scheme "matha"; + +input mathprmt; +input mathadrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha9.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha9.mf new file mode 100644 index 00000000000..6726698b995 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/matha9.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: matha9.mf (math serie A at 9 points) +% last modification: May 16, 2005. + +font_identifier:="matha"; font_size 9pt#; +font_coding_scheme "matha"; + +input mathprmt; +input mathadrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathacnt.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathacnt.mf new file mode 100644 index 00000000000..6a524b899d5 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathacnt.mf @@ -0,0 +1,367 @@ +% mathematical symbols by Anthony Phan. +% file: mathacnt.mf (accents) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +def horizontal_rules_list=math_axis, + -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height +enddef; + +% ACCENTS (nullissime) + +diacritics_proofing;% changes extra_endchar for proof mode. +hat_w:=hex"70"; +check_w:=hex"71"; +tilde_w:=hex"72"; +bar_w:=hex"73"; +arrow_w:=hex"74"; +paren_w:=hex"75"; + +hat_ww:=hex"78"; hat_www:=hex"79"; +hat_wwww:=hex"7A"; hat_wwwww:=hex"7B"; +check_ww:=hex"7C"; check_www:=hex"7D"; +check_wwww:=hex"7E"; check_wwwww:=hex"7F"; +tilde_ww:=hex"80"; tilde_www:=hex"81"; +tilde_wwww:=hex"82"; tilde_wwwww:=hex"83"; +bar_ww:=hex"84"; bar_www:=hex"85"; +bar_wwww:=hex"86"; bar_wwwww:=hex"87"; +arrow_ww:=hex"88"; arrow_www:=hex"89"; +arrow_wwww:=hex"8A"; arrow_wwwww:=hex"8B"; +paren_ww:=hex"8C"; paren_www:=hex"8D"; +paren_wwww:=hex"8E"; paren_wwwww:=hex"8F"; + +charlist hat_w: hat_ww: hat_www: hat_wwww: hat_wwwww; +charlist check_w: check_ww: check_www: check_wwww: check_wwwww; +charlist tilde_w: tilde_ww: tilde_www: tilde_wwww: tilde_wwwww; +charlist bar_w: bar_ww: bar_www: bar_wwww: bar_wwwww; +charlist arrow_w: arrow_ww: arrow_www: arrow_wwww: arrow_wwwww; +charlist paren_w: paren_ww: paren_www: paren_wwww: paren_wwwww; + +vardef tmp_program(expr orientation,overshot,appr,coef)= + save a,b,c; + pickup crisp.nib; + b=coef[0.8[vair,stem],stem]; + b'=coef[min(vair,hair),max(vair,hair)]; + if orientation=up: + top y2r=top y3r=h+overshot; + bot y1r=bot y4r=vround 0.5[x_height,h]; + else: + bot y2r=bot y3r=vround 0.5[x_height,h]-overshot; + top y1r=top y4r=h; fi + lft x2r=hround 0.5(w-b); + rt x3r-lft x2r=hround b; + lft x1r=appr; x4r-x3r=x2r-x1r; + x=0.5(b-b')/length(z2r-z1r); + a=if orientation=up: 180+ fi (angle(z2r-z1r)-angle(x,1+-+x)); + pos1(b',a); pos2(b,a); pos3(b,180-a); pos4(b',180-a); + z0=whatever[z1l,z2l]; z0=whatever[z3l,z4l]; + filldraw z1r--z2r--z3r--z4r--z4l--z0--z1l--cycle; + penlabels(0,1,2,3,4) +enddef; + +use_rule1; + +beginchar(hat_accent,7u#+2appr#,min(asc_height#,2x_height#),0); + "Circumflex accent"; + tmp_program(up,0,appr+u,0); +endchar; + +beginchar(hat_w,8u#+2appr#,0.5[asc_height#,body_height#],0); + "Wide circumflex accent 1"; + tmp_program(up,o,appr-0.5u,0.2); +endchar; + +beginchar(hat_ww,16u#+2appr#,body_height#,0); + "Wide circumflex accent 2"; + tmp_program(up,o,appr-0.5u,0.4); +endchar; + +beginchar(hat_www,24u#+2appr#,body_height#,0); + "Wide circumflex accent 3"; + tmp_program(up,o,appr-0.5u,0.6); +endchar; + +beginchar(hat_wwww,32u#+2appr#,body_height#,0); + "Wide circumflex accent 4"; + tmp_program(up,o,appr-0.5u,0.8); +endchar; + +beginchar(hat_wwwww,40u#+2appr#,body_height#,0); + "Wide circumflex accent 5"; + tmp_program(up,o,appr-0.5u,1); +endchar; + +beginchar(check_accent,7u#+2appr#,min(asc_height#,2x_height#),0); + "Check accent"; + tmp_program(down,0,appr-0.5u,0); +endchar; + +beginchar(check_w,8u#+2appr#,0.5[asc_height#,body_height#],0); + "Wide check accent 1"; + tmp_program(down,o,appr-0.5u,0.2); +endchar; + +beginchar(check_ww,16u#+2appr#,body_height#,0); + "Wide check accent 2"; + tmp_program(down,o,appr-0.5u,0.4); +endchar; + +beginchar(check_www,24u#+2appr#,body_height#,0); + "Wide check accent 3"; + tmp_program(down,o,appr-0.5u,0.6); +endchar; + +beginchar(check_wwww,32u#+2appr#,body_height#,0); + "Wide check accent 4"; + tmp_program(down,o,appr-0.5u,0.8); +endchar; + +beginchar(check_wwwww,40u#+2appr#,body_height#,0); + "Wide check accent 5"; + tmp_program(down,o,appr-0.5u,1); +endchar; + +vardef tmp_program(expr height,depth,approach,coef)= + pickup tiny.nib; + save a,b,c; + a=angle(w-2approach,9(height-depth)); + b=angle(w-2approach,-3(height-depth)); + b'=coef[0.5[vair,hair],max(vair,hair)]; + c=coef[0.8[vair,stem],stem]; + pos1(b',a+90); pos9(b',a+90); pos5(c,b+90); + bot y7l=depth-eps; top y3r=height+eps; + y1l=good.y 1/6[y7l,y3r]; y3r-y9r=y1l-y7l; + top y3r-bot y3l=top y7r-bot y7l=vround 0.5[b',c]; + lft x1r=w-rt x9l=approach; + z5=0.5[z1,z9]; + forsuffixes $=r,l: y2$=y3$=y4$; y6$=y7$=y8$; + z2$-z1$=whatever*dir a; z8$-z9$=whatever*dir a; + z4$-z5$=whatever*dir b; z6$-z5$=whatever*dir b; + x3$=0.666[x2$,x4$]; x7$=0.666[x8$,x6$]; + endfor + filldraw stroke z1e..controls .666[z1e,z2e] and .666[z3e,z2e] + ..z3e..controls .666[z3e,z4e] and .666[z5e,z4e] + ..z5e..controls .666[z5e,z6e] and .666[z7e,z6e] + ..z7e..controls .666[z7e,z8e] and .666[z9e,z8e]..z9e; +%penlabels(1,2,3,4,5,6,7,8,9); +enddef; + +beginchar(tilde_accent,7u#+2appr#,min(asc_height#,2x_height#),0); + "Tilde accent"; + tmp_program(h,vround 0.5[x_height,asc_height],appr,0); +endchar; + +beginchar(tilde_w,8u#+2appr#,0.5[asc_height#,body_height#],0); + "Wide tilde accent 1"; + tmp_program(h,vround 0.5[x_height,asc_height],appr-0.5u,0.2); +endchar; + +beginchar(tilde_ww,16u#+2appr#,body_height#,0); + "Wide tilde accent 2"; + tmp_program(h,vround 0.5[x_height,asc_height],appr-0.5u,0.4); +endchar; + +beginchar(tilde_www,24u#+2appr#,body_height#,0); + "Wide tilde accent 3"; + tmp_program(h,vround 0.5[x_height,asc_height],appr-0.5u,0.6); +endchar; + +beginchar(tilde_wwww,32u#+2appr#,body_height#,0); + "Wide tilde accent 4"; + tmp_program(h,vround 0.5[x_height,asc_height],appr-0.5u,0.8); +endchar; + +beginchar(tilde_wwwww,40u#+2appr#,body_height#,0); + "Wide tilde accent 5"; + tmp_program(h,vround 0.5[x_height,asc_height],appr-0.5u,1); +endchar; + +% changes august 23, 2004. + +beginchar(bar_accent,7u#+2appr#, + %x_height#+body_height#-cap_height#,0); + 0.5[x_height#,asc_height#],0); + "Bar accent"; + pickup crisp.nib; + a:=vround 0.0[min(0.2[vair,stem],rth0),rth1]; + pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.25u; + top y1r=top y2r=vround(h+0.5a); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(bar_w,8u#+2appr#, + %x_height#+body_height#-cap_height#,0); + 0.5[x_height#,body_height#],0); + "Wide bar accent 1"; + pickup crisp.nib; + a:=vround 0.0[min(0.2[vair,stem],rth0),rth1]; + pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.0u; + top y1r=top y2r=vround(h+0.5a); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(bar_ww,16u#+2appr#, + %x_height#+body_height#-cap_height#,0); + 0.5[x_height#,body_height#],0); + "Wide bar accent 2"; + pickup crisp.nib; + a:=vround 0.0[min(0.2[vair,stem],rth0),rth1]; + pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.0u; + top y1r=top y2r=vround(h+0.5a); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(bar_www,24u#+2appr#, + %x_height#+body_height#-cap_height#,0); + 0.5[x_height#,body_height#],0); + "Wide bar accent 3"; + pickup crisp.nib; + a:=vround 0.0[min(0.2[vair,stem],rth0),rth1]; + pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.0u; + top y1r=top y2r=vround(h+0.5a); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(bar_wwww,32u#+2appr#, + %x_height#+body_height#-cap_height#,0); + 0.5[x_height#,body_height#],0); + "Wide bar accent 4"; + pickup crisp.nib; + a:=vround 0.0[min(0.2[vair,stem],rth0),rth1]; + pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.0u; + top y1r=top y2r=vround(h+0.5a); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(bar_wwwww,40u#+2appr#, + %x_height#+body_height#-cap_height#,0); + 0.5[x_height#,body_height#],0); + "Wide bar accent 5"; + pickup crisp.nib; + a:=vround 0.0[min(0.2[vair,stem],rth0),rth1]; + pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.0u; + top y1r=top y2r=vround(h+0.5a); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +arrow_stress := 0.52; +arrow_tense1 := 0.75; +arrow_tense2 := 0.875; + +beginchar(arrow_accent,7u#+2appr#,min(asc_height#,2x_height#),0); + "Arrow accent"; + pickup tiny.nib; + arrow_width := 2ceiling 0.3(h-x_height)+rth; + arrow_height := hround 3.25u; + arrow_breadth := rth; + y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth; + lft x2=w-rt x3=appr-hround 0.5u; + arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(arrow_w,8u#+2appr#,0.5[asc_height#,body_height#],0); + "Wide arrow accent 1"; + pickup tiny.nib; + arrow_width := 2ceiling 0.3(h-x_height)+rth; + arrow_height := hround 3.3u; + arrow_breadth := rth; + y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth; + lft x2=w-rt x3=appr-hround 0.5u; + arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(arrow_ww,16u#+2appr#,body_height#,0); + "Wide arrow accent 2"; + pickup tiny.nib; + arrow_width := 2ceiling 0.3(h-x_height)+rth; + arrow_height := hround 3.35u; + arrow_breadth := rth; + y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth; + lft x2=w-rt x3=appr-hround 0.5u; + arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(arrow_www,24u#+2appr#,body_height#,0); + "Wide arrow accent 3"; + pickup tiny.nib; + arrow_width := 2ceiling 0.3(h-x_height)+rth; + arrow_height := hround 3.4u; + arrow_breadth := rth; + y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth; + lft x2=w-rt x3=appr-hround 0.5u; + arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(arrow_wwww,32u#+2appr#,body_height#,0); + "Wide arrow accent 4"; + pickup tiny.nib; + arrow_width := 2ceiling 0.3(h-x_height)+rth; + arrow_height := hround 3.45u; + arrow_breadth := rth; + y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth; + lft x2=w-rt x3=appr-hround 0.5u; + arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(arrow_wwwww,40u#+2appr#,body_height#,0); + "Wide arrow accent 5"; + pickup tiny.nib; + arrow_width := 2ceiling 0.3(h-x_height)+rth; + arrow_height := hround 3.5u; + arrow_breadth := rth; + y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth; + lft x2=w-rt x3=appr-hround 0.5u; + arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +def tmp_program(expr orientation,overshot,approach,coef)= + pickup tiny.nib; + a:=vround 0.5[vair,stem]; pos2(a,90); + y2+0.5a=vround(h+0.5a+overshot); y1r=y3r=good.y 1/3[x_height,h]; + lft x1r=w-rt x3r=hround approach; x2=0.5[x1r,x3r]; + z1'-z1r=(z2r-z1r) xscaled 1/3; + z3'-z3r=(z2r-z3r) xscaled 1/3; + pos1(hair,angle(z1'-z1r)+90); + pos3(hair,angle(z3'-z3r)-90); + filldraw stroke z1e{z1'-z1r}...z2e{right}...z3e{z3r-z3'}; + penlabels(1,2,3); labels(1',3'); +enddef; + +beginchar(paren_accent,7u#+2appr#,0.5[x_height#,asc_height#],0); + "Parenthesis accent"; + tmp_program(up,0,appr+0.25u,0); +endchar; + +beginchar(paren_w,8u#+2appr#,0.5[x_height#,body_height#],0); + "Wide parenthesis accent 1"; + tmp_program(up,o,appr,0.2); +endchar; + +beginchar(paren_ww,16u#+2appr#,0.5[x_height#,body_height#],0); + "Wide parenthesis accent 2"; + tmp_program(up,o,appr-0.25u,0.4); +endchar; + +beginchar(paren_www,24u#+2appr#,0.5[x_height#,body_height#],0); + "Wide parenthesis accent 3"; + tmp_program(up,o,appr-0.5u,0.6); +endchar; + +beginchar(paren_wwww,32u#+2appr#,0.5[x_height#,body_height#],0); + "Wide parenthesis accent 4"; + tmp_program(up,o,appr-0.5u,0.8); +endchar; + +beginchar(paren_wwwww,40u#+2appr#,0.5[x_height#,body_height#],0); + "Wide parenthesis accent 5"; + tmp_program(up,o,appr-0.5u,1); +endchar; + +standard_proofing;% restore extra_endchar. + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathadrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathadrv.mf new file mode 100644 index 00000000000..d196c6f55bc --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathadrv.mf @@ -0,0 +1,280 @@ +% mathematical symbols by Anthony Phan. +% file: mathadrv.mf (driver file for matha serie) +% last modification: May 16, 2005. + +mode_setup; + +math_setup; + +% Activate to allow characters with undefined code. +% (for proof mode compilation) +% let iff=always_iff; + +% BINARY OPERATORS, RELATIONS + +input mathasym; + +% RELATIONS + +% MISCELLANEOUS + +negation_sign := hex"20";% we're not making any text font +dominated := hex"21"; +dominating := hex"22"; +hash_sign := hex"23"; + +not_sign := hex"7F"; + +%negation_sign := hex"26"; +%reverse_negation_sign := hex"27"; + +vdash_sign := hex"24"; +dashv_sign := hex"25"; +vdash_not := hex"26"; +dashv_not := hex"27"; +vDash_sign := hex"28"; +Dashv_sign := hex"29"; +vDash_not := hex"2A"; +Dashv_not := hex"2B"; +Vdash_sign := hex"2C"; +dashV_sign := hex"2D"; +Vdash_not := hex"2E"; +dashV_not := hex"2F"; +% hex"30"...hex"35", numerals... + +degree_sign := hex"30"; +prime_sign := hex"31"; +second_sign := hex"32"; +third_sign := hex"33"; +fourth_sign := hex"34"; + +ligtable prime_sign : prime_sign =: second_sign; +ligtable second_sign : prime_sign =: third_sign; +ligtable third_sign : prime_sign =: fourth_sign; + +musical_flat_sign := hex"35"; +musical_natural_sign := hex"36"; +musical_sharp_sign := hex"37"; + +% mathfine.mf + +Infinity := hex"38"; +proportionnal_to := hex"39"; +dagger := hex"3A"; +double_dagger := hex"3B"; + +% mathbigs.mf + +small_summation_sign := hex"3C"; +small_product_sign := hex"3D"; +small_coproduct_sign := hex"3E"; +radical_sign := hex"3F"; + +% upper_asterisk := hex"3A"; lower_asterisk := hex"3B"; +% triple_asterisk := hex"3C"; +% colon_sign := hex"5B"; + +Dominated := hex"CE"; +Dominating := hex"CF"; + +% LETTER LIKE SYMBOLS + +% mathltlk.mf + +for_all := hex"40"; +complement := hex"41"; +partial := hex"42"; +partial_slash := hex"43"; +there_exists := hex"44"; +there_not_exists := hex"45"; +F_inverse := hex"46"; +G_inverse := hex"47"; +empty_set := hex"48"; +diameter_sign := hex"49"; +top_sign := hex"4A"; +bot_sign := hex"4B"; +not_top_sign := hex"4C"; +not_bot_sign := hex"4D"; +wedge_curly := hex"4E"; +vee_curly := hex"4F"; +%%%%%%%% Q_inverse := hex"4A"; +%%%%%%%% Bourbaki_Z := hex"4F"; + +belong_to := hex"50"; +not_belong_to := hex"52"; +var_not_belong_to := hex"54"; +belong_to_bar := hex"56"; +rev_belong_to := hex"51"; +not_rev_belong_to := hex"53"; +var_not_rev_belong_to := hex"55"; +rev_belong_to_bar := hex"57"; + +cap_sign := hex"58"; +cup_sign := hex"59"; +cup_plus := hex"5A"; +sqcap_sign := hex"5B"; +sqcup_sign := hex"5C"; +sqcup_plus := hex"5D"; +wedge_sign := hex"5E"; +vee_sign := hex"5F"; + +% DELIMITERS + +paren_left := hex"70"; +paren_right := hex"71"; +bracket_left := hex"72"; +bracket_right := hex"73"; +brace_left := hex"74"; +brace_right := hex"75"; +bbbracket_left := hex"76"; +bbbracket_right := hex"77"; +angle_left := hex"78"; +angle_right := hex"79"; +backslash := hex"7A"; +slash := hex"7B"; +vert_sign := hex"7C"; +vvert_sign := hex"7D"; +vvvert_sign := hex"7E"; + +% TRIANGLES AS RELATIONS + +triangle_left := hex"98"; triangle_right := hex"99"; +not_triangle_left := hex"9A"; not_triangle_right := hex"9B"; +triangle_left_eq := hex"9C"; triangle_right_eq := hex"9D"; +not_triangle_left_eq := hex"9E"; not_triangle_right_eq := hex"9F"; + +% ARROWS and HARPOONS + +arrow_left := hex"D0"; +arrow_right := hex"D1"; +arrow_up := hex"D2"; +arrow_down := hex"D3"; +arrow_northwest := hex"D4"; +arrow_northeast := hex"D5"; +arrow_southwest := hex"D6"; +arrow_southeast := hex"D7"; +arrow_left_right := hex"D8"; +arrow_up_down := hex"D9"; +arrow_left_not := hex"DA"; +arrow_right_not := hex"DB"; +arrow_left_right_not := hex"DC"; + +relbar_char := hex"DD"; +maps_to_char := hex"DE"; +maps_from_char := hex"DF"; + +harpoon_left_up := hex"E0"; +harpoon_right_up := hex"E1"; +harpoon_left_down := hex"E2"; +harpoon_right_down := hex"E3"; +harpoon_up_left := hex"E4"; +harpoon_down_left := hex"E5"; +harpoon_up_right := hex"E6"; +harpoon_down_right := hex"E7"; +harpoons_left_right := hex"E8"; +harpoons_right_left := hex"E9"; +harpoons_up_down := hex"EA"; +harpoons_down_up := hex"EB"; + +double_arrow_left := hex"F0"; +double_arrow_right := hex"F1"; +double_arrow_up := hex"F2"; +double_arrow_down := hex"F3"; +double_arrow_left_right := hex"F4"; +double_arrow_up_down := hex"F5"; +double_arrow_left_not := hex"F6"; +double_arrow_right_not := hex"F7"; +double_arrow_left_right_not := hex"F8"; +Relbar_char := hex"F9"; +Maps_to_char := hex"FA"; +Maps_from_char := hex"FB"; + +% let the show begin : + +input mathltlk; +input mathfine; +input mathbigs; +input mathsmsy; +input mathsymb; +input matharrw; +input mathbdel; + +main_name_string := "subset"; +t := hex"80"; +forsuffixes $=, _not, _eq, _not_eq, _eq_not, + _eq_varnot, _eqq, _not_eqq, _eqq_not, _eqq_varnot, + _double, _double_not: + main_name_with($) := t; t := t+2; endfor; +input mathsubs; + +main_name_string := "supset"; +t := hex"81"; +forsuffixes $=, _not, _eq, _not_eq, _eq_not, + _eq_varnot, _eqq, _not_eqq, _eqq_not, _eqq_varnot, + _double, _double_not: + main_name_with($) := t; t := t+2; endfor; +input mathsubs; + +main_name_string := "less"; +t := hex"A0"; +forsuffixes $=, _not, _slant, _not_slant, + _eq, _not_eq, _eq_not, %_eqvarnot, + _eqq, _not_eqq, _eqq_not, _eqq_varnot, + _upperslant, _not_upperslant, + _opposite, _eq_opposite, _eqq_opposite, + _sim, _not_sim, _sim_not, _approx, _not_approx, _approx_not, _dot: + main_name_with($) := t; t := t+2; endfor; +input mathineq; + +main_name_string := "greater"; +t := hex"A1"; +forsuffixes $=, _not, _slant, _not_slant, + _eq, _not_eq, _eq_not, %_eq_varnot, + _eqq, _not_eqq, _eqq_not, _eqq_varnot, + _upperslant, _not_upperslant, + _opposite, _eq_opposite, _eqq_opposite, + _sim, _not_sim, _sim_not, _approx, _not_approx, _approx_not, _dot: + main_name_with($) := t; t := t+2; endfor; +input mathineq; + +main_name_string := "mcircle";% ``m'' stands for medium. +t := hex"60"; +forsuffixes $=_plus, _minus, _times, _division, + _dot, _circle, _asterisk, _co_asterisk, + _left, _right, _top, _bot, + _sign, _slash, _backslash, _triangle_up: + main_name_with($) := t; t := t+1; endfor; +input mathmbcb; + +% see also: +% _peace_and_love, _ying_yang, +% _truc, _curt, _full_circle, _five_star, _six_star, +% _triangle_down, _triangle_left, _triangle_right, +% _top_dot_minus, _bot_dot_minus, _horiz, _vert, _cross, _across, +% _wedge, _vee, +% _black_left, _black_right, _black_top, _black_bot, +% _black_northwest, _black_northeast, _black_southwest, _black_southeast: + + +% parameters for TFM files. + +font_slant=0; +font_x_height=x_height#; +%font_normal_stretch=3u#; +%font_normal_shrink=2u#; +font_quad=18u#+4letter_fit#; +font_extra_space=2u#; +font_normal_space=6u#+2letter_fit#; + +end. + + + + + + + + + + + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matharrw.mf b/Master/texmf-dist/fonts/source/public/mathabx/matharrw.mf new file mode 100644 index 00000000000..9486d72e1b0 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/matharrw.mf @@ -0,0 +1,1367 @@ +% mathematical symbols by Anthony Phan. +% file: matharrw.mf (arrow kit) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +use_rule1; + +%turningcheck:=0; + +arrow_head_fitting:=false; +arrow_width := 2ceiling 0.84spread1+rth; +arrow_height# := 4.2u#; +arrow_height := round 4.2u; +arrow_breadth := rth; +arrow_stress := 0.52;%0.65; +arrow_tense1 := 0.75; +arrow_tense2 := 0.875; + +% Funny thing: using def for the next definition would +% lead to strange things with transforms. The path must +% be a whole thing (grouping). One could also use +% parentheses. + +vardef straight_path(expr dir,overshot)= + save x_; x_=hround(0.5w+0.5rth)-0.5rth; + if dir=up:(x_,-d)..(x_,h+overshot-pen_top) + elseif dir=down:(x_,h)..(x_,-d-overshot-pen_bot) + elseif dir=left:(w-appr,math_axis)..(appr-overshot-pen_lft,math_axis) + else:(appr,math_axis)..(w-appr+overshot-pen_rt,math_axis) fi +enddef; + +% ARROWS + +beginchar(arrow_left, + 16u#+2appr#,v_center(spread1#+rth#)); + "Left arrow"; + pickup tiny.nib; + arrow_head1(straight_path(left,0),both); + rt x2=w-appr; y2=y1; pos2(rth,90); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(arrow_right, + 16u#+2appr#,v_center(spread1#+rth#)); + "Right arrow"; + pickup tiny.nib; + arrow_head1(straight_path(right,0),both); + lft x2=appr; y2=y1; pos2(rth,-90); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(arrow_left_right, + 16u#+2appr#,v_center(spread1#+rth#)); + "Left-right arrow"; + pickup tiny.nib; + arrow_head1(straight_path(left,0),both); + arrow_head2(straight_path(right,0),both); + filldraw z1l--z2r--z2l--z1r--cycle; + penlabels(1,2); +endchar; + +beginchar(arrow_left_not, + 16u#+2appr#,v_center(spread1#+rth#)); + "Negated left arrow"; + pickup tiny.nib; + arrow_head1(straight_path(left,0),both); + rt x2=w-appr; y2=y1; pos2(rth,90); + filldraw stroke z1e..z2e; + v_adjust(3r,4l,y1,arrow_width);% to be checked + lft x4l=w-rt x3r=appr+hround 6u; + adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrow_right_not, + 16u#+2appr#,v_center(spread1#+rth#)); + "Negated right arrow"; + pickup tiny.nib; + arrow_head1(straight_path(right,0),both); + lft x2=appr; y2=y1; pos2(rth,-90); + filldraw stroke z1e..z2e; + v_adjust(3r,4l,y1,arrow_width);% to be checked + lft x4l=w-rt x3r=appr+hround 6u; + adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrow_left_right_not, + 16u#+2appr#,v_center(spread1#+rth#)); + "Negated left-right arrow"; + pickup tiny.nib; + arrow_head1(straight_path(left,0),both); + arrow_head2(straight_path(right,0),both); + filldraw z1l--z2r--z2l--z1r--cycle; + v_adjust(3r,4l,y1,arrow_width);% to be checked + lft x4l=w-rt x3r=appr+hround 6u; + adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrow_up, + 7u#+2appr#,asc_height#,asc_depth#); + "Upward arrow"; + pickup tiny.nib; + arrow_head1(straight_path(up,0),both);% corrected 2002/07/29 + bot y2=-d; x2=x1; pos2(rth,0); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(arrow_down, + 7u#+2appr#,asc_height#,asc_depth#); + "Downward arrow"; + pickup tiny.nib; + arrow_head1(straight_path(down,0),both);% corrected 2002/07/29 + top y2=h; x2=x1; pos2(rth,180); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(arrow_up_down, + 7u#+2appr#,asc_height#,asc_depth#); + "Upward-Downward arrow"; + pickup tiny.nib; + arrow_head1(straight_path(up,0),both);% corrected 2002/07/29 + arrow_head2(straight_path(down,0),both);% corrected 2002/07/29 + filldraw z1l--z2r--z2l--z1r--cycle;; + penlabels(1,2); +endchar; + +beginchar(arrow_northwest, + 16u#+2appr#,asc_height#,asc_depth#); + "Northwest arrow"; + pickup rule.nib; bot y2=-d; rt x2=w-appr; + pickup tiny.nib; top y3=h; lft x3=appr; + arrow_head1(z2..z3,both); + pickup rule.nib; draw z1..z2; + penlabels(1); labels(2,3); +endchar; + +beginchar(arrow_northeast, + 16u#+2appr#,asc_height#,asc_depth#); + "Northeast arrow"; + pickup rule.nib; bot y2=-d; lft x2=appr; + pickup tiny.nib; top y3=h; rt x3=w-appr; + arrow_head1(z2..z3,both); + pickup rule.nib; draw z1..z2; + penlabels(1); labels(2,3); +endchar; + +beginchar(arrow_southwest, + 16u#+2appr#,asc_height#,asc_depth#); + "Southwest arrow"; + pickup rule.nib; top y2=h; rt x2=w-appr; + pickup tiny.nib; bot y3=-d; lft x3=appr; + arrow_head1(z2..z3,both); + pickup rule.nib; draw z1..z2; + penlabels(1); labels(2,3); +endchar; + +beginchar(arrow_southeast, + 16u#+2appr#,asc_height#,asc_depth#); + "Southeast arrow"; + pickup rule.nib; top y2=h; lft x2=appr; + pickup tiny.nib; bot y3=-d; rt x3=w-appr; + arrow_head1(z2..z3,both); + pickup rule.nib; draw z1..z2; + penlabels(1); labels(2,3); +endchar; + +beginchar(arrows_left_left, + 16u#+2appr#,v_center(spread2#+spread1#+rth#)); + "Left-left arrows"; + pickup tiny.nib; + arrow_head1(straight_path(left,0) shifted (0,0.5spread2),both); + rt x2=w-appr; y2=y1; pos2(rth,90); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(left,0) shifted (0,-0.5spread2),both); + rt x4=w-appr; y4=y3; pos4(rth,90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrows_right_right, + 16u#+2appr#,v_center(spread2#+spread1#+rth#)); + "Right_right arrows"; + pickup tiny.nib; + arrow_head1(straight_path(right,0) shifted (0,0.5spread2),both); + lft x2=appr; y2=y1; pos2(rth,-90); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(right,0) shifted (0,-0.5spread2),both); + lft x4=appr; y4=y3; pos4(rth,-90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrows_left_right, + 16u#+2appr#,v_center(spread2#+spread1#+rth#)); + "Left-right arrows"; + pickup tiny.nib; + arrow_head1(straight_path(left,0) shifted (0,0.5spread2),both); + rt x2=w-appr; y2=y1; pos2(rth,90); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(right,0) shifted (0,-0.5spread2),both); + lft x4=appr; y4=y3; pos4(rth,-90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrows_right_left, + 16u#+2appr#,v_center(spread2#+spread1#+rth#)); + "Right-left arrows"; + pickup tiny.nib; + arrow_head1(straight_path(right,0) shifted (0,0.5spread2),both); + lft x2=appr; y2=y1; pos2(rth,-90); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(left,0) shifted (0,-0.5spread2),both); + rt x4=w-appr; y4=y3; pos4(rth,90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrows_up_up, + 7u#+spread2#+2appr#,asc_height#,asc_depth#); + "Upward arrows"; + pickup tiny.nib; + arrow_head1(straight_path(up,0)% corrected 2002/07/29 + shifted (-0.5spread2,0),both); + bot y2=-d; x2=x1; pos2(rth,0); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(up,0)% corrected 2002/07/29 + shifted (0.5spread2,0),both); + bot y4=-d; x4=x3; pos4(rth,0); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrows_down_down, + 7u#+spread2#+2appr#,asc_height#,asc_depth#); + "Downward arrows"; + pickup tiny.nib; + arrow_head1(straight_path(down,0)% corrected 2002/07/29 + shifted (-0.5spread2,0),both); + top y2=h; x2=x1; pos2(rth,180); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(down,0)% corrected 2002/07/29 + shifted (0.5spread2,0),both); + top y4=h; x4=x3; pos4(rth,180); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrows_up_down, + 7u#+spread2#+2appr#,asc_height#,asc_depth#); + "Upward_downward arrows"; + pickup tiny.nib; + arrow_head1(straight_path(up,0)% corrected 2002/07/29 + shifted (-0.5spread2,0),both); + bot y2=-d; x2=x1; pos2(rth,0); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(down,0)% corrected 2002/07/29 + shifted (0.5spread2,0),both); + top y4=h; x4=x3; pos4(rth,180); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrows_down_up, + 7u#+spread2#+2appr#,asc_height#,asc_depth#); + "Downward-upward arrows"; + pickup tiny.nib; + arrow_head1(straight_path(down,0)% corrected 2002/07/29 + shifted (-0.5spread2,0),both); + top y2=h; x2=x1; pos2(rth,180); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(up,0)% corrected 2002/07/29 + shifted (0.5spread2,0),both); + bot y4=-d; x4=x3; pos4(rth,0); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +% STRANGE ARROWS + +beginchar(arrow_shift_up_left, + arithmetic_bounds); + "Up_left shift arrow"; + pickup tiny.nib; + pos3(rth,0); rt x3r=w-Appr; bot y3=-d-o; + arrow_head1(straight_path(left,0) shifted (0,vround 3u),both); + forsuffixes $=,r,l: y2$=y1$; x2$=x3$; endfor + filldraw stroke z1e--z2e--z3e; + penlabels(1,2,3); +endchar; + +beginchar(arrow_shift_up_right, + arithmetic_bounds); + "Up_right shift arrow"; + pickup tiny.nib; + pos3(rth,0); lft x3l=Appr; bot y3=-d-o; + arrow_head1(straight_path(right,0) shifted (0,vround 3u),both); + forsuffixes $=,r,l: y2$=y1$; x2$=x3$; endfor + filldraw stroke z1e--z2e--z3e; + penlabels(1,2,3); +endchar; + +beginchar(arrow_shift_down_left, + arithmetic_bounds); + "Down-left shift arrow"; + pickup tiny.nib; + pos3(rth,180); rt x3l=w-Appr; top y3=h+o; + arrow_head1(straight_path(left,0) shifted (0,-vround 3u),both); + forsuffixes $=,r,l: y2$=y1$; x2$=x3$; endfor + filldraw stroke z1e--z2e--z3e; + penlabels(1,2,3); +endchar; + +beginchar(arrow_shift_down_right, + arithmetic_bounds); + "Down-right shift arrow"; + pickup tiny.nib; + pos3(rth,180); lft x3r=Appr; top y3=h+o; + arrow_head1(straight_path(right,0) shifted (0,-vround 3u),both); + forsuffixes $=,r,l: y2$=y1$; x2$=x3$; endfor + filldraw stroke z1e--z2e--z3e; + penlabels(1,2,3); +endchar; + +beginchar(arrow_squig_left, + 6*3.5u#+arrow_height#+2appr#,v_center(spread1#+rth#)); + "Left squig-arrow"; + pickup tiny.nib; + arrow_head1(straight_path(left,0),both); + pickup rule.nib; + y2=y1; + y3=y5=y7=math_axis+0.5spread1; + y4=y6=y8=math_axis-0.5spread1; + x8=w-appr; x8-x2=6*3.5u; + x2-x3=x3-x4=x4-x5=x5-x6=x6-x7=x7-x8; + autorounded; + draw z1---z2...0.5[z3,z2]{(z3-z2) yscaled 2}... + z3{right}...0.5[z4,z3]{(z4-z3) yscaled 3}... + z4{right}...0.5[z5,z4]{(z5-z4) yscaled 3}... + z5{right}...0.5[z6,z5]{(z6-z5) yscaled 3}... + z6{right}...0.5[z7,z6]{(z7-z6) yscaled 3}... + z7{right}...0.5[z8,z7]{(z8-z7) yscaled 3}... + z8{right}; + cullit; unfill (x8+1,top y8+1)--(x8+1,bot y8-1) + --(rt x8+1,bot y8-1)--(rt x8+1,top y8+1)--cycle; + labels(2,3,4,5,6,7,8); penlabels(1); +endchar; + +beginchar(arrow_squig_right, + 6*3.5u#+arrow_height#+2appr#,v_center(spread1#+rth#)); + "Right squig-arrow"; + pickup tiny.nib; + arrow_head1(straight_path(right,0),both); + pickup rule.nib; + y2=y1; + y3=y5=y7=math_axis-0.5spread1; + y4=y6=y8=math_axis+0.5spread1; + x8=appr; x2-x8=6*3.5u; + x2-x3=x3-x4=x4-x5=x5-x6=x6-x7=x7-x8; + autorounded; + draw z1---z2...0.5[z3,z2]{(z3-z2) yscaled 2}... + z3{left}...0.5[z4,z3]{(z4-z3) yscaled 3}... + z4{left}...0.5[z5,z4]{(z5-z4) yscaled 3}... + z5{left}...0.5[z6,z5]{(z6-z5) yscaled 3}... + z6{left}...0.5[z7,z6]{(z7-z6) yscaled 3}... + z7{left}...0.5[z8,z7]{(z8-z7) yscaled 3}... + z8{left}; + cullit; unfill (x8-1,top y8+1)--(x8-1,bot y8-1) + --(lft x8-1,bot y8-1)--(lft x8-1,top y8+1)--cycle; + labels(2,3,4,5,6,7,8); penlabels(1); +endchar; + +beginchar(arrow_squig_left_right, + 7*3.5u#+2*arrow_height#+2appr#,v_center(spread1#+rth#)); + "Left right squig-arrow"; + pickup tiny.nib; + arrow_head1(straight_path(left,0),both); + arrow_head10(straight_path(right,0),both); + pickup rule.nib; + y2=y1; y9=y10; + y3=y5=y7=math_axis+0.5spread1; + y4=y6=y8=math_axis-0.5spread1; + x9-x2=7*3.5u; 0.5[x2,x9]=0.5w; + x2-x3=x3-x4=x4-x5=x5-x6=x6-x7=x7-x8=x8-x9; + autorounded; + draw z1---z2...0.5[z3,z2]{(z3-z2) yscaled 3}... + z3{right}...0.5[z4,z3]{(z4-z3) yscaled 3}... + z4{right}...0.5[z5,z4]{(z5-z4) yscaled 3}... + z5{right}...0.5[z6,z5]{(z6-z5) yscaled 3}... + z6{right}...0.5[z7,z6]{(z7-z6) yscaled 3}... + z7{right}...0.5[z8,z7]{(z8-z7) yscaled 3}... + z8{right}...0.5[z9,z8]{(z9-z8) yscaled 3}... + z9---z10; + labels(2,3,4,5,6); penlabels(1,7); +endchar; + +beginchar(arrow_curve_top_left, + 16u#+2appr#,v_center(spread1#+rth#)); + "Top-left curved arrow"; + pickup tiny.nib; + bot y1=bot y3=-d-eps; y2+0.5rth=h+o; + rt x1=w-appr; x2=0.5w; lft x3=appr; + z0=(z2-z1) yscaled 3; + tmp_path:=z1{z0}...z2{left}...z3{(z3-z2) yscaled 3}; + arrow_head4(tmp_path,both); + pos1(rth,angle z0-90); pos2(rth,90); + filldraw stroke z1e{z0}...z2e{left} + ...z4e{direction arrow_time of tmp_path}; + penlabels(1,2,3,4); +endchar; + +beginchar(arrow_curve_top_right, + 16u#+2appr#,v_center(spread1#+rth#)); + "Top-right curved arrow"; + pickup tiny.nib; + bot y1=bot y3=-d-eps; y2+0.5rth=h+o; + lft x1=appr; x2=0.5w; rt x3=w-appr; + z0=(z2-z1) yscaled 3; + tmp_path:=z1{z0}...z2{right}...z3{(z3-z2) yscaled 3}; + arrow_head4(tmp_path,both); + pos1(rth,angle z0-90); pos2(rth,-90); + filldraw stroke z1e{z0}...z2e{right} + ...z4e{direction arrow_time of tmp_path}; + penlabels(1,2,3,4); +endchar; + +beginchar(arrow_curve_top_left_right, + 16u#+2appr#,v_center(spread1#+rth#)); + "Top-left-right curved arrow"; + pickup tiny.nib; + bot y1=bot y3=-d-eps; y2+0.5rth=h+o; + rt x1=w-appr; x2=0.5w; lft x3=appr; + tmp_path:=z1{(z2-z1) yscaled 3}...z2{left}...z3{(z3-z2) yscaled 3}; + arrow_head0(reverse tmp_path,both); t:=2-arrow_time; + arrow_head4(tmp_path,both); + pickup rule.nib; + draw subpath (t,arrow_time) of tmp_path; + labels(1,2,3); penlabels(0,4); +endchar; + +beginchar(arrow_curve_bot_left, + 16u#+2appr#,v_center(spread1#+rth#)); + "Bot-left curved arrow"; + pickup tiny.nib; + top y1=top y3=h+eps; y2-0.5rth=-d-o; + rt x1=w-appr; x2=0.5w; lft x3=appr; + z0=(z2-z1) yscaled 3; + tmp_path:=z1{z0}...z2{left}...z3{(z3-z2) yscaled 3}; + arrow_head4(tmp_path,both); + pos1(rth,angle z0-90); pos2(rth,90); + filldraw stroke z1e{z0}...z2e{left} + ...z4e{direction arrow_time of tmp_path}; + penlabels(1,2,3,4); +endchar; + +beginchar(arrow_curve_bot_right, + 16u#+2appr#,v_center(spread1#+rth#)); + "Bot-right curved arrow"; + pickup tiny.nib; + top y1=top y3=h+eps; y2-0.5rth=-d-o; + lft x1=appr; x2=0.5w; rt x3=w-appr; + z0=(z2-z1) yscaled 3; + tmp_path:=z1{z0}...z2{right}...z3{(z3-z2) yscaled 3}; + arrow_head4(tmp_path,both); + pos1(rth,angle z0-90); pos2(rth,-90); + filldraw stroke z1e{z0}...z2e{right} + ...z4e{direction arrow_time of tmp_path}; + penlabels(1,2,3,4); +endchar; + +beginchar(arrow_curve_bot_left_right, + 16u#+2appr#,v_center(spread1#+rth#)); + "Bot-left-right curved arrow"; + pickup tiny.nib; + top y1=top y3=h+eps; y2-0.5rth=-d-o; + rt x1=w-appr; x2=0.5w; lft x3=appr; + tmp_path:=z1{(z2-z1) yscaled 3}...z2{left}...z3{(z3-z2) yscaled 3}; + arrow_head0(reverse tmp_path,both); t:=2-arrow_time; + arrow_head4(tmp_path,both); + pickup rule.nib; + draw subpath (t,arrow_time) of tmp_path; + labels(1,2,3); penlabels(0,4); +endchar; + +beginchar(arrow_loop_up_left, + 16u#+2appr#,v_center(12u#)); + "Up-left loop-arrow"; + pickup tiny.nib; + arrow_head1(straight_path(left,0),both); + lft x8l=w-appr-hround 6u; bot y8=-d; + pos7(rth,180); pos8(rth,180); + y1=y2=y3=y7; x2=x6=x7=x8; + filldraw stroke z8e..z7e; + pickup rule.nib; autorounded; + top y5=h; rt x4=w-appr; + y4=y6=0.5[y3,y5]; x3=x5=0.5[x4,x6]; + draw z1..z2..z3 right_to_up z4 + up_to_left z5 left_to_down z6..z7; + labels(1,2,3,4,5,6); penlabels(7,8); +endchar; + +beginchar(arrow_loop_up_right, + 16u#+2appr#,v_center(12u#)); + "Up-right loop-arrow"; + pickup tiny.nib; + arrow_head1(straight_path(right,0),both); + rt x8r=appr+hround 6u; bot y8=-d; + pos7(rth,180); pos8(rth,180); + y1=y2=y3=y7; x2=x6=x7=x8; + filldraw stroke z8e..z7e; + pickup rule.nib; autorounded; + top y5=h; lft x4=appr; + y4=y6=0.5[y3,y5]; x3=x5=0.5[x4,x6]; + draw z1..z2..z3 left_to_up z4 + up_to_right z5 right_to_down z6..z7; + labels(1,2,3,4,5,6); penlabels(7,8); +endchar; + +beginchar(arrow_loop_down_left, + 16u#+2appr#,v_center(12u#)); + "Down-left loop-arrow"; + pickup tiny.nib; + arrow_head1(straight_path(left,0),both); + lft x8r=w-appr-hround 6u; top y8=h; + pos7(rth,0); pos8(rth,0); + y1=y2=y3=y7; x2=x6=x7=x8; + filldraw stroke z8e..z7e; + pickup rule.nib; autorounded; + bot y5=-d; rt x4=w-appr; + y4=y6=0.5[y3,y5]; x3=x5=0.5[x4,x6]; + draw z1..z2..z3 right_to_down z4 + down_to_left z5 left_to_up z6..z7; + labels(1,2,3,4,5,6); penlabels(7,8); +endchar; + +beginchar(arrow_loop_down_right, + 16u#+2appr#,v_center(12u#)); + "Down-right loop-arrow"; + pickup tiny.nib; + arrow_head1(straight_path(right,0),both); + rt x8l=appr+hround 6u; top y8=h; + pos7(rth,0); pos8(rth,0); + y1=y2=y3=y7; x2=x6=x7=x8; + filldraw stroke z8e..z7e; + pickup rule.nib; autorounded; + bot y5=-d; lft x4=appr; + y4=y6=0.5[y3,y5]; x3=x5=0.5[x4,x6]; + draw z1..z2..z3 left_to_down z4 + down_to_right z5 right_to_up z6..z7; + labels(1,2,3,4,5,6); penlabels(7,8); +endchar; + +beginchar(arrow_circle_left, + arithmetic_bounds); + "Left circle-arrow"; + arrow_head_fitting:=true; + a:=6.75u; t:=0.25; + pickup rule.nib; + x0=x1=x3=good.x 0.5w; + y0=y2=y4=math_axis; + y1-y0=y0-y3=x4-x0=x0-x2=round(a-0.5rth); + tmp_path:=subpath (t,8-t) of + (z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z1); + pickup tiny.nib; + arrow_head5(tmp_path,both); + pickup rule.nib; + cutdraw subpath(0,arrow_time) of tmp_path; + labels(1,2,3,4); penlabels(1); +endchar; + +beginchar(arrow_circle_right, + arithmetic_bounds); + "Right circle-arrow"; + arrow_head_fitting:=true; + a:=6.75u; t:=0.25; + pickup rule.nib; + x0=x1=x3=good.x 0.5w; + y0=y2=y4=math_axis; + y1-y0=y0-y3=x2-x0=x0-x4=round(a-0.5rth); + tmp_path:=subpath (t,8-t) of + (z1 right_to_down z2 down_to_left + z3 left_to_up z4 up_to_right z1); + pickup tiny.nib; + arrow_head5(tmp_path,both); + pickup rule.nib; + cutdraw subpath(0,arrow_time) of tmp_path; + labels(1,2,3,4); penlabels(1); +endchar; + +beginchar(arrow_left_to_right, + 16u#+2appr#,v_center(12u#)); + "Left to right arrow"; + arrow_head_fitting:=true; + pickup rule.nib; + x1=x5=w-appr; lft x3=appr; top y2=h-vround 0.5u; y1-y5=spread1; + 0.5[y1,y5]=0.5[y2,y4]=y3=math_axis; + x2=x4=3/8[appr,w-appr]; + tmp_path:=z1{(z2-z1) yscaled 2}...z2 left_to_down + z3 down_to_right z4...z5{(z5-z4) yscaled 2}; + pickup tiny.nib; + arrow_head6(tmp_path,both); + pickup rule.nib; + cutdraw subpath (0,arrow_time) of tmp_path; + labels(1,2,3,4,5); penlabels(6); +endchar; + +beginchar(arrow_right_to_left, + 16u#+2appr#,v_center(12u#)); + "Right to left arrow"; + arrow_head_fitting:=true; + pickup rule.nib; + x1=x5=appr; rt x3=w-appr; top y4=h-vround 0.5u; y5-y1=spread1; + 0.5[y1,y5]=0.5[y2,y4]=y3=math_axis; + x2=x4=5/8[appr,w-appr]; + tmp_path:=z1{(z2-z1) yscaled 2}...z2 right_to_up + z3 up_to_left z4...z5{(z5-z4) yscaled 2}; + pickup tiny.nib; + arrow_head6(tmp_path,both); + pickup rule.nib; + cutdraw subpath (0,arrow_time) of tmp_path; + labels(1,2,3,4,5); penlabels(6); +endchar; + +beginchar(arrow_up_to_down, + 12u#+2appr#,asc_height#,asc_depth#); + "Up to down arrow"; + arrow_head_fitting:=true; + pickup rule.nib; + y1=y5=-d; top y3=h; lft x4=appr+hround 0.5u; x1-x5=spread1; + 0.5[x1,x5]=0.5[x2,x4]=x3=0.5w; + y2=y4=5/8[-d,h]; + tmp_path:=z1{(z2-z1) xscaled 2}...z2 up_to_left + z3 left_to_down z4...z5{(z5-z4) xscaled 2}; + pickup tiny.nib; + arrow_head6(tmp_path,both); + pickup rule.nib; + cutdraw subpath (0,arrow_time) of tmp_path; + labels(1,2,3,4,5); penlabels(6); +endchar; + +beginchar(arrow_down_to_up, + 12u#+2appr#,asc_height#,asc_depth#); + "Down to up arrow"; + arrow_head_fitting:=true; + pickup rule.nib; + y1=y5=h; bot y3=-d; lft x2=appr+hround 0.5u; x5-x1=spread1; + 0.5[x1,x5]=0.5[x2,x4]=x3=0.5w; + y2=y4=3/8[-d,h]; + tmp_path:=z1{(z2-z1) xscaled 2}...z2 down_to_right + z3 right_to_up z4...z5{(z5-z4) xscaled 2}; + pickup tiny.nib; + arrow_head6(tmp_path,both); + pickup rule.nib; + cutdraw subpath (0,arrow_time) of tmp_path; + labels(1,2,3,4,5); penlabels(6); +endchar; + +% HARPOONS + +beginchar(harpoon_left_up, + 16u#+2appr#,v_center(spread1#+rth#)); + "Left up-harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(left,0),right); + rt x2=w-appr; y2=y1; pos2(rth,90); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(harpoon_right_up, + 16u#+2appr#,v_center(spread1#+rth#)); + "Right up-harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(right,0),left); + lft x2=appr; y2=y1; pos2(rth,-90); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(harpoon_left_down, + 16u#+2appr#,v_center(spread1#+rth#)); + "Left down-harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(left,0),left); + rt x2=w-appr; y2=y1; pos2(rth,90); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(harpoon_right_down, + 16u#+2appr#,v_center(spread1#+rth#)); + "Right down-harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(right,0),right); + lft x2=appr; y2=y1; pos2(rth,-90); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(harpoon_up_left, + 7u#+2appr#,asc_height#,asc_depth#); + "Upward left-harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(up,0),left); + bot y2=-d; x2=x1; pos2(rth,0); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(harpoon_down_left, + 7u#+2appr#,asc_height#,asc_depth#); + "Upward left-harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(down,0),right); + top y2=h; x2=x1; pos2(rth,180); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(harpoon_up_right, + 7u#+2appr#,asc_height#,asc_depth#); + "Downward right-harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(up,0),right); + bot y2=-d; x2=x1; pos2(rth,0); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(harpoon_down_right, + 7u#+2appr#,asc_height#,asc_depth#); + "Downward right-harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(down,0),left); + top y2=h; x2=x1; pos2(rth,180); + filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +beginchar(harpoons_left_left, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Left-left harpoons"; + pickup tiny.nib; + arrow_head1(straight_path(left,0) shifted (0,0.5spread1),right); + rt x2=w-appr; y2=y1; pos2(rth,90); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(left,0) shifted (0,-0.5spread1),left); + rt x4=w-appr; y4=y3; pos4(rth,90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(harpoons_right_right, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Right-right harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(right,0) shifted (0,0.5spread1),left); + lft x2=appr; y2=y1; pos2(rth,-90); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(right,0) shifted (0,-0.5spread1),right); + lft x4=appr; y4=y3; pos4(rth,-90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(harpoons_left_right, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Left-right harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(left,0) shifted (0,0.5spread1),right); + rt x2=w-appr; y2=y1; pos2(rth,90); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(right,0) shifted (0,-0.5spread1),right); + lft x4=appr; y4=y3; pos4(rth,-90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(harpoons_right_left, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Right-left harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(right,0) shifted (0,0.5spread1),left); + lft x2=appr; y2=y1; pos2(rth,-90); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(left,0) shifted (0,-0.5spread1),left); + rt x4=w-appr; y4=y3; pos4(rth,90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(harpoons_up_up, + 7u#+spread1#+2appr#,asc_height#,asc_depth#); + "Upward-upward hapoons"; + pickup tiny.nib; + arrow_head1(straight_path(up,0) shifted (-0.5spread1,0),left); + bot y2=-d; x2=x1; pos2(rth,0); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(up,0) shifted (0.5spread1,0),right); + bot y4=-d; x4=x3; pos4(rth,0); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(harpoons_down_down, + 7u#+spread1#+2appr#,asc_height#,asc_depth#); + "Downward-downward hapoons"; + pickup tiny.nib; + arrow_head1(straight_path(down,0) shifted (-0.5spread1,0),right); + top y2=h; x2=x1; pos2(rth,180); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(down,0) shifted (0.5spread1,0),left); + top y4=h; x4=x3; pos4(rth,180); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(harpoons_up_down, + 7u#+spread1#+2appr#,asc_height#,asc_depth#); + "Upward-downward hapoons"; + pickup tiny.nib; + arrow_head1(straight_path(up,0) shifted (-0.5spread1,0),left); + bot y2=-d; x2=x1; pos2(rth,0); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(down,0) shifted (0.5spread1,0),left); + top y4=h; x4=x3; pos4(rth,180); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(harpoons_down_up, + 7u#+spread1#+2appr#,asc_height#,asc_depth#); + "Downward-upward hapoons"; + pickup tiny.nib; + arrow_head1(straight_path(down,0) shifted (-0.5spread1,0),right); + top y2=h; x2=x1; pos2(rth,180); + filldraw stroke z1e..z2e; + arrow_head3(straight_path(up,0) shifted (0.5spread1,0),right); + bot y4=-d; x4=x3; pos4(rth,0); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +% +% T. Chaundy uniquely +% + +beginchar(harpoon_left_bar, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Left-bar harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(left,0) shifted (0,0.5spread1),right); + rt x2=w-appr; y2=y1; pos2(rth,90); + filldraw stroke z1e..z2e; + lft x3=appr; rt x4=w-appr; + y4=y3=math_axis-0.5spread1; + pos3(rth,90); pos4(rth,90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(harpoon_right_bar, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Right-bar harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(right,0) shifted (0,0.5spread1),left); + lft x2=appr; y2=y1; pos2(rth,-90); + filldraw stroke z1e..z2e; + lft x3=appr; rt x4=w-appr; + y4=y3=math_axis-0.5spread1; + pos3(rth,90); pos4(rth,90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(harpoon_bar_left, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Bar-left harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(left,0) shifted (0,-0.5spread1),left); + rt x2=w-appr; y2=y1; pos2(rth,90); + filldraw stroke z1e..z2e; + lft x3=appr; rt x4=w-appr; + y4=y3=math_axis+0.5spread1; + pos3(rth,90); pos4(rth,90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(harpoon_bar_right, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Bar-right harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(right,0) shifted (0,-0.5spread1),right); + lft x2=appr; y2=y1; pos2(rth,-90); + filldraw stroke z1e..z2e; + lft x3=appr; rt x4=w-appr; + y4=y3=math_axis+0.5spread1; + pos3(rth,90); pos4(rth,90); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(harpoon_left_right, + 16u#+2appr#,v_center(spread1#+rth#)); + "Left-right harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(left,0),right); + arrow_head2(straight_path(right,0),right); + filldraw z1l--z2r--z2l--z1r--cycle; +endchar; + +beginchar(harpoon_right_left, + 16u#+2appr#,v_center(spread1#+rth#)); + "Right-left harpoon"; + pickup tiny.nib; + arrow_head1(straight_path(right,0),left); + arrow_head2(straight_path(left,0),left); + filldraw z1l--z2r--z2l--z1r--cycle; +endchar; + +% ARROW KIT + +beginchar(maps_to_char,0,v_center(spread1#+rth#)); + "Maps to char"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + lft x1l=lft x2l=appr; x3=x1r; x4=x3+ceiling 0.5u; + y3=y4=math_axis; 0.5[y1,y2]=y3; + top y1-bot y2=arrow_width;%2vround 0.60arrow_width; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(maps_from_char,0,v_center(spread1#+rth#)); + "Maps from char"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,-90); pos4(rth,-90); + rt x1r=rt x2r=-appr; x3=x1l; x4=x3-ceiling 0.5u; + y3=y4=math_axis; 0.5[y1,y2]=y3; + top y1-bot y2=arrow_width; %2vround 0.60arrow_width; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(relbar_char,12u#+2appr#,v_center(spread1#+rth#)); + "Relation bar char"; + pickup tiny.nib; pos1(rth,90); pos2(rth,90); + y1=y2=math_axis; lft x1=appr; rt x2=w-appr; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +% +% trop \'ecras\'es \`a mon go\^ut. +% + +beginchar(hook_left,3u#+2appr#,v_center(spread1#+rth#)); + "Left hook"; + pickup tiny.nib; pos1(rth,90); pos2(rth,0); pos3(rth,-90); + y3=math_axis; y1-y3=vround min(1.4spread1,3u); + y2=0.5[y1,y3]; lft x1=lft x3=appr; rt x2r=w-appr; + filldraw stroke z1e right_to_down z2e down_to_left z3e; + penlabels(1,2,3); +endchar; + +beginchar(hook_right,3u#+2appr#,v_center(spread1#+rth#)); + "Right hook"; + pickup tiny.nib; pos1(rth,-90); pos2(rth,0); pos3(rth,90); + y3=math_axis; y1-y3=vround min(1.4spread1,3u); + y2=0.5[y1,y3]; rt x1=rt x3=w-appr; lft x2l=appr; + filldraw stroke z1e left_to_down z2e down_to_right z3e; + penlabels(1,2,3); +endchar; + +beginchar(diag_up,16u#+2appr#,asc_height#,asc_depth#); + "Diagonal up"; + pickup rule.nib; + lft x1=appr; rt x2=w-appr; bot y1=-d; top y2=h; + draw z1..z2; labels(1,2); +endchar; + +beginchar(diag_down,16u#+2appr#,asc_height#,asc_depth#); + "Diagonal down"; + pickup rule.nib; + lft x1=appr; rt x2=w-appr; top y1=h; bot y2=-d; + draw z1..z2; labels(1,2); +endchar; + +% DOUBLE ARROWS + +% for horizontal arrows... + +double_arrow_width := 2ceiling 0.70spread1+spread1+rth1; +double_arrow_height := round 6.5u; +double_arrow_tense := 0.65; +double_arrow_flatness:= 0.25; + +beginchar(double_arrow_left, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Left double arrow"; + pickup tiny.nib; + double_arrow_head1((appr,math_axis),left); + pos2r(rth,90); pos2l(rth,90); + rt x2r=rt x2l=w-appr; y2r=y1r; y2l=y1l; + filldraw stroke z1r.e..z2r.e; + filldraw stroke z1l.e..z2l.e; + penlabels(2r,2l); +endchar; + +beginchar(double_arrow_right, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Right double arrow"; + pickup tiny.nib; + double_arrow_head1((w-appr,math_axis),right); + pos2r(rth,-90); pos2l(rth,-90); + lft x2r=lft x2l=appr; y2r=y1r; y2l=y1l; + filldraw stroke z1r.e..z2r.e; + filldraw stroke z1l.e..z2l.e; + penlabels(2r,2l); +endchar; + +beginchar(double_arrow_left_right, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Left-right double arrow"; + pickup tiny.nib; + double_arrow_head1((appr-o,math_axis),left); + double_arrow_head2((w-appr+o,math_axis),right); + filldraw z1r.r--z1r.l--z2l.r--z2l.l--cycle; + filldraw z1l.r--z1l.l--z2r.r--z2r.l--cycle; +endchar; + +beginchar(double_arrow_left_not, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Left double arrow"; + pickup tiny.nib; + double_arrow_head1((appr,math_axis),left); + pos2r(rth,90); pos2l(rth,90); + rt x2r=rt x2l=w-appr; y2r=y1r; y2l=y1l; + filldraw stroke z1r.e..z2r.e; + filldraw stroke z1l.e..z2l.e; + v_adjust(3r,4l,y1,double_arrow_width);% to be checked + lft x4l-appr=hround 7u; w-appr-rt x3r=hround 5u; + adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1); + filldraw stroke z3e..z4e; + penlabels(2r,2l,3,4); +endchar; + +beginchar(double_arrow_right_not, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Right double arrow"; + pickup tiny.nib; + double_arrow_head1((w-appr,math_axis),right); + pos2r(rth,-90); pos2l(rth,-90); + lft x2r=lft x2l=appr; y2r=y1r; y2l=y1l; + filldraw stroke z1r.e..z2r.e; + filldraw stroke z1l.e..z2l.e; + v_adjust(3r,4l,y1,double_arrow_width);% to be checked + lft x4l=appr+hround 5u; w-rt x3r=appr+hround 7u; + adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1); + filldraw stroke z3e..z4e; + penlabels(2r,2l,3,4); +endchar; + +beginchar(double_arrow_left_right_not, + 16u#+2appr#,v_center(2spread1#+rth#)); + "Left-right double arrow"; + pickup tiny.nib; + double_arrow_head1((appr-o,math_axis),left); + double_arrow_head2((w-appr+o,math_axis),right); + filldraw z1r.r--z1r.l--z2l.r--z2l.l--cycle; + filldraw z1l.r--z1l.l--z2r.r--z2r.l--cycle; + v_adjust(3r,4l,y1,double_arrow_width);% to be checked + lft x4l=w-rt x3r=appr+hround 6.5u; + adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1); + filldraw stroke z3e..z4e; + penlabels(3,4); +endchar; + +% for horizontal arrows... + +double_arrow_width := 2ceiling 0.70spread1+spread1+rth1; +double_arrow_height := round 6.5u; +double_arrow_tense := 0.65; +double_arrow_flatness:= 0.25; + +beginchar(double_arrow_up, + 9u#+2appr#,asc_height#,asc_depth#); + "Up double arrow"; + pickup tiny.nib; + double_arrow_head1((hround 0.5(w-rth)+0.5rth, + h+o),up); + pos2r(rth,0); pos2l(rth,0); + bot y2r=bot y2l=-d; x2r=x1r; x2l=x1l; + filldraw stroke z1r.e..z2r.e; + filldraw stroke z1l.e..z2l.e; + penlabels(2r,2l); +endchar; + +beginchar(double_arrow_down, + 9u#+2appr#,asc_height#,asc_depth#); + "Down double arrow"; + pickup tiny.nib; + double_arrow_head1((hround 0.5(w-rth)+0.5rth, + -d-o),down); + pos2r(rth,180); pos2l(rth,180); + top y2r=top y2l=h; x2r=x1r; x2l=x1l; + filldraw stroke z1r.e..z2r.e; + filldraw stroke z1l.e..z2l.e; + penlabels(2r,2l); +endchar; + +beginchar(double_arrow_up_down, + 9u#+2appr#,body_height#,paren_depth#); + "Up-down double arrow"; + pickup tiny.nib; + double_arrow_head1((hround 0.5(w-rth)+0.5rth, + h+o),up); + double_arrow_head2((hround 0.5(w-rth)+0.5rth, + -d-o),down); + filldraw z1r.r--z1r.l--z2l.r--z2l.l--cycle; + filldraw z1l.r--z1l.l--z2r.r--z2r.l--cycle; +endchar; + +beginchar(Relbar_char,12u#+2appr#,v_center(2spread1#+rth#)); + "Double relation bar char"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=appr; rt x2=rt x4=w-appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % lower bar + penlabels(1,2,3,4); +endchar; + +beginchar(Maps_to_char,0,v_center(2spread1#+rth#)); + "Double maps to char"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + pos5(rth,90); pos6(rth,90); + lft x1l=lft x2l=appr; x3=x5r=x1r; x4=x6=x3+ceiling 0.5u; + y3=y4=math_axis+0.5spread1; y5=y6=math_axis-0.5spread1; + 0.5[y1,y2]=math_axis; + top y1-bot y2=arrow_width % 2vround 0.60arrow_width + +spread1; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); +endchar; + +beginchar(Maps_from_char,0,v_center(2spread1#+rth#)); + "Double maps from char"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,-90); pos4(rth,-90); + pos5(rth,-90); pos6(rth,-90); + rt x1r=rt x2r=-appr; x3=x5r=x1l; x4=x6=x3-ceiling 0.5u; + y3=y4=math_axis+0.5spread1; y5=y6=math_axis-0.5spread1; + 0.5[y1,y2]=math_axis; + top y1-bot y2=arrow_width % 2vround 0.60arrow_width + +spread1; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); +endchar; + +% EXTENSIBLE ARROWS (revoir les parametres) + +use_rule1; + +arrow_width := 2ceiling 0.70spread1+rth; +arrow_height# := 4u#; +arrow_height := round 4u; +arrow_breadth := rth; +arrow_stress := 0.65; +arrow_tense1 := 0.75; +arrow_tense2 := 0.875; + +beginchar(arrow_top,10u#+2appr#,0,dh#); + pickup tiny.nib; + a:=hround rth1+0.2dw; save rth; rth:=a; + lft x2l=hround 0.5(w-rth); + y2=-d-eps; pos2(rth,0); top y3=h; x3=x2; + arrow_head1(z2..z3,both); + filldraw stroke z1e--z2e; penlabels(1,2); +endchar; + +beginchar(arrow_bot,10u#+2appr#,0,dh#); + pickup tiny.nib; + a:=hround rth1+0.2dw; save rth; rth:=a; + lft x2r=hround 0.5(w-rth); + y2=h+eps; pos2(rth,180); bot y3=-d; x3=x2; + arrow_head1(z2..z3,both); + filldraw stroke z1e--z2e; penlabels(1,2); +endchar; + +beginchar(arrow_mod,10u#+2appr#,0,dh#); + pickup tiny.nib; + a:=hround rth1+0.2dw; save rth; rth:=a; + lft x1l=lft x2l=hround 0.5(w-rth); + y1=h+eps; y2=-d-eps; pos1(rth,0); pos2(rth,0); + filldraw stroke z1e--z2e; penlabels(1,2); +endchar; + +% for horizontal arrows... + +double_arrow_width := 2ceiling 0.70spread1+spread1+rth; +double_arrow_height := round 6.5u; +double_arrow_tense := 0.65; +double_arrow_flatness:= 0.25; + +beginchar(double_arrow_top, + 12u#+2appr#,0,dh#); + "double arrow top"; + pickup tiny.nib; + double_arrow_head1((hround 0.5(w-rth)+0.5rth, + h+o),up); + pos2r(rth,0); pos2l(rth,0); + y2r=y2l=-d-1-eps; x2r=x1r; x2l=x1l; + filldraw stroke z1r.e..z2r.e; + filldraw stroke z1l.e..z2l.e; + penlabels(2r,2l); +endchar; + +beginchar(double_arrow_bot, + 12u#+2appr#,0,dh#); + "double arrow bot"; + pickup tiny.nib; + double_arrow_head1((hround 0.5(w-rth)+0.5rth, + -d-o),down); + pos2r(rth,180); pos2l(rth,180); + y2r=y2l=h+1+eps; x2r=x1r; x2l=x1l; + filldraw stroke z1r.e..z2r.e; + filldraw stroke z1l.e..z2l.e; + penlabels(2r,2l); +endchar; + +beginchar(double_arrow_mod, + 12u#+2appr#,0,dh#); + "double arrow extension's module"; + pickup tiny.nib; + x3-x1=x4-x2=spread1; + 0.5[x1,x3]=0.5[x2,x4]=hround 0.5(w-rth)+0.5rth; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + y1=y3=h+1+eps; y2=y4=-d-1-eps; + filldraw stroke z1e..z2e; + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +endinput; + +beginchar(arrow_up_not, + 7u#+2appr#,asc_height#,asc_depth#); + "Negated upward arrow"; + pickup tiny.nib; + arrow_head1(straight_path(up,0),both);% corrected 2002/07/29 + bot y2=-d; x2=x1; pos2(rth,0); + filldraw stroke z1e..z2e; +% + x3r=x3l=x1c.l; x4r=x4l=x1c.r; 0.5[y3l,y4r]=0.5[-d,h]; + y1c.r-y4r=vround 1/3(y1c.r-0.5[-d,h]); + a:=rth-tiny; b:=abs(z4r-z3l); + y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b)); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrow_down_not, + 7u#+2appr#,asc_height#,asc_depth#); + "Negated downward arrow"; + pickup tiny.nib; + arrow_head1(straight_path(down,o),both);% corrected 2002/07/29 + top y2=h; x2=x1; pos2(rth,180); + filldraw stroke z1e..z2e; +% + x3r=x3l=x1c.r; x4r=x4l=x1c.l; 0.5[y3l,y4r]=0.5[-d,h]; + y3l-y1c.r=vround 1/3(0.5[-d,h]-y1c.r); + a:=rth-tiny; b:=abs(z4r-z3l); + y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b)); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(arrow_up_down_not, + 7u#+2appr#,asc_height#,asc_depth#); + "Negated Upward-Downward arrow"; + pickup tiny.nib; + arrow_head1(straight_path(up,o),both);% corrected 2002/07/29 + arrow_head2(straight_path(down,o),both);% corrected 2002/07/29 + filldraw z1l--z2r--z2l--z1r--cycle;; +% + x3r=x3l=x1c.l; x4r=x4l=x1c.r; 0.5[y3l,y4r]=0.5[-d,h]; + y1c.r-y4r=vround 1/3(y1c.r-0.5[-d,h]); + a:=rth-tiny; b:=abs(z4r-z3l); + y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b)); + filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(double_arrow_up_not, + 9u#+2appr#,asc_height#,asc_depth#); + "Negated Up double arrow"; + pickup tiny.nib; + double_arrow_head1((hround 0.5(w-rth)+0.5rth, + h+o),up); + pos2r(rth,0); pos2l(rth,0); + bot y2r=bot y2l=-d; x2r=x1r; x2l=x1l; + filldraw stroke z1r.e..z2r.e; + filldraw stroke z1l.e..z2l.e; + penlabels(2r,2l); +% + rt x4r=rt x4l=x1a.l; x3l=x3r=2x1-x4r; + 0.5[y3l,y4r]=0.5[-d,h]; + y1a.l-top y4r=vround 1/5(y1a.l-0.5[-d,h]); + a:=rth-tiny; b:=abs(z4r-z3l); + y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b)); + filldraw stroke z3e..z4e; + penlabels(3,4); +endchar; + +beginchar(double_arrow_down_not, + 9u#+2appr#,asc_height#,asc_depth#); + "Negated down double arrow"; + pickup tiny.nib; + double_arrow_head1((hround 0.5(w-rth)+0.5rth, + -d-o),down); + pos2r(rth,180); pos2l(rth,180); + top y2r=top y2l=h; x2r=x1r; x2l=x1l; + filldraw stroke z1r.e..z2r.e; + filldraw stroke z1l.e..z2l.e; + penlabels(2r,2l); +% + lft x3r=lft x3l=x1a.l; x4l=x4r=2x1-x3r; + 0.5[y3l,y4r]=0.5[-d,h]; + bot y3l-y1a.l=vround 1/5(0.5[-d,h]-y1a.l); + a:=rth-tiny; b:=abs(z4r-z3l); + y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b)); + filldraw stroke z3e..z4e; + penlabels(3,4); +endchar; + +beginchar(double_arrow_up_down_not, + 9u#+2appr#,body_height#,paren_depth#); + "Negated up-down double arrow"; + pickup tiny.nib; + double_arrow_head1((hround 0.5(w-rth)+0.5rth, + h+o),up); + double_arrow_head2((hround 0.5(w-rth)+0.5rth, + -d-o),down); + filldraw z1r.r--z1r.l--z2l.r--z2l.l--cycle; + filldraw z1l.r--z1l.l--z2r.r--z2r.l--cycle; +% + rt x4r=rt x4l=x1a.l; x3l=x3r=2x1-x4r; + 0.5[y3l,y4r]=0.5[-d,h]; + y1a.l-top y4r=vround 1/5(y1a.l-0.5[-d,h]); + a:=rth-tiny; b:=abs(z4r-z3l); + y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b)); + filldraw stroke z3e..z4e; + penlabels(3,4); +endchar; diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathastr.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathastr.mf new file mode 100644 index 00000000000..f037c718c95 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathastr.mf @@ -0,0 +1,946 @@ +% mathematical symbols by Anthony Phan. +% file: mathastr.mf (mathematical astronomical symbols) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +% stem_corr had been added (darkness). +% also vair_corr and slab. + +%astro := 1; + +% from cmbase.mf + +% super_arc.r(suffix $, $$) and super_arc.l(suffix $, $$) +% have the same effect as a right_to_down + +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; + +% let's go + +use_rule4; + +boolean serifs; +if astro > 0.75: serifs := true; else: serifs := false; fi + +astro.hair := hround astro[rth, hair]; +astro.vair := vround astro[rth, vair]; +astro.stem := hround astro[rth, stem]; +astro.light_stem := astro[rth, 0.9[vair, 0.85stem]]; +astro.curve := hround astro[rth, curve]; +astro.vair' := vround astro[rth, vair']; +astro.cap_hair := vround astro[rth, cap_hair]; +astro.cap_stem := hround astro[rth, cap_stem]; +astro.cap_curve := hround astro[rth, cap_curve]; +astro.rth := astro[rth, rth]; +astro.beak := astro[0, 0.38cap_height-astro.cap_hair]; +astro.slab := vround astro[rth, slab]; + +superpull := astro*1/6; +arrow_breadth := astro[0, vair]; +arrow_stress := astro[1, 0.7]; +arrow_tense1 := astro[1, 0.75]; +arrow_tense2 := astro[1, 0.875]; + +% absolutely okay +beginchar(astro_sun, 13u#+2appr#, cap_height#, 0); + "Sun"; + italcorr 0; % italcorr 0.6cap_height#*slant-.5u#; + autorounded; + pickup null.nib; +% circle + penpos1(astro.vair', 90); + penpos2(hround astro[rth, cap_curve-stem_corr], 180); + penpos3(vround astro[rth, vair+1.5vair_corr], -90); + penpos4(hround astro[rth, cap_curve-stem_corr], 0); + y1r = h+o; y3r = -o; y2 = y4 = 0.5h; + x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4]; + y2l := y4l := astro[y2, 0.52h]; + penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3) + & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle; +% dot + adjust_dot5((x1, y2), astro[2.7rth, 1.3dtsz], true, true); + dot(5, 5'); + penlabels(1, 2, 3, 4); +endchar; + +% okay +beginchar(astro_left_moon, 10u#+2appr#, cap_height#, 0); + "Left moon (Moon)"; + italcorr 0; % italcorr cap_height#*slant-.5u#; + save tmp_path, a, t; path tmp_path[]; +% +% Two solutions may be considered for +% this construction. The first (and the +% one which is done here) is to put the +% two centers of circles at a predeterminated +% distance $a$ from each others (namely $a = 4u$) +% and do the construction hoping that edges +% will fit the right bound. +% The second one consists in calculating that +% distance $a$ to make sure that edges will lie +% on the right bound (the calculations are shown +% commentated). The problem with this method +% is that there is no control of the clear part's +% width of the drawing. Moreover, when the inner +% radius become too small there is no more solution +% to that problem (see below). +% +%% The actual width of the drawing must be 10u. +%% The problem is to calculate the distance +%% between the two centers to make it work. +%% Alas when the two radius are too far from +%% each over, this problem has no solution. +%% +%% 6.5u = radius of great circle. +%% 3.5u = 10u-6.5u = (inner width)-radius. +%% 6.5u-rth = radius of small circle. +%% +% b = (3.5u)**2+(rth**2)-2*6.5u*rth; +% if b> = 0: a = hround(3.5u+sqrt b); +% else: a = hround(3.5u); fi + a = hround(4u-rth+astro.rth); + penpos2(vround astro.rth, 90); + penpos3(hround astro.rth, 180); + penpos4(vround astro.rth, -90); + penpos1(hround astro.rth, 0); + x3r = appr; x1r-x3r = 13u; y2r = h+o; y4r = -o; + y1 = y3 = 0.5[y2, y4]; x2 = x4 = 0.5[x1, x3]; + tmp_path1 = z1r up_to_left z2r left_to_down z3r + down_to_right z4r right_to_up z1r..cycle; + tmp_path2 = z1l up_to_left z2l left_to_down z3l + down_to_right z4l right_to_up z1l..cycle; + tmp_path3 = tmp_path1 shifted (a, 0); + tmp_path4 = tmp_path2 shifted (a, 0); +% +% The presence of epsilons makes almost certain +% that paths won't have double points causing +% trouble with filling commands. +% + (t1-eps, t4-eps) = (subpath (0, 4) of tmp_path1) + intersectiontimes (subpath (0, 4) of tmp_path4); + (t2-4+eps, t3-4+eps) = (subpath (4, 8) of tmp_path1) + intersectiontimes (subpath (4, 8) of tmp_path4); + (t5-eps, t8-eps) = (subpath (0, 4) of tmp_path2) + intersectiontimes (subpath (0, 4) of tmp_path3); + (t6-4+eps, t7-4+eps) = (subpath (4, 8) of tmp_path2) + intersectiontimes (subpath (4, 8) of tmp_path3); + fill subpath (t1, t2) of tmp_path1 + ..reverse subpath(t4, t3) of tmp_path4..cycle; + unfill subpath (t5, t6) of tmp_path2 + ..reverse subpath(t8, t7) of tmp_path3..cycle; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(astro_right_moon, 10u#+2appr#, cap_height#, 0); + "Right moon"; + italcorr 0; % italcorr cap_height#*slant-.5u#; + save tmp_path, a, t; path tmp_path[]; + a = -hround(4u-rth+astro.rth); + penpos2(vround astro.rth, 90); + penpos3(hround astro.rth, 0); + penpos4(vround astro.rth, -90); + penpos1(hround astro.rth, 180); + x3 = w-appr-0.5rth; x1r-x3r = -13u; y2r = h+o; y4r = -o; + y1 = y3 = 0.5[y2, y4]; x2 = x4 = 0.5[x1, x3]; + tmp_path1 = z1r up_to_left z2r left_to_down z3r + down_to_right z4r right_to_up z1r..cycle; + tmp_path2 = z1l up_to_left z2l left_to_down z3l + down_to_right z4l right_to_up z1l..cycle; + tmp_path3 = tmp_path1 shifted (a, 0); + tmp_path4 = tmp_path2 shifted (a, 0); + (t1-eps, t4-eps) = (subpath (0, 4) of tmp_path1) + intersectiontimes (subpath (0, 4) of tmp_path4); + (t2-4+eps, t3-4+eps) = (subpath (4, 8) of tmp_path1) + intersectiontimes (subpath (4, 8) of tmp_path4); + (t5-eps, t8-eps) = (subpath (0, 4) of tmp_path2) + intersectiontimes (subpath (0, 4) of tmp_path3); + (t6-4+eps, t7-4+eps) = (subpath (4, 8) of tmp_path2) + intersectiontimes (subpath (4, 8) of tmp_path3); + fill subpath (t1, t2) of tmp_path1 + ..reverse subpath(t4, t3) of tmp_path4..cycle; + unfill subpath (t5, t6) of tmp_path2 + ..reverse subpath(t8, t7) of tmp_path3..cycle; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(astro_full_moon, 13u#+2appr#, cap_height#, 0); + "Full moon"; + italcorr 0; % italcorr 0.6cap_height#*slant-.5u#; + autorounded; +% circle + penpos1(vround astro.rth, 90); + penpos2(hround astro.rth, 180); + penpos3(vround astro.rth, -90); + penpos4(hround astro.rth, 0); + y1r = h+o; y3r = -o; y2 = y4 = 0.5h; + x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4]; + y2l := y4l := astro[y2, y2]; + penstroke z1e left_to_down z2e down_to_right + z3e right_to_up z4e up_to_left z1e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(astro_new_moon, 13u#+2appr#, cap_height#, 0); + "New moon"; + italcorr 0; % italcorr cap_height#*slant-.5u#; + autorounded; + x4 = w-appr; x2 = appr; y1 = h+o; y3 = -o; + y2 = y4 = 0.5h; x1 = x3 = 0.5[x2, x4]; + fill z1 left_to_down z2 down_to_right z3 + right_to_up z4 up_to_left z1..cycle; + labels(1, 2, 3, 4); +endchar; + +% okay +beginchar(astro_mercury, 9u#+2appr#, cap_height#, 0); + "Mercury"; + italcorr 0; % italcorr cap_height#*slant-.5u#; + save a; a = astro.light_stem; + ensure_centering_of(a); +% circle + penpos1(astro.vair, 90); + penpos2(astro.curve, 180); + penpos3(astro.vair, -90); + penpos4(astro.curve, 0); + y1r = cap_height+oo; + y3r = vround astro[0.30cap_height, cap_height-x_height]-oo; + y2 = y4 = 0.5[y1, y3]; + x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4]; + y2l := y4l := astro[y2, 0.52[y3, y1]]; + penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3) + & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle; +% queue + tmp_path := pulled_arc.r(1, 2) & pulled_arc.r(2, 3) + & pulled_arc.r(3, 4) & pulled_arc.r(4, 1) & cycle; + pickup crisp.nib; + bot y5 = -o; bot y6l = bot y7l = vround(0.5[-d, y3r]-0.5a);% a little higher + pos5(hround a, 0); pos6(vround a, 90); pos7(vround a, 90); + x5 = x3; x5l-x6 = x7-x5r = hround 0.5(x1-x2l); + save t; + forsuffixes $ = , r, l: + t$ = xpart(tmp_path intersectiontimes (z5$..(x5$, y2))); + endfor + filldraw subpath (t.r, t.l) of tmp_path--z5l--z5r--cycle; + filldraw stroke z6e..z7e; +% horns + tmp_path := reverse tmp_path; + save p; path p.r, p.l; + a := astro[rth, stem]; + pos8(a, 90); pos9(hround 0.5[a, astro.vair], 180); + pos10(astro.vair, -90); pos11(hround 0.5[a, astro.vair], 0); + lft x9r = appr; x8 = x10 = x1; rt x11r = w-appr; + y9 = y11 = 0.5[y8, y10] = y1; + top y8 = vround max(1.22cap_height, y1r+a); + p.r = z8r left_to_down z9r down_to_right + z10r right_to_up z11r up_to_left z8r; + p.l = z8l right_to_down z11l down_to_left + z10l left_to_up z9l up_to_right z8l; + t1 = xpart(p.r intersectiontimes (z8..(x9r, y8))); + (t2, t3-4) = p.r intersectiontimes subpath (4, 8) of tmp_path; + (t5, t4-4) = p.l intersectiontimes subpath (4, 8) of tmp_path; + t6-6 = xpart(subpath (6, 8) of p.l intersectiontimes + ((point t1 of p.r)..(x1, y2))); + t7 = xpart(p.r intersectiontimes (z8..(x11r, y8))); + (t8, t9) = p.r intersectiontimes subpath (0, 4) of tmp_path; + (t11, t10) = p.l intersectiontimes subpath (0, 4) of tmp_path; + t12 = xpart(subpath (0, 2) of p.l intersectiontimes + ((point t7 of p.r)..(x1, y2))); + interim turningcheck := 0;% I hate turning numbers + filldraw subpath (t1, t2) of p.r + --subpath (t3, t4) of tmp_path + --subpath (t5, t6) of p.l -- cycle; + filldraw subpath (t12, t11) of p.l + --subpath (t10, t9) of tmp_path + --subpath (t8, t7) of p.r -- cycle; + penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11); +endchar; + +% okay +beginchar(astro_venus, 9u#+2appr#, cap_height#, 0); + "Venus"; + italcorr 0; % italcorr cap_height#*slant-.5u#; + save a, t; a = astro.light_stem; + ensure_centering_of(a); +% circle + penpos1(astro.vair, 90); + penpos2(astro.curve, 180); + penpos3(astro.vair', -90); + penpos4(astro.curve, 0); + y1r = cap_height+oo; + y3r = vround astro[0.30cap_height, cap_height-x_height]-oo; + y2 = y4 = 0.5[y1, y3]; + x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4]; + y2l := y4l := astro[y2, 0.52[y3, y1]]; + penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3) + & pulled_arc.e(3, 4) & pulled_arc.e(4, 1)& cycle; +% queue + tmp_path := pulled_arc.r(1, 2) & pulled_arc.r(2, 3) + & pulled_arc.r(3, 4) & pulled_arc.r(4, 1) & cycle; + pickup crisp.nib; + bot y5 = -o; bot y6l = bot y7l = vround(0.5[-d, y3r]-0.5a);% a little higher + pos5(hround a, 0); pos6(vround a, 90); pos7(vround a, 90); + x5 = x3; x5l-x6 = x7-x5r = hround 0.5(x1-x2l); + forsuffixes $ = , r, l: + t$ = xpart(tmp_path intersectiontimes (z5$..(x5$, y2))); + endfor + filldraw subpath (t.r, t.l) of tmp_path--z5l--z5r--cycle; + filldraw stroke z6e..z7e; + penlabels(1, 2, 3, 4, 5, 6, 7); +endchar; + +% absolutely okay +beginchar(astro_earth, 13u#+2appr#, cap_height#, 0); + "Earth"; + italcorr 0; % italcorr 0.6cap_height#*slant-.5u#; + save a; a = astro.light_stem; + ensure_centering_of(a); + pickup null.nib; + autorounded; +% circle + penpos1(astro.vair', 90); + penpos2(hround astro[rth, cap_curve-2stem_corr], 180); + penpos3(vround astro[rth, vair+1.5vair_corr], -90); + penpos4(hround astro[rth, cap_curve-2stem_corr], 0); + y1r = h+o; y3r = -o; y2 = y4 = 0.5h; + x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4]; + y2l := y4l := astro[y2, 0.52h]; + penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3) + & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle; +% cross + tmp_path := z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_right z1; + penpos5(hround a, 0); penpos6(vround a, 90); + x5 = x6 = 0.5w; + y5 = y6 = vround(y2-0.5vround a)+0.5vround a; + forsuffixes $ = , r, l: + z7$ = tmp_path intersectionpoint (z5$..(x5$, y1r)); + z8$ = tmp_path intersectionpoint (z5$..(x5$, y3r)); + z9$ = tmp_path intersectionpoint (z6$..(x2r, y6$)); + z10$ = tmp_path intersectionpoint (z6$..(x4r, y6$)); + endfor + fill z7r..z7..z7l--z8l..z8..z8r--cycle; + fill z9r..z9..z9l--z10l..z10..z10r--cycle; + penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +endchar; + +% almost okay (see arrows dimensions) +beginchar(astro_mars, 9u#+2appr#, body_height#, 0); + "Mars"; + italcorr 0; % italcorr body_height#*slant-.5u#; + save a; a = astro.light_stem; + % ensure_centering_of(a);% just for homogeneity + % circle + penpos1(astro.vair, 90); + penpos2(astro.curve, 180); + penpos3(astro.vair', -90); + penpos4(astro.curve, 0); + y1r = vround astro[0.70cap_height, x_height]+oo; + y3r = -oo; + y2 = y4 = 0.5[y1, y3]; + x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4]; + y2l := y4l := astro[y2, 0.52[y3, y1]]; + penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3) + & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle; + % arrow + tmp_path := pulled_arc.r(1, 2) & pulled_arc.r(2, 3) + & pulled_arc.r(3, 4) & pulled_arc.r(4, 1) & cycle; + z6 = (x1, y2); top y7 = body_height+o; rt x7 = w-appr; + arrow_height := vround astro[0.2cap_height, 0.3cap_height]; + arrow_width := max(4.9rth, rth+3u); + save rth; rth = a; + arrow_head5(z6..z7, both); + z6r-z6 = z5r-z5; z6-z6l = z5-z5l; + save t; + forsuffixes $ = r, l: + t$ = xpart(tmp_path intersectiontimes (z6$..z5$)); + endfor + filldraw if t.l>t.r: subpath (t.r, t.l) of tmp_path + else: subpath (t.r, 8) of tmp_path & subpath (0, t.l) of tmp_path fi + --z5l--z5r--cycle; + penlabels(1, 2, 3, 4, 6, 7); +endchar; + +% humm +beginchar(astro_jupiter, 10u#+2appr#, asc_height#, desc_depth#); + "Jupiter"; + italcorr 0; % italcorr body_height#*slant-.5u#; + pickup crisp.nib; + % + top y1r = h; bot y2l = -d; + rt x1r = w-appr-.5u; + lft x2l = appr+3u; + adjust_slanted_bar(1r, 2l, 1l, 2r)(astro[rth, cap_stem]-crisp, -1); + z1r-z1 = z1-z1l; z2r-z2 = z2-z2l; + filldraw stroke z1e..z2e; + % + top y3r-bot y3l = top y4r-bot y4l = astro.cap_hair; + z3r-z3l = whatever*(z1-z2); + bot y3l = bot y4l = bot y5l = vround 0.0h; + lft x5l = appr-0.5u; + adjust_slanted_bar(1l, 5l, 0, 5)(0.5(astro.cap_hair-crisp), -1); + z5r-z5 = z5-z5l; + top y8 = h-0.5rth; lft x8 = appr; + z0' = 0.72[z5, z1l]; z6 = 0.25[z5, z1l]; + pos6(astro.cap_hair, angle(z1l-z5)-90); + pos8(astro.cap_curve, angle(z8-z0')-90); + x4l = x5; z4r-z4l = whatever*(z6-z5); z3 = 0.5[z3l, z3r]; + filldraw stroke z5e---z6e{z0'-z6}...{z8-z0'}z8e; + % + if serifs: + save beak_jut, bracket, cap_jut; + cap_jut = hround astro[0, 1.8u]; + bracket = 0.5cap_jut; + serif(1, 2, bracket, cap_jut, astro.slab, true, dish, + cap_jut, astro.slab, true, dish); + serif(2, 1, bracket, cap_jut, astro.slab, true, dish, + cap_jut, astro.slab, true, dish); + z3l = whatever[z1r, z2r]; + beak_jut = (astro.beak+astro.slab)*(x1-x2)/(y1-y2); + arm3(astro.beak, beak_jut, astro.slab, beak_darkness, up, w-appr+0.75u); + else: x3l = 0.8[x2, x1]; + fi + filldraw stroke z3e..z4e; + labels(0, 0'); penlabels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +% humm +beginchar(astro_saturn, 9.5u#+2appr#, body_height#, 0); + "Saturn"; + italcorr 0; % italcorr body_height#*slant-.5u#; + % curve + pickup crisp.nib; + pos1(astro.cap_hair, 180); pos2(astro.cap_hair, 90); + pos3(hround 0.43[astro.cap_hair, astro.cap_stem], 0); + pos5(hround 0.44[astro.cap_hair, astro.cap_stem], 0); + pos6(astro.cap_hair, 90); + pos7(hround 0.44[astro.cap_hair, astro.cap_stem], 180); + pos10(astro.cap_stem, 0); + lft x10l = appr+hround 1.5u; + x10r = x1l; + rt x3r = rt x7l = w-appr; + x2 = (astro[0.5,0.57])[x1l, x3l]; + rt x5r+eps = hround astro[x2, x10r+0.5[astro.cap_hair, astro.cap_stem]]; + x6 = 0.5[x5, x7]; + % + % Construction with tangent circles + % + save d, k, R; k = (x7-x5)/(x3-x1); + k' = (1+k-2sqrt k)/((1-k)**2); + bot y6l = -o; + top y2r = vround 0.8h+o; + R = k'*(y2-y6); + y3 = y2-R; bot y1 = bot y10 = vround y3; + y5 = y7 = y6+k*R; + z4 = (1/(1+k))[(x2, y1), (x6, y5)]; d = R/(x2-x1); + pos4(astro.cap_stem, angle((y1-y5)/d, (x6-x2)*d)-90); + % stem + save rth; rth = astro.cap_stem; + arrow_height := vround astro[h-cap_height, 0.2cap_height]+o; + arrow_width := rth+hround 2(2.25u)+0.5; + arrow_head9(z10..(x10, h+o-pen_top), left); + filldraw stroke z9e..z10e; + % + x7 := x7r+1; + tmp_path := z6l right_to_up z7l; + t := xpart(tmp_path intersectiontimes (z7..(x7, y6l))); + autorounded; + filldraw subpath (0, t) of tmp_path + --z7--z7r down_to_left z6r--cycle; + filldraw stroke z1e up_to_right z2e right_to_down + z3e...z4e{((y5-y1)/d, (x2-x6)*d)} + ...z5e down_to_right z6e; + penlabels(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +endchar; + +% almost okay (see arrows dimensions) +beginchar(astro_uranus, 9u#+2appr#, body_height#, 0); + "Uranus"; + italcorr 0; % italcorr body_height#*slant-.5u#; + save a; + a = astro.light_stem; + ensure_centering_of(a);% just for homogeneity +% circle + penpos1(astro.vair, 90); + penpos2(hround astro[rth, curve-stem_corr], 180); + penpos3(astro.vair', -90); + penpos4(hround astro[rth, curve-stem_corr], 0); + y1r = vround astro[0.70cap_height, x_height]+oo; + y3r = -oo; + y2 = y4 = 0.5[y1, y3]; + x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4]; + y2l := y4l := astro[y2, 0.52[y3, y1]]; + penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3) + & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle; +% dot + adjust_dot5((x1, y2), astro[1.6rth, dtsz], true, true); + dot(5, 5'); +% arrow + tmp_path := pulled_arc.r(1, 2) & pulled_arc.r(2, 3) + & pulled_arc.r(3, 4) & pulled_arc.r(4, 1) & cycle; + arrow_height := vround astro[0.2cap_height, 0.3cap_height]+eps; + arrow_width := max(4.9rth, rth+3u); + save rth; rth = hround a; + arrow_head6(z1..(x1, body_height+o-pen_top), both); + save t; + forsuffixes $ = , r, l: + t$ = xpart(tmp_path intersectiontimes (z6$..(x6$, y2))); + endfor + pickup crisp.nib; + filldraw subpath (t.r, 8) of tmp_path + & subpath (0, t.l) of tmp_path --z6l--z6r--cycle; + penlabels(1, 2, 3, 4, 6, 7); +endchar; + +% almost okay (see arrows dimensions) +beginchar(astro_neptune, 10.5u#+2Appr#, cap_height#, 0); + "Neptune"; + italcorr 0; % italcorr cap_height#*slant-.5u#; + save a; + a = hround astro[rth, cap_stem-2stem_corr]; + ensure_centering_of(a); +% stems + x1-0.5a = hround astro[Appr, appr]; + x3 = x7 = 0.5w; + x1 = x2; x4-x3 = x3-x1; + pickup crisp.nib; +% arrows + save rth; rth = a; + arrow_height := vround astro[0.125cap_height, 0.25cap_height]+eps; + arrow_width := min(3a, x3-x1-0.5u, 2.5u+a); + arrow_head0((x1, 0)..(x1, h+o-pen_top), both); + arrow_head5((x4, 0)..(x4, h+o-pen_top), both); + arrow_head6((x3, 0)..(x3, h+o-pen_top), both); +% cup and queue + pos1(a, 180); pos2(a, 180); pos3(astro.vair, -90); pos4(a, 0); pos7(a, 0); + pos8(vround astro.light_stem, 90); pos9(vround astro.light_stem, 90); + bot y3r = vround 0.2cap_height; + y1 = y0; y2 = y4 = 0.5[y1, y3]; bot y7 = -o; + top y8r = top y9r = vround 0.2cap_height-1; + x7l-x8 = x9-x7r = hround 0.5(x3-x1-a); + filldraw stroke z1e..z2e down_to_right z3e right_to_up z4e..z5e; + filldraw stroke z6e..z7e; filldraw stroke z8e..z9e; + penlabels(1, 2, 3, 4, 7, 8, 9); +endchar; + +% The serifs are not cm compatible +beginchar(astro_pluto, 7.75u#+Appr#+appr#, cap_height#, 0); + "Pluto"; + italcorr 0; % italcorr 0.75cap_height#*slant-.5u#; + pickup crisp.nib; + % + % stem + % + pos1(astro.cap_stem, 0); + pos2(astro.cap_stem, 0); + top y1 = h; bot y2 = 0; lft x1l = lft x2l = Appr; + filldraw stroke z1e..z2e; + % + % curve + % + penpos3(astro.cap_hair, 90); + penpos4(astro.cap_hair, 90); + penpos5(astro.cap_curve, 0); + penpos6(astro.vair, -90); + penpos7(astro.vair, -90); + y3r = y4r = h; y5 = 0.5[y4, y6]; + y6r = y7r = vround astro[0.275h, 0.5h-astro.vair]; + x3 = x7 = x1; x5r = w-appr; x4 = x6 = 0.4[x3, x5]; + penstroke z3e..pulled_arc.e(4, 5) & pulled_arc.e(5, 6)..z7e; + % + % arm or beak, and serifs + % + pos9(astro.slab, 90); pos10(astro.slab, 90); y9l = y10l = y2; x9 = x2r; + if serifs: x10 = 0.5w; + save beak_jut, bracket, cap_jut; + beak_jut = hround astro[0, 0.75u]; + cap_jut = hround astro[0, 1.8u]; + bracket = 0.5cap_jut; + arm10(astro.beak, beak_jut, astro.slab, beak_darkness, up, w-appr); + serif(1, 2, bracket, cap_jut, astro.slab, true, + 0, 0.5cap_jut, astro.slab, true, 0); + serif(2, 1, bracket, cap_jut, astro.slab, true, + 0, 0.5cap_jut, astro.slab, true, 0); + else: rt x10 = w-appr; fi + filldraw stroke z9e..z10e; + penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11); +endchar; + +% okay +beginchar(astro_varearth, 9u#+2appr#, cap_height#, 0); + "Variant Earth"; + italcorr 0; % italcorr x_height#*slant-.5u#; + save a; + a = astro.light_stem; + ensure_centering_of(a); + % circle + penpos1(astro.vair, 90); + penpos2(astro.curve, 180); + penpos3(astro.vair', -90); + penpos4(astro.curve, 0); + y1r = vround astro[0.70cap_height, x_height]+oo; + y3r = -oo; + y2 = y4 = 0.5[y1, y3]; + x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4]; + y2l := y4l := astro[y2, 0.52[y3, y1]]; + penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3) + & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle; + % head + tmp_path := pulled_arc.r(1, 2) & pulled_arc.r(2, 3) + & pulled_arc.r(3, 4) & pulled_arc.r(4, 1) & cycle; + pickup crisp.nib; + top y5 = h+o; top y6r = top y7r = vround(0.5[h, y1r]+0.5o+0.5a); + pos5(hround a, 0); pos6(vround a, 90); pos7(vround a, 90); + x5 = x1; x5l-x6 = x7-x5r = hround 0.5(x1-x2l); + save t; + forsuffixes $ = , r, l: + t$ = xpart(tmp_path intersectiontimes (z5$..(x5$, y2))); + endfor + filldraw subpath (t.r, 8) of tmp_path + & subpath (0, t.l) of tmp_path --z5l--z5r--cycle; + filldraw stroke z6e..z7e; + penlabels(1, 2, 3, 4, 5, 6, 7); +endchar; + +beginchar(astro_aries, 13u#+2appr#, cap_height#, 0); + "Aries"; + italcorr 0; % italcorr 0.7x_height#*slant-.5u#; + save a, b; + a = 10; b = hround astro[1.2rth,astro.cap_stem]; + ensure_centering_of(b); + x1 = x2 = x3 = 0.5w; y3 = 0.5h; + if serifs: + save bracket, cap_jut; + pickup crisp.nib; + cap_jut = hround astro[0, 1.8u]; + bracket = 0.5cap_jut; + bot y2=0; + pos2(b, 0); pos3(b, 0); + serif(2, 3, bracket, cap_jut, astro.slab, true, dish, + cap_jut, astro.slab, true, dish); + filldraw stroke z2e..z3e; + else: + pickup tiny.nib; + bot y1 = -d-o; y2-y1 = o; + pos1(max(0.75b, tiny+eps), 0); + pos2(b, 0); pos3(b, 0); + filldraw stroke z1e--z2e--z3e; + penlabels(1); + fi + pickup tiny.nib; + pos3a(astro.light_stem, 0); pos4a(vround astro.light_stem, 90); + pos5a(astro.curve, 180); pos6a(astro.cap_hair, 270-a); + pos3b(astro.light_stem, 180); pos4b(vround astro.light_stem, 90); + pos5b(astro.curve, 0); pos6b(astro.cap_hair, -90+a); + y3 = y3a = y3b; + top y4a.r = top y4b.r = h+o; + y5a = y5b = 0.6[y6a, y4a]; + bot y6a.r = bot y6b.r = vround 0.5h; + lft x3a.l = 0.5(w-b); rt x3b.l = 0.5(w+b); + x4a = 0.6[x3a, x5a]; x4b = 0.6[x3b, x5b]; + lft x5a.r = appr; rt x5b.r = w-appr; + x6a.r = good.x 0.5[x5a.r, x3a.l]; + x3a.l-x6a.r = x6b.r-x3b.l; + filldraw stroke z3a.e up_to_left z4a.e + & pulled_arc.e(4a, 5a)...z6a.e{dir -a}; + filldraw stroke z3b.e up_to_right z4b.e + & pulled_arc.e(4b, 5b)...z6b.e{dir(180+a)}; + penlabels(1, 2, 3, 3a, 4a, 5a, 6a, 3b, 4b, 5b, 6b); +endchar; + +% okay +beginchar(astro_taurus, 9u#+2appr#, cap_height#, 0); + "Taurus"; + italcorr 0; % italcorr x_height#*slant-.5u#; +% circle + penpos1(astro.vair, 90); + penpos2(astro.curve, 180); + penpos3(astro.vair', -90); + penpos4(astro.curve, 0); + y1r = vround astro[0.70cap_height, x_height]+oo; + y3r = -oo; + y2 = y4 = 0.5[y1, y3]; + x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4]; + y2l := y4l := astro[y2, 0.52[y3, y1]]; + penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3) + & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle; +% head + pickup crisp.nib; + pos5(astro.hair, 180); + pos6(vround astro.light_stem, -90); + pos7(astro.hair, 0); + top y5 = top y7 = h+o; bot y6r = y1l; + lft x5r = appr; rt x7r = w-appr; x6 = x1; + filldraw stroke z5e down_to_right z6e right_to_up z7e; + penlabels(1, 2, 3, 4, 5, 6, 7); +endchar; + +beginchar(astro_gemini, 11u#+2appr#, cap_height#, 0); + "Gemini"; + italcorr 0; % italcorr asc_height#*slant-.5u#; + pickup crisp.nib; + save c, bracket; + bracket = 0.5hround astro[0, 1.8u]; + c = hround 0.25(w-2appr-2astro.stem); + % stems + pos1(astro.stem, 0); pos2(astro.stem, 0); + pos3(astro.stem, 0); pos4(astro.stem, 0); + top y1 = top y3 = h; bot y2 = bot y4 = 0; + lft x1l = lft x2l = appr+c; rt x3r = rt x4r = w-appr-c; + filldraw stroke z1e..z2e; + filldraw stroke z3e..z4e; + % serifs + if serifs: + serif(1, 2, bracket, c, astro.slab, true, dish, 0.0c, astro.slab, true, 0); + serif(2, 1, bracket, c, astro.slab, true, dish, 0.0c, astro.slab, true, 0); + serif(3, 4, bracket, 0.0c, astro.slab, true, 0, c, astro.slab, true, dish); + serif(4, 3, bracket, 0.0c, astro.slab, true, 0, c, astro.slab, true, dish); + filldraw z1e--z1f--z3c--z3d--cycle; + filldraw z2e--z2f--z4c--z4d--cycle; + else: + pos5(astro.slab, 90); pos6(astro.slab, 90); + pos7(astro.slab, 90); pos8(astro.slab, 90); + lft x5r = lft x7l = appr; rt x6r = rt x8l = w-appr; + y5r = y6r = y1; y7l = y8l = y2; + filldraw stroke z5e..z6e; + filldraw stroke z7e..z8e; + penlabels(5, 6, 7, 8); + fi + penlabels(1, 2, 3, 4); +endchar; + +beginchar(astro_cancer, 13u#+2appr#, cap_height#, 0); + "Cancer"; + italcorr 0; % italcorr 0.7x_height#*slant-.5u#; + labels(1, 2, 3, 4); +endchar; + +beginchar(astro_leo, 13u#+2appr#, cap_height#, 0); + "Leo"; + italcorr 0; % italcorr 0.7x_height#*slant-.5u#; + pickup crisp.nib; + pos1(astro.cap_hair,0); + pos2(astro.vair,90); + pos3(astro.cap_hair,180); + pos4(astro.vair,-90); + pos5(astro.cap_hair,180); + pos6(astro.cap_curve,180); + pos7(astro.vair,90); + pos8(astro.cap_curve,0); + pos9(astro.cap_hair,0); + pos10(astro.vair,90); + pos11(astro.cap_hair,180); + bot y4r=bot y10.l=-o; top y7r=h+o;top y2r=vround 0.3h+o; + y1=y3=y5=y9=0.5[y2, y4]; y6=y8=0.6[y1,y7]; y11=good.y y9; + lft x3r=appr; rt x11l=w-appr; + lft x6r=w-rt x8r=appr+hround(2.5u-0.5astro.cap_curve); + rt x1r-lft x3r=rt x11l-lft x9l=hround 5u; + x5=x1; x2=x4=0.5[x1,x3]; x10=0.5[x9,x11]; + x7=0.5[x6, x8]; + filldraw stroke z1e up_to_left z2e left_to_down z3e down_to_right z4e + right_to_up z1e; + filldraw stroke z5e{up}...pulled_arc.e(6,7)&pulled_arc.e(7,8)...z9e + down_to_right z10e right_to_up z11e; + penlabels(1,2,3,4,5,6,7,8,9,10,11); +endchar; + +beginchar(astro_virgo, 13u#+2appr#, cap_height#, 0); + "Virgo"; + italcorr 0; % italcorr 0.7x_height#*slant-.5u#; + labels(1, 2, 3, 4); +endchar; + +beginchar(astro_libra, 13u#+2appr#, cap_height#, 0); + "Libra"; + italcorr 0; % italcorr 0.7x_height#*slant-.5u#; + pickup crisp.nib; + save a, b; + % horizontal stems + top y1r-bot y1l = astro.slab; + y1=0.5[y1r, y1l]; x1 = x1l= x1r; + forsuffixes $ = 2, 3, 4, 5, 6: + y$r-y$l = y1r-y1l; y$ = 0.5[y$r, y$l]; x$ = x$l = x$r; + endfor + bot y1l = 0; y1 = y2; + y3-y1= vround astro[0.375x_height, 0.2x_height]; y3 = y4 = y5 = y6; + rt x4= hround(0.5w-astro[1.5u, 1u]); x5 = w-x4; lft x1= appr; rt x2=w-appr; + % ellipses $(x-x_0)^2/a^2+(y-y_0)^2/b^2=1$ + pos8(astro.curve, 180); pos9(astro.vair, 90); pos10(astro.curve, 0); + top y9r=h+o; lft x8r=w-rt x10r=appr+hround(2u-0.5astro.curve); + x0 = x9 = 0.5w; y7l = y7r = y11l = y11r = y4r; x7l = x4r; x11l = x5r; + % inner ellipse + a = x10l-x0; + b*(1+-+((x11l-x0)/a)) = (-b+y9l-y7l); + y0 = y8 = y10 = y9l-b; + z7'l=unitvector((y7l-y0)/b/b, -(x7l-x0)/a/a); + z11'l=unitvector((y11l-y0)/b/b, -(x11l-x0)/a/a); + % outer ellipse + a := x10r-x0; + b := y9r-y0; + x0-x7r = x11r-x0 = a*(1+-+((y11r-y0)/b)); + z7'r=unitvector((y7r-y0)/b/b, -(x7r-x0)/a/a); + z11'r=unitvector((y11r-y0)/b/b, -(x11r-x0)/a/a); + % draw things + if serifs: x3=x7r; x6=x11r; + arm3(astro.beak, -astro[0, 0.75u], -astro.slab, + beak_darkness, up, appr-0.75u); + arm6(astro.beak, astro[0, 0.75u], astro.slab, + beak_darkness, up, w-appr+0.75u); + else: x3=x1; x6=x2; + fi + filldraw stroke z1e..z2e; + filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; + filldraw stroke z7e{z7'e}...pulled_arc.e(8, 9) + & pulled_arc.e(9, 10)...z11e{z11'e}; + penlabels(0, 1, 2, 3, 4,5,6,7,8,9,10,11); +endchar; + +%iff false: +beginchar(astro_scorpio,15u#+2appr#,cap_height#,0.5desc_depth#); + "Scorpio"; +% italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-2u#; +% adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); +% numeric shaved_stem; shaved_stem=hround(mfudged.stem-2stem_corr); + pickup crisp.nib; + pos1(astro.cap_stem,0); pos2(astro.cap_stem,0); + pos3(astro.cap_stem,0); pos4(astro.cap_stem,0); + pos5(astro.cap_stem,0); pos6(astro.cap_stem,0); + pos6'(astro.cap_stem,180); pos7(astro.vair,-90); + lft x1l=appr+hround(1.5u-.5astro.cap_stem); + x5-x3=x3-x1=hround 5u; x1=x2; x3=x4; x5=x6; + bot y2=0; y2=y4; y6=0.25x_height; y1=y3=y5=0.7h; + for $ = 3, 5: + pos[$]a(astro.cap_hair, 180); top y[$]b.r-bot y[$]b.l=astro.vair; + rt x[$]a.l=x[$-2]r; y[$]a=astro[0.7h,0.55h]; top y[$]b.r=h+o; + x[$]b.r=astro[0.5[x[$]a, x[$]], 0.5[rt x[$]a.l, rt x[$]r]]; + z[$]b.l= whatever[z[$]a.l, z[$]b.r]; + x[$]b = x[$]b.r; y[$]b=0.5[y[$]b.l, y[$]b.r]; + filldraw stroke z[$]a.e{up}...z[$]b.e{right} + & pulled_arc.e([$]b, [$])..z[$+1]e; + endfor + lft x1a=appr-hround u; top y1a.r=h+o; pos1a(astro.vair,90); + filldraw stroke pulled_arc.e(1a, 1)..z2e; + z6=z6'; bot y7r=-d; x7=0.5[x6,w]; + save rth; rth = astro.hair; + arrow_height := vround astro[0.125cap_height, 0.25cap_height]+eps; + arrow_width := 3.5u; + arrow_head8(z7{right}...(w,0.25x_height){up}, both); + filldraw stroke pulled_arc.e(6',7)...{z8a-z8}z8e; + if serifs: + save beak_jut, bracket, cap_jut; + cap_jut = hround astro[0, 1.8u]; + bracket = 0.5cap_jut; + serif(2, 1, bracket, cap_jut, astro.slab, true, dish, + cap_jut-0.5u, astro.slab, true, dish); + serif(4, 3, bracket, cap_jut-0.5u, astro.slab, true, dish, + cap_jut-0.5u, astro.slab, true, dish); + fi + penlabels(1,1a,2,3,3a,3b,4,5,5a,5b,6,7); +endchar; + +beginchar(astro_sagittarius, 13u#+2appr#, cap_height#, 0); + "Sagittarius"; + italcorr 0; % italcorr 0.7x_height#*slant-.5u#; + save a, rth; a= angle(w-2appr,h+2o); rth=astro.light_stem; + pickup crisp.nib; lft x1l=appr; bot y1r=-o; + pos1(astro.light_stem, a-90); + arrow_height := vround astro[0.2cap_height, 0.3cap_height]+eps; + arrow_width := max(4.9rth, rth+3u); + arrow_head2((appr,-o)..(w-appr, h+o), both); + pos3(astro.light_stem,a); pos4(astro.light_stem,a); + z3-z2c.l=whatever*(z2-z1); z0=1/3[z1,z2]; z3-z0=whatever*dir(a+90); + z3-z0=z0-z4; +% autorounded; + filldraw stroke z1e..z2e; + filldraw stroke z3e..z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(astro_capricorn, 13u#+2appr#, cap_height#, 0); + "Capricorn"; + italcorr 0; % italcorr 0.7x_height#*slant-.5u#; + labels(1, 2, 3, 4); +endchar; + +beginchar(astro_aquarius, 13u#+2appr#, cap_height#, 0); + "Aquarius"; + italcorr 0; % italcorr 0.7x_height#*slant-.5u#; + labels(1, 2, 3, 4); +endchar; + +beginchar(astro_pisces, 13u#+2appr#, cap_height#, 0); + "Pisces"; + italcorr 0; % italcorr 0.7x_height#*slant-.5u#; + pickup crisp.nib; + pos1(astro.vair, 90); pos2(astro.curve,0); pos3(astro.vair, -90); + pos4(astro.vair, 90); pos5(astro.curve,180); pos6(astro.vair, -90); + pos7(vround astro.light_stem,90); pos8(vround astro.light_stem,90); + top y1r=top y4r=h+o; bot y3r=bot y6r=-o; + top y7r=top y8r=vround(0.5h+0.5astro.light_stem); y2=y5=y7; + lft x3=lft x1=appr; rt x4=rt x6=w-appr; + lft x2l=w-rt x5l=appr+hround(4u-.5astro.curve); + lft x7=w-rt x8=appr+hround u; + filldraw stroke pulled_arc.e(1,2)&pulled_arc.e(2,3); + filldraw stroke pulled_arc.e(4,5)&pulled_arc.e(5,6); + filldraw stroke z7e..z8e; + penlabels(1, 2, 3, 4,5,6,7,8); +endchar; + +% The next symbol is intended to figure ``cemetery'' +% in the theory of Markov processes. +% Usualy, this concept is represented by a partial derivative +% symbol or a Greek lowercase delta. It seems that +% no specific symbol has been designed before. + +use_rule1; +beginchar(cemetery, 10u#+2appr#, cap_height#, 0); + "Cemetery symbol"; + pickup rule.nib; + ensure_centering_of(rth); + x1 = x2 = 0.5w; + lft x5 = appr; rt x8 = w-appr; bot y5 = bot y8 = 0; + y1 = h; x3 = w-x4 = appr+hround 1.5u; + y2 = good.y 0.2[y5, y1]; y3 = y4 = good.y 2/3[top y2, y1]; + z6 = 0.5[z5, z2]; z7 = 0.5[z8, z2]; + tmp_path := z5{right}...z6{0.5(x2-x6), y2-y6}...z2{right} + ...z7{0.5(x7-x2), y7-y2}...z8{right}; + draw tmp_path; + penpos1(rth, 0); penpos2(rth, 0); + penpos3(rth, 90); penpos4(rth, 90); + penstroke z1e..z2e; penstroke z3e..z4e; + save a, b, c, number_of_slashes; a = max(h, w); + pickup crisp.nib; + x5' = good.x appr; x8' = good.x w-appr; y5 = y5'; y8 = y8'; + pos5(rth, 90); pos5'(rth, 90); pos8(rth, 90); pos8'(rth, 90); + filldraw stroke z5e..z5'e; filldraw stroke z8e..z8'e; + pickup fine.nib; + number_of_slashes = 6; c = hround((x8-x5)/(number_of_slashes+1)); + number_of_slashes := round((x8-x5)/max(c, 1))-1; + for i = 1 upto number_of_slashes: + bot y[i+8]l = 0; x[i+8]l = x5+i*c; + z[i+8]r = tmp_path intersectionpoint (z[i+8]l..z[i+8]l+(a, a)); + draw z[i+8]l..z[i+8]r; penlabels([i+8]); + endfor; + penlabels(1, 2, 3, 4, 5, 8, 5', 8'); labels(6, 7); +endchar; diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathastrotest10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathastrotest10.mf new file mode 100644 index 00000000000..7e88651e7f2 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathastrotest10.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: matha10.mf (math serie A at 10 points) +% last modification: May 16, 2005. + +font_identifier:="matha"; font_size 10pt#; +font_coding_scheme "matha"; + +input mathprmt; +input mathastrotestdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathastrotestdrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathastrotestdrv.mf new file mode 100644 index 00000000000..1df430d3d4a --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathastrotestdrv.mf @@ -0,0 +1,67 @@ +% mathematical symbols by Anthony Phan. +% file: mathastrotestdrv.mf (test file for astonomical/logical symbols) +% last modification: May 16, 2005. + +mode_setup; +math_setup; + +% ASTRONOMICAL SYMBOLS + +% mathastr.mf + +astro_sun :=hex"00"; +astro_mercury :=hex"01"; +astro_venus :=hex"02"; +astro_earth :=hex"03"; +astro_mars :=hex"04"; +astro_jupiter :=hex"05"; +astro_saturn :=hex"06"; +astro_uranus :=hex"07"; +astro_neptune :=hex"08"; +astro_pluto :=hex"09"; +astro_varearth :=hex"0A"; +astro_left_moon :=hex"0B"; +astro_right_moon:=hex"0C"; +astro_full_moon :=hex"0D"; +astro_new_moon :=hex"0E"; +%cemetery :=hex"0F"; +%ligtable cemetery:cemetery kern-2(u#+letter_fit#); + +astro_aries :=hex"10"; +astro_taurus :=hex"11"; +astro_gemini :=hex"12"; +astro_cancer := hex"13"; +astro_leo := hex"14"; +astro_virgo := hex"15"; +astro_libra := hex"16"; +astro_scorpio := hex"17"; +astro_sagittarius := hex"18"; +astro_capricornus := hex"19"; +astro_aquarius := hex"1A"; +astro_pisces := hex"1B"; + +extra_endchar := ""; +standard_proofing; + +extra_endchar := extra_endchar & "; charcode := charcode+code_offset;"; + +astro:=0/7; code_offset:=0*32; input mathastr; +astro:=1/7; code_offset:=1*32; input mathastr; +astro:=2/7; code_offset:=2*32; input mathastr; +astro:=3/7; code_offset:=3*32; input mathastr; +astro:=4/7; code_offset:=4*32; input mathastr; +astro:=5/7; code_offset:=5*32; input mathastr; +astro:=6/7; code_offset:=6*32; input mathastr; +astro:=7/7; code_offset:=7*32; input mathastr; + +% parameters for TFM files. + +font_slant=0; +font_x_height=x_height#; +%font_normal_stretch=3u#; +%font_normal_shrink=2u#; +font_quad=18u#+4letter_fit#; +font_extra_space=2u#; +font_normal_space=6u#+2letter_fit#; + +end. diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathasym.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathasym.mf new file mode 100644 index 00000000000..e78f764498e --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathasym.mf @@ -0,0 +1,421 @@ +% mathematical symbols by Anthony Phan. +% file: mathsymb.mf (various mathematical symbols) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +def horizontal_rules_list=math_axis, + -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height, +enddef; + +use_rule1; +make_sim_picture; + +% standard +% beginchar(hex"20",6u#+2letter_fit#,0,0); +% "Normal space"; +% endchar; + +% +% Usual binary operators. +% + +currentlocation_:=hex"00"; + +beginchar(currentlocation,arithmetic_bounds); + "Plus sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + lft x1l=hround 0.5(w-rth); x2=x1; + lft x3=Appr; x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Minus sign"; + pickup tiny.nib; pos1(rth,90); pos2(rth,90); + y1=y2=math_axis; lft x1=Appr; rt x2=w-Appr; + filldraw stroke z1e..z2e; penlabels(1,2,3,4); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Times sign"; + pickup rule.nib; x0=good.x 0.5w; + pickup tiny.nib; rt x0'=w-Appr; y0=y0'=math_axis; + z1-z0=z0-z2=(z0'-z0) rotated 45; z3-z0=z0-z4=(z0'-z0) rotated -45; + pos1(rth+2eps,-45); pos2(rth+2eps,-45); + pos3(rth+2eps,45); pos4(rth+2eps,45); + filldraw stroke z1e..z2e; filldraw stroke z4e..z3e; + penlabels(1,2,3,4); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Division sign"; + pickup tiny.nib; + lft x1=Appr; rt x2=w-Appr; + y2=y1=math_axis; pos1(rth,90); pos2(rth,90); + filldraw stroke z1e..z2e; + pickup null.nib; + adjust_dot3((0.5[x1,x2],y1+math_spread[0.5x_height,0.6x_height]), + dtsz,true,false); dot(3,3'); + adjust_dot4((0.5[x1,x2],y1-math_spread[0.5x_height,0.6x_height]), + dtsz,true,false); dot(4,4'); + penlabels(1,2); +endchar; + +beginchar(currentlocation,3u#+2appr#,v_center(7u#)); + "Centered dot"; + pickup null.nib; + adjust_dot1((0.5w,math_axis),dtsz,false,false); + dot(1,1'); +endchar; + +% known as \circ + +beginchar(currentlocation,7u#+2appr#,v_center(7u#)); + "Small circle"; + pickup rule.nib0; + adjust_dot1((0.5w,math_axis),max(7u,dtsz+rth0),false,false); + full_dot:=false; dot(1,1'); +endchar; + +beginchar(currentlocation,ast_size#+2appr#,v_center(ast_size#)); + "Small asterisk"; + autorounded; + interim stress:=0.5; + pickup null.nib; + numeric b,c,dag_curve,dag_stem; + dag_curve=ast_curve; dag_stem=ast_stem; + b=1.8ast_stem; c=1.4ast_stem; + % + x0=hround(0.5w-0.5dag_curve)+0.5dag_curve; + y0=0.5[-d,h]; + for $=1 upto 6: z[$]=b*dir($*60+30)+z0; + z[$]'=c*dir($*60+60)+z0; endfor + filldraw for $=1 upto 6: dagger_stroke[$](round(0.5ast_size-b)+eps, + dag_curve,dag_stem,dir($*60+30))...z[$]'...endfor cycle; +endchar; + +beginchar(currentlocation,ast_size#+2appr#,v_center(ast_size#)); + "Small co-asterisk"; + autorounded; + interim stress:=0.5; + pickup null.nib; + numeric b,c,dag_curve,dag_stem; + dag_curve=ast_curve; dag_stem=ast_stem; + b=1.8ast_stem; c=1.4ast_stem; + % + x0=hround(0.5w-0.5dag_curve)+0.5dag_curve; + y0=0.5[-d,h]; + for $=1 upto 6: z[$]=b*dir($*60-60)+z0; + z[$]'=c*dir($*60-30)+z0; endfor + filldraw for $=1 upto 6: dagger_stroke[$](round(0.5ast_size-b)+eps, + dag_curve,dag_stem,dir($*60-60))...z[$]'...endfor cycle; + labels(0,1',2',3',4',5',6'); +endchar; + +% beginchar(currentlocation,arithmetic_bounds); +% "Truc sign"; +% pickup tiny.nib; +% pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); +% top y1=top y3r=top y4r=h; bot y2=-d; +% lft x1l=hround 0.5(w-rth); x2=x1; +% lft x3=Appr; x1-x3=x4-x1; filldraw stroke z1e..z2e; +% filldraw stroke z3e..z4e; penlabels(1,2,3,4); +% endchar; + +% beginchar(currentlocation,arithmetic_bounds); +% "curT sign"; +% pickup tiny.nib; +% pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); +% bot y1=bot y3l=bot y4l=-d; top y2=h; +% lft x1l=hround 0.5(w-rth); x2=x1; +% lft x3=appr; x1-x3=x4-x1; filldraw stroke z2e..z1e; +% filldraw stroke z3e..z4e; penlabels(1,2,3,4); +% endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Plus-minus sign"; + numeric a; a=min(vround(rth+0.3u),0.5spread1); + pickup tiny.nib; pos1(rth,0); pos2(rth,0); + pos3(rth,90); pos4(rth,90); pos5(rth,90); pos6(rth,90); + lft x1l=hround 0.5(w-rth); x2=x1; lft x3=Appr; + x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis+0.5spread1; + top y5r=top y6r=bot y2-a; x5=x3; x6=x4; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Minus-plus sign"; + numeric a; a=min(vround(rth+0.3u),0.5spread1); + pickup tiny.nib; pos1(rth,0); pos2(rth,0); + pos3(rth,90); pos4(rth,90); pos5(rth,90); pos6(rth,90); + lft x1l=hround 0.5(w-rth); x2=x1; lft x3=Appr; + x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis-0.5spread1; + bot y5l=bot y6l=top y1+a; x5=x3; x6=x4; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Left times sign"; + pickup rule.nib; x0=good.x 0.5w; + pickup tiny.nib; rt x0'=w-Appr; y0=y0'=math_axis; + z1-z0=(z0'-z0) rotated 45; z3-z0=(z0'-z0) rotated -45; + pos1(rth+2eps,-45); pos2(rth+2eps,-45); + pos3(rth+2eps,45); pos4(rth+2eps,45); + lft x2l=lft x4l=hround(2x0-rt x1r); + z2=whatever[z0,z1]; z4=whatever[z0,z3]; + rt x2'-lft x2l=rt x4'-lft x4l=rth; + z2'=whatever[z1l,z2l]; z4'=whatever[z3l,z4l]; + filldraw z1l--z2'--z4'--z3l--z3r--z4r + --z4l--z2l--z2r--z1r--cycle; + penlabels(1,2,3,4); labels(2',4'); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Right times sign"; + pickup rule.nib; x0=good.x 0.5w; + pickup tiny.nib; lft x0'=Appr; y0=y0'=math_axis; + z1-z0=(z0'-z0) rotated 45; z3-z0=(z0'-z0) rotated -45; + pos1(rth+2eps,-45); pos2(rth+2eps,-45); + pos3(rth+2eps,45); pos4(rth+2eps,45); + rt x2l=rt x4l=hround(2x0-lft x1r); + z2=whatever[z0,z1]; z4=whatever[z0,z3]; + lft x2'-rt x2r=lft x4'-rt x4r=-rth; + z2'=whatever[z1r,z2r]; z4'=whatever[z3r,z4r]; + filldraw z1r--z2'--z4'--z3r--z3l--z4l + --z4r--z2r--z2l--z1l--cycle; + penlabels(1,2,3,4); labels(2',4'); +endchar; + +beginchar(currentlocation,7u#+2appr#,v_center(7u#)); + "Small diamond"; + pickup tiny.nib; + a:=sqrt(3.14159)*0.5*max(7u,dtsz+rth0); + y2r=y4r=good.y math_axis; x1r=x3r=good.x 0.5w; + y1r-y2r=y2r-y3r=vround(0.5a*sqrt(2)-tiny)+eps; + x2r-x1r=x1r-x4r=hround(0.5a*sqrt(2)-tiny)+eps; + z1l-z1r=z3r-z3l=(rth0-tiny)/sind(45) + *(unitvector(z4r-z1r)+unitvector(z2r-z1r)); + z2l-z2r=z4r-z4l=(rth0-tiny)/sind(45) + *(unitvector(z3r-z2r)+unitvector(z1r-z2r)); + filldraw stroke z1e--z2e--z3e--z4e--z1e; + penlabels(1,2,3,4); +endchar; + +% known as \bullet + +beginchar(currentlocation,7u#+2appr#,v_center(7u#)); + "Small full circle"; + pickup nullpen; + adjust_dot1((0.5w,math_axis),max(7u-rth0,dtsz),false,false); + dot(1,1'); +endchar; + +beginchar(currentlocation,7u#+2appr#,v_center(7u#)); + "Small five star"; + pickup tiny.nib; + draw_star.a((0.5w,math_axis),5,3.5u+o,0.2,90,false); + labels(a); +endchar; + +beginchar(currentlocation,7u#+2appr#,v_center(7u#)); + "Small six star"; + pickup tiny.nib; + draw_star.a((0.5w,math_axis),6,3.5u+o,0.4,90,false); + labels(a); +endchar; + +% currentlocation_:=hex"10"; + +beginchar(currentlocation,12u#+2appr#,v_center(spread1#+rth#)); + "Equality sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % lower bar + penlabels(1,2,3,4); +endchar; + +beginchar(currentlocation,12u#+2appr#,v_center(2spread1#+rth#)); + "Identity sign"; + pickup tiny.nib; for i=1 upto 6: pos[i](rth,90); endfor + lft x1=appr; x1=x3=x5; rt x2=w-appr; x2=x4=x6; + y1=y2; y3=y4; y5=y6; y3=math_axis; y1-y3=y3-y5=spread1; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % middle bar + filldraw stroke z5e..z6e; % lower bar + penlabels(1,2,3,4,5,6); +endchar; + +beginchar(currentlocation,12u#+2appr#,v_center(spread1#+rth#)); + "Similarity sign"; + currentpicture:=sim_picture; +endchar; + +beginchar(currentlocation,12u#+2appr#,v_center(2spread1#+2rth#)); + "Similarity-similarity sign"; + currentpicture:=(sim_picture shifted(0,0.5(spread1+rth))) + +(sim_picture shifted(0,-0.5(spread1+rth))); +endchar; + +beginchar(currentlocation,12u#+2appr#,v_center(2spread1#+rth#)); + "Similarity-bar sign"; + currentpicture:=sim_picture shifted(0,vround 0.5spread1); + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); + lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis-spread1; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(currentlocation,12u#+2appr#,v_center(3spread1#+rth#)); + "Similarity-equal sign"; + currentpicture:=sim_picture shifted(0,spread1); + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y3=y4=math_axis-1.5spread1; y1-y3=y2-y4=spread1; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(currentlocation,12u#+2appr#,v_center(2spread1#+rth#)); + "Smile-frown sign"; + pickup tiny.nib; + pos2(rth,90); pos5(rth,90); + 0.5[y2,y5]=math_axis; y2-y5=spread1; + y1l=y3l=y2l+0.5spread1; y4r=y6r=y5r-0.5spread1; + lft x1l=lft x4r=appr; rt x3l=rt x6r=w-appr; x2=x5=0.5[x1l,x3l]; + z1'-z1l=(z2l-z1l) xscaled 1/2; z4'-z4r=(z5r-z4r) xscaled 1/2; + z3'-z3l=(z2l-z3l) xscaled 1/2; z6'-z6r=(z5r-z6r) xscaled 1/2; + pos1(rth,angle(z1'-z1l)+90); pos4(rth,angle(z4'-z4r)+90); + pos3(rth,angle(z3'-z3l)-90); pos6(rth,angle(z6'-z6r)-90); + filldraw stroke z1e{z1'-z1l}...z2e{right}...z3e{z3l-z3'}; + filldraw stroke z4e{z4'-z4r}...z5e{right}...z6e{z6r-z6'}; + penlabels(1,2,3,4,5,6); labels(1',3',4',6'); +endchar; + +beginchar(currentlocation,7u#+2appr#,asc_height#,asc_depth#); + "Divide sign"; + pickup tiny.nib; pos1(rth0,0); pos2(rth0,0); + rt x1r=rt x2r=hround(0.5w+0.5rth0); + top y1=h; bot y2=-d; filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +% currentlocation_:=hex"18"; + +beginchar(currentlocation,arithmetic_bounds); + "Not equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % lower bar + lft x6l=w-rt x5r=Appr+hround 1.75u; + top y5r=h+eps; 0.5[bot y6l,top y5r]=math_axis; + adjust_slanted_bar(6l,5r,6r,5l)(rth-tiny.breadth,-1); + filldraw stroke z5e..z6e; + penlabels(1,2,3,4,5,6); +endchar; + +beginchar(currentlocation,12u#+2appr#,asc_height#,asc_depth#); + "not identity sign"; + pickup tiny.nib; for i=1 upto 6: pos[i](rth,90); endfor + lft x1=appr; x1=x3=x5; rt x2=w-appr; x2=x4=x6; + y1=y2; y3=y4; y5=y6; y3=math_axis; y1-y3=y3-y5=spread1; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % middle bar + filldraw stroke z5e..z6e; % lower bar + lft x8l=w-rt x7r=appr+hround 1.75u; + top y7r=h+eps; 0.5[bot y8l,top y7r]=math_axis; + adjust_slanted_bar(8l,7r,8r,7l)(rth-tiny.breadth,-1); + filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Not similarity sign"; + currentpicture:=sim_picture; + pickup tiny.nib; + lft x2l-Appr=w-Appr-rt x1r=hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny.breadth,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Not similarity-similarity sign"; + currentpicture:=(sim_picture shifted(0,0.5(spread1+rth))) + +(sim_picture shifted(0,-0.5(spread1+rth))); + pickup tiny.nib; + lft x2l-Appr=w-Appr-rt x1r=hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny.breadth,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Not similarity-bar sign"; + currentpicture:=sim_picture shifted(0,vround 0.5spread1); + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); + lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis-spread1; + filldraw stroke z1e..z2e; + lft x4l-Appr=w-Appr-rt x3r=hround 1.75u; + top y3r=h+eps; 0.5[bot y4l,top y3r]=math_axis; + adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny.breadth,-1); + filldraw stroke z3e..z4e; penlabels(1,2,3,4); +endchar; + +beginchar(currentlocation,12u#+2appr#,asc_height#,asc_depth#); + "Not similarity-equal sign"; + currentpicture:=sim_picture shifted(0,spread1); + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y3=y4=math_axis-1.5spread1; y1-y3=y2-y4=spread1; + lft x6l-appr=w-appr-rt x5r=hround 1.75u; + top y5r=h+eps; 0.5[bot y6l,top y5r]=math_axis; + adjust_slanted_bar(6l,5r,6r,5l)(rth-tiny.breadth,-1); + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z6e..z5e; penlabels(1,2,3,4,5,6); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Not smile-frown sign"; + pickup tiny.nib; + pos2(rth,90); pos5(rth,90); + 0.5[y2,y5]=math_axis; y2-y5=spread1; + y1l=y3l=y2l+0.5spread1; y4r=y6r=y5r-0.5spread1; + lft x1l=lft x4r=appr; rt x3l=rt x6r=w-appr; x2=x5=0.5[x1l,x3l]; + z1'-z1l=(z2l-z1l) xscaled 1/2; z4'-z4r=(z5r-z4r) xscaled 1/2; + z3'-z3l=(z2l-z3l) xscaled 1/2; z6'-z6r=(z5r-z6r) xscaled 1/2; + pos1(rth,angle(z1'-z1l)+90); pos4(rth,angle(z4'-z4r)+90); + pos3(rth,angle(z3'-z3l)-90); pos6(rth,angle(z6'-z6r)-90); + filldraw stroke z1e{z1'-z1l}...z2e{right}...z3e{z3l-z3'}; + filldraw stroke z4e{z4'-z4r}...z5e{right}...z6e{z6r-z6'}; + lft x8l=w-rt x7r=Appr+hround 1.75u; + top y7r=h+eps; 0.5[bot y8l,top y7r]=math_axis; + adjust_slanted_bar(8l,7r,8r,7l)(rth-tiny.breadth,-1); + filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); labels(1',3',4',6'); +endchar; + +beginchar(currentlocation,7u#+2appr#,asc_height#,asc_depth#); + "Not divide"; + pickup tiny.nib; pos1(rth0,0); pos2(rth0,0); + rt x1r=rt x2r=hround(0.5w+0.5rth0); + top y1=h; bot y2=-d; + lft x3l=appr-eps; x1l-x3l=x4r-x1r; x3l=x3r; x4l=x4r; + h-top y4r=bot y3l+d=hround 0.15(h+d)-eps; + a:=rth0-tiny; b:=abs(z4r-z3l); + y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b)); + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar;
\ No newline at end of file diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb10.mf new file mode 100644 index 00000000000..09b84c5fdf1 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb10.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathb10.mf (math serie B at 10 points) +% last modification: May 16, 2005. + +font_identifier:="mathb"; font_size 10pt#; +font_coding_scheme "mathb"; + +input mathprmt; +input mathbdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb12.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb12.mf new file mode 100644 index 00000000000..5b76c09a478 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb12.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathb12.mf (math serie B at 12 points) +% last modification: May 16, 2005. + +font_identifier:="mathb"; font_size 10pt#; +font_coding_scheme "mathb"; + +input mathprmt; +input mathbdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb5.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb5.mf new file mode 100644 index 00000000000..71edb0f1675 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb5.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathb5.mf (math serie B at 5 points) +% last modification: May 16, 2005. + +font_identifier:="mathb"; font_size 5pt#; +font_coding_scheme "mathb"; + +input mathprmt; +input mathbdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb6.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb6.mf new file mode 100644 index 00000000000..d9e7eb041eb --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb6.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathb6.mf (math serie B at 6 points) +% last modification: May 16, 2005. + +font_identifier:="mathb"; font_size 6pt#; +font_coding_scheme "mathb"; + +input mathprmt; +input mathbdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb7.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb7.mf new file mode 100644 index 00000000000..3267f29cbbb --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb7.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathb7.mf (math serie B at 7 points) +% last modification: May 16, 2005. + +font_identifier:="mathb"; font_size 7pt#; +font_coding_scheme "mathb"; + +input mathprmt; +input mathbdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb8.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb8.mf new file mode 100644 index 00000000000..95fe675b7c3 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb8.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathb8.mf (math serie B at 8 points) +% last modification: May 16, 2005. + +font_identifier:="mathb"; font_size 8pt#; +font_coding_scheme "mathb"; + +input mathprmt; +input mathbdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb9.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb9.mf new file mode 100644 index 00000000000..0994cff7734 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb9.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathb9.mf (math serie B at 9 points) +% last modification: May 16, 2005. + +font_identifier:="mathb"; font_size 9pt#; +font_coding_scheme "mathb"; + +input mathprmt; +input mathbdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathbase.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathbase.mf new file mode 100644 index 00000000000..03619996ddc --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathbase.mf @@ -0,0 +1,664 @@ +% mathematical symbols by Anthony Phan. +% file: mathbase.mf (base file) +% last modification: May 16, 2005. + +mathbase := 1; % when |mathbase| is known, this file has been input + +newinternal slant, currentbreadth, math_spread, superness, stress; +slant := 0; superness := 1/sqrt 2; stress := 0.5; + +string main_name_string, tmp_string, +extra_beginchar_save, extra_endchar_save; + +picture tmp_picture; +path tmp_path, tmpp_path; + +boolean true_size, tmp_boolean, dagesh; +true_size := false;% see mathhbrw.mf + +pair both; both = (1, 1); + +def autorounded = interim autorounding := 2 enddef; + +def localtransform = save currenttransform; + transform currenttransform; currenttransform +enddef; + +numeric currentlocation_; + +vardef currentlocation = + currentlocation_ := currentlocation_+1; + currentlocation_-1 +enddef; + +def main_name_with(suffix $) = + scantokens(main_name_string & str$) +enddef; + +def math_setup = + autorounding := 0; smoothing := 0; + appr# := u#+letter_fit#; Appr# := 1.5u#+letter_fit#; + numeric paren_depth#, asc_depth#, body_depth#; + 0.5[body_height#, -paren_depth#] = math_axis#; + 0.5[asc_height#, -asc_depth#] = math_axis#; + body_depth# := desc_depth#+body_height#-asc_height#; + % + define_pixels(u, dh, dish, stem_corr, vair_corr); + define_whole_blacker_pixels(hair, stem, curve, + cap_hair, cap_stem, cap_curve, dtsz, ast_curve, ast_stem); + define_whole_vertical_blacker_pixels(vair, slab);% cap_bar... + define_whole_vertical_pixels(body_height, asc_height, + cap_height, fig_height, x_height, desc_depth, + asc_depth, body_depth, paren_depth); + define_whole_pixels(letter_fit, appr, Appr, + crisp, tiny, fine, ast_size); + define_corrected_pixels(o); + define_horizontal_corrected_pixels(ho); + lowres_fix(stem, curve) 1.2; + lowres_fix(cap_stem, cap_curve) 1.2; + lowres_fix(hair, cap_hair) 1.2; + oo := vround(0.5o#*hppp*o_correction)+eps; + dw := (curve#-stem#)*hppp; bold := curve#*hppp+blacker; + vair' := vround(vair+vair_corr); + % + % usual pens. + % + clear_pen_memory; + if fine = 0: fine := 1; fi + null := 0; + forsuffixes $ = null, crisp, tiny, fine: + $.breadth := $; + pickup if $ = 0: nullpen else: pencircle scaled $ fi; + $ := $-eps; $.nib := savepen; breadth_[$.nib] := $; + endfor + $ := 0; + forever: + exitif unknown rth[$].#; + rth[$] := ceiling(rth[$].#*hppp); + pickup pencircle scaled rth[$]; + rule.nib[$] := savepen; + $ := $+1; + endfor + % + % spreads + % + for $ = 0 upto 10: + if known spread[$].#: + spread[$] := 2ceiling(0.5spread[$].#*hppp); + fi + endfor + % + % current transform (slant is not taken into account) + % + currenttransform = identity + yscaled aspect_ratio scaled granularity; + % + % proofing + % + standard_proofing; + use_rule1; +enddef; + +% The following environment enables people to draw a picture +% almost like drawing a character. The resulting picture is +% stored in $_picture and then it can be used in at any +% place later. + +def beginpicture(suffix $)(expr w_sharp, h_sharp, d_sharp) = + begingroup + save picturename; + w := hround(w_sharp*hppp); h := vround(h_sharp*hppp); + d := vround(d_sharp*hppp); clearxy; clearit; clearpen; + string picturename; picturename = str $ &"_picture"; + enddef; + + def endpicture = + expandafter picture scantokens picturename; + scantokens picturename = currentpicture; + endgroup +enddef; + +vardef use_rule@# = + rth := rth@#; rth# := rth@#.#; + rule.nib := rule.nib@#; + math_axis := vround(math_axis#*hppp-0.5rth)+0.5rth; +enddef; + +def numeric_pickup_ primary q = + currentpen := pen_[q]; + pen_lft := pen_lft_[q]; pen_rt := pen_rt_[q]; + pen_top := pen_top_[q]; pen_bot := pen_bot_[q]; + currentpen_path := pen_path_[q]; + if known breadth_[q]: currentbreadth := breadth_[q]; fi +enddef; + +%def compute_spread(expr normal_spread, big_spread) = +% spread# := math_spread[normal_spread, big_spread]; +% spread := 2ceiling((spread#)*hppp/2) +%enddef; + +def v_center(expr h_sharp) = + .5h_sharp+math_axis#, .5h_sharp-math_axis# +enddef; + +def ensure_centering_of(expr stem) = + if hround 0.5(w-hround stem)+0.5hround stem<> 0.5w: + change_width; fi +enddef; + +vardef v_adjust(suffix $, $$)(expr middle, height) = + top y$-middle = middle-bot y$$ = vround 0.5(height-rth)+0.5rth +enddef; + +def arithmetic_bounds = + 12u#+2appr#, math_axis#+6u#, 6u#-math_axis# +enddef; + +def padded expr del_sharp = + charht := charht+del_sharp; chardp := chardp+del_sharp +enddef; + +%vardef pos@#(expr b, d) = +% if known b: if b <= currentbreadth: errmessage "bad pos"; fi fi +% save d_; pair d_; d_ = dir d; +% z@#r-z@#l+penoffset d_ of currentpen+penoffset -d_ of currentpen = b*d_; +% x@# = .5(x@#l+x@#r); y@# = .5(y@#l+y@#r) enddef; + +vardef pos@#(expr b, d) = + if known b: if b <= currentbreadth: errmessage "bad pos"; fi fi + (x@#r-x@#l, y@#r-y@#l) = (b-currentbreadth, 0) rotated d; + x@# = .5(x@#l+x@#r); y@# = .5(y@#l+y@#r) enddef; + +vardef stroke text t = + forsuffixes e = l, r: path_.e := t;endfor + if cycle path_.l: + errmessage "Beware: `stroke' doesn't work with cycles"; + fi + path_.l -- reverse path_.r -- cycle +enddef; + +% DIAGONALS + +def diag_width(expr $, $$) = + $/abs sind angle $$ +enddef; + +%vardef diag_height(expr $, $$) = +% $/abs cosd angle $$ +%enddef; + +% $ <---> $$$; $$ <---> $$$$. sign = +1 for \, -1 for /. + +vardef adjust_slanted_bar(suffix $, $$, $$$, $$$$)(expr thickness, sign) = + save a, b; + if abs(y$$-y$) = thickness: + (a1, a2) = (z$$-z$); + if a1 = 0: b = 0;% b should then be infinite. + else: b = if sign<0: - fi (a1++a2)*((a1++a2)/2a1); + fi + else: + a = angle(z$$-z$); + b = (cosd(a)/sind(a) if sign<0: - else: + fi + (((y$$-y$)/(thickness)/sind(a))+-+1)) + /(((y$$-y$)/(thickness))**2-1)*(y$$-y$); + fi + z$$$ = (x$-b, y$); z$$$$ = (x$$+b, y$$) +enddef; + +% supplementary points for diagonal strokes +% as in cm's \#. (see MetaFontbook, p. 200--201) +% Well, ... + +vardef diag_stroke.@#(suffix $, $$, s)(text y_list) = + z$.@#--for y_ = y_list: + (good.x(((x$.s-x$$.s)/(y$.s-y$$.s))*(y_-y$$r)+x$$.s), y_) + +z$.@#-z$.s + --endfor z$$.@# +enddef; + +% CIRCLES, ELLIPSES AND RELATED THINGS + +primarydef w up_to_right z = + w{0, ypart(z-w)} + ...(superness[xpart z, xpart w], + superness[ypart w, ypart z]){z-w} + ...{xpart(z-w), 0}z +enddef; + +let up_to_left = up_to_right; +let down_to_right = up_to_right; +let down_to_left = up_to_right; + +primarydef w right_to_up z = + w{xpart(z-w), 0} + ...(superness[xpart w, xpart z], + superness[ypart z, ypart w]){z-w} + ...{0, ypart(z-w)}z +enddef; + +let right_to_down = right_to_up; +let left_to_up = right_to_up; +let left_to_down = right_to_up; + +def ellipse_set(suffix $, @, @@, $$) = + 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 hellipse_set(suffix $, @, @@, $$) = + alpha_ := (y@-y$)/slope; beta_ := x$$-x$-(y$$-y$)/slope; + gamma_ := alpha_/beta_; + x@-x$ = .5(beta_-alpha_*gamma_); + y@@-y$ = -2gamma_*(y@-y$)/(1+gamma_*gamma_); + x@@-x$$ = (y@@-y$$)/slope +enddef; + +vardef adjust_elliptic_arc(suffix $, $$, $$$) = + save a, b; + if known (y$$$-y$): a = (1+-+((y$$$-y$)/(y$$-y$))); + x$$-x$ = (x$$$-x$)/(1+a); b = (1+-+((x$$$-x$$)/(x$$-x$))); + else: b = (1+-+((x$$$-x$$)/(x$$-x$))); + y$$$-y$ = (y$$-y$)*b; a = (1+-+((y$$$-y$)/(y$$-y$))); + fi + y$$$' = y$$; x$$$' = (((1-b)/a)*(b/a))[x$$$, x$$]; +enddef; + +def flatcup(expr zi, zii, ziii) = + zi..controls (xpart zi, flatness[ypart zi, ypart zii]) + and (xpart zi, ypart zii) + ..zii..controls (xpart ziii, ypart zii) + and (xpart ziii, flatness[ypart ziii, ypart zii])..ziii +enddef; + +% DOTS + +boolean full_dot; full_dot := true; + +def dot(suffix $, $$) = + autorounded; + if full_dot: filldraw else: draw fi + dot_path($, $$); full_dot := true; +enddef; + +def dot_path(suffix $, $$) = + (x$, 0.5[y$, y$$]) down_to_right (0.5[x$, x$$], y$) right_to_up + (x$$, 0.5[y$, y$$]) up_to_left (0.5[x$, x$$], y$$) left_to_down + (x$, 0.5[y$, y$$])...cycle +enddef; + +vardef adjust_dot@#(expr center, diameter, h_fit, v_fit) = + if v_fit: save y_min, y_max; + bot y_min = vround(ypart center-0.5diameter)-eps; + top y_max = vround(ypart center+0.5diameter)+eps; + y@#'-ypart center = ypart center-y@# + = max(y_max-ypart center, ypart center-y_min); + else: + bot y@# = vround(ypart center-0.5diameter)-eps; + top y@#'-bot y@# = vround diameter+2eps; fi + if h_fit: save x_min, x_max; + lft x_min = hround(xpart center-0.5diameter)-eps; + rt x_max = hround(xpart center+0.5diameter)+eps; + x@#'-xpart center = xpart center-x@# + = max(x_max-xpart center, xpart center-x_min); + else: + lft x@# = vround(xpart center-0.5diameter)-eps; + rt x@#'-lft x@# = hround(diameter)+2eps; fi + labels(@#, @#'); +enddef; + +% VERY DESIGN DEPENDENT MACROS + +% DAGGERS AND ASTERISKS + +vardef dagger_stroke@#(expr height, curve, stem, u_) = + save alpha, a, b, c, R; + alpha = angle u_-90; R = 0.5(curve-currentbreadth); + a = stress*(height-curve+0.5currentbreadth)+R; + b = 0.5(stem-currentbreadth); + c = (a*R-b*sqrt(a**2+b**2-R**2))/(a**2+b**2); + z@#c-z@# = (height-0.5currentbreadth)*u_; + z@#c-z@#b = R*u_; z@#d-z@#b = -a*u_; z@#a = (c*(R/a))[z@#b, z@#d]; + penpos@#(2b, alpha); penpos@#d(2b, alpha); + penpos@#a(2R*(1+-+c), alpha); penpos@#b(2R, alpha); + penlabels(@#a, @#b, @#c, @#d, @#); + z@#r{u_}...z@#a.r{z@#a.r-z@#d.r}...z@#b.r{u_}... + (superness[z@#b, z@#b.r]+superness[z@#b, z@#c]-z@#b){z@#c-z@#b.r} + ...z@#c{z@#b.l-z@#b.r}... + (superness[z@#b, z@#b.l]+superness[z@#b, z@#c]-z@#b){z@#b.l-z@#c} + ...z@#b.l{-u_}...z@#a.l{z@#d.l-z@#a.l}...{-u_}z@#l +enddef; + +% ARROWS + +numeric arrow_height, arrow_width, arrow_breadth, arrow_stress, +arrow_tense[], arrow_time, double_arrow_height, double_arrow_width, +double_arrow_tense, double_arrow_flatness; + +boolean arrow_head_fitting; +arrow_head_fitting := false; + +vardef arrow_head@#(expr p, side) = + save a, t; numeric a[]; + a1 = angle direction infinity of p; pos@#a(rth, a1-90); + z@#a = point infinity of p + if arrow_head_fitting: -0.5currentbreadth*dir a1 fi; + t := xpart(p intersectiontimes (halfcircle rotated(a1+90) + scaled (2arrow_stress*arrow_height-currentbreadth) + shifted z@#a)); + a2 := angle direction t of p; arrow_time := t; + z@# = point t of p; pos@#(rth, a2-90); + z@#-z@#c = (1-arrow_stress)*arrow_height*dir a2; + z@#c.r-z@#c = z@#c-z@#c.l = 0.5(arrow_width-currentbreadth)*dir(a2-90); + z@#b.r-z@#c.r = z@#b.l-z@#c.l = max(arrow_breadth-currentbreadth, 0)*dir a2; + z@#b = p intersectionpoint (z@#b.r..z@#b.l); + t := xpart(p intersectiontimes (halfcircle rotated(a1+90) + scaled (2arrow_tense2[1, arrow_stress]*arrow_height-currentbreadth) + shifted z@#a)); + a3 = angle direction t of p; z@#' = point t of p; pos@#'(rth, a3-90); + z@#a' = if arrow_tense1<1: + p intersectionpoint (halfcircle rotated(a1+90) + scaled(arrow_tense1[length(z@#b-z@#a), 0]*2) shifted z@#a); + else: z@#a; fi + filldraw + if side = right: z@#a.l{-dir a1}...{-dir a2}z@#l + else: z@#a...{z@#b.l-z@#a'}z@#b.l--z@#c.l{z@#'l-z@#c.l}...z@#l + fi -- + if side = left: z@#r{dir a2}...z@#a.r{dir a1} + else: z@#r...{z@#c.r-z@#'r}z@#c.r--z@#b.r{z@#a'-z@#b.r}...z@#a + fi -- cycle; + labels(@#a'); penlabels(@#', @#a, @#b, @#c); + arrow_head_fitting := false; +enddef; + +vardef double_arrow_head@#(expr head, vect) = + save a, b, u_, v_; pair u_, v_; + u_ = unitvector vect; v_ = u_ rotated 90; + z@# = z@#' = head; + z@#-z@#m = double_arrow_height*u_; + pos@#'(rth, angle u_-90); + pos@#m(rth, angle u_-90); + z@#-z@#b.r = z@#m-z@#m.b = 0.5rth*double_arrow_flatness*v_; + a = angle(-double_arrow_height, 0.5double_arrow_width); + b = (cosd(a)/sind(a)+ + ((0.5double_arrow_width/rth/sind(a))+-+1)) + /((0.5double_arrow_width/rth)**2-1) + *0.5double_arrow_width; + z@#c.l = double_arrow_tense[z@#m.b, z@#b.r-b*u_]; + z@#m-z@#a.l = 0.5double_arrow_width*v_; + b := rth/abs sind(angle(z@#a.l-z@#c.l)-angle(-u_)); + z@#a.r-z@#a.l = z@#c.r-z@#c.l = b*u_; + z@#ab = 0.5[z@#a.r, z@#c.r]; + penpos@#b(rth, angle(z@#b.r-z@#ab)-90); + % + save p, t; path p[]; numeric t[]; + z@#a = 0.5[z@#a.r, z@#a.l]; + p1 = z@#a{z@#ab-z@#a.r}...{z@#b.r-z@#ab}z@#b; + p3 = z@#a.r{z@#ab-z@#a.r}...{z@#b.r-z@#ab}z@#b.r; + p5 = if (z@#b.l-z@#) dotprod v_<0: + z@#'l+(u_ dotprod (z@#b.l-z@#))*u_-- fi + z@#b.l{z@#ab-z@#b.r}...{z@#a.r-z@#ab}z@#a.l; + p2 = reverse p1 reflectedabout (z@#, z@#m); + p4 = reverse p3 reflectedabout (z@#, z@#m); + p6 = reverse p5 reflectedabout (z@#, z@#m); + t5 = xpart(p5 intersectiontimes (z@#+eps*v_ .. z@#m+eps*v_)); + t6 = xpart(p6 intersectiontimes (z@#-eps*v_ .. z@#m-eps*v_)); + fill p3--z@#+eps*v_--subpath (t5, length p5) of p5--cycle; + fill z@#-eps*v_--p4--subpath (0, t6) of p6--cycle; + forsuffixes $ = l, , r: + z@#r$ = p1 intersectionpoint + ((z@#'$..z@#m$) shifted (-0.5spread1*v_)); + z@#l$ = p2 intersectionpoint + ((z@#'$..z@#m$) shifted (0.5spread1*v_)); + endfor + penlabels(@#, @#', @#a, @#b, @#c, @#r, @#l, @#m); labels(@#ab, @#m.b); +enddef; + +% ARM, BEAK and SERIFS (personal taste) + +% vardef arm@#(expr beak, beak_jut, breadth, darkness, orientation, x_limit) = +% save a; a = 90; +% if orientation = up: y@#a = min(y@#l, y@#r); y@#d = max(y@#l, y@#r); +% y@#b-y@#d = vround beak; a := -a; +% else: y@#a = max(y@#l, y@#r); y@#d = min(y@#l, y@#r); +% y@#b-y@#d = -vround beak; fi +% if x_limit>x@#: rt x@#b = hround x_limit; x@#b-x@#a = hround beak_jut; +% else: lft x@#b = hround x_limit; x@#b-x@#a = -hround beak_jut; a := -a; fi +% z@#c-z@#b = max(0, breadth-currentbreadth) +% *unitvector(z@#a-z@#b)rotated a; +% z@#d-z@#c = whatever*(z@#a-z@#b); +% filldraw z@#c{z@#d-z@#c}... +% if y@#l = y@#.d: darkness[z@#d, 0.5[z@#c, z@#l]]{z@#l-z@#c} +% ...z@#l{z@#l-z@#d}--z@#r +% else: darkness[z@#d, 0.5[z@#c, z@#r]]{z@#r-z@#c} +% ...z@#r{z@#r-z@#d}--z@#l fi +% --z@#a--z@#b--cycle; +% labels(@#a, @#b, @#c, @#d); +% enddef; + +vardef arm@#(expr beak, beak_jut, hair, darkness, direction, limit) = + y@#d = y@#r; y@#a = y@#b = y@#r if ypart direction > 0: + else: - fi vround beak; + y@#c = y@#l; + rt x@#b = hround limit; lft x@#a = hround(limit-hair); + x@#b-x@#c = hround beak_jut; z@#d-z@#a = whatever*(z@#c-z@#b); + filldraw z@#r{z@#d-z@#r}...darkness[z@#d, 0.5[z@#r, z@#a]]... + z@#a{z@#a-z@#d}--z@#b--z@#c--z@#l--cycle; + labels(@#a, @#b, @#c, @#d); +enddef; + +vardef serif(suffix $, $$) + (expr bracket, left_jut, left_slab, dished_left, left_dish, + right_jut, right_slab, dished_right, right_dish) = + save a, b; b = cosd angle(z$$-z$); + a = max(0.5left_jut, 0.5right_jut, bracket); + if y$<y$$: top y$b = bot y$+vround left_slab; + top y$g = bot y$+vround right_slab; + y$a-y$b = y$h-y$g = bracket; + top y$c-bot y$d = left_slab+left_dish; + top y$f-bot y$e = right_slab+right_dish; + else: bot y$b = top y$-vround left_slab; + bot y$g = top y$-vround right_slab; + y$a-y$b = y$h-y$g = -bracket; + bot y$c-top y$d = -left_slab-left_dish; + bot y$f-top y$e = -right_slab-right_dish; + fi + if dished_left: y$c = y$b; else: y$d = y$; fi + if dished_right: y$f = y$g; else: y$e = y$; fi + if x$l<x$r: z$a = whatever[z$l, z$$l]; + z$h = whatever[z$r, z$$r]; + x$c = x$d = x$l-hround(left_jut-b*abs(y$b-y$)); + x$e = x$f = x$r+hround(right_jut+b*abs(y$g-y$)); + x$l-x$b = min(left_jut, a); + x$g-x$r = min(right_jut, a); + else: z$a = whatever[z$r, z$$r]; + z$h = whatever[z$l, z$$l]; + x$c = x$d = x$r-hround(left_jut-b*abs(y$b-y$)); + x$e = x$f = x$l+hround(right_jut+b*abs(y$g-y$)); + x$r-x$b = min(left_jut, a); + x$g-x$l = min(right_jut, a); + fi + filldraw z$a{z$-z$$}...z$b{left}...z$c--z$d...z${right} + ...z$e--z$f...z$g{left}...{z$$-z$}z$h--cycle; + labels($a, $b, $c, $d, $e, $f, $g, $h); +enddef; + +% SIM: drawn once, used many times + +def make_sim_picture = + if unknown sim_picture: + beginpicture(sim, 12u#+2appr#, v_center(spread1#+rth#)); + pickup tiny.nib; + save a, b; + a = angle(1, 1.25(h+d)/u); + b = angle(1, -(h+d)/4.5u); + pos1(hair, a+90); pos9(hair, a+90); pos5(stem, b+90); + bot y7l = -d-eps; top y3r = h+eps; + y1l = good.y 0.225[y7l, y3r]; y3r-y9r = y1l-y7l; + top y3r-bot y3l = top y7r-bot y7l = vround 0.5[hair, stem]; + lft x1r = Appr-eps; rt x9l = w-Appr+eps; + z5 = 0.5[z1, z9]; + forsuffixes $ = r, l: y2$ = y3$ = y4$; y6$ = y7$ = y8$; + z2$-z1$ = whatever*dir a; z8$-z9$ = whatever*dir a; + z4$-z5$ = whatever*dir b; z6$-z5$ = whatever*dir b; + x3$ = 0.6525[x2$, x4$]; x7$ = 0.6525[x8$, x6$]; + endfor + filldraw stroke z1e..controls 0.66[z1e, z2e] and 0.66[z3e, z2e] + ..z3e..controls 0.4[z3e, z4e] and 1[z5e, z4e]% 1 for inflexion point + ..z5e..controls 1[z5e, z6e] and 0.4[z7e, z6e] + ..z7e..controls 0.66[z7e, z8e] and 0.66[z9e, z8e]..z9e; + %penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9); + endpicture; + fi +enddef; + +% TRIANGLES + +% makes an equilateral triangle optionally fully centered. + +numeric triangle_foot; + +vardef set_triangle@#(expr orientation, a, rth, centered, fit_bounds) = + if orientation = left: + rt x1@#r = rt x3@#r = if centered: + hround(0.5w+0.5a/sqrt3); + else: hround triangle_foot; fi + x1@#r-x2@#r = hround(0.5a*sqrt(3)-currentbreadth)+eps; + y2@#r = good.y 0.5[-d, h]; + y3@#r-y2@#r = y2@#r-y1@#r = vround(0.5(a-currentbreadth))+eps; + elseif orientation = right: + lft x1@#r = lft x3@#r = if centered: + hround(0.5w-0.5a/sqrt3); + else: hround triangle_foot; fi + x2@#r-x1@#r = hround(0.5a*sqrt(3)-currentbreadth)+eps; + y2@#r = good.y 0.5[-d, h]; + y2@#r-y3@#r = y1@#r-y2@#r = vround(0.5(a-currentbreadth))+eps; + elseif orientation = down: + top y1@#r = top y3@#r = if centered: + vround(math_axis+0.5a/sqrt3); + else: vround triangle_foot; fi + y1@#r-y2@#r = hround(0.5a*sqrt(3)-currentbreadth)+eps; + x2@#r = good.x 0.5w; + x1@#r-x2@#r = x2@#r-x3@#r + = hround 0.5min(a-currentbreadth, w-2appr-currentbreadth+2ho)+eps; + else: + bot y1@#r = bot y3@#r = if centered: + vround(math_axis-0.5a/sqrt3); + else: vround triangle_foot; fi + y2@#r-y1@#r = hround(0.5a*sqrt(3)-currentbreadth)+eps; + x2@#r = good.x 0.5w; + x3@#r-x2@#r = x2@#r-x1@#r + = hround 0.5min(a-currentbreadth, w-2appr-currentbreadth+2ho)+eps; + fi + z1@#l-z1@#r = (rth-currentbreadth)/sind(60) + *(unitvector(z3@#r-z1@#r)+unitvector(z2@#r-z1@#r)); + z2@#l-z2@#r = (rth-currentbreadth)/sind(60) + *(unitvector(z3@#r-z2@#r)+unitvector(z1@#r-z2@#r)); + z3@#l-z3@#r = (rth-currentbreadth)/sind(60) + *(unitvector(z1@#r-z3@#r)+unitvector(z2@#r-z3@#r)); + penlabels(1@#, 2@#, 3@#); +enddef; + +% It's buggy +vardef draw_star@#(expr center, n_edges, radius, tense, angle_init, void) = + save a, b, theta; theta = 360/n_edges; + x@# = good.x xpart center; y@# = good.y ypart center; + % external points + a = radius-0.5currentbreadth; + b = (1-tense)*a*cosd theta/cosd(theta/2); + for $ = 1 upto n_edges: + z@#[2$-1]l = z@#+round(a*dir(($-1)*theta+angle_init)); + z@#[2$]l = z@#+round(b*dir(($-0.5)*theta+angle_init)); + labels(@#[2$-1]l, @#[2$]l); + endfor + if void: + % internal points + a := (rth-currentbreadth)/ + abs sind(angle(z@#[1]l-z@#[2]l)-angle(z@#[1]l-z@#)); + b := (rth-currentbreadth)/ + abs sind(angle(z@#[2]l-z@#[1]l)-angle(z@#[2]l-z@#)); + for $ = 1 upto n_edges: + z@#[2$-1]l-z@#[2$-1]r = a*dir(($-1)*theta+angle_init); + z@#[2$]l-z@#[2$]r = b*dir(($-0.5)*theta+angle_init); + labels(@#[2$-1]r, @#[2$]r); + endfor + filldraw stroke for $ = 1 upto 2n_edges: z@#[$]e--endfor z@#[1]e; + else: + filldraw for $ = 1 upto 2n_edges: z@#[$]l--endfor cycle; + fi +enddef; + +% ADMINISTRATION + +% PROOFING + +def horizontal_rules_list = + -body_depth, -desc_depth, x_height, cap_height, asc_height, body_height +enddef; + +def makebox(text rule) = + for y = -d.o_, 0, h.o_: + rule((-xoffset, y), (w-xoffset, y)); endfor + for y = horizontal_rules_list: + rule((appr-xoffset, y), (w-appr-xoffset, y)); + endfor + for x = -xoffset, appr-xoffset, w-appr-xoffset, w-xoffset: + rule((x, -d.o_), (x, h.o_)); endfor + for x = appr+u-xoffset step u until w-appr-1.5-xoffset: + rule((x, -d.o_), (x, h.o_)); endfor + if charic<>0: + rule((w-xoffset+charic*hppp, h.o_), + (w-xoffset+charic*hppp, .5[h, -d].o_)); fi +enddef; + +def accents_proofing = + for $ = 0 upto 19: + makelabel("", (0.5w-xoffset, 0.5x_height) + +(4u*cosd($*360/20), 0.5x_height*sind($*360/20))); + endfor +enddef; + +def diacritics_proofing = + if proofing>0: extra_endchar := extra_endchar&"accents_proofing;"; fi +enddef; + +def standard_proofing = + if proofing>0: extra_endchar := "additions_to_proof;"; fi +enddef; + +def additions_to_proof = + makelabel.lft("baseline", (-xoffset, 0)); + if h>math_axis: makelabel.lft("math axis", (-xoffset, math_axis)); fi +enddef; + +% `iff' CONSTRUCTION + +let semi_ = ;; let colon_ = :; let endchar_ = endchar; +def iff expr b = if b:let next_ = use_it else:let next_ = lose_it fi; next_ enddef; +def use_it = let : = restore_colon; enddef; +def restore_colon = let : = colon_; enddef; +def lose_it = let endchar = fi; +let ; = fix_ semi_ if false enddef; +def fix_ = let ; = semi_; let endchar = endchar_; +enddef; +def always_iff = let : = endgroup; killboolean enddef; +def killboolean text t = use_it enddef; + +% Not the fastest solution +def beginchar(expr c, w_sharp, h_sharp, d_sharp) = + iff known c: + begingroup + charcode := byte c; + charwd := w_sharp; + charht := h_sharp; + chardp := d_sharp; + w := hround(charwd*hppp); + h := vround(charht*hppp); + d := vround(chardp*hppp); + charic := 0; clearxy; clearit; + clearpen; + scantokens extra_beginchar; + enddef; + + endinput; diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathbdel.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathbdel.mf new file mode 100644 index 00000000000..0a178a37f26 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathbdel.mf @@ -0,0 +1,1456 @@ +% mathematical symbols by Anthony Phan. +% file: mathbdel.mf (big delimiters) +% 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; + +% Since I thinck that adjust_fit's strategy is too +% complex, I just cut actual width in three parts: +% ``visible'' width, ``internal'' adjustment and +% finally ``external'' adjustment. Letter_fit# is +% added automatically (there is no use of appr#'s). + +vardef set_width(expr inner_sharp, internal_sharp, external_sharp) = + internal_adjustment := hround((internal_sharp+letter_fit#)*hppp); + external_adjustment := hround((external_sharp+letter_fit#)*hppp); + inner_sharp+internal_sharp+external_sharp+2letter_fit# +enddef; + +% PARENTHESIS (look at cm) + +def tmp_program(expr orientation, hair, stem, do_top, do_bot) = + pickup fine.nib; + pos1(hround hair, 0); pos2(hround stem, 0); pos3(hround hair, 0); + if orientation = left: + rt x1r = rt x3r = hround(w-internal_adjustment-0.25u+0.5hair); + lft x2l = external_adjustment+hround 0.25u; + else: + lft x1l = lft x3l = hround(internal_adjustment+0.25u-0.5hair); + rt x2r = w-external_adjustment-hround 0.25u; + fi + if do_top and do_bot: + top y1 = h; bot y3 = -d; y2 = 0.5[y1, y3]; + filldraw stroke z1e{3(x2e-x1e), y2-y1}...z2e{down} + ...{3(x3e-x2e), y3-y2}z3e; + elseif do_top: + top y1 = h; y2 = -d-eps; + filldraw stroke z1e{3(x2e-x1e), y2-y1}...z2e{down}; + elseif do_bot: + y2 = h+eps; bot y3 = -d; + filldraw stroke z2e{down}...{3(x3e-x2e), y3-y2}z3e; + else: + pos2'(hround stem, 0); x2' = x2; + y2 = h+eps; y2' = -d-eps; + filldraw stroke z2e..z2'e; + fi + penlabels(1, 2, 3, 2'); +enddef; + +beginchar(paren_left, + 5u#+2appr#, body_height#, paren_depth#); + "Left parenthesis"; +% italcorr body_height#*slant-0.5u#; + pickup fine.nib; + pos1(vair, 0); pos2(0.75[hair, stem], 0); pos3(vair, 0); + rt x1r = rt x3r = w-appr; lft x2l = hround(x1-4u); + top y1 = h; y2 = 0.5[y1, y3] = math_axis; + filldraw stroke z1e{3(x2e-x1e), y2-y1}...z2e{down} + ...{3(x3e-x2e), y3-y2}z3e; + penlabels(1, 2, 3); +endchar; + +beginchar(paren_left_big, %7u#, + set_width(5u#, (1-0.25)*u#, (1+1.5)*u#), rth.frac#, 2dh#-rth.frac#); + "big left parenthesis"; +% adjust_fit(1.5u#, -.25u#); + tmp_program(left, hair, stem, true, true); +endchar; + +beginchar(paren_left_Big, %9u#, + set_width(7u#, (1-0.25)*u#, (1+2)*u#), rth.frac#, 3dh#-rth.frac#); + "Big left parenthesis"; +% adjust_fit(2u#, -.25u#); + tmp_program(left, rth1, .5[stem, bold], true, true); +endchar; + +beginchar(paren_left_bigg, %11u#, + set_width(9u#, (1-0.25)*u#, (1+2.5)*u#), rth.frac#, 4dh#-rth.frac#); + "bigg left parenthesis"; +% adjust_fit(2.5u#, -.25u#); + tmp_program(left, rth1+.2dw, bold, true, true); +endchar; + +beginchar(paren_left_Bigg, %11.5u#, + set_width(9.5u#, (1-0.25)*u#, (1+3)*u#), rth.frac#, 5dh#-rth.frac#); + "Bigg left parenthesis"; +% adjust_fit(3u#, -.25u#); + tmp_program(left, rth1+.4dw, bold+dw, true, true); +endchar; + +beginchar(paren_left_top, %12u#, + set_width(10u#, (1-0.25)*u#, (1+4)*u#), rth.frac#, 3dh#-rth.frac#); + "left perenthesis' extension top"; +% adjust_fit(4u#, -.25u#); pickup fine.nib; + tmp_program(left, rth1+.6dw, bold+2dw, true, false); +endchar; + +beginchar(paren_left_bot, %12u#, + set_width(10u#, (1-0.25)*u#, (1+4)*u#), rth.frac#, 3dh#-rth.frac#); + "left parenthesis' extension bot"; +% adjust_fit(4u#, -.25u#); pickup fine.nib; + tmp_program(left, rth1+.6dw, bold+2dw, false, true); +endchar; + +beginchar(paren_left_mid, %12u#, + set_width(10u#, (1-0.25)*u#, (1+4)*u#), 0, dh#); + "left parenthesis' extension mid"; +% adjust_fit(4u#, -.25u#); pickup fine.nib; + tmp_program(left, rth1+.6dw, bold+2dw, false, false); +endchar; + +beginchar(paren_right, + 5u#+2appr#, body_height#, paren_depth#); + "Right parenthesis"; +% italcorr math_axis#*slant-0.5u#; + pickup fine.nib; + pos1(vair, 0); pos2(0.75[hair, stem], 0); pos3(vair, 0); + lft x1l = lft x3l = appr; rt x2r = hround(x1+4u); + top y1 = h; y2 = 0.5[y1, y3] = math_axis; + filldraw stroke z1e{3(x2e-x1e), y2-y1}...z2e{down} + ...{3(x3e-x2e), y3-y2}z3e; + penlabels(1, 2, 3); +endchar; + +beginchar(paren_right_big, %7u#, + set_width(5u#, (1-0.25)*u#, (1+1.5)*u#), rth.frac#, 2dh#-rth.frac#); + "big right parenthesis"; +% adjust_fit(-.25u#, 1.5u#); + tmp_program(right, hair, stem, true, true); +endchar; + +beginchar(paren_right_Big, %9u#, + set_width(7u#, (1-0.25)*u#, (1+2)*u#), rth.frac#, 3dh#-rth.frac#); + "Big right parenthesis"; +% adjust_fit(-.25u#, 2u#); + tmp_program(right, rth1, .5[stem, bold], true, true); +endchar; + +beginchar(paren_right_bigg, %11u#, + set_width(9u#, (1-0.25)*u#, (1+2.5)*u#), rth.frac#, 4dh#-rth.frac#); + "bigg right parenthesis"; +% adjust_fit(-.25u#, 2.5u#); + tmp_program(right, rth1+.2dw, bold, true, true); +endchar; + +beginchar(paren_right_Bigg, %11.5u#, + set_width(9.5u#, (1-0.25)*u#, (1+3)*u#), rth.frac#, 5dh#-rth.frac#); + "Bigg right parenthesis"; +% adjust_fit(-.25u#, 3u#); + tmp_program(right, rth1+.4dw, bold+dw, true, true); +endchar; + +beginchar(paren_right_top, %12u#, + set_width(10u#, (1-0.25)*u#, (1.4)*u#), rth.frac#, 3dh#-rth.frac#); + "right parenthesis' extension top"; +% adjust_fit(-.25u#, 4u#); pickup fine.nib; + tmp_program(right, rth1+.6dw, bold+2dw, true, false); +endchar; + +beginchar(paren_right_bot, %12u#, + set_width(10u#, (1-0.25)*u#, (1+4)*u#), rth.frac#, 3dh#-rth.frac#); + "right parenthesis' extension top"; +% adjust_fit(-.25u#, 4u#); pickup fine.nib; + tmp_program(right, rth1+.6dw, bold+2dw, false, true); +endchar; + +beginchar(paren_right_mid, %12u#, + set_width(10u#, (1-0.25)*u#, (1.4)*u#), 0, dh#); + "big right parenthesis' extension mid"; +% adjust_fit(-.25u#, 4u#); pickup fine.nib; + tmp_program(right, rth1+.6dw, bold+2dw, false, false); +endchar; + +% BRACKETS + +def tmp_program(expr orientation, stem, rth, do_top, do_bot, not_ext) = + pickup tiny.nib; + pos1(hround stem, 0); pos2(hround stem, 0); + pos3(vround rth, 90); pos4(vround rth, 90); + pos5(vround rth, 90); pos6(vround rth, 90); + if do_top or not_ext: top y1 = h; else: y1 = h+eps; fi + if do_bot or not_ext: bot y2 = -d; else: y2 = -d-eps; fi + y1 = y3r = y4r; y2 = y5l = y6l; + if orientation = left: + lft x1l = lft x2l = min(external_adjustment, hround 0.5(w-stem)); + rt x3r = rt x5l = w-internal_adjustment; + x4r = x1r; x6l = x2r; + else: + rt x1r = rt x2r = max(w-external_adjustment, hround 0.5(w+stem)); + lft x4r = lft x6l = internal_adjustment; + x3r = x1l; x5l = x2l; + fi + filldraw stroke z1e--z2e; + if do_top: filldraw stroke z3e--z4e; fi + if do_bot: filldraw stroke z5e--z6e; fi + penlabels(1, 2, 3, 4, 5, 6); +enddef; + +% HALF BRACKETS (true heights or depths are to be discussed) + +% okay +beginchar(bracket_upper_left, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Upper left bracket"; + a := d; d := -vround 0.75[-d, h]; + tmp_program(left, 0[0.95stem, 0.95cap_stem], + rth0, true, false, true); + d := a; +endchar; + +% okay +beginchar(bracket_lower_left, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Lower left bracket"; + a := h; h := vround 0.25[-d, h]; + tmp_program(left, 0[0.95stem, 0.95cap_stem], + rth0, false, true, true); + h := a; +endchar; + +% okay +beginchar(bracket_upper_right, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Upper right bracket"; + a := d; d := -vround 0.75[-d, h]; + tmp_program(right, 0[0.95stem, 0.95cap_stem], + rth0, true, false, true); + d := a; +endchar; + +% okay +beginchar(bracket_lower_right, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Lower right bracket"; + a := h; h := vround 0.25[-d, h]; + tmp_program(right, 0[0.95stem, 0.95cap_stem], + rth0, false, true, true); + h := a; +endchar; + +% okay +beginchar(bracket_upper_lower_left, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Upper lower left bracket"; + a := d; d := -vround 0.75[-d, h]; + tmp_program(left, 0[0.95stem, 0.95cap_stem], + rth0, true, false, true); + d := a; + clearxy; + a := h; h := vround 0.25[-d, h]; + tmp_program(left, 0[0.95stem, 0.95cap_stem], + rth0, false, true, true); + h := a; +endchar; + +% okay +beginchar(bracket_upper_lower_right, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Upper lower right bracket"; + a := d; d := -vround 0.75[-d, h]; + tmp_program(right, 0[0.95stem, 0.95cap_stem], + rth0, true, false, true); + d := a; + clearxy; + a := h; h := vround 0.25[-d, h]; + tmp_program(right, 0[0.95stem, 0.95cap_stem], + rth0, false, true, true); + h := a; +endchar; + +% okay +beginchar(bracket_left, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Left bracket"; + tmp_program(left, 0[0.95stem, 0.95cap_stem], + rth0, true, true, true); +endchar; + +beginchar(bracket_left_big, + set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#); + "big left bracket"; + tmp_program(left, 0.125[0.95stem, 0.95cap_stem], + 0.125[rth0, rth1], true, true, true); +endchar; + +beginchar(bracket_left_Big, + set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#); + "Big left bracket"; + tmp_program(left, 0.25[0.95stem, 0.95cap_stem], + 0.25[rth0, rth1], true, true, true); +endchar; + +beginchar(bracket_left_bigg, + set_width(5.5u#, 0.8u#, 3.5u#), rth.frac#, 4dh#-rth.frac#); + "bigg left bracket"; + tmp_program(left, 0.5[0.95stem, 0.95cap_stem], + 0.5[rth0, rth1], true, true, true); +endchar; + +beginchar(bracket_left_Bigg, + set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#); + "Bigg left bracket"; + tmp_program(left, 0.75[0.95stem, 0.95cap_stem], + 0.75[rth0, rth1], true, true, true); +endchar; + +beginchar(bracket_left_top, + set_width(7u#, 1.5u#, 5u#), rth.frac#, 3dh#-rth.frac#); + "left bracket's extension top"; + tmp_program(left, 0.95cap_stem, rth1, true, false, false); +endchar; + +beginchar(bracket_left_bot, + set_width(7u#, 1.5u#, 5u#), rth.frac#, 3dh#-rth.frac#); + "left bracket's extension bottom"; + tmp_program(left, 0.95cap_stem, rth1, false, true, false); +endchar; + +beginchar(bracket_left_mid, + set_width(7u#, 1.5u#, 5u#), 0, dh#); + "left bracket's extension module"; + tmp_program(left, 0.95cap_stem, rth1, false, false, false); +endchar; + +% okay +beginchar(bracket_right, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Right bracket"; + tmp_program(right, 0[0.95stem, 0.95cap_stem], + rth0, true, true, true); +endchar; + +beginchar(bracket_right_big, + set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#); + "big right bracket"; + tmp_program(right, 0.125[0.95stem, 0.95cap_stem], + 0.125[rth0, rth1], true, true, true); +endchar; + +beginchar(bracket_right_Big, + set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#); + "Big right bracket"; + tmp_program(right, 0.25[0.95stem, 0.95cap_stem], + 0.25[rth0, rth1], true, true, true); +endchar; + +beginchar(bracket_right_bigg, + set_width(5.5u#, 0.80u#, 3.5u#), rth.frac#, 4dh#-rth.frac#); + "bigg right bracket"; + tmp_program(right, 0.5[0.95stem, 0.95cap_stem], + 0.5[rth0, rth1], true, true, true); +endchar; + +beginchar(bracket_right_Bigg, + set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#); + "Bigg right bracket"; + tmp_program(right, 0.75[0.95stem, 0.95cap_stem], + 0.75[rth0, rth1], true, true, true); +endchar; + +beginchar(bracket_right_top, + set_width(7u#, 1.5u#, 5u#), rth.frac#, 3dh#-rth.frac#); + "right bracket's extension top"; + tmp_program(right, 0.95cap_stem, rth1, true, false, false); +endchar; + +beginchar(bracket_right_bot, + set_width(7u#, 1.5u#, 5u#), rth.frac#, 3dh#-rth.frac#); + "right bracket's extension bottom"; + tmp_program(right, 0.95cap_stem, rth1, false, true, false); +endchar; + +beginchar(bracket_right_mid, + set_width(7u#, 1.5u#, 5u#), 0, dh#); + "right bracket's extension module"; + tmp_program(right, 0.95cap_stem, rth1, false, false, false); +endchar; + +% okay +beginchar(ceiling_left, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Left ceiling"; + tmp_program(left, 0[0.95stem, 0.95cap_stem], + rth0, true, false, true); +endchar; + +beginchar(ceiling_left_big, + set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#); + "big left ceiling"; + tmp_program(left, 0.125[0.95stem, 0.95cap_stem], + 0.125[rth0, rth1], true, false, true); +endchar; + +beginchar(ceiling_left_Big, + set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#); + "Big left ceiling"; + tmp_program(left, 0.25[0.95stem, 0.95cap_stem], + 0.25[rth0, rth1], true, false, true); +endchar; + +beginchar(ceiling_left_bigg, + set_width(5.5u#, 0.8u#, 3.5u#), rth.frac#, 4dh#-rth.frac#); + "bigg left ceiling"; + tmp_program(left, 0.5[0.95stem, 0.95cap_stem], + 0.5[rth0, rth1], true, false, true); +endchar; + +beginchar(ceiling_left_Bigg, + set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#); + "Bigg left ceiling"; + tmp_program(left, 0.75[0.95stem, 0.95cap_stem], + 0.75[rth0, rth1], true, false, true); +endchar; + +% okay +beginchar(ceiling_right, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Right ceiling"; + tmp_program(right, 0[0.95stem, 0.95cap_stem], rth0, true, false, true); +endchar; + +beginchar(ceiling_right_big, + set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#); + "big right ceiling"; + tmp_program(right, 0.125[0.95stem, 0.95cap_stem], + 0.125[rth0, rth1], true, false, true); +endchar; + +beginchar(ceiling_right_Big, + set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#); + "Big right ceiling"; + tmp_program(right, 0.25[0.95stem, 0.95cap_stem], + 0.25[rth0, rth1], true, false, true); +endchar; + +beginchar(ceiling_right_bigg, + set_width(5.5u#, 0.80u#, 3.5u#), rth.frac#, 4dh#-rth.frac#); + "bigg right ceiling"; + tmp_program(right, 0.5[0.95stem, 0.95cap_stem], + 0.5[rth0, rth1], true, false, true); +endchar; + +beginchar(ceiling_right_Bigg, + set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#); + "Bigg right ceiling"; + tmp_program(right, 0.75[0.95stem, 0.95cap_stem], + 0.75[rth0, rth1], true, false, true); +endchar; + +% okay +beginchar(floor_left, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Left floor"; + tmp_program(left, 0[0.95stem, 0.95cap_stem], + rth0, false, true, true); +endchar; + +beginchar(floor_left_big, + set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#); + "big left floor"; + tmp_program(left, 0.125[0.95stem, 0.95cap_stem], + 0.125[rth0, rth1], false, true, true); +endchar; + +beginchar(floor_left_Big, + set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#); + "Big left floor"; + tmp_program(left, 0.25[0.95stem, 0.95cap_stem], + 0.25[rth0, rth1], false, true, true); +endchar; + +beginchar(floor_left_bigg, + set_width(5.5u#, 0.8u#, 3.5u#), rth.frac#, 4dh#-rth.frac#); + "bigg left floor"; + tmp_program(left, 0.5[0.95stem, 0.95cap_stem], + 0.5[rth0, rth1], false, true, true); +endchar; + +beginchar(floor_left_Bigg, + set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#); + "Bigg left floor"; + tmp_program(left, 0.75[0.95stem, 0.95cap_stem], + 0.75[rth0, rth1], false, true, true); +endchar; + +% okay +beginchar(floor_right, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Right floor"; + tmp_program(right, 0[0.95stem, 0.95cap_stem], + rth0, false, true, true); +endchar; + +beginchar(floor_right_big, + set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#); + "big right floor"; + tmp_program(right, 0.125[0.95stem, 0.95cap_stem], + 0.125[rth0, rth1], false, true, true); +endchar; + +beginchar(floor_right_Big, + set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#); + "Big right floor"; + tmp_program(right, 0.25[0.95stem, 0.95cap_stem], + 0.25[rth0, rth1], false, true, true); +endchar; + +beginchar(floor_right_bigg, + set_width(5.5u#, 0.80u#, 3.5u#), rth.frac#, 4dh#-rth.frac#); + "bigg right floor"; + tmp_program(right, 0.5[0.95stem, 0.95cap_stem], + 0.5[rth0, rth1], false, true, true); +endchar; + +beginchar(floor_right_Bigg, + set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#); + "Bigg right floor"; + tmp_program(right, 0.75[0.95stem, 0.95cap_stem], + 0.75[rth0, rth1], false, true, true); +endchar; + +% BRACES + +def tmp_program(expr orientation, stem, hair, factor, superness) = + pickup fine.nib; + if orientation = left: + rt x5l = w-internal_adjustment; + lft x1 = external_adjustment; + else: + lft x5l = internal_adjustment; + rt x1 = w-external_adjustment; + fi + x3 = 0.5[x1, x5l]; + y1+0.5hair = vround(0.5[-d, h]+0.5hair); pos1(hround hair, 90); + top y5r = h+eps; y3 = 0.5[y1l, y5r]; y2 = y2l = y1l; y1r = y2r; + x2 = factor[x3, x5l]; a := 0.5[angle(z3-z2), 90]; pos5(hair, a); + pos3(stem, angle(z3-z2) if orientation = left: + else: - fi 90); + forsuffixes $ = r, l: + z2$-z3$ = whatever*(z2-z3); + z4$-z3$ = whatever*(z2-z3); + z4$-z5$ = whatever*dir(a+90); + forsuffixes @ = 1, 2, 3, 4, 5: + x@'.$ = x@.$; y@'.$-y1 = y1-y@.$; + endfor + endfor + autorounded; + filldraw stroke z1e{x5e-x1e, 0}... + (z2e+(1-superness)*(z1e-z2e)+(1-superness)*(z3e-z2e)){z3e-z1e} + ...z3e{z3e-z2e}... + (z4e+(1-superness)*(z3e-z4e)+(1-superness)*(z5e-z4e)){z5e-z3e} + ...z5e{z5e-z4e}; + filldraw stroke z1'e{x5'e-x1'e, 0}... + (z2'e+(1-superness)*(z1'e-z2'e)+(1-superness)*(z3'e-z2'e)){z3'e-z1'e} + ...z3'e{z3'e-z2'e}... + (z4'e+(1-superness)*(z3'e-z4'e)+(1-superness)*(z5'e-z4'e)){z5'e-z3'e} + ...z5'e{z5'e-z4'e}; +% filldraw stroke z1e{x5e-x1e, 0}.. +% controls 0.5[z1e, z2e] and z2e ..z3e.. +% controls z4e and 0.5[z5e, z4e] ..z5e; +% filldraw stroke z1'e{x5'e-x1'e, 0}.. +% controls 0.5[z1'e, z2'e] and z2'e ..z3'e.. +% controls z4'e and 0.5[z5'e, z4'e] ..z5'e; + penlabels(1, 2, 3, 4, 5, 1', 2', 3', 4', 5'); +enddef; + +beginchar(brace_left, + set_width(5u#, 1.5u#, 1.5u#), body_height#, paren_depth#); + "left brace"; + tmp_program(left, 0[stem, cap_stem], + 0[hair, rth1], 0.5, superness); +endchar; + +beginchar(brace_left_big, + set_width(6u#, 1.75*u#, 1.75*u#), rth.frac#, 2dh#-rth.frac#); + "big left brace"; + tmp_program(left, 0.125[stem, cap_stem], + 0.125[hair, rth1], 0.5, superness); +endchar; + +beginchar(brace_left_Big, + set_width(7u#, 2*u#, 2*u#), rth.frac#, 3dh#-rth.frac#); + "Big left brace"; + tmp_program(left, 0.25[stem, cap_stem], + 0.25[hair, rth1], 0.5, superness); +endchar; + +beginchar(brace_left_bigg, + set_width(8u#, 2.25*u#, 2.25*u#), rth.frac#, 4dh#-rth.frac#); + "bigg left brace"; + tmp_program(left, 0.5[stem, cap_stem], + 0.5[hair, rth1], 0.5, superness); +endchar; + +beginchar(brace_left_Bigg, + set_width(9u#, 2.5*u#, 2.5*u#), rth.frac#, 5dh#-rth.frac#); + "Bigg left brace"; + tmp_program(left, 0.75[stem, cap_stem], + 0.75[hair, rth1], 0.5, superness); +endchar; + +beginchar(brace_left_top, + set_width(10u#, 3*u#, 3*u#), 0, 1.5dh#); + "left brace's extension top"; + a := cap_stem; + pickup fine.nib; + top y1l = h; top y1l-y2 = 0.5(h+d); y3 = -d-eps; + rt x1 = w-internal_adjustment; + x2 = x3 = hround(0.5[external_adjustment, w-internal_adjustment]-0.5a)+0.5a; + pos1(rth1, -90); pos2(a, 0); pos3(a, 0); + filldraw stroke z1e left_to_down z2e..z3e; + penlabels(1, 2, 3); +endchar; + +beginchar(brace_left_bot, + set_width(10u#, 3*u#, 3*u#), 0, 1.5dh#); + "left brace's extension bot"; + a := cap_stem; + pickup fine.nib; + y1 = h+eps; y2-bot y3l = 0.5(h+d); bot y3l = -d; + rt x3 = w-internal_adjustment; + x1 = x2 = hround(0.5[external_adjustment, w-internal_adjustment]-0.5a)+0.5a; + pos1(a, 0); pos2(a, 0); pos3(rth1, 90); + filldraw stroke z1e..z2e down_to_right z3e; + penlabels(1, 2, 3); +endchar; + +beginchar(brace_left_mid, + set_width(10u#, 3*u#, 3*u#), 0, 3dh#); + "left brace's extension mid"; + a := cap_stem; + pickup fine.nib; + y1 = h+eps; + y3+0.5rth1 = vround(0.5[-d, h]+0.5rth1); + y2-bot y3r = top y3l-y4 = 0.25(h+d); y5 = -d-eps; + x1 = x2 = x4 = x5 = hround(0.5[external_adjustment, w-internal_adjustment]-0.5a)+0.5a; + lft x3 = external_adjustment; + pos1(a, 0); pos2(a, 0); pos3(rth1, -90); pos4(a, 180); pos5(a, 180); + filldraw stroke z1e..z2e down_to_left z3e; + filldraw stroke z3e right_to_down z4e..z5e; + penlabels(1, 2, 3, 4, 5); +endchar; + +beginchar(brace_left_mod, + set_width(10u#, 3*u#, 3*u#), 0, 0.5dh#); + "left brace's extension module"; + a := cap_stem; + pickup fine.nib; y1 = h+eps; y2 = -d-eps; + x1 = x2 = hround(0.5[external_adjustment, w-internal_adjustment]-0.5a)+0.5a; + pos1(a, 0); pos2(a, 0); filldraw stroke z1e..z2e; penlabels(1, 2); +endchar; + +beginchar(brace_right, + set_width(5u#, 1.5u#, 1.5u#), body_height#, paren_depth#); + "Right brace"; + internal_adjustment := appr+hround 0.5u; + external_adjustment := appr+hround 0.5u; + tmp_program(right, 0[stem, cap_stem], + 0[hair, rth1], 0.5, superness); +endchar; + +beginchar(brace_right_big, + set_width(6u#, 1.75*u#, 1.75*u#), rth.frac#, 2dh#-rth.frac#); + "big right brace"; + tmp_program(right, 0.125[stem, cap_stem], + 0.125[hair, rth1], 0.5, superness); +endchar; + +beginchar(brace_right_Big, + set_width(7u#, 2*u#, 2*u#), rth.frac#, 3dh#-rth.frac#); + "Big right brace"; + tmp_program(right, 0.25[stem, cap_stem], + 0.25[hair, rth1], 0.5, superness); +endchar; + +beginchar(brace_right_bigg, + set_width(8u#, 2.25*u#, 2.25*u#), rth.frac#, 4dh#-rth.frac#); + "bigg right brace"; + tmp_program(right, 0.5[stem, cap_stem], + 0.5[hair, rth1], 0.5, superness); +endchar; + +beginchar(brace_right_Bigg, + set_width(9u#, 2.5*u#, 2.5*u#), rth.frac#, 5dh#-rth.frac#); + "Bigg right brace"; + tmp_program(right, 0.75[stem, cap_stem], + 0.75[hair, rth1], 0.5, superness); +endchar; + +beginchar(brace_right_top, + set_width(10u#, 3*u#, 3*u#), 0, 1.5dh#); + "right brace's extension top"; + a := cap_stem; + pickup fine.nib; + top y1r = h; top y1r-y2 = 0.5(h+d); y3 = -d-eps; + lft x1 = internal_adjustment; + x2 = x3 = hround(0.5[internal_adjustment, w-external_adjustment]-0.5a)+0.5a; + pos1(rth1, 90); pos2(a, 0); pos3(a, 0); + filldraw stroke z1e right_to_down z2e..z3e; + penlabels(1, 2, 3); +endchar; + +beginchar(brace_right_bot, + set_width(10u#, 3*u#, 3*u#), 0, 1.5dh#); + "right brace's extension bot"; + a := cap_stem; + pickup fine.nib; + y1 = h+eps; y2-bot y3r = 0.5(h+d); bot y3r = -d; + lft x3 = internal_adjustment; + x1 = x2 = hround(0.5[internal_adjustment, w-external_adjustment]-0.5a)+0.5a; + pos1(a, 0); pos2(a, 0); pos3(rth1, -90); + filldraw stroke z1e..z2e down_to_left z3e; + penlabels(1, 2, 3); +endchar; + +beginchar(brace_right_mid, + set_width(10u#, 3*u#, 3*u#), 0, 3dh#); + "right brace's extension mid"; + a := cap_stem; + pickup fine.nib; + y1 = h+eps; + y3+0.5rth1 = vround(0.5[-d, h]+0.5rth1); + y2-bot y3l = top y3r-y4 = 0.25(h+d); + y5 = -d-eps; + x1 = x2 = x4 = x5 = hround(0.5[internal_adjustment, w-external_adjustment]-0.5a)+0.5a; + rt x3 = w-external_adjustment; + pos1(a, 0); pos2(a, 0); pos3(rth1, 90); pos4(a, 180); pos5(a, 180); + filldraw stroke z1e..z2e down_to_right z3e; + filldraw stroke z3e right_to_down z4e..z5e; + penlabels(1, 2, 3, 4, 5); +endchar; + +beginchar(brace_right_mod, + set_width(10u#, 3*u#, 3*u#), 0, 0.5dh#); + "right brace's extension module"; + a := cap_stem; + pickup fine.nib; y1 = h+eps; y2 = -d-eps; + x1 = x2 = hround(0.5[internal_adjustment, w-external_adjustment]-0.5a)+0.5a; + pos1(a, 0); pos2(a, 0); filldraw stroke z1e..z2e; penlabels(1, 2); +endchar; + +% ANGLES + +def tmp_program(expr orientation, rth) = + pickup tiny.nib; + top y1r = h+eps; y2l = good.y 0.5[-d, h]; y1r-y2l = y2l-y3r; + if orientation = left: + rt x1r = rt x3r = w-internal_adjustment+eps; + lft x2l = external_adjustment-eps; + adjust_slanted_bar(1r, 2l, 1l, 2a)(max(rth-tiny, 1), -1); + adjust_slanted_bar(3r, 2l, 3l, 2b)(max(rth-tiny, 1), 1); + else: + lft x1r = lft x3r = internal_adjustment-eps; + rt x2l = w-external_adjustment+eps; + adjust_slanted_bar(1r, 2l, 1l, 2a)(max(rth-tiny, 1), 1); + adjust_slanted_bar(3r, 2l, 3l, 2b)(max(rth-tiny, 1), -1); + fi + z2r = whatever[z1r, z2a]; z2r = whatever[z3r, z2b]; + filldraw stroke z1e--z2e--z3e; + penlabels(1, 2, 3); labels(2a, 2b); +enddef; + +% almost okay +beginchar(angle_left, + set_width(6.5u#, 0.5u#, 0.5u#), body_height#, paren_depth#); + "Left angle"; + tmp_program(left, rth0); +endchar; + +beginchar(angle_left_big, + set_width(8u#, 0.75u#, 0.75u#), rth.frac#, 2dh#-rth.frac#); + "big left angle"; + tmp_program(left, 0.125[rth0, rth2]); +endchar; + +beginchar(angle_left_Big, + set_width(10u#, 1.0u#, 1.0u#), rth.frac#, 3dh#-rth.frac#); + "Big left angle"; + tmp_program(left, 0.25[rth0, rth2]); +endchar; + +beginchar(angle_left_bigg, + set_width(12u#, 1.25u#, 1.25u#), rth.frac#, 4dh#-rth.frac#); + "bigg left angle"; + tmp_program(left, 0.5[rth0, rth2]); +endchar; + +beginchar(angle_left_Bigg, + set_width(14u#, 1.5u#, 1.5u#), rth.frac#, 5dh#-rth.frac#); + "Bigg left angle"; + tmp_program(left, 0.75[rth0, rth2]); +endchar; + +% almost okay +beginchar(angle_right, + set_width(6.5u#, 0.5u#, 0.5u#), body_height#, paren_depth#); + "Right angle"; + tmp_program(right, rth0); +endchar; + +beginchar(angle_right_big, + set_width(8u#, 0.75u#, 0.75u#), rth.frac#, 2dh#-rth.frac#); + "big right angle"; + tmp_program(right, 0.125[rth0, rth2]); +endchar; + +beginchar(angle_right_Big, + set_width(10u#, 1.0u#, 1.0u#), rth.frac#, 3dh#-rth.frac#); + "Big right angle"; + tmp_program(right, 0.25[rth0, rth2]); +endchar; + +beginchar(angle_right_bigg, + set_width(12u#, 1.25u#, 1.25u#), rth.frac#, 4dh#-rth.frac#); + "bigg right angle"; + tmp_program(right, 0.5[rth0, rth2]); +endchar; + +beginchar(angle_right_Bigg, + set_width(14u#, 1.5u#, 1.5u#), rth.frac#, 5dh#-rth.frac#); + "Bigg right angle"; + tmp_program(right, 0.75[rth0, rth2]); +endchar; + +% SLASHES + +vardef tmp_program(expr orientation, thickness, slash_slant) = + pickup tiny.nib; + top y1 = h; y1 = y1l = y1r; bot y2 = -d; y2 = y2l = y2r; + 0.5[x1, x2] = 0.5w; + x1-x2 = if orientation = left: - fi slash_slant*(y1-y2); + x1r-x1l = x2r-x2l = diag_width(thickness-tiny, z1-z2); + 0.5[x1l, x1r] = x1; 0.5[x2l, x2r] = x2; + filldraw stroke z1e..z2e; + penlabels(1, 2); +enddef; + +beginchar(backslash, + set_width((body_height#+paren_depth#)*0.375 + +(0[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#, + 0.2u#, 0.2u#), + body_height#, paren_depth#); + "backslash"; + tmp_program(left, 0[rth0, rth2], 0.375); +endchar; + +beginchar(backslash_thick, + set_width((body_height#+paren_depth#)*0.375 + +(0.95stem#-tiny#)*(1++0.375)+tiny#, + 0.2u#, 0.2u#), + body_height#, paren_depth#); + "Thick backslash"; + tmp_program(left, 0.95stem, 0.375); +endchar; + +beginchar(backslash_big, + set_width(2dh#*0.375 + +(0.125[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#, + 0.4u#, 0.4u#), + rth.frac#, 2dh#-rth.frac#); + "big backslash"; + tmp_program(left, 0.125[rth0, rth2], 0.375); +endchar; + +beginchar(backslash_Big, + set_width(3dh#*0.375 + +(0.25[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#, + 0.7u#, 0.7u#), + rth.frac#, 3dh#-rth.frac#); + "Big backslash"; + tmp_program(left, 0.25[rth0, rth2], 0.375); +endchar; + +beginchar(backslash_bigg, + set_width(4dh#*0.375 + +(0.5[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#, + 1.0u#, 1.0u#), + rth.frac#, 4dh#-rth.frac#); + "bigg backslash"; + tmp_program(left, 0.5[rth0, rth2], 0.375); +endchar; + +beginchar(backslash_Bigg, + set_width(5dh#*0.375 + +(0.75[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#, + 1.2u#, 1.2u#), + rth.frac#, 5dh#-rth.frac#); + "Bigg backslash"; + tmp_program(left, 0.75[rth0, rth2], 0.375); +endchar; + +beginchar(slash, + set_width((body_height#+paren_depth#)*0.375 + +(0[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#, + 0.2u#, 0.2u#), + body_height#, paren_depth#); + "slash"; + tmp_program(right, 0[rth0, rth2], 0.375); +endchar; + +beginchar(slash_thick, + set_width((body_height#+paren_depth#)*0.375 + +(0.95stem#-tiny#)*(1++0.375)+tiny#, + 0.2u#, 0.2u#), + body_height#, paren_depth#); + "Thick slash"; + tmp_program(right, 0.95stem, 0.375); +endchar; + +beginchar(slash_big, + set_width(2dh#*0.375 + +(0.125[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#, + 0.4u#, 0.4u#), + rth.frac#, 2dh#-rth.frac#); + "big slash"; + tmp_program(right, 0.125[rth0, rth2], 0.375); +endchar; + +beginchar(slash_Big, + set_width(3dh#*0.375 + +(0.25[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#, + 0.7u#, 0.7u#), + rth.frac#, 3dh#-rth.frac#); + "Big slash"; + tmp_program(right, 0.25[rth0, rth2], 0.375); +endchar; + +beginchar(slash_bigg, + set_width(4dh#*0.375 + +(0.5[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#, + 1.0u#, 1.0u#), + rth.frac#, 4dh#-rth.frac#); + "bigg slash"; + tmp_program(right, 0.5[rth0, rth2], 0.375); +endchar; + +beginchar(slash_Bigg, + set_width(5dh#*0.375 + +(0.75[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#, + 1.2u#, 1.2u#), + rth.frac#, 5dh#-rth.frac#); + "Bigg slash"; + tmp_program(right, 0.75[rth0, rth2], 0.375); +endchar; + +% +% blackboard bold brackets +% + +def tmp_program(expr orientation, rth, thick, + do_top, do_bot, not_ext) = + save a, b; + a = hround(rth*(1++slant)); b = hround(thick*(1++slant)); + y5r = y6r = h if do_top or not_ext: else: +eps fi; + y7r = y8r = -d if do_bot or not_ext: else: -eps fi; + if orientation = left: + forsuffixes @# = 1, 2, 3, 4: x@#r-x@# = x@#-x@#l = -0.5a; endfor + x1r = x2r = x5r = x7r = min(external_adjustment, + hround 0.5(w-a-b)); + x1-x3 = x2-x4 = -b; x6r = x8r = w-internal_adjustment; + else: + forsuffixes @# = 1, 2, 3, 4: x@#r-x@# = x@#-x@#l = 0.5a; endfor + x1r = x2r = x5r = x7r = max(w-external_adjustment, + hround 0.5(w+a+b)); + x1-x3 = x2-x4 = b; x6r = x8r = internal_adjustment; + fi + forsuffixes @ = 1, 1r, 1l, 3, 3r, 3l: z@ = whatever[z5r, z6r]; endfor + forsuffixes @ = 2, 2r, 2l, 4, 4r, 4l: z@ = whatever[z7r, z8r]; endfor + penpos5(rth, 90); penpos6(rth, 90); + penpos7(rth, -90); penpos8(rth, -90); + penstroke z1e..z2e; penstroke z3e..z4e; + if do_top: penstroke z5e..z6e; fi + if do_bot: penstroke z7e..z8e; fi + penlabels(1, 2, 3, 4, 5, 6, 7, 8); +enddef; + +beginchar(bbbracket_left, + set_width(5u#, 0.5u#, 2u#), body_height#, paren_depth#); + "Left bbbracket"; + tmp_program(left, rth0, 2.2u, true, true, true); +endchar; + +beginchar(bbbracket_left_big, + set_width(5.5u#, 0.75u#, 2.5u#), rth.frac#, 2dh#-rth.frac#); + "big left bbbracket"; + tmp_program(left, 0.125[rth0, rth1], 0.125[2.2u, 3.0u], true, true, true); +endchar; + +beginchar(bbbracket_left_Big, + set_width(6.0u#, 1.0u#, 3u#), rth.frac#, 3dh#-rth.frac#); + "Big left bbbracket"; + tmp_program(left, 0.25[rth0, rth1], 0.25[2.2u, 3.0u], true, true, true); +endchar; + +beginchar(bbbracket_left_bigg, + set_width(6.5u#, 1.25u#, 3.5u#), rth.frac#, 4dh#-rth.frac#); + "bigg left bbbracket"; + tmp_program(left, 0.5[rth0, rth1], 0.5[2.2u, 3.0u], true, true, true); +endchar; + +beginchar(bbbracket_left_Bigg, + set_width(7.0u#, 1.5u#, 4u#), rth.frac#, 5dh#-rth.frac#); + "Bigg left bbbracket"; + tmp_program(left, 0.75[rth0, rth1], 0.75[2.2u, 3.0u], true, true, true); +endchar; + +beginchar(bbbracket_left_top, + set_width(8u#, 2u#, 5u#), rth.frac#, 3dh#-rth.frac#); + "Left bbbracket's extension top"; + tmp_program(left, rth1, 3.0u, true, false, false); +endchar; + +beginchar(bbbracket_left_bot, + set_width(8u#, 2u#, 5u#), rth.frac#, 3dh#-rth.frac#); + "Left bbbracket's extension bottom"; + tmp_program(left, rth1, 3.0u, false, true, false); +endchar; + +beginchar(bbbracket_left_mid, + set_width(8u#, 2u#, 5u#), 0, dh#); + "Left bbbracket's extension module"; + tmp_program(left, rth1, 3.0u, false, false, false); +endchar; + +beginchar(bbbracket_right, + set_width(5u#, 0.5u#, 2u#), body_height#, paren_depth#); + "Right bbbracket"; + tmp_program(right, rth0, 2.2u, true, true, true); +endchar; + +beginchar(bbbracket_right_big, + set_width(5.5u#, 0.75u#, 2.5u#), rth.frac#, 2dh#-rth.frac#); + "big right bbbracket"; + tmp_program(right, 0.125[rth0, rth1], 0.125[2.2u, 3.0u], true, true, true); +endchar; + +beginchar(bbbracket_right_Big, + set_width(6.0u#, 1.0u#, 3u#), rth.frac#, 3dh#-rth.frac#); + "Big right bbbracket"; + tmp_program(right, 0.25[rth0, rth1], 0.25[2.2u, 3.0u], true, true, true); +endchar; + +beginchar(bbbracket_right_bigg, + set_width(6.5u#, 1.25u#, 3.5u#), rth.frac#, 4dh#-rth.frac#); + "bigg right bbbracket"; + tmp_program(right, 0.5[rth0, rth1], 0.5[2.2u, 3.0u], true, true, true); +endchar; + +beginchar(bbbracket_right_Bigg, + set_width(7.0u#, 1.5u#, 4u#), rth.frac#, 5dh#-rth.frac#); + "Bigg right bbbracket"; + tmp_program(right, 0.75[rth0, rth1], 0.75[2.2u, 3.0u], true, true, true); +endchar; + +beginchar(bbbracket_right_top, + set_width(8u#, 2.0u#, 5u#), rth.frac#, 3dh#-rth.frac#); + "Right bbbracket's extension top"; + tmp_program(right, rth1, 3.0u, true, false, false); +endchar; + +beginchar(bbbracket_right_bot, + set_width(8u#, 2.0u#, 5u#), rth.frac#, 3dh#-rth.frac#); + "Right bbbracket's extension bottom"; + tmp_program(right, rth1, 3.0u, false, true, false); +endchar; + +beginchar(bbbracket_right_mid, + set_width(8u#, 2.0u#, 5u#), 0, dh#); + "Right bbbracket's extension module"; + tmp_program(right, rth1, 3.0u, false, false, false); +endchar; + +% +% A poursuivre +% + +beginchar(vert_sign, 3u#+2appr#, body_height#, paren_depth#); + "Vertical line"; + ensure_centering_of(rth1); + pickup tiny.nib; + pos1(rth1, 0); pos2(rth1, 0); x1 = x2 = 0.5w; + top y1 = h; bot y2 = -d; filldraw stroke z1e..z2e; + penlabels(1, 2); +endchar; + +beginchar(vert_mod, 3u#+2appr#, 0, dh#); + "Vertical line's module"; + ensure_centering_of(rth1); + pickup tiny.nib; + pos1(rth1, 0); pos2(rth1, 0); x1 = x2 = 0.5w; + y1 = h+eps; y2 = -d-eps; filldraw stroke z1e..z2e; + penlabels(1, 2); +endchar; + +beginchar(vert_thick, 3u#+2appr#, body_height#, paren_depth#); + "Thick vertical line"; + ensure_centering_of(0.95stem); + pickup tiny.nib; + pos1(hround 0.95stem, 0); pos2(hround 0.95stem, 0); x1 = x2 = 0.5w; + top y1 = h; bot y2 = -d; filldraw stroke z1e..z2e; + penlabels(1, 2); +endchar; + +beginchar(vert_thick_mod, 3u#+2appr#, 0, dh#); + "Thick vertical line's module"; + ensure_centering_of(0.95stem); + pickup tiny.nib; + pos1(hround 0.95stem, 0); pos2(hround 0.95stem, 0); + x1 = x2 = 0.5w; y1 = h+eps; y2 = -d-eps; filldraw stroke z1e..z2e; + penlabels(1, 2); +endchar; + +beginchar(vvert_sign, 5.5u#+2appr#, body_height#, paren_depth#); + "Double vertical line"; + numeric a; a = max(2.5u-rth0, 2rth0);% blank space between bars + pickup tiny.nib; + pos1(rth0, 0); pos2(rth0, 0); pos3(rth0, 0); pos4(rth0, 0); + rt x1r = rt x2r = hround 0.5(w-a); + w-rt x3r = lft x1l; x3 = x4; + top y1 = top y3 = h; bot y2 = bot y4 = -d; + filldraw stroke z1e..z2e; + filldraw stroke z3e..z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(vvert_mod, 5.5u#+2appr#, 0, dh#); + "Double vertical line's module"; + numeric a; a = max(2.5u-rth0, 2rth0);% blank space between bars + pickup tiny.nib; + pos1(rth0, 0); pos2(rth0, 0); pos3(rth0, 0); pos4(rth0, 0); + rt x1r = rt x2r = hround 0.5(w-a); + w-rt x3r = lft x1l; x3 = x4; + y1 = y3 = h+eps; y2 = y4 = -d-eps; + filldraw stroke z1e..z2e; + filldraw stroke z3e..z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(vvvert_sign, 9u#+2appr#, body_height#, paren_depth#); + "Triple vertical line"; + ensure_centering_of(rth0); + numeric a; a = max(2.75u-rth0, 2rth0);% blank space between bars + pickup tiny.nib; + pos1(rth0, 0); pos2(rth0, 0); + pos3(rth0, 0); pos4(rth0, 0); + pos5(rth0, 0); pos6(rth0, 0); + x3 = x4 = 0.5w; x1 = x2; x5 = x6; + lft x5l-rt x3r = lft x3l-rt x1r = hround a; + top y1 = top y3 = top y5 = h; + bot y2 = bot y4 = bot y6 = -d; + filldraw stroke z1e..z2e; + filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; + penlabels(1, 2, 3, 4, 5, 6); +endchar; + +beginchar(vvvert_mod, 9u#+2appr#, 0, dh#); + "Triple vertical line's module"; + ensure_centering_of(rth0); + numeric a; a = max(2.75u-rth0, 2rth0);% blank space between bars + pickup tiny.nib; + pos1(rth0, 0); pos2(rth0, 0); + pos3(rth0, 0); pos4(rth0, 0); + pos5(rth0, 0); pos6(rth0, 0); + x3 = x4 = 0.5w; x1 = x2; x5 = x6; + lft x5l-rt x3r = lft x3l-rt x1r = hround a; + y1 = y3 = y5 = h+eps; y2 = y4 = y6 = -d-eps; + filldraw stroke z1e..z2e; + filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; + penlabels(1, 2, 3, 4, 5, 6); +endchar; + +beginchar(left_filet, 4stem#+2appr#, 0, dh#); + "extensible left filet"; + pickup fine.nib; + y1r = y1l = 0; y5r = y5l = -d; + forsuffixes $ = r, l: y2$ = 0.25[y1r, y5r]; + y3$ = 0.5[y1r, y5r]; y4$ = 0.75[y1r, y5r]; endfor + x1l = x5l = x4r = good.x 0.5w; + x1l-lft x3l = rt x2r-x4r = 2stem; + x2l = x4l = 0.5[x1l, x3l]; x1r = x3r = x5r = 0.5[x2r, x4r]; + filldraw z1l{down}...z2l{(z3l-z1l)xscaled 2}...z3l{down} + ...z4l{(z5l-z3l)xscaled 2}...z5l{down}-- + z5r{(z4r-z5r)xscaled 2}...z4r{up}... + z3r{(z2r-z3r)xscaled 2}...z2r{up}... + z1r{(z1r-z2r)xscaled 2}--cycle; + penlabels(1, 2, 3, 4, 5); +endchar; + +beginchar(right_filet, 4stem#+2appr#, 0, dh#); + "extensible right filet"; + pickup fine.nib; + y1r = y1l = 0; y5r = y5l = -d; + forsuffixes $ = r, l: y2$ = 0.25[y1r, y5r]; + y3$ = 0.5[y1r, y5r]; y4$ = 0.75[y1r, y5r]; endfor + x1r = x5r = x2l = good.x 0.5w; + x2l-lft x4l = rt x3r-x1r = 2stem; + x1l = x3l = x5l = 0.5[x2l, x4l]; x2r = x4r = 0.5[x1r, x3r]; + filldraw z1r{down}...z2r{(z3r-z1r)xscaled 2}...z3r{down} + ...z4r{(z5r-z3r)xscaled 2}...z5r{down}-- + z5l{(z4l-z5l)xscaled 2}...z4l{up}... + z3l{(z2l-z3l)xscaled 2}...z2l{up}... + z1l{(z1l-z2l)xscaled 2}--cycle; + penlabels(1, 2, 3, 4, 5); +endchar; + +% HORIZONTAL BRACES (almost okay, check xdvi problems) + +beginchar(overbrace_left, 0.75dh#+appr#, cap_stem#, dh#); + "overbrace's left piece"; + pickup fine.nib; + pos1(rth1, 180); pos2(cap_stem, 90); + bot y2l = vround (0.5[-d, h]-0.5cap_stem); + bot y1r = vround(y2-min(5u, 0.4dh+0.5cap_stem)); + lft x1r = appr; x2 = w+eps; + filldraw stroke z1e up_to_right z2e; + penlabels(1, 2); +endchar; + +beginchar(overbrace_mid, 1.5dh#, cap_stem#, dh#); + "overbrace's middle piece"; + pickup fine.nib; + pos1(cap_stem, -90); pos2(rth1, 0); pos3(cap_stem, 90); + bot y1r = bot y3l = vround (0.5[-d, h]-0.5cap_stem); + top y2 = vround(y3+min(5u, 0.4dh+0.5cap_stem)); + x2 = hround 0.5(w-rth1); x1 = -eps; x3 = w+eps; + filldraw stroke z1e right_to_down z2e; + filldraw stroke z3e left_to_down z2e; + penlabels(1, 2, 3); +endchar; + +beginchar(overbrace_right, 0.75dh#+appr#, cap_stem#, dh#); + "overbrace's right piece"; + pickup fine.nib; + pos1(rth1, 0); pos2(cap_stem, 90); + bot y2l = vround (0.5[-d, h]-0.5cap_stem); + bot y1r = vround(y2-min(5u, 0.4dh+0.5cap_stem)); + rt x1r = w-appr; x2 = -eps; + filldraw stroke z1e up_to_left z2e; + penlabels(1, 2); +endchar; + +% 4u# ??? +beginchar(overbrace_mod, 0.5dh#, cap_stem#, dh#); + "overbrace's module piece"; + pickup fine.nib; + pos1(cap_stem, 90); pos2(cap_stem, 90); + bot y1l = bot y2l = vround (0.5[-d, h]-0.5cap_stem); + x1 = -eps; x2 = w+eps; + filldraw stroke z1e..z2e; penlabels(1, 2); +endchar; + +beginchar(underbrace_left, 0.75dh#+appr#, cap_stem#, dh#); + "underbrace's left piece"; + pickup fine.nib; + pos1(rth1, 0); pos2(cap_stem, 90); + bot y2l = vround (0.5[-d, h]-0.5cap_stem); + top y1l = vround(y2+min(5u, 0.4dh+0.5cap_stem)); + lft x1l = appr; x2 = w+eps; + filldraw stroke z1e down_to_right z2e; + penlabels(1, 2); +endchar; + +beginchar(underbrace_mid, 1.5dh#, cap_stem#, dh#); + "underbrace's middle piece"; + pickup fine.nib; + pos1(cap_stem, 90); pos2(rth1, 0); pos3(cap_stem, -90); + bot y1l = bot y3r = vround (0.5[-d, h]-0.5cap_stem); + bot y2 = vround(y3-min(5u, 0.4dh+0.5cap_stem)); + x2 = hround 0.5(w-rth1); x1 = -eps; x3 = w+eps; + filldraw stroke z1e right_to_down z2e; + filldraw stroke z3e left_to_down z2e; + penlabels(1, 2, 3); +endchar; + +beginchar(underbrace_right, 0.75dh#+appr#, cap_stem#, dh#); + "underbrace's right piece"; + pickup fine.nib; + pos1(rth1, 180); pos2(cap_stem, 90); + bot y2l = vround (0.5[-d, h]-0.5cap_stem); + top y1l = vround(y2+min(5u, 0.4dh+0.5cap_stem)); + rt x1l = w-appr; x2 = -eps; + filldraw stroke z1e down_to_left z2e; + penlabels(1, 2); +endchar; + +% 4u# ??? +beginchar(underbrace_mod, 0.5dh#, cap_stem#, dh#); + "underbrace's module piece"; + pickup fine.nib; + pos1(cap_stem, 90); pos2(cap_stem, 90); + bot y1l = bot y2l = vround (0.5[-d, h]-0.5cap_stem); + x1 = -eps; x2 = w+eps; + filldraw stroke z1e..z2e; penlabels(1, 2); +endchar; + +% RADICALS +rth := ceiling(rth.frac#*hppp); + +vardef tmp_program = +% imperative coordinates + save a, b, c, f, sl; a = 2.75; b = 1.25;% slope factors + pickup crisp.nib; x1' = w; lft x5l = appr; + top y1r = h; y1' = h-0.5rth; bot y2r = bot y3r = -d-eps; + top y4l = vround 0.5[-d, h]+o; y5l = good.y 0.75[y2r, y4l]; +% numerical calculus + c = a*(y4l-y5l)+b*(y4l-y2r)+y1'-y2r; + vardef f(expr sl) = + sl*c-(1++(b*sl))*(curve-crisp)+0.5(rth-crisp)*(1+(1++sl))<x1'-x5l + enddef; + sl = solve f(0, (x1'-x5l)/(y1'-y5l)); +% setting other key points + x4l = good.x(x5l+a*sl*(y4l-y5l)); + x2r = good.x(x1'-sl*(y1'-y2r)+0.5(rth-crisp)*(1++sl)); + penpos1((rth-crisp)*(1++sl), 0); + pos5(min(hair, rth), angle(z4l-z5l)-90); + rt x2r-lft x3r = rth; z1r-z2r = whatever*(sl, 1); + adjust_slanted_bar(3r, 4l, 3, 4)(curve-crisp, -1); + z1l-z2l = whatever*(z1r-z2r); z2l = whatever[z3, z4l]; + z4r-z5r = whatever*(z4l-z5l); z4r = whatever[z3r, z4]; + z3l = 0.5[z2l, z4l];% it's not an interesting point + filldraw stroke z1e--z2e--z3e--z4e--z5e; + penlabels(1, 2, 3, 4, 5); labels(1'); +enddef; + +beginchar(radical_sign, + 15u#+letter_fit#, rth.frac#, body_height#+paren_depth#-rth.frac#); + "radical sign"; + tmp_program; +endchar; + +beginchar(radical_big, + 18u#+letter_fit#, rth.frac#, 2dh#-rth.frac#); + "big radical sign"; + tmp_program; +endchar; + +beginchar(radical_Big, + 18u#+letter_fit#, rth.frac#, 3dh#-rth.frac#); + "Big radical sign"; + tmp_program; +endchar; + +beginchar(radical_bigg, + 18u#+letter_fit#, rth.frac#, 4dh#-rth.frac#); + "bigg radical sign"; + tmp_program; +endchar; + +beginchar(radical_Bigg, + 18u#+letter_fit#, rth.frac#, 5dh#-rth.frac#); + "Bigg radical sign"; + tmp_program; +endchar; + +beginchar(radical_bot, 19u#+letter_fit#, 0, 3dh#); + "Extensible radical sign---bottom"; + % imperative coordinates + save a, b, c, f, sl; a = 1; b = 1;% slope factors + pickup crisp.nib; + rt x1r = rt x2r = hround(w-6u+0.5rth); lft x5l = appr; + top y1r = h+1+eps; bot y2r = bot y3r = -d-eps; + top y4l = vround 0.9[-d, h]+o; y5l = good.y 0.75[y2r, y4l]; +% numerical calculus + c = a*(y4l-y5l)+b*(y4l-y2r); + vardef f(expr sl) = + sl*c-(1++(b*sl))*(curve-crisp)+0.5(rth-crisp)<x1r-x5l + enddef; + sl = solve f(0, (x1r-x5l)/(y1r-y5l)); +% setting other key points + x4l = good.x(x5l+a*sl*(y4l-y5l)); x3r = x1l; + pos1(rth, 0); pos5(min(hair, rth), angle(z4l-z5l)-90); + adjust_slanted_bar(3r, 4l, 3, 4)(curve-crisp, -1); + z1l-z2l = whatever*(z1r-z2r); z2l = whatever[z3, z4l]; + z4r-z5r = whatever*(z4l-z5l); z4r = whatever[z3r, z4]; + z3l = 0.5[z2l, z4l];% it's not an interesting point + filldraw stroke z1e--z2e--z3e--z4e--z5e; + penlabels(1, 2, 3, 4, 5); +endchar; + +beginchar(radical_mod, 19u#+letter_fit#, 0, dh#); + "Extensible radical sign---module"; + pickup crisp.nib; rt x1r = rt x2r = hround(w-6u+0.5rth); + y1 = h+1+eps; y2 = -d-1-eps; pos1(rth, 0); pos2(rth, 0); + filldraw stroke z1e..z2e; penlabels(1, 2); +endchar; + +beginchar(radical_top, 19u#+letter_fit#, rth.frac#, dh#-rth.frac#); + "Extensible radical sign---top"; + pickup crisp.nib; rt x3r = rt x2r = hround(w-6u+0.5rth); + x1 = good.x(w+0.5); bot y1r = bot y2r = 0; y3 = -d-1-eps; + x2l = x3l; y1l = y2l; pos1(rth, -90); pos3(rth, 0); + filldraw stroke z1e--z2e--z3e; penlabels(1, 2, 3); +endchar; + +beginchar(group_left, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Left group"; + a := hround 0[0.95stem, 0.95cap_stem]; + pickup fine.nib; + top y1l = h; bot y4l = -d; + y2 = 0.75[y4r, y1r]; y3 = 0.25[y4r, y1r]; + rt x1 = rt x4 = w-internal_adjustment; + lft x2l = lft x3l = external_adjustment; + pos1(rth0, -90); pos2(a, 0); pos3(a, 0); pos4(rth0, 90); + filldraw stroke z1e left_to_down + z2e..z3e down_to_right z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(group_left_big, + set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#); + "big left group"; + a := hround 0.125[0.95stem, 0.95cap_stem]; + pickup fine.nib; + top y1l = h; bot y4l = -d; + y2 = 0.75[y4r, y1r]; y3 = 0.25[y4r, y1r]; + rt x1 = rt x4 = w-internal_adjustment; + lft x2l = lft x3l = external_adjustment; + pos1(rth0, -90); pos2(a, 0); pos3(a, 0); pos4(rth0, 90); + filldraw stroke z1e left_to_down + z2e..z3e down_to_right z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(group_right, + set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#); + "Right group"; + a := hround 0[0.95stem, 0.95cap_stem]; + pickup fine.nib; + top y1r = h; bot y4r = -d; + y2 = 0.75[y4l, y1l]; y3 = 0.25[y4l, y1l]; + lft x1 = lft x4 = internal_adjustment; + rt x2r = rt x3r = w-external_adjustment; + pos1(rth0, 90); pos2(a, 0); pos3(a, 0); pos4(rth0, -90); + filldraw stroke z1e right_to_down + z2e..z3e down_to_left z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(group_right_big, + set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#); + "big right group"; + a := hround 0.125[0.95stem, 0.95cap_stem]; + pickup fine.nib; + top y1r = h; bot y4r = -d; + y2 = 0.75[y4l, y1l]; y3 = 0.25[y4l, y1l]; + lft x1 = lft x4 = internal_adjustment; + rt x2r = rt x3r = w-external_adjustment; + pos1(rth0, 90); pos2(a, 0); pos3(a, 0); pos4(rth0, -90); + filldraw stroke z1e right_to_down + z2e..z3e down_to_left z4e; + penlabels(1, 2, 3, 4); +endchar; diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathbdrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathbdrv.mf new file mode 100644 index 00000000000..43915e90c4b --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathbdrv.mf @@ -0,0 +1,298 @@ +% mathematical symbols by Anthony Phan. +% file: mathbdrv.mf (driver file for mathb serie) +% last modification: May 16, 2005. + +mode_setup; + +math_setup; + +% Activate to allow characters with undefined code. +% (for proof mode compilation) +% let iff=always_iff; + +% BINARY OPERATORS + +currentlocation_ := 0; +input mathbsym; + +% RELATIONS + +varnot_sign := hex"7F"; + +% mathsymb.mf + +top_dot_equal_sign := hex"10"; +bot_dot_equal_sign := hex"11"; +top_bot_dot_equal_sign := hex"12"; +rising_dots_equal_sign := hex"13"; +falling_dots_equal_sign := hex"14"; +colon_equal_sign := hex"15"; +equal_colon_sign := hex"16"; +bump_equal := hex"17"; +pump_equal := hex"18"; +Bump_equal := hex"19"; +circ_equal_sign := hex"1A"; +equal_circ_sign := hex"1B"; +triangle_equal_sign := hex"1C"; +correspondance_sign := hex"1D"; + +% MISCELLANEOUS + +Dominated_curly := hex"CE"; +Dominating_curly := hex"CF"; + +% mathsymb.mf + +%times_left_three := hex"56"; +%times_right_three := hex"57"; + +between_sign := hex"20"; +smile_sign := hex"21"; +frown_sign := hex"22"; +var_hash_sign := hex"23"; +times_left_three := hex"24"; +times_right_three := hex"25"; +pitchfork_sign := hex"26"; +bowtie_sign := hex"27"; + +%between_sign := hex"2A"; + +VDash_sign := hex"28"; +DashV_sign := hex"29"; +VDash_not := hex"2A"; +DashV_not := hex"2B"; +Vvdash_sign := hex"2C"; +dashVv_sign := hex"2D"; +Vvdash_not := hex"2E"; +dashVv_not := hex"2F"; + +% MISCELLANEOUS +% maya numerals + +therefore_sign := hex"36"; +because_sign := hex"37"; + +accent_circ := hex"38"; +accent_dot := hex"39"; +accent_ddot := hex"3A"; +accent_dddot := hex"3B"; +accent_ddddot := hex"3C"; + +angle_sign := hex"3D"; +measured_angle := hex"3E"; +spherical_angle := hex"3F"; + +% ASTRONOMICAL SYMBOLS + +% mathastr.mf + +astro_sun := hex"40"; +astro_mercury := hex"41"; +astro_venus := hex"42"; +astro_earth := hex"43"; +astro_mars := hex"44"; +astro_jupiter := hex"45"; +astro_saturn := hex"46"; +astro_uranus := hex"47"; +astro_neptune := hex"48"; +astro_pluto := hex"49"; +astro_varearth := hex"4A"; +astro_left_moon := hex"4B"; +astro_right_moon := hex"4C"; +astro_full_moon := hex"4D"; +astro_new_moon := hex"4E"; +cemetery := hex"4F"; +ligtable cemetery:cemetery kern-2(u#+letter_fit#); + +astro_aries := hex"50"; +astro_taurus := hex"51"; +astro_gemini := hex"52"; +%astro_cancer := hex"53"; +astro_leo := hex"54"; +%astro_virgo := hex"55"; +astro_libra := hex"56"; +astro_scorpio := hex"57"; +%astro_sagittarius := hex"58"; +%astro_capricornus := hex"59"; +%astro_aquarius := hex"59"; +%astro_pisces := hex"59"; + +% LETTER LIKE SYMBOLS + +% mathltlk.mf + +wedge_eq := hex"58"; +vee_eq := hex"59"; +wedge_eqq := hex"5A"; +vee_eqq := hex"5B"; +double_cap_sign := hex"5C"; +double_cup_sign := hex"5D"; +double_sqcap_sign := hex"5E"; +double_sqcup_sign := hex"5F"; + +% DELIMITERS + +group_left := hex"70"; +group_right := hex"71"; +ceiling_left := hex"72"; +ceiling_right := hex"73"; +floor_left := hex"74"; +floor_right := hex"75"; +bracket_upper_lower_left := hex"76"; +bracket_upper_lower_right := hex"77"; +bracket_upper_left := hex"78"; +bracket_upper_right := hex"79"; +bracket_lower_left := hex"7A"; +bracket_lower_right := hex"7B"; +backslash_thick := hex"7C"; +slash_thick := hex"7D"; +vert_thick := hex"7E"; + +% TRIANGLES AS BINARY OPERATORS + +triangle_small_up := hex"98"; +triangle_small_down := hex"99"; +triangle_small_left := hex"9A"; +triangle_small_right := hex"9B"; +triangle_small_full_up := hex"9C"; +triangle_small_full_down := hex"9D"; +triangle_small_full_left := hex"9E"; +triangle_small_full_right := hex"9F"; + +% ARROWS and HARPOONS + +arrows_left_left := hex"D0"; +arrows_right_right := hex"D1"; +arrows_up_up := hex"D2"; +arrows_down_down := hex"D3"; +arrows_left_right := hex"D4"; +arrows_right_left := hex"D5"; +arrows_up_down := hex"D6"; +arrows_down_up := hex"D7"; + +harpoons_left_left := hex"D8"; +harpoons_right_right := hex"D9"; +harpoons_up_up := hex"DA"; +harpoons_down_down := hex"DB"; +harpoon_left_bar := hex"DC"; +harpoon_right_bar := hex"DD"; +harpoon_bar_left := hex"DE"; +harpoon_bar_right := hex"DF"; + +harpoon_left_right := hex"E0"; +harpoon_right_left := hex"E1"; + +hook_left := hex"E2"; +hook_right := hex"E3"; +diag_up := hex"E4"; +diag_down := hex"E5"; + +arrow_shift_up_left := hex"E8"; +arrow_shift_up_right := hex"E9"; +arrow_shift_down_left := hex"EA"; +arrow_shift_down_right := hex"EB"; +arrow_loop_up_left := hex"EC"; +arrow_loop_up_right := hex"ED"; +arrow_loop_down_left := hex"EE"; +arrow_loop_down_right := hex"EF"; + +arrow_curve_top_left := hex"F0"; +arrow_curve_top_right := hex"F1"; +arrow_curve_top_left_right := hex"F2"; +arrow_curve_bot_left := hex"F3"; +arrow_curve_bot_right := hex"F4"; +arrow_curve_bot_left_right := hex"F5"; +arrow_circle_left := hex"F6"; +arrow_circle_right := hex"F7"; +arrow_squig_left := hex"F8"; +arrow_squig_right := hex"F9"; +arrow_squig_left_right := hex"FA"; +% ????????????? := hex"FB"; +arrow_left_to_right := hex"FC"; +arrow_right_to_left := hex"FD"; +arrow_up_to_down := hex"FE"; +arrow_down_to_up := hex"FF"; + +% let the show begin : + +input mathastr; +input maydigit; +input mathltlk; +input mathfine; +input mathsymb; +input mathsmsy; +input mathbdel; +input matharrw; + +main_name_string := "sqsubset"; +t := hex"80"; +forsuffixes $=,_not,_eq,_not_eq,_eq_not, + _eq_varnot,_eqq,_not_eqq,_eqq_not,_eqq_varnot, + _double,_double_not: + main_name_with($) := t; t := t+2; endfor; +input mathsubs; + +main_name_string := "sqsupset"; +t := hex"81"; +forsuffixes $=,_not,_eq,_not_eq,_eq_not, + _eq_varnot,_eqq,_not_eqq,_eqq_not,_eqq_varnot, + _double,_double_not: + main_name_with($) := t; t := t+2; endfor; +input mathsubs; + +main_name_string := "predecessor"; +t := hex"A0"; +forsuffixes $=,_not,_slant,_not_slant, + _eq,_not_eq,_eq_not,%_eq_varnot, + _eqq,_not_eqq,_eqq_not,_eqq_varnot, + _upperslant,_not_upperslant, + _opposite,_eq_opposite,_eqq_opposite, + _sim,_not_sim,_sim_not,_approx,_not_approx,_approx_not,_dot: + main_name_with($) := t; t := t+2; endfor; +input mathineq; + +main_name_string := "successor"; +t := hex"A1"; +forsuffixes $=,_not,_slant,_not_slant, + _eq,_not_eq,_eq_not,%_eq_varnot, + _eqq,_not_eqq,_eqq_not,_eqq_varnot, + _upperslant,_not_upperslant, + _opposite,_eq_opposite,_eqq_opposite, + _sim,_not_sim,_sim_not,_approx,_not_approx,_approx_not,_dot: + main_name_with($) := t; t := t+2; endfor; +input mathineq; + +main_name_string := "mbox";% ``m'' stands for medium. +t := hex"60"; +forsuffixes $=_plus,_minus,_times,_division, + _dot,_circle,_asterisk,_co_asterisk, + _left,_right,_top,_bot, + _sign,_slash,_backslash,_triangle_up: + main_name_with($) := t; t := t+1; endfor; +input mathmbcb; + +% see also: +% _peace_and_love,_ying_yang, +% _truc,_curt,_full_circle,_five_star,_six_star, +% _triangle_down,_triangle_left,_triangle_right, +% _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, +% _wedge,_vee, +% _black_left,_black_right,_black_top,_black_bot, +% _black_northwest,_black_northeast,_black_southwest,_black_southeast: + + +% parameters for TFM files. + +font_slant=0; +font_x_height=x_height#; +%font_normal_stretch=3u#; +%font_normal_shrink=2u#; +font_quad=18u#+4letter_fit#; +font_extra_space=2u#; +font_normal_space=6u#+2letter_fit#; + +end. + + + + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathbigs.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathbigs.mf new file mode 100644 index 00000000000..63b82899e5a --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathbigs.mf @@ -0,0 +1,846 @@ +% mathematical symbols by Anthony Phan. +% file: mathbigs.mf (large symbols) +% 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; + +% PARAMETERS + +text_rth# := 0[0.95stem#, 0.95cap_stem#]; +disp_rth# := 0.75[0.95stem#, 0.95cap_stem#]; +disp_stem# := 1.25cap_stem#; +disp_hair# := max(rth1#, cap_hair#*(cap_curve#/cap_stem#)); +define_whole_blacker_pixels(text_rth, disp_rth, disp_stem, disp_hair); + +% SUMMATIONS + +def tmp_program(expr lowerstem, sidestem, upperstem, beak, hair, beakjut, lo) = + pickup crisp.nib; + top y1 = top y2 = h; bot y5 = bot y6 = -d; + bot y12 = h-vround upperstem; y12 = y13 = y13'; + bot y14 = bot y15 = h-vround(upperstem+beak); + top y9 = -d+vround lowerstem; y9 = y9' = y10; + top y7 = top y8 = -d+vround(lowerstem+beak); + y3 = y12; y0 = 0.5[y12, y9]; + rt x6 = w-appr; x6 = x7 = x15 = x1+hround beakjut; + lft x2 = appr; x2 = x3; rt x5 = appr-hround lo; + rt x7-lft x8 = rt x15- lft x14 = hround hair; + x0 = floor(0.5[x2, x7])+0.5; + x9 = x13 = 0.5[x0, x14]; x9' = x8; z13'-z14 = whatever*(z1-z15); + adjust_slanted_bar(3, 0, 3', 0', max(.5(sidestem-crisp), 1), 1); + z11-z0 = z0-z0'; z12 = whatever[z3+2(z3'-z3), z11]; + adjust_slanted_bar(5, 11, 5', 11', max(hair-crisp, 1), -1); + z10 = whatever[z11, z5']; + z4 = whatever[z5', z11']; z4 = whatever[z3, z0']; + filldraw z1--z2--z3--z4--z5--z6--z7--z8{down} + ...beak_darkness[z9', 0.5[z8, z9]]...z9{left} + --z10--z11--z12--z13{right} + ...beak_darkness[z13', 0.5[z13, z14]]...z14{z15-z1} + --z15--cycle; + labels(0, 0', 1, 2, 3, 3', 4, 5, 5', 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); +enddef; + +beginchar(small_summation_sign, 8u#+2appr#, 0.8asc_height#, 0); + "Small summation sign"; + tmp_program(stem, stem, hair, 0.36h-stem, hair, 0.2u, 0.5u); +endchar; + +beginchar(summation_sign, 14u#+2appr#, 0, 10/6dh#); + "Textstyle summation sign"; + tmp_program(cap_stem, cap_stem, cap_hair, 0.333d-d/9, + cap_hair, 0.4u, 5/7u); +endchar; + +beginchar(Summation_sign, 18u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle summation sign"; + tmp_program(disp_stem, disp_stem, disp_hair, 0.333d-d/9, + disp_hair, 0.75u, u); + +endchar; + +% PRODUCTS AND COPRODUCTS + +def tmp_program(expr orientation, appr_corr, + stem, hair, jut, inner_jut, bracket, dish) = + if orientation = up: top y1 = top y3 = h; bot y2 = bot y4 = -d; + else: top y2 = top y4 = h; bot y1 = bot y3 = -d; fi + pos1(hround stem, 0); pos2(hround stem, 0); + pos3(hround stem, 0); pos4(hround stem, 0); + lft x1l = lft x2l = appr+hround(appr_corr+jut); + rt x3r = rt x4r = w-appr-hround(appr_corr+jut); + serif(1, 2, bracket, jut, hair, false, dish, 0, hair, true, 0); + serif(2, 1, bracket, jut, hair, true, dish, inner_jut, hair, true, dish); + serif(3, 4, bracket, 0, hair, false, 0, jut, hair, true, dish); + serif(4, 3, bracket, inner_jut, hair, true, dish, jut, hair, true, dish); + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw z1f--z3c--z3d--z1e--cycle; + penlabels(1, 2, 3, 4); +enddef; + +beginchar(small_product_sign, 8u#+2appr#, 0.8asc_height#, 0); + "Small product sign"; + pickup crisp.nib; + tmp_program(up, -0.875u, stem, hair, u, u, 0.5u, dish); +endchar; + +beginchar(product_sign, 16u#+2appr#, 0, 10/6dh#); + "Textstyle product sign"; + pickup crisp.nib; + tmp_program(up, 0, cap_stem, cap_hair, 1.8u, 1.8u, 0.9u, dish); +endchar; + +beginchar(Product_sign, 21u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle product sign"; + pickup crisp.nib; + tmp_program(up, 0, disp_stem, disp_hair, 2.4u, 2.4u, 1.2u, dish); +endchar; + +beginchar(small_coproduct_sign, 8u#+2appr#, 0.8asc_height#, 0); + "Small coproduct sign"; + pickup crisp.nib; + tmp_program(down, -0.875u, stem, hair, u, u, 0.5u, dish); +endchar; + +beginchar(coproduct_sign, 16u#+2appr#, 0, 10/6dh#); + "Textstyle coproduct sign"; + pickup crisp.nib; + tmp_program(down, 0, cap_stem, cap_hair, 1.8u, 1.8u, 0.9u, dish); +endchar; + +beginchar(Coproduct_sign, 21u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle coproduct sign"; + pickup crisp.nib; + tmp_program(down, 0, disp_stem, disp_hair, 2.4u, 2.4u, 1.2u, dish); +endchar; + +% BIG PLUS, BIG TIMES + +beginchar(bplus_sign, 10/6dh#+2appr#, 0, 10/6dh#); + "Textstyle big plus sign"; + use_rule2; + pickup rule.nib; y3 = y4 = good.y 0.5[-d, h]; + pickup tiny.nib; + pos1(rth, 0); pos2(rth, 0); pos3(rth, 90); pos4(rth, 90); + lft x1l = hround 0.5(w-rth); x2 = x1; + lft x3 = Appr; x1-x3 = x4-x1 = y1-y3 = y3-y2; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(Bplus_sign, 14/6dh#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle big plus sign"; + use_rule3; + pickup rule.nib; y3 = y4 = good.y 0.5[-d, h]; + pickup tiny.nib; + pos1(rth, 0); pos2(rth, 0); pos3(rth, 90); pos4(rth, 90); + lft x1l = hround 0.5(w-rth); x2 = x1; + lft x3 = Appr; x1-x3 = x4-x1 = y1-y3 = y3-y2; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(btimes_sign, 10/6dh#+2appr#, 0, 10/6dh#); + "Textstyle big times sign"; + use_rule2; + pickup rule.nib; x0 = good.x 0.5w; + y0 = y0' = good.y 0.5[-d, h]; + pickup tiny.nib; rt x0' = w-Appr; + z1-z0 = z0-z2 = (z0'-z0) rotated 45; z3-z0 = z0-z4 = (z0'-z0) rotated -45; + pos1(rth+2eps, -45); pos2(rth+2eps, -45); + pos3(rth+2eps, 45); pos4(rth+2eps, 45); + filldraw stroke z1e..z2e; filldraw stroke z4e..z3e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(Btimes_sign, 14/6dh#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle big times sign"; + use_rule3; + pickup rule.nib; x0 = good.x 0.5w; + y0 = y0' = good.y 0.5[-d, h]; + pickup tiny.nib; rt x0' = w-Appr; + z1-z0 = z0-z2 = (z0'-z0) rotated 45; z3-z0 = z0-z4 = (z0'-z0) rotated -45; + pos1(rth+2eps, -45); pos2(rth+2eps, -45); + pos3(rth+2eps, 45); pos4(rth+2eps, 45); + filldraw stroke z1e..z2e; filldraw stroke z4e..z3e; + penlabels(1, 2, 3, 4); +endchar; + +% COMPLEMENTS + +beginchar(bcomplement, 7.5u#+2appr#, 0, 10/6dh#); + "Textstyle complement"; + autorounded; pickup tiny.nib; + pos1(text_rth, 0); pos2(text_rth, 0); + pos7(text_rth, 0); pos8(text_rth, 0); + h-bot y1 = top y8+d = vround 0.25(h+d); + y3+0.5text_rth = h+vround(o*((h+d)/cap_height))+eps; + y6-0.5text_rth = -d-vround(o*((h+d)/cap_height))-eps; + rt x1r = w-appr; x1 = x2 = x7 = x8; + x4 = x5 = appr+0.5text_rth; x3 = x6 = 0.5[x1, x4]; + y2 = y4 = max(y3-x1+x3, 1/6[y1, y3]); + y5 = y7 = min(y6+x1-x3, 1/6[y8, y6]); + filldraw stroke z1e..z2e; filldraw stroke z7e..z8e; + pickup pencircle scaled text_rth; + draw flatcup(z2, z3, z4)..flatcup(z5, z6, z7); +% z4..z5 down_to_right z6 right_to_up z7; + penlabels(1, 2, 7, 8); labels(3, 4, 5, 6); +endchar; + +beginchar(Bcomplement, 10u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "displaystyle complement"; + autorounded; pickup tiny.nib; + pos1(disp_rth, 0); pos2(disp_rth, 0); + pos7(disp_rth, 0); pos8(disp_rth, 0); + h-bot y1 = top y8+d = vround 0.25(h+d); + y3+0.5disp_rth = h+vround(o*((h+d)/cap_height))+eps; + y6-0.5disp_rth = -d-vround(o*((h+d)/cap_height))-eps; + rt x1r = w-appr; x1 = x2 = x7 = x8; + x4 = x5 = appr+0.5disp_rth; x3 = x6 = 0.5[x1, x4]; + y2 = y4 = max(y3-x1+x3, 1/6[y1, y3]); + y5 = y7 = min(y6+x1-x3, 1/6[y8, y6]); + filldraw stroke z1e..z2e; filldraw stroke z7e..z8e; + pickup pencircle scaled disp_rth; + draw flatcup(z2, z3, z4)..flatcup(z5, z6, z7); +% z2 up_to_left z3 left_to_down +% z4..z5 down_to_right z6 right_to_up z7; + penlabels(1, 2, 7, 8); labels(3, 4, 5, 6); +endchar; + +% +% TRUCS +% + +beginchar(btruc_sign, 10/6dh#+2appr#, 0, 10/6dh#); + "Textstyle truc sign"; + pickup tiny.nib; + pos1(rth2, 0); pos2(rth2, 0); pos3(rth2, 90); pos4(rth2, 90); + top y1 = top y3r = top y4r = h; bot y2 = -d; + lft x1l = hround 0.5(w-rth2); x2 = x1; + lft x3 = Appr; x1-x3 = x4-x1; filldraw stroke z1e..z2e; + filldraw stroke z3e..z4e; penlabels(1, 2, 3, 4); +endchar; + +beginchar(Btruc_sign, 14/6dh#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle truc sign"; + pickup tiny.nib; + pos1(rth3, 0); pos2(rth3, 0); pos3(rth3, 90); pos4(rth3, 90); + top y1 = top y3r = top y4r = h; bot y2 = -d; + lft x1l = hround 0.5(w-rth2); x2 = x1; + lft x3 = Appr; x1-x3 = x4-x1; filldraw stroke z1e..z2e; + filldraw stroke z3e..z4e; penlabels(1, 2, 3, 4); +endchar; + +beginchar(bcurt_sign, 10/6dh#+2appr#, 0, 10/6dh#); + "Textstyle curT sign"; + pickup tiny.nib; + pos1(rth2, 0); pos2(rth2, 0); pos3(rth2, 90); pos4(rth2, 90); + bot y1 = bot y3l = bot y4l = -d; top y2 = h; + lft x1l = hround 0.5(w-rth); x2 = x1; + lft x3 = appr; x1-x3 = x4-x1; filldraw stroke z2e..z1e; + filldraw stroke z3e..z4e; penlabels(1, 2, 3, 4); +endchar; + +beginchar(Bcurt_sign, 14/6dh#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle curT sign"; + pickup tiny.nib; + pos1(rth3, 0); pos2(rth3, 0); pos3(rth3, 90); pos4(rth3, 90); + bot y1 = bot y3l = bot y4l = -d; top y2 = h; + lft x1l = hround 0.5(w-rth); x2 = x1; + lft x3 = appr; x1-x3 = x4-x1; filldraw stroke z2e..z1e; + filldraw stroke z3e..z4e; penlabels(1, 2, 3, 4); +endchar; + +% +% CUPS AND CAPS : STEMS MATCH BRACKETS ONES +% + +beginchar(bcap_sign, 14u#+2appr#, 0, 10/6dh#); + "Textstyle cap sign"; + pickup tiny.nib; + pos1(text_rth, 0); pos2(text_rth, 0); pos4(text_rth, 0); pos5(text_rth, 0); + lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4]; + bot y1 = bot y5 = -d; y3+0.5text_rth = h+vround(o*((h+d)/cap_height))+eps; + y2 = y4 = max(y3-0.5(x4-x2), 0.5[y3, y1]); + filldraw stroke z2e..z1e; filldraw stroke z4e..z5e; + pickup pencircle scaled text_rth; autorounded; draw flatcup(z2, z3, z4); + penlabels(1, 2, 3, 4, 5); +endchar; + +beginchar(Bcap_sign, 18u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle cap sign"; + pickup tiny.nib; + pos1(disp_rth, 0); pos2(disp_rth, 0); pos4(disp_rth, 0); pos5(disp_rth, 0); + lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4]; + bot y1 = bot y5 = -d; y3+0.5disp_rth = h+vround(o*((h+d)/cap_height))+eps; + y2 = y4 = max(y3-0.5(x4-x2), 0.5[y3, y1]); + filldraw stroke z2e..z1e; filldraw stroke z4e..z5e; + pickup pencircle scaled disp_rth; autorounded; draw flatcup(z2, z3, z4); + penlabels(1, 2, 3, 4, 5); +endchar; + +beginchar(bcup_sign, 14u#+2appr#, 0, 10/6dh#); + "Textstyle cup sign"; + pickup tiny.nib; + pos1(text_rth, 0); pos2(text_rth, 0); pos4(text_rth, 0); pos5(text_rth, 0); + lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4]; + top y1 = top y5 = h; y3-0.5text_rth = -d-vround(o*((h+d)/cap_height))-eps; + y2 = y4 = min(y3+0.5(x4-x2), 0.5[y3, y1]); + filldraw stroke z2e..z1e; filldraw stroke z4e..z5e; + pickup pencircle scaled text_rth; autorounded; draw flatcup(z2, z3, z4); + penlabels(1, 2, 3, 4, 5); +endchar; + +beginchar(Bcup_sign, 18u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle cup sign"; + pickup tiny.nib; + pos1(disp_rth, 0); pos2(disp_rth, 0); pos4(disp_rth, 0); pos5(disp_rth, 0); + lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4]; + top y1 = top y5 = h; y3-0.5disp_rth = -d-vround(o*((h+d)/cap_height))-eps; + y2 = y4 = min(y3+0.5(x4-x2), 0.5[y3, y1]); + filldraw stroke z2e..z1e; filldraw stroke z4e..z5e; + pickup pencircle scaled disp_rth; autorounded; draw flatcup(z2, z3, z4); + penlabels(1, 2, 3, 4, 5); +endchar; + +beginchar(bcup_plus, 14u#+2appr#, 0, 10/6dh#); + "Textstyle cup-plus sign"; + ensure_centering_of(rth2); + % + pickup tiny.nib; + pos1(text_rth, 0); pos2(text_rth, 0); pos4(text_rth, 0); pos5(text_rth, 0); + lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4]; + top y1 = top y5 = h; y3-0.5text_rth = -d-vround(o*((h+d)/cap_height))-eps; + y2 = y4 = min(y3+0.5(x4-x2), 0.5[y3, y1]); + filldraw stroke z2e..z1e; filldraw stroke z4e..z5e; + % + pos6(rth2, 0); pos7(rth2, 0); pos8(rth2, 90); pos9(rth2, 90); + y8 = y9 = vround(0.5[-d, h]-0.5rth2)+0.5rth2; + x6 = x7 = 0.5w; + numeric a; + a = 0.5(min(lft x5l-rt x1r-2.6u, h+d-text_rth-1.3u)-text_rth); + y6-y8r = y8l-y7 = vround a; x6l-x8 = x9-x6r = hround a; + filldraw stroke z6e..z7e; filldraw stroke z8e..z9e; + % + pickup pencircle scaled text_rth; autorounded; draw flatcup(z2, z3, z4); + penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9); +endchar; + +beginchar(Bcup_plus, 18u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle cup-plus sign"; + ensure_centering_of(rth3); + % + pickup tiny.nib; + pos1(disp_rth, 0); pos2(disp_rth, 0); pos4(disp_rth, 0); pos5(disp_rth, 0); + lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4]; + top y1 = top y5 = h; y3-0.5disp_rth = -d-vround(o*((h+d)/cap_height))-eps; + y2 = y4 = min(y3+0.5(x4-x2), 0.5[y3, y1]); + filldraw stroke z2e..z1e; filldraw stroke z4e..z5e; + % + pos6(rth3, 0); pos7(rth3, 0); pos8(rth3, 90); pos9(rth3, 90); + y8 = y9 = vround(0.5[-d, h]-0.5rth3)+0.5rth3; + x6 = x7 = 0.5w; + numeric a; + a = 0.5(min(lft x5l-rt x1r-2.9u, h+d-disp_rth-1.45u)-disp_rth); + y6-y8r = y8l-y7 = vround a; x6l-x8 = x9-x6r = hround a; + filldraw stroke z6e..z7e; filldraw stroke z8e..z9e; + % + pickup pencircle scaled disp_rth; autorounded; draw flatcup(z2, z3, z4); + penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9); +endchar; + +beginchar(bsqcap_sign, 14u#+2appr#, 0, 10/6dh#); + "Textstyle square cap sign"; + pickup tiny.nib; + pos1(text_rth, 180); pos4(text_rth, 0); + top y2r = top y3r = h; bot y1 = bot y4 = -d; + top y2r-bot y2l = top y3r-bot y3l = text_rth; + lft x1r = appr; rt x4r = w-appr; + x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l; + filldraw stroke z1e--z2e--z3e--z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(Bsqcap_sign, 18u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle square cap sign"; + pickup tiny.nib; + pos1(disp_rth, 180); pos4(disp_rth, 0); + top y2r = top y3r = h; bot y1 = bot y4 = -d; + top y2r-bot y2l = top y3r-bot y3l = disp_rth; + lft x1r = appr; rt x4r = w-appr; + x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l; + filldraw stroke z1e--z2e--z3e--z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(bsqcup_sign, 14u#+2appr#, 0, 10/6dh#); + "Textstyle square cup sign"; + pickup tiny.nib; + pos1(text_rth, 180); pos4(text_rth, 0); + bot y2r = bot y3r = -d; top y1 = top y4 = h; + top y2l-bot y2r = top y3l-bot y3r = text_rth; + lft x1r = appr; rt x4r = w-appr; + x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l; + filldraw stroke z1e--z2e--z3e--z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(Bsqcup_sign, 18u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle square cup sign"; + pickup tiny.nib; + pos1(disp_rth, 180); pos4(disp_rth, 0); + bot y2r = bot y3r = -d; top y1 = top y4 = h; + top y2l-bot y2r = top y3l-bot y3r = disp_rth; + lft x1r = appr; rt x4r = w-appr; + x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l; + filldraw stroke z1e--z2e--z3e--z4e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(bsqcup_plus, 14u#+2appr#, 0, 10/6dh#); + "Textstyle square cup-plus sign"; + ensure_centering_of(rth2); + % + pickup tiny.nib; + pos1(text_rth, 180); pos4(text_rth, 0); + bot y2r = bot y3r = -d; top y1 = top y4 = h; + top y2l-bot y2r = top y3l-bot y3r = text_rth; + lft x1r = appr; rt x4r = w-appr; + x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l; + filldraw stroke z1e--z2e--z3e--z4e; + % + pos6(rth2, 0); pos7(rth2, 0); pos8(rth2, 90); pos9(rth2, 90); + y8 = y9 = vround(0.5[-d, h]-0.5rth2)+0.5rth2; + x6 = x7 = 0.5w; + numeric a; + a = 0.5(min(lft x4l-rt x1l-2.6u, h+d-text_rth-1.3u)-text_rth); + y6-y8r = y8l-y7 = vround a; x6l-x8 = x9-x6r = hround a; + filldraw stroke z6e..z7e; filldraw stroke z8e..z9e; + penlabels(1, 2, 3, 4, 6, 7, 8, 9); +endchar; + +beginchar(Bsqcup_plus, 18u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle square cup-plus sign"; + ensure_centering_of(rth3); + % + pickup tiny.nib; + pos1(disp_rth, 180); pos4(disp_rth, 0); + bot y2r = bot y3r = -d; top y1 = top y4 = h; + top y2l-bot y2r = top y3l-bot y3r = disp_rth; + lft x1r = appr; rt x4r = w-appr; + x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l; + filldraw stroke z1e--z2e--z3e--z4e; + % + pos6(rth3, 0); pos7(rth3, 0); pos8(rth3, 90); pos9(rth3, 90); + y8 = y9 = vround(0.5[-d, h]-0.5rth3)+0.5rth3; + x6 = x7 = 0.5w; + numeric a; + a = 0.5(min(lft x4l-rt x1l-2.9u, h+d-disp_rth-1.45u)-disp_rth); + y6-y8r = y8l-y7 = vround a; x6l-x8 = x9-x6r = hround a; + filldraw stroke z6e..z7e; filldraw stroke z8e..z9e; + penlabels(1, 2, 3, 4, 6, 7, 8, 9); +endchar; + +% +% WEDGES AND VEES +% + +beginchar(bwedge_sign, 16u#+2appr#, 0, 10/6dh#); + "Textstyle wedge sign"; + pickup tiny.nib; + lft x1 = appr; x2 = good.x 0.5w; + x3-x2 = x2-x1; bot y1 = -d; y1 = y3 = y4 = y6; + top y2 = h+vround(o*((h+d)/cap_height))+eps; + x6-x1 = diag_width(text_rth-tiny, z2-z1); + x3-x4 = diag_width(text_rth-tiny, z2-z3); + z5-z4 = whatever*(z2-z3); z5-z6 = whatever*(z2-z1); + filldraw z1--z2--z3--z4--z5--z6--cycle; + labels(1, 2, 3, 4, 5, 6); +endchar; + +beginchar(Bwedge_sign, 22.4u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle wedge sign"; + pickup tiny.nib; + lft x1 = appr; x2 = good.x 0.5w; + x3-x2 = x2-x1; bot y1 = -d; y1 = y3 = y4 = y6; + top y2 = h+vround(o*((h+d)/cap_height))+eps; + x6-x1 = diag_width(disp_rth-tiny, z2-z1); + x3-x4 = diag_width(disp_rth-tiny, z2-z3); + z5-z4 = whatever*(z2-z3); z5-z6 = whatever*(z2-z1); + filldraw z1--z2--z3--z4--z5--z6--cycle; + labels(1, 2, 3, 4, 5, 6); +endchar; + +beginchar(bvee_sign, 16u#+2appr#, 0, 10/6dh#); + "Textstyle vee sign"; + pickup tiny.nib; + lft x1 = appr; x2 = good.x 0.5w; + x3-x2 = x2-x1; top y1 = h; y1 = y3 = y4 = y6; + bot y2 = -d-vround(o*((h+d)/cap_height))-eps; + x6-x1 = diag_width(text_rth-tiny, z2-z1); + x3-x4 = diag_width(text_rth-tiny, z2-z3); + z5-z4 = whatever*(z2-z3); z5-z6 = whatever*(z2-z1); + filldraw z1--z2--z3--z4--z5--z6--cycle; + labels(1, 2, 3, 4, 5, 6); +endchar; + +beginchar(Bvee_sign, 22.4u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle vee sign"; + pickup tiny.nib; + lft x1 = appr; x2 = good.x 0.5w; + x3-x2 = x2-x1; top y1 = h; y1 = y3 = y4 = y6; + bot y2 = -d-vround(o*((h+d)/cap_height))-eps; + x6-x1 = diag_width(disp_rth-tiny, z2-z1); + x3-x4 = diag_width(disp_rth-tiny, z2-z3); + z5-z4 = whatever*(z2-z3); z5-z6 = whatever*(z2-z1); + filldraw z1--z2--z3--z4--z5--z6--cycle; + labels(1, 2, 3, 4, 5, 6); +endchar; + +beginchar(bwedge_curly, 16u#+2appr#, 0, 10/6dh#); + "Textstyle curly wedge sign"; + pickup tiny.nib; + x2 = hround 0.5(w-text_rth)+0.5text_rth; + top y2 = h+vround(o*((h+d)/cap_height))+eps; + pos2(text_rth, 0); bot y1r = bot y3l = -d; + lft x1r = appr; + x3l-x2r = x2l-x1r; x1l = x1r; x3l = x3r; + x4 = x2; pos4(text_rth, 0); y4 = 0.625[y2, y1r]; + y1l-y1r = y3r-y3l = (text_rth-tiny)/cosd angle(z4r-z1r); + filldraw stroke z2e{down}...z1e{z1r-z4r}; + filldraw stroke z2e{down}...z3e{z3l-z4l}; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(Bwedge_curly, 22.4u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle curly wedge sign"; + pickup tiny.nib; + x2 = hround 0.5(w-disp_rth)+0.5disp_rth; + top y2 = h+vround(o*((h+d)/cap_height))+eps; + pos2(disp_rth, 0); bot y1r = bot y3l = -d; + lft x1r = appr; + x3l-x2r = x2l-x1r; x1l = x1r; x3l = x3r; + x4 = x2; pos4(disp_rth, 0); y4 = 0.625[y2, y1r]; + y1l-y1r = y3r-y3l = (disp_rth-tiny)/cosd angle(z4r-z1r); + filldraw stroke z2e{down}...z1e{z1r-z4r}; + filldraw stroke z2e{down}...z3e{z3l-z4l}; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(bvee_curly, 16u#+2appr#, 0, 10/6dh#); + "Textstyle curly vee sign"; + pickup tiny.nib; + x2 = hround 0.5(w-text_rth)+0.5text_rth; + bot y2 = -d-vround(o*((h+d)/cap_height))-eps; + pos2(text_rth, 0); top y1r = top y3l = h; + lft x1r = appr; + x1l = x1r; x3l = x3r; x3l-x2r = x2l-x1r; + x4 = x2; pos4(text_rth, 0); y4 = 0.625[y2, y1r]; + y1r-y1l = y3l-y3r = (text_rth-tiny)/cosd angle(z4r-z1r); + filldraw stroke z2e{up}...z1e{z1r-z4r}; + filldraw stroke z2e{up}...z3e{z3l-z4l}; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(Bvee_curly, 22.4u#+2appr#, 0, 14/6dh#); + padded bigop_padding#; + "Displaystyle curly vee sign"; + pickup tiny.nib; + x2 = hround 0.5(w-disp_rth)+0.5disp_rth; + bot y2 = -d-vround(o*((h+d)/cap_height))-eps; + pos2(disp_rth, 0); top y1r = top y3l = h; + lft x1r = appr; + x1l = x1r; x3l = x3r; x3l-x2r = x2l-x1r; + x4 = x2; pos4(disp_rth, 0); y4 = 0.625[y2, y1r]; + y1r-y1l = y3l-y3r = (disp_rth-tiny)/cosd angle(z4r-z1r); + filldraw stroke z2e{up}...z1e{z1r-z4r}; + filldraw stroke z2e{up}...z3e{z3l-z4l}; + penlabels(1, 2, 3, 4); +endchar; + +% UGLY + +beginchar(btriangle_up, 16u#+2appr#, 0, 10/6dh#); + "Big triangle up"; + pickup tiny.nib; lft x1r = appr; + x2r = good.x 0.5w; x3r-x2r = x2r-x1r; + bot y1r = -d; y1r = y3r = y1 = y3; top y2r = h+o; + top y1l-bot y1r = top y3l-bot y3r = rth; + x1-x1r = diag_width(rth-tiny, z2r-z1r); + x3r-x3 = diag_width(rth-tiny, z2r-z3r); + z2l-z1 = whatever*(z2r-z1r); z2l-z3 = whatever*(z2r-z3r); + z1l = whatever[z1, z2l]; z3l = whatever[z3, z2l]; + filldraw stroke z1e--z2e--z3e--z1e; penlabels(1, 2, 3); +endchar; + +beginchar(btriangle_down, 16u#+2appr#, 0, 10/6dh#); + "Big triangle down"; + pickup tiny.nib; lft x1r = appr; + x2r = good.x 0.5w; x3r-x2r = x2r-x1r; + top y1r = h; y1r = y3r = y1 = y3; bot y2r = -d-o; + top y1r-bot y1l = top y3r-bot y3l = rth; + x1-x1r = diag_width(rth-tiny, z2r-z1r); + x3r-x3 = diag_width(rth-tiny, z2r-z3r); + z2l-z1 = whatever*(z2r-z1r); z2l-z3 = whatever*(z2r-z3r); + z1l = whatever[z1, z2l]; z3l = whatever[z3, z2l]; + filldraw stroke z1e--z2e--z3e--z1e; penlabels(1, 2, 3); +endchar; + +% INTEGRALS + +beginchar(bintegral_sign,6u#+2appr#,0,100/54dh#); + "Textstyle integral sign"; + z.c=(0.5w,0.5[-d,h]); + y.t=y.tl=y.tr=h; y.b=y.bl=y.br=-d; + x.c-x.t=x.b-x.c=2.3u;% slope + x.tr-x.t=x.t-x.tl=x.br-x.b=x.b-x.bl=.5cap_stem/sind(angle(z.t-z.c)); + z1 = 0.52[z.bl,z.tl]; + z2 = (hround(appr+u), 0.82[-d, h]); + z3 = (w-appr-2.3u, 1[-d, h]); + z4 = (w-appr, 0.63[y3, y5]); + z5 = (w-appr-0.7u, vround(h-0.2dh)); + z6 = (w-appr-2.5u, 1[-d, h]-cap_hair); + z7 = 0.75[z.br,z.tr]; + x1.2=x2; z1.2-z1=whatever*(z.t-z.c); + y6.7=y6; z6.7-z7=whatever*(z.t-z.c); + path lastpath; + lastpath := + z1..controls 0.6[z1,z1.2] and 0.5[z2,z1.2].. + z2..controls(x2, 0.55[y2, y3]) and (0.65[x3, x2], y3).. + z3..controls(0.79[x3, x4], y3) and (x4, 0.44[y4, y3]).. + z4..controls(x4, 0.6[y4, y5]) and (0.6[x5, x4], y5).. + z5..controls(0.65[x5, x6], y5) and (0.6[x6, x5], y6).. + z6..controls 0.6[z6, z6.7] and 0.65[z7, z6.7].. + z7; + lastpath := lastpath--lastpath rotated 180 shifted (w, -d)--cycle; + fill lastpath; + labels(1,2,3,4,5,6,7,1.2,6.7); + charwd:=charwd-u#; italcorr 0.5u#; w:= round(charwd*hppp); + tmp_picture := currentpicture; +endchar; + +beginchar(bintegral_double, 11.5u#+2appr#, 0, 100/54dh#); + "Textstyle double integral sign"; + italcorr 0.5u#; + currentpicture := tmp_picture+(tmp_picture shifted (hround 6.5u, 0)); +endchar; + +beginchar(bintegral_triple, + 18u#+2appr#, 0, 100/54dh#); + "Textstyle triple integral sign"; + italcorr 0.5u#; + currentpicture := tmp_picture+(tmp_picture shifted (hround 6.5u, 0)) + +(tmp_picture shifted (2hround 6.5u, 0)); +endchar; + +beginchar(bintegral_contour, 5u#+2appr#, 0, 100/54dh#); + "Textstyle contour integral sign"; + italcorr 0.5u#; + currentpicture := tmp_picture; + pickup rule.nib0; + rt x1 = w-appr+hround 1.5u+eps; + lft x3 = appr-hround 0.5u-eps; x2=x4=0.5[x1,x3]; + top y2 = vround(0.5[-d, h]+3.5u)+eps; + 0.5[y2, y4] = 0.5[-d, h] = y1 = y3; + draw z1 up_to_left z2 left_to_down z3 + down_to_right z4 right_to_up z1; + labels(1,2,3,4); +endchar; + +arrow_head_fitting:= true; +arrow_width := 2ceiling 0.70spread1+rth; +arrow_height# := 4u#; +arrow_height := round 4u; +arrow_breadth := rth; +arrow_stress := 0.65; +arrow_tense1 := 0.75; +arrow_tense2 := 0.875; + +beginchar(bintegral_contour_pos, 5u#+2appr#, 0, 100/54dh#); + "Textstyle positive contour integral sign"; + italcorr 0.5u#; + currentpicture := tmp_picture; + pickup rule.nib0; + rt x1 = w-appr+hround 1.5u+eps; + lft x3 = appr-hround 0.5u-eps; x2=x4=0.5[x1,x3]; + top y2 = vround(0.5[-d, h]+3.5u)+eps; + 0.5[y2, y4] = 0.5[-d, h] = y1 = y3; + draw z1 up_to_left z2 left_to_down z3 + down_to_right z4 right_to_up z1; + pickup tiny.nib; + arrow_head5(subpath (0,3) of (z4 right_to_up z1 up_to_left z2), both); + labels(1, 2, 3, 4, 5, 5l, 5r); +endchar; + +beginchar(bintegral_contour_neg, 5u#+2appr#, 0, 100/54dh#); + "Textstyle negative contour integral sign"; + italcorr 0.5u#; + currentpicture := tmp_picture; + pickup rule.nib0; + rt x1 = w-appr+hround 1.5u+eps; + lft x3 = appr-hround 0.5u-eps; x2=x4=0.5[x1,x3]; + top y2 = vround(0.5[-d, h]+3.5u)+eps; + 0.5[y2, y4] = 0.5[-d, h] = y1 = y3; + draw z1 up_to_left z2 left_to_down z3 + down_to_right z4 right_to_up z1; + pickup tiny.nib; + arrow_head5(subpath (0,3) of (z2 right_to_down z1 down_to_left z4), both); + labels(1, 2, 3, 4, 5, 5l, 5r); +endchar; + +beginchar(bintegral_square, 5u#+2appr#, 0, 100/54dh#); + "Textstyle square integral sign"; + italcorr 0.5u#; + currentpicture := tmp_picture; + pickup tiny.nib; + top y1r = top y2r = vround(0.5[-d, h]+3.5u); + rt x2r = rt x3r = w-appr+hround 1.5u; + 0.5[y1r, y3r] = 0.5[y2r, y4r] = 0.5[-d, h]; + lft x1r=lft x4r=appr-hround 0.5u; + rt x1l-lft x1r = rt x2r-lft x2l + = rt x3r-lft x3l = rt x4l-lft x4r = rth0; + top y1r-bot y1l = top y2r-bot y2l + = top y3l-bot y3r = top y4l-bot y4r = rth0; + filldraw stroke z1e--z2e--z3e--z4e--z1e; + penlabels(1, 2, 3, 4); +endchar; + +beginchar(bintegral_square_pos, 5u#+2appr#, 0, 100/54dh#); + "Textstyle positive square integral sign"; + italcorr 0.5u#; + currentpicture := tmp_picture; + pickup tiny.nib; + top y1r = top y2r = vround(0.5[-d, h]+3.5u); + rt x2r = rt x3r = w-appr+hround 1.5u; + 0.5[y1r, y3r] = 0.5[y2r, y4r] = 0.5[-d, h]; + lft x1r=lft x4r=appr-hround 0.5u; + rt x1l-lft x1r = rt x2r-lft x2l + = rt x3r-lft x3l = rt x4l-lft x4r = rth0; + top y1r-bot y1l = top y2r-bot y2l + = top y3l-bot y3r = top y4l-bot y4r = rth0; + filldraw stroke z1e--z2e--z3e--z4e--z1e; + pickup tiny.nib; z2=0.5[z2l,z2r]; z3=0.5[z3l,z3r]; + arrow_head5(z3..0.75[z3,z2], both); + penlabels(1, 2, 3, 4, 5); +endchar; + +beginchar(bintegral_square_neg, 5u#+2appr#, 0, 100/54dh#); + "Textstyle negative square integral sign"; + italcorr 0.5u#; + currentpicture := tmp_picture; + pickup tiny.nib; + top y1r = top y2r = vround(0.5[-d, h]+3.5u); + rt x2r = rt x3r = w-appr+hround 1.5u; + 0.5[y1r, y3r] = 0.5[y2r, y4r] = 0.5[-d, h]; + lft x1r=lft x4r=appr-hround 0.5u; + rt x1l-lft x1r = rt x2r-lft x2l + = rt x3r-lft x3l = rt x4l-lft x4r = rth0; + top y1r-bot y1l = top y2r-bot y2l + = top y3l-bot y3r = top y4l-bot y4r = rth0; + filldraw stroke z1e--z2e--z3e--z4e--z1e; + pickup tiny.nib; z2=0.5[z2l,z2r]; z3=0.5[z3l,z3r]; + arrow_head5(z2..0.75[z2,z3], both); + penlabels(1, 2, 3, 4, 5); +endchar; + +beginchar(bintegral_dblcont, 11u#+2appr#, 0, 100/54dh#); + "Textstyle double contour integral sign"; + italcorr 0.5u#; + currentpicture := tmp_picture+(tmp_picture shifted (hround 6u, 0)); + pickup rule.nib0; + rt x1 = w-appr+hround 1.5u+eps; lft x3 = appr-hround 0.5u-eps; + x2 = x4 = 0.5[x1,x3]; + top y2 = vround(0.5[-d, h]+3.5u)+eps; + 0.5[y2, y4] = 0.5[-d, h] = y1 = y3; + draw z1 up_to_left z2 left_to_down z3 + down_to_right z4 right_to_up z1; + labels(1, 2, 3, 4); +endchar; + +beginchar(Bintegral_sign, 12u#+2appr#,0,200/54dh#); +% save disp_stem; disp_stem=hround 2.2u;%46/36pt; + z1 = (hround(0.5w-0.5disp_stem), 0.52[-d, h]); + z2 = (w-appr-2.6u, 1[-d, h]); + z3 = (w-appr, 0.63[y2, y4]); + z4 = (w-appr-0.9u, vround(h-0.24dh)); + z5 = (w-appr-2.8u, 1[-d, h]-disp_hair); + z6 = (x1+disp_stem, 0.75[-d, h]); + path lastpath; + lastpath := + z1..controls(x1, 0.6[y1, y2]) and (0.85[x2, x1], y2).. + z2..controls(0.79[x2, x3], y2) and (x3, 0.44[y3, y2]).. + z3..controls(x3, 0.6[y3, y4]) and (0.6[x4, x3], y4).. + z4..controls(0.65[x4, x5], y4) and (0.6[x5, x4], y5).. + z5..controls(0.55[x5, x6], y5) and (x6, 0.8[y6, y5]).. + z6; + lastpath := lastpath--lastpath shifted (-x1,0) + rotated 180 shifted (x6, -d)--cycle; + fill lastpath; + labels(1,2,3,4,5,6); + charwd:=charwd-5u#; italcorr 4.5u#; w:= round(charwd*hppp); + tmp_picture := currentpicture; + integral_x:=x1; +endchar; + +beginchar(Bintegral_double, 16.5u#+2appr#, 0,200/54dh#); + "Displaystyle double integral sign"; + italcorr 4.5u#; + currentpicture := tmp_picture+(tmp_picture shifted (hround 9.5u, 0)); +endchar; + +beginchar(Bintegral_triple, 26u#+2appr#, 0,200/54dh#); + "Displaystyle triple integral sign"; + italcorr 4.5u#; + currentpicture := tmp_picture+(tmp_picture shifted (hround 9.5u, 0)) + +(tmp_picture shifted (2hround 9.5u, 0)); +endchar; + +beginchar(Bintegral_contour, 7u#+2appr#, 0,200/54dh#); + "Displaystyle contour integral sign"; + italcorr 4.5u#; + currentpicture := tmp_picture; + pickup rule.nib0; + lft x3 = appr+hround 0.75u-eps; + x1 = 2integral_x-x3+disp_stem; + x2=x4=0.5[x1,x3]; + top y2 = vround(0.5[-d, h]+5.25u)+eps; + 0.5[y2, y4] = 0.5[-d, h] = y1 = y3; + draw z1 up_to_left z2 left_to_down z3 + down_to_right z4 right_to_up z1; + labels(1,2,3,4); +endchar; + +beginchar(Bintegral_dblcont, 16u#+2appr#, 0,200/54dh#); + "Displaystyle double contour integral sign"; + italcorr 4.5u#; + currentpicture := tmp_picture+(tmp_picture shifted (hround 9u, 0)); + pickup rule.nib0; + lft x3 = appr-eps; + x1 = 2integral_x-x3+disp_stem+hround 9u; + x2=x4=0.5[x1,x3]; + top y2 = vround(0.5[-d, h]+6u)+eps; + 0.5[y2, y4] = 0.5[-d, h] = y1 = y3; + draw z1 up_to_left z2 left_to_down z3 + down_to_right z4 right_to_up z1; + labels(1,2,3,4); +endchar; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathbsym.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathbsym.mf new file mode 100644 index 00000000000..f8855a3736d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathbsym.mf @@ -0,0 +1,264 @@ +% mathematical symbols by Anthony Phan. +% file: mathsymb.mf (various mathematical symbols) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +def horizontal_rules_list=math_axis, + -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height, + math_axis-0.5spread1,math_axis-0.5spread2,math_axis-0.5spread3, + math_axis-0.5spread4, + math_axis+0.5spread1,math_axis+0.5spread2,math_axis+0.5spread3, + math_axis+0.5spread4, +enddef; + +%%% !!! marked signs are to be revised + +use_rule1; + +% standard + +beginchar(hex"20",6u#+2letter_fit#,0,0); + "Normal space"; +endchar; + +% hex"00" + +beginchar(currentlocation,arithmetic_bounds); + "Top dot plus sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + lft x1l=hround 0.5(w-rth); x2=x1; + lft x3=Appr; x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + pickup null.nib; + adjust_dot5((x1,y3+6.5u+0.5dtsz),dtsz,true,false); dot(5,5'); + penlabels(1,2,3,4); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Top dot minus sign"; + pickup tiny.nib; + lft x1=Appr; rt x2=w-Appr; + y2=y1=math_axis; pos1(rth,90); pos2(rth,90); + filldraw stroke z1e..z2e; penlabels(1,2); + adjust_dot3((0.5[x1,x2],y1+math_spread[0.5x_height,0.6x_height]), + dtsz,true,false); dot(3,3'); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Top dot times sign"; + pickup rule.nib; x0=good.x 0.5w; + pickup tiny.nib; rt x0'=w-Appr; y0=y0'=math_axis; + z1-z0=z0-z2=(z0'-z0) rotated 45; z3-z0=z0-z4=(z0'-z0) rotated -45; + pos1(rth+2eps,-45); pos2(rth+2eps,-45); + pos3(rth+2eps,45); pos4(rth+2eps,45); + filldraw stroke z1e..z2e; filldraw stroke z4e..z3e; + pickup null.nib; + adjust_dot5((x0,y0+5.5u+0.5dtsz),dtsz,true,false); dot(5,5'); + penlabels(1,2,3,4); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Bot dot minus sign"; + pickup tiny.nib; + lft x1=Appr; rt x2=w-Appr; + y2=y1=math_axis; pos1(rth,90); pos2(rth,90); + filldraw stroke z1e..z2e; penlabels(1,2); + adjust_dot3((0.5[x1,x2],y1-math_spread[0.5x_height,0.6x_height]), + dtsz,true,false); dot(3,3'); +endchar; + +beginchar(currentlocation,3u#+2appr#,cap_height#,0); + "Cap centered dot"; + pickup null.nib; + adjust_dot1((0.5w,0.5h),1.2dtsz,false,false); + dot(1,1'); +endchar; + +beginchar(currentlocation,7u#+2appr#,v_center(7u#)); + "Small box"; + pickup tiny.nib; + a:=sqrt(3.14159)*0.5*max(7u,dtsz+rth0); + top y1r=top y2r=vround(math_axis+0.5a); + bot y3r=bot y4r=top y1r-vround a; + lft x1r=lft x4r=hround 0.5(w-a); + rt x2r=rt x3r=lft x1r+hround a; + rt x1l-lft x1r=rt x2r-lft x2l + =rt x3r-lft x3l=rt x4l-lft x4r=rth0; + top y1r-bot y1l=top y2r-bot y2l + =top y3l-bot y3r=top y4l-bot y4r=rth0; + filldraw stroke z1e--z2e--z3e--z4e--z1e; + penlabels(1,2,3,4); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Large asterisk"; + autorounded; + interim stress:=0.5; pickup null.nib; + numeric b,c,dag_curve,dag_stem; spread:=12u; + b=2.6hair; c=0.625b; dag_curve=round 1.1cap_curve; dag_stem=hair; + % + x0=hround(0.5w-0.5dag_curve)+0.5dag_curve; + y0=0.5[-d,h]; + for $=1 upto 6: z[$]=b*dir($*60+30)+z0; + z[$]'=c*dir($*60+60)+z0; endfor + filldraw for $=1 upto 6: dagger_stroke[$](round(0.5spread-b)+eps, + dag_curve,dag_stem,dir($*60+30))...z[$]'...endfor cycle; + labels(0,1',2',3',4',5',6'); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Large co-asterisk"; + autorounded; + interim stress:=0.5; + pickup null.nib; + numeric b,c,dag_curve,dag_stem; spread:=12u; + b=2.6hair; c=0.625b; dag_curve=round 1.1cap_curve; dag_stem=hair; + % + x0=hround(0.5w-0.5dag_curve)+0.5dag_curve; + y0=0.5[-d,h]; + for $=1 upto 6: z[$]=b*dir($*60-60)+z0; + z[$]'=c*dir($*60-30)+z0; endfor + filldraw for $=1 upto 6: dagger_stroke[$](round(0.5spread-b)+eps, + dag_curve,dag_stem,dir($*60-60))...z[$]'...endfor cycle; + labels(0,1',2',3',4',5',6'); +endchar; + +% beginchar(currentlocation,arithmetic_bounds); +% "Top dot truc sign"; +% pickup tiny.nib; +% pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); +% top y1=top y3r=top y4r=h; bot y2=-d; +% lft x1l=hround 0.5(w-rth); x2=x1; +% lft x3=Appr; x1-x3=x4-x1; filldraw stroke z1e..z2e; +% filldraw stroke z3e..z4e; pickup null.nib; +% adjust_dot5((x1,h+u+0.5dtsz),dtsz,true,false); dot(5,5'); +% penlabels(1,2,3,4); +% endchar; + +% beginchar(currentlocation,arithmetic_bounds); +% "Top dot curT sign"; +% pickup tiny.nib; +% pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); +% bot y1=bot y3l=bot y4l=-d; top y2=h; +% lft x1l=hround 0.5(w-rth); x2=x1; +% lft x3=appr; x1-x3=x4-x1; filldraw stroke z2e..z1e; +% filldraw stroke z3e..z4e; pickup null.nib; +% adjust_dot5((x1,h+u+0.5dtsz),dtsz,true,false); dot(5,5'); +% penlabels(1,2,3,4); +% endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Top circ plus sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + lft x1l=hround 0.5(w-rth); x2=x1; + lft x3=Appr; x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis; + filldraw stroke z1e..z2e; % stem + filldraw stroke z3e..z4e; % crossbar + pickup rule.nib0; + adjust_dot5((x1,y3+6u+0.5rth0+1.5u),3u+rth0,true,false); + full_dot:=false; dot(5,5'); + penlabels(1,2,3,4); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Plus circle sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + lft x1l=hround 0.5(w-rth); x2=x1; + lft x3=Appr; x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis; + filldraw stroke z1e..z2e; % stem + filldraw stroke z3e..z4e; % crossbar + pickup rule.nib; z0=(x1,y3); + rt x5=ceiling rt 0.75[Appr,w-Appr]+eps; y5=y0; + z5-z0=z0-z7; z6-z0=z0-z8=(z5-z0) rotated 90; + draw superellipse(z5,z6,z7,z8,superness); + penlabels(1,2,3,4); labels(5,6,7,8); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Convolution sign"; + numeric darkness; darkness=0.8; + pickup rule.nib; x0=good.x 0.5w; + pickup tiny.nib; rt x1=w-Appr; y0=y1=y1'=y1''=math_axis; + x1'=min(x0+2.5rth,0.5[x0,x1]); x1''=min(x0+1.25rth,0.25[x0,x1]); + forsuffixes $=,': + z1$-z0=z0-z2$; z3$-z0=z0-z4$=(z1$-z0) rotated 45; + z5$-z0=z0-z6$=(z1$-z0) rotated 90; + z7$-z0=z0-z8$=(z1$-z0) rotated -45; + pos1$(rth,90); pos2$(rth,90); pos3$(rth,135); pos4$(rth,135); + pos5$(rth,0); pos6$(rth,0); pos7$(rth,45); pos8$(rth,45); + penlabels(1$,2$,3$,4$,5$,6$,7$,8$); + endfor + z1''-z0=z0-z2''; z3''-z0=z0-z4''=(z1''-z0) rotated 45; + z5''-z0=z0-z6''=(z1''-z0) rotated 90; + z7''-z0=z0-z8''=(z1''-z0) rotated -45; + pos1''(darkness*rth,90); pos2''(darkness*rth,90); + pos3''(darkness*rth,135); pos4''(darkness*rth,135); + pos5''(darkness*rth,0); pos6''(darkness*rth,0); + pos7''(darkness*rth,45); pos8''(darkness*rth,45); + penlabels(1'',2'',3'',4'',5'',6'',7'',8''); + filldraw stroke z2e---z2'e...z2''e---z1''e...z1'e---z1e; + filldraw stroke z4e---z4'e...z4''e---z3''e...z3'e---z3e; + filldraw stroke z5e---z5'e...z5''e---z6''e...z6'e---z6e; + filldraw stroke z8e---z8'e...z8''e---z7''e...z7'e---z7e; +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Divide on times sign"; + numeric darkness; darkness=0.8; + pickup rule.nib; x0=good.x 0.5w; + pickup tiny.nib; rt x1=w-Appr; y0=y1=y1'=y1''=math_axis; + x1'=min(x0+2.5rth,0.5[x0,x1]); x1''=min(x0+1.25rth,0.25[x0,x1]); + z1-z0=z0-z2; z1'-z0=z0-z2'; z1''-z0=z0-z2''; + z3-z0=z0-z4=(z1-z0) rotated 45; z7-z0=z0-z8=(z1-z0) rotated 135; + pos1(rth,90); pos2(rth,90); pos1'(rth,90); pos2'(rth,90); + pos3(rth,135); pos4(rth,135); pos7(rth,225); pos8(rth,225); + pos1''(darkness*rth,90); pos2''(darkness*rth,90); + filldraw stroke z2e---z2'e...z2''e---z1''e...z1'e---z1e; + filldraw stroke z4e..z3e; filldraw stroke z8e..z7e; + pickup null.nib; + adjust_dot5((x0,y0+5.5u-0.5dtsz),dtsz,true,false); dot(5,5'); + adjust_dot6((x0,y0-5.5u+0.5dtsz),dtsz,true,false); dot(6,6'); + penlabels(1,1',1'',2,2',2'',3,4,7,8); +endchar; + +beginchar(currentlocation,7u#+2appr#,v_center(7u#)); + "Small full diamond"; + pickup tiny.nib; + a:=sqrt(3.14159)*0.5*max(7u,dtsz+rth0)-0.5rth0; + y2=y4=good.y math_axis; x1=x3=good.x 0.5w; + y1-y2=y2-y3=vround(0.5a*sqrt(2)-tiny)+eps; + x2-x1=x1-x4=hround(0.5a*sqrt(2)-tiny)+eps; + fill z1--z2--z3--z4--cycle; + labels(1,2,3,4); +endchar; + +beginchar(currentlocation,7u#+2appr#,v_center(7u#)); + "Small full box"; + pickup tiny.nib; + a:=sqrt(3.14159)*0.5*max(7u-rth0,dtsz); + top y1=top y2=vround(math_axis+0.5a); + bot y3=bot y4=top y1-vround a; + lft x1=lft x4=hround 0.5(w-a); + rt x2=rt x3=lft x1+hround a; + filldraw z1--z4--z3--z2--cycle; + labels(1,2,3,4); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Big five star"; + pickup tiny.nib; + draw_star.a((0.5w,math_axis),5,6u+o,0.1,90,false); + labels(a); +endchar; + +beginchar(currentlocation,arithmetic_bounds); + "Big six star"; + pickup tiny.nib; + draw_star.a((0.5w,math_axis),6,6u+o,0.3,90,false); + labels(a); +endchar; + +% hex"10" diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathc10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathc10.mf new file mode 100644 index 00000000000..a64516bda8e --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathc10.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathu10.mf (math serie U at 10 points) +% last modification: May 16, 2005. + +font_identifier:="mathc"; font_size 10pt#; +font_coding_scheme "mathc"; + +input mathprmt; +input mathcdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf new file mode 100644 index 00000000000..54c2c06236e --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf @@ -0,0 +1,1464 @@ +% mathematical symbols by Anthony Phan. +% file: mathcall.mf (calligraphic font) +% last modification: May 16, 2005. + +% +% LOWERCASE +% +% design, metrics and italic corrections checked (nov. 28, 2002). +% + +cmchar "Calligraphic a"; +beginchar("a", 9u#, x_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + x_height#*slant+0.5lower_cal_width#-2u#) if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = vround 0.98h; x1 = x2 = good.x(w-2.5u); x4 = w; + draw z1..hook_out(2, 3, 4); + top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8]; + x5 = x1; x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7]; + draw z5 up_to_left z6 left_to_down z7 + down_to_right z8 right_to_up z5; + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic b"; +beginchar("b", 8u#, asc_height#, 0); + italcorr .75x_height#*slant+0.5curve#-u# if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; y2 = 0.5x_height; bot y3 = -oo; + y4 = 0.5x_height; top y5 = x_height+oo; + x1 = x2 = good.x 1.5u; x3 = 0.5[x2, x4]; + x4 = good.x(w-1.25u); x5 = 0.5[x2, x4]; + draw z1-cal.extension--z1..z2{down} + ...z3{right}...z4{up}...z5{left}...z2{down}; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5); +endchar; + +cmchar "Calligraphic c"; +beginchar("c", 8u#, x_height#, 0); + italcorr max(0.25x_height#*slant+0.5lower_cal_width#, + 0.85x_height#*slant+0.5lower_cal_width#-1.1u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x2-x1 = hround u; rt x2 = hround(w-1.1u); + if x2 > w-1.25u: x2 := good.x w-1.25u; fi + x3 = 0.6[x4, x2]; x4 = good.x 1.25u; + x5 = 0.5[x4, x6]; x6 = good.x w; + top y3 = h+oo; y4 = .5h; bot y5 = -oo; + y1 = good.y 0.65[y5, y3]; y2 = .8[y5, y3]; + y6 = good.y 1/4x_height; + draw z1 ... z2 up_to_left z3 left_to_down + z4 down_to_right z5...z6; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6); +endchar; + +cmchar "Calligraphic d"; +beginchar("d", 9u#, asc_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + h#*slant+0.5lower_cal_width#-2u#) if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; x1 = x2 = good.x(w-2.5u); x4 = w; + draw z1-cal.extension--z1---hook_out(2, 3, 4); + top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8]; + x5 = x1; x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7]; + draw z5 up_to_left z6 left_to_down z7 + down_to_right z8 right_to_up z5; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic e"; +beginchar("e", 8u#, x_height#, 0); + italcorr max(0.25x_height#*slant+0.5lower_cal_width#, + 0.85x_height#*slant+0.5lower_cal_width#-1.1u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + rt x1 = hround(w-1.1u); x2 = 0.6[x3, x1]; + if x1 > w-1.25u: x1 := good.x w-1.25u; fi + x3 = good.x 1.25u; x4 = 0.5[x3, x5]; x5 = good.x w; + y1 = 0.8[y4, y2]; top y2 = h+oo; y3 = .5h; bot y4 = -oo; + y5 = good.y 1/4x_height; + draw z3 right_to_up z1 up_to_left z2 + left_to_down z3 down_to_right z4...z5; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5); +endchar; + +cmchar "Calligraphic f"; +beginchar("f", 5.5u#, asc_height#, desc_depth#); + italcorr asc_height#*slant+.75u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + z88 = (0.5w-0.5u, h); z89 = (0.5w+0.5u, -d); + top y2 = h+oo; bot y5 = -d-oo; top y8 = top y9 = x_height; + y2-y0 = y6-y5 = vround 0.35min(d, h-x_height); + y1 = 0.5[y0, y2]; y6 = 0.5[y5, y7]; + y3 = 0.25[x_height, y2]; y4 = 0.5[y5, y3]; + rt x1-w = -lft x6 = hround 0.25u; x7-x6 = hround 0.5u; + x0 = x1; x2 = 0.4[x1, x3]; x5 = 0.4[x6, x4]; + z3 = whatever[z88, z89]; z4 = whatever[z88, z89]; + lft x8 = hround(lft x3-0.5stem-1.25u); + rt x9 = hround(rt x3+0.5stem+1.7u); + draw (z0--z1) softjoin (z1 up_to_left z2....z3 + ---z4....z5{left}...z6);%...z7); + draw z8..z9; + % + math_fit(desc_depth#*slant+u#, x_height#*slant); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic g"; +beginchar("g", 8u#, x_height#, desc_depth#); + italcorr x_height#*slant+0.5lower_cal_width#-u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = vround 0.98h; + top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8]; + x1 = x2 = x5 = good.x(w-1.5u); x4 = 1.5u; + x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7]; + draw z1..desc_curve(2, 3, 4); + draw z5 up_to_left z6 left_to_down z7 + down_to_right z8 right_to_up z5; + % + math_fit(-min(.3x_height#*slant+0.5curve#-u#, + 1.5u#-desc_depth#*slant), ic#-1/3x_height#*slant); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic h"; +beginchar("h", 9u#, asc_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + 0.75x_height#*slant+0.5lower_cal_width#-2u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; bot y2 = -oo; + x1 = x2 = good.x 1.5u; + x4 = w-2.45u; x5 = w-2.80u; x7 = w; + draw z1-cal.extension--z1--z2 + --ital_arch(2, 3, 4)...hook_out(5, 6, 7); + % + math_fit(0, ic#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic i"; +beginchar("i", 5u#, min(10/7x_height#+0.5flare#, asc_height#), 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + (h#-0.5flare#)*slant + -2.5u#-0.4(h#-x_height#)*slant+0.5flare#+0.5u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(0.5w+0.30u); + x4 = good.x(0.5w-0.30u); x6 = w; + draw hook_in(1, 2, 3)...hook_out(4, 5, 6); + % + pickup fine_cal.nib; + cal_dot7(0.5w-0.4(h-x_height)*slant, h+1-0.5flare, flare); + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6); penlabels(7, 7'); +endchar; + +cmchar "Calligraphic j"; +beginchar("j", 5u#, min(10/7x_height#+0.5flare#, asc_height#), desc_depth#); + italcorr max(0.8x_height#*slant+0.5lower_cal_width#-u#, + (h#-0.5flare#)*slant + -1.5u#+0.5lower_cal_width#-0.6(h#-x_height#)*slant+0.5u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x(w-1.5u); + x6 = good.x 0; x0 = rt x3; + draw hook_in(1, 2, 3)..desc_curve(4, 5, 6); + % + pickup fine_cal.nib; + cal_dot7(x0-0.5flare-0.6(h-x_height)*slant, h+1-0.5flare, flare); + % + math_fit(desc_depth#*slant, x_height#*slant+0.5stem#-u#); + labels(1, 2, 3, 4, 5, 6); penlabels(7, 7'); +endchar; + +cmchar "Calligraphic k"; +beginchar("k", 8.5u#, asc_height#, 0); + italcorr max(0.2x_height#*slant+0.1w#, + 0.95x_height#*slant-0.1w#+0.5u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; bot y2 = -oo; x1 = x2 = good.x 1.5u; + draw z1-cal.extension--z1--z2; + % + rt x4 = .9w; x5 = x4-.1w; x7 = .8w; rt x8 = 1.1w; + y4 = .9x_height; top y5 = x_height+oo; bot y7 = -oo; y8 = .2x_height-oo; + (lft z6)t_ = (x2, 0.4x_height).t_+penoffset up of pen_[lower_cal.nib]; + draw z4{up}...{left}z5..tension atleast 2..{down}z6 + ..tension atleast 3 and atleast 2..z7{right}...{up}z8; % diagonals + % + math_fit(0, 1/3x_height#*slant+0.5hair#+0.5u#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic l"; +beginchar("l", 4.5u#, asc_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + asc_height#*slant+0.5lower_cal_width#-2.1u#) if math_fitting: +0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; x1 = x2 = good.x 1.9u; x4 = w; + draw z1-cal.extension--z1---hook_out(2, 3, 4); + % + math_fit(-0.5u#, 1/3x_height#*slant+0.5hair#+u#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic m"; +beginchar("m", 15u#, x_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + 0.75x_height#*slant+0.5lower_cal_width#-2u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x 2.5u; x6 = x7 = good.x 0.5w; + x9 = good.x(w-2.45u); x10 = good.x(w-2.80u); x12 = w; + bot y4 = bot y7 = -oo; + draw hook_in(1, 2, 3)---z4; + draw ital_arch(4, 5, 6)---z7; + draw ital_arch(7, 8, 9)...hook_out(10, 11, 12); + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); +endchar; + +cmchar "Calligraphic n"; +beginchar("n", 10u#, x_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + 0.75x_height#*slant+0.5lower_cal_width#-2u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x 2.5u; bot y4 = -oo; + x6 = good.x(w-2.45u); x7 = good.x(w-2.80u); + x9 = w; + draw hook_in(1, 2, 3)---z4; + draw ital_arch(4, 5, 6)...hook_out(7, 8, 9); + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +endchar; + +cmchar "Calligraphic o"; +beginchar("o", 9u#, x_height#, 0); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0);%(-0.25u#, -0.25u#); + % + pickup lower_cal.nib; + top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z1; + % not good +% x5 = good.x 0.75[x2, x1]; x6 = 0.5[x5, x7]; x7 = good.x w; +% y5 = 0.75[y6, y1]; y6 = good.y 0.6[y3, y1]; y7 = good.y 3/4x_height; +% draw z1{left}...z5 down_to_right z6...z7; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic p"; +beginchar("p", 9u#, x_height#, desc_depth#); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x 2.5u; bot y4 = -d-eps; + draw hook_in(1, 2, 3)..z4; + top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8]; + x5 = good.x(w-1.25u); x7 = x3; x6 = x8 = 0.5[x5, x7]; + draw z5 up_to_left z6 left_to_down z7 + down_to_right z8 right_to_up z5; + % + math_fit(-min(2/3x_height#*slant-0.5hair#-0.5u#, + 2u#-0.5stem#-desc_depth#*slant), ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic q"; +beginchar("q", 8u#, x_height#, desc_depth#); + italcorr x_height#*slant+0.5lower_cal_width#-u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = vround 0.98h; bot y2 = -d-eps; + x1 = x2 = good.x(w-1.5u); + draw z1--z2--z2+cal.extension; + top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8]; + x5 = x1; x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7]; + draw z5 up_to_left z6 left_to_down z7 + down_to_right z8 right_to_up z5; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#-1/3x_height#*slant); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic r"; +beginchar("r", 7.25u#, x_height#, 0); + italcorr 0.8x_height#*slant+0.5lower_cal_width#-0.15u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x 2.5u; bot y4 = -oo; + draw hook_in(1, 2, 3)---z4; + y5 = y2; y7 = good.y 0.65[y4, y5]; y6 = .8[y4, y5]; + x6 = good.x(w-0.65u); x6-x7 = hround 0.75u; x5 = 0.75[x4, x6]; + draw z4{up}...z5 right_to_down z6...z7; + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#-0.5u#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic s"; +beginchar("s", 5.25u#+1.75u#, x_height#, 0); + italcorr 0.9x_height#*slant-0.05w#+0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + rt x0 = rt x1 = .95w; x2 = .5[x3, x1]; lft x3 = .15w; x4 = .5[x6, x2]; + rt x5 = w; x6 = .5w; lft x7 = 0; lft x8 = .075w; + y0 = .8h; y1 = .9h; top y2 = h+o; y3 = .55[y4, y2]; y4 = .55[y6, y2]; + y5 = .45[y6, y4]; bot y6 = -o; y7 = .2h; y8 = .35h; + draw\\(z0--z1) softjoin (z1...z2{left}...z3{down}...z4...z5{down} + ...z6{left}...z7) softjoin (z7{up}...{right}z8); % stroke + math_fit(0, ic#); + labels(0, 1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic t"; +beginchar("t", 5.5u#, min(asc_height#, 10/7x_height#), 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + x_height#*slant-.25u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; x1 = x2 = good.x 2u; x4 = w; + draw z1---hook_out(2, 3, 4); + lft x5 = hround -0.75u; rt x6 = hround(w-0.65u); + top y5 = top y6 = x_height; + draw z5..z6; + % + math_fit(1.25u#-x_height#*slant, ic#); + labels(1, 2, 3, 4, 5, 6); +endchar; + +cmchar "Calligraphic u"; +beginchar("u", 9.5u#, x_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + x_height#*slant+0.5lower_cal_width#-2u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u); + x5 = 0.5[x4, x6]; x6 = x7 = x8 = good.x(w-2.5u); x10 = w; + y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57h; top y7 = h; + draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up}; + draw z7..hook_out(8, 9, 10); + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 6, 7, 8, 9, 10); +endchar; + +%cmchar "Calligraphic v"; +% beginchar("v", 8u#, x_height#, 0); +% italcorr 0.8x_height#*slant; +% adjust_fit(0, 0.5u#); +% % +% pickup lower_cal.nib; +% x1 = 0; top y1 = h; z3 = (.48w, 0); +% z0.t_ = z2.t_+penoffset down of currentpen +% = z3.t_+penoffset down of pen_[tilted.nib]; +% draw z1{right}..tension atleast 1 and infinity..z2; % left diagonal +% pickup tilted.nib; +% rt x4 = w; x5 = x4-.2w; top y4 = .8h; top y5 = h; +% path p; p = z3..tension atleast 3 and 1..{up}z4; +% erase fill z0--(x0, y0-0.5h)--(x4, y0-0.5h)--(x4+eps, y4)--reverse p--cycle; +% draw p...{left}z5; % right diagonal +% % +% math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, 2/3ic#); +% labels(0, 1, 2, 3, 4, 5); +% endchar; + +cmchar "Calligraphic v"; +beginchar("v", 8.75u#, x_height#, 0); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; % same as "o" + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u); + x5 = 0.5[x4, x6]; x6 = good.x(w-1.25u); x7 = good.x(w-2.25u); + y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57h; top y7 = h+oo; + draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up}...z7; + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic w"; +% beginchar("w", 12.3u#, x_height#, 0); +% italcorr 0.8x_height#*slant; +% adjust_fit(0.2u#, 0.5u#); +% % +% pickup lower_cal.nib; +% x1 = 0; x3 = .5[x1, x6]; x6 = .52w; +% x9 = .58[x6, x10]; y3 = y9 = 0; top y1 = top y6 = h; +% z7 = .5[z8, z6]+bend; z4 = .5[z3, z5]+bend; +% (z0)t_ = (z2)t_+penoffset down of currentpen +% = (z3)t_+penoffset down of pen_[tilted.nib]; +% (z20)t_ = (z8)t_+penoffset down of currentpen +% = (z9)t_+penoffset down of pen_[tilted.nib]; +% draw z1{right}..tension atleast 1 and infinity..z2; % first diagonal +% pickup tilted.nib; +% x5 = x6; rt x10 = w; +% x11 = x10-.1w; top y5 = h; top y10 = .8h; top y11 = h; +% erase fill z0--(x0, y0-0.5h)--(x5, y0-0.5h)--z5..z4..z3--cycle; +% draw z3..z4..z5; % second diagonal +% pickup lower_cal.nib; +% erase fill\\(.3w, bot y6)--(w, bot y6)--(w, top y6)--(.3w, top y6)--cycle; +% draw z6..z7..z8; % third diagonal +% pickup tilted.nib; +% path p; p = z9..tension atleast 3 and 1..{up}z10; +% erase fill z20--(x20, y20-0.5h)--(x10, y20-0.5h)--(x10+eps, y10) +% --reverse p--cycle; +% draw p..{left}z11; % fourth diagonal +% % +% math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, 3/4ic#); +% labels(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20); +% endchar; + +cmchar "Calligraphic w"; +beginchar("w", 12.5u#, x_height#, 0); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; % same as "o" + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u); + x5 = 0.5[x4, x6]; x6 = x7 = good.x 0.5[2.5u,w-1.5u]; x8 = 0.5[x6,x9]; + x9 = good.x(w-1.25u); x10 = good.x(w-2.25u); + y4 = 0.7[y5, y6]; bot y5 = bot y8 = -oo; y6 = y9 = 0.57h; + top y7 = top y10 = h+oo; + draw hook_in(1, 2, 3)...z4 down_to_right z5...z6---z7; + draw z6 down_to_right z8...z9{up}...z10; + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic x"; +beginchar("x", 8.25u#, x_height#, 0); + italcorr max(1/9x_height#*slant, 0.9x_height#*slant+.5u#); + adjust_fit(0, 0.25u#); + % + pickup lower_cal.nib; + lft x1 = .08w; lft x2 = .2w; x4-x3 = x2-x1; rt x4 = w; + h-y1 = y4 = 1/9h; top y2 = h; bot y3 = 0; + draw z1{up}....z2{right} + ... .2[z2+(.1w, 0), z3-(.1w, 0)]---.8[z2+(.1w, 0), z3-(.1w, 0)] + ...{right}z3....{up}z4; % left diagonal + x5 = x6-u; rt x6 = w; lft x7 = 0; x8 = x7+u; + top y5 = h; y6 = .85h; y7 = h-y6; bot y8 = 0; + draw z5{right}...z6{down} + ..tension atleast 3..{down}z7...{right}z8; % right diagonal + % + math_fit(0, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic y"; +beginchar("y", 8.5u#, x_height#, desc_depth#); + italcorr x_height#*slant+0.5lower_cal_width#-0.5u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(2.80u); x4 = x10 = good.x(2.3u); + x5 = 0.5[x4, x6]; x6 = x7 = x8 = good.x(w-1.5u); + y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57h; top y7 = h; + draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up}; + draw z7..desc_curve(8, 9, 10); + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#-1/3x_height#*slant); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +endchar; + +cmchar "Calligraphic z"; +beginchar("z", 5.5u#+max(1.5u#, stem#), x_height#, 0);%desc_depth#); + italcorr x_height#*slant+0.5lower_cal_width#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + y1 = good.y 3/4x_height; + top y2 = h+oo; top y3 = vround 0.98h+eps; + bot y4 = -oo; bot y5 = -oo; + y6 = good.y 1/4x_height; + x1 = x4 = good.x u; x6 = good.x w; x6-x3 = hround 0.5u; + x2 = 0.25[x1, x3]; x5 = 0.25[x6, x4]; + draw z1 ... z2{right}..{z3-z4}z3 + --z4{z3-z4}..z5{right}... z6; + % + math_fit(0, 1/3x_height#*slant+0.5hair#+0.5u#); + labels(1, 2, 3, 5, 6); +endchar; + +% +% LATIN EXTENSION +% +% the three first have been checked: design, metrics +% and italic corrections (nov. 28, 2002). +% + +cmchar "Calligraphic dotless i"; +beginchar(hex"10", 5u#, x_height#, 0);% height + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + 0.8x_height#*slant+0.5lower_cal_width#-1.7u#); + italcorr 1/3x_height#*slant+0.5hair#+0.5u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(0.5w+0.30u); + x4 = good.x(0.5w-0.30u); x6 = w; + draw hook_in(1, 2, 3)...hook_out(4, 5, 6); + % + math_fit(0, 0); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic dotless j"; +beginchar(hex"11", 5u#, x_height#, desc_depth#); + italcorr max(0.8x_height#*slant+0.5lower_cal_width#-u#, + 0.8x_height#*slant+0.5lower_cal_width#-0.5u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x(w-1.5u); + x6 = good.x 0; + draw hook_in(1, 2, 3)..desc_curve(4, 5, 6); + % + math_fit(0, 0); + labels(1, 2, 3, 4, 5, 6); +endchar; + +cmchar "Calligraphic es-zet"; +beginchar(oct"31", 8u#, asc_height#, desc_depth#); + italcorr max(.8h#*slant-.1w#, .5x_height#*slant)+.5u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = x3 = good.x 1.5u; x4 = .6[x2, x5]; rt x5 = .9w; x6 = .4w; + rt x7 = w; + x8 = .4[x9, x7]; lft x9 = rt x3; + top y1 = x_height+oo; bot y3 = -d-eps; z2 = .3[z3, z1]+bend; + top y4 = h+oo; y5 = .6[y6, y4]; y6 = .55h; y7 = .45[y8, y6]; + bot y8 = -oo; y9 = .1h; + draw z1-cal.extension--flex(z1, z2, z3); % stem + draw z2{up}...z4...z5{down}...{dir 200}z6{dir 10} + ...z7{down}...z8{left}...z9; % lobes + % + math_fit(.5u#, .3h#*slant+.5u#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); +endchar; + +cmchar "Calligraphic ae"; +beginchar(oct"32", 13u#, x_height#, 0); + italcorr max(0.25x_height#*slant+0.5lower_cal_width#, + 0.85x_height#*slant+0.5lower_cal_width#-1.1u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x 0.5w; + x1 = 0.5[x2, x4]; x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z1; + % + rt x5 = hround(w-1.1u); x6 = 0.6[x7, x5]; + if x5 > w-1.25u: x5 := good.x w-1.25u; fi + x7 = x4; x8 = 0.5[x7, x9]; x9 = good.x w; + y5 = 0.8[y8, y6]; top y6 = h+oo; y7 = .5h; bot y8 = -oo; + y9 = good.y 1/4x_height; + draw z7 right_to_up z5 up_to_left z6 + left_to_down z7 down_to_right z8...z9; + % + top y10=vround 0.98h; bot y11=0; + x10=x11=x4; draw z10..z11; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +endchar; + +cmchar "Calligraphic oe"; +beginchar(oct"33", 13u#, x_height#, 0); + italcorr max(0.25x_height#*slant+0.5lower_cal_width#, + 0.85x_height#*slant+0.5lower_cal_width#-1.1u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x 0.5w; x1 = x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z1; + % + rt x5 = hround(w-1.1u); x6 = 0.6[x7, x5]; + if x5 > w-1.25u: x5 := good.x w-1.25u; fi + x7 = x4; x8 = 0.5[x7, x9]; x9 = good.x w; + y5 = 0.8[y8, y6]; top y6 = h+oo; y7 = .5h; bot y8 = -oo; + y9 = good.y 1/4x_height; + draw z7 right_to_up z5 up_to_left z6 + left_to_down z7 down_to_right z8...z9; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); +endchar; + +cmchar "Calligraphic o/slash"; +beginchar(oct"34", 9u#, x_height#+0.5desc_depth#, 0.5desc_depth#); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0);%(-0.25u#, -0.25u#); + % + pickup lower_cal.nib; + top y1 = x_height+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z1; + % + pickup fine_cal.nib; + x5=good.x x4; x6=good.x x2; top y5=h+eps; bot y6=-d-eps; draw z5..z6; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6); +endchar; + +cmchar "Calligraphic AE"; +beginchar(oct"35",18u#,cap_height#,0); + italcorr max(h#*slant-.1w#,.2h#*slant)+.5u#; + adjust_fit(0,0); pickup cal.nib; + w':=hround 8.5u; + x1=.9[x3,x2]; rt x2=.9w'+w-w'; x3=.6[x4,x2]; lft x4=.05w'+w-w'; + x5=.7[x6,x2]; lft x6=w-w'; x7=.5[x6,x8]; rt x8=w; + y1=y2-.1h; y2=.9h+o; top y3=h+o; y4=.5[y5,y3]; + y5=.55h; y6=.6[y5,y7]; bot y7=-o; y8=.2h; + % + pickup tilted.nib; + lft x4'=.05w'+w-w'; + w':=hround 14.4u; + lft x1'=.05w'; x2'=.2w'; + y1'=y2'+.1h; bot y2'=bot_flourish_line; + y3'=y6; z3'=whatever[z2',z4]+2bend; y4'=y4; + draw\\(z1'..tension 1.2..{right}z2') softjoin (z2'...z3'...z4'{up}); +% left diagonal + pickup cal.nib; + draw\\(z1{2(x2-x1),y2-y1}...z2) + softjoin (z2...z3{left}...z4{down}...{right}z5); % upper arc + draw z5{left}...z6{down}...z7{right}...z8; % lower arc + draw rt z3'--z6; % bar + math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#); + labels(1',2',3',4',1,2,3,4,5,6,7,8); +endchar; + +cmchar "Calligraphic OE"; +beginchar(oct"36",16u#,cap_height#,0); + italcorr max(h#*slant-.1w#,.2h#*slant)+.5u#; + adjust_fit(0,0); pickup cal.nib; + w':=hround 8.5u; + x1=.9[x3,x2]; rt x2=.9w'+w-w'; x3=.6[x4,x2]; lft x4=.05w'+w-w'; + x5=.7[x6,x2]; lft x6=w-w'; x7=.5[x6,x8]; rt x8=w; + y1=y2-.1h; y2=.9h+o; top y3=h+o; y4=.5[y5,y3]; + y5=.55h; y6=.6[y5,y7]; bot y7=-o; y8=.2h; + draw\\(z1{2(x2-x1),y2-y1}...z2) + softjoin (z2...z3{left}...z4{down}...{right}z5); % upper arc + draw z5{left}...z6{down}...z7{right}...z8; % lower arc + % + w':=hround 12.6u; + x1'=.3w'; lft x2'=0; x3'=0.6[x2',x6]; x5'=0.75[x2',x4]; + lft x6'=.27w'; + top y1'=top y5'=h+o; y2'=.55h; bot y3'=-o; y6'=y2'; + draw z1'...z2'{down}...z3'{right}...z6{up}; + save p; path p; p = z4{up}...z5'{left}...{down}z6'; + draw subpath (0,1.8) of p; + math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#); + labels(1',2',3',5',6',1,2,3,4,5,6,7,8); +endchar; + +cmchar "Calligraphic O/slash"; +beginchar(oct"37",12.6u#,cap_height#+0.25desc_depth#, 0.25desc_depth#); + italcorr .7h#*slant+.5u#; + adjust_fit(0,0); pickup cal.nib; + x1=.3w; lft x2=0; x3=.5w; rt x4=w; x5=.6w; lft x6=.27w; + top y1=top y5=cap_height+o; y2=.55cap_height; + bot y3=-o; y4=.5cap_height; y6=y2; + path p; p=z1...z2{down}...z3{right}...z4{up}...z5{left}...{down}z6; + draw subpath(0,4.8) of p; % bowl +% pickup .nib; + top y7= vround(h+0.25desc_depth)+eps; bot y8=-hround(0.25desc_depth)-eps; + x7 = good.x x4; x8 = good.x 0.1[x2, x6]; draw z7..z8; + math_fit(.5u#-.3h#*slant,ic#-.5u#); + labels(1,2,3,4,5,6); +endchar; + +% +% DIGITS +% + +beginchar("0", 9u#, fig_height#, 0); + "The digit 0"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + numeric a; a = min(0.25h, 0.5(x_height-o)); + top y1 = h+o; bot y3 = -o; y2 = y4 = 0.5[y1, y3]; + lft x2 = hround max(0.7u, lft 1.45u); x4 = w-x2; + x1 = x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right z3 + right_to_up z4 up_to_left z1; + labels(1, 2, 3, 4); + math_fit(0, 0.5ic#); +endchar; + +beginchar("1", 9u#, fig_height#, 0); + "The digit 1"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y2 = h+o; bot y3 = -max(hround(0.05h)+eps, oo); y1 = good.y 0.35[y2, y3]; + rt x2-lft x1 = hround 4.875u; rt x2 = w-hround 2.125u; + rt x3 = w-hround 3.75u; + draw z1{x2-x1, 0.5(y2-y1)}...z2 & z2{x3-x2, 0.4(y3-y2)}...{down}z3; + labels(1, 2, 3); + math_fit(0, 0.5ic#); +endchar; + +beginchar("2", 9u#, fig_height#, 0); + "The digit 2"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y2 = h+o; bot y5 = bot y6 = 0; y1 = y3 = good.y 0.75h; + lft x1 = lft x5+eps = hround u; rt x3 = rt x6-eps = w-hround u; + x2 = x4 = 0.5[x1, x3]; y4 = 0.4[y5, y3]; + draw z1 up_to_right z2 right_to_down z3...z4---z5--z6; + labels(1, 2, 3, 4, 5, 6); + math_fit(0, 0.5ic#); +endchar; + +% beginchar("3", 9u#, fig_height#, 0); +% "The digit 3"; +% italcorr fig_height#*slant-0.5u#; +% adjust_fit(0, 0); +% pickup lower_cal.nib; +% bot y2 = -o; top y5 = top y6 = x_height; +% y1 = good.y 1/4x_height; +% y3 = a; y5-y4 = y3-y2; top y7 = top y8 = h; +% rt x3 = w-hround u; x3 = x4 = x7+hround 0.5u-eps; +% lft x1 = hround u; x1+hround 0.5u-eps = x8; +% lft x6 = hround 3u-eps; +% x2 = x5 = 0.5[x1, x3]; +% draw z1 ... z2 right_to_up z3..z4 up_to_left z5--z6--z7--z8; +% labels(1, 2, 3, 4, 5, 6, 7, 8); +% math_fit(0, 0.5ic#); +% endchar; + +beginchar("3", 9u#,fig_height#,0); + "The digit 3"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0,0); pickup lower_cal.nib; + lft x2 = hround 1.25u; x3=.46[x2,x4]; x4=good.x(w-2u); + x5=.7[x6,x2]; x6= good.x(w-1.25u); x7=.5[x6,x8]; lft x8 = hround u; + x1=good.x 0.6[x5, x2]; + %y1=y2-.1h; + y2=.85h+oo; top y3=h+oo; y4=.5[y5,y3]; + y5=good.y .55h; y6=.5[y5,y7]; bot y7=-oo; y8=good.y 1/4x_height; + y1 = good.y 0.55[y5, y3]; + draw\\(z1{2(x2-x1),y2-y1}...z2) + softjoin (z2...z3 right_to_down z4...{left}z5); % upper arc + draw z5 right_to_down z6...z7{left}...z8; % lower arc + math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#); + labels(1,2,3,4,5,6,7,8); +endchar; + +beginchar("4", 9u#, fig_height#, 0); + "The digit 4"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y1 = h+o; bot y5 = -max(hround(0.05h)+eps, oo); top y4 = x_height+eps; + y2 = y3 = good.y(0.5x_height); + rt x3 = w-hround 0.1u+eps; + lft x2 = hround 0.5u-eps; + x1 = good.x 0.33[x2, x3]; + x4 = good.x 0.725[x2, x3]; + x5 = good.x 0.475[x2, x3]; + draw z1{down}...z2--z3; draw z4{x5-x4, 0.45(y5-y4)}..z5{down}; + labels(1, 2, 3, 4, 5); + math_fit(0, 0.5ic#); +endchar; + +beginchar("5", 9u#, fig_height#, 0); + "The digit 5"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + bot y2 = -o; top y4 = x_height+eps; y1 = good.y 1/4x_height; + y3 = 0.5[y2, y4]; y5 = good.y 0.2[y4, y2]; top y6 = top y7 = h; + rt x3 = w-hround u; x3 = x7+hround 0.5u-eps; + lft x1 = hround u; x1+hround 0.5u = x5 = x6; + x2 = x4 = 0.5[x1, x3]; + draw z1 ... z2 right_to_up z3 + up_to_left z4 ... z5&z5..{0.5(x6-x4), y6-y4}z6&z6..{x7-x5, 0.5(y7-y5)}z7; + labels(1, 2, 3, 4, 5, 6, 7); + math_fit(0, 0.5ic#); +endchar; + +beginchar("6", 9u#, fig_height#, 0); + "The digit 6"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y2 = h+o; bot y4 = -o; y1 = good.y(h-0.2x_height); + top y6 = x_height+eps; y3 = 0.45[y4, y2]; y5 = 0.5[y4, y6]; + lft x3 = hround max(0.7u, lft 1.45u); x5 = w-x3; + rt x1 = w-hround u; x2 = 0.6[x3, x1]; x4 = x6 = 0.5[x3, x5]; + draw z1 ... z2{left} ... z3 down_to_right z4 + right_to_up z5 up_to_left z6 ...z3; + labels(1, 2, 3, 4, 5, 6); + math_fit(0, 0.5ic#); +endchar; + +beginchar("7", 9u#, fig_height#, 0); + "The digit 7"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y2 = top y3 = h+o; bot y4 = -max(hround(0.05h)+eps, oo); + y1 = good.y 0.3[y2, y4]; + lft x1 = lft x2 = hround 0.75u; rt x3 = w-hround 0.25u; + x4 = good.x 0.4[x2, x3]; + draw z1{0.2(x3-x1), y3-y1}..z2 & z2{x4-x2, 0.2(y4-y2)}..z3 + &z3{x4-x3, 0.4(y4-y3)}..z4; + labels(1, 2, 3, 4); + math_fit(0, 0.5ic#); +endchar; + +beginchar("8", 9u#, fig_height#, 0); + "The digit 8"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + bot y1 = vround 0.5h; bot y4 = -o; + y1-y2 = y1-y6 = y3-y4; y3 = y5 = a; + lft x2 = lft x3 = hround u; + rt x5 = rt x6 = w-hround u; + x1 = x4 = x7 = 0.5[x2, x6]; + top y7 = h+o; y8 = y9 = 0.5[y7, y1]; + lft x8 = w-rt x9 = hround 1.4u-eps; + draw z1 left_to_down z2..z3 down_to_right z4 right_to_up z5..z6 + up_to_left z1; draw superellipse(z9, z7, z8, z1, superness); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); + math_fit(0, 0.5ic#); +endchar; + +beginchar("9", 9u#, fig_height#, 0); + "The digit 9"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + bot y2 = -o; top y4 = h+o; y1 = good.y 0.2x_height; + bot y6 = h-x_height-eps; y3 = 0.45[y4, y2]; y5 = 0.5[y4, y6]; + lft x5 = hround max(0.7u, lft 1.45u); x3 = w-x5; + lft x1 = hround u; x2 = 0.6[x3, x1]; x4 = x6 = 0.5[x3, x5]; + draw z1 ... z2{right}... z3 up_to_left z4 + left_to_down z5 down_to_right z6 ...z3; + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); + math_fit(0, 0.5ic#); +endchar; + +% +% PUNCTUATION +% + +call_spanish_query:=0; +call_spanish_shriek:=1; +call_laquo:=2; +call_raquo:=3; + +vardef complete_quote@#(expr $,$$)= + pickup lower_cal.nib; + bot y@#.c=hround 0.06h; y@#.b=good.y 0.5h; y@#.a-y@#.b=y@#.b-y@#.c; + if $$<0: lft x@#.a=lft x@#.c=rt x@#.b-(hround 4u+2eps)=$; + else: rt x@#.a=rt x@#.c=lft x@#.b+(hround 4u+2eps)=$; fi + draw z@#.a{(z@#.b-z@#.a) yscaled 3}..z@#.b + &z@#.b..{(z@#.c-z@#.b) yscaled 3}z@#.c; + labels(@#.a,@#.b,@#.c); +enddef; + +beginchar("<",8u#,x_height#,0); + "French single opening quote"; + complete_quote1(w-hround 2u+eps,1); +endchar; + +beginchar(">",8u#,x_height#,0); + "French single closing quote"; + complete_quote1(hround 2u-eps,-1); +endchar; + +beginchar(call_laquo,10u#,x_height#,0); + "French double opening quote"; + complete_quote1(w-hround u+eps,1); + complete_quote2(w-hround 4u+eps,1); +endchar; + +beginchar(call_raquo,10u#,x_height#,0); + "French double closing quote"; + complete_quote1(hround u-eps,-1); + complete_quote2(hround 4u-eps,-1); +endchar; + +cmchar "Hash mark (number sign)"; +spread#:=math_spread[0.45x_height#,0.55x_height#]; +spread:=2ceiling(spread#*hppp/2)+eps; +beginchar("#",15u#,asc_height#,asc_depth#); + italcorr (math_axis#+.5(spread#+rth1#))*slant-.5u#; + adjust_fit(0,0); + pickup lower_cal.nib; lft x1=hround u-eps; x3=x1; x2=x4=w-x1; + y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis; + draw z1--z2; % upper bar + draw z3--z4; % lower bar + lft x6=hround 3u; rt x7=hround(w-3u); x5-x6=x7-x8; + x8=good.x .5\\w; + top y5=top y7=h+eps; bot y6=bot y8=-d-eps; + y15=y1; z15=whatever[z5,z6]; y36=y3; z36=whatever[z5,z6]; + y27=y2; z27=whatever[z7,z8]; y48=y4; z48=whatever[z7,z8]; + draw z5--if x5>x6+1:(good.x(x15+.5),y1)--(good.x(x15-.5),y1) + --(good.x(x36+.5),y3)--(good.x(x36-.5),y3)--fi\\z6; % left diagonal + draw z7--if x7>x8+1:(good.x(x27+.5),y2)--(good.x(x27-.5),y2) + --(good.x(x48+.5),y4)--(good.x(x48-.5),y4)--fi\\z8; % right diagonal + labels(1,2,3,4,5,6,7,8,15,27,36,48); +endchar; + +cmchar "Plus sign"; +beginchar("+",arithmetic_bounds); + pickup lower_cal.nib; + x1=x2=good.x .5w; top y1=h+eps; .5[y1,y2]=math_axis; + lft x3=hround u-eps; x4=w-x3; y3=y4=math_axis; + draw z1--z2; % stem + draw z3--z4; % crossbar + labels(1,2,3,4); +endchar; + +beginchar("*",9u#,body_height#,0); + "Asterisk"; + italcorr body_height#*slant-u#; + pickup lower_cal.nib; + top y1=h+eps; bot y2=h-x_height-eps; + x1=x2=good.x 0.5w; + x3=good.x (x1-3u*cosd 30); + x1-x3=x1-x6=x5-x1=x4-x1; + y3=good.y (0.5[y1,y2]+3u*sind 30); + y1-y3=y1-y5=y4-y2=y6-y2; + draw z1..z2; draw z3..z4; draw z5..z6; + labels(1,2,3,4,5,6); +endchar; + +cmchar "Virgule (slash)"; +beginchar("/",9u#,body_height#,paren_depth#); + italcorr body_height#*slant-.5u#; + pickup fine_cal.nib; + rt x1=hround(w-u)+eps; top y1=h+eps; + lft x2=hround u-eps; bot y2=-d-eps; + draw z1--z2; % diagonal + labels(1,2); +endchar; + +beginchar("=",14u#,v_center(spread#+rth1#)); + italcorr h#*slant-.5u#; + adjust_fit(0,0); pickup lower_cal.nib; + lft x1=hround u-eps; x3=x1; x2=x4=w-x1; + y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis; + draw z1--z2; % upper bar + draw z3--z4; % lower bar + labels(1,2,3,4); +endchar; + +cmchar "Calligraphic dot"; +beginchar(".", 5u#, dtsz#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + pickup fine_cal.nib; + cal_dot1(0.5w, 0.5dtsz, dtsz); + math_fit(0, 0); + penlabels(1, 1'); +endchar; + +cmchar "Calligraphic comma"; +beginchar(", ", 5u#, dtsz#, comma_depth#); + italcorr 0.5u#; + adjust_fit(0, 0); + cal_comma1(0.5w, 0.5dtsz, 1, -comma_depth); + math_fit(0, 0); +endchar; + +cal_apostrophe=hex"27"; cal_reverse_apostrophe=hex"60"; +cal_opening_quotes=hex"5C"; cal_closing_quotes=hex"22"; + +cmchar "Calligraphic apostrophe"; +beginchar(cal_apostrophe, 5u#, asc_height#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + cal_comma1(0.5w, h-0.5dtsz, 1, h-comma_depth-dtsz); + math_fit(0, 0); +endchar; + +cmchar "Calligraphic reverse apostrophe"; +beginchar(cal_reverse_apostrophe, 5u#, asc_height#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + cal_comma1(0.5w, h-0.5dtsz-comma_depth, + -1, h); + math_fit(0, 0); +endchar; + +cmchar "Calligraphic opening quotes"; +beginchar(cal_opening_quotes, 7u#+max(2u#, dtsz#), + asc_height#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + cal_comma1(w-0.6u-0.5dtsz, + h-0.5dtsz-comma_depth, -1, h); + cal_comma2(w-0.6u-0.5dtsz-1.5u-max(2u, dtsz), + h-0.5dtsz-comma_depth, -1, h); + math_fit(0, 0); +endchar; + +cmchar "Calligraphic closing quotes"; +beginchar(cal_closing_quotes, 7u#+max(2u#, dtsz#), + asc_height#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + cal_comma1(0.6u+0.5dtsz, + h-0.5dtsz, 1, h-dtsz-comma_depth); + cal_comma2(0.6u+0.5dtsz+1.5u+max(2u, dtsz), + h-0.5dtsz, 1, h-dtsz-comma_depth); + math_fit(0, 0); +endchar; + +cmchar "Calligraphic semicolon"; +beginchar(";", 5u#, x_height#, comma_depth#); + italcorr 0.5u#; + adjust_fit(0, 0); + pickup fine_cal.nib; + cal_dot1(0.5w, h-0.5dtsz, dtsz); + cal_comma2(0.5w, 0.5dtsz, 1, -comma_depth); + math_fit(0, 0); +endchar; + +cmchar "Calligraphic colon"; +beginchar(":", 5u#, x_height#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + pickup fine_cal.nib; + cal_dot1(0.5w, 0.5dtsz, dtsz); + cal_dot2(0.5w, h-0.5dtsz, dtsz); + math_fit(0, 0); + penlabels(1, 1', 2, 2'); +endchar; + +cmchar "Calligraphic hyphen"; +beginchar("-", 6u#, x_height#, 0); + italcorr 0.5x_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + y1 = y3 = good.y 0.5h; + lft x1 = hround 0.2u-eps; rt x3 = hround(w-u)+eps; + z2 = 0.5[z1, z3]; + draw z1{w, h}...z2{w, -0.5h}...z3{w, h}; + math_fit(0, 0); + labels(1, 2, 3); +endchar; + +cmchar "Calligraphic en-dash"; +beginchar(oct"173", 9u#, x_height#, 0); + italcorr 0.61803x_height#*slant+0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + y1 = y2 = good.y 0.61803h; lft x1 = -eps; rt x2 = w+eps; + draw z1..z2; math_fit(0, 0); labels(1, 2); +endchar; + +cmchar "Calligraphic em-dash"; +beginchar(oct"174", 18u#, x_height#, 0); + italcorr 0.61803x_height#*slant+0.5u#; + adjust_fit(letter_fit#, letter_fit#); + pickup lower_cal.nib; + y1 = y2 = good.y 0.61803h; lft x1 = -eps; rt x2 = w+eps; + draw z1..z2; math_fit(0, 0); labels(1, 2, 3); +endchar; + +beginchar("(", 6u#, asc_height#, desc_depth#); + italcorr asc_height#*slant; + adjust_fit(0, 0); + pickup med_cal.nib; + top y1 = h; bot y3 = -d; y2 = 0.5(y1+y3); + rt x1 = rt x3 = hround(w-0.5u); lft x2 = hround u; + draw z1{x2-x1, 0.5(y2-y1)}...z2{down}...{x3-x2, 0.5(y3-y2)}z3; + labels(1, 2, 3); + endchar; + + beginchar(")", 6u#, asc_height#, desc_depth#); + italcorr asc_height#*slant; + adjust_fit(0, 0); + pickup med_cal.nib; + top y1 = h; bot y3 = -d; y2 = 0.5(y1+y3); + lft x1 = lft x3 = hround(0.5u); rt x2 = hround(w-u); + draw z1{x2-x1, 0.5(y2-y1)}...z2{down}...{x3-x2, 0.5(y3-y2)}z3; + labels(1, 2, 3); +endchar; + +beginchar("[", 6u#, asc_height#, desc_depth#); + italcorr asc_height#*slant; + adjust_fit(0, 0); + pickup med_cal.nib; + top y1 = top y2 = h; bot y4 = bot y5 = -d; y3 = 0.5[y1, y5]; + rt x1 = rt x5 = hround(w-0.25u); lft x2 = lft x4 = hround 1.25u; + lft x3 = hround 1.5u; + draw z1--z2...z3{down}...z4--z5; + labels(1, 2, 3, 4, 5); +endchar; + +beginchar("]", 6u#, asc_height#, desc_depth#); + italcorr asc_height#*slant; + adjust_fit(0, 0); + pickup med_cal.nib; + top y1 = top y2 = h; bot y4 = bot y5 = -d; y3 = 0.5[y1, y5]; + lft x1 = lft x5 = hround(0.25u); rt x2 = rt x4 = hround(w-1.25u); + rt x3 = hround(w-1.5u); + draw z1--z2...z3{down}...z4--z5; + labels(1, 2, 3, 4, 5); +endchar; + +beginchar("!", 5u#, asc_height#, 0); + "Exclamation point"; + italcorr asc_height#*slant-2u#+0.5curve#; + adjust_fit(0, 0); + pickup med_cal.nib; + x1=x2=good.x 0.5w; + top y2= h+eps; + cal_dot3(0.5w, 0.5dtsz, dtsz); + bot y1=ceiling 0.25[top y3.b, x_height]-eps; + draw z1..z2; labels(1, 2); +endchar; + +beginchar(call_spanish_shriek, 5u#, asc_height#-desc_depth#, desc_depth#); + "Spanish shriek"; + italcorr (charht-0.5dtsz#)*slant-2u#+0.5dtsz#; + adjust_fit(0, 0); + pickup med_cal.nib; + x1=x2=good.x 0.5w; + bot y2=-d-eps; + cal_dot3(0.5w, h-0.5dtsz, dtsz); + top y1=floor 0.25[bot y3.d, h-x_height]+eps; + draw z1..z2; labels(1, 2); +endchar; + +cmchar "Question mark"; +beginchar("?", 9u#, asc_height#, 0); + italcorr 0.8asc_height#*slant-0.5u#; + pickup med_cal.nib; + cal_dot9(0.5w, 0.5dtsz, dtsz); + top y4 = h+oo; bot y7=ceiling 0.25[top y9.b, x_height]-eps; + y2=good.y 0.5[y7, y4]; y3=y5=0.5[y2,y4]; y1= good.y 0.4[y2,y3]; + y6=1/9[y7,y4]; y8 = good.y 0.8[y7, y6]; + x3=good.x 1.5u; x5=good.x(w-1.25u); x4=0.55[x3,x5]; x7=0.5w; + x1=good.x 0.5[x3,x5]; x2=0.25[x3,x5]; x6=good.x 2/3[x3,x4]; + x8=good.x 0.5[x7,x5]; + draw z1...z2 left_to_up z3 ...z4 right_to_down z5...z6 down_to_right z7...z8; + labels(1, 2, 3, 4, 5, 6,7,8); +endchar; + +beginchar(call_spanish_query, 9u#, asc_height#-desc_depth#, desc_depth#); + "Spanish query"; + pickup med_cal.nib; + cal_dot9(0.5w, h-0.5dtsz, dtsz); + bot y4 = -d-oo; top y7=ceiling 0.25[bot y9.d, h-x_height]+eps; + y2=good.y 0.5[y7, y4]; y3=y5=0.5[y2,y4]; y1=good.y 0.4[y2,y3]; + y6=1/9[y7,y4]; y8 = good.y 0.8[y7,y6]; + x3=good.x(w-1.5u); x5=good.x 1.25u; x4=0.55[x3,x5]; x7=0.5w; + x1=good.x 0.5[x3,x5]; x2=0.25[x3,x5]; x6=good.x 2/3[x3,x4]; + x8=good.x 0.5[x7,x5]; + draw z1...z2 right_to_down z3 ...z4 left_to_up z5...z6 up_to_left z7...z8; + labels(1, 2, 3, 4, 5, 6,7,8); +endchar; + +% just look at italic corection and math fitting +cmchar "Calligraphic ampersand"; +beginchar(oct"46", 14u#, asc_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + x_height#*slant+0.5lower_cal_width#-2u#) if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = vround 0.98x_height; + bot y2 = bot y7 = -oo; + top y5 = h+oo; + y3 = 0.5[y2, x_height]; y4 = y6 = 0.6[x_height, y5]; + y8 = good.y 7/8[x_height, y7]; + x1 = x7 = good.x(w-2.5u); + x3 = good.x 1.25u; x6 = good.x 3u; + x8 = good.x w; x2 = 5u; x4-x6=hround 3u; x5=0.6[x6,x4]; + draw z1{down}...z2 left_to_up z3...z4 up_to_left z5 left_to_down z6 + ...z7{right}...z8; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +% +% ACCENTS +% + +cmchar "Calligraphic grave accent"; +beginchar(oct"22", 9u#, min(asc_height#, 2x_height#), 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup pencircle xscaled stem yscaled hair; + top y1 = h+eps; bot y2 = vround 1/3[x_height, h]-eps; + lft x1 = hround 1.75u; rt x2 = hround 2/3[x1, w-x1]; + draw z1{x2-x1, 2(y2-y1)}..z2; + labels(1, 2); +endchar; + +cmchar "Calligraphic acute accent"; +beginchar(oct"23", 9u#, min(asc_height#, 2x_height#), 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup pencircle xscaled stem yscaled hair; + top y1 = h+eps; bot y2 = vround 1/3[x_height, h]-eps; + rt x1 = w-hround 1.75u; lft x2 = hround 2/3[x1, w-x1]; + draw z1{x2-x1, 2(y2-y1)}..z2; + labels(1, 2); +endchar; + +% HUM +cmchar "Calligraphic tilde accent"; +beginchar(oct"176", 9u#, + min(asc_height#, 10/7x_height#+0.5flare#), 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + bot y4 = vround 1/3[x_height, h]-eps; + top y2 = h+eps; y1 = y3 = y5 = good.y 0.5[y2, y4]; + lft x1 = w-rt x5 = hround 1.25u; + x2 = 0.25[x1, x5]; x3 = 0.5[x1, x5]; x4 = 0.75[x1, x5]; + draw z1{(z2-z1) yscaled 2}...z2{right}... + z3{(z4-z3)yscaled 2}...z4{right} ...{(z5-z4) yscaled 2}z5; + labels(1, 2, 3, 4, 5); +endchar; + +cmchar "Calligraphic circumflex accent"; +beginchar(oct"136", 9u#, min(asc_height#, 2x_height#), 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup pencircle xscaled stem yscaled hair; + top y2 = h+eps; bot y1 = bot y3 = vround 1/3[x_height, h]-eps; + lft x1 = w-rt x3 = hround 1.75u; x2 = good.x 0.5[x1, x3]; + draw z1..{x2-x1, 2(y2-y1)}z2 + &z2{x3-x2, 2(y3-y2)}..z3; + labels(1, 2, 3); +endchar; + +cmchar "Calligraphic hacheck accent"; +beginchar(oct"24", 9u#, min(asc_height#, 2x_height#), 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup pencircle xscaled stem yscaled hair; + top y1 = top y3 = h+eps; bot y2 = vround 1/3[x_height, h]-eps; + lft x1 = w-rt x3 = hround 1.75u; x2 = good.x 0.5[x1, x3]; + draw z1..{x2-x1, 2(y2-y1)}z2 + &z2{x3-x2, 2(y3-y2)}..z3; + labels(1, 2, 3); +endchar; + +cmchar "Calligraphic breve accent"; +beginchar(oct"25", 9u#, min(asc_height#, 2x_height#), 0); + "Breve accent"; + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); +% pickup pencircle xscaled stem yscaled hair; + pickup lower_cal.nib; + top y1 = top y3=h+eps; bot y2=vround 1/3[x_height, h]-eps; + lft x1 = w-rt x3=hround 1.5u; x2=0.5[x1, x3]; + draw z1 down_to_right z2 right_to_up z3; labels(1, 2, 3); +endchar; + +cmchar "Calligraphic macron accent"; +beginchar(oct"26", 9u#, 0.4[x_height#, asc_height#]+0.5hair#, 0); + italcorr charht*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; top y1 = top y2 = h; + lft x1 = w-rt x2 = hround 1.25u; + draw z1..z2; labels(1, 2); +endchar; + +cmchar "Calligraphic circ accent"; +beginchar(oct"27", 14.4u# + +4/3(asc_height#-x_height#)*slant+1.5u#, + asc_height#, 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup fine_cal.nib; + numeric a, b; b = vround(1/3[x_height, h]); + a = round max(3.6u, h+o-b); + top y2 = b+a+eps; bot y4 = b-eps; + y0 = y1 = y3 = 0.5[y4, y2]; x0 = x2 = x4 = 0.5w; + lft x3 = hround(x0-0.5a)-eps; x1-x0 = x0-x3; + draw superellipse(z1, z2, z3, z4, superness); + labels(1, 2, 3, 4, 0); +endchar; + +cmchar "Calligraphic cedilla accent"; +beginchar(oct"30", 9u#, 0, desc_depth#); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + bot y1 = -oo; top y2 = -vround max(o, -d/6); + bot y4 = -d; y3 = 0.5[y2, y4]; y5 = good.y 0.4[y4, y3]; + x1 = x2 = x4 = good.x 0.5w; + lft x5 = w-rt x3 = hround 1.5u-eps; + draw z1--z2 right_to_down z3 down_to_left + z4 ... z5; + labels(1, 2, 3, 4, 5); +endchar; + +cmchar "Calligraphic dot accent"; +beginchar(oct"137", 9u#, + min(asc_height#, 10/7x_height#+0.5flare#), 0); + adjust_fit(0, 0); + pickup fine_cal.nib; + cal_dot1(0.5w, h-0.5flare, flare); + math_fit(0, 0); + penlabels(1, 1'); +endchar; + +cmchar "Calligraphic umlaut accent"; +beginchar(oct"177", 9u#, + min(asc_height#, 10/7x_height#+0.5flare#), 0); + adjust_fit(0, 0); + pickup fine_cal.nib; + cal_dot1(2.75u, h-0.5flare, flare); + cal_dot2(w-2.75u, h-0.5flare, flare); + math_fit(0, 0); + penlabels(1, 1', 2, 2'); +endchar; + +cmchar "Calligraphic long umlaut accent"; +beginchar(oct"175", 9u#, min(asc_height#, 2x_height#), 0); + adjust_fit(0, 0); + pickup pencircle xscaled stem yscaled hair; + top y1 = top y3 = h+eps; + bot y2 = bot y4 = vround 1/3[x_height, h]-eps; + lft x4 = hround 2.25u; rt x1 = w-hround 1.5u; + x1-x3 = x2-x4 = hround 3u; + draw z1{x2-x1, 2(y2-y1)}..z2; + draw z3{x4-x3, 2(y4-y3)}..z4; + labels(1, 2, 3, 4); +endchar; + +beginchar("@", 15u#, asc_height#, 0); + "The at sign"; + italcorr 0.7asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y1 = 0.75h+eps; bot y3 = vround 0.25h-eps; y4 = 0.333[y3, y5]; + top y5 = h+o; y6 = 0.5[y5, y7]; bot y7 = -o; y8 = good.y 0.15h; + y2 = 0.2[y3, y1]; + rt x4 = rt x8 = w-hround u+eps; lft x6 = hround u-eps; + x5 = x7 = 0.5[x4, x6]; + x1 = x2 = good.x(0.7[x6, x4]); x3 = 0.333[x2, x4]; + draw z1..z2 down_to_right z3 right_to_up z4 up_to_left z5 + left_to_down z6 down_to_right z7...z8; + % + y9b = good.y(0.73[y7, y5]); y9d = good.y(0.27[y7, y5]); + 0.5[y9b, y9d] = y9a = y9c; + y9a-y9e = 0.4*(y9b-y9e); + x9a = x1; x9c = good.x 0.71[x4, x6]; + x9b = x9d = 0.5[x9a, x9c]; + draw z9a up_to_left z9b...z9c down_to_right + z9d right_to_up z9a; + labels(1, 2, 3, 4, 5, 6, 7, 8, 9a, 9b, 9c, 9d); + math_fit(0, 0); +endchar; + +skewchar=oct"060"; skew#=.5u#; + +ligtable cal_reverse_apostrophe: cal_reverse_apostrophe=: cal_opening_quotes; +ligtable cal_apostrophe: cal_apostrophe=: cal_closing_quotes; +ligtable "!": cal_reverse_apostrophe =: call_spanish_shriek; +ligtable "?": cal_reverse_apostrophe =: call_spanish_query; +ligtable "<": "<" =: call_laquo; +ligtable ">": ">" =: call_raquo; + +ligtable "-" : "-" =: oct"173"; +ligtable oct"173" : "-" =: oct"174"; + +ligtable "I": "T": "V": skewchar kern skew#; +ligtable "D": "R": "U": "W": "Y": skewchar kern 3skew#; +ligtable "E": "G": "O": "Q": skewchar kern 4skew#; +ligtable "B": "C": "L": "S": "X": "Z": skewchar kern 5skew#; +ligtable "J": skewchar kern 6skew#; +ligtable "A": skewchar kern 7skew#; + +ligtable "F": skewchar kern 4skew#, +"a" kern -2u#, "e" kern -2u#, "o" kern -2u#, "r" kern -u#; + +ligtable "H": skewchar kern 4skew#, +"a" kern -u#, "e" kern -u#, "o" kern -u#; + +ligtable "K": skewchar kern 2skew#, +"a" kern -u#, "e" kern -u#, "o" kern -u#; + +ligtable "M": skewchar kern 5skew#, +"a" kern -u#, "e" kern -u#, "o" kern -u#, "r" kern -u#; + +ligtable "N": skewchar kern 3skew#, +"a" kern -u#, "e" kern -u#, "o" kern -u#; + +ligtable "P": skewchar kern 3skew#, +"a" kern -u#, "e" kern -u#, "o" kern -u#; + +ligtable "f": "a" kern -0.5u#, "e" kern -0.5u#, "o" kern -0.5u#; +ligtable "h": "m": "n": "t": "x": +"a" kern -0.25u#, "e" kern -0.25u#, "o" kern -0.25u#, +"d" kern -0.25u#, "g" kern -0.25u#, "q" kern -0.25u#; +ligtable "o": "x" kern -0.25u#; + +endinput. diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathcallgreek.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathcallgreek.mf new file mode 100644 index 00000000000..3fa14501e45 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathcallgreek.mf @@ -0,0 +1,1105 @@ +% mathematical symbols by Anthony Phan. +% file: mathcallgreek.mf (calligraphic font) +% last modification: May 16, 2005. + +% +% UPPERCASE +% + +let math_fit = do_math_fit; +math_fitting := true; + +cmchar "Calligraphic Alpha"; +beginchar(hex"81",14.4u#,cap_height#,0); + italcorr .5u#; + adjust_fit(-.05w#,0); pickup cal.nib; + lft x5=.54w; x7=.9w; + top y5=h+.4cap_curve; bot y7=bot_flourish_line; + z6=.3[z7,z5]-bend; + pickup tilted.nib; + lft x1=.05w; x2=.2w; rt x4=x5; + y1=y2+.1h; bot y2=bot_flourish_line; top y4=h+.4cap_curve; + y3=y6; z3=whatever[z2,z4]+2bend; + draw\\(z1..tension 1.2..{right}z2) softjoin flex(z2,z3,z4); % left diagonal + pickup cal.nib; + erase fill\\(0,bot y5)--(w,bot y5)--(w,top y5)--(0,top y5)--cycle; + draw flex(z5,z6,z7) softjoin (z7--z7+cal.extension); % right diagonal + draw rt z3--z6; % bar + math_fit(.5u#-.1cap_height#*slant,ic#); labels(1,2,3,4,5,6,7); +endchar; + +cmchar "Calligraphic Beta"; +beginchar(hex"82",9.9u#,cap_height#,0); + italcorr max(.8h#*slant-.1w#,.3h#*slant)+.5u#; + adjust_fit(0,0); pickup cal.nib; + lft x1=lft x3=0; x4=.6[x2,x5]; rt x5=.9w; x6=.4w; rt x7=w; + x8=.4[x9,x7]; lft x9=rt x3; + top y1=h+o; bot y3=-o; z2=.3[z3,z1]+bend; + y4=y1; y5=.6[y6,y4]; y6=.55h; y7=.45[y8,y6]; bot y8=-o; y9=.1h; + draw z1-cal.extension--flex(z1,z2,z3); % stem + draw z2{up}...z4...z5{down}...{dir 200}z6{dir 10} + ...z7{down}...z8{left}...z9; % lobes + math_fit(.5u#,.3h#*slant+.5u#); labels(1,2,3,4,5,6,7,8,9); +endchar; + +cmchar "Calligraphic Gamma"; +beginchar(hex"83",13.5u#,cap_height#,0); + italcorr h#*slant+.5u#; + adjust_fit(-.1w#,-u#); pickup cal.nib; + x1=.5w; x3=.4w; lft x4=.1w; x5=x2+.35w; x6=.7[x1,x7]; rt x7=w; + top y1=top y6=h; z2=.5[z3,z1]+1.2bend; + bot y3=-o; y4=.1h; y5=y2; y7=.9h; + draw flex(z1,z2,z3) softjoin (z3...{x4-x3,5(y4-y3)}z4); % stem + draw z1-flourish_change{up}...(z1-(u,0))---z6...{down}z7; % upper bar + math_fit(0,.5ic#); labels(1,2,3,4,5,6,7); +endchar; + +cmchar "Calligraphic Epsilon"; +beginchar(hex"85",8.5u#,cap_height#,0); + italcorr max(h#*slant-.1w#,.2h#*slant)+.5u#; + adjust_fit(0,0); pickup cal.nib; + x1=.9[x3,x2]; rt x2=.9w; x3=.6[x4,x2]; lft x4=.05w; + x5=.7[x6,x2]; lft x6=0; x7=.5[x6,x8]; rt x8=w; + y1=y2-.1h; y2=.9h+o; top y3=h+o; y4=.5[y5,y3]; + y5=.55h; y6=.6[y5,y7]; bot y7=-o; y8=.2h; + draw\\(z1{2(x2-x1),y2-y1}...z2) + softjoin (z2...z3{left}...z4{down}...{right}z5); % upper arc + draw z5{left}...z6{down}...z7{right}...z8; % lower arc + math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#); + labels(1,2,3,4,5,6,7,8); +endchar; + +cmchar "Calligraphic Zeta"; +beginchar(hex"86",10.4u#,cap_height#,0); + italcorr h#*slant+.5u#; + adjust_fit(0,0); pickup heavy_cal.nib; + lft x1=.05w; x2=.4w; rt x3=w; lft x7=0; x8=.8[x7,x9]; rt x9=1.1w; + top y1=58/70h; top y2=top y3=h; bot y7=bot y8=0; bot y9=15/70h; + z5=.55[z7,z3]+bend; + x10=x5-2.5u; x11=x5+2u; x12=.2[x3,x2]; x13=.2[x7,x8]; + y10=y5; bot y11=y10-6/70h; y12=64/70h; y13=6/70h; + draw z1{up}...z2{right}...{right}z12...z3; % upper arm + draw flex(z3,z5,z7); % diagonal + draw z7...z13{right}...{right}z8...{up}z9; % lower arm + pickup light_cal.nib; + draw z10...z5{right}...{down}z11; % bar + math_fit(.5u#,.6ic#); labels(1,2,3,5,7,8,9,10,11,12,13); +endchar; + + +cmchar "Calligraphic Eta"; +beginchar(hex"87",12.2u#,cap_height#,0); + italcorr max(h#*slant-.2w#,.15h#*slant)+.5u#; + adjust_fit(4u#,0); pickup cal.nib; + lft x1=lft x3=.5u; rt x4=rt x6=.8w-.6u; rt x9=w; + top y1=top y4=h; bot y3=-.06h; bot y6=bot_flourish_line; y9=y6+.1h; + z2=.6[z3,z1]+bend; z5=.4[z6,z4]-bend; + path p[]; p1=flex(z1,z2,z3); p2=flex(z4,z5,z6); + p3=(-w,.45h)--(2w,.45h); + rt z7+2bend=p3 intersectionpoint p1; rt z8=p3 intersectionpoint p2; + draw (z1-flourish_change-bend{curl2}....z1-(u,0)---z1) softjoin p1; % left stem + draw p2 softjoin (z6{right}...{up}z9); % right stem + draw z7--z8; % bar + math_fit(.5u#-.8h#*slant,.15h#*slant+.5u#); + labels(1,2,3,4,5,6,7,8,9); +endchar; + +cmchar "Calligraphic Theta"; +beginchar(hex"88",12.6u#,cap_height#,0); + italcorr .7h#*slant+.5u#; + adjust_fit(0,0); pickup cal.nib; + x1=.3w; lft x2=0; x3=.5w; rt x4=w; x5=.6w; lft x6=.27w; + top y1=top y5=h+o; y2=.55h; bot y3=-o; y4=.5h; y6=y2; + y9 = good.y 0.65h; y7 = y10 = good.y 0.35h; y8 = good.y 0.5h; + x7 = x6; x8 = 0.5w; x9 = x10 = w-x6; + draw z1...z2{down}...z3{right}...z4{up}...z5{left}...{down}z6 + --z7{up}...z8{right}...z9{up}--z10; + math_fit(.5u#-.3h#*slant,ic#-.5u#); + labels(1,2,3,4,5,6,7,8,9,10); +endchar; + +cmchar "Calligraphic Iota"; +beginchar(hex"89",10.8u#,cap_height#,0); + italcorr max(h#*slant+.5cap_curve#-.2w#,.15h#*slant)+.5u#; + adjust_fit(0,0); pickup cal.nib; + lft x0=0; x1=.9w; x2=x4=.5w; x5=.2w; x6=.8w; rt x7=1.05w; + y0=.8h; top y1=top y2=h; z3=.5[z4,z2]+bend; + bot y4=bot y5=bot y6=0; y7=.15h; + draw z0{up}...z2---z1; % upper bar + z8=.5[z2,z1]; + draw z8{left}...z3{down}...{left}.5[z4,z5]; % stem + draw z5---z6...{up}z7; % lower bar + math_fit(.5u#-.8h#*slant,.15h#*slant+.5u#); + labels(0,1,2,3,4,5,6,7); +endchar; + +cmchar "Calligraphic K"; +beginchar(hex"8A",11u#,cap_height#,0); + italcorr max(h#*slant-.2w#,.2h#*slant)+.5u#; + adjust_fit(0,.1w#); pickup cal.nib; + lft x1=lft x3=0; top y1=h+o; bot y3=-o; z2=.6[z3,z1]+bend; + draw z1-cal.extension--flex(z1,z2,z3); % stem + pickup light_cal.nib; + rt x4=.9w; x5=x4-.1w; x7=.8w; rt x8=1.1w; + y4=.9h; top y5=h+o; bot y7=-o; y8=.2h-o; + (lft z6)t_=z2.t_+penoffset up of pen_[cal.nib]; + draw z4{up}...{left}z5..tension atleast 2..{down}z6 + ..tension atleast 3 and atleast 2..z7{right}...{up}z8; % diagonals + math_fit(.5u#,.2h#*slant+.5u#); labels(1,2,3,4,5,6,7,8); +endchar; + +cmchar "Calligraphic Lambda"; +beginchar(hex"8B",14.4u#,cap_height#,0); + italcorr .5u#; + adjust_fit(-.05w#,0); pickup cal.nib; + lft x5=.54w; x7=.9w; + top y5=h+.4cap_curve; bot y7=bot_flourish_line; + z6=.3[z7,z5]-bend; + pickup tilted.nib; + lft x1=.05w; x2=.2w; rt x4=x5; + y1=y2+.1h; bot y2=bot_flourish_line; top y4=h+.4cap_curve; + y3=y6; z3=whatever[z2,z4]+2bend; + draw\\(z1..tension 1.2..{right}z2) softjoin flex(z2,z3,z4); % left diagonal + pickup cal.nib; + erase fill\\(0,bot y5)--(w,bot y5)--(w,top y5)--(0,top y5)--cycle; + draw flex(z5,z6,z7) softjoin (z7--z7+cal.extension); % right diagonal + math_fit(.5u#-.1cap_height#*slant,ic#); labels(1,2,3,4,5,6,7); +endchar; + +cmchar "Calligraphic Mu"; +beginchar(hex"8C",19.8u#,cap_height#,0); + italcorr max(h#*slant-u#,.75cap_curve#)+.5cap_curve#+.5u#; + adjust_fit(-.1w#,0); pickup med_cal.nib; + (z20)t_=(z5)t_+penoffset down of currentpen + =(z4)t_+penoffset down of pen_[tilted.nib]; + z6=.3[z7,z5]-bend; z9=.3[z8,z10]+.5bend; z12=.3[z13,z11]-bend; + x7=.5[x2,x13]; bot y7=.05h; top y5=h+o; + (z0)t_=(z7)t_+penoffset right of currentpen + =(z8)t_+penoffset right of pen_[tilted.nib]; + pickup cal.nib; + (z30)t_=(z11)t_+penoffset up of currentpen + =(z10)t_+penoffset up of pen_[tilted.nib]; + x13=w; bot y13=bot_flourish_line; + pickup tilted.nib; + lft x1=.1w; x2=.2w; x4=.2[x2,x7]; x10=.8[x7,x13]; + y1=.05h+y2; bot y2=bot_flourish_line; top y10=h+o; + z3=whatever[z2,z4]+2bend; y3=y6; + draw\\(z1..tension1.2..{right}z2) softjoin flex(z2,z3,z4); % left stem + erase fill z20--(.5w,y20)--(.5w,top y4)--(x20-4u,top y4)--cycle; + pickup med_cal.nib; + draw flex(z5,z6,z7); % left diagonal + pickup cal.nib; + draw flex(z11,z12,z13) softjoin (z13--z13+cal.extension); % right stem + pickup tilted.nib; + path p; p=flex(z8,z9,z10); + erase fill z0--(x0,y0-.5h)--(x9,y0-.5h)--subpath(1,0) of p--cycle; + erase fill z30--(x30,y30+.5h)--(x9,y30+.5h)--subpath(1,2) of p--cycle; + draw p; % right diagonal + math_fit(.5u#-.05h#*slant,ic#); + labels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,20,30); +endchar; + +cmchar "Calligraphic Nu"; +beginchar(hex"8D",9u#,cap_height#,0); + italcorr h#*slant+.5u#; + adjust_fit(2u#,2.5u#); pickup med_cal.nib; + (z0)t_=(z5)t_+penoffset down of currentpen + =(z4)t_+penoffset down of pen_[tilted.nib]; + (z20)t_=(z7)t_+penoffset up of currentpen + =(z8)t_+penoffset up of pen_[tilted.nib]; + z6=.3[z7,z5]-bend; rt z7=(w,0); top y5=h+o; + pickup tilted.nib; + lft x1=x2-2u; x2=-u; x4=0; x10=w; rt x11=w+3u; + y1=y2+.05h; bot y2=bot_flourish_line; + y3=y6; z3=whatever[z2,z4]+2bend; + y10=h; z9=.7[z8,z10]-.5bend; bot y11=h; + draw\\(z1..tension1.2..{right}z2) softjoin flex(z2,z3,z4); % left stem + draw flex(z8,z9,z10)...{right}z11; % right stem + pickup med_cal.nib; + erase fill z0--(.5w,y0)--(.5w,1.5h)--(x0-4u,1.5h)--cycle; + erase fill z20--(.5w,y20)--(.5w,-.5h)--(x20+4u,-.5h)--cycle; + draw flex(z5,z6,z7); % diagonal + math_fit(.5u#-.05h#*slant,.3h#*slant); + labels(0,1,2,3,4,5,6,7,8,9,10,11,20); +endchar; + +cmchar "Calligraphic Omicron"; +beginchar(hex"8F",12.6u#,cap_height#,0); + italcorr .7h#*slant+.5u#; + adjust_fit(0,0); pickup cal.nib; + x1=.3w; lft x2=0; x3=.5w; rt x4=w; x5=.6w; lft x6=.27w; + top y1=top y5=h+o; y2=.55h; bot y3=-o; y4=.5h; y6=y2; + path p; p=z1...z2{down}...z3{right}...z4{up}...z5{left}...{down}z6; + draw subpath(0,4.8) of p; % bowl + math_fit(.5u#-.3h#*slant,ic#-.5u#); + labels(1,2,3,4,5,6); +endchar; + +% +% a revoir +% + +cmchar "Calligraphic Pi"; +beginchar(hex"90",13u#,cap_height#,0); + italcorr h#*slant+.5u#; + adjust_fit(0,-.5u#); + pickup heavy_cal.nib; + x1=x3-0.03w; x3=.3w; + lft x4=0; x5=.25w; x6=.85w; rt x7=1.05w; + top y1=h; y4=3/4h; top y5=top y6=h; top y7=1.05h; + draw z4{curl 2}...z5{right}...z6{right}...{up}z7; % arms + pickup tilted.nib; + bot y3=-.1h; + z2=.3[z3,z1]+bend; + top y0=y1; x0=x2; + draw z0---z2...z3; % left stem + pickup cal.nib; + x8 = 0.75w; x10 = 0.9w; + top y8=y1; bot y10=bot_flourish_line; + z9=.3[z10,z8]-bend; + draw flex(z8,z9,z10) softjoin (z10--z10+cal.extension); % right stem + math_fit(.5u#-5/7h#*slant,-u#); labels(1,2,3,4,5,6,7); +endchar; + +cmchar "Calligraphic Rho"; +beginchar(hex"91",9u#,cap_height#,0); + italcorr .8h#*slant+.5u#; + adjust_fit(4u#,0); pickup cal.nib; + lft x1=lft x3=0; x4=x6=.3[x1,x5]; rt x5=w; + top y1=top y4=h; y3=-o; y5=.55[y6,y4]; bot y6=.3h; + z2=.5[z3,z1]+bend; + draw flex(z1,z2,z3); % stem + draw z1{left}...{down}z1-flourish_change; % swash + draw z1---z4...z5{down}...{left}z6; % lobe + math_fit(.5u#-.8h#*slant,.5ic#); labels(1,2,3,4,5,6); +endchar; + +cmchar "Calligraphic Tau"; +beginchar(hex"93",13u#,cap_height#,0); + italcorr h#*slant+.5u#; + adjust_fit(0,-.5u#); pickup heavy_cal.nib; + x1=.47w; x3=.5w; lft x4=0; x5=.25w; x6=.85w; rt x7=1.05w; + top y1=h; bot y3=-.1h; y4=3/4h; top y5=top y6=h; top y7=1.05h; + z2=.3[z3,z1]+bend; + top y0=y1; x0=x2; + z8=(2u,.2h); + draw z0---z2...z3; % stem + draw z4{curl 2}...z5{right}...z6{right}...{up}z7; % arms + math_fit(.5u#-5/7h#*slant,-u#); labels(1,2,3,4,5,6,7); +endchar; + +cmchar "Calligraphic Chi"; +beginchar(hex"96",11.4u#,cap_height#,0); + italcorr h#*slant+.5u#; + adjust_fit(0,0); pickup cal.nib; + lft x1=.08w; lft x2=.2w; x4-x3=x2-x1; rt x4=w; + h-y1=y4=1/9h; top y2=h; bot y3=0; + draw z1{up}....z2{right} + ... .2[z2+(.1w,0),z3-(.1w,0)]---.8[z2+(.1w,0),z3-(.1w,0)] + ...{right}z3....{up}z4; % left diagonal + x5=x6-u; rt x6=w; lft x7=0; x8=x7+u; + top y5=h; y6=.85h; y7=h-y6; bot y8=0; + draw z5{right}...z6{down} + ..tension atleast 3..{down}z7...{right}z8; % right diagonal + math_fit(.5u#,1/7h#*slant+.5u#); labels(1,2,3,4,5,6,7,8); +endchar; + +% +% LOWERCASE +% + +let math_fit = ignore_math_fit; +math_fitting := false; + +% just look at italic corection and math fitting +cmchar "Calligraphic alpha"; +beginchar(hex"A1", 11u#, x_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + x_height#*slant+0.5lower_cal_width#-2u#) if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = vround 0.98h; + bot y2 = bot y5 = -oo; + top y4 = x_height+oo; + y3 = 0.5[y2, y4]; + y6 = good.y 7/8[x_height, y5]; + x1 = x5 = good.x(w-2.5u); + x3 = good.x 1.25u; + x6 = w; x2 = x4 = 0.5[x3, 6.5u]; + draw z1{down}...z2 left_to_up z3 up_to_right z4...z5{right}...z6; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6); +endchar; + +% just look at italic corection and math fitting +cmchar "Calligraphic beta"; +beginchar(hex"A2", 8u#, asc_height#, desc_depth#); + italcorr max(.8h#*slant-.1w#, .5x_height#*slant)+.5u#; + adjust_fit(0, 0); + % see es-zet + pickup lower_cal.nib; + x2-x1=hround 0.5u; x2 = good.x 1.5u; x4 = .6[x2, x5]; + x5 = good.x(0.9w-1.25u); lft x6 = x2; x7 = good.x(w-1.25u); + x8 = .4[x9, x7]; lft x9 = rt x2; + bot y1 = -d-eps; y2 = 0.5x_height; + top y4 = h+oo; y5 = .6[y6, y4]; y6 = .55h; y7 = .45[y8, y6]; + bot y8 = -oo; y9 = .1h; +% draw z1-cal.extension--flex(z1, z2, z3); % stem + draw z1...z2{up}...z4...z5{down}...{dir 200}z6{dir 10} + ...z7{down}...z8{left}...z9; % lobes + % + math_fit(.5u#, .3h#*slant+.5u#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); +endchar; + +% just look at math fitting +cmchar "Calligraphic gamma"; +beginchar(hex"A3", 10u#, x_height#, desc_depth#); + italcorr h#*slant; + adjust_fit(0, 0); + pickup lower_cal.nib; + x1 = good.x 0; x3 = good.x(w-3.4u); + x2 = max(1.25u, 0.5[x1, x3]);%0.5[x1, x3]; + x5 = good.x 3.8u; + x4=2/3[x3, x5]; + rt x6 = hround(w-0.5u); + top y2 = x_height+oo; y1 = good.y 7/8[0, y2]; bot y4 = -d-eps; + y3 = y5 = 0.825[y2, y4]; top y6=vround 0.98 h; + draw z1...z2{right}... z3 down_to_left z4 left_to_up z5...z6{up}; + math_fit(.5u#, .3h#*slant+.5u#); + labels(1, 2, 3, 4, 5, 6); +endchar; + +cmchar "Calligraphic epsilon"; +beginchar(hex"A5", 8u#,x_height#,0); + italcorr max(h#*slant-.1w#,.2h#*slant)+.5u#; + adjust_fit(0,0); pickup lower_cal.nib; + rt x2 = hround(w-1.1u); x3=.6[x4,x2]; x4=good.x(1.5u); + x5=.7[x6,x2]; x6= good.x 1.25u; x7=.5[x6,x8]; x8 = good.x w; + x1=good.x 0.6[x5, x2]; + %y1=y2-.1h; + y2=.9h+oo; top y3=h+oo; y4=.5[y5,y3]; + y5=good.y .55h; y6=.5[y5,y7]; bot y7=-oo; y8=good.y 1/4x_height; + y1 = good.y 0.6[y5, y3]; + draw\\(z1{2(x2-x1),y2-y1}...z2) + softjoin (z2...z3{left}...z4 down_to_right z5); % upper arc + draw z5{left}...z6 down_to_right z7...z8; % lower arc + math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#); + labels(1,2,3,4,5,6,7,8); +endchar; + +cmchar "The letter eta"; +beginchar(hex"A7", 9u#, x_height#, desc_depth#); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + 0.75x_height#*slant+0.5lower_cal_width#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x 2.5u; bot y4 = -oo; + x6 = x7 = good.x(w-1.5u); bot y7 = -d-eps; + draw hook_in(1, 2, 3)---z4; + draw ital_arch(4, 5, 6)...z7{down}; + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "The letter theta"; +beginchar(hex"A8", 8u#, asc_height#, 0); + italcorr .7asc_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0);%(-0.25u#, -0.25u#); + % + pickup lower_cal.nib; + top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4]; + z5 = z1; x6 = good.x 0.2[x2, x4]; x7 = 0.7[x2, x4]; + y6 = 0.8[y3, y5]; y7 = good.y 0.43[y3, y5]; + save p; path p; p = z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z5 left_to_down z6...z7{right}...z4; + draw subpath (1.75, 12) of p; + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "The letter theta (variant)"; +beginchar(hex"BA", 9.5u#, asc_height#, 0); + italcorr .7asc_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0);%(-0.25u#, -0.25u#); + % + pickup lower_cal.nib; + bot y5 = -oo; top y7 = h+oo; y6 = 0.5[y5, y7]; + y4 = 0.7[y5, 0.57x_height]; + y8 = 0.8[y5, y7]; y9 = good.y 0.43[y5, y7]; + top y10 = x_height+oo; y10 := good.y 7/8[0, y10]; + x1 = 0; x3 = good.x 2.5u; + x6 = good.x(w-1.75u); + x5 = x7 = 0.5[x3, x6]; + x8 = good.x 0.2[x3, x6]; x9 = 0.75[x3, x6]; x10 = good.x w; + draw hook_in(1,2,3)... + z5{right} ... z6 up_to_left z7 left_to_down z8...z9{right}...z10; + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1,2,3,4,5,6,7,8,9,10); +endchar; + +cmchar "The letter kappa"; +beginchar(hex"A9", 9u#, x_height#, 0); + italcorr max(0.2x_height#*slant+0.1w#, + 0.95x_height#*slant-0.1w#+0.5u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; bot y2 = -oo; x1 = x2 = good.x 1.5u; + draw z1-cal.extension--z1--z2; + % + rt x4 = .9w; x5 = x4-.1w; x7 = .8w; rt x8 = 1.1w; + y4 = .9x_height; top y5 = x_height+oo; bot y7 = -oo; y8 = .2x_height-oo; + (lft z6)t_ = (x2, 0.4x_height).t_+penoffset up of pen_[lower_cal.nib]; + draw z4{up}...{left}z5..tension atleast 2..{down}z6 + ..tension atleast 3 and atleast 2..z7{right}...{up}z8; % diagonals + % + math_fit(0, 1/3x_height#*slant+0.5hair#+0.5u#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic mu"; +beginchar(hex"AB", 9u#, x_height#, desc_depth#); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + x_height#*slant+0.5lower_cal_width#-2u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = x2 = x3 = good.x 1.5u; + x4 = 0.5[x2, x5]; x5 = x6 = x7 = good.x(w-2.5u); x9 = w; + bot y1 = -d-eps; top y2 = h; + y3 = 0.7[y4, y5]; bot y4 = -oo; y5 = 0.57h; top y6 = h; + draw z1..z2; + draw z3 down_to_right z4...z5{up}; + draw z6..hook_out(7, 8, 9); + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 6, 7, 8, 9); +endchar; + +%cmchar "Calligraphic nu"; +% beginchar(hex"AC", 9u#, x_height#, 0); +% italcorr .7x_height#*slant+0.5lower_cal_width#-u# +% if math_fitting: -0.5u# fi; % same as "o" +% adjust_fit(0, 0); +% % +% pickup lower_cal.nib; +% x1 = good.x 0; x2 = 0.5[x1,x3]; x3 = x4-.25(y3-y4); +% x4 = good.x 0.5w; x5 = good.x(w-1.25u); x6 = good.x(w-2u); +% top y2 = x_height+oo; y1 = good.y 7/8[0, y2]; +% y3 = .57x_height;%3/4x_height; +% bot y4 = -oo; y5 = 0.57h; top y6 = h+oo; +% draw z1...z2{right}...z3---z4; +% draw z4{(x5-x4), 1/3(y5-y4)}...z5{up}...z6; +% % +% math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); +% labels(1, 2, 3, 4, 5, 6); +% endchar; + +cmchar "Calligraphic nu"; +beginchar(hex"AC", 8u#, x_height#, 0); + italcorr 0.8x_height#*slant; + adjust_fit(0, 0.5u#); + % + pickup lower_cal.nib; + x1 = 0; top y1 = h; z3 = (.48w, 0); + z0.t_ = z2.t_+penoffset down of currentpen + = z3.t_+penoffset down of pen_[tilted.nib]; + draw z1{right}..tension atleast 1 and infinity..z2; % left diagonal + pickup tilted.nib; + rt x4 = w; x5 = x4-.2w; top y4 = .8h; top y5 = h; + path p; p = z3..tension atleast 3 and 1..{up}z4; + erase fill z0--(x0, y0-0.5h)--(x4, y0-0.5h)--(x4+eps, y4)--reverse p--cycle; + draw p...{left}z5; % right diagonal + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, 2/3ic#); + labels(0, 1, 2, 3, 4, 5); +endchar; + +cmchar "The letter omicron"; +beginchar(hex"AF", 9u#, x_height#, 0); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0);%(-0.25u#, -0.25u#); + % + pickup lower_cal.nib; + top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z1; + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4); +endchar; + +cmchar "Calligraphic pi"; +beginchar(hex"B0", 9u#, x_height#, 0); + italcorr x_height#*slant+0.5u# if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y2 =top y4= h; y2-y1 = vround 0.2h; top y3 = 0.98h; + x1 = good.x u; x2 = 3.5u; x3=good.x(w-2.5u); rt x4=w; + draw z1...z2{right}...z3{right}...z4; + top y9 = vround 0.98h; x9 = x10 = good.x(w-2.5u); x12 = w; + draw z9..hook_out(10, 11, 12); + bot y6=-oo; x5=0; x6=0.5[x5,x2]; y5-y6=vround 0.1h; + z7=0.3[z6,z2]; + draw z5...z6{right}...z2{up}; + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8,9,10,11,12); +endchar; + +cmchar "The letter rho"; +beginchar(hex"B1", 8u#, x_height#, desc_depth#); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0);%(-0.25u#, -0.25u#); + % like letter "b" + pickup lower_cal.nib; + bot y1 = -d-eps; y2 = 0.5x_height; bot y5 = -oo; + y4 = 0.5x_height; top y3 = x_height+oo; + x1 = x2 = good.x 1.5u; x3 = 0.5[x2, x4]; + x4 = good.x(w-1.25u); x5 = 0.5[x2, x4]; + draw z1..z2{up} + ...z3{right}...z4{down}...z5{left}...z2{up}; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(0, 1, 2, 3, 4, 5); +endchar; + +cmchar "The letter rho (variant)"; +beginchar(hex"BD", 8u#, x_height#, desc_depth#); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0);%(-0.25u#, -0.25u#); + % like letter "b" + pickup lower_cal.nib; + bot y1 = -d-eps; y2 = 0.5x_height; bot y5 = -oo; + y4 = 0.5x_height; top y3 = x_height+oo; + rt x1 = w; x2 = good.x 1.5u; x3 = 0.5[x2, x4]; + x4 = good.x(w-1.25u); x5 = 0.5[x2, x4]; + draw z1...(x5, good.y 0.25[y1, y5]){left}...z2{up} + ...z3{right}...z4{down}...z5{left}...z2{up}; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(0, 1, 2, 3, 4, 5); +endchar; + +cmchar "Calligraphic upsilon"; +beginchar(hex"B4", 9u#, x_height#, 0); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; % same as "o" + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u); + x5 = 0.5[x4, x6]; x6 = good.x(w-1.25u); x7 = good.x(w-2u); + y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57h; top y7 = h+oo; + draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up}...z7; + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "The letter phi"; +beginchar(hex"B5", 11u#, asc_height#, asc_depth#); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; % same as "o" + adjust_fit(0, 0);%(-0.25u#, -0.25u#); + % + pickup lower_cal.nib; + top y1 = x_height+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z1; + pickup fine_cal.nib; + x5= x6 =good.x 0.5w; top y5 =h+eps; bot y6=-d-eps; + draw z5..z6; + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6); +endchar; + +cmchar "The letter phi (variant)"; +beginchar(hex"BF", 11u#, x_height#, desc_depth#); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0);%(-0.25u#, -0.25u#); + % + pickup lower_cal.nib; + top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4]; + x5 = 0.5[x6,x4]; x6 = x7 = good.x 0.5[x2, x4]; + y5 = y1; y6 = 0.5[y3, y5]; bot y7 = -d-eps; + save p; path p; p = z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z5 left_to_down z6..z7; + draw subpath (.75, 12) of p; + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic chi"; +beginchar(hex"B6",11u#,x_height#,desc_depth#); + italcorr h#*slant+.5u#; + adjust_fit(0,0); pickup cal.nib; + lft x1=.08w; lft x2=.2w; x4-x3=x2-x1; rt x4=w; + h-y1=d+y4=1/9(h+d); top y2=h; bot y3=-d-eps; + draw z1{up}....z2{right} + ... .2[z2+(.1w,0),z3-(.1w,0)]---.8[z2+(.1w,0),z3-(.1w,0)] + ...{right}z3....{up}z4; % left diagonal + x5=x6-u; rt x6=w; lft x7=0; x8=x7+u; + top y5=h; y6=.85[-d,h]; y7=h-d-y6; bot y8=-d-eps; + draw z5{right}...z6{down} + ..tension atleast 3..{down}z7...{right}z8; % right diagonal + math_fit(.5u#,1/7h#*slant+.5u#); labels(1,2,3,4,5,6,7,8); +endchar; + +cmchar "Calligraphic psi"; +beginchar(hex"B7", 11u#, asc_height#, desc_depth#); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; % same as "o" + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u); + x5 = 0.5[x4, x6]; x6 = good.x(w-1.25u); x7 = good.x(w-2u); + y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57x_height; top y7 = x_height+oo; + draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up}...z7; + pickup fine_cal.nib; + x8 = x9 = good.x(0.5[2.5u, w-1.5u]); top y8 = h+eps; bot y9 = -d-eps; + draw z8..z9; + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); +endchar; + +endinput. + + +% +% GREEK LOWERCASE +% + +apprr:=apprl:=hround u; +beginchar(oct"241", 10u#, x_height#, 0); + "The letter alpha"; + italcorr x_height#*slant-0.5u#; + pickup lower_cal.nib; + top y1 = h+eps; top y5 = h+u_o; bot y2 = -d_o; bot y6 = -eps; + 0.5[y3, y4] = 0.5[y2, y5]; y4-y3 = loop_squareness*(y5-y2); + lft x3 = lft x4 = apprl-ho; rt x1 = rt x6 = w-apprr+eps; + x2 = x5 = 0.375[x3, x6]; + draw z1 hang_to z2 left_to_up z3..z4 up_to_right z5 + hook_to z6; labels(1, 2, 3, 4, 5, 6); + math_fit(0, ic#); +endchar; + +beginchar(oct"242", 8u#, asc_height#, desc_depth#); + "The letter beta"; + italcorr 0.8asc_height#*slant-u#+ho#; + pickup lower_cal.nib; + bot y1 = -d; top y5 = x_height; top y3 = h+u_o; bot y7 = -d_o; + 0.5[y4', y4] = 0.5[y5, y3]; 0.5[y6', y6] = 0.5[y7, y5]; y8 = hook_h; + y4-y4' = loop_squareness*(y3-y5); + y6-y6' = loop_squareness*(y5-y7); y2 = y4'; + lft x1 = apprl; x1 = x2 = x8; rt x4+hround 0.5u = rt x6 = w-apprr+ho; + x3 = 0.55[x2, x4]; x7 = 0.5[x8, x6]; lft x5 = rt x1+hround u; + x4 = x4'; x6 = x6'; + draw z1..z2 up_to_right z3 right_to_down z4..z4' down_to_left z5 + &z5 right_to_down z6..z6' down_to_left z7 left_to_up z8; + labels(1, 2, 3, 4, 4', 5, 6, 6', 7, 8); + math_fit(0, ic#); +endchar; + +beginchar(oct"243", 8u#, x_height#, desc_depth#); + "The letter gamma"; + italcorr x_height#*slant; + pickup lower_cal.nib; numeric a; a = 0.60; + top y1 = top y7 = h+eps; bot y4 = -d-d_o; y3 = y5 = 0.2[y4, y1]; + lft x1 = apprl-hround 0.5u; rt x7 = w-apprr+hround 0.5u; + x5-x1 = x7-x3 = hround 1.5u; x4 = 0.5[x3, x5]; + x2 = a[x1, x3]; x6 = a[x7, x5]; y2 = a[y3, y1]; y6 = a[y5, y7]; + draw z1...z2{z3-z1}...z3 down_to_left + z4 left_to_up z5...z6{z7-z5}...z7; + labels(1, 2, 3, 4, 5, 6, 7); + math_fit(0, ic#); +endchar; + +beginchar(oct"244", 8u#, asc_height#, 0); + "The letter delta"; + italcorr 0.9asc_height#*slant-u#; + pickup lower_cal.nib; + top y1 = top y2 = h; y5 = good.x x_height; bot y8 = -d_o; + rt x7-ho = rt x1+hround 0.5u = w-apprr; + lft x9+ho = lft x3+eps = apprl; + x5 = x8 = 0.5[x9, x7]; x2 = 0.4[x3, x1]; + slope := -h/17u; + ellipse_set(2, 3, 4, 5); ellipse_set(8, 7, 6, 5); + y7 = y9; y10 = y6; x6-x5 = x5-x10; + draw z1{x2-x1, 2(y2-y1)} + ..z2 left_to_down z3 ...z4---z6...z7 + down_to_left z8 left_to_up z9...z10---z5; + labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); + math_fit(0, ic#); +endchar; + +beginchar(oct"245", 7u#, x_height#, 0); + "The letter epsilon"; + italcorr x_height#*slant-0.5u#; + pickup lower_cal.nib; + top y1 = h; bot y4 = -d_o; y6 = y7 = good.y 0.51[y4, y1]; + y2-y3 = loop_squareness*(y1-y4); y5 = good.y 0.15h; + y6 = 2/3[y3, y2]; x4 = 0.55[x2, x5]; + rt x1 = rt x7+hround 0.5u = rt x5-hround 0.5u = w-apprr; + lft x2 = apprl-ho; x2 = x3 = x6; + draw z1 left_to_down z2..z3 down_to_right z4 hook_to z5; + draw z6..z7; labels(1, 2, 3, 4, 5, 6, 7); + math_fit(0, ic#); +endchar; + + % ??? + +beginchar(oct"245", 7u#, x_height#, 0); + "The letter variant epsilon"; + italcorr x_height#*slant-0.5u#; + pickup lower_cal.nib; + top y2 = h+u_o; bot y6 = -d_o; + y3 = 0.5[y2, y4]; y5 = 0.5[y4, y6]; y7 = hook_h; + y1 = good.y 0.9[y6, y2]; y4 = good.y 0.5[y7, y1]; + rt x1 = rt x4+hround 1.5u = rt x7-hround 0.5u = w-apprr; + lft x3 = lft x5 = apprl-ho; x2 = 0.6[x3, x1]; x6 = 0.5[x5, x7]; + draw z1{x2-x1, 3(y2-y1)} + ...z2 left_to_down z3 down_to_right z4 + &z4 left_to_down z5 down_to_right z6 hook_to z7; + labels(1, 2, 3, 4, 5, 6, 7); + math_fit(0, ic#); +endchar; + +beginchar(oct"246", 8u#, asc_height#, desc_depth#); + "The letter zeta"; + italcorr x_height#*slant-0.5u#; + pickup lower_cal.nib; + top y1 = h; top y2 = top y3 = top y4 = vround(y1-0.25(h-x_height)); + bot y6 = bot y7 = 0; bot y9 = -d; + y5 = 0.3[y6, y4]; y8 = 0.5[y9, y7]; + lft x1 = apprl+hround 1.5u; lft x5 = apprl-ho; + rt x3 = w-apprr-hround u; rt x8 = w-apprr+ho; + x2 = 0.7[x1, x3]; + x4 = 0.85[x5, x3]; + x6-x5 = x8-x7 = 0.4(x8-x5); + x9 = good.x(0.5[x5, x8]); + draw z1 down_to_right z2..z3&z3..z4 left_to_down z5 + down_to_right z6...z7right_to_down z8 down_to_left z9; + labels(range 1 thru 9); + math_fit(0, ic#); +endchar; + + + + % ? + +beginchar(oct"251", 12u#, asc_height#, 0); + "The letter variant theta"; + italcorr 0.7asc_height#*slant-1.5u#+ho#; + pickup lower_cal.nib; + lft x1 = lft x3-hook_w = apprl-hround 0.5u; + x2 = 1/3[x3, x1]; + rt x5 = lft x3+hround(6u)+ho; + x4 = 0.5[apprl, w-apprr]; x6 = 0.5[x3, x5]; + x7 = good.x 0.2[x3, x5]; + x9-x8 = 0.5hook_w; + rt x9 = w-apprr+hround 0.5u; + y1+hook_h = top y2-eps = x_height; bot y4 = -d_o; top y6 = h+u_o; + y5 = y8 = good.y 0.5[y4, y6]; y3 = 0.25[y2, y4]; y7 = 0.7[y5, y6]; + y8-y9 = vround hook_h; + draw z1 hang_to z2 right_to_down z3 down_to_right + z4 right_to_up z5 up_to_left z6 left_to_down + z7 down_to_right z8 right_to_down z9; + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); + math_fit(0, ic#); +endchar; + +beginchar(oct"252", 2.5u#+curve#, x_height#, 0); + "The letter iota"; + italcorr x_height#*slant-2u#; + pickup lower_cal.nib; rt x1 = w-apprr-hround 1.5u; top y1 = h+eps; + draw right_hook1; + math_fit(0, ic#); +endchar; + +beginchar(oct"253", 8u#, x_height#, 0); + "The letter kappa"; + italcorr max(0.2x_height#*slant+0.1w#, + 0.95x_height#*slant-0.1w#+0.5u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; bot y2 = -oo; x1 = x2 = good.x 1.5u; + draw z1-cal.extension--z1--z2; + % + rt x4 = .9w; x5 = x4-.1w; x7 = .8w; rt x8 = 1.1w; + y4 = .9x_height; top y5 = x_height+oo; bot y7 = -oo; y8 = .2x_height-oo; + (lft z6)t_ = (x2, 0.4x_height).t_+penoffset up of pen_[lower_cal.nib]; + draw z4{up}...{left}z5..tension atleast 2..{down}z6 + ..tension atleast 3 and atleast 2..z7{right}...{up}z8; % diagonals + % + math_fit(0, 1/3x_height#*slant+0.5hair#+0.5u#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + + % ? + +beginchar(oct"253", 10u#, x_height#, 0); + "The letter variant kappa"; + italcorr x_height#*slant-0.75u#; + pickup lower_cal.nib; + top y1 = top y4-u_o = h; bot y3+d_o = bot y6 = 0; + y2 = h-y5 = 1/3[y1, y6]; + lft x1 = apprl-hround 0.5u-eps; + rt x6 = w-apprr+hround 0.5u+eps; + x3-x1 = x6-x4 = hround 0.75u; + x2-x1 = x6-x5 = hround 2.55u+eps; + draw z1 right_to_down z2...{z3-z4}z3 + --z4{z3-z4}...z5 down_to_right z6; + labels(1, 2, 3, 4, 5, 6); + math_fit(0, ic#); +endchar; + +beginchar(oct"254", 8u#, asc_height#, 0); + "The letter lambda"; +% no italic correction + pickup lower_cal.nib; + top y1 = h+eps; bot y2 = bot y3 = -eps; + top y4 = max(x_height, 0.5h);; + apprl-lft x3 = rt x2-(w-apprr) = hround 0.5u-eps; + x4 = 0.5[x2, x3]; z1 = whatever[z2, z4]; + draw z1..z2; draw z3..z4; labels(1, 2, 3, 4); + math_fit(0, ic#); +endchar; + +beginchar(oct"255", 8u#, x_height#, desc_depth#); + "The letter mu"; + italcorr x_height#*slant-1.5u#; + pickup lower_cal.nib; + top y1a = h+eps; bot y1b = -d-eps; lft x1a = lft x1b = apprl; + draw z1a..z1b; + x2a = x1a; rt x2c = rt x2d = w-apprr; x2b = 0.5[x2a, x2c]; + bot y2b = -d_o; top y2d = h+eps; + y2a = 0.5[y2d, y2b]; y2c = 2/3[y2d, y2b]; + draw z2a down_to_right z2b right_to_up z2c..z2d; + labels(1a, 1b, 2a, 2b, 2c, 2d); + math_fit(0, ic#); +endchar; + +beginchar(oct"256", 7u#, asc_height#, 0); + "The letter nu"; + italcorr 0.7asc_height#*slant-0.5u#+ho#; + pickup lower_cal.nib; + top y1 = x_height+eps; + bot y2 = -d_o; top y4 = h+eps; y3 = 0.5[y2, y4]; + lft x1 = apprl-hround 0.5u; rt x3 = w-apprr+ho; + x2 = x4 = good.x 0.5[x1, x3]; + draw z1--z2{2(x3-x2), y3-y2}...z3{up} + ...{x4-x3, (1-superness)*(y4-y3)}z4; + labels(1, 2, 3, 4); + math_fit(0, ic#); +endchar; + +beginchar(oct"257", 8u#, asc_height#, desc_depth#); + "The letter xi"; + italcorr x_height#*slant-.5u#; + pickup lower_cal.nib; + top y1 = h; top y2 = top y3 = top y4 = vround(y1-0.25(h-x_height)); + top y6 = top y7 = top y8 = vround 0.5h; bot y10 = bot y11 = 0; bot y13 = -d; + y5 = 0.5[y6, y4]; y9 = 0.4[y10, y8]; y12 = 0.5[y13, y11]; + lft x1 = apprl+hround 1.5u; lft x5 = apprl; lft x9 = apprl-ho; + rt x3 = rt x7 = w-apprr-hround u; rt x12 = w-apprr+ho; + x2 = 0.7[x1, x3]; + x4 = 0.85[x5, x3]; + x6 = 0.7[x5, x7]; + x8 = 0.8[x9, x7]; + x10-x9 = x12-x11 = 0.4(x12-x9); + x13 = good.x 0.5[x9, x12]; + draw z1 down_to_right z2..z3&z3..z4 left_to_down z5 + down_to_right z6..z7&z7..z8 left_to_down z9 down_to_right z10 + ...z11 right_to_down z12 down_to_left z13; + labels(range 1 thru 13); + math_fit(0, ic#); +endchar; + +beginchar(oct"261", 9u#, x_height#, desc_depth#); + "The letter pi"; + italcorr x_height#*slant; + pickup lower_cal.nib; + top y1 = h; y1 = y2 = y3 = y5; bot y4 = bot y6 = -eps; + lft x1 = apprl-eps-hround 0.5u; + rt x2 = w-apprr+eps+hround 0.5u; + x3 = x4; x5 = x6; x3-x1 = x2-x5; + x3 = good.x 0.25[apprl, w-apprr]; + draw z1..z2; draw z3..z4; draw z5..z6; + labels(1, 2, 3, 4, 5, 6); + math_fit(0, ic#); +endchar; + +beginchar(oct"262", 8u#, x_height#, desc_depth#); + "The letter rho"; + italcorr 0.7x_height#*slant-0.5u#+ho#; + pickup lower_cal.nib; set_loop1(right); draw_loop1(right); + bot y2 = -d-eps; x2 = x1c; draw z1c..z2; labels(2); + math_fit(0, ic#); +endchar; + +beginchar(oct"263", 8u#, x_height#, desc_depth#); + "The letter variant rho"; + italcorr 0.7x_height#*slant-0.5u#+ho#; + pickup lower_cal.nib; set_loop1(right); draw_loop1(right); + bot y3 = bot y4 = -d; y2 = 0.5[y1c, y3]; + x2 = x1c; rt x4 = w-apprr+eps; x3 = 0.5[x2, x4]; + draw z1c..z2 down_to_right z3..z4; labels(2, 3, 4); + math_fit(0, ic#); +endchar; + +beginchar(oct"264", 9u#, x_height#, 0); + "The letter sigma"; + italcorr x_height#*slant; + save loop_right; loop_right = apprr+hround u; + pickup lower_cal.nib; set_loop1(both); draw_loop1(both); + rt x3 = w-apprr+hround 0.5u+eps; top y3 = h; + z2 = 0.5[z1b, z3]; + draw z1b...z2{(z3-z2) yscaled 2}...z3; labels(2, 3); + math_fit(0, ic#); +endchar; + +beginchar(oct"265", 7u#, x_height#, comma_depth#); + "The letter variant sigma"; + italcorr x_height#*slant-0.5u#; + pickup lower_cal.nib; + top y2 = h+u_o; bot y7 = -d-d_o; bot y4 = bot y5 = 0; + y2-y1 = vround 0.06h; y8-y7 = vround 0.08h; + y3 = 0.45[y4, y2]; y6 = 0.5[y7, y5]; + lft x3 = apprl-ho; rt x1-eps = rt x6-ho = w-apprr; + x2 = 0.7[x3, x1]; x4 = 0.45[x3, x6]; x5 = 0.55[x3, x6]; + x7 = 0.7[x3, x6]; x8 = good.x x4; + draw z1{x2-x1, 2(y2-y1)} + ...z2 left_to_down z3 down_to_right z4 + ...z5right_to_down z6 down_to_left z7 hook_to z8; + labels(1, 2, 3, 4, 5, 6, 7, 8); + math_fit(0, ic#); +endchar; + +beginchar(oct"266", 8u#, x_height#, desc_depth#); + "The letter tau"; + italcorr x_height#*slant; + center_stem(3, 4); + top y1 = h; y1 = y2 = y3; bot y4 = -eps; + lft x1 = apprl-eps-hround 0.5u; + rt x2 = w-apprr+eps+hround 0.5u; + draw z1..z2; draw z3..z4; + labels(1, 2, 3, 4); + math_fit(0, ic#); +endchar; + +beginchar(oct"267", 8u#, x_height#, 0); + "The letter upsilon"; + italcorr x_height#*slant-0.5u#; + pickup lower_cal.nib; + top y1 = top y5 = h+eps; bot y3 = -d_o; y2 = y4 = 0.5[y3, y1]; + lft x1 = lft x2 = apprl; rt x4 = rt x5 = w-apprr; x3 = 0.5[x1, x5]; + draw z1..z2 down_to_right z3 right_to_up z4..z5; + labels(1, 2, 3, 4, 5); + math_fit(0, ic#); +endchar; + +beginchar(oct"270", 10u#, cap_height#, desc_depth#); + "The letter phi"; + italcorr 0.7x_height#*slant-0.5u#+ho#; + pickup lower_cal.nib; set_loop1(both); draw_loop1(both); + top y2 = h+eps; bot y3 = -d-eps; x2 = x3 = good.x 0.5[apprl, w-apprr]; + draw z2..z3; labels(2, 3); + math_fit(0, ic#); +endchar; + +beginchar(oct"271", 10u#, x_height#, desc_depth#); + "The letter variant phi"; + italcorr 0.7x_height#*slant-0.5u#+ho#; + pickup lower_cal.nib; + top y1-eps = top y5-u_o = h; bot y3 = -d_o; bot y7 = -d-eps; + 0.5[y2, y2'] = 0.5[y3, y5]; y2-y2' = loop_squareness*(y1-y3); + y2 = y4; y2' = y4'; y6 = 2/3[y3, y5]; + lft x2 = lft x2' = apprl-ho; rt x4 = rt x4' = w-apprr+ho; + x3 = x6 = x7 = good.x 0.5[x2, x4]; + x5 = 1/3[x6, x4]; x1 = good.x 0.65[x2, x6]; + draw z1 left_to_down z2..z2' down_to_right z3 right_to_up + z4'..z4 up_to_left z5 left_to_down z6..z7; + labels(1, 2, 2', 3, 4, 4', 5, 6, 7); + math_fit(0, ic#); +endchar; + +beginchar(oct"272", 9u#, x_height#, desc_depth#); + "The letter chi"; + italcorr x_height#*slant; + pickup lower_cal.nib; + top y1 = top y3 = h+eps; bot y2 = bot y4 = -d-eps; + lft x1+hround 0.25u = lft x4+hround 0.5u = apprl-eps; + rt x2-hround 0.5u = rt x3-hround 0.25u = w-apprr+eps; + draw z1..z2; draw z3..z4; labels(1, 2, 3, 4); + math_fit(0, ic#); +endchar; + +beginchar(oct"273", 10u#, asc_height#, desc_depth#); + "The letter psi"; + italcorr x_height#*slant-0.5u#; + center_stem(6, 7); + top y1 = top y5 = x_height+eps; bot y3 = -d_o; y2 = y4 = 0.5[y3, y1]; + lft x1 = lft x2 = apprl; rt x4 = rt x5 = w-apprr; x3 = 0.5[x1, x5]; + top y6 = h+eps; bot y7 = -d-eps; + draw z1..z2 down_to_right z3 right_to_up z4..z5; + draw z6..z7; labels(1, 2, 3, 4, 5, 6, 7); + math_fit(0, ic#); +endchar; + +beginchar(oct"274", 12u#, x_height#, 0); + "The letter omega"; + italcorr 0.7x_height#*slant-0.5u#+ho#; + pickup lower_cal.nib; + top y1 = top y9 = h+eps; bot y3 = bot y7 = -d_o; y2 = y8 = 0.5[y3, y1]; + y4 = y6 = 0.5[y3, y1]; y5 = good.y 0.75[y3, y1]+eps; + lft x2 = apprl-ho; rt x8 = w-apprr+ho; + x1 = good.x(x2+1.2u); x9 = good.x(x8-1.2u); + x3 = 0.265[x2, x8]; x7 = 0.735[x2, x8]; x5 = good.x 0.5[x2, x8]; + x4-x5 = x5-x6 = hround 0.7u+eps; + draw z1{3(x2-x1), y2-y1} + ...z2 down_to_right z3 right_to_up z4 up_to_left + z5 left_to_down z6 down_to_right z7 right_to_up z8 + ...{3(x9-x8), y9-y8}z9; + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); + math_fit(0, ic#); +endchar; + +beginchar(oct"275", 14u#, x_height#, 0); + "The letter variant pi"; + italcorr (x_height#+hook_h#)*slant; + pickup lower_cal.nib; + top y1 = top y9 = h; bot y3 = bot y7 = -d_o; y2 = y8 = 0.5[y3, y1]; + y4 = y6 = 0.6[y3, y1]; y5 = good.y 0.7[y3, y1]+eps; + lft x2 = apprl+hround 2u-ho; rt x8 = w-apprr-hround 0.4u+ho; + x1 = good.x(x2+1.2u); x9 = good.x(x8-1.2u); + x3 = 0.265[x2, x8]; x7 = 0.735[x2, x8]; x5 = good.x 0.5[x2, x8]; + x4-x5 = x5-x6 = hround 0.25u+eps; + draw z1{3(x2-x1), y2-y1} + ...z2 down_to_right z3 right_to_up z4 up_to_left + z5 left_to_down z6 down_to_right z7 right_to_up z8 + ...{3(x9-x8), y9-y8}z9; + y10 = hang_h; top y11 = h; y11 = y12; y13 = y12; + apprl-lft x10 = rt x13-(w-apprr) = hround 0.5u; + x11 = min(x10+pi_hang_w, x1); x12 = max(x13-pi_hang_w, x9); + draw z10--z11..z12 right_to_up z13; + labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13); + math_fit(0, ic#); +endchar; diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathcdrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathcdrv.mf new file mode 100644 index 00000000000..3780a3914da --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathcdrv.mf @@ -0,0 +1,229 @@ +% mathematical symbols by Anthony Phan. +% file: mathadrv.mf (driver file for matha serie, +% U stands for Unsupported) +% last modification: May 16, 2005. + +mode_setup; +math_setup; +% +% This file calls calu.mf and then extends +% the superb work of N. N. Billawala into +% a whole OT1 font. +% + +% +% First thing to do is to copy Computer Modern's +% control sequences and setup. +% +%slant := 0; +newinternal l, r, shrink_fit; % adjustments to spacing +boolean math_fitting; + +flare := dtsz; +flare# := dtsz#; + +def cal_setup = + let adjust_fit = normal_adjust_fit; + pickup pencircle xscaled cap_curve yscaled cap_hair rotated 30; + cal.nib := savepen; + pair cal.extension; cal.extension := (.75cap_curve, 0) rotated 30; + pickup pencircle xscaled cap_curve yscaled cap_hair rotated 70; + tilted.nib := savepen; + pickup pencircle xscaled curve yscaled cap_hair rotated 70; + med_tilted.nib := savepen; + pickup pencircle xscaled cap_stem yscaled cap_hair rotated 30; + med_cal.nib := savepen; + pickup pencircle xscaled stem yscaled cap_hair rotated 30; + light_cal.nib := savepen; + % + % lowercase and punctuation + % + pickup pencircle xscaled curve yscaled hair rotated 30; + lower_cal.nib := savepen; + lower_cal_width# := curve#*cosd 30+hair#*sind 30; + pickup pencircle xscaled 0.5[hair, curve] yscaled hair rotated 30; + fine_cal.nib := savepen; + % + pickup pencircle xscaled(cap_curve+dw) yscaled cap_hair rotated 30; + heavy_cal.nib := savepen; + bot_flourish_line := -0.5u-o; + pair bend; bend = (.5u, 0); + pair flourish_change; flourish_change = (4u, .2asc_height); + join_radius := u; + shrink_fit := 1+hround(2letter_fit#*hppp)-2letter_fit; +enddef; + +let cmchar = \; +def .... = .. tension atleast .9 .. enddef; +vardef w# = charwd enddef; +vardef d# = chardp enddef; +vardef h# = charht enddef; +vardef ic# = charic enddef; + +def do_expansion(expr expansion_factor) = + forsuffixes $ = u, jut, cap_jut, beak_jut, apex_corr: + $ := $.#*expansion_factor*hppp; endfor +enddef; + +def normal_adjust_fit(expr left_adjustment, right_adjustment) = + numeric charwd_in; charwd_in = charwd; + l := -hround(left_adjustment*hppp)-letter_fit; + interim xoffset := -l; + charwd := charwd+2letter_fit#+left_adjustment+right_adjustment; + r := l+hround(charwd*hppp)-shrink_fit; + w := r-hround(right_adjustment*hppp)-letter_fit; + do_expansion(w/(charwd_in*hppp)); +enddef; + +def mono_adjust_fit(expr left_adjustment, right_adjustment) = + numeric charwd_in; charwd_in = charwd; + numeric expansion_factor; + mono_charwd# = 2letter_fit# + +expansion_factor*(charwd+left_adjustment+right_adjustment); + l := -hround(left_adjustment*expansion_factor*hppp)-letter_fit; + interim xoffset := -l; + r := l+mono_charwd-shrink_fit; + w := r-hround(right_adjustment*expansion_factor*hppp)-letter_fit; + charwd := mono_charwd#; charic := mono_charic#; + do_expansion(w/(charwd_in*hppp)); +enddef; + +extra_endchar := extra_endchar&"r := r+shrink_fit; w := r-l;"; + +def ignore_math_fit(expr left_adjustment, right_adjustment) = enddef; + +def do_math_fit(expr left_adjustment, right_adjustment) = + l := l-hround(left_adjustment*hppp); interim xoffset := -l; + charwd := charwd+left_adjustment+right_adjustment; + r := l+hround(charwd*hppp)-shrink_fit; + charic := charic-right_adjustment; + if charic<0: charic := 0; fi +enddef; + +currenttransform := identity slanted slant +yscaled aspect_ratio scaled granularity; +def t_ = transformed currenttransform enddef; + +cal_setup; +autorounding := hair; + +% +% UPPERCASE +% + +let math_fit = do_math_fit; +math_fitting := true; +input calu.mf; + +% +% OTHER CASES +% + +let math_fit = ignore_math_fit; +math_fitting := false; + +vardef hook_in(suffix $, $$, $$$) = + x$ := good.x x$; + x$$ = max(x$$$-1.25u, 0.5[x$, x$$$]); + top y$$ = x_height+oo; y$ = good.y 7/8[0, y$$]; + y$$$ = 3/4x_height; + z$...z$$ right_to_down z$$$ +enddef; + +vardef hook_out(suffix $, $$, $$$) = + x$$$ := good.x x$$$; + x$$ = min(x$+1.25u, 0.5[x$, x$$$]); + bot y$$ = -oo; y$ = 1/4x_height; y$$$ = good.y 7/8[x_height, y$$]; + z$ down_to_right z$$...z$$$ % super_arc +enddef; + +vardef ital_arch(suffix $, $$, $$$) = + x$$ = 0.6[x$, x$$$]; + top y$$ = x_height+oo; y$$$ = 0.65x_height; + z${up}...z$$ right_to_down z$$$ % super_arc +enddef; + +vardef desc_curve(suffix $, $$, $$$) = + x$$$ := good.x x$$$; x$$ = 0.6[x$, x$$$]; + y$ = 0; bot y$$ = -d-oo; y$$$ = good.y 1/3[y$$, y$]; + z${down}...z$$ left_to_up z$$$...z$$$+round(1.1u*dir 60) +enddef; + +vardef cal_dot@#(expr $, $$, dotsize) = + rt x@#a-lft x@#c = top y@#b-bot y@#d = dotsize+2eps; + rt x@#a = hround($+0.5dotsize)+eps; + top y@#b = vround($$+0.5dotsize)+eps; + y@#a = y@#c = 0.5[y@#b, y@#d]; + x@#b = x@#d = 0.5[x@#c, x@#a]; + filldraw superellipse(z@#a, z@#b, z@#c, z@#d, superness); + labels(@#a, @#b, @#c, @#d); +enddef; + +comma_depth# := 0.75desc_depth#; +comma_depth := vround 0.75desc_depth; + +vardef cal_comma@#(expr $, $$, deviation, prof) = + pickup fine_cal.nib; + cal_dot@#($, $$, dtsz); + if $$>prof: bot else: top fi y@#f = prof; + y@#e = 0.25[$$, y@#f]; + if deviation>0: + x@#f = x@#c; rt x@#e = hround($+dtsz)+eps; + draw if $$>prof: z@#b else: z@#d fi right_to_down z@#e + ...{x@#f-x@#e, (1-superness)*(y@#f-y@#e)}z@#f; + else: + x@#f = x@#a; lft x@#e = hround($-dtsz)-eps; + draw if $$<prof: z@#d else: z@#b fi right_to_up z@#e + ...{x@#f-x@#e, (1-superness)*(y@#f-y@#e)}z@#f; + fi + labels(@#e, @#f); +enddef; + +% +% LOWERCASE, DIGITS, PUNCTUATION +% + +input mathcall; + +% +% GREEK +% + +input mathcallgreek; + +currenttransform := identity +yscaled aspect_ratio scaled granularity; +autorounding := 0; +extra_endchar := ""; +standard_proofing; + +extra_endchar := extra_endchar & "; charcode := charcode+code_offset;"; +dagesh := false; code_offset := 128; + +% +% HEBREW +% + +input mathhbrw; + +dagesh := true; code_offset := 160; + +% +% HEBREAW WITH DAGESH +% + +input mathhbrw; + +code_offset := 0; + +% parameters for TFM files. + +font_slant = 0; +font_x_height = x_height#; +font_normal_stretch = 3u#; +font_normal_shrink = 2u#; +font_quad = 18u#+4letter_fit#; +font_extra_space = 2u#; +font_normal_space = 6u#+2letter_fit#; + +end. diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathfine.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathfine.mf new file mode 100644 index 00000000000..f8a2b748471 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathfine.mf @@ -0,0 +1,375 @@ +% mathematical symbols by Anthony Phan. +% file: mathfine.mf (various fine mathematical symbols) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +def horizontal_rules_list=math_axis, + -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height +enddef; + +%beginchar(Infinity,13.8u#+2appr#,v_center(0.2[x_height#,cap_height#])); +% "Infinity"; +% numeric a,b; pickup fine.nib; +% b=vround 0.3[fine,curve]; +% a=vround((h+d)/18); slope:=(h+d)/3u; +% pos5(curve,angle(-1,-slope)-90); +% pos11(b,-90); pos14(b,-90); +% y1=y9=y5=(h-d)/2; top y7r=h+eps; bot y11r=-d-eps; +% y7r-y14l=y3l-y11r=a; y3-y3l=y3r-y3=y7-y7l=y7r-y7=y11l-y11; +% lft x1=appr; rt x9=w-appr; (x5-x1)/(y14-y3)=(x9-x5)/(y7-y11); +% forsuffixes $=,r,l: +% hellipse_set(1,3$,4$,5$); hellipse_set(9,7$,6$,5$); +% endfor +% slope:=-slope; +% hellipse_set(1,14,13,5); hellipse_set(9,11,12,5); +% y15=y13; x13-x14=x14-x15; x15=x2; y15-y1=y1-y2; +% y10=y12; x10-x11=x11-x12; x8=x10; y10-y9=y9-y8; +% filldraw stroke z1{down}...z2{1,slope}...z3e{right}...z4e---z6e +% ...z7e{right}...z8{1,slope}...z9{down}...z10{-1,slope}... +% z11e{left}...z12---z13...z14e{left}...z15{-1,slope}...z1{down}; +% penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); +% tmp_picture:=currentpicture; +%endchar; + +beginchar(Infinity,13.8u#+2appr#,v_center(spread3#)); + "Infinity"; + numeric a,b; pickup fine.nib; + a=vround((h+d+2o)/18); b=vround 0.3[fine,curve]; + slope:=(h+d+2o)/3.15u; + pos5(0.3[stem,curve],angle(-1,-slope)-90); + pos11(b,-90); pos14(b,-90); + y1=y9=y5=(h-d)/2; top y7r=h+o; bot y11r=-d-o; + y7r-y14l=y3l-y11r=a; y3-y3l=y3r-y3=y7-y7l=y7r-y7=y11l-y11; + lft x1=appr; rt x9=w-appr; (x5-x1)/(y14-y3)=(x9-x5)/(y7-y11); + forsuffixes $=,r,l: + hellipse_set(1,3$,4$,5$); hellipse_set(9,7$,6$,5$); + endfor + slope:=-slope; + hellipse_set(1,14,13,5); hellipse_set(9,11,12,5); + y15=y13; x13-x14=x14-x15; x15=x2; y15-y1=y1-y2; + y10=y12; x10-x11=x11-x12; x8=x10; y10-y9=y9-y8; + filldraw stroke z1{down}...z2{1,slope}...z3e{right}...z4e---z6e + ...z7e{right}...z8{1,slope}...z9{down}...z10{-1,slope}... + z11e{left}...z12---z13...z14e{left}...z15{-1,slope}...z1{down}; + penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); + tmp_picture:=currentpicture; +endchar; + +iff (known Infinity) and (known proportionnal_to): +beginchar(proportionnal_to,12u#+2appr#,v_center(spread3#)); + "Proportionnal to sign"; + currentpicture:=tmp_picture; + cullit; + unfill (w-appr,-d)--(w-appr+4u,-d)-- + (w-appr+4u,h)--(w-appr,h)--cycle; +endchar; + +% +% a revoir +% +beginchar(partial,6.8u#+2appr#,asc_height#,0); + "Partial derivative"; + italcorr x_height#*slant-0.5u#-0.8u#; + localtransform = identity slanted slant + yscaled aspect_ratio scaled granularity + shifted (-hround 0.8u,0); + pickup fine.nib; pos2(stem,90); pos5(curve,180); + lft x1-hround 0.35u=lft x5r+eps=appr; + rt x3=w-appr+eps; x2=0.4[x1,x3]; x4=0.5[x5r,x3]; + x6=0.5[x5,x3]; + top y2r=asc_height+o; bot y4=-o; + top y6=max(x_height,0.5asc_height)+oo; + y3=0.5[y4,y2r]; y5=0.5[y4,y6]; y1=good.y 0.84[y4,y2r]; + filldraw stroke z1 up_to_right z2e right_to_down z3; + filldraw stroke z4 left_to_up z5e up_to_right z6; + draw z3 down_to_left z4; draw z6{right}...z3; + penlabels(1,2,3,4,5,6); +endchar; + +beginchar(partial_slash,6.8u#+2appr#,asc_height#,asc_depth#); + "Slashed partial derivative"; + italcorr x_height#*slant-0.5u#-0.8u#; + localtransform=identity slanted slant + yscaled aspect_ratio scaled granularity + shifted (-hround 0.8u,0); + pickup fine.nib; pos2(stem,90); pos5(curve,180); + lft x1-hround 0.35u=lft x5r+eps=appr; + rt x3=w-appr+eps; x2=0.4[x1,x3]; x4=0.5[x5r,x3]; + x6=0.5[x5,x3]; + top y2r=asc_height+o; bot y4=-o; + top y6=max(x_height,0.5asc_height)+oo; + y3=0.5[y4,y2r]; y5=0.5[y4,y6]; y1=good.y 0.84[y4,y2r]; + filldraw stroke z1 up_to_right z2e right_to_down z3; + filldraw stroke z4 left_to_up z5e up_to_right z6; + draw z3 down_to_left z4; draw z6{right}...z3; + % + bot y8=-d; y7-asc_height=-y8; + z7=whatever[z4,z6]; z8=whatever[z4,z6]; + numeric a; + a=diag_width(max((rth0-fine),0),(z7-z8) slanted slant); + penpos7(a,0); penpos8(a,0); filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); +endchar; + +% +% daggers and asterisks +% + +numeric dag_stem,dag_Stem; +dag_stem=hround 0.3[curve,cap_curve]; +dag_Stem=hround 0.6[curve,cap_curve]; + +beginchar(dagger,6u#+2appr#,asc_height#,asc_depth#); + "Dagger mark"; +% italcorr (0.75asc_height#-0.25asc_depth#)*slant-0.5u#; + interim stress:=0.5; + pickup fine.nib; + x1=hround(0.5w-0.5dag_stem)+0.5dag_stem; + y1=vround(0.25[h,-d]-0.5curve)+0.5curve; + y4=good.y 0.4[h,-d]; z1=z2=z3; + filldraw dagger_stroke1(h+oo-y1,dag_stem,hair,up)--cycle; + x1=x4=x4a=x4b=x5; bot y5=-d-o; + y4a=stress[y1,y4]; y4b=stress[y5,y4]; + pos4(dag_Stem,0); pos5(hair,0); + filldraw stroke z1e{down}...{z4e-z4a}z4e{z4b-z4e}...z5e{down}; + interim stress:=0.4; + filldraw dagger_stroke2(x1-appr+eps,curve,vair,left)--cycle; + filldraw dagger_stroke3(x1-appr+eps,curve,vair,right)--cycle; + labels(4,4a,4b,4r,4l,5,5r,5l); +endchar; + +beginchar(double_dagger,6u#+2appr#,asc_height#,asc_depth#); + "Double dagger mark"; +% italcorr (0.75asc_height#-0.25asc_depth#)*slant-0.5u#; + interim stress:=0.5; pickup fine.nib; + x1=hround(0.5w-0.5dag_stem)+0.5dag_stem; + y1=vround(0.25[h,-d]-0.5curve)+0.5curve; + x1=x2=x3=x4=x5=x6=x7=x8=x9=x10; y1=y2=y3; h-y1-d=y4=y5=y6; + filldraw dagger_stroke1(h+oo-y1,dag_stem,hair,up)--cycle; + filldraw dagger_stroke4(h+oo-y1,dag_stem,hair,down)--cycle; + y7=good.y 0.35[h,-d]; z10l=z4r; z10r=z4l; y1-y7=y9-y4; + y8=0.5[y7,y9]; pos7(dag_Stem,0); + pos8(hair,0); pos9(dag_Stem,0); + z7a=stress[z1,z7]; z7b=stress[z8,z7]; + z9a=stress[z4,z9]; z9b=stress[z8,z9]; + filldraw stroke z1e{down}...{z7e-z7a}z7e{z7b-z7e}...z8e{down} + ...{z9e-z9b}z9e{z9a-z9e}...z10e{down}; + interim stress:=0.4; + filldraw dagger_stroke2(x1-appr,curve,vair,left)--cycle; + filldraw dagger_stroke3(x1-appr+eps,curve,vair,right)--cycle; + filldraw dagger_stroke5(x1-appr+eps,curve,vair,left)--cycle; + filldraw dagger_stroke6(x1-appr+eps,curve,vair,right)--cycle; + labels(7a,7b,9a,9b); penlabels(7,8,9,10); +endchar; + +if (known upper_asterisk) + or (known lower_asterisk) + or (known triple_asterisk): + beginpicture(tmp,ast_size#+2appr#,ast_size#,0); + autorounded; interim stress:=0.5; pickup null.nib; + numeric b,c,dag_curve,dag_stem; + dag_curve=ast_curve; dag_stem=ast_stem; + b=1.8ast_stem; c=1.4ast_stem; + % + x0=hround(0.5w-0.5dag_curve)+0.5dag_curve; y0=0.5[-d,h]; + for $=1 upto 6: z[$]=b*dir($*60+30)+z0; + z[$]'=c*dir($*60+60)+z0; endfor + filldraw for $=1 upto 6: dagger_stroke[$](round(0.5ast_size-b)+eps, + dag_curve,dag_stem,dir($*60+30))...z[$]'...endfor cycle; + endpicture; +fi + +beginchar(upper_asterisk,ast_size#+2appr#,body_height#,0); + "Upper asterisk"; +% italcorr body_height#*slant-0.5u#; + currentpicture:=tmp_picture shifted(0,h-ast_size); +endchar; + +beginchar(lower_asterisk,ast_size#+2appr#, + ast_size#-body_depth#,body_depth#); + "Lower asterisk"; +% italcorr charht*slant-0.5u; + currentpicture:=tmp_picture shifted(0,-body_depth); +endchar; + +beginchar(triple_asterisk,20u#+2appr#,body_height#,body_depth#); + "Triple asterisks"; +% italcorr charht*slant-0.5u; + currentpicture:= + tmp_picture shifted(hround 6.5u,h-ast_size)+ + tmp_picture shifted(2hround 6.5u-hround 13u,-d)+ + tmp_picture shifted(hround 13u,-d); +endchar; + +% +% Musical signs (supposed to be identical to cm's ones...) +% + +beginchar(musical_flat_sign,5u#+2appr#,body_height#,0); + "Musical flat sign"; + pickup crisp.nib; + pos1(hair,0); pos2(hair,180); pos3(hair,0); x1=x2=x3; + pos4(.25[hair,curve],60); pos5(curve,0); + lft x1l=appr; x4=0.5w; rt x5r=w-appr; + top y1=h; bot y3=-o; top y4=x_height+o; + y2=y4-.2x_height; y5=3/4x_height; + filldraw stroke z1e--z3e; % stem + filldraw stroke z2e{up}...z4e{right}...z5e{down} + ...{2(x3-x5e),y3-y5e}z3e; % bowl + penlabels(1,2,3,4,5); +endchar; + +beginchar(musical_natural_sign,5u#+2appr#,asc_height#,desc_depth#); + "Musical natural sign"; + pickup crisp.nib; + pos1(hair,0); pos2(curve,90); pos3(curve,90); + pos4(curve,90); pos5(curve,90); pos6(hair,0); + rt x1r=hround 7/8u+appr; x2=x4=x1l; x3=x5=x6r=w-x2; + y1=h+o; top y2r=0; .5[y2,y3]=0; y4-y2=y5-y3=x_height; bot y6=-d-o; + x2'=x1r; z2'=whatever[z2r,z3r]; x5'=x6l; z5'=whatever[z4l,z5l]; + (x1r,y)=z1l+whatever*(z5-z4); y6l:=y6l-(y-y1r); y1r:=y; + filldraw z1l--z2l--z3l--z3r--z2'--z1r--cycle; % left stem and lower bar + filldraw z6r--z5r--z4r--z4l--z5'--z6l--cycle; % right stem and upper bar + penlabels(1,2,3,4,5,6); +endchar; + +beginchar(musical_sharp_sign,5u#+2appr#,asc_height#,desc_depth#); + "Musical sharp sign"; + pickup crisp.nib; + pos1(curve,90); pos2(curve,90); pos3(curve,90); pos4(curve,90); + lft x1=lft x3=appr; rt x2=rt x4=w-appr; + top y3r=0; .5[y3,y4]=0; y1-y3=y2-y4=x_height; + filldraw stroke z1e--z2e; filldraw stroke z3e--z4e; % bars + numeric theta,hstem; theta=angle(z2-z1); + (hstem-crisp)*cosd theta=hair-crisp; + pos5(hstem,theta); pos6(hstem,theta); + pos7(hstem,theta); pos8(hstem,theta); + lft x5l=lft x6l=hround(2u-.5hair); x7=x8=w-x6; + top y7l=h+o; bot y6r=-d-o; z7-z5=z8-z6=(whatever,0) rotated theta; + filldraw stroke z5e--z6e; filldraw stroke z7e--z8e; % stems + penlabels(1,2,3,4,5,6,7,8); +endchar; + +beginchar(degree_sign, + 5u#+2appr#,0.8asc_height#,0); + "Degree sign"; + b:=round min(6.5u,8/12h); + pickup rule.nib0; + adjust_dot1((0.5w,6.5/12h),b,true,true); + full_dot:=false; dot(1,1'); +endchar; + +beginchar(prime_sign, + u#+max(1.75u#,curve#+2(curve#-stem#))+2appr#, + 0.8asc_height#,0); + "Prime sign"; + pickup fine.nib; + a:=hround(bold+2dw); b:=hround 0.5[vair,stem]; + y1+0.5a=h; x1+0.5a=w-appr+hround 0.75u; + y3=1/12asc_height; x3-0.5b=appr-hround 0.5u; + save r,R,u_; pair u_; u_=unitvector(z1-z3); + R=0.5(a-fine); x=R/(length(z1-z3)++0.5(b-fine)); + z1-z2=R*x*u_; z0-z1=R*u_; c:=angle(z1-z3)-90; + penpos1(2R,c); penpos2(2R*(1+-+x),c); pos3(b,c); + filldraw z3r---z2r...z1r{u_}... + (superness[z1,z1.r]+superness[z1,z0]-z1){z0-z1.r} + ...z0{z1.l-z1.r}... + (superness[z1,z1.l]+superness[z1,z0]-z1){z1.l-z0} + ...z1.l{-u_}...z2l---z3l--cycle; + penlabels(0,1,2,3); + tmp_picture:=currentpicture; +endchar; + +beginchar(second_sign, + u#+2.25u#+2letter_fit#+2max(1.75u#,curve#+2(curve#-stem#))+2appr#, + 0.8asc_height#,0); + "Second sign"; + a:=hround(bold+2dw+2.25u+2letter_fit); + currentpicture:=tmp_picture+(tmp_picture shifted (a,0)); +endchar; + +beginchar(third_sign, + u#+2*2.00u#+4letter_fit#+3max(1.75u#,curve#+2(curve#-stem#))+2appr#, + 0.8asc_height#,0); + "Third sign"; + a:=hround(bold+2dw+2.00u+2letter_fit); + currentpicture:=tmp_picture+(tmp_picture shifted (a,0)) + +(tmp_picture shifted (2a,0)); +endchar; + +beginchar(fourth_sign, + u#+3*1.75u#+6letter_fit#+4max(1.75u#,curve#+2(curve#-stem#))+2appr#, + 0.8asc_height#,0); + "Fourth sign"; + a:=hround(bold+2dw+1.75u+2letter_fit); + currentpicture:=tmp_picture+(tmp_picture shifted (a,0)) + +(tmp_picture shifted (2a,0))+(tmp_picture shifted (3a,0)); +endchar; + +beginchar(backprime_sign, + u#+max(1.75u#,curve#+2(curve#-stem#))+2appr#,0.8asc_height#,0); + "Backrime sign"; + pickup fine.nib; + a:=hround(bold+2dw); b:=hround 0.5[vair,stem]; + y1+0.5a=h; x1-0.5a=appr-hround 0.75u; + y3=1/12asc_height; x3+0.5b=w-appr+hround 0.5u; + save r,R,u_; pair u_; u_=unitvector(z1-z3); + R=0.5(a-fine); x=R/(length(z1-z3)++0.5(b-fine)); + z1-z2=R*x*u_; z0-z1=R*u_; c:=angle(z1-z3)-90; + penpos1(2R,c); penpos2(2R*(1+-+x),c); pos3(b,c); + filldraw z3r---z2r...z1r{u_}... + (superness[z1,z1.r]+superness[z1,z0]-z1){z0-z1.r} + ...z0{z1.l-z1.r}... + (superness[z1,z1.l]+superness[z1,z0]-z1){z1.l-z0} + ...z1.l{-u_}...z2l---z3l--cycle; + penlabels(0,1,2,3); +endchar; + +beginchar(accent_circ, + 5u#+2appr#,asc_height#,0); + "Circ accent"; + b:=max(h+2o-1/3[x_height,h],4u); + pickup pencircle scaled hair; + adjust_dot1((0.5w,max(1/3[x_height,h]+0.5b-o,x_height+2o)),b,false,false); + full_dot:=false; dot(1,1'); +endchar; + +beginchar(accent_dot, + 3u#+2appr#, + min(7/10[x_height#,asc_height]+0.5max(dtsz#,cap_curve#),asc_height#),0); + "Dot accent"; + b:=max(dtsz,cap_curve); ensure_centering_of(b); + pickup null.nib; + adjust_dot1((0.5w,h+1-0.5b),b,false,false); dot(1,1'); +endchar; + +beginchar(accent_ddot,7u#+2appr#, + min(7/10[x_height#,asc_height]+0.5max(dtsz#,cap_curve#),asc_height#),0); + "Ddot accent"; + b:=max(dtsz,cap_curve);% ensure_centering_of(b); + pickup null.nib; + adjust_dot1((0.5w-1.75u,h+1-0.5b),b,false,false); dot(1,1'); + adjust_dot2((0.5w+1.75u,h+1-0.5b),b,false,false); dot(2,2'); +endchar; + +beginchar(accent_dddot,8u#+2appr#, + min(7/10[x_height#,asc_height]+0.5max(dtsz#,cap_curve#),asc_height#),0); + "Dddot accent"; + a:=hround 3.25u; b:=max(dtsz,cap_curve); ensure_centering_of(b); + pickup null.nib; + adjust_dot1((0.5w-a,h+1-0.5b),b,false,false); dot(1,1'); + adjust_dot2((0.5w,h+1-0.5b),b,false,false); dot(2,2'); + adjust_dot3((0.5w+a,h+1-0.5b),b,false,false); dot(3,3'); +endchar; + +beginchar(accent_ddddot,9u#+2appr#, + min(7/10[x_height#,asc_height]+0.5max(dtsz#,cap_curve#),asc_height#),0); + "Ddddot accent"; + a:=hround 3u; b:=max(dtsz,cap_curve);% ensure_centering_of(b); + pickup null.nib; + adjust_dot1((0.5w-1.5a,h+1-0.5b),b,false,false); dot(1,1'); + adjust_dot2((0.5w-0.5a,h+1-0.5b),b,false,false); dot(2,2'); + adjust_dot3((0.5w+0.5a,h+1-0.5b),b,false,false); dot(3,3'); + adjust_dot4((0.5w+1.5a,h+1-0.5b),b,false,false); dot(4,4'); +endchar; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathgrey.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathgrey.mf new file mode 100644 index 00000000000..4a8f675edbb --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathgrey.mf @@ -0,0 +1,97 @@ +% mathematical symbols by Anthony Phan. +% file: mathgrey.mf (grey symbols) +% last modification: May 16, 2005. + +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; + +% basic pieces and parameters + +grey_ppi=1200;% maximum resolution +grey_sc:=round max(1,pixels_per_inch/grey_ppi); +grey_ht:=4grey_sc; grey_wd:=4grey_sc; +picture grey.light,grey.medium,grey.dark; +grey.light=nullpicture; +grey.medium=nullpicture; +grey.dark=nullpicture; +for z=(0,2),(1,0),(2,3),(3,1): + addto grey.light contour + (unitsquare scaled grey_sc) shifted (z scaled grey_sc); +endfor +for z=(0,1),(0,3),(1,0),(1,2),(2,1),(2,3),(3,0),(3,2): + addto grey.medium contour + (unitsquare scaled grey_sc) shifted (z scaled grey_sc); +endfor +addto grey.dark contour +(0,0)--(grey_wd,0)--(grey_wd,grey_ht)--(0,grey_ht)--cycle; +for z=(0,2),(1,0),(2,3),(3,1): + addto grey.dark contour + (unitsquare scaled grey_sc) shifted (z scaled grey_sc) withweight -1; +endfor + +% The whole bounding box is shaded (tmp_light not currentpicture). + +vardef grey_background@#(expr x_min,x_max,y_min,y_max)= + for j=floor(y_min/grey_ht) upto ceiling(y_max/grey_ht): + for i=floor(x_min/grey_wd) upto ceiling(x_max/grey_wd): + addto tmp_picture also (grey.@# shifted (i*grey_wd,j*grey_ht)); + endfor endfor +enddef; + +% The path p must lies within the character bounding box. + +vardef grey_fill(expr p,x_min,x_max,y_min,y_max)(suffix @#)= + tmp_picture:=nullpicture; + grey_background@#(x_min,x_max,y_min,y_max); + addto tmp_picture contour p; + cull tmp_picture keeping (2,infinity); + addto tmp_picture also currentpicture; + currentpicture:=tmp_picture; +enddef; + +def tmp_program(expr circle,radius)(suffix @#)= + x0=good.x 0.5w; y0=good.y 0.5[-d,h]; + if circle: + for i=1 upto 8: + z[i]=z0+round(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; + else: + for i=1 step 2 until 7: + z[i]=z0+round(6.75u-0.5rth)*right rotated(45*(i-1)); + endfor; + x1=x2=x8; x5=x4=x6; y2=y3=y4; y6=y7=y8; + labels(0,1,2,3,4,5,6,7,8); + tmp_path:=z1--z2--z3--z4--z5--z6--z7--z8--cycle; + fi + grey_fill(tmp_path,x5,x1,y7,y3,@#); +enddef; + +beginchar(hex"DD",arithmetic_bounds); + tmp_program(true,6.75u,light); +endchar; + +beginchar(hex"FD",arithmetic_bounds); + tmp_program(false,6.75u,light); +endchar; + +beginchar(hex"DE",arithmetic_bounds); + tmp_program(true,6.75u,medium); +endchar; + +beginchar(hex"FE",arithmetic_bounds); + tmp_program(false,6.75u,medium); +endchar; + +beginchar(hex"DF",arithmetic_bounds); + tmp_program(true,6.75u,dark); +endchar; + +beginchar(hex"FF",arithmetic_bounds); + tmp_program(false,6.75u,dark); +endchar; + + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathhbrw.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathhbrw.mf new file mode 100644 index 00000000000..a09e30a017b --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathhbrw.mf @@ -0,0 +1,2220 @@ +% mathematical symbols by Anthony Phan. +% file: mathhbrw.mf (Bold Hebrew Letters) +% last modification: May 16, 2005. +% Origin see below: + +% cap_height# = 247 / 36 / 0.075 * 1.2 / designsize* FY# +% ( = 10.97777 for 10 pt# fonts) +% u#=20/36pt; +def horizontal_rules_list=0.1h,0.2h,0.3h,0.4h,0.5h,0.6h,0.7h,0.8h,0.9h, + -body_depth,-desc_depth,cap_height,body_height +enddef; + +if dagesh: tmp_string:=" with dagesh"; +else: tmp_string:=""; fi +t:=turningcheck; +extra_endchar_save:=extra_endchar; + +% look at the end of this file: we restore +% initial values of turningcherck and extra_endchar. + +% font Normal HehenHebTBol at 12pt +% converted from True Type format by TTF2MF ver. 0.02 + +FX# := 18u#/1.2 * 0.075; +FY# := designsize/1.2 * 0.075; + +def nonzerowinding = + cull currentpicture dropping (0,0); +enddef; +extra_endchar := extra_endchar & "nonzerowinding;"; +% +smoothing := 0; autorounding := 0; turningcheck := 0; +define_pixels (FX, FY); +% + +beginchar(64, 10.703FX#,if true_size: 11.156FY#, 0.328FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((0.75,0) + --(0.75,0.594) + ..controls(1.063,0.615)and(1.268,0.664) + ..(1.367,0.742) + ..controls(1.435,0.794)and(1.495,0.872) + ..(1.547,0.977) + ..controls(1.599,1.081)and(1.625,1.174) + ..(1.625,1.258) + ..controls(1.625,1.372)and(1.555,1.549) + ..(1.414,1.789) + ..controls(1.133,2.263)and(0.953,2.604) + ..(0.875,2.813) + ..controls(0.797,3.021)and(0.758,3.266) + ..(0.758,3.547) + ..controls(0.758,3.984)and(0.883,4.423) + ..(1.133,4.863) + ..controls(1.383,5.303)and(1.82,5.849) + ..(2.445,6.5) + --(2.156,6.836) + ..controls(1.833,7.164)and(1.625,7.384) + ..(1.531,7.496) + ..controls(1.438,7.608)and(1.328,7.776) + ..(1.203,8) + ..controls(0.948,8.448)and(0.82,8.896) + ..(0.82,9.344) + ..controls(0.82,9.969)and(1.003,10.438) + ..(1.367,10.75) + ..controls(1.669,11.016)and(1.971,11.148) + ..(2.273,11.148) + ..controls(2.388,11.148)and(2.445,11.102) + ..(2.445,11.008) + ..controls(2.445,10.982)and(2.438,10.93) + ..(2.422,10.852) + ..controls(2.411,10.81)and(2.406,10.768) + ..(2.406,10.727) + ..controls(2.406,10.404)and(2.651,10.01) + ..(3.141,9.547) + --(6.375,6.5) + --(7.148,7.797) + ..controls(6.747,8.182)and(6.497,8.453) + ..(6.398,8.609) + ..controls(6.299,8.766)and(6.25,8.969) + ..(6.25,9.219) + ..controls(6.25,9.724)and(6.424,10.177) + ..(6.773,10.578) + ..controls(7.107,10.964)and(7.419,11.156) + ..(7.711,11.156) + ..controls(7.779,11.156)and(7.822,11.141) + ..(7.84,11.109) + ..controls(7.858,11.078)and(7.896,10.969) + ..(7.953,10.781) + ..controls(7.995,10.646)and(8.079,10.512) + ..(8.207,10.379) + ..controls(8.335,10.246)and(8.586,10.029) + ..(8.961,9.727) + ..controls(9.612,9.201)and(9.938,8.682) + ..(9.938,8.172) + ..controls(9.938,7.859)and(9.829,7.508) + ..(9.613,7.117) + ..controls(9.397,6.727)and(9.115,6.378) + ..(8.766,6.07) + ..controls(8.349,6.815)and(8.005,7.188) + ..(7.734,7.188) + ..controls(7.62,7.188)and(7.471,7.029) + ..(7.289,6.711) + --(6.859,5.992) + --(8.117,4.75) + ..controls(8.617,4.26)and(8.927,3.945) + ..(9.047,3.805) + ..controls(9.167,3.664)and(9.31,3.456) + ..(9.477,3.18) + ..controls(9.799,2.633)and(9.961,2.083) + ..(9.961,1.531) + ..controls(9.961,0.979)and(9.826,0.526) + ..(9.555,0.172) + ..controls(9.31,-0.161)and(9.115,-0.328) + ..(8.969,-0.328) + ..controls(8.911,-0.328)and(8.863,-0.293) + ..(8.824,-0.223) + ..controls(8.785,-0.152)and(8.727,0.008) + ..(8.648,0.258) + ..controls(8.477,0.674)and(8.029,1.211) + ..(7.305,1.867) + --(3.094,5.938) + ..controls(2.995,6.031)and(2.919,6.078) + ..(2.867,6.078) + ..controls(2.768,6.078)and(2.654,5.975) + ..(2.523,5.77) + ..controls(2.393,5.564)and(2.328,5.38) + ..(2.328,5.219) + ..controls(2.328,4.964)and(2.44,4.688) + ..(2.664,4.391) + ..controls(2.716,4.323)and(3.003,4.029) + ..(3.523,3.508) + ..controls(3.773,3.258)and(3.979,2.953) + ..(4.141,2.594) + ..controls(4.302,2.234)and(4.383,1.906) + ..(4.383,1.609) + ..controls(4.383,1.01)and(4.104,0.474) + ..(3.547,0) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((6.65u,0.5dtsz),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(65, 10.008FX#,if true_size: 11.273FY#, 0FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((8.586,0) + --(0.211,0) + ..controls(0.315,0.563)and(0.395,0.919) + ..(0.449,1.07) + ..controls(0.504,1.221)and(0.773,1.82) + ..(1.258,2.867) + --(7.477,2.867) + ..controls(7.523,3.424)and(7.547,3.984) + ..(7.547,4.547) + ..controls(7.547,5.276)and(7.516,5.828) + ..(7.453,6.203) + ..controls(7.391,6.578)and(7.279,6.911) + ..(7.117,7.203) + ..controls(6.982,7.443)and(6.827,7.602) + ..(6.652,7.68) + ..controls(6.478,7.758)and(6.185,7.797) + ..(5.773,7.797) + --(2.844,7.797) + ..controls(2.276,7.797)and(1.852,7.872) + ..(1.57,8.023) + ..controls(1.023,8.31)and(0.75,8.813) + ..(0.75,9.531) + ..controls(0.75,9.984)and(0.896,10.43) + ..(1.188,10.867) + ..controls(1.37,11.138)and(1.529,11.273) + ..(1.664,11.273) + ..controls(1.742,11.273)and(1.79,11.259) + ..(1.809,11.23) + ..controls(1.827,11.202)and(1.854,11.107) + ..(1.891,10.945) + ..controls(1.948,10.753)and(2.161,10.659) + ..(2.531,10.664) + --(5.492,10.664) + ..controls(6.034,10.664)and(6.415,10.641) + ..(6.637,10.594) + ..controls(6.858,10.547)and(7.07,10.448) + ..(7.273,10.297) + ..controls(7.602,10.052)and(7.837,9.716) + ..(7.98,9.289) + ..controls(8.124,8.862)and(8.211,8.253) + ..(8.242,7.461) + ..controls(8.284,6.263)and(8.305,5.378) + ..(8.305,4.805) + ..controls(8.305,4.122)and(8.273,3.477) + ..(8.211,2.867) + --(9.258,2.867) + ..controls(9.117,2.456)and(8.986,1.992) + ..(8.863,1.477) + ..controls(8.741,0.961)and(8.648,0.469) + ..(8.586,0) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((5.2u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(66, 6.164FX#,if true_size: 11.25FY#, 0FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((0.836,2.891) + --(3.383,2.891) + ..controls(3.534,2.891)and(3.625,2.897) + ..(3.656,2.91) + ..controls(3.688,2.923)and(3.703,2.961) + ..(3.703,3.023) + ..controls(3.703,3.044)and(3.685,3.169) + ..(3.648,3.398) + ..controls(3.617,3.622)and(3.602,3.901) + ..(3.602,4.234) + ..controls(3.602,4.906)and(3.654,5.615) + ..(3.758,6.359) + ..controls(3.81,6.708)and(3.836,6.982) + ..(3.836,7.18) + ..controls(3.836,7.383)and(3.772,7.549) + ..(3.645,7.68) + ..controls(3.517,7.81)and(3.354,7.875) + ..(3.156,7.875) + ..controls(3.047,7.875)and(2.919,7.862) + ..(2.773,7.836) + ..controls(2.544,7.794)and(2.383,7.773) + ..(2.289,7.773) + ..controls(1.883,7.773)and(1.534,7.974) + ..(1.242,8.375) + ..controls(1.029,8.672)and(0.922,9.005) + ..(0.922,9.375) + ..controls(0.922,9.807)and(1.016,10.228) + ..(1.203,10.637) + ..controls(1.391,11.046)and(1.586,11.25) + ..(1.789,11.25) + ..controls(1.883,11.25)and(1.966,11.174) + ..(2.039,11.023) + ..controls(2.148,10.805)and(2.339,10.695) + ..(2.609,10.695) + ..controls(2.641,10.695)and(2.732,10.698) + ..(2.883,10.703) + ..controls(2.904,10.703)and(2.935,10.703) + ..(2.977,10.703) + ..controls(3.466,10.703)and(3.85,10.521) + ..(4.129,10.156) + ..controls(4.408,9.792)and(4.547,9.286) + ..(4.547,8.641) + ..controls(4.547,8.51)and(4.542,8.354) + ..(4.531,8.172) + ..controls(4.505,7.698)and(4.492,7.417) + ..(4.492,7.328) + ..controls(4.492,6.646)and(4.565,5.747) + ..(4.711,4.633) + ..controls(4.862,3.456)and(4.938,2.779) + ..(4.938,2.602) + ..controls(4.938,2.398)and(4.927,2.029) + ..(4.906,1.492) + ..controls(4.896,1.378)and(4.888,1.016) + ..(4.883,0.406) + ..controls(4.878,0.135)and(4.784,0) + ..(4.602,0) + ..controls(4.471,0)and(4.383,0.12) + ..(4.336,0.359) + --(4.07,1.773) + ..controls(4.034,1.961)and(3.997,2.086) + ..(3.961,2.148) + ..controls(3.924,2.211)and(3.87,2.242) + ..(3.797,2.242) + ..controls(3.719,2.242)and(3.659,2.161) + ..(3.617,2) + --(3.07,0) + ..controls(2.341,0.005)and(1.742,0.008) + ..(1.273,0.008) + ..controls(1.018,0.008)and(0.664,0.005) + ..(0.211,0) + ..controls(0.263,0.255)and(0.38,0.786) + ..(0.563,1.594) + ..controls(0.651,1.974)and(0.742,2.406) + ..(0.836,2.891) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((2.4u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(67, 10FX#,if true_size: 11.234FY#, 0.125FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((1.867,10.664) + --(7.547,10.664) + ..controls(7.943,10.664)and(8.189,10.654) + ..(8.285,10.633) + ..controls(8.382,10.612)and(8.5,10.547) + ..(8.641,10.438) + ..controls(8.813,10.302)and(8.936,10.133) + ..(9.012,9.93) + ..controls(9.087,9.727)and(9.125,9.456) + ..(9.125,9.117) + ..controls(9.125,8.69)and(9.061,8.374) + ..(8.934,8.168) + ..controls(8.806,7.962)and(8.591,7.833) + ..(8.289,7.781) + ..controls(8.169,7.766)and(8.109,7.711) + ..(8.109,7.617) + ..controls(8.109,7.565)and(8.115,7.44) + ..(8.125,7.242) + --(8.391,2.664) + ..controls(8.401,2.508)and(8.406,2.276) + ..(8.406,1.969) + ..controls(8.406,1.464)and(8.378,1.087) + ..(8.32,0.84) + ..controls(8.263,0.592)and(8.159,0.388) + ..(8.008,0.227) + ..controls(7.784,-0.008)and(7.536,-0.125) + ..(7.266,-0.125) + ..controls(7.089,-0.125)and(7,-0.029) + ..(7,0.164) + ..controls(7,0.174)and(7.01,0.362) + ..(7.031,0.727) + --(7.359,7.008) + ..controls(7.375,7.32)and(7.383,7.513) + ..(7.383,7.586) + ..controls(7.383,7.669)and(7.362,7.717) + ..(7.32,7.73) + ..controls(7.279,7.743)and(7.135,7.75) + ..(6.891,7.75) + --(1.867,7.75) + ..controls(1.477,7.75)and(1.173,7.785) + ..(0.957,7.855) + ..controls(0.741,7.926)and(0.547,8.052) + ..(0.375,8.234) + ..controls(0.141,8.484)and(0.023,8.875) + ..(0.023,9.406) + ..controls(0.023,10.01)and(0.148,10.474) + ..(0.398,10.797) + ..controls(0.622,11.089)and(0.888,11.234) + ..(1.195,11.234) + ..controls(1.315,11.234)and(1.375,11.188) + ..(1.375,11.094) + ..controls(1.375,11.073)and(1.372,11.052) + ..(1.367,11.031) + ..controls(1.357,10.927)and(1.352,10.854) + ..(1.352,10.813) + ..controls(1.352,10.745)and(1.378,10.703) + ..(1.43,10.688) + ..controls(1.482,10.672)and(1.628,10.664) + ..(1.867,10.664) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((4.9u,0.475h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(68, 10.766FX#,if true_size: 11.211FY#, 0.008FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((8.18,0) + --(8.18,7.711) + ..controls(8.174,7.779)and(8.141,7.813) + ..(8.078,7.813) + --(2.797,7.813) + ..controls(2.302,7.813)and(1.922,7.872) + ..(1.656,7.992) + ..controls(1.422,8.096)and(1.234,8.283) + ..(1.094,8.551) + ..controls(0.953,8.819)and(0.883,9.12) + ..(0.883,9.453) + ..controls(0.883,10.104)and(1.052,10.596) + ..(1.391,10.93) + ..controls(1.578,11.117)and(1.776,11.211) + ..(1.984,11.211) + ..controls(2.036,11.211)and(2.07,11.174) + ..(2.086,11.102) + ..controls(2.128,10.862)and(2.174,10.714) + ..(2.227,10.656) + ..controls(2.279,10.599)and(2.391,10.57) + ..(2.563,10.57) + --(8.539,10.57) + ..controls(9.456,10.57)and(9.914,10.117) + ..(9.914,9.211) + ..controls(9.914,8.852)and(9.841,8.529) + ..(9.695,8.242) + ..controls(9.596,8.034)and(9.388,7.891) + ..(9.07,7.813) + ..controls(8.935,7.776)and(8.867,7.703) + ..(8.867,7.594) + ..controls(8.867,7.542)and(8.87,7.482) + ..(8.875,7.414) + --(9.336,1.898) + ..controls(9.357,1.664)and(9.367,1.5) + ..(9.367,1.406) + ..controls(9.367,1)and(9.268,0.663) + ..(9.07,0.395) + ..controls(8.872,0.126)and(8.622,-0.008) + ..(8.32,-0.008) + ..controls(8.294,-0.008)and(8.247,-0.005) + ..(8.18,0) + --cycle) xscaled FX yscaled FY; + fill((0.852,0) + ..controls(1.008,0.432)and(1.109,0.852) + ..(1.156,1.258) + ..controls(1.203,1.664)and(1.227,2.318) + ..(1.227,3.219) + ..controls(1.227,3.786)and(1.24,4.165) + ..(1.266,4.355) + ..controls(1.292,4.546)and(1.357,4.747) + ..(1.461,4.961) + ..controls(1.565,5.18)and(1.694,5.367) + ..(1.848,5.523) + ..controls(2.001,5.68)and(2.133,5.758) + ..(2.242,5.758) + ..controls(2.31,5.758)and(2.378,5.734) + ..(2.445,5.688) + ..controls(2.513,5.641)and(2.547,5.594) + ..(2.547,5.547) + ..controls(2.547,5.516)and(2.529,5.471) + ..(2.492,5.414) + ..controls(2.346,5.195)and(2.253,5.025) + ..(2.211,4.902) + ..controls(2.169,4.78)and(2.148,4.609) + ..(2.148,4.391) + ..controls(2.148,4.161)and(2.206,3.75) + ..(2.32,3.156) + ..controls(2.419,2.656)and(2.469,2.229) + ..(2.469,1.875) + ..controls(2.469,1.24)and(2.323,0.76) + ..(2.031,0.438) + ..controls(1.771,0.141)and(1.456,-0.008) + ..(1.086,-0.008) + --(0.945,0) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((5.8u,0.475h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(69, 5.094FX#,if true_size: 11.25FY#, 0.117FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((3.844,8.719) + --(3.867,1.672) + ..controls(3.872,1.135)and(3.773,0.677) + ..(3.57,0.297) + ..controls(3.424,0.021)and(3.271,-0.117) + ..(3.109,-0.117) + ..controls(3.005,-0.117)and(2.941,-0.076) + ..(2.918,0.008) + ..controls(2.895,0.091)and(2.883,0.315) + ..(2.883,0.68) + --(2.883,3.617) + ..controls(2.883,4.091)and(2.898,4.559) + ..(2.93,5.02) + ..controls(2.961,5.48)and(3.005,5.927) + ..(3.063,6.359) + ..controls(3.109,6.672)and(3.133,6.932) + ..(3.133,7.141) + ..controls(3.133,7.359)and(3.07,7.536) + ..(2.945,7.672) + ..controls(2.82,7.807)and(2.654,7.875) + ..(2.445,7.875) + ..controls(2.336,7.875)and(2.208,7.862) + ..(2.063,7.836) + ..controls(1.833,7.794)and(1.672,7.773) + ..(1.578,7.773) + ..controls(1.172,7.773)and(0.823,7.974) + ..(0.531,8.375) + ..controls(0.318,8.672)and(0.211,9.005) + ..(0.211,9.375) + ..controls(0.211,9.807)and(0.306,10.228) + ..(0.496,10.637) + ..controls(0.686,11.046)and(0.88,11.25) + ..(1.078,11.25) + ..controls(1.177,11.25)and(1.26,11.174) + ..(1.328,11.023) + ..controls(1.438,10.805)and(1.628,10.695) + ..(1.898,10.695) + ..controls(1.987,10.695)and(2.078,10.698) + ..(2.172,10.703) + ..controls(2.214,10.703)and(2.247,10.703) + ..(2.273,10.703) + ..controls(2.664,10.703)and(2.984,10.589) + ..(3.234,10.359) + ..controls(3.641,9.99)and(3.844,9.443) + ..(3.844,8.719) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((1.9u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(70, 5.039FX#,if true_size: 11.305FY#, 0.102FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((4.242,7.234) + ..controls(3.872,7.573)and(3.568,7.742) + ..(3.328,7.742) + ..controls(3.161,7.742)and(3.029,7.678) + ..(2.93,7.551) + ..controls(2.831,7.423)and(2.781,7.25) + ..(2.781,7.031) + ..controls(2.781,6.76)and(2.803,6.503) + ..(2.848,6.258) + ..controls(2.892,6.013)and(3.044,5.289) + ..(3.305,4.086) + ..controls(3.409,3.607)and(3.461,3.086) + ..(3.461,2.523) + ..controls(3.461,1.883)and(3.359,1.208) + ..(3.156,0.5) + ..controls(3.094,0.281)and(3.022,0.126) + ..(2.941,0.035) + ..controls(2.861,-0.056)and(2.758,-0.102) + ..(2.633,-0.102) + ..controls(2.388,-0.102)and(2.266,0.018) + ..(2.266,0.258) + ..controls(2.266,0.326)and(2.279,0.411) + ..(2.305,0.516) + ..controls(2.357,0.771)and(2.383,1.008) + ..(2.383,1.227) + ..controls(2.383,1.695)and(2.26,2.411) + ..(2.016,3.375) + ..controls(1.776,4.333)and(1.656,5.01) + ..(1.656,5.406) + ..controls(1.656,6.047)and(1.857,6.755) + ..(2.258,7.531) + ..controls(2.279,7.573)and(2.289,7.607) + ..(2.289,7.633) + ..controls(2.289,7.695)and(2.221,7.734) + ..(2.086,7.75) + ..controls(1.758,7.792)and(1.451,7.885) + ..(1.164,8.031) + ..controls(0.742,8.25)and(0.531,8.708) + ..(0.531,9.406) + ..controls(0.531,9.953)and(0.641,10.422) + ..(0.859,10.813) + ..controls(1.036,11.141)and(1.211,11.305) + ..(1.383,11.305) + ..controls(1.435,11.305)and(1.474,11.29) + ..(1.5,11.262) + ..controls(1.526,11.233)and(1.589,11.133) + ..(1.688,10.961) + ..controls(1.755,10.841)and(1.863,10.763) + ..(2.012,10.727) + ..controls(2.16,10.69)and(2.503,10.659) + ..(3.039,10.633) + ..controls(3.633,10.607)and(4.094,10.409) + ..(4.422,10.039) + ..controls(4.693,9.732)and(4.828,9.365) + ..(4.828,8.938) + ..controls(4.828,8.365)and(4.633,7.797) + ..(4.242,7.234) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((0.5u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(71, 10.734FX#,if true_size: 11.07FY#, 0.094FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((3.109,7.75) + ..controls(2.458,7.391)and(2.133,6.677) + ..(2.133,5.609) + ..controls(2.133,5.323)and(2.201,4.75) + ..(2.336,3.891) + ..controls(2.451,3.161)and(2.508,2.521) + ..(2.508,1.969) + ..controls(2.508,1.266)and(2.378,0.75) + ..(2.117,0.422) + ..controls(2.008,0.276)and(1.855,0.154) + ..(1.66,0.055) + ..controls(1.465,-0.044)and(1.286,-0.094) + ..(1.125,-0.094) + ..controls(0.974,-0.094)and(0.898,-0.036) + ..(0.898,0.078) + ..controls(0.898,0.167)and(0.932,0.284) + ..(1,0.43) + ..controls(1.073,0.586)and(1.139,0.906) + ..(1.199,1.391) + ..controls(1.259,1.875)and(1.289,2.339) + ..(1.289,2.781) + ..controls(1.289,2.958)and(1.271,3.409) + ..(1.234,4.133) + ..controls(1.219,4.424)and(1.211,4.695) + ..(1.211,4.945) + ..controls(1.211,5.57)and(1.276,6.073) + ..(1.406,6.453) + ..controls(1.536,6.833)and(1.786,7.255) + ..(2.156,7.719) + ..controls(1.75,7.74)and(1.431,7.913) + ..(1.199,8.238) + ..controls(0.967,8.564)and(0.852,9.003) + ..(0.852,9.555) + ..controls(0.852,10.091)and(0.995,10.497) + ..(1.281,10.773) + ..controls(1.495,10.971)and(1.701,11.07) + ..(1.898,11.07) + ..controls(1.966,11.07)and(2.008,11.055) + ..(2.023,11.023) + ..controls(2.039,10.992)and(2.057,10.898) + ..(2.078,10.742) + ..controls(2.094,10.596)and(2.299,10.521) + ..(2.695,10.516) + --(8.477,10.516) + ..controls(8.852,10.516)and(9.09,10.504) + ..(9.191,10.48) + ..controls(9.293,10.457)and(9.404,10.385) + ..(9.523,10.266) + ..controls(9.763,10.031)and(9.883,9.656) + ..(9.883,9.141) + ..controls(9.883,8.682)and(9.82,8.336) + ..(9.695,8.102) + ..controls(9.633,7.987)and(9.557,7.904) + ..(9.469,7.852) + ..controls(9.38,7.799)and(9.224,7.75) + ..(9,7.703) + ..controls(8.891,7.677)and(8.836,7.63) + ..(8.836,7.563) + ..controls(8.836,7.547)and(8.841,7.492) + ..(8.852,7.398) + --(9.328,2.633) + ..controls(9.38,2.096)and(9.406,1.698) + ..(9.406,1.438) + ..controls(9.406,0.995)and(9.346,0.664) + ..(9.227,0.445) + ..controls(9.138,0.289)and(9.014,0.16) + ..(8.855,0.059) + ..controls(8.697,-0.043)and(8.539,-0.094) + ..(8.383,-0.094) + ..controls(8.294,-0.094)and(8.237,-0.069) + ..(8.211,-0.02) + ..controls(8.185,0.03)and(8.172,0.138) + ..(8.172,0.305) + --(8.172,7.398) + --(8.172,7.578) + ..controls(8.172,7.667)and(8.161,7.716) + ..(8.141,7.727) + ..controls(8.12,7.737)and(7.992,7.745) + ..(7.758,7.75) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((5.9u,0.475h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(72, 10.898FX#,if true_size: 11.313FY#, 0FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((8.93,0) + --(1.203,0) + ..controls(1.208,0.224)and(1.211,0.385) + ..(1.211,0.484) + ..controls(1.211,0.854)and(1.156,1.734) + ..(1.047,3.125) + ..controls(1.005,3.677)and(0.984,4.128) + ..(0.984,4.477) + ..controls(0.984,5.555)and(1.315,6.557) + ..(1.977,7.484) + ..controls(2.013,7.542)and(2.031,7.583) + ..(2.031,7.609) + ..controls(2.031,7.646)and(1.88,7.799) + ..(1.578,8.07) + ..controls(1.271,8.341)and(1.117,8.661) + ..(1.117,9.031) + ..controls(1.117,9.891)and(1.552,10.651) + ..(2.422,11.313) + ..controls(2.464,11.026)and(2.533,10.837) + ..(2.629,10.746) + ..controls(2.725,10.655)and(3.049,10.477) + ..(3.602,10.211) + ..controls(4.237,9.904)and(4.555,9.451) + ..(4.555,8.852) + ..controls(4.555,8.284)and(4.273,7.586) + ..(3.711,6.758) + ..controls(3.247,7.107)and(2.94,7.281) + ..(2.789,7.281) + ..controls(2.628,7.281)and(2.449,7.055) + ..(2.254,6.602) + ..controls(2.059,6.148)and(1.961,5.727) + ..(1.961,5.336) + ..controls(1.961,4.914)and(2.007,4.447) + ..(2.098,3.934) + ..controls(2.189,3.421)and(2.297,3.029) + ..(2.422,2.758) + --(8.93,2.758) + ..controls(9.117,3.409)and(9.211,4.13) + ..(9.211,4.922) + ..controls(9.211,5.729)and(9.016,6.385) + ..(8.625,6.891) + ..controls(8.182,7.458)and(7.693,7.742) + ..(7.156,7.742) + ..controls(6.911,7.742)and(6.667,7.663) + ..(6.422,7.504) + ..controls(6.177,7.345)and(5.974,7.133) + ..(5.813,6.867) + ..controls(5.578,6.477)and(5.461,5.958) + ..(5.461,5.313) + ..controls(5.461,5.167)and(5.469,4.99) + ..(5.484,4.781) + --(4.719,4.781) + ..controls(4.714,4.885)and(4.711,4.964) + ..(4.711,5.016) + ..controls(4.711,5.646)and(4.896,6.432) + ..(5.266,7.375) + ..controls(5.563,8.135)and(5.711,8.997) + ..(5.711,9.961) + ..controls(5.711,10.242)and(5.674,10.536) + ..(5.602,10.844) + ..controls(5.872,10.87)and(6.068,10.883) + ..(6.188,10.883) + ..controls(7.12,10.883)and(7.898,10.591) + ..(8.523,10.008) + ..controls(8.956,9.602)and(9.299,8.97) + ..(9.555,8.113) + ..controls(9.81,7.257)and(9.938,6.302) + ..(9.938,5.25) + ..controls(9.938,4.635)and(9.874,3.993) + ..(9.746,3.324) + ..controls(9.618,2.655)and(9.346,1.547) + ..(8.93,0) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((8.2u,0.475h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(73, 5.109FX#,if true_size: 11.273FY#, -5.117FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((2.672,10.703) + ..controls(3.224,10.703)and(3.629,10.497) + ..(3.887,10.086) + ..controls(4.145,9.674)and(4.273,9.026) + ..(4.273,8.141) + ..controls(4.273,7.411)and(4.138,6.555) + ..(3.867,5.57) + ..controls(3.784,5.268)and(3.651,5.117) + ..(3.469,5.117) + ..controls(3.198,5.117)and(3.063,5.19) + ..(3.063,5.336) + ..controls(3.063,5.398)and(3.099,5.516) + ..(3.172,5.688) + ..controls(3.354,6.109)and(3.445,6.539) + ..(3.445,6.977) + ..controls(3.445,7.628)and(2.919,7.935) + ..(1.867,7.898) + ..controls(0.763,7.852)and(0.211,8.331) + ..(0.211,9.336) + ..controls(0.211,9.909)and(0.331,10.409) + ..(0.57,10.836) + ..controls(0.638,10.956)and(0.724,11.059) + ..(0.828,11.145) + ..controls(0.932,11.23)and(1.023,11.273) + ..(1.102,11.273) + ..controls(1.143,11.273)and(1.172,11.259) + ..(1.188,11.23) + ..controls(1.203,11.202)and(1.232,11.112) + ..(1.273,10.961) + ..controls(1.305,10.846)and(1.365,10.77) + ..(1.453,10.73) + ..controls(1.542,10.691)and(1.701,10.672) + ..(1.93,10.672) + ..controls(2.003,10.672)and(2.083,10.674) + ..(2.172,10.68) + ..controls(2.453,10.695)and(2.62,10.703) + ..(2.672,10.703) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((2u,0.55h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(74, 9.922FX#,if true_size: 11.203FY#, 3.813FY# + else: cap_height#,desc_depth# fi); + "Hebrew letter" & tmp_string; + fill((1.828,10.664) + --(7.492,10.664) + --(7.742,10.672) + --(7.914,10.672) + ..controls(8.268,10.672)and(8.549,10.556) + ..(8.758,10.324) + ..controls(8.966,10.092)and(9.07,9.779) + ..(9.07,9.383) + ..controls(9.07,9.003)and(9.003,8.664) + ..(8.867,8.367) + ..controls(8.779,8.174)and(8.586,8.003) + ..(8.289,7.852) + ..controls(8.154,7.789)and(8.065,7.727) + ..(8.023,7.664) + ..controls(7.982,7.602)and(7.961,7.505) + ..(7.961,7.375) + ..controls(7.961,7.276)and(7.964,7.182) + ..(7.969,7.094) + --(8.492,-0.898) + ..controls(8.503,-1.06)and(8.508,-1.201) + ..(8.508,-1.32) + ..controls(8.508,-1.924)and(8.453,-2.409) + ..(8.344,-2.773) + ..controls(8.245,-3.102)and(8.092,-3.357) + ..(7.887,-3.539) + ..controls(7.681,-3.721)and(7.443,-3.813) + ..(7.172,-3.813) + ..controls(6.958,-3.813)and(6.857,-3.724) + ..(6.867,-3.547) + --(6.883,-3.281) + --(7.344,7.234) + ..controls(7.349,7.38)and(7.352,7.461) + ..(7.352,7.477) + ..controls(7.352,7.612)and(7.298,7.702) + ..(7.191,7.746) + ..controls(7.085,7.79)and(6.87,7.813) + ..(6.547,7.813) + --(1.828,7.813) + ..controls(1.135,7.813)and(0.664,7.958) + ..(0.414,8.25) + ..controls(0.138,8.578)and(0,9.026) + ..(0,9.594) + ..controls(0,10.115)and(0.125,10.516) + ..(0.375,10.797) + ..controls(0.609,11.068)and(0.839,11.203) + ..(1.063,11.203) + ..controls(1.135,11.203)and(1.214,11.109) + ..(1.297,10.922) + ..controls(1.344,10.813)and(1.4,10.742) + ..(1.465,10.711) + ..controls(1.53,10.68)and(1.651,10.664) + ..(1.828,10.664) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((5.2u,0.475h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(75, 10.438FX#,if true_size: 11.305FY#, 0FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((8.313,0) + --(0.211,0) + ..controls(0.268,0.224)and(0.432,0.708) + ..(0.703,1.453) + ..controls(0.76,1.583)and(0.904,2.055) + ..(1.133,2.867) + --(8.086,2.867) + ..controls(8.336,2.867)and(8.495,2.895) + ..(8.563,2.949) + ..controls(8.63,3.004)and(8.664,3.135) + ..(8.664,3.344) + ..controls(8.664,4.786)and(8.492,5.859) + ..(8.148,6.563) + ..controls(7.945,6.984)and(7.63,7.303) + ..(7.203,7.52) + ..controls(6.776,7.736)and(6.25,7.844) + ..(5.625,7.844) + --(2.531,7.844) + ..controls(1.938,7.844)and(1.536,7.982) + ..(1.328,8.258) + ..controls(1.094,8.56)and(0.977,8.99) + ..(0.977,9.547) + ..controls(0.977,10.042)and(1.076,10.484) + ..(1.273,10.875) + ..controls(1.419,11.161)and(1.57,11.305) + ..(1.727,11.305) + ..controls(1.81,11.305)and(1.93,11.177) + ..(2.086,10.922) + ..controls(2.18,10.76)and(2.461,10.674) + ..(2.93,10.664) + --(5.484,10.664) + ..controls(5.974,10.664)and(6.324,10.647) + ..(6.535,10.613) + ..controls(6.746,10.579)and(6.984,10.5) + ..(7.25,10.375) + ..controls(7.88,10.083)and(8.372,9.589) + ..(8.727,8.891) + ..controls(8.945,8.464)and(9.102,7.901) + ..(9.195,7.203) + ..controls(9.289,6.505)and(9.336,5.565) + ..(9.336,4.383) + --(9.328,2.836) + ..controls(9.328,2.794)and(9.333,2.643) + ..(9.344,2.383) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((5.5u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(76, 9.586FX#,if true_size: 15.555FY#, 0.133FY# + else: 1.4cap_height#,0 fi); +"Hebrew letter" & tmp_string; +fill((2.539,10.664) + --(7.047,10.664) + ..controls(7.38,10.664)and(7.647,10.62) + ..(7.848,10.531) + ..controls(8.048,10.443)and(8.221,10.292) + ..(8.367,10.078) + ..controls(8.497,9.891)and(8.578,9.72) + ..(8.609,9.566) + ..controls(8.641,9.413)and(8.677,9.021) + ..(8.719,8.391) + --(8.891,6.172) + ..controls(8.896,6.099)and(8.898,6.018) + ..(8.898,5.93) + ..controls(8.898,5.305)and(8.714,4.74) + ..(8.344,4.234) + ..controls(8.109,3.906)and(7.497,3.354) + ..(6.508,2.578) + ..controls(5.628,1.87)and(5.018,1.219) + ..(4.68,0.625) + ..controls(4.508,0.328)and(4.357,0.128) + ..(4.227,0.023) + ..controls(4.096,-0.081)and(3.93,-0.133) + ..(3.727,-0.133) + ..controls(3.206,-0.133)and(2.945,0.141) + ..(2.945,0.688) + ..controls(2.945,1.068)and(3.112,1.445) + ..(3.445,1.82) + ..controls(3.721,2.128)and(4.133,2.43) + ..(4.68,2.727) + ..controls(4.768,2.773)and(5.443,3.102) + ..(6.703,3.711) + ..controls(7.594,4.143)and(8.039,4.813) + ..(8.039,5.719) + ..controls(8.039,6.229)and(7.909,6.701) + ..(7.648,7.133) + ..controls(7.487,7.404)and(7.283,7.598) + ..(7.035,7.715) + ..controls(6.788,7.832)and(6.456,7.891) + ..(6.039,7.891) + --(1.477,7.891) + ..controls(1.159,7.891)and(0.945,7.902) + ..(0.836,7.926) + ..controls(0.727,7.949)and(0.625,8.008) + ..(0.531,8.102) + ..controls(0.318,8.305)and(0.211,8.695) + ..(0.211,9.273) + ..controls(0.211,10.336)and(0.411,11.346) + ..(0.813,12.305) + ..controls(0.932,12.586)and(1.159,12.982) + ..(1.492,13.492) + ..controls(1.555,13.586)and(1.586,13.672) + ..(1.586,13.75) + ..controls(1.586,13.823)and(1.497,13.992) + ..(1.32,14.258) + ..controls(1.201,14.44)and(1.141,14.617) + ..(1.141,14.789) + ..controls(1.141,14.992)and(1.201,15.171) + ..(1.32,15.324) + ..controls(1.44,15.478)and(1.581,15.555) + ..(1.742,15.555) + ..controls(1.924,15.555)and(2.13,15.438) + ..(2.359,15.203) + ..controls(2.589,14.969)and(2.703,14.758) + ..(2.703,14.57) + ..controls(2.703,14.398)and(2.665,14.242) + ..(2.59,14.102) + ..controls(2.514,13.961)and(2.276,13.607) + ..(1.875,13.039) + ..controls(1.667,12.742)and(1.563,12.339) + ..(1.563,11.828) + ..controls(1.563,11.229)and(1.708,10.865) + ..(2,10.734) + ..controls(2.109,10.688)and(2.289,10.664) + ..(2.539,10.664) + --cycle) xscaled FX yscaled FY; +if dagesh: adjust_dot0((5.25u,0.5cap_height),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(77, 11.016FX#,if true_size: 11.297FY#, 0FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((9.734,0) + --(1.281,0) + --(1.281,5.336) + ..controls(1.281,5.612)and(1.302,5.883) + ..(1.344,6.148) + ..controls(1.385,6.414)and(1.438,6.607) + ..(1.5,6.727) + ..controls(1.557,6.841)and(1.689,7.012) + ..(1.895,7.238) + ..controls(2.1,7.465)and(2.271,7.628) + ..(2.406,7.727) + ..controls(2.453,7.758)and(2.477,7.781) + ..(2.477,7.797) + ..controls(2.477,7.813)and(2.445,7.836) + ..(2.383,7.867) + ..controls(2.018,8.034)and(1.754,8.242) + ..(1.59,8.492) + ..controls(1.426,8.742)and(1.344,9.057) + ..(1.344,9.438) + ..controls(1.344,9.964)and(1.487,10.417) + ..(1.773,10.797) + ..controls(1.872,10.927)and(1.986,11.043) + ..(2.113,11.145) + ..controls(2.241,11.246)and(2.341,11.297) + ..(2.414,11.297) + ..controls(2.466,11.297)and(2.503,11.279) + ..(2.523,11.242) + ..controls(2.544,11.206)and(2.576,11.109) + ..(2.617,10.953) + ..controls(2.648,10.833)and(2.701,10.755) + ..(2.773,10.719) + ..controls(2.846,10.682)and(2.987,10.664) + ..(3.195,10.664) + --(7.648,10.664) + ..controls(8.013,10.664)and(8.31,10.613) + ..(8.539,10.512) + ..controls(8.768,10.41)and(8.974,10.237) + ..(9.156,9.992) + ..controls(9.563,9.404)and(9.755,8.583) + ..(9.734,7.531) + --cycle) xscaled FX yscaled FY; + fill((3.242,7.875) + ..controls(2.898,7.531)and(2.668,7.217) + ..(2.551,6.934) + ..controls(2.434,6.65)and(2.375,6.273) + ..(2.375,5.805) + --(2.375,3.172) + ..controls(2.375,3.047)and(2.398,2.965) + ..(2.445,2.926) + ..controls(2.492,2.887)and(2.594,2.867) + ..(2.75,2.867) + --(8.711,2.867) + ..controls(8.883,2.867)and(8.986,2.875) + ..(9.02,2.891) + ..controls(9.053,2.906)and(9.07,2.951) + ..(9.07,3.023) + --(9.07,6.297) + ..controls(9.07,6.896)and(8.96,7.309) + ..(8.738,7.535) + ..controls(8.517,7.762)and(8.115,7.875) + ..(7.531,7.875) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((6.35u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(78, 10.672FX#,if true_size: 11.32FY#, 0.188FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((8.93,0) + --(3.445,0) + ..controls(3.753,0.708)and(3.906,1.359) + ..(3.906,1.953) + ..controls(3.906,2.141)and(3.891,2.404) + ..(3.859,2.742) + --(8.5,2.742) + ..controls(8.76,2.742)and(8.904,2.755) + ..(8.93,2.781) + ..controls(8.987,2.828)and(9.016,3.026) + ..(9.016,3.375) + ..controls(9.016,4.266)and(8.906,5.065) + ..(8.688,5.773) + ..controls(8.474,6.456)and(8.06,6.992) + ..(7.445,7.383) + ..controls(6.914,7.716)and(6.305,7.883) + ..(5.617,7.883) + ..controls(4.513,7.883)and(3.633,7.477) + ..(2.977,6.664) + ..controls(2.732,6.357)and(2.54,6.013) + ..(2.402,5.633) + ..controls(2.264,5.253)and(2.195,4.872) + ..(2.195,4.492) + --(2.266,2.469) + ..controls(2.266,1.797)and(2.23,1.309) + ..(2.16,1.004) + ..controls(2.09,0.699)and(1.953,0.438) + ..(1.75,0.219) + ..controls(1.505,-0.052)and(1.263,-0.188) + ..(1.023,-0.188) + ..controls(0.872,-0.188)and(0.797,-0.122) + ..(0.797,0.008) + ..controls(0.797,0.055)and(0.813,0.122) + ..(0.844,0.211) + ..controls(0.995,0.695)and(1.076,1.635) + ..(1.086,3.031) + ..controls(1.102,4.063)and(1.174,4.779) + ..(1.305,5.18) + ..controls(1.398,5.445)and(1.586,5.793) + ..(1.867,6.223) + ..controls(2.148,6.652)and(2.427,7.013) + ..(2.703,7.305) + ..controls(2.745,7.352)and(2.766,7.385) + ..(2.766,7.406) + ..controls(2.766,7.453)and(2.552,7.549) + ..(2.125,7.695) + ..controls(1.75,7.831)and(1.43,8.115) + ..(1.164,8.547) + ..controls(1.018,8.786)and(0.945,9.07) + ..(0.945,9.398) + ..controls(0.945,9.794)and(1.02,10.112) + ..(1.168,10.352) + ..controls(1.316,10.591)and(1.638,10.914) + ..(2.133,11.32) + ..controls(2.201,11.112)and(2.303,10.943) + ..(2.441,10.813) + ..controls(2.579,10.682)and(2.797,10.557) + ..(3.094,10.438) + ..controls(3.531,10.255)and(3.819,10.083) + ..(3.957,9.922) + ..controls(4.095,9.76)and(4.164,9.516) + ..(4.164,9.188) + ..controls(4.164,9.021)and(4.12,8.745) + ..(4.031,8.359) + ..controls(4.026,8.339)and(4.023,8.318) + ..(4.023,8.297) + ..controls(4.023,8.25)and(4.052,8.227) + ..(4.109,8.227) + ..controls(4.214,8.227)and(4.344,8.271) + ..(4.5,8.359) + ..controls(4.786,8.521)and(4.986,8.715) + ..(5.098,8.941) + ..controls(5.21,9.168)and(5.266,9.495) + ..(5.266,9.922) + ..controls(5.266,10.26)and(5.219,10.602) + ..(5.125,10.945) + ..controls(5.443,10.992)and(5.667,11.016) + ..(5.797,11.016) + ..controls(6.63,11.016)and(7.378,10.719) + ..(8.039,10.125) + ..controls(8.878,9.375)and(9.388,8.255) + ..(9.57,6.766) + ..controls(9.648,6.125)and(9.688,5.318) + ..(9.688,4.344) + ..controls(9.688,2.786)and(9.435,1.339) + ..(8.93,0) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((6.25u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(79, 5.414FX#,if true_size: 11.344FY#, 3.641FY# + else: cap_height#,desc_depth# fi); + "Hebrew letter" & tmp_string; + fill((2.664,-2.508) + --(2.664,0.836) + --(2.656,1.578) + --(2.648,2.906) + --(2.633,4.18) + ..controls(2.633,5.326)and(2.805,6.271) + ..(3.148,7.016) + ..controls(3.258,7.255)and(3.313,7.409) + ..(3.313,7.477) + ..controls(3.313,7.565)and(3.271,7.63) + ..(3.188,7.672) + ..controls(3.104,7.719)and(2.661,7.807) + ..(1.859,7.938) + ..controls(0.766,8.115)and(0.219,8.62) + ..(0.219,9.453) + ..controls(0.219,9.974)and(0.372,10.44) + ..(0.68,10.852) + ..controls(0.924,11.18)and(1.135,11.344) + ..(1.313,11.344) + ..controls(1.385,11.344)and(1.43,11.331) + ..(1.445,11.305) + ..controls(1.461,11.279)and(1.479,11.193) + ..(1.5,11.047) + ..controls(1.563,10.828)and(1.859,10.672) + ..(2.391,10.578) + ..controls(2.87,10.49)and(3.219,10.41) + ..(3.438,10.34) + ..controls(3.656,10.27)and(3.833,10.177) + ..(3.969,10.063) + ..controls(4.281,9.813)and(4.438,9.435) + ..(4.438,8.93) + ..controls(4.438,8.503)and(4.294,7.997) + ..(4.008,7.414) + ..controls(3.732,6.857)and(3.563,6.473) + ..(3.5,6.262) + ..controls(3.438,6.051)and(3.406,5.768) + ..(3.406,5.414) + ..controls(3.406,4.945)and(3.508,4.021) + ..(3.711,2.641) + ..controls(3.982,0.828)and(4.117,-0.49) + ..(4.117,-1.313) + ..controls(4.117,-1.917)and(4.004,-2.456) + ..(3.777,-2.93) + ..controls(3.551,-3.404)and(3.292,-3.641) + ..(3,-3.641) + ..controls(2.766,-3.641)and(2.648,-3.461) + ..(2.648,-3.102) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((1.4u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(80, 6.008FX#,if true_size: 11.367FY#, 0FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((4.359,0) + --(0.227,0) + ..controls(0.216,0.151)and(0.211,0.263) + ..(0.211,0.336) + ..controls(0.211,0.758)and(0.404,1.625) + ..(0.789,2.938) + --(3.5,2.938) + ..controls(3.495,3.052)and(3.492,3.146) + ..(3.492,3.219) + ..controls(3.492,3.802)and(3.612,5.016) + ..(3.852,6.859) + ..controls(3.867,6.979)and(3.875,7.089) + ..(3.875,7.188) + ..controls(3.875,7.38)and(3.823,7.536) + ..(3.719,7.656) + ..controls(3.615,7.776)and(3.477,7.836) + ..(3.305,7.836) + ..controls(3.211,7.836)and(3.068,7.826) + ..(2.875,7.805) + ..controls(2.75,7.789)and(2.628,7.781) + ..(2.508,7.781) + ..controls(1.987,7.781)and(1.599,7.94) + ..(1.344,8.258) + ..controls(1.109,8.555)and(0.992,8.935) + ..(0.992,9.398) + ..controls(0.992,9.935)and(1.115,10.422) + ..(1.359,10.859) + ..controls(1.547,11.198)and(1.763,11.367) + ..(2.008,11.367) + ..controls(2.143,11.367)and(2.219,11.279) + ..(2.234,11.102) + ..controls(2.25,10.898)and(2.29,10.781) + ..(2.355,10.75) + ..controls(2.421,10.719)and(2.68,10.69) + ..(3.133,10.664) + ..controls(4.143,10.607)and(4.648,10.049) + ..(4.648,8.992) + ..controls(4.648,8.768)and(4.628,8.44) + ..(4.586,8.008) + ..controls(4.529,7.456)and(4.5,7.042) + ..(4.5,6.766) + ..controls(4.5,6.427)and(4.531,5.906) + ..(4.594,5.203) + ..controls(4.714,3.932)and(4.773,3.112) + ..(4.773,2.742) + ..controls(4.773,1.674)and(4.635,0.76) + ..(4.359,0) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((2.5u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(81, 9.891FX#,if true_size: 11.227FY#, 0.227FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((1.891,7.758) + ..controls(1.49,7.867)and(1.214,8.036) + ..(1.063,8.266) + ..controls(0.88,8.542)and(0.789,8.878) + ..(0.789,9.273) + ..controls(0.789,9.831)and(0.982,10.336) + ..(1.367,10.789) + ..controls(1.612,11.081)and(1.831,11.227) + ..(2.023,11.227) + ..controls(2.159,11.227)and(2.234,11.133) + ..(2.25,10.945) + ..controls(2.26,10.826)and(2.29,10.749) + ..(2.34,10.715) + ..controls(2.389,10.681)and(2.5,10.664) + ..(2.672,10.664) + --(6.133,10.664) + ..controls(6.44,10.664)and(6.664,10.642) + ..(6.805,10.598) + ..controls(6.945,10.553)and(7.12,10.451) + ..(7.328,10.289) + ..controls(7.891,9.857)and(8.336,9.203) + ..(8.664,8.328) + ..controls(8.992,7.453)and(9.156,6.479) + ..(9.156,5.406) + ..controls(9.156,4.052)and(8.917,2.88) + ..(8.438,1.891) + ..controls(8.068,1.125)and(7.624,0.581) + ..(7.105,0.258) + ..controls(6.587,-0.065)and(5.896,-0.227) + ..(5.031,-0.227) + ..controls(4.604,-0.227)and(4.173,-0.19) + ..(3.738,-0.117) + ..controls(3.303,-0.044)and(2.974,0.047) + ..(2.75,0.156) + ..controls(2.198,0.422)and(1.74,0.935) + ..(1.375,1.695) + ..controls(0.958,2.565)and(0.75,3.51) + ..(0.75,4.531) + ..controls(0.75,5.224)and(0.836,5.813) + ..(1.008,6.297) + ..controls(1.18,6.781)and(1.474,7.268) + ..(1.891,7.758) + --cycle) xscaled FX yscaled FY; + fill((6.398,7.758) + --(3.633,7.758) + ..controls(3.055,7.758)and(2.552,7.484) + ..(2.125,6.938) + ..controls(1.927,6.682)and(1.768,6.387) + ..(1.648,6.051) + ..controls(1.529,5.715)and(1.469,5.396) + ..(1.469,5.094) + ..controls(1.469,4.333)and(1.763,3.716) + ..(2.352,3.242) + ..controls(2.628,3.023)and(2.945,2.871) + ..(3.305,2.785) + ..controls(3.664,2.699)and(4.167,2.656) + ..(4.813,2.656) + ..controls(5.5,2.656)and(6.043,2.693) + ..(6.441,2.766) + ..controls(6.84,2.839)and(7.177,2.961) + ..(7.453,3.133) + ..controls(7.781,3.346)and(8.039,3.65) + ..(8.227,4.043) + ..controls(8.414,4.436)and(8.508,4.88) + ..(8.508,5.375) + ..controls(8.508,6.302)and(8.198,6.99) + ..(7.578,7.438) + ..controls(7.406,7.563)and(7.238,7.647) + ..(7.074,7.691) + ..controls(6.91,7.736)and(6.685,7.758) + ..(6.398,7.758) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((5.55u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(82, 9.602FX#,if true_size: 11.297FY#, 0.305FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((0.68,2.828) + --(2.336,2.977) + ..controls(2.737,3.008)and(2.98,3.039) + ..(3.066,3.07) + ..controls(3.152,3.102)and(3.195,3.172) + ..(3.195,3.281) + ..controls(3.195,3.453)and(3.138,3.719) + ..(3.023,4.078) + ..controls(2.945,4.313)and(2.878,4.493) + ..(2.82,4.621) + ..controls(2.763,4.749)and(2.599,5.078) + ..(2.328,5.609) + ..controls(2.198,5.87)and(2.133,6.154) + ..(2.133,6.461) + ..controls(2.133,6.68)and(2.211,7.034) + ..(2.367,7.523) + ..controls(2.393,7.602)and(2.406,7.669) + ..(2.406,7.727) + ..controls(2.406,7.815)and(2.378,7.88) + ..(2.32,7.922) + ..controls(2.263,7.964)and(2.117,8.034) + ..(1.883,8.133) + ..controls(1.674,8.211)and(1.509,8.365) + ..(1.387,8.594) + ..controls(1.264,8.823)and(1.203,9.083) + ..(1.203,9.375) + ..controls(1.203,9.76)and(1.318,10.198) + ..(1.547,10.688) + ..controls(1.729,11.094)and(1.906,11.297) + ..(2.078,11.297) + ..controls(2.125,11.297)and(2.216,11.219) + ..(2.352,11.063) + ..controls(2.456,10.932)and(2.771,10.794) + ..(3.297,10.648) + ..controls(3.833,10.503)and(4.197,10.324) + ..(4.387,10.113) + ..controls(4.577,9.902)and(4.672,9.565) + ..(4.672,9.102) + ..controls(4.672,8.732)and(4.599,8.365) + ..(4.453,8) + ..controls(4.391,7.833)and(4.352,7.729) + ..(4.336,7.688) + ..controls(4.284,7.542)and(4.208,7.469) + ..(4.109,7.469) + ..controls(4.031,7.469)and(3.833,7.526) + ..(3.516,7.641) + ..controls(3.406,7.677)and(3.31,7.695) + ..(3.227,7.695) + ..controls(3.122,7.695)and(3.033,7.667) + ..(2.957,7.609) + ..controls(2.882,7.552)and(2.844,7.482) + ..(2.844,7.398) + ..controls(2.844,7.185)and(3.141,6.422) + ..(3.734,5.109) + ..controls(3.849,4.854)and(3.904,4.693) + ..(3.898,4.625) + --(3.836,3.359) + ..controls(3.836,3.313)and(3.867,3.268) + ..(3.93,3.227) + ..controls(3.992,3.185)and(4.065,3.164) + ..(4.148,3.164) + ..controls(4.367,3.164)and(4.699,3.202) + ..(5.145,3.277) + ..controls(5.59,3.353)and(5.88,3.422) + ..(6.016,3.484) + ..controls(6.432,3.677)and(6.81,4.281) + ..(7.148,5.297) + ..controls(7.398,6.047)and(7.604,6.503) + ..(7.766,6.664) + ..controls(7.833,6.753)and(7.867,6.82) + ..(7.867,6.867) + ..controls(7.867,7.018)and(7.583,7.19) + ..(7.016,7.383) + ..controls(6.578,7.529)and(6.24,7.74) + ..(6,8.016) + ..controls(5.76,8.292)and(5.641,8.607) + ..(5.641,8.961) + ..controls(5.641,9.513)and(5.849,10.057) + ..(6.266,10.594) + ..controls(6.557,10.964)and(6.768,11.148) + ..(6.898,11.148) + ..controls(6.987,11.148)and(7.096,11.031) + ..(7.227,10.797) + ..controls(7.284,10.698)and(7.355,10.626) + ..(7.441,10.582) + ..controls(7.527,10.538)and(7.721,10.469) + ..(8.023,10.375) + ..controls(8.419,10.26)and(8.728,10.082) + ..(8.949,9.84) + ..controls(9.171,9.598)and(9.281,9.32) + ..(9.281,9.008) + ..controls(9.281,8.711)and(9.236,8.435) + ..(9.145,8.18) + ..controls(9.053,7.924)and(8.823,7.419) + ..(8.453,6.664) + ..controls(8.063,5.893)and(7.745,4.505) + ..(7.5,2.5) + ..controls(7.391,1.609)and(7.142,1.023) + ..(6.754,0.742) + ..controls(6.366,0.461)and(5.568,0.292) + ..(4.359,0.234) + ..controls(3.745,0.208)and(3.012,0.141) + ..(2.16,0.031) + ..controls(1.309,-0.078)and(0.625,-0.19) + ..(0.109,-0.305) + ..controls(0.365,0.711)and(0.555,1.755) + ..(0.68,2.828) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((6u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(83, 10.195FX#,if true_size: 11.227FY#, 3.805FY# + else: cap_height#,desc_depth# fi); + "Hebrew letter" & tmp_string; + fill((1.641,7.773) + ..controls(1.224,8.008)and(0.935,8.25) + ..(0.773,8.5) + ..controls(0.612,8.75)and(0.531,9.078) + ..(0.531,9.484) + ..controls(0.531,9.917)and(0.609,10.315) + ..(0.766,10.68) + ..controls(0.922,11.044)and(1.091,11.227) + ..(1.273,11.227) + ..controls(1.32,11.227)and(1.355,11.214) + ..(1.379,11.188) + ..controls(1.402,11.161)and(1.461,11.068) + ..(1.555,10.906) + ..controls(1.669,10.74)and(1.872,10.659) + ..(2.164,10.664) + --(7.039,10.664) + ..controls(7.82,10.706)and(8.305,10.229) + ..(8.492,9.234) + ..controls(8.674,8.177)and(8.792,5.375) + ..(8.844,0.828) + --(8.922,-1.703) + ..controls(8.922,-2.344)and(8.833,-2.828) + ..(8.656,-3.156) + ..controls(8.427,-3.589)and(8.151,-3.805) + ..(7.828,-3.805) + ..controls(7.682,-3.805)and(7.563,-3.727) + ..(7.469,-3.57) + ..controls(7.375,-3.414)and(7.328,-3.216) + ..(7.328,-2.977) + ..controls(7.328,-2.919)and(7.344,-2.727) + ..(7.375,-2.398) + --(7.984,6.617) + ..controls(8,6.883)and(8.008,7.055) + ..(8.008,7.133) + ..controls(8.008,7.398)and(7.951,7.572) + ..(7.836,7.652) + ..controls(7.721,7.733)and(7.469,7.773) + ..(7.078,7.773) + --(3.75,7.773) + ..controls(3.13,7.773)and(2.711,7.734) + ..(2.492,7.656) + ..controls(2.19,7.547)and(2.039,7.339) + ..(2.039,7.031) + ..controls(2.039,6.833)and(2.109,6.701) + ..(2.25,6.633) + ..controls(2.391,6.565)and(2.669,6.531) + ..(3.086,6.531) + ..controls(3.154,6.531)and(3.232,6.534) + ..(3.32,6.539) + ..controls(3.56,6.544)and(3.742,6.547) + ..(3.867,6.547) + ..controls(4.279,6.547)and(4.557,6.393) + ..(4.703,6.086) + ..controls(4.807,5.867)and(4.859,5.633) + ..(4.859,5.383) + ..controls(4.859,5.112)and(4.798,4.866) + ..(4.676,4.645) + ..controls(4.553,4.423)and(4.393,4.268) + ..(4.195,4.18) + ..controls(3.961,4.081)and(3.589,4.031) + ..(3.078,4.031) + ..controls(2.964,4.031)and(2.852,4.034) + ..(2.742,4.039) + ..controls(2.404,4.055)and(2.198,4.063) + ..(2.125,4.063) + ..controls(1.901,4.063)and(1.732,4.035) + ..(1.617,3.98) + ..controls(1.503,3.926)and(1.352,3.802) + ..(1.164,3.609) + ..controls(1.076,3.526)and(0.971,3.484) + ..(0.852,3.484) + ..controls(0.669,3.484)and(0.578,3.57) + ..(0.578,3.742) + ..controls(0.578,3.81)and(0.591,3.893) + ..(0.617,3.992) + ..controls(0.69,4.299)and(0.727,4.583) + ..(0.727,4.844) + ..controls(0.727,4.885)and(0.724,4.938) + ..(0.719,5) + ..controls(0.703,5.307)and(0.695,5.482) + ..(0.695,5.523) + ..controls(0.695,5.732)and(0.733,5.974) + ..(0.809,6.25) + ..controls(0.884,6.526)and(0.977,6.758) + ..(1.086,6.945) + ..controls(1.122,7.008)and(1.307,7.284) + ..(1.641,7.773) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((7.1u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(84, 10.594FX#,if true_size: 11.258FY#, 0FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((8.68,0) + --(1.141,0) + ..controls(0.979,0)and(0.865,0.03) + ..(0.797,0.09) + ..controls(0.729,0.15)and(0.695,0.255) + ..(0.695,0.406) + ..controls(0.695,0.578)and(0.734,0.784) + ..(0.813,1.023) + --(1.336,2.648) + --(8.961,2.648) + ..controls(8.997,3.289)and(9.016,3.763) + ..(9.016,4.07) + ..controls(9.016,5.852)and(8.523,7.029) + ..(7.539,7.602) + ..controls(7.18,7.815)and(6.617,7.935) + ..(5.852,7.961) + ..controls(5.753,7.966)and(5.198,7.971) + ..(4.188,7.977) + --(3.023,7.977) + ..controls(2.711,7.659)and(2.555,7.341) + ..(2.555,7.023) + ..controls(2.555,6.768)and(2.786,6.641) + ..(3.25,6.641) + --(3.969,6.641) + ..controls(4.328,6.641)and(4.607,6.591) + ..(4.805,6.492) + ..controls(5.159,6.315)and(5.336,5.964) + ..(5.336,5.438) + ..controls(5.336,4.651)and(4.935,4.258) + ..(4.133,4.258) + --(3.461,4.273) + --(2.617,4.273) + ..controls(2.331,4.273)and(2.105,4.221) + ..(1.941,4.117) + ..controls(1.777,4.013)and(1.576,3.797) + ..(1.336,3.469) + --(0.977,3.688) + ..controls(0.997,3.771)and(1.042,3.932) + ..(1.109,4.172) + ..controls(1.141,4.297)and(1.156,4.451) + ..(1.156,4.633) + ..controls(1.156,4.742)and(1.154,4.859) + ..(1.148,4.984) + ..controls(1.148,5.083)and(1.148,5.182) + ..(1.148,5.281) + ..controls(1.148,5.75)and(1.217,6.158) + ..(1.355,6.504) + ..controls(1.493,6.85)and(1.758,7.276) + ..(2.148,7.781) + ..controls(2.19,7.833)and(2.211,7.88) + ..(2.211,7.922) + ..controls(2.211,7.969)and(2.141,8.01) + ..(2,8.047) + ..controls(1.771,8.109)and(1.605,8.177) + ..(1.504,8.25) + ..controls(1.402,8.323)and(1.313,8.44) + ..(1.234,8.602) + ..controls(1.089,8.893)and(1.016,9.214) + ..(1.016,9.563) + ..controls(1.016,9.995)and(1.109,10.396) + ..(1.297,10.766) + ..controls(1.365,10.901)and(1.451,11.017) + ..(1.555,11.113) + ..controls(1.659,11.21)and(1.75,11.258) + ..(1.828,11.258) + ..controls(1.901,11.258)and(1.948,11.208) + ..(1.969,11.109) + ..controls(2,10.969)and(2.066,10.859) + ..(2.168,10.781) + ..controls(2.27,10.703)and(2.391,10.664) + ..(2.531,10.664) + --(4.563,10.664) + ..controls(5.594,10.664)and(6.391,10.607) + ..(6.953,10.492) + ..controls(7.88,10.31)and(8.557,9.823) + ..(8.984,9.031) + ..controls(9.411,8.24)and(9.625,7.083) + ..(9.625,5.563) + ..controls(9.625,5.37)and(9.612,4.432) + ..(9.586,2.75) + --(9.578,2.156) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((8u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(85, 10.383FX#,if true_size: 11.273FY#, 3.641FY# + else: cap_height#,desc_depth# fi); + "Hebrew letter" & tmp_string; + fill((8.438,6.703) + ..controls(8.26,7.182)and(8.018,7.422) + ..(7.711,7.422) + ..controls(7.477,7.422)and(7.12,7.104) + ..(6.641,6.469) + ..controls(6.161,5.833)and(5.68,5.036) + ..(5.195,4.078) + ..controls(4.831,3.359)and(4.581,2.807) + ..(4.445,2.422) + ..controls(4.31,2.036)and(4.242,1.688) + ..(4.242,1.375) + ..controls(4.242,1.219)and(4.253,1.081) + ..(4.273,0.961) + ..controls(4.294,0.841)and(4.365,0.503) + ..(4.484,-0.055) + ..controls(4.536,-0.284)and(4.563,-0.617) + ..(4.563,-1.055) + ..controls(4.563,-1.997)and(4.398,-2.706) + ..(4.07,-3.18) + ..controls(3.852,-3.487)and(3.602,-3.641) + ..(3.32,-3.641) + ..controls(3.169,-3.641)and(3.065,-3.591) + ..(3.008,-3.492) + ..controls(2.961,-3.404)and(2.938,-3.034) + ..(2.938,-2.383) + --(2.938,2.906) + ..controls(2.938,4.01)and(2.973,4.842) + ..(3.043,5.402) + ..controls(3.113,5.962)and(3.253,6.513) + ..(3.461,7.055) + ..controls(3.482,7.107)and(3.492,7.159) + ..(3.492,7.211) + ..controls(3.492,7.383)and(3.242,7.516) + ..(2.742,7.609) + ..controls(2.18,7.719)and(1.729,7.927) + ..(1.391,8.234) + ..controls(1.031,8.557)and(0.852,8.969) + ..(0.852,9.469) + ..controls(0.852,9.885)and(1.008,10.297) + ..(1.32,10.703) + ..controls(1.581,11.036)and(1.807,11.203) + ..(2,11.203) + ..controls(2.104,11.203)and(2.185,11.13) + ..(2.242,10.984) + ..controls(2.305,10.844)and(2.378,10.754) + ..(2.461,10.715) + ..controls(2.544,10.676)and(2.81,10.607) + ..(3.258,10.508) + ..controls(3.654,10.424)and(4.021,10.26) + ..(4.359,10.016) + ..controls(4.656,9.807)and(4.805,9.518) + ..(4.805,9.148) + ..controls(4.805,8.591)and(4.617,7.974) + ..(4.242,7.297) + ..controls(4.039,6.927)and(3.908,6.629) + ..(3.848,6.402) + ..controls(3.788,6.176)and(3.758,5.852) + ..(3.758,5.43) + ..controls(3.758,4.654)and(3.865,4.047) + ..(4.078,3.609) + ..controls(4.839,4.974)and(5.346,5.853) + ..(5.602,6.246) + ..controls(5.857,6.639)and(6.188,7.049) + ..(6.594,7.477) + ..controls(6.771,7.664)and(6.859,7.786) + ..(6.859,7.844) + ..controls(6.859,7.891)and(6.839,7.935) + ..(6.797,7.977) + ..controls(6.755,8.018)and(6.607,8.141) + ..(6.352,8.344) + ..controls(6.18,8.479)and(6.036,8.663) + ..(5.922,8.895) + ..controls(5.807,9.126)and(5.75,9.349) + ..(5.75,9.563) + ..controls(5.75,9.969)and(5.948,10.393) + ..(6.344,10.836) + ..controls(6.609,11.128)and(6.87,11.273) + ..(7.125,11.273) + ..controls(7.193,11.273)and(7.245,11.254) + ..(7.281,11.215) + ..controls(7.318,11.176)and(7.357,11.089) + ..(7.398,10.953) + ..controls(7.456,10.802)and(7.578,10.682) + ..(7.766,10.594) + ..controls(8.411,10.276)and(8.891,9.987) + ..(9.203,9.727) + ..controls(9.563,9.424)and(9.742,9.07) + ..(9.742,8.664) + ..controls(9.742,8.31)and(9.607,7.917) + ..(9.336,7.484) + ..controls(9.154,7.193)and(8.854,6.932) + ..(8.438,6.703) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((1.75u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(86, 9.82FX#,if true_size: 11.297FY#, 0FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((8.164,0) + --(0.211,0) + --(1.148,2.781) + --(6.133,2.781) + ..controls(6.44,2.781)and(6.63,2.792) + ..(6.703,2.813) + ..controls(6.875,2.87)and(6.961,2.966) + ..(6.961,3.102) + ..controls(6.961,3.227)and(6.833,3.371) + ..(6.578,3.535) + ..controls(6.323,3.699)and(5.901,3.911) + ..(5.313,4.172) + ..controls(4.469,4.536)and(3.969,4.755) + ..(3.813,4.828) + ..controls(3.656,4.901)and(3.526,4.982) + ..(3.422,5.07) + ..controls(3.151,5.294)and(3.016,5.615) + ..(3.016,6.031) + ..controls(3.016,6.182)and(3.023,6.388) + ..(3.039,6.648) + ..controls(3.049,6.794)and(3.055,6.927) + ..(3.055,7.047) + ..controls(3.055,7.266)and(3.016,7.466) + ..(2.938,7.648) + ..controls(2.906,7.716)and(2.828,7.776) + ..(2.703,7.828) + ..controls(2.578,7.88)and(2.448,7.906) + ..(2.313,7.906) + --(1.727,7.891) + ..controls(1.305,7.891)and(0.997,7.945) + ..(0.805,8.055) + ..controls(0.503,8.227)and(0.352,8.656) + ..(0.352,9.344) + ..controls(0.352,9.828)and(0.43,10.25) + ..(0.586,10.609) + ..controls(0.654,10.75)and(0.747,10.887) + ..(0.867,11.02) + ..controls(0.987,11.152)and(1.081,11.219) + ..(1.148,11.219) + ..controls(1.201,11.219)and(1.234,11.202) + ..(1.25,11.168) + ..controls(1.266,11.134)and(1.292,11.016) + ..(1.328,10.813) + ..controls(1.349,10.693)and(1.414,10.633) + ..(1.523,10.633) + ..controls(1.56,10.633)and(1.615,10.638) + ..(1.688,10.648) + ..controls(2.031,10.695)and(2.279,10.719) + ..(2.43,10.719) + ..controls(2.799,10.719)and(3.115,10.608) + ..(3.375,10.387) + ..controls(3.635,10.165)and(3.766,9.898) + ..(3.766,9.586) + --(3.758,9.195) + --(3.758,7.031) + ..controls(3.758,6.755)and(3.893,6.513) + ..(4.164,6.305) + ..controls(4.435,6.096)and(4.919,5.867) + ..(5.617,5.617) + ..controls(5.81,6.232)and(5.953,6.643) + ..(6.047,6.852) + ..controls(6.318,7.482)and(6.479,7.859) + ..(6.531,7.984) + --(5.938,8.328) + ..controls(5.568,8.547)and(5.383,8.875) + ..(5.383,9.313) + ..controls(5.383,10)and(5.677,10.661) + ..(6.266,11.297) + ..controls(6.557,10.938)and(7.013,10.685) + ..(7.633,10.539) + ..controls(7.945,10.471)and(8.155,10.415) + ..(8.262,10.371) + ..controls(8.368,10.327)and(8.477,10.255) + ..(8.586,10.156) + ..controls(8.857,9.896)and(8.992,9.518) + ..(8.992,9.023) + ..controls(8.992,8.654)and(8.917,8.286) + ..(8.766,7.922) + ..controls(8.615,7.557)and(8.414,7.26) + ..(8.164,7.031) + ..controls(7.966,7.224)and(7.807,7.361) + ..(7.688,7.441) + ..controls(7.568,7.522)and(7.372,7.628) + ..(7.102,7.758) + ..controls(6.773,7.148)and(6.477,6.357) + ..(6.211,5.383) + ..controls(6.784,5.18)and(7.326,4.935) + ..(7.836,4.648) + ..controls(8.289,4.393)and(8.608,4.146) + ..(8.793,3.906) + ..controls(8.978,3.667)and(9.07,3.38) + ..(9.07,3.047) + ..controls(9.07,2.844)and(9.029,2.559) + ..(8.945,2.191) + ..controls(8.862,1.824)and(8.766,1.505) + ..(8.656,1.234) + ..controls(8.385,0.578)and(8.221,0.167) + ..(8.164,0) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((1.75u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(87, 10.133FX#,if true_size: 11.18FY#, 3.977FY# + else: cap_height#,desc_depth# fi); + "Hebrew letter" & tmp_string; + fill((2.672,10.563) + --(6.625,10.563) + ..controls(6.979,10.563)and(7.232,10.548) + ..(7.383,10.52) + ..controls(7.534,10.491)and(7.698,10.43) + ..(7.875,10.336) + ..controls(8.536,9.971)and(8.964,9.242) + ..(9.156,8.148) + ..controls(9.292,7.404)and(9.359,6.633) + ..(9.359,5.836) + ..controls(9.359,4.549)and(9.042,3.565) + ..(8.406,2.883) + ..controls(8,2.44)and(7.357,2.083) + ..(6.477,1.813) + ..controls(5.831,1.615)and(5.365,1.456) + ..(5.078,1.336) + ..controls(4.792,1.216)and(4.549,1.081) + ..(4.352,0.93) + ..controls(4.081,0.716)and(3.896,0.523) + ..(3.797,0.352) + ..controls(3.672,0.148)and(3.586,0.023) + ..(3.539,-0.023) + ..controls(3.492,-0.07)and(3.43,-0.094) + ..(3.352,-0.094) + ..controls(3.242,-0.094)and(3.155,-0.042) + ..(3.09,0.063) + ..controls(3.025,0.167)and(2.992,0.302) + ..(2.992,0.469) + ..controls(2.992,1.042)and(3.25,1.578) + ..(3.766,2.078) + ..controls(4.188,2.484)and(4.924,2.852) + ..(5.977,3.18) + ..controls(6.669,3.398)and(7.189,3.596) + ..(7.535,3.773) + ..controls(7.882,3.951)and(8.143,4.154) + ..(8.32,4.383) + ..controls(8.617,4.773)and(8.766,5.307) + ..(8.766,5.984) + ..controls(8.766,6.745)and(8.583,7.279) + ..(8.219,7.586) + ..controls(7.99,7.773)and(7.609,7.867) + ..(7.078,7.867) + --(2.5,7.867) + ..controls(2.224,7.867)and(2.027,7.88) + ..(1.91,7.906) + ..controls(1.793,7.932)and(1.669,7.987) + ..(1.539,8.07) + ..controls(1.159,8.32)and(0.969,8.776) + ..(0.969,9.438) + ..controls(0.969,9.99)and(1.107,10.43) + ..(1.383,10.758) + ..controls(1.617,11.039)and(1.799,11.18) + ..(1.93,11.18) + ..controls(1.982,11.18)and(2.017,11.165) + ..(2.035,11.137) + ..controls(2.053,11.108)and(2.081,11.021) + ..(2.117,10.875) + ..controls(2.169,10.667)and(2.354,10.563) + ..(2.672,10.563) + --cycle) xscaled FX yscaled FY; + fill((2.352,6.258) + ..controls(2.513,6.237)and(2.594,6.151) + ..(2.594,6) + ..controls(2.594,5.922)and(2.579,5.863) + ..(2.551,5.824) + ..controls(2.522,5.785)and(2.43,5.703) + ..(2.273,5.578) + ..controls(1.966,5.323)and(1.813,4.87) + ..(1.813,4.219) + ..controls(1.813,3.854)and(1.932,2.815) + ..(2.172,1.102) + ..controls(2.302,0.216)and(2.378,-0.327) + ..(2.398,-0.527) + ..controls(2.419,-0.728)and(2.43,-0.99) + ..(2.43,-1.313) + ..controls(2.43,-2.135)and(2.281,-2.828) + ..(1.984,-3.391) + ..controls(1.781,-3.781)and(1.56,-3.977) + ..(1.32,-3.977) + ..controls(1.107,-3.977)and(1,-3.82) + ..(1,-3.508) + ..controls(1,-3.393)and(1.013,-3.143) + ..(1.039,-2.758) + ..controls(1.076,-2.216)and(1.094,-1.557) + ..(1.094,-0.781) + ..controls(1.094,-0.422)and(1.063,0.393) + ..(1,1.664) + ..controls(0.974,2.237)and(0.961,2.747) + ..(0.961,3.195) + ..controls(0.961,4.055)and(1.065,4.732) + ..(1.273,5.227) + ..controls(1.409,5.539)and(1.607,5.813) + ..(1.867,6.047) + ..controls(2.044,6.203)and(2.206,6.273) + ..(2.352,6.258) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((5.8u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(88, 9.461FX#,if true_size: 11.125FY#, 0.016FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((1.484,10.523) + --(5.734,10.523) + ..controls(6.38,10.529)and(6.872,10.419) + ..(7.211,10.195) + ..controls(7.685,9.867)and(7.956,9.299) + ..(8.023,8.492) + ..controls(8.044,8.128)and(8.089,6.862) + ..(8.156,4.695) + --(8.18,3.742) + ..controls(8.19,3.404)and(8.203,3.042) + ..(8.219,2.656) + ..controls(8.234,2.349)and(8.242,2.125) + ..(8.242,1.984) + ..controls(8.242,1.417)and(8.147,0.941) + ..(7.957,0.559) + ..controls(7.767,0.176)and(7.531,-0.016) + ..(7.25,-0.016) + ..controls(7.151,-0.016)and(7.085,0.008) + ..(7.051,0.055) + ..controls(7.017,0.102)and(7.003,0.19) + ..(7.008,0.32) + --(7.016,0.523) + --(7.445,5.438) + ..controls(7.492,5.969)and(7.516,6.38) + ..(7.516,6.672) + ..controls(7.516,7.125)and(7.365,7.44) + ..(7.063,7.617) + ..controls(6.917,7.706)and(6.635,7.75) + ..(6.219,7.75) + --(1.859,7.75) + ..controls(1.344,7.75)and(0.964,7.818) + ..(0.719,7.953) + ..controls(0.24,8.224)and(0,8.768) + ..(0,9.586) + ..controls(0,10.065)and(0.094,10.44) + ..(0.281,10.711) + ..controls(0.349,10.81)and(0.436,10.904) + ..(0.543,10.992) + ..controls(0.65,11.081)and(0.729,11.125) + ..(0.781,11.125) + ..controls(0.87,11.125)and(0.94,11.016) + ..(0.992,10.797) + ..controls(1.018,10.693)and(1.066,10.621) + ..(1.137,10.582) + ..controls(1.207,10.543)and(1.323,10.523) + ..(1.484,10.523) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((5u,0.475h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(89, 10.594FX#,if true_size: 11.086FY#, 0FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((7.586,0) + --(1.695,0) + ..controls(1.612,0.396)and(1.51,0.971) + ..(1.391,1.727) + ..controls(1.318,2.237)and(1.255,2.633) + ..(1.203,2.914) + ..controls(1.057,3.727)and(0.984,4.339) + ..(0.984,4.75) + ..controls(0.984,5.271)and(1.073,5.839) + ..(1.25,6.453) + ..controls(1.396,6.948)and(1.503,7.258) + ..(1.57,7.383) + ..controls(1.602,7.44)and(1.617,7.484) + ..(1.617,7.516) + ..controls(1.617,7.557)and(1.477,7.706) + ..(1.195,7.961) + ..controls(0.966,8.174)and(0.852,8.534) + ..(0.852,9.039) + ..controls(0.852,9.68)and(0.958,10.214) + ..(1.172,10.641) + ..controls(1.318,10.938)and(1.495,11.086) + ..(1.703,11.086) + ..controls(1.771,11.086)and(1.82,11.042) + ..(1.852,10.953) + ..controls(1.909,10.755)and(2.128,10.586) + ..(2.508,10.445) + ..controls(2.852,10.331)and(3.094,10.208) + ..(3.234,10.078) + ..controls(3.521,9.823)and(3.664,9.479) + ..(3.664,9.047) + ..controls(3.664,8.589)and(3.536,8.076) + ..(3.281,7.508) + ..controls(3.182,7.294)and(3.099,7.188) + ..(3.031,7.188) + ..controls(2.979,7.188)and(2.878,7.227) + ..(2.727,7.305) + ..controls(2.633,7.352)and(2.536,7.375) + ..(2.438,7.375) + ..controls(2.292,7.375)and(2.182,7.305) + ..(2.109,7.164) + ..controls(1.979,6.935)and(1.868,6.633) + ..(1.777,6.258) + ..controls(1.686,5.883)and(1.641,5.547) + ..(1.641,5.25) + ..controls(1.641,4.99)and(1.66,4.777) + ..(1.699,4.613) + ..controls(1.738,4.449)and(1.859,4.068) + ..(2.063,3.469) + ..controls(2.224,2.995)and(2.346,2.758) + ..(2.43,2.758) + ..controls(2.466,2.758)and(2.604,2.868) + ..(2.844,3.09) + ..controls(3.083,3.311)and(3.268,3.497) + ..(3.398,3.648) + ..controls(3.664,3.961)and(3.93,4.4) + ..(4.195,4.965) + ..controls(4.461,5.53)and(4.656,6.073) + ..(4.781,6.594) + ..controls(4.891,7.047)and(4.948,7.286) + ..(4.953,7.313) + ..controls(4.974,7.375)and(4.984,7.422) + ..(4.984,7.453) + ..controls(4.984,7.516)and(4.964,7.57) + ..(4.922,7.617) + ..controls(4.88,7.664)and(4.734,7.797) + ..(4.484,8.016) + ..controls(4.266,8.208)and(4.156,8.513) + ..(4.156,8.93) + ..controls(4.156,9.534)and(4.273,10.052) + ..(4.508,10.484) + ..controls(4.576,10.615)and(4.686,10.746) + ..(4.84,10.879) + ..controls(4.993,11.012)and(5.109,11.078) + ..(5.188,11.078) + ..controls(5.271,11.078)and(5.352,10.951) + ..(5.43,10.695) + ..controls(5.477,10.534)and(5.667,10.417) + ..(6,10.344) + ..controls(6.651,10.219)and(6.977,9.724) + ..(6.977,8.859) + ..controls(6.977,8.536)and(6.893,8.18) + ..(6.727,7.789) + ..controls(6.56,7.393)and(6.417,7.195) + ..(6.297,7.195) + ..controls(6.271,7.195)and(6.19,7.229) + ..(6.055,7.297) + ..controls(5.898,7.375)and(5.792,7.414) + ..(5.734,7.414) + ..controls(5.625,7.414)and(5.542,7.31) + ..(5.484,7.102) + ..controls(5.234,6.138)and(4.956,5.355) + ..(4.648,4.754) + ..controls(4.341,4.152)and(3.88,3.487) + ..(3.266,2.758) + --(6.992,2.758) + ..controls(7.169,3.253)and(7.44,3.837) + ..(7.805,4.512) + ..controls(8.169,5.186)and(8.529,5.768) + ..(8.883,6.258) + ..controls(9.102,6.555)and(9.211,6.781) + ..(9.211,6.938) + ..controls(9.211,7.078)and(9.146,7.193) + ..(9.016,7.281) + ..controls(8.974,7.307)and(8.781,7.375) + ..(8.438,7.484) + ..controls(8.125,7.583)and(7.887,7.76) + ..(7.723,8.016) + ..controls(7.559,8.271)and(7.477,8.589) + ..(7.477,8.969) + ..controls(7.477,9.609)and(7.633,10.154) + ..(7.945,10.602) + ..controls(8.029,10.716)and(8.141,10.823) + ..(8.281,10.922) + ..controls(8.422,11.021)and(8.534,11.07) + ..(8.617,11.07) + ..controls(8.695,11.07)and(8.734,11.042) + ..(8.734,10.984) + --(8.734,10.797) + ..controls(8.734,10.667)and(8.862,10.552) + ..(9.117,10.453) + ..controls(9.419,10.339)and(9.611,10.258) + ..(9.691,10.211) + ..controls(9.772,10.164)and(9.859,10.089) + ..(9.953,9.984) + ..controls(10.167,9.734)and(10.273,9.393) + ..(10.273,8.961) + ..controls(10.273,8.581)and(10.211,8.194) + ..(10.086,7.801) + ..controls(9.961,7.408)and(9.62,6.508) + ..(9.063,5.102) + ..controls(8.833,4.529)and(8.6,3.835) + ..(8.363,3.02) + ..controls(8.126,2.204)and(7.867,1.198) + ..(7.586,0) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((7.45u,0.5h),dtsz,false,false); + dot(0,0'); fi +endchar; + +beginchar(90, 11.047FX#,if true_size: 11.078FY#, 0.141FY# + else: cap_height#,0 fi); + "Hebrew letter" & tmp_string; + fill((2.18,7.758) + ..controls(1.841,7.904)and(1.615,8.068) + ..(1.5,8.25) + ..controls(1.302,8.563)and(1.203,8.958) + ..(1.203,9.438) + ..controls(1.203,9.875)and(1.31,10.271) + ..(1.523,10.625) + ..controls(1.596,10.75)and(1.689,10.857) + ..(1.801,10.945) + ..controls(1.913,11.034)and(2.01,11.078) + ..(2.094,11.078) + ..controls(2.167,11.078)and(2.216,11.061) + ..(2.242,11.027) + ..controls(2.268,10.993)and(2.294,10.914) + ..(2.32,10.789) + ..controls(2.367,10.617)and(2.51,10.534) + ..(2.75,10.539) + --(7.203,10.539) + ..controls(7.646,10.539)and(8.003,10.487) + ..(8.273,10.383) + ..controls(8.544,10.279)and(8.784,10.102) + ..(8.992,9.852) + ..controls(9.164,9.648)and(9.285,9.439) + ..(9.355,9.223) + ..controls(9.426,9.007)and(9.471,8.721) + ..(9.492,8.367) + --(9.82,1.531) + ..controls(9.82,1.49)and(9.82,1.427) + ..(9.82,1.344) + ..controls(9.82,0.896)and(9.721,0.549) + ..(9.523,0.305) + ..controls(9.32,0.055)and(9.115,-0.07) + ..(8.906,-0.07) + ..controls(8.813,-0.07)and(8.751,-0.046) + ..(8.723,0.004) + ..controls(8.694,0.053)and(8.68,0.164) + ..(8.68,0.336) + --(8.852,6.555) + ..controls(8.857,6.654)and(8.859,6.737) + ..(8.859,6.805) + ..controls(8.859,7.143)and(8.785,7.387) + ..(8.637,7.535) + ..controls(8.488,7.684)and(8.247,7.758) + ..(7.914,7.758) + --(3.477,7.758) + ..controls(3.174,7.758)and(2.992,7.75) + ..(2.93,7.734) + ..controls(2.867,7.719)and(2.802,7.669) + ..(2.734,7.586) + ..controls(2.625,7.461)and(2.522,7.25) + ..(2.426,6.953) + ..controls(2.329,6.656)and(2.281,6.406) + ..(2.281,6.203) + ..controls(2.281,5.786)and(2.521,4.992) + ..(3,3.82) + ..controls(3.365,2.924)and(3.583,2.359) + ..(3.656,2.125) + ..controls(3.729,1.891)and(3.766,1.641) + ..(3.766,1.375) + ..controls(3.766,0.932)and(3.599,0.56) + ..(3.266,0.258) + ..controls(2.974,-0.008)and(2.534,-0.141) + ..(1.945,-0.141) + ..controls(1.482,-0.141)and(1.07,-0.094) + ..(0.711,0) + ..controls(0.643,0.438)and(0.609,0.747) + ..(0.609,0.93) + ..controls(0.609,1.419)and(0.682,1.818) + ..(0.828,2.125) + ..controls(0.901,2.292)and(0.977,2.411) + ..(1.055,2.484) + ..controls(1.133,2.557)and(1.263,2.633) + ..(1.445,2.711) + ..controls(1.586,2.773)and(1.656,2.859) + ..(1.656,2.969) + ..controls(1.656,3.01)and(1.648,3.065) + ..(1.633,3.133) + ..controls(1.565,3.388)and(1.499,3.754) + ..(1.434,4.23) + ..controls(1.368,4.707)and(1.336,5.063) + ..(1.336,5.297) + ..controls(1.336,6.052)and(1.617,6.872) + ..(2.18,7.758) + --cycle) xscaled FX yscaled FY; + if dagesh: adjust_dot0((6.5u,0.475h),dtsz,false,false); + dot(0,0'); fi +endchar; + +extra_endchar:=extra_endchar_save; +turningcheck:=t; + +endinput. + +% font_slant := 0; +% font_normal_space := 4.369 * FX#; +% font_normal_stretch := 2.185 * FX#; +% font_normal_shrink := 1.456 * FX#; +% font_quad := 13.107 * FX#; +% font_x_height := 6.711 * FX#; +% designsize := FontSize; + +% end. + + + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathineq.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathineq.mf new file mode 100644 index 00000000000..0bd25d606ca --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathineq.mf @@ -0,0 +1,416 @@ +% mathematical symbols by Anthony Phan. +% file: mathineq.mf (inequalities) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +% Inequality signs and related things (relations). +% Some pictures overlap the bottom. It is necessary +% for correct centering of the whole box. +% Spreads for cross bars have been checked. +% Curly slants are strange: it is half way to two +% extreme solutions... + +def horizontal_rules_list=math_axis, + -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height +enddef; + +use_rule1; +make_sim_picture; + +if (main_name_string="less") or (main_name_string="greater"): + + beginpicture(first, + 12u#+2appr#,v_center(spread4#+rth#)); + pickup tiny.nib; + y2r=0.5[y1,y3]=good.y math_axis; y1-y3=spread4; + rt x1=w-Appr; lft x2r=Appr; x1=x1r=x3=x3r; + adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),-1); + adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),1); + z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b]; + z1r-z1=z1-z1l; z3r-z3=z3-z3l; + z2l-z1l=whatever*(z2r-z1r); + z2l-z3l=whatever*(z2r-z3r); + filldraw stroke z3e--z2e--z1e; + a:=2vround 0.5(spread1/abs cosd angle(z2r-z3r)); + endpicture; + + beginpicture(second, + 12u#+2appr#,v_center(spread4#+rth#)); + pickup tiny.nib; + y2r=0.5[y1,y3]=good.y math_axis; y1-y3=spread4; + lft x1=Appr; rt x2r=w-Appr; x1=x1r=x3=x3r; + adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),1); + adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),-1); + z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b]; + z1r-z1=z1-z1l; z3r-z3=z3-z3l; + z2l-z1l=whatever*(z2r-z1r); + z2l-z3l=whatever*(z2r-z3r); + filldraw stroke z3e--z2e--z1e; + endpicture; + +else: + + beginpicture(first, + 12u#+2appr#,v_center(spread4#+rth#)); + pickup tiny.nib; pos2(rth,90); pos4(rth,90); + lft x2=Appr; rt x1r=rt x3l=w-Appr; x4=0.50[x2,x1r]; + y2=y4=math_axis; y3l-y2r=y2l-y1r=0.5spread4; y1r=y1l; y3r=y3l; + x1r-x1l=diag_width(rth-tiny,z4r-z1r); + x3l-x3r=diag_width(rth-tiny,z4l-z3l); + filldraw stroke z2e{right}...z1e{z1r-z4r}; + filldraw stroke z2e{right}...z3e{z3l-z4l}; + a:=spread1; + endpicture; + + beginpicture(second, + 12u#+2appr#,v_center(spread4#+rth#)); + pickup tiny.nib; pos2(rth,-90); pos4(rth,-90); + rt x2=w-Appr; lft x1l=lft x3r=Appr; x4=0.50[x2,x1l]; + y2=y4=math_axis; y3r-y2l=y2r-y1l=0.5spread4; y1r=y1l; y3r=y3l; + x1l-x1r=-diag_width(rth-tiny,z4l-z1l); + x3r-x3l=-diag_width(rth-tiny,z4r-z3r); + filldraw stroke z2e{left}...z1e{z1l-z4l}; + filldraw stroke z2e{left}...z3e{z3r-z4r}; + endpicture; +fi + +if (main_name_string="greater") or (main_name_string="successor"): + tmp_picture:=first_picture; first_picture:=second_picture; + second_picture:=tmp_picture; +fi + +% +% Let's go +% + +beginchar(main_name_with(), + 12u#+2appr#,v_center(spread4#+rth#)); + main_name_string&" sign"; + currentpicture:=first_picture; +endchar; + +beginchar(main_name_with(_not), + 12u#+2appr#,asc_height#,asc_depth#); + "not " & main_name_string&" sign"; + currentpicture:=first_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_slant), + 12u#+2appr#,v_center(spread4#+spread1#+rth#)); + main_name_string&"-slant sign"; + currentpicture:=first_picture shifted(0,0.5a); + save b; + pickup tiny.nib; + if (main_name_string="less") or (main_name_string="greater"): + y0=good.y math_axis; lft x1=Appr; rt x2=w-Appr; + b=(rth-tiny)/cosd angle(x2-x1,0.5spread4); + penpos1(b,90); penpos2(b,90); + if (main_name_string="less"): y1=y0-0.5a; y1-y2=0.5spread4; + else: y2=y0-0.5a; y1-y2=-0.5spread4; fi + filldraw stroke z1e..z2e; penlabels(1,2); + elseif main_name_string="predecessor": + pos2(rth,-90); pos3(rth,-90); + lft x2=Appr; y2=y3=math_axis-0.5spread1; + rt x1l=rt x1=w-Appr; y1=y2r-0.5spread4; + x3=0.50[x2,x1l]; + y1l=y1r=y2r-vround(0.5spread4 + *(0.5[1,1/abs cosd angle(z3l-z1)])); + x1l-x1r=diag_width(rth-tiny,z3l-z1l); + filldraw stroke z1e{z3l-z1l}...z2e{left}; + penlabels(1,2,3); + else: + pos2(rth,-90); pos3(rth,-90); + rt x2=w-Appr; y2=y3=math_axis-0.5spread1; + lft x1l=lft x1=Appr; y1=y2r-0.5spread4; + x3=0.50[x2,x1l]; + y1l=y1r=y2r-vround(0.5spread4 + *(0.5[1,1/abs cosd angle(z3l-z1)])); + x1l-x1r=-diag_width(rth-tiny,z3l-z1l); + filldraw stroke z1e{z3l-z1l}...z2e{right}; + penlabels(1,2,3); + fi + tmp_picture:=currentpicture; +endchar; + +beginchar(main_name_with(_not_slant), + 12u#+2appr#,asc_height#,asc_depth#); + "not "&main_name_string&"-slant sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_eq), + 12u#+2appr#,v_center(spread4#+spread0#+rth#)); + main_name_string&"-bar sign"; + currentpicture:=first_picture shifted(0,0.5spread0); + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); rt x2=w-Appr; lft x1=Appr; + y1=y2=math_axis-0.5(spread4+spread0); + filldraw stroke z1e..z2e; penlabels(1,2); + tmp_picture:=currentpicture; +endchar; + +beginchar(main_name_with(_not_eq), + 12u#+2appr#,asc_height#,asc_depth#); + "not "&main_name_string&"-bar sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_eq_not), + 12u#+2appr#,v_center(spread4#+spread0#+rth#)); + main_name_string&"-not bar sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + y0=math_axis-0.5(spread4+spread0); + x0=0.5w; + v_adjust(1r,2l,y0,1.5spread1-0.5rth); + lft x2l-Appr=w-Appr-rt x1r=hround 3.5u; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(0,1,2); +endchar; + +beginchar(main_name_with(_eq_varnot), + 12u#+2appr#,v_center(spread4#+spread0#+rth#)); + main_name_string&"-varnot bar sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + y0=math_axis-0.5(spread4+spread0); + x0=0.5w; + v_adjust(1l,2l,y0,1.5spread1-0.5rth); + pos1(rth,0); pos2(rth,0); + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(0,1,2); +endchar; + +beginchar(main_name_with(_eqq), + 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#)); + main_name_string&" equal sign"; + currentpicture:=first_picture shifted(0,0.5(spread1+spread0)); + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + rt x2=rt x4=w-Appr; lft x1=lft x3=Appr; + y1=y2=math_axis-0.5(spread4-spread1+spread0); + y3=y4=y1-spread1; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); + tmp_picture:=currentpicture; +endchar; + +beginchar(main_name_with(_not_eqq), + 12u#+2appr#,v_center(max(asc_height#+asc_depth#, + spread4#+spread1#+spread0#+rth#))); + "not "&main_name_string&" equal sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + v_adjust(1l,2l,math_axis,max(h+d,spread4+spread0+2spread1)); + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_eqq_not), + 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#)); + main_name_string&" but not equal sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + y0=math_axis-0.5(spread4+spread0); + x0=0.5w; + v_adjust(1r,2l,y0,2.5spread1-0.5rth); + lft x2l-Appr=w-Appr-rt x1r=hround 2.75u; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(0,1,2); +endchar; + +beginchar(main_name_with(_eqq_varnot), + 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#)); + "variant "&main_name_string&" but not equal sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + y0=math_axis-0.5(spread4+spread0); + x0=0.5w; + v_adjust(1l,2l,y0,2.5spread1-0.5rth); + pos1(rth,0); pos2(rth,0); + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_upperslant), + 12u#+2appr#,v_center(spread4#+spread1#+rth#)); + main_name_string &"with upper slant sign"; + currentpicture:=first_picture shifted(0,-0.5a); + save b; + pickup tiny.nib; + if (main_name_string="less") or (main_name_string="greater"): + y0=good.y math_axis; lft x1=Appr; rt x2=w-Appr; + b=(rth-tiny)/cosd angle(x2-x1,0.5spread4); + penpos1(b,90); penpos2(b,90); + if (main_name_string="less"): y1=y0+0.5a; y1-y2=-0.5spread4; + else: y2=y0+0.5a; y1-y2=0.5spread4; fi + filldraw stroke z1e..z2e; penlabels(1,2); + elseif main_name_string="predecessor": + pos2(rth,90); pos3(rth,90); + lft x2=Appr; y2=y3=math_axis+0.5spread1; + rt x1l=rt x1=w-Appr; y1=y2r+0.5spread4; + x3=0.50[x2,x1l]; + y1l=y1r=y2r+vround(0.5spread4 + *(0.5[1,1/abs cosd angle(z3l-z1)])); + x1l-x1r=diag_width(rth-tiny,z3l-z1l); + filldraw stroke z1e{z3l-z1l}...z2e{left}; + penlabels(1,2,3); + else: + pos2(rth,90); pos3(rth,90); + rt x2=w-Appr; y2=y3=math_axis+0.5spread1; + lft x1l=lft x1=Appr; y1=y2r+0.5spread4; + x3=0.50[x2,x1l]; + y1l=y1r=y2r+vround(0.5spread4 + *(0.5[1,1/abs cosd angle(z3l-z1)])); + x1l-x1r=-diag_width(rth-tiny,z3l-z1l); + filldraw stroke z1e{z3l-z1l}...z2e{right}; + penlabels(1,2,3); + fi + tmp_picture:=currentpicture; +endchar; + +beginchar(main_name_with(_not_upperslant), + 12u#+2appr#,asc_height#,asc_depth#); + "not " & main_name_string&" upper slant sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_opposite), + 12u#+2appr#,v_center(1.5spread4#+spread1#+rth#)); + main_name_string&" and opposite sign"; + currentpicture:=(first_picture + shifted(0,vround(0.5a+0.25spread4))) + +(second_picture + shifted(0,-vround(0.5a+0.25spread4))); +endchar; + +beginchar(main_name_with(_eq_opposite),12u#+2appr#, + v_center(2spread4#+2spread0#+rth#)); + main_name_string&" bar opposite sign"; + currentpicture:=(first_picture + shifted(0,vround(spread0+0.5spread4))) + +(second_picture + shifted(0,-vround(spread0+0.5spread4))); + pickup tiny.nib; pos1(rth,90); pos2(rth,90); + lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_eqq_opposite),12u#+2appr#, + v_center(2spread4#+2spread0#+spread1#+rth#)); + main_name_string&" equal opposite sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1-y3=y2-y4=spread1; 0.5[y1,y3]=0.5[y2,y4]=math_axis; + currentpicture:=(first_picture + shifted(0,vround(spread0+0.5spread1+0.5spread4))) + +(second_picture + shifted(0,-vround(spread0+0.5spread1+0.5spread4))); + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(main_name_with(_sim),12u#+2appr#, + v_center(spread4#+spread1#+spread0#+rth#)); + main_name_string&" similarity sign"; + numeric b,c; b=vround(0.5spread1+0.5spread0); + c=b-vround(0.5(spread4+spread1)+spread0); + currentpicture:=(first_picture shifted(0,b)) + +(sim_picture shifted(0,c)); + tmp_picture:=currentpicture; +endchar; + +beginchar(main_name_with(_not_sim), + 12u#+2appr#,v_center(max(asc_height#+asc_depth#, + spread4#+spread1#+spread0#+rth#))); + "not "&main_name_string&" similarity sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + v_adjust(1l,2l,math_axis,max(h+d,spread4+spread0+2spread1)); + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_sim_not), + 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#)); + main_name_string&" but not similarity sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + y0=math_axis-0.5(spread4+spread0); + x0=0.5w; + v_adjust(1r,2l,y0,2spread1); + lft x2l-Appr=w-Appr-rt x1r=hround 2.75u; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(0,1,2); +endchar; + +beginchar(main_name_with(_approx), + 12u#+2appr#,v_center(spread4#+2spread1#+spread0#+2rth#)); + main_name_string&" approximative sign"; + numeric b,c; b=vround(spread1+0.5spread0+0.5rth); + c=b-vround(0.5(spread4+spread1)+spread0); + currentpicture:=(first_picture shifted(0,b)) + +(sim_picture shifted(0,c)) + +(sim_picture shifted(0,c-spread1-rth)); + tmp_picture:=currentpicture; +endchar; + +beginchar(main_name_with(_not_approx), + 12u#+2appr#,v_center(max(asc_height#+asc_depth#, + spread4#+2spread1#+spread0#+2rth#))); + main_name_string&" but not approximative sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + v_adjust(1l,2l,math_axis,max(h+d,spread4+spread0+3spread1)); + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_approx_not), + 12u#+2appr#,v_center(spread4#+2spread1#+spread0#+2rth#)); + main_name_string&" but not approximative sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + y0=math_axis-0.5(spread4+spread0); + x0=0.5w; + v_adjust(1r,2l,y0,3spread1); + lft x2l-Appr=w-Appr-rt x1r=hround 2.5u; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(0,1,2); +endchar; + +beginchar(main_name_with(_dot), + 12u#+2appr#,v_center(spread4#+rth#)); + main_name_string&" with dot sign"; + currentpicture:=first_picture; pickup tiny.nib; + adjust_dot1(( + if (main_name_string="less") or (main_name_string="predecessor"): + w-Appr-u-0.5dtsz else: Appr+u+0.5dtsz fi, + good.y math_axis),dtsz,false,true); + dot(1,1'); +endchar; + + + + + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathltlk.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathltlk.mf new file mode 100644 index 00000000000..eba7feea358 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathltlk.mf @@ -0,0 +1,673 @@ +% mathematical symbols by Anthony Phan. +% file: mathltlk.mf (mathematical letter-like symbols) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +def horizontal_rules_list=math_axis, + -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height +enddef; + +use_rule1; + +%turningcheck:=0; + +% +% A +% + +beginchar(for_all,8.2u#+2appr#,cap_height#,0); + "Universal quantifier"; + pickup tiny.nib; + lft x1l=w-rt x3r=appr-hround 0.5u; x2=x4=0.5[x1l,x3r]; + top y1l=top y3r=h; bot y2=bot y4=-o; + adjust_slanted_bar(1l,2,1,2l)(0.5(rth-tiny),1); + adjust_slanted_bar(3r,4,3,4r)(0.5(rth-tiny),-1); + forsuffixes $=1,2,3,4: z$r-z$=z$-z$l; endfor + z5=whatever[z1r,z2r]; z5=whatever[z3l,z4l]; + top y6r-bot y6l=top y7r-bot y7l=rth; + top y6r=top y7r=vround(x_height+0.5rth); + forsuffixes $=r,l: z6$=whatever[z1,z2]; z7$=whatever[z3,z4]; endfor + filldraw z1l--z2l--z4r--z3r--z3l--z5--z1r--cycle; + filldraw stroke z6e..z7e; penlabels(1,2,3,4,5,6,7); +endchar; + +% +% C +% + +beginchar(complement,5.5u#+2appr#,cap_height#,0); + "Complement"; + autorounded; pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + pos7(rth,0); pos8(rth,0); + h-bot y1=top y8+d=vround 0.25(h+d); + y3+0.5rth=h+o; y6-0.5rth=-d-o; + rt x1r=w-appr; x1=x2=x7=x8; + x4=x5=appr+0.5rth; x3=x6=0.5[x1,x4]; + y2=y4=max(y3-x1+x3,1/6[y1,y3]); + y5=y7=min(y6+x1-x3,1/6[y8,y6]); + filldraw stroke z1e..z2e; filldraw stroke z7e..z8e; + pickup rule.nib; + draw z2 up_to_left z3 left_to_down + z4..z5 down_to_right z6 right_to_up z7; + penlabels(1,2,7,8); labels(3,4,5,6); +endchar; + +% +% E +% + +beginchar(there_exists,6.5u#+appr#+Appr#,cap_height#,0); + "Existential quantifier"; + pickup tiny.nib; + pos1(rth,90); pos4(rth,-90); pos5(rth,90); pos6(rth,90); + y2l=y1l; y2r=y1r; y3l=y4l; y3r=y4r; top y1r=h; bot y4r=0; + top y5r=top y6r=vround 0.5(h+rth); + x2r-x2l=x3r-x3l=rth-tiny; + lft x1=lft x4=lft x5-hround 0.15u=appr; + rt x2r=rt x3r=w-Appr; x6=0.5[x2l,x2r]; filldraw stroke z5e..z6e; + filldraw stroke z1e--z2e--z3e--z4e; penlabels(1,2,3,4,5,6); +endchar; + +beginchar(there_not_exists,6.5u#+appr#+Appr#, + min(body_height#,cap_height#+asc_depth#),asc_depth#); + "Not existential quantifier"; + pickup tiny.nib; + pos1(rth,90); pos4(rth,-90); pos5(rth,90); pos6(rth,90); + y2l=y1l; y2r=y1r; y3l=y4l; y3r=y4r; top y1r=cap_height; bot y4r=0; + top y5r=top y6r=vround 0.5(cap_height+rth); + x2r-x2l=x3r-x3l=rth-tiny; + lft x1=lft x4=lft x5-hround 0.15u=appr; + rt x2r=rt x3r=w-Appr; x6=0.5[x2l,x2r]; filldraw stroke z5e..z6e; + filldraw stroke z1e--z2e--z3e--z4e; + lft x8l-appr=w-Appr-rt x7r=hround u; + bot y8l=-d-eps; y7r-y1r=y4r-y8l; + adjust_slanted_bar(8l,7r,8r,7l)(rth-tiny,-1); + filldraw stroke z7e..z8e; penlabels(1,2,3,4,5,6,7,8); +endchar; + +% +% F +% + +beginchar(F_inverse,6.5u#+appr#+Appr#,cap_height#,0); + "F inverse"; + pickup tiny.nib; + pos1(rth,0); pos3(rth,-90); pos4(rth,90); pos5(rth,90); + y2l=y3l; y2r=y3r; top y1=h; bot y3r=0; + top y4r=top y5r=vround 0.5(h+rth); + lft x3=lft x4-hround 0.15u=appr; rt x1r=w-Appr; + x1r=x2r; x1l=x2l; x5=x1; filldraw stroke z4e..z5e; + filldraw stroke z1e--z2e--z3e; penlabels(1,2,3,4,5); +endchar; + +% +% G +% + +beginchar(G_inverse,11.2u#+2appr#,cap_height#,0); + "G inverse (game)"; + pickup tiny.nib; + top y2r=h+o; bot y4r=-o; y3=y0=0.5[y2r,y4r]; + top y7r=vround y3; + rt x3r=w-appr; rt x3r-lft x0r=hround 13u; + x2=x4=0.5[x0r,x3r]; lft x6r=appr; x6l-x6r=rth-tiny; + pos0(rth,180); pos2(rth,90); pos3(rth,0); pos4(rth,-90); + pos7(rth,90); rt x7=hround x2; + path tmp_path.r,tmp_path.l; numeric t[].r,t[].l; + forsuffixes $=r,l: y6$=y7$; + tmp_path.$=z0$ up_to_right z2$ right_to_down z3$ + down_to_left z4$ left_to_up z0$; + t2$=xpart(tmp_path.$ intersectiontimes (z6$..(x6$,y4$))); + z5$=point t2$ of tmp_path.$; + endfor + t1r=xpart(tmp_path.r intersectiontimes (z6r..(x6r,y2r))); + z1r=point t1r of tmp_path.r; y1=y3; + z1-z1r=whatever*(direction t1r of tmp_path.r rotated -90); + t1l=xpart(tmp_path.l intersectiontimes (z1r..z1)); + z1l=point t1l of tmp_path.l; + filldraw stroke subpath (t1e,t2e) of tmp_path.e--z6e--z7e; + penlabels(0,1,2,3,4,5,6,7); +endchar; + +% +% O +% + +beginchar(empty_set,min(15.2u#,asc_height#+asc_depth#)+2appr#, + asc_height#,asc_depth#); + "The empty set"; + pickup rule.nib; + a:=w-2appr; + lft x3=w-rt x1=appr+hround(a/16.5)-eps; + lft x5=appr; rt x6=w-appr; + y2=good.y(math_axis+x1-0.5w)+eps; + y6=good.y(math_axis+x6-0.5w); + 0.5[y2,y4]=0.5[y5,y6]=math_axis; + x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4]; + draw superellipse(z1,z2,z3,z4,1/sqrt 2); + draw z5..z6; labels(1,2,3,4,5,6); +endchar; + +beginchar(diameter_sign,12u#+2appr#,fig_height#,0); + "Diameter sign"; + pickup rule.nib; + top y2=top y6-o=h; bot y4=bot y5+o=-d; + lft x3=appr; rt x1=w-appr; + lft x5=appr+hround u; rt x6=w-appr-hround u; + x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4]; + draw superellipse(z1,z2,z3,z4,1/sqrt 2); + draw z5..z6; labels(1,2,3,4,5,6); +endchar; + +% +% T +% + +beginchar(top_sign,11.2u#+2appr#,cap_height#,0); + "Top sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + top y1=top y3r=top y4r=cap_height; bot y2=-o; + lft x1l=hround 0.5(w-rth); + x2=x1; lft x3=appr; x1-x3=x4-x1; + filldraw stroke z1e..z2e; % stem + filldraw stroke z3e..z4e; % crossbar + penlabels(1,2,3,4); +endchar; + +beginchar(not_top_sign,11.2u#+2appr#,cap_height#,0); + "Not top sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + top y1=top y3r=top y4r=cap_height; bot y2=-o; + lft x1l=hround 0.5(w-rth); + x2=x1; lft x3=appr; x1-x3=x4-x1; + filldraw stroke z1e..z2e; % stem + filldraw stroke z3e..z4e; % crossbar + lft x5r=lft x5l=appr; rt x6r=rt x6l=w-appr; + h-top y6r=bot y5l+d=hround 0.15(h+d)-eps; + numeric a,b; a=rth-tiny; b=abs(z6r-z5l); + y5r-y5l=y6r-y6l=a/(((x6r-x5l)/b)*((b+-+a)/b)+((y6r-y5l)/b)*(a/b)); + filldraw stroke z5e..z6e; + penlabels(1,2,3,4,5,6); +endchar; + +beginchar(bot_sign,11.2u#+2appr#,cap_height#,0); + "Bot sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + bot y2=bot y3l=bot y4l=0; top y1=cap_height+o; + lft x1l=hround 0.5(w-rth); x2=x1; + lft x3=appr; x1-x3=x4-x1; + filldraw stroke z1e..z2e; % stem + filldraw stroke z3e..z4e; % crossbar + penlabels(1,2,3,4); +endchar; + +beginchar(not_bot_sign,11.2u#+2appr#,cap_height#,0); + "Not bot sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + bot y2=bot y3l=bot y4l=0; top y1=cap_height+o; + lft x1l=hround 0.5(w-rth); x2=x1; + lft x3=appr; x1-x3=x4-x1; + filldraw stroke z1e..z2e; % stem + filldraw stroke z3e..z4e; % crossbar + lft x5r=lft x5l=appr; rt x6r=rt x6l=w-appr; + h-top y6r=bot y5l+d=hround 0.15(h+d)-eps; + numeric a,b; a=rth-tiny; b=abs(z6r-z5l); + y5r-y5l=y6r-y6l=a/(((x6r-x5l)/b)*((b+-+a)/b)+((y6r-y5l)/b)*(a/b)); + filldraw stroke z5e..z6e; + penlabels(1,2,3,4,5,6); +endchar; + +% +% EPSILONS +% + +% use_rule2; + +rth:=ceiling((1/3[rth1#,rth2#])*hppp); +pickup pencircle scaled rth; +math_axis:=good.x(math_axis#*hppp); + +beginchar(belong_to,7.5u#+2appr#,v_center(spread3#)); + "Belong to"; + pickup tiny.nib; + pos2(rth,90); pos6(rth,90); pos3(rth,90); pos4(rth,270); + y3=y6=math_axis; + y2-y3=y3-y4=vround(0.5spread3-0.5rth+0.5[oo,o])+eps; + top y1r=vround(y3+0.5spread3); y1r-y3=y3-y5r; + rt x1r=rt x5r+hround 0.6u=w-appr; x3=appr-ho+0.5rth; + x2r=0.5[x1r,x3]; x4=0.5[x5r,x3]; + z1'-z1r=(z2r-z1r) xscaled 0.35; z5'-z5r=(z4r-z5r) xscaled 0.325; + pos1(rth,angle(z1'-z1r)-90); pos5(rth,angle(z5r-z5')-90); + x6=good.x x1l; + filldraw stroke z2e{right}...z1e{z1r-z1'}; + filldraw stroke z5e{z5'-z5r}...z4e{left}; + filldraw stroke z3e..z6e; + pickup pencircle scaled rth; + draw z2..controls 0.625[z2,(x3,y2)] and 0.65[z3,(x3,y2)].. + z3..controls 0.65[z3,(x3,y4)] and 0.625[z4,(x3,y4)]..z4; + penlabels(1,2,3,4,5,6,7,1',5'); + tmp_picture:=currentpicture; +endchar; + +beginchar(not_belong_to,7.5u#+2appr#,asc_height#,asc_depth#); + "Not belong sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround u; + top y1r=h+eps; 0.5[y1r,y2l]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(var_not_belong_to,7.5u#+2appr#,asc_height#,asc_depth#); + "Variant not belong sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + top y1l=h+eps; 0.5[y1l,y2l]=math_axis; + lft x1l=lft x2l=vround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(belong_to_bar,7.5u#+2appr#, + math_axis#+0.5spread3#+spread1#+0.5rth#, + 0.5spread3#-math_axis#); + "Variant not reverse belong sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); top y1r=top y2r=h; + lft x1l=appr; rt x2=w-appr; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(rev_belong_to,7.5u#+2appr#,v_center(spread3#)); + "Reverse belong to"; + pickup tiny.nib; + pos2(rth,-90); pos6(rth,90); pos3(rth,90); pos4(rth,90); + y3=y6=math_axis; + y3-y2=y4-y3=vround(0.5spread3-0.5rth+0.5[oo,o])+eps; + top y5r=vround(y3+0.5spread3); y1r-y3=y3-y5r; + lft x1r=lft x5r-hround 0.6u=appr; x3=w-appr+ho-0.5rth; + x2r=0.5[x1r,x3]; x4=0.5[x5r,x3]; + z1'-z1r=(z2r-z1r) xscaled 0.35; z5'-z5r=(z4r-z5r) xscaled 0.325; + pos1(rth,angle(z1'-z1r)-90); pos5(rth,angle(z5r-z5')-90); + x6=good.x x1l; + filldraw stroke z2e{left}...z1e{z1r-z1'}; + filldraw stroke z5e{z5'-z5r}...z4e{right}; + filldraw stroke z6e..z3e; + pickup pencircle scaled rth; + draw z2..controls 0.625[z2,(x3,y2)] and 0.65[z3,(x3,y2)].. + z3..controls 0.65[z3,(x3,y4)] and 0.625[z4,(x3,y4)]..z4; + penlabels(1,2,3,4,5,6,7,1',5'); + tmp_picture:=currentpicture; +endchar; + +beginchar(not_rev_belong_to,7.5u#+2appr#,asc_height#,asc_depth#); + "Not reverse belong sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround u; + top y1r=h+eps; 0.5[y1r,y2l]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(var_not_rev_belong_to,7.5u#+2appr#,asc_height#,asc_depth#); + "Variant not reverse belong sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + top y1l=h; 0.5[y1l,y2l]=math_axis; + lft x1l=lft x2l=vround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(rev_belong_to_bar,7.5u#+2appr#,math_axis#+0.5spread3#, + 0.5spread3#+spread1#+0.5rth#-math_axis#); + "Variant not reverse belong sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); bot y1l=bot y2l=-d; + lft x1l=appr; rt x2=w-appr; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +% +% U +% + +use_rule1; + +beginchar(cap_sign,12u#+2appr#,x_height#,0); + "Small cap sign"; + pickup tiny.nib; + pos1(rth,180); pos2(rth,180); + pos4(rth,0); pos5(rth,0); + y3+0.5rth=h+o; bot y1r=bot y5r=-d; y2=y4=2/3[y3,y1r]; + lft x1r=w-rt x5r=appr+hround 0.8u; + x1=x2; x4=x5; x3=0.5[x2,x4]; + filldraw stroke z1e..z2e; filldraw stroke z4e..z5e; + pickup rule.nib; autorounded; + draw z2 down_to_right z3 right_to_up z4; + penlabels(1,2,3,4,5); +endchar; + +beginchar(cup_sign,12u#+2appr#,x_height#,0); + "Small cup sign"; + pickup tiny.nib; + pos1(rth,180); pos2(rth,180); + pos4(rth,0); pos5(rth,0); + y3-0.5rth=-d-o; top y1r=top y5r=h; y2=y4=2/3[y3,y1r]; + lft x1r=w-rt x5r=appr+hround 0.8u; + x1=x2; x4=x5; x3=0.5[x2,x4]; + filldraw stroke z5e..z4e; filldraw stroke z2e..z1e; + pickup rule.nib; autorounded; + draw z2 down_to_right z3 right_to_up z4; + penlabels(1,2,3,4,5); +endchar; + +beginchar(cup_plus,12u#+2appr#,x_height#,0); + "Small cup-plus sign"; + ensure_centering_of(rth); + % + pickup tiny.nib; + pos1(rth,180); pos2(rth,180); pos3(rth,-90); + pos4(rth,0); pos5(rth,0); + y3-0.5rth=-d-o; top y1r=top y5r=h; y2=y4=2/3[y3,y1r]; + lft x1r=w-rt x5r=appr+hround 0.8u; + x1=x2; x4=x5; x3=0.5[x2,x4]; + filldraw stroke z5e..z4e; filldraw stroke z2e..z1e; + % + pos6(rth,0); pos7(rth,0); pos8(rth,90); pos9(rth,90); + top y6=h; x6=x7=0.5w; + numeric a; + a=0.5(min(lft x5r-rt x1r-1.2u,h-rth-0.6u)-rth); + y6-y8r=y8l-y7=vround a; x6l-x8=x9-x6r=hround a; y8=y9; + filldraw stroke z6e..z7e; filldraw stroke z8e..z9e; + pickup rule.nib; autorounded; + draw z2 down_to_right z3 right_to_up z4; + penlabels(1,2,3,4,5,6,7,8,9); +endchar; + +beginchar(sqcap_sign,12u#+2appr#,x_height#,0); + "Small square cap sign"; + pickup tiny.nib; + pos1(rth,180); pos4(rth,0); + top y2r=top y3r=h; bot y1=bot y4=-d; + top y2r-bot y2l=top y3r-bot y3l=rth; + lft x1r=w-rt x4r=appr+hround 0.95u; + x2r=x1r; x3r=x4r; x2l=x1l; x3l=x4l; + filldraw stroke z1e--z2e--z3e--z4e; + penlabels(1,2,3,4); +endchar; + +beginchar(sqcup_sign,12u#+2appr#,x_height#,0); + "Small square cup sign"; + pickup tiny.nib; + pos1(rth,180); pos4(rth,0); + bot y2r=bot y3r=-d; top y1=top y4=h; + top y2l-bot y2r=top y3l-bot y3r=rth; + lft x1r=w-rt x4r=appr+hround 0.95u; + x2r=x1r; x3r=x4r; x2l=x1l; x3l=x4l; + filldraw stroke z4e--z3e--z2e--z1e; + penlabels(1,2,3,4); +endchar; + +beginchar(sqcup_plus,12u#+2appr#,x_height#,0); + "Small square cup-plus sign"; + pickup tiny.nib; + ensure_centering_of(rth); + pos1(rth,180); pos4(rth,0); + bot y2r=bot y3r=-d; top y1=top y4=h; + top y2l-bot y2r=top y3l-bot y3r=rth; + lft x1r=w-rt x4r=appr+hround 0.95u; + x2r=x1r; x3r=x4r; x2l=x1l; x3l=x4l; + filldraw stroke z4e--z3e--z2e--z1e; + % + pos6(rth,0); pos7(rth,0); pos8(rth,90); pos9(rth,90); + top y6=h; x6=x7=0.5w; + numeric a; + a=0.5(min(lft x4l-rt x1l-1.2u,h-rth-0.6u)-rth); + y6-y8r=y8l-y7=vround a; x6l-x8=x9-x6r=hround a; y8=y9; + filldraw stroke z6e..z7e; filldraw stroke z8e..z9e; + penlabels(1,2,3,4,6,7,8,9); +endchar; + +def tmp_program(expr stem,orientation,$)= + autorounded; pickup tiny.nib; + pos1(stem,0); pos2(stem,0); + pos4(stem,180); pos5(stem,180); + lft x1l=w-rt x5l=appr+hround $; + x1l=x2l; x4l=x5l; x3=0.5[x1,x5]; + if orientation=up: pos3(stem,90); + top y1=top y5=h; bot y3l=-d-o; + y2=y4=min(0.25[y1,y3r],y3+0.5(x5-x1)); + else: pos3(stem,-90); + bot y1=bot y5=-d; top y3l=h+o; + y2=y4=max(0.25[y1,y3r],y3-0.5(x5-x1)); + fi + filldraw stroke z1e..z2e..controls (x2e,y3e) and (flatness[x3e,x2e],y3e) + ..z3e..controls (flatness[x3e,x4e],y3e) and (x4e,y3e)..z4e..z5e; + penlabels(1,2,3,4,5); +enddef; + +beginchar(bold_cap,12u#+2appr#,x_height#,0); + "Bold cap"; + tmp_program(stem,down,0.8u); +endchar; + +beginchar(bold_cup,12u#+2appr#,x_height#,0); + "Bold cup"; + tmp_program(stem,up,0.8u); +endchar; + +% +% V +% + +beginchar(wedge_sign,12u#+2appr#,x_height#,0); + "Wedge sign"; + pickup tiny.nib; + top y2r=x_height+o; bot y1r=0; y1r=y1l=y3r=y3l; + x2r=good.x 0.5w; + x3r-x2r=x2r-x1r=hround((y2r-y1r)/sqrt3); + x1l-x1r=diag_width(rth-tiny,z2r-z1r); + x3r-x3l=diag_width(rth-tiny,z2r-z3r); + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + filldraw stroke z1e--z2e--z3e; penlabels(1,2,3); +endchar; + +beginchar(vee_sign,12u#+2appr#,x_height#,0); + "Vee sign"; + pickup tiny.nib; + bot y2r=-o; top y1r=x_height; y1r=y1l=y3r=y3l; + x2r=good.x 0.5w; + x3r-x2r=x2r-x1r=-hround((y2r-y1r)/sqrt3); + x1l-x1r=diag_width(rth-tiny,z2r-z1r); + x3r-x3l=diag_width(rth-tiny,z2r-z3r); + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + filldraw stroke z3e--z2e--z1e; penlabels(1,2,3); +endchar; + +beginchar(wedge_eq,12u#+2appr#,x_height#,0); + "Wedge-bar sign"; + pickup tiny.nib; + top y2r=x_height; bot y1r=0; y1r=y1l=y3r=y3l; + x2r=good.x 0.5w; + x3r-x2r=x2r-x1r=hround((y2r-y1r+o)/sqrt3);% see wedge sign (+o) + x1l-x1r=diag_width(rth-tiny,z2r-z1r); + x3r-x3l=diag_width(rth-tiny,z2r-z3r); + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + pos4(rth,90); pos5(rth,90); y4r=y5r=y2r; + lft x4=min(Appr,lft x1r); x5-x3r=x1r-x4; + filldraw stroke z1e--z2e--z3e; filldraw stroke z4e..z5e; + penlabels(1,2,3,4,5); +endchar; + +beginchar(vee_eq,12u#+2appr#,x_height#,0); + "Vee-bar sign"; + pickup tiny.nib; + bot y2r=0; top y1r=x_height; y1r=y1l=y3r=y3l; + x2r=good.x 0.5w; + x3r-x2r=x2r-x1r=-hround((y2r-y1r-o)/sqrt3);% see vee sign (-o) + x1l-x1r=diag_width(rth-tiny,z2r-z1r); + x3r-x3l=diag_width(rth-tiny,z2r-z3r); + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + pos4(rth,-90); pos5(rth,-90); y4r=y5r=y2r; + rt x4=max(w-Appr,rt x1r); x5-x3r=x1r-x4; + filldraw stroke z3e--z2e--z1e; filldraw stroke z4e..z5e; + penlabels(1,2,3,4,5); +endchar; + +beginchar(wedge_eqq,12u#+2appr#,asc_height#,0);% strange choice + "Wedge-equal sign"; + pickup tiny.nib; + top y2r=x_height; bot y1r=0; y1r=y1l=y3r=y3l; + x2r=good.x 0.5w; + x3r-x2r=x2r-x1r=hround((y2r-y1r+o)/sqrt3);% see wedge sign (+o) + x1l-x1r=diag_width(rth-tiny,z2r-z1r); + x3r-x3l=diag_width(rth-tiny,z2r-z3r); + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + pos4(rth,90); pos5(rth,90); pos6(rth,90); pos7(rth,90); + y4r=y5r=y2r; y6=y7=y4+spread1; + lft x4=min(Appr,lft x1r); x5-x3r=x1r-x4; x4=x6; x5=x7; + filldraw stroke z1e--z2e--z3e; filldraw stroke z4e..z5e; + filldraw stroke z6e..z7e; penlabels(1,2,3,4,5,6,7); +endchar; + +beginchar(vee_eqq,12u#+2appr#,asc_height#,0);% strange choice + "Vee-equal sign"; + pickup tiny.nib; + bot y2r=0+spread1; top y1r=x_height+spread1; y1r=y1l=y3r=y3l; + x2r=good.x 0.5w; + x3r-x2r=x2r-x1r=-hround((y2r-y1r-o)/sqrt3);% see vee sign (-o) + x1l-x1r=diag_width(rth-tiny,z2r-z1r); + x3r-x3l=diag_width(rth-tiny,z2r-z3r); + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + pos4(rth,-90); pos5(rth,-90); pos6(rth,-90); pos7(rth,-90); + y4r=y5r=y2r; y6=y7=y4-spread1; + rt x4=max(w-Appr,rt x1r); x5-x3r=x1r-x4; x4=x6; x5=x7; + filldraw stroke z3e--z2e--z1e; filldraw stroke z4e..z5e; + filldraw stroke z6e..z7e; penlabels(1,2,3,4,5,6,7); +endchar; + +beginchar(wedge_curly,12u#+2appr#,x_height#,0); + "Curly wedge sign"; + pickup tiny.nib; + x2=hround 0.5(w-rth)+0.5rth; + top y2=h+o; pos2(rth,0); bot y1r=bot y3l=0; + lft x1r=hround min(appr+1.0u,lft x2l-((y2r-y1r)/sqrt3)); + x3l-x2r=x2l-x1r; x1l=x1r; x3l=x3r; + x4=x2; pos4(rth,0); y4=0.625[y2,y1r]; + y1l-y1r=y3r-y3l=(rth-tiny)/cosd angle(z4r-z1r); + filldraw stroke z2e{down}...z1e{z1r-z4r}; + filldraw stroke z2e{down}...z3e{z3l-z4l}; + penlabels(1,2,3,4); +endchar; + +beginchar(vee_curly,12u#+2appr#,x_height#,0); + "Curly vee sign"; + pickup tiny.nib; + x2=hround 0.5(w-rth)+0.5rth; + bot y2=-o; pos2(rth,0); top y1r=top y3l=h; + lft x1r=hround min(appr+1.0u,lft x2l+((y2r-y1r)/sqrt3)); + x1l=x1r; x3l=x3r; x3l-x2r=x2l-x1r; + x4=x2; pos4(rth,0); y4=0.625[y2,y1r]; + y1r-y1l=y3l-y3r=(rth-tiny)/cosd angle(z4r-z1r); + filldraw stroke z2e{up}...z1e{z1r-z4r}; + filldraw stroke z2e{up}...z3e{z3l-z4l}; + penlabels(1,2,3,4); +endchar; + +beginchar(double_cap_sign, + 12u#+2appr#,cap_height#,0);% maybe too high + "Double cap sign"; + pickup tiny.nib; + pos1(rth,180); pos2(rth,180); + pos4(rth,0); pos5(rth,0); + pos6(rth,180); pos7(rth,180); + pos9(rth,0); pos10(rth,0); + rt x1l=w-appr; lft x5l=appr; + numeric a; a=min(spread1,0.25(x1-x5)); + x1=x2; x4=x5; x6=x7; x9=x10; x3=x8=0.5[x1,x5]; + x1-x6=x10-x5=hround a; + bot y1=bot y5=-d-o; bot y6=bot y10=-d; + y3+0.5rth=h+o; y8-y3=-vround a; + y2=y4=y7=y9=1/3[y8,y6]; + filldraw stroke z1e..z2e; filldraw stroke z4e..z5e; + filldraw stroke z6e..z7e; filldraw stroke z9e..z10e; + pickup rule.nib; autorounded; + draw z2 up_to_right z3 right_to_down z4; + draw z7 up_to_right z8 right_to_down z9; + penlabels(1,2,3,4,5,6,7,8,9,10); +endchar; + +beginchar(double_cup_sign, + 12u#+2appr#,cap_height#,0);% maybe too high + "Double cup sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + pos4(rth,180); pos5(rth,180); + pos6(rth,0); pos7(rth,0); + pos9(rth,180); pos10(rth,180); + rt x1r=w-appr; lft x5r=appr; + numeric a; a=min(spread1,0.25(x1-x5)); + x1=x2; x4=x5; x6=x7; x9=x10; x3=x8=0.5[x1,x5]; + x1-x6=x10-x5=hround a; + top y1=top y5=h+o; top y6=top y10=h; + y3-0.5rth=-d-o; y8-y3=vround a; + y2=y4=y7=y9=1/3[y8,y6]; + filldraw stroke z1e..z2e; filldraw stroke z4e..z5e; + filldraw stroke z6e..z7e; filldraw stroke z9e..z10e; + pickup rule.nib; autorounded; + draw z2 down_to_right z3 right_to_up z4; + draw z7 down_to_right z8 right_to_up z9; + penlabels(1,2,3,4,5,6,7,8,9,10); +endchar; + +beginchar(double_sqcap_sign, + 12u#+2appr#,cap_height#,0);% maybe too high + "Double square cap sign"; + pickup tiny.nib; + pos1(rth,180); pos3(rth,90); pos5(rth,0); + pos6(rth,180); pos8(rth,90); pos10(rth,0); + lft x1r=appr; rt x5r=w-appr; + numeric a; a=min(spread1,0.25(x5-x1)); + x6-x1=x5-x10=hround a; x3=x8=0.5[x1,x5]; + bot y1=bot y5=-d-o; bot y6=bot y10=-d; + top y3r=h; y8-y3=-vround a; + forsuffixes $=,r,l: + x1$=x2$; x4$=x5$; x6$=x7$; x9$=x10$; + y2$=y3$=y4$; y7$=y8$=y9$; endfor + filldraw stroke z1e--z2e--z4e--z5e; + filldraw stroke z6e--z7e--z9e--z10e; + penlabels(1,2,3,4,5,6,7,8,9,10); +endchar; + +beginchar(double_sqcup_sign, + 12u#+2appr#,cap_height#,0);% maybe too high + "Double square cup sign"; + pickup tiny.nib; + pos1(rth,0); pos3(rth,90); pos5(rth,180); + pos6(rth,0); pos8(rth,90); pos10(rth,180); + lft x1l=appr; rt x5l=w-appr; + numeric a; a=min(spread1,0.25(x5-x1)); + x6-x1=x5-x10=hround a; x3=x8=0.5[x1,x5]; + top y1=top y5=h+o; top y6=top y10=h; + bot y3l=0; y8-y3=vround a; + forsuffixes $=,r,l: + x1$=x2$; x4$=x5$; x6$=x7$; x9$=x10$; + y2$=y3$=y4$; y7$=y8$=y9$; endfor + filldraw stroke z1e--z2e--z4e--z5e; + filldraw stroke z6e--z7e--z9e--z10e; + penlabels(1,2,3,4,5,6,7,8,9,10); +endchar; + + + 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; diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathprmt.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathprmt.mf new file mode 100644 index 00000000000..11f6d0929de --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathprmt.mf @@ -0,0 +1,168 @@ +% Mathematical symbols by Anthony Phan. +% file: matha10.mf (parameters' file for 10 points fonts) +% last modification: May 16, 2005. + +% Look at rth.frac for fractions and such rule_thickness. + +if unknown mathbase: input mathbase fi + +numeric gen_; gen_=0; +for $=12pt#,10pt#,9pt#,8pt#,7pt#,6pt#,5pt#: + if designsize<$: gen_:=gen_+1; fi +endfor; + +vardef gen(expr unit)(text t)= + save a,b; a=0; for $=t: + if gen_>=a: b:=$; fi + a:=a+1; endfor; b*unit +enddef; + +superness :=1/sqrt2; +flatness :=0.0625; +slant :=0.25; +beak_darkness :=11/30; +dh# :=0.6designsize; +bigop_padding#:=1/12dh#; +astro :=0;% 0 for san-serif, 1 for cm-like, in between... +math_spread :=gen(1)(0,0.2,0.4,0.6,0.8,1); + +u# :=gen(1/36pt#)( 23.5, 20, 18.5, 17, 15.5, 14, 12.5); +letter_fit# :=gen(1/36pt#)( 0, 0, 0, 0, 2, 3, 5); + +body_height# :=gen(1/36pt#)( 324, 270, 243, 216, 189, 162, 135); +asc_height# :=gen(1/36pt#)( 300, 250, 225, 200, 175, 150, 125); +cap_height# :=gen(1/36pt#)( 295.2, 246, 221.4, 196.8, 172.2, 147.6, 123); +fig_height# :=gen(1/36pt#)( 278.4, 232, 208.8, 185.6, 162.4, 139.2, 116); +x_height# :=gen(1/36pt#)( 186, 155, 139.5, 124, 108.5, 93, 77.5); +math_axis# :=gen(1/36pt#)( 108, 90, 81, 72, 63, 54, 45); +desc_depth# :=gen(1/36pt#)( 84, 70, 63, 56, 49, 42, 35); +dtsz# :=gen(1/36pt#)( 42, 38, 35, 32, 29, 26, 22); +ast_size# :=gen(1/36pt#)( 140, 140, 140, 140, 140, 140, 140); +ast_curve# :=gen(1/36pt#)( 28, 28, 28, 28, 28, 28, 28); +ast_stem# :=gen(1/36pt#)( 8, 8, 8, 8, 8, 8, 8); + +% Next parameters may affect daggers, asterisks, infinity, +% integrals, sums, similarity relations. + +curve# :=gen(1/36pt#)( 33, 30, 28, 25.5, 23, 20.5, 18); +stem# :=gen(1/36pt#)( 28, 25, 24, 22, 20, 18, 16); +hair# :=gen(1/36pt#)( 9.5, 9, 9, 9, 8.5, 8, 7.5); +vair# :=gen(1/36pt#)( 8.5, 8, 8, 8, 7, 7, 6); +cap_curve# :=gen(1/36pt#)( 40, 37, 33, 30, 27, 24, 21); +cap_stem# :=gen(1/36pt#)( 35, 32, 29, 26.5, 24, 21.5, 19); +cap_hair# :=gen(1/36pt#)( 11.5, 11, 10, 9.5, 9, 8.5, 8); +slab# :=gen(1/36pt#)( 12.5, 11, 10, 9.5, 9, 8.5, 8); +stem_corr# :=gen(1/36pt#)( 1, 1, 1, 1, 0.9, 0.8, 0.7); +vair_corr# :=gen(1/36pt#)( 1, 1, 1, 1, 0.9, 0.8, 0.7); +o# :=gen(1/36pt#)( 9, 8, 7, 6, 5, 4.5, 4); +ho# :=gen(1/36pt#)( 9, 8, 7, 6, 5, 4.5, 4); +dish# :=gen(1/36pt#)( 1, 1, 1, 1, 0.9, 0.8, 0.7); + +% RULE THICKNESSES + +rth1# :=gen(1pt#)(0.44,0.4,0.38,0.36,0.34,0.31,0.28); +rth0# := 3/4 rth1#; +rth2# := 4.5/4 rth1#; +rth3# := 5/4 rth1#; +rth4# := 5.5/4 rth1#; + +rth.frac#:=0.3pt#; + +crisp# :=gen(1/36pt#)( 0, 0, 0, 0, 0, 0, 0); +tiny# :=gen(1/36pt#)( 8, 8, 8, 8, 7, 6.5, 6); +fine# :=gen(1/36pt#)( 7, 7, 7, 7, 6, 6, 5); + +% VARIOUS SPREADS + +% thin space between > and _ +spread0#:=math_spread[.21x_height#,.255x_height#]; + +% equal sign +spread1#:=math_spread[.35x_height#,.425x_height#]; + +% subset like symbols +spread2#:=math_spread[.87x_height#,1.01x_height#]; + +% infinity, asterisk, belong_to... +spread3#:=math_spread[x_height#,1.2x_height#]; + +% greater etc. +spread4#:=math_spread[17/16x_height#,9/8x_height#]; + +% +% FONT METRICS +% +% They are supposed to be the same as Computer Modern's ones. +% Please check carefully if it's true. + +if font_identifier_="mathx": + +% CMEX's like + + fontdimen8: + rth0#, % default_rule_thickness + gen(40/36pt#)(1.2,1,.9,.8,.7,.6,.5), % big_op_spacing1 + gen(60/36pt#)(1.2,1,.9,.8,.7,.6,.5), % big_op_spacing2 + gen(72/36pt#)(1.2,1,.9,.8,.7,.6,.5), % big_op_spacing3 + gen(216/36pt#)(1.2,1,.9,.8,.7,.6,.5), % big_op_spacing4 + gen(1/36pt#)(36,36,36,36,36,36,36); % big_op_spacing5 + +else: + +% CMSY's like + + subs:=gen(1)(8/12,7/10,6/9,6/8,5/7,5/6,5/5); + + fontdimen8: + +% \fontdimen8 (num1) + math_axis#+3.51rth.frac#+gen(1/36pt#)(54,54,36,36,36,36,36) + +subs*desc_depth#, + +% \fontdimen9 (num2) + math_axis#+1.51rth.frac#+gen(1/36pt#)(30,30,30,24,12,9,3), + +% \fontdimen10 (num3) + math_axis#+1.51rth.frac#+gen(1/36pt#)(48,48,43,38,34,29,24), + +% \fontdimen11 (denom1) + -(math_axis#-3.51rth.frac#-subs*fig_height# + -gen(1/36pt#)(124,124,111,98,86,74,63)), + +% \fontdimen12 (denom2) + -(math_axis#-1.51rth.frac#-subs*fig_height# + -gen(1/36pt#)(30,30,30,24,12,9,3)), + +% \fontdimen13 (sup1) + gen(1pt#)(8.99,8.99,8.49,7.49,6.99,6.49,5.99)-subs*asc_height#, + +% \fontdimen14 (sup2) + gen(1pt#)(8.49,8.49,7.99,7.99,6.49,5.99,5.49)-subs*asc_height#, + +% \fontdimen15 (sup3) + gen(1/36pt#)(104,104,93,82,72,62,53), + +% \fontdimen16 (sub1) + gen(1/36pt#)(54,54,36,36,36,36,36), + +% \fontdimen17 (sub2) + if gen_<2: -(8.49pt#-2subs*asc_height#-3.1rth.frac#) + elseif gen_=2: -(7.99pt#-2subs*asc_height#-3.1rth.frac#) + else: gen(1/36pt#)(72,72,72,72,72,72,72) fi, + +% \fontdimen18 (sup_drop) + subs*asc_height#-36/36pt#, + +% \fontdimen19 (sub_drop) + 18/36pt#, + +% \fontdimen20 (delim1) + gen(1pt#)( 23.9, 23.9, 23.9, 11.9, 11.9, 11.9, 9.9), + +% \fontdimen21 (delim2) + gen(1pt#)( 10.1, 10.1, 9.1, 9.1, 8.1, 8.1, 7.1), + +% \fontdimen22 (axis) + math_axis#; + +fi diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathsmsy.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathsmsy.mf new file mode 100644 index 00000000000..fbf04c4acc3 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathsmsy.mf @@ -0,0 +1,237 @@ +% mathematical symbols by Anthony Phan. +% file: mathsmsy.mf (various small mathematical symbols) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +def horizontal_rules_list=math_axis, + -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height, + 0.5[-d,h],math_axis +enddef; + +% SMALL TRIANGLES + +beginchar(triangle_small_left, + 7u#+2appr#,v_center(7u#)); + "Small triangle left"; + pickup tiny.nib; + a:=7u; + set_triangle(left,a,rth0,true,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +beginchar(triangle_small_right, + 7u#+2appr#,v_center(7u#)); + "Small triangle right"; + pickup tiny.nib; + a:=7u; + set_triangle(right,a,rth0,true,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +beginchar(triangle_small_up, + 7u#+2appr#,v_center(7u#)); + "Small triangle up"; + pickup tiny.nib; + a:=7u; + set_triangle(up,a,rth0,true,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +beginchar(triangle_small_down, + 7u#+2appr#,v_center(7u#)); + "Small triangle down"; + pickup tiny.nib; + a:=7u; + set_triangle(down,a,rth0,true,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +% FULL SMALL TRIANGLES + +beginchar(triangle_small_full_left, + 7u#+2appr#,v_center(7u#)); + "Small full triangle left"; + pickup tiny.nib; + a:=7u-0.5rth0; + set_triangle(left,a,rth0,true,false); + filldraw z1r--z2r--z3r--cycle; +endchar; + +beginchar(triangle_small_full_right, + 7u#+2appr#,v_center(7u#)); + "Small full triangle right"; + pickup tiny.nib; + a:=7u-0.5rth0; + set_triangle(right,a,rth0,true,false); + filldraw z1r--z2r--z3r--cycle; +endchar; + +beginchar(triangle_small_full_up, + 7u#+2appr#,v_center(7u#)); + "Small full triangle up"; + pickup tiny.nib; + a:=7u-0.5rth0; + set_triangle(up,a,rth0,true,false); + filldraw z1r--z2r--z3r--cycle; +endchar; + +beginchar(triangle_small_full_down, + 7u#+2appr#,v_center(7u#)); + "Small full triangle down"; + pickup tiny.nib; + a:=7u-0.5rth0; + set_triangle(down,a,rth0,true,false); + filldraw z1r--z2r--z3r--cycle; +endchar; + +% MEDIUM TRIANGLES + +beginchar(triangle_med_left, + 12u#+2appr#,x_height#,0); + "Medium triangle left"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; + set_triangle(left,a,rth1,true,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +beginchar(triangle_med_right, + 12u#+2appr#,x_height#,0); + "Medium triangle right"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; + set_triangle(right,a,rth1,true,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +beginchar(triangle_med_up, + 12u#+2appr#,x_height#,0); + "Medium triangle up"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; triangle_foot:=0; + set_triangle(up,a,rth1,false,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +beginchar(triangle_med_down, + 12u#+2appr#,x_height#,0); + "Medium triangle down"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; triangle_foot:=h; + set_triangle(down,a,rth1,false,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +% MEDIUM FULL TRIANGLES + +beginchar(triangle_med_full_left, + 12u#+2appr#,x_height#,0); + "Medium full triangle left"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; + set_triangle(left,a,rth1,true,false); + filldraw z1r--z2r--z3r--cycle; +endchar; + +beginchar(triangle_med_full_right, + 12u#+2appr#,x_height#,0); + "Medium full triangle right"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; + set_triangle(right,a,rth1,true,false); + filldraw z1r--z2r--z3r--cycle; +endchar; + +beginchar(triangle_med_full_up, + 12u#+2appr#,x_height#,0); + "Medium full triangle up"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; triangle_foot:=0; + set_triangle(up,a,rth1,false,false); + filldraw z1r--z2r--z3r--cycle; +endchar; + +beginchar(triangle_med_full_down, + 12u#+2appr#,x_height#,0); + "Medium full triangle down"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; triangle_foot:=h; + set_triangle(down,a,rth1,false,false); + filldraw z1r--z2r--z3r--cycle; +endchar; + +% BIG TRIANGLES + +beginchar(triangle_big_left, + 13u#+2appr#,cap_height#,0); + "Big triangle left"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; + set_triangle(left,a,rth1,true,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +beginchar(triangle_big_right, + 13u#+2appr#,cap_height#,0); + "Big triangle right"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; + set_triangle(right,a,rth1,true,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +beginchar(triangle_big_up, + 13u#+2appr#,cap_height#,0); + "Big triangle up"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; triangle_foot:=0; + set_triangle(up,a,rth1,false,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +beginchar(triangle_big_down, + 13u#+2appr#,cap_height#,0); + "Big triangle down"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; triangle_foot:=h; + set_triangle(down,a,rth1,false,false); + filldraw stroke z1e--z2e--z3e--z1e; +endchar; + +% BIG FULL TRIANGLES + +beginchar(triangle_big_full_left, + 13u#+2appr#,cap_height#,0); + "Big full triangle left"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; + set_triangle(left,a,rth1,true,false); + filldraw z1r--z2r--z3r--cycle; +endchar; + +beginchar(triangle_big_full_right, + 13u#+2appr#,cap_height#,0); + "Big full triangle right"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; + set_triangle(right,a,rth1,true,false); + filldraw z1r--z2r--z3r--cycle; +endchar; + +beginchar(triangle_big_full_up, + 13u#+2appr#,cap_height#,0); + "Big full triangle up"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; triangle_foot:=0; + set_triangle(up,a,rth1,false,false); + filldraw z1r--z2r--z3r--cycle; +endchar; + +beginchar(triangle_big_full_down, + 13u#+2appr#,cap_height#,0); + "Big full triangle down"; + pickup tiny.nib; + a:=2(h+o)/sqrt 3; triangle_foot:=h; + set_triangle(down,a,rth1,false,false); + filldraw z1r--z2r--z3r--cycle; +endchar;
\ No newline at end of file diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathsubs.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathsubs.mf new file mode 100644 index 00000000000..8d87cd7d380 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathsubs.mf @@ -0,0 +1,257 @@ +% mathematical symbols by Anthony Phan. +% file: mathsubs.mf (subset symbols) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +% Inclusion signs and related things (relations). +% Some pictures overlap the bottom. It is necessary +% for correct centering of the whole box. +% Spreads for cross bars have been checked. + +def horizontal_rules_list=math_axis, + -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height +enddef; + +%turningcheck:=0; + +use_rule1; + +beginpicture(tmp,12u#+2appr#,v_center(spread2#+rth#)); +pickup tiny.nib; +if main_name_string="subset": + pos1(rth,90); pos2(rth,90); + pos4(rth,270); pos5(rth,270); + y1-y5=spread2; 0.5[y1,y5]=y3=math_axis; y2=y1; y4=y5; + rt x1=rt x5=w-Appr; x3-0.5rth=appr; x2=x4=1/3[x3,x1]; + filldraw stroke z5e..z4e; filldraw stroke z2e..z1e; + pickup rule.nib; autorounded; + draw z2 left_to_down z3 down_to_right z4; +elseif main_name_string="supset": + pos1(rth,90); pos2(rth,90); + pos3(rth,0); pos4(rth,-90); pos 5(rth,-90); + y1-y5=spread2; 0.5[y1,y5]=y3=math_axis; y2=y1; y4=y5; + lft x1=lft x5=Appr; x3+0.5rth=w-appr; x2=x4=1/3[x3,x1]; + filldraw stroke z1e..z2e; filldraw stroke z4e..z5e; + pickup rule.nib; autorounded; + draw z2 right_to_down z3 down_to_left z4; +elseif main_name_string="sqsubset": + pos1(rth,90); pos4(rth,-90); + x2l-x2r=x3l-x3r=rth-tiny; + y1-y4=spread2; 0.5[y1,y4]=math_axis; + rt x1=rt x4=w-Appr; lft x2r=lft x3r=Appr; + forsuffixes $=r,l: y1$=y2$; y3$=y4$; endfor + filldraw stroke z4e--z3e--z2e--z1e; +else: + pos1(rth,90); pos4(rth,-90); + x2r-x2l=x3r-x3l=rth-tiny; + y1-y4=spread2; 0.5[y1,y4]=math_axis; + lft x1=lft x4=Appr; rt x2r=rt x3r=w-Appr; + forsuffixes $=r,l: y1$=y2$; y3$=y4$; endfor + filldraw stroke z1e--z2e--z3e--z4e; +fi +endpicture; + +beginchar(main_name_with(), + 12u#+2appr#,v_center(spread2#+rth#)); + main_name_string&" sign"; + currentpicture:=tmp_picture; +endchar; + +beginchar(main_name_with(_not), + 12u#+2appr#,asc_height#,asc_depth#); + "not "&main_name_string&" sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + v_adjust(1l,2l,math_axis,max(h+d,spread2+spread1)); + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_eq), + 12u#+2appr#,v_center(spread2#+rth#+spread1#)); + main_name_string&" or equal sign"; + currentpicture:=tmp_picture + shifted(0,0.5spread1); + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); + y1=y2=math_axis-0.5(spread2+spread1); + lft x1=Appr; rt x2=w-Appr; + filldraw stroke z1e..z2e; penlabels(1,2); + tmp_picture:=currentpicture; +endchar; + +beginchar(main_name_with(_not_eq), + 12u#+2appr#,asc_height#,asc_depth#); + "not "&main_name_string&" nor equal sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + v_adjust(1l,2l,math_axis,max(h+d,spread2+2spread1)); + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_eq_not), + 12u#+2appr#,v_center(spread2#+rth#+spread1#)); + main_name_string&" but not equal sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + y0=math_axis-0.5(spread2+spread1); + x0=0.5w; + v_adjust(1r,2l,y0,1.5spread1-0.5rth); + lft x2l-Appr=w-Appr-rt x1r=hround 3.5u; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(0,1,2); +endchar; + +beginchar(main_name_with(_eq_varnot), + 12u#+2appr#,v_center(spread2#+rth#+spread1#)); + "variant "&main_name_string&" but not equal sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + y0=math_axis-0.5spread2; x0=0.5w; + v_adjust(1r,2l,y0,2.5spread1-0.5rth); + lft x2l-Appr=w-Appr-rt x1r=hround 2.75u; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(0,1,2); +endchar; + +beginchar(main_name_with(_eqq), + 12u#+2appr#,v_center(spread2#+rth#+2spread1#)); + main_name_string&" or equal-equal sign"; + currentpicture:=tmp_picture shifted(0,0.5spread1); + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); + y1=y2=math_axis+spread1-0.5spread2-2spread1; + lft x1=Appr; rt x2=w-Appr; + filldraw stroke z1e..z2e; penlabels(1,2); + tmp_picture:=currentpicture; +endchar; + +beginchar(main_name_with(_not_eqq), + 12u#+2appr#,asc_height#,asc_depth#); + "not "&main_name_string&" nor equal-equal sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + v_adjust(1l,2l,math_axis,max(h+d,spread2+3spread1)); + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_eqq_not), + 12u#+2appr#,v_center(spread2#+rth#+2spread1#)); + main_name_string&" but not equal-equal sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + y0=math_axis-0.5(spread2+spread1); + x0=0.5w; + v_adjust(1r,2l,y0,2.5spread1-0.5rth); + lft x2l-Appr=w-Appr-rt x1r=hround 2.75u; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(0,1,2); +endchar; + +beginchar(main_name_with(_eqq_varnot), + 12u#+2appr#,v_center(spread2#+rth#+2spread1#)); + "variant "&main_name_string&" but not equal-equal sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + y0=math_axis-0.5(spread2); x0=0.5w; + v_adjust(1r,2l,y0,3.5spread1-0.5rth); + lft x2l-Appr=w-Appr-rt x1r=hround 2.25u; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(0,1,2); +endchar; + +beginchar(main_name_with(_double), + arithmetic_bounds); + main_name_string&" double sign"; + pickup tiny.nib; + numeric a; a=0.5min(spread2,0.5(h+d-rth)); + if main_name_string="subset": + rt x1=rt x5=w-appr; rt x6=rt x10=w-Appr; + y1-y5=4vround a; y6-y10=2vround a; + y3=y8=0.5[y1,y5]=0.5[y6,y10]=math_axis; + y2=y1; y4=y5; y7=y6; y9=y10; + pos1(rth,90); pos2(rth,90); + pos3(rth,180); pos4(rth,270); pos5(rth,270); + pos6(rth,90); pos7(rth,90); + pos8(rth,180); pos9(rth,270); pos10(rth,270); + lft x3r=appr; x8-x3=hround a; + x2=x4=x7=x9=1/3[x8,x6]; + filldraw stroke z5e..z4e left_to_up + z3e up_to_right z2e..z1e; + filldraw stroke z10e..z9e left_to_up + z8e up_to_right z7e..z6e; + penlabels(1,2,3,4,5,6,7,8,9,10); + elseif main_name_string="supset": + lft x1=lft x5=appr; lft x6=lft x10=Appr; + y1-y5=4vround a; y6-y10=2vround a; + y3=y8=0.5[y1,y5]=0.5[y6,y10]=math_axis; + y2=y1; y4=y5; y7=y6; y9=y10; + pos1(rth,90); pos2(rth,90); + pos3(rth,0); pos4(rth,270); pos5(rth,270); + pos6(rth,90); pos7(rth,90); + pos8(rth,0); pos9(rth,270); pos10(rth,270); + rt x3r=w-appr; x8-x3=-hround a; + x2=x4=x7=x9=1/3[x8,x6]; + filldraw stroke z1e..z2e right_to_down + z3e down_to_left z4e..z5e; + filldraw stroke z6e..z7e right_to_down + z8e down_to_left z9e..z10e; + penlabels(1,2,3,4,5,6,7,8,9,10); + elseif main_name_string="sqsubset": + rt x1=rt x5=w-appr; rt x6=rt x10=w-Appr; + y1-y5=4vround a; y6-y10=2vround a; + y3=y8=0.5[y1,y5]=0.5[y6,y10]=math_axis; + lft x3r=Appr; x8-x3=hround a; + pos1(rth,90); pos3(rth,180); pos5(rth,270); + pos6(rth,90); pos8(rth,180); pos10(rth,270); + forsuffixes $=,r,l: x2$=x3$=x4$; y1$=y2$; y4$=y5$; + x7$=x8$=x9$; y6$=y7$; y9$=y10$; endfor + filldraw stroke z5e--z4e--z2e--z1e; + filldraw stroke z10e--z9e--z7e--z6e; + penlabels(1,2,3,4,5,6,7,8,9,10); + else: + lft x1=lft x5=appr; lft x6=lft x10=Appr; + y1-y5=4vround a; y6-y10=2vround a; + y3=y8=0.5[y1,y5]=0.5[y6,y10]=math_axis; + rt x3r=w-Appr; x8-x3=-hround a; + pos1(rth,90); pos3(rth,0); pos5(rth,270); + pos6(rth,90); pos8(rth,0); pos10(rth,270); + forsuffixes $=,r,l: x2$=x3$=x4$; y1$=y2$; y4$=y5$; + x7$=x8$=x9$; y6$=y7$; y9$=y10$; endfor + filldraw stroke z1e--z2e--z4e--z5e; + filldraw stroke z6e--z7e--z9e--z10e; + penlabels(1,2,3,4,5,6,7,8,9,10); + fi + tmp_picture:=currentpicture; +endchar; + +beginchar(main_name_with(_double_not), + 12u#+2appr#,asc_height#,asc_depth#); + "not "&main_name_string&" double sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + numeric a; a= + if (main_name_string="subset") + or (main_name_string="sqsubset"): - fi + 0.5min(spread2,0.5(h+d-rth)); + pos1(rth,0); pos2(rth,0); + v_adjust(1l,2l,math_axis,max(h+d,12u+spread1)); + lft x1l=lft x2l=hround 0.5(w-0.5rth-0.5a); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(main_name_with(_dot), + 12u#+2appr#,v_center(spread2#+rth#)); + main_name_string&" with dot sign"; + currentpicture:=tmp_picture; + adjust_dot1((math_axis, + if (main_name_string="subset") + or (main_name_string="sqsubset"): w-appr-0.5dtsz + else: appr+0.5dtsz fi),dtsz,true,false); + dot(1,1'); +endchar; diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf new file mode 100644 index 00000000000..d5f5ad770ae --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf @@ -0,0 +1,1001 @@ +% mathematical symbols by Anthony Phan. +% file: mathsymb.mf (various mathematical symbols) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +def horizontal_rules_list=math_axis, + -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height +enddef; + +%%% !!! marked signs are to be revised + +use_rule1; + +% +% Usual binary relations. +% + +beginchar(negation_sign,12u#+2appr#,v_center(spread1#+rth#)); + "Negation sign"; + pickup tiny.nib; + pos1(rth,90); pos3(rth,0); + y2r=y1r; y2l=y1l; x2l=x3l; x2r=x3r; + y1=math_axis+0.5spread1; y1l-y3=spread1; + lft x1=Appr; rt x3r=w-Appr; + filldraw stroke z1e--z2e--z3e; + penlabels(1,2,3); +endchar; + +beginchar(not_sign,12u#+2appr#,asc_height#,asc_depth#); + "Not sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + top y1=h+eps; 0.5[bot y2,top y1]=math_axis; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); + charwd:=0; w:=0; +endchar; + +beginchar(varnot_sign,12u#+2appr#,asc_height#,asc_depth#); + "Variant not sign"; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); + charwd:=0; w:=0; +endchar; + +% +% equality signs and related things (relations). +% + +beginchar(colon_sign,3u#+2appr#,x_height#,0); + "Colon"; + pickup null.nib; + adjust_dot1((0.5w,h-0.5dtsz),dtsz,false,false); + adjust_dot2((0.5w,0.5dtsz),dtsz,false,false); + dot(1,1'); dot(2,2'); +endchar; + +beginchar(colon_equal_sign,15u#+2appr#,v_center(spread1#+rth#)); + "Colon-equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr+hround 3u; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((appr+1.5u,math_axis + +0.5max(0.5[x_height-dtsz,spread1],spread1)), + dtsz,false,false); dot(5,5'); + adjust_dot6((appr+1.5u,math_axis + -0.5max(0.5[x_height-dtsz,spread1],spread1)), + dtsz,false,false); dot(6,6'); +endchar; + +beginchar(equal_colon_sign,15u#+2appr#,v_center(spread1#+rth#)); + "Equal-colon sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr-hround 3u; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((w-appr-1.5u,math_axis + +0.5max(0.5[x_height-dtsz,spread1],spread1)), + dtsz,false,false); + adjust_dot6((w-appr-1.5u,math_axis + -0.5max(0.5[x_height-dtsz,spread1],spread1)), + dtsz,false,false); + dot(5,5'); dot(6,6'); + penlabels(1,2,3,4); +endchar; + +beginchar(top_dot_equal_sign,arithmetic_bounds); + "Top dot equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((0.5[x1,x2], + min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)), + dtsz,true,false); dot(5,5'); +endchar; + +beginchar(bot_dot_equal_sign,arithmetic_bounds); + "Bot dot equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((0.5[x1,x2], + max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)), + dtsz,true,false); dot(5,5'); +endchar; + +beginchar(top_bot_dot_equal_sign,arithmetic_bounds); + "Top bot dot equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((0.5[x1,x2], + min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)), + dtsz,true,false); dot(5,5'); + adjust_dot6((0.5[x1,x2], + max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)), + dtsz,true,false); dot(6,6'); +endchar; + +beginchar(rising_dots_equal_sign,arithmetic_bounds); + "Rising dots equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((w-appr-0.5dtsz, + min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)), + dtsz,false,false); dot(5,5'); + adjust_dot6((appr+0.5dtsz, + max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)), + dtsz,false,false); dot(6,6'); +endchar; + +beginchar(falling_dots_equal_sign,arithmetic_bounds); + "Falling dots equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((appr+0.5dtsz, + min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)), + dtsz,false,false); dot(5,5'); + adjust_dot6((w-appr-0.5dtsz, + max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)), + dtsz,false,false); dot(6,6'); +endchar; + +beginchar(bump_equal,12u#+2appr#,v_center(spread1#+rth#)); + "bumped equal sign"; + numeric t[]; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + pos5(rth,180); pos6(rth,90); pos7(rth,0); + lft x1=lft x3=appr; rt x2=rt x4=w-appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + rt x5l=hround 1/3[lft x1,rt x2]; x5l-x1=x2-x7l; + y5=y7=y1l; x6=0.5[x5,x7]; y6l-y1l=vround 0.5(x7l-x5l); + tmp_path:=z7r up_to_left z6r left_to_down z5r; + t1=xpart(tmp_path intersectiontimes (z2r..0.5[z1r,z2r])); + t2=xpart(tmp_path intersectiontimes (z1r..0.5[z1r,z2r])); + filldraw z1l--z5l up_to_right z6l right_to_down z7l--z2l-- + z2r--subpath(t1,t2) of tmp_path--z1r--cycle; + filldraw stroke z3e..z4e; penlabels(1,2,3,4,5,6,7); +endchar; + +beginchar(pump_equal,12u#+2appr#,v_center(spread1#+rth#)); + "pumped equal sign"; + numeric t[]; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + pos8(rth,0); pos9(rth,90); pos10(rth,180); + lft x1=lft x3=appr; rt x2=rt x4=w-appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + rt x8r=hround 1/3[lft x1,rt x2]; x8r-x3=x4-x10r; + y8=y10=y3r; x9=0.5[x8,x10]; y3r-y9r=vround 0.5(x10r-x8r); + tmp_path:=z8l down_to_right z9l right_to_up z10l; + t1=xpart(tmp_path intersectiontimes (z3l..0.5[z3l,z4l])); + t2=xpart(tmp_path intersectiontimes (z4l..0.5[z3l,z4l])); + filldraw z3l--subpath(t1,t2) of tmp_path--z4l + --z4r--z10r up_to_left z9r left_to_down z8r--z3r--cycle; + filldraw stroke z1e..z2e; penlabels(1,2,3,4,8,9,10); +endchar; + +beginchar(Bump_equal,12u#+2appr#,v_center(spread1#+rth#)); + "Bumped equal"; + numeric t[]; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + pos5(rth,180); pos6(rth,90); pos7(rth,0); pos8(rth,0); + pos9(rth,90); pos10(rth,180); + lft x1=lft x3=appr; rt x2=rt x4=w-appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + rt x5l=rt x8r=hround 1/3[lft x1,rt x2]; x5l-x1=x2-x7l; x10r=x7l; + y5=y7=y1l; y8=y10=y3r; x6=x9=0.5[x5,x7]; + y6l-y1l=y3r-y9r=vround 0.5(x7l-x5l); + tmp_path:=z7r up_to_left z6r left_to_down z5r; + tmpp_path:=z8l down_to_right z9l right_to_up z10l; + t1=xpart(tmp_path intersectiontimes (z2r..0.5[z1r,z2r])); + t2=xpart(tmp_path intersectiontimes (z1r..0.5[z1r,z2r])); + t3=xpart(tmpp_path intersectiontimes (z3l..0.5[z3l,z4l])); + t4=xpart(tmpp_path intersectiontimes (z4l..0.5[z3l,z4l])); + filldraw z1l--z5l up_to_right z6l right_to_down z7l--z2l-- + z2r--subpath(t1,t2) of tmp_path--z1r--cycle; + filldraw z3l--subpath(t3,t4) of tmpp_path--z4l + --z4r--z10r up_to_left z9r left_to_down z8r--z3r--cycle; + penlabels(1,2,3,4,5,6,7,8,9,10); +endchar; + +%%% !!! +beginchar(circ_equal_sign,arithmetic_bounds); + "Circle-equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % lower bar + pickup rule.nib0; + a:=min(max(7u,dtsz+rth0),spread1+rth); + adjust_dot5((0.5[x1,x2],max(vround(1/6[top y1,h])+0.5a,h-0.5a)+o), + a,true,false); + full_dot:=false; dot(5,5'); + penlabels(1,2); +endchar; + +beginchar(equal_circ_sign,12u#+2appr#,v_center(spread1#+rth#)); + "Equal-circle sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % lower bar + pickup rule.nib0; + a:=min(max(7u,dtsz+rth0),spread1+rth); + adjust_dot5(0.5[z3,z2],a,true,false); + full_dot:=false; dot(5,5'); + penlabels(1,2); +endchar; + +%%% !!! +beginchar(triangle_equal_sign,arithmetic_bounds); + "Triangle-equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % lower bar + triangle_foot:=vround 1/6[top y1r,h]; + a:=min(2max(h+o-triangle_foot,spread1+rth+o)/sqrt 3,7u); + set_triangle'(up,a,rth0,false,false); + filldraw stroke z1'e--z2'e--z3'e--z1'e; +endchar; + +%%% !!! +beginchar(correspondance_sign,arithmetic_bounds); + "Correspondance sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % lower bar +% + top y6r=h+o; bot y5r=vround(1/6[top y1r,h]); + y5r=y5l=y7r=y7l; + x6r=0.5[x1,x2]; x5r-x1=x2-x7r=hround 0.5u; + x5l-x5r=diag_width(rth-tiny,z6r-z5r); + x7r-x7l=diag_width(rth-tiny,z6r-z7r); + z6l-z5l=whatever*(z6r-z5r); z6l-z7l=whatever*(z6r-z7r); + filldraw stroke z5e--z6e--z7e; + penlabels(1,2,3,4,5,6,7); +endchar; + +beginchar(hash_sign,arithmetic_bounds); + "Hash sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + pos5(rth,0); pos6(rth,0); pos7(rth,0); pos8(rth,0); + lft x1=lft x3=Appr; + lft x5l=lft x6l=hround 0.5(w+Appr-Appr-spread1-rth); + x7-x5=x8-x6=spread1; x2-x7r=x4-x7r=x5l-x1; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + top y5=top y7=h; y5-y1=y3-y6; y8=y6; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); +endchar; + +beginchar(var_hash_sign,arithmetic_bounds); + "Variant hash sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + bot y6l=-d; top y7r=h; lft x6l=w-rt x7r=Appr+hround 1.25u; + adjust_slanted_bar(6l,7r,8r,5l)(spread1+rth-tiny,-1); + numeric a; a=(rth-tiny)/sind angle(z5l-z6l); + penpos5(a,0); penpos6(a,0); penpos7(a,0); penpos8(a,0); +% I'm not sure that it's a good idea, but wel, that's +% school works. + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke diag_stroke.e(5,6,r,y1r,y1l,y3r,y3l); + filldraw stroke diag_stroke.e(7,8,r,y1r,y1l,y3r,y3l); +% filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); +endchar; + +beginchar(vdash_sign,12u#+2appr#,v_center(12u#)); + "vdash sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + lft x1l=lft x2l=Appr; rt x4=w-Appr; x3=x1; + top y1=h; 0.5[y1,y2]=math_axis=y3=y4; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); tmp_picture:=currentpicture; +endchar; + +beginchar(vdash_not,12u#+2appr#,asc_height#,asc_depth#); + "Not vdash sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(dashv_sign,12u#+2appr#,v_center(12u#)); + "dashv sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + rt x1r=rt x2r=w-Appr; lft x3=Appr; x4=x1; + top y1=h; 0.5[y1,y2]=math_axis=y3=y4; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); tmp_picture:=currentpicture; +endchar; + +beginchar(dashv_not,12u#+2appr#,asc_height#,asc_depth#); + "Not dashv sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(vDash_sign,12u#+2appr#,v_center(12u#)); + "vDash sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + pos5(rth,90); pos6(rth,90); + lft x1l=lft x2l=Appr; rt x4=rt x6=w-Appr; x3=x5=x1; + top y1=h; y3-y5=spread1; 0.5[y1,y2]=math_axis=0.5[y3,y5]; + y4=y3; y6=y5; filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); + tmp_picture:=currentpicture; +endchar; + +beginchar(vDash_not,12u#+2appr#,asc_height#,asc_depth#); + "Not vDash sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(Dashv_sign,12u#+2appr#,v_center(12u#)); + "Dashv sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + pos5(rth,90); pos6(rth,90); + rt x1r=rt x2r=w-Appr; lft x3=lft x5=Appr; x4=x6=x1; + top y1=h; y3-y5=spread1; 0.5[y1,y2]=math_axis=0.5[y3,y5]; + y4=y3; y6=y5; filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); + tmp_picture:=currentpicture; +endchar; + +beginchar(Dashv_not,12u#+2appr#,asc_height#,asc_depth#); + "Not Dashv sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(Vdash_sign,12u#+2appr#,v_center(12u#)); + "Vdash sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,90); pos6(rth,90); + lft x1l=lft x2l=Appr; x3=x4=x1+spread1; + rt x6=w-appr; x5=x3; + top y1=h; 0.5[y1,y2]=math_axis=y5=y6; y1=y3; y2=y4; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); + tmp_picture:=currentpicture; +endchar; + +beginchar(Vdash_not,12u#+2appr#,asc_height#,asc_depth#); + "Not Vdash sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(dashV_sign,12u#+2appr#,v_center(12u#)); + "dashV sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,90); pos6(rth,90); + rt x1r=rt x2r=w-Appr; x3=x4=x1-spread1; + lft x5=appr; x6=x3; + top y1=h; 0.5[y1,y2]=math_axis=y5=y6; y1=y3; y2=y4; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); + tmp_picture:=currentpicture; +endchar; + +beginchar(dashV_not,12u#+2appr#,asc_height#,asc_depth#); + "Not dashV sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(VDash_sign,12u#+2appr#,v_center(12u#)); + "VDash sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,90); pos6(rth,90); pos7(rth,90); pos8(rth,90); + lft x1l=lft x2l=Appr; x3=x4=x1+spread1; + rt x6=rt x8=w-appr; x5=x7=x3; + top y1=h; y5-y7=spread1; + 0.5[y1,y2]=0.5[y5,y7]=math_axis; + y1=y3; y2=y4; y5=y6; y7=y8; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture; +endchar; + +beginchar(VDash_not,12u#+2appr#,asc_height#,asc_depth#); + "Not Vdash sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(DashV_sign,12u#+2appr#,v_center(12u#)); + "DashV sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,90); pos6(rth,90); pos7(rth,90); pos8(rth,90); + rt x1r=rt x2r=w-Appr; x3=x4=x1-spread1; + lft x5=lft x7=appr; x6=x8=x3; + top y1=h; y5-y7=spread1; + 0.5[y1,y2]=0.5[y5,y7]=math_axis; + y1=y3; y2=y4; y5=y6; y7=y8; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture; +endchar; + +beginchar(DashV_not,12u#+2appr#,asc_height#,asc_depth#); + "Not DashV sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(Vvdash_sign,12u#+2appr#,v_center(12u#)); + "Vvdash sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,0); pos6(rth,0); pos7(rth,90); pos8(rth,90); + lft x1l=lft x2l=Appr; x3=x4=x1+spread1; x5=x6=x3+spread1; + rt x8=w-appr; x7=x5; + top y1=h; 0.5[y1,y2]=math_axis=y7=y8; y1=y3=y5; y2=y4=y6; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture; +endchar; + +beginchar(Vvdash_not,12u#+2appr#,asc_height#,asc_depth#); + "Not Vvdash sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(dashVv_sign,12u#+2appr#,v_center(12u#)); + "dashVv sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,0); pos6(rth,0); pos7(rth,90); pos8(rth,90); + rt x1r=rt x2r=w-Appr; x3=x4=x1-spread1; x5=x6=x3-spread1; + lft x7=appr; x8=x5; + top y1=h; 0.5[y1,y2]=math_axis=y7=y8; y1=y3=y5; y2=y4=y6; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture; +endchar; + +beginchar(dashVv_not,12u#+2appr#,asc_height#,asc_depth#); + "Not dashVv sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(therefore_sign,arithmetic_bounds); + "Therefore sign"; + pickup null.nib; + a:=(12u-dtsz)/sqrt 12; + x0=0.5w; y0=math_axis; + adjust_dot1((x0,y0+2a),dtsz,false,false); + adjust_dot2((appr+0.5dtsz,y0-a),dtsz,false,false); + adjust_dot3((w-appr-0.5dtsz,y0-a),dtsz,false,false); + dot(1,1'); dot(2,2'); dot(3,3'); +endchar; + +beginchar(because_sign,arithmetic_bounds); + "Because sign"; + pickup null.nib; + a:=(12u-dtsz)/sqrt 12; + x0=0.5w; y0=math_axis; + adjust_dot1((x0,y0-2a),dtsz,false,false); + adjust_dot2((appr+0.5dtsz,y0+a),dtsz,false,false); + adjust_dot3((w-appr-0.5dtsz,y0+a),dtsz,false,false); + dot(1,1'); dot(2,2'); dot(3,3'); +endchar; + +beginchar(bowtie_sign,arithmetic_bounds); + "Bowtie sign"; + pickup tiny.nib; + a:=(11u+rth-tiny)/sqrt 2;% see times_sign + y1r=y3l=good.y(math_axis+0.5a); y2l=y4r=y1r-vround a; + lft x1r=lft x4r=Appr; rt x2l=rt x3l=w-Appr; + adjust_slanted_bar(1r,2l,1,2)(rth-tiny,-1); + adjust_slanted_bar(4r,3l,4,3)(rth-tiny,1); + rth-tiny=x1l-x1r=x2l-x2r=x3l-x3r=x4l-x4r; + z1l=whatever[z1,z2l]; z2r=whatever[z2,z1r]; + z3r=whatever[z3,z4r]; z4l=whatever[z4,z3l]; + filldraw stroke z1e--z2e--z3e--z4e--z1e; + penlabels(1,2,3,4); +endchar; + +% +% domination signs and related things (relations). +% + +beginchar(dominated,12u#+2appr#,v_center(spread4#+rth#)); + "dominated by sign"; + pickup tiny.nib; + top y1r=top y4r=h; y2l=y5l=good.y math_axis; + y1r-y2l=y2l-y3r; y6r=y3r; + lft x2l=Appr; rt x4r=w-Appr; + x1r-x2l=x3r-x2l=x4r-x5l=x6r-x5l=hround(6.5u-tiny); + adjust_slanted_bar(2l,1r,2a,1l)(rth-tiny,-1); + adjust_slanted_bar(2l,3r,2b,3l)(rth-tiny,1); + z2r=whatever[z1r,z2a]; z2r=whatever[z3r,z2b]; + z4r-z4l=z1r-z1l; z5r-z5l=z2r-z2l; z6r-z6l=z3r-z3l; + filldraw stroke z1e--z2e--z3e; filldraw stroke z4e--z5e--z6e; + penlabels(1,2,3,4,5,6); labels(2a,2b); +endchar; + +beginchar(dominating,12u#+2appr#,v_center(spread4#+rth#)); + "dominating sign"; + pickup tiny.nib; + top y1r=top y4r=h; y2l=y5l=good.y math_axis; + y1r-y2l=y2l-y3r; y6r=y3r; + lft x4r=Appr; rt x2l=w-Appr; + x1r-x2l=x3r-x2l=x4r-x5l=x6r-x5l=-hround(6.5u-tiny); + adjust_slanted_bar(2l,1r,2a,1l)(rth-tiny,1); + adjust_slanted_bar(2l,3r,2b,3l)(rth-tiny,-1); + z2r=whatever[z1r,z2a]; z2r=whatever[z3r,z2b]; + z4r-z4l=z1r-z1l; z5r-z5l=z2r-z2l; z6r-z6l=z3r-z3l; + filldraw stroke z3e--z2e--z1e; filldraw stroke z6e--z5e--z4e; + penlabels(1,2,3,4,5,6); labels(2a,2b); +endchar; + +beginchar(Dominated,12u#+2appr#,v_center(spread4#+spread1#+rth#)); + "Dominated by sign"; + pickup tiny.nib; + y2r=0.5[y1,y3]=0.5[y4,y6]=good.y math_axis; + y1-y3=2(y4-y6)=spread1+spread4; + rt x1=w-Appr; lft x2r=Appr; x1=x1r=x3=x3r=x4=x6; + adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),-1); + adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),1); + z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b]; + z1r-z1=z1-z1l=z4r-z4=z4-z4l; z3r-z3=z3-z3l=z6r-z6=z6-z6l; + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + z5r-z4r=whatever*(z2r-z1r); z5r-z6r=whatever*(z2r-z3r); + z5l-z4l=whatever*(z2r-z1r); z5l-z6l=whatever*(z2r-z3r); + filldraw stroke z3e--z2e--z1e; filldraw stroke z6e--z5e--z4e; + penlabels(1,2,3,4,5,6); labels(1a,3b,2a,2b); +endchar; + +beginchar(Dominating,12u#+2appr#,v_center(spread4#+spread1#+rth#)); + "Dominated by sign"; + pickup tiny.nib; + y2r=0.5[y1,y3]=0.5[y4,y6]=good.y math_axis; + y1-y3=2(y4-y6)=spread1+spread4; + lft x1=Appr; rt x2r=w-Appr; x1=x1r=x3=x3r=x4=x6; + adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),1); + adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),-1); + z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b]; + z1r-z1=z1-z1l=z4r-z4=z4-z4l; z3r-z3=z3-z3l=z6r-z6=z6-z6l; + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + z5r-z4r=whatever*(z2r-z1r); z5r-z6r=whatever*(z2r-z3r); + z5l-z4l=whatever*(z2r-z1r); z5l-z6l=whatever*(z2r-z3r); + filldraw stroke z1e--z2e--z3e; filldraw stroke z4e--z5e--z6e; + penlabels(1,2,3,4,5,6); labels(1a,3b,2a,2b); +endchar; + +% +% TO BE REVISED +% + +beginchar(Dominated_curly,14u#+2appr#,v_center(spread4#+spread1#+rth#)); + "Curly dominated by sign"; + pickup tiny.nib; + pos2(rth,-90); pos4(rth,-90); + top y1r=top y5r=h; y2=math_axis=0.5[y1r,y3l]=0.5[y5r,y8r]; + lft x2=appr; rt x5r=rt x8r=w-appr; x5r-x1r=x8r-x3l=hround 2.5u; + x4r=2/3[x2r,x1r]; y4r=y2r; a:=diag_width(rth,z1r-z4r); + pos1(a,0); pos5(a,0); pos3(a,180); pos8(a,0); + filldraw stroke z1e{z4r-z1r}...z2e{left}; + filldraw stroke z3e{z4l-z3l}...z2e{left}; +% + rt x6l=rt x7l=hround(0.5w+0.5u); y6l=y7l=good.y math_axis; + tmp_path:=z5l{z4r-z1r}...z6l; + z0=direction 1 of tmp_path; a:=angle z0; + pos6(rth,a+90); pos7(rth,-90-a); + tmp_path:=z8r{z4l-z3l}...z7r{z0 yscaled -1}; + t:=xpart(tmp_path intersectiontimes (z6l..(x5r,y6l))); + filldraw z5l{z4r-z1r}...z6l& z7l...z8l{z3l-z4l} + --subpath (0,t-eps) of tmp_path + --reverse subpath (0,t-eps) of (z5r{z4r-z1r}...z6r{z0})--cycle; + penlabels(0,1,2,3,4,5,6,7,8); +endchar; + +beginchar(Dominating_curly,14u#+2appr#,v_center(spread4#+spread1#+rth#)); + "Curly dominating sign"; + pickup tiny.nib; + pos2(rth,90); pos4(rth,90); + top y1l=top y5l=h; y2=math_axis=0.5[y1l,y3r]=0.5[y5l,y8l]; + rt x2=w-appr; lft x5l=lft x8l=appr; x5l-x1l=x8l-x3r=-hround 2.5u; + x4l=2/3[x2l,x1l]; y4l=y2l; a:=diag_width(rth,z1l-z4l); + pos1(a,0); pos5(a,0); pos3(a,180); pos8(a,0); + filldraw stroke z1e{z4l-z1l}...z2e{right}; + filldraw stroke z3e{z4r-z3r}...z2e{right}; +% + lft x6r=lft x7r=hround(0.5w-0.5u); y6r=y7r=good.y math_axis; + tmp_path:=z5r{z4l-z1l}...z6r; + z0=direction 1 of tmp_path; a:=angle z0; + pos6(rth,a+90); pos7(rth,-90-a); + tmp_path:=z8l{z4r-z3r}...z7l{z0 yscaled -1}; + t:=xpart(tmp_path intersectiontimes (z6r..(x5l,y6r))); + filldraw z5r{z4l-z1l}...z6r& z7r...z8r{z3r-z4r} + --subpath (0,t-eps) of tmp_path + --reverse subpath (0,t-eps) of (z5l{z4l-z1l}...z6l{z0})--cycle; + penlabels(0,1,2,3,4,5,6,7,8); +endchar; + +beginpicture(tmp,12u#+2appr#,v_center(spread2#+rth#)); +pickup tiny.nib; +rt x1=rt x1r=rt x3=rt x3r=w-Appr; lft x2r=appr-hround u; +x1r-x1l=x3r-x3l=rth-tiny; +y2r=y2a=y2b=good.y math_axis; y1-y2r=y2r-y3=0.5(h+d-rth); +adjust_slanted_bar(1,2r,1a,2a)(0.5(rth-tiny),-1); +adjust_slanted_bar(3,2r,3b,2b)(0.5(rth-tiny),1); +z1r=whatever[z1a,z2r]; z3r=whatever[z3b,z2r]; +z1l-2z1+z1r=whatever*(z2a-z1); +z3l-2z3+z3r=whatever*(z2b-z3); +z2l-z1l=whatever*(z2b-z1); +z2l-z3l=whatever*(z2b-z3); +filldraw stroke z1e--z3e--z2e--z1e; +% penlabels(1,2,3); labels(1a,2a,2b,3b); +numeric a; pair u_; u_=z2r-z3r; a=1/abs cosd angle u_; +endpicture; + +beginchar(triangle_left,12u#+2appr#, + v_center(spread2#+rth#)); + "Triangle left"; + currentpicture:=tmp_picture; +endchar; + +beginchar(not_triangle_left,12u#+2appr#,asc_height#,asc_depth#); + "Not triangle left"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + top y2l=h; 0.5[bot y2l,top y1l]=good.y math_axis; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z2e..z1e; penlabels(1,2); +endchar; + +beginchar(triangle_left_eq,12u#+2appr#, + v_center(if true_size: spread2#+rth#+a*spread1# + else: spread2#+rth#+spread1# + fi)); + "Triangle left equal"; + currentpicture:=tmp_picture + shifted(0,vround(a*0.5spread1)); + pickup tiny.nib; + penpos1((rth-tiny)*a,90); + penpos2((rth-tiny)*a,90); + rt x2=w-Appr; lft x1=appr-hround u; y2=-d+0.5rth; z1-z2=whatever*u_; + filldraw stroke z1e..z2e; penlabels(1,2); + tmp_picture:=currentpicture; +endchar; + +beginchar(not_triangle_left_eq,12u#+2appr#,asc_height#,asc_depth#); + "Not triangle left equal"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); bot y1l=-d; top y2l=h; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z2e..z1e; penlabels(1,2); +endchar; + +beginpicture(tmp,12u#+2appr#,v_center(spread2#+rth#)); +pickup tiny.nib; +lft x1=lft x1r=lft x3=lft x3r=Appr; rt x2r=w-appr+hround u; +x1l-x1r=x3l-x3r=rth-tiny; +y2r=y2a=y2b=good.y math_axis; y1-y2r=y2r-y3=0.5(h+d-rth); +adjust_slanted_bar(1,2r,1a,2a)(0.5(rth-tiny),1); +adjust_slanted_bar(3,2r,3b,2b)(0.5(rth-tiny),-1); +z1r=whatever[z1a,z2r]; z3r=whatever[z3b,z2r]; +z1l-2z1+z1r=whatever*(z2a-z1); +z3l-2z3+z3r=whatever*(z2b-z3); +z2l-z1l=whatever*(z2b-z1); +z2l-z3l=whatever*(z2b-z3); +filldraw stroke z1e--z2e--z3e--z1e; +% penlabels(1,2,3); labels(1a,2a,2b,3b); +numeric a; pair u_; u_=z2r-z3r; a=1/abs cosd angle u_; +endpicture; + +beginchar(triangle_right,12u#+2appr#,v_center(spread2#+rth#)); + "Triangle right"; + currentpicture:=tmp_picture; +endchar; + +beginchar(not_triangle_right,12u#+2appr#,asc_height#,asc_depth#); + "Not triangle right"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + top y2l=h; 0.5[bot y2l,top y1l]=good.y math_axis; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z2e..z1e; penlabels(1,2); +endchar; + +beginchar(triangle_right_eq,12u#+2appr#, + v_center(if true_size: + spread2#+rth#+a*spread1# + else: spread2#+rth#+spread1# + fi)); + "Triangle right equal"; + currentpicture:=tmp_picture + shifted(0,vround(a*0.5spread1)); + pickup tiny.nib; + penpos1((rth-tiny)*a,90); + penpos2((rth-tiny)*a,90); + lft x2=Appr; rt x1=w-appr+hround u; y2=-d+0.5rth; z1-z2=whatever*u_; + filldraw stroke z2e..z1e; penlabels(1,2); + tmp_picture:=currentpicture; +endchar; + +beginchar(not_triangle_right_eq,12u#+2appr#,asc_height#,asc_depth#); + "Not triangle right equal"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); bot y1l=-d; top y2l=h; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z2e..z1e; penlabels(1,2); + tmp_picture:=currentpicture; +endchar; + +vardef d_problem(expr origin,top_lim,side_lim,breadth)= + save a,b,c; + a=abs((side_lim-xpart origin)/(top_lim-ypart origin)); + b=abs(breadth/(top_lim-ypart origin)); + begingroup + vardef f(expr c)= + (1+a**2-2a*b*c+(b*c)**2)*(c**2)<1 + enddef; + c=solve f(0,breadth); + endgroup; + breadth*(c,1+-+c) +enddef; + +%%% !!! +beginchar(angle_sign,12u#+2appr#,asc_height#,0); + "Angle sign"; + pickup tiny.nib; + rt x1l=w-appr; lft x2l=appr; rt x3r=w-appr-hround 1.5u; + bot y1l=bot y2l=0; top y3l=h+eps; pos1(rth,90); + (x3r-x3l,y3l-y3r)=d_problem(z2l,y3l,x3r,rth-tiny); + y2r=y1r; z2r-z3r=whatever*(z2l-z3l); + filldraw stroke z1e--z2e--z3e; + penlabels(1,2,3); +endchar; + +%%% !!! +beginchar(measured_angle,12u#+2appr#,asc_height#,asc_depth#); + "Measured angle sign"; + pickup tiny.nib; + rt x1l=w-appr; lft x2l=appr; rt x3r=w-appr-hround 1.5u; + bot y1l=bot y2l=0; top y3l=h+eps; pos1(rth,90); + (x3r-x3l,y3l-y3r)=d_problem(z2l,y3l,x3r,rth-tiny); + y2r=y1r; z2r-z3r=whatever*(z2l-z3l); + filldraw stroke z1e--z2e--z3e; + % + numeric a; + y2l=y5r; rt x5r=hround max(0.6[Appr,w-Appr]+0.5rth,x2l+0.5(h+d))+eps; + pos5(rth,0); + a=x5r-x2l; 0.5 y4=-d+eps; 0.5(x4-x2l)=a+-+min((0.5(y4-y2l)),a); + 0.5(z6-z2l)=a*dir min((angle(z3l-z2l)-angle(z4-z2l)),90); + numeric t[]; + tmp_path:=halfcircle rotated -90 scaled 2(x5r-x2r) shifted z2r; + tmpp_path:=reverse(halfcircle rotated -90 scaled 2(x5l-x2r) shifted z2r); + t1=xpart(tmp_path intersectiontimes (z2l..z4)); + t2=xpart(tmp_path intersectiontimes (z2l..z6)); + z4r=point t1 of tmp_path; z6r=point t2 of tmp_path; + t3=xpart(tmpp_path intersectiontimes (z2l..z6)); + t4=xpart(tmpp_path intersectiontimes (z2l..z4)); + z4l=point t4 of tmpp_path; z6l=point t3 of tmpp_path; + filldraw subpath (t1,t2) of tmp_path + --subpath (t3,t4) of tmpp_path--cycle; + penlabels(1,2,3,4,5,6); +endchar; + +%%% !!! +beginchar(spherical_angle,arithmetic_bounds); + "Spherical angle sign"; + pickup tiny.nib; + % < part + y2r=0.5[y1,y3]=good.y math_axis; y1-y3=spread4; + rt x1=w-Appr; lft x2r=Appr; x1=x1r=x3=x3r; + adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),-1); + adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),1); + z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b]; + z1r-z1=z1-z1l; z3r-z3=z3-z3l; + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + filldraw stroke z3e--z2e--z1e; + % ) part + y2r=y5r; rt x5r=hround max(0.6[Appr,w-Appr]+0.5rth,x2r+0.5(h+d))+eps; + top y6=h+eps; y6-y2r=y2r-y4; pos5(rth,0); + numeric t[]; + tmp_path:=halfcircle rotated -90 scaled 2(x5r-x2r) shifted z2r; + tmpp_path:=reverse(halfcircle rotated -90 scaled 2(x5l-x2r) shifted z2r); + t1=xpart(tmp_path intersectiontimes ((0,y4)..(w,y4))); + t2=xpart(tmp_path intersectiontimes ((0,y6)..(w,y6))); + z4r=point t1 of tmp_path; z6r=point t2 of tmp_path; + t3=xpart(tmpp_path intersectiontimes (z2r..z6r)); + t4=xpart(tmpp_path intersectiontimes (z2r..z4r)); + z4l=point t4 of tmpp_path; z6l=point t3 of tmpp_path; + filldraw subpath (t1,t2) of tmp_path + --subpath (t3,t4) of tmpp_path--cycle; + penlabels(1,2,3,4,5,6); +endchar; + +beginchar(between_sign,7u#+2appr#,body_height#,paren_depth#); + "Between sign"; + pickup tiny.nib; + pos2(hround 0.75[hair,stem],0); pos5(hround 0.75[hair,stem],0); + top y1l=top y4r=h+eps; bot y3l=bot y6r=-d-eps; + y0r=y0l=y2=y5=math_axis; + rt x1r=rt x3r=rt x5r+hround 0.75u=w-appr; + lft x4l=lft x6l=lft x2l-hround 0.75u=appr; + x2l-x0l=x0r-x5r=x5r-x2l; + (x1r-x1l,y1l-y1r)=(x3r-x3l,y3r-y3l) + =(x4r-x4l,y4r-y4l)=(x6r-x6l,y6l-y6r) + =d_problem(z0l,y1l,x1r,max(0,vair-tiny)); + filldraw stroke z1e{z0l-z1l}..z2e..z3e{z3l-z0l}; + filldraw stroke z4e{z0r-z4r}..z5e..z6e{z6r-z0r}; + penlabels(1,2,3,4,5,6); +endchar; + +%%% !!! +beginchar(times_left_three,arithmetic_bounds); + "Left three times sign"; + pickup tiny.nib; + top y1l=top y3r=h; bot y2r=bot y4l=-d; + lft x1l=lft x4l=appr; rt x2r=rt x3r=w-appr; + adjust_slanted_bar(1l,2r,1r,2l)(rth-tiny,1); + adjust_slanted_bar(3r,4l,3l,4r)(rth-tiny,-1); + z1=0.5[z1l,z1r]; z2=0.5[z2l,z2r]; + forsuffixes $=r,l: z5$=whatever[z1,z2]; + z5$=whatever[z3$,z4$]; endfor; + filldraw stroke z1e..z2e; filldraw stroke z5e..z4e; + penlabels(1,2,3,4,5); +endchar; + +%%% !!! +beginchar(times_right_three,arithmetic_bounds); + "Right three times sign"; + pickup tiny.nib; + top y1l=top y3r=h; bot y2r=bot y4l=-d; + lft x1l=lft x4l=appr; rt x2r=rt x3r=w-appr; + adjust_slanted_bar(1l,2r,1r,2l)(rth-tiny,1); + adjust_slanted_bar(3r,4l,3l,4r)(rth-tiny,-1); + z3=0.5[z3l,z3r]; z4=0.5[z4l,z4r]; + forsuffixes $=r,l: z5$=whatever[z3,z4]; + z5$=whatever[z1$,z2$]; endfor; + filldraw stroke z3e..z4e; filldraw stroke z5e..z2e; + penlabels(1,2,3,4,5); +endchar; + +beginchar(pitchfork_sign,12u#+2appr#,asc_height#,0); + "Small cap sign"; + ensure_centering_of(rth); + pickup tiny.nib; + pos1(rth,180); pos2(rth,180); + pos4(rth,0); pos5(rth,0); pos6(rth,0); pos7(rth,0); + y3+0.5rth=x_height+o; bot y1r=bot y5r=bot y7+o=-d; + top y6=h; y2=y4=2/3[y3,y1r]; + lft x1r=w-rt x5r=appr+hround 0.8u; + x1=x2; x4=x5; x3=x6=x7=0.5w; + filldraw stroke z1e..z2e; filldraw stroke z4e..z5e; + filldraw stroke z6e..z7e; + pickup rule.nib; autorounded; + draw z2 up_to_right z3 right_to_down z4; + penlabels(1,2,3,4,5,6,7); +endchar; + +beginchar(smile_sign,16u#+2appr#,v_center(0.5x_height#)); + "Smile sign"; + pickup tiny.nib; + a:=vround 0.5[vair,stem]; pos2(a,90); + y2-0.5a=vround(-d-0.5a); y1l=y3l=good.y h; + lft x1l=appr; rt x3l=w-appr; x2=0.5[x1l,x3l]; + z1'-z1l=(z2l-z1l) xscaled 1/3; + z3'-z3l=(z2l-z3l) xscaled 1/3; + pos1(hair,angle(z1'-z1l)+90); + pos3(hair,angle(z3'-z3l)-90); + filldraw stroke z1e{z1'-z1l}...z2e{right}...z3e{z3l-z3'}; + penlabels(1,2,3); labels(1',3'); +endchar; + +beginchar(frown_sign,16u#+2appr#,v_center(0.5x_height#)); + "Frown sign"; + pickup tiny.nib; + a:=vround 0.5[vair,stem]; pos2(a,90); + y2+0.5a=vround(h+0.5a); y1r=y3r=good.y -d; + lft x1r=appr; rt x3r=w-appr; x2=0.5[x1r,x3r]; + z1'-z1r=(z2r-z1r) xscaled 1/3; + z3'-z3r=(z2r-z3r) xscaled 1/3; + pos1(hair,angle(z1'-z1r)+90); + pos3(hair,angle(z3'-z3r)-90); + filldraw stroke z1e{z1'-z1r}...z2e{right}...z3e{z3r-z3'}; + penlabels(1,2,3); labels(1',3'); +endchar; diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathu10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathu10.mf new file mode 100644 index 00000000000..e671d499182 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathu10.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathu10.mf (math serie U at 10 points) +% last modification: May 16, 2005. + +font_identifier:="mathu"; font_size 10pt#; +font_coding_scheme "mathu"; + +input mathprmt; +input mathudrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathudrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathudrv.mf new file mode 100644 index 00000000000..5915f015ed4 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathudrv.mf @@ -0,0 +1,189 @@ +% mathematical symbols by Anthony Phan. +% file: mathadrv.mf (driver file for matha serie, +% U stands for Unsupported) +% last modification: May 16, 2005. + +mode_setup; + +math_setup; + +% Activate to allow characters with undefined code. +% (for proof mode compilation) +% let iff=always_iff; +% turningcheck:=0; +% true_size:=true; + +% BINARY OPERATORS + +% mathsymb.mf + +% mathsmsy + +triangle_med_up:=hex"80"; +triangle_med_down:=hex"81"; +triangle_med_left:=hex"82"; +triangle_med_right:=hex"83"; +triangle_med_full_up:=hex"84"; +triangle_med_full_down:=hex"85"; +triangle_med_full_left:=hex"86"; +triangle_med_full_right:=hex"87"; + +triangle_big_up:=hex"88"; +triangle_big_down:=hex"89"; +triangle_big_left:=hex"8A"; +triangle_big_right:=hex"8B"; +triangle_big_full_up:=hex"8C"; +triangle_big_full_down:=hex"8D"; +triangle_big_full_left:=hex"8E"; +triangle_big_full_right:=hex"8F"; + +% RELATIONS + +% mathsymb.mf + +% mathsimi.mf + +% mathfine.mf + +% upper_asterisk:=hex"3A"; lower_asterisk:=hex"3B"; +% triple_asterisk:=hex"3C"; + +% hex"30"...hex"35", numerals... + +% mathltlk.mf + +% LETTER LIKE SYMBOLS + +% mathltlk.mf + +Q_northwest:=hex"BC"; +Q_northeast:=hex"BD"; +Q_southwest:=hex"BE"; +Q_southeast:=hex"BF"; + +backprime_sign :=hex"90"; +smile_small :=hex"91"; +frown_small :=hex"92"; +sim_sim_bar :=hex"93"; +sim_sim_not_bar :=hex"94"; +bar_sim :=hex"95"; +bar_sim_not :=hex"96"; sim_vert :=hex"97"; +sim_reverse :=hex"98"; +sim_reverse_bar :=hex"99"; +nuclear_sign :=hex"9A"; +Bourbaki_Z :=hex"9B"; +reverse_negation_sign:=hex"9C"; +greek_motive:=hex"9D"; +ghanean_motive:=hex"9E"; +smash_product_sign:=hex"9F"; + +cap_dot :=hex"A0"; +cup_dot :=hex"A1"; +sqcap_dot :=hex"A2"; +sqcup_dot :=hex"A3"; + +% DELIMITERS + +% parenthesis + +% TRIANGLES AS RELATIONS + +% ARROWS + +% let the show begin : + +input mathusym; +%input mathgrey; +input mathfine; +input mathsmsy; + +main_name_string:="mcircle";% ``m'' stands for medium. +t:=hex"C0"; +forsuffixes $= + _truc,_curt,_full_circle,_five_star,_six_star, + _triangle_down,_triangle_left,_triangle_right, + _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, + _wedge,_vee, + _black_left,_black_right,_black_top,_black_bot, + _black_northwest,_black_northeast,_black_southwest,_black_southeast, + _ying_yang,_peace_and_love: + main_name_with($):=t; t:=t+1; endfor; +input mathmbcb; + +main_name_string:="mbox";% ``m'' stands for medium. +t:=hex"E0"; +forsuffixes $= + _truc,_curt,_full_circle,_five_star,_six_star, + _triangle_down,_triangle_left,_triangle_right, + _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, + _wedge,_vee, + _black_left,_black_right,_black_top,_black_bot, + _black_northwest,_black_northeast,_black_southwest,_black_southeast, + _ying_yang,_peace_and_love: + main_name_with($):=t; t:=t+1; endfor; +input mathmbcb; + +% parameters for TFM files. + +font_slant=0; +font_x_height=x_height#; +font_normal_stretch=3u#; +font_normal_shrink=2u#; +font_quad=18u#+4letter_fit#; +font_extra_space=2u#; +font_normal_space=6u#+2letter_fit#; + +end. + +main_name_string:="bcircle";% ``m'' stands for medium. +t:=hex"80"; +forsuffixes $= + _truc,_curt,_full_circle,_five_star,_six_star, + _triangle_down,_triangle_left,_triangle_right, + _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, + _wedge,_vee, + _black_left,_black_right,_black_top,_black_bot, + _black_northwest,_black_northeast,_black_southwest,_black_southeast, + _ying_yang,_peace_and_love: + main_name_with($):=t; t:=t+1; endfor; +%input mathmbcb; + +main_name_string:="Bcircle";% ``m'' stands for medium. +t:=hex"C0"; +forsuffixes $= + _truc,_curt,_full_circle,_five_star,_six_star, + _triangle_down,_triangle_left,_triangle_right, + _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, + _wedge,_vee, + _black_left,_black_right,_black_top,_black_bot, + _black_northwest,_black_northeast,_black_southwest,_black_southeast, + _ying_yang,_peace_and_love: + main_name_with($):=t; t:=t+1; endfor; +%input mathmbcb; + + +main_name_string:="bbox";% ``m'' stands for medium. +t:=hex"A0"; +forsuffixes $= + _truc,_curt,_full_circle,_five_star,_six_star, + _triangle_down,_triangle_left,_triangle_right, + _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, + _wedge,_vee, + _black_left,_black_right,_black_top,_black_bot, + _black_northwest,_black_northeast,_black_southwest,_black_southeast, + _ying_yang,_peace_and_love: + main_name_with($):=t; t:=t+1; endfor; +%input mathmbcb; + +main_name_string:="Bbox";% ``m'' stands for medium. +t:=hex"E0"; +forsuffixes $= + _truc,_curt,_full_circle,_five_star,_six_star, + _triangle_down,_triangle_left,_triangle_right, + _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, + _wedge,_vee, + _black_left,_black_right,_black_top,_black_bot, + _black_northwest,_black_northeast,_black_southwest,_black_southeast, + _ying_yang,_peace_and_love: + main_name_with($):=t; t:=t+1; endfor; +%input mathmbcb; diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathusym.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathusym.mf new file mode 100644 index 00000000000..5e6047c99d6 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathusym.mf @@ -0,0 +1,516 @@ +% mathematical symbols by Anthony Phan. +% file: mathusym.mf (various unsupported mathematical symbols) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +def horizontal_rules_list=math_axis, + -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height +enddef; + +vardef draw_polygon@#(expr center,n_edges,angle_init,sqrt_area)= + save a,b; + x@#=good.x xpart center; y@#=good.y ypart center; + a=sqrt_area/sqrt((n_edges*cosd(180/n_edges)*sind(180/n_edges))) + -0.5currentbreadth; + b=(rth-currentbreadth)/cosd(180/n_edges); + for $=1 upto n_edges: + z@#[$]r=z@#+round(a*dir(($-1)*360/n_edges+angle_init)); + z@#[$]r-z@#[$]l=b*dir(($-1)*360/n_edges+angle_init); + penlabels(@#[$]); + endfor + filldraw stroke for $=1 upto n_edges: z@#[$]e--endfor z@#[1]e; +enddef; + +use_rule1; + +% The square root of the total area has been calculated +% so that circle would fit the bounding box. + +beginchar(hex"B0",arithmetic_bounds); + "Square a"; + pickup tiny.nib; + draw_polygon.a((0.5w,math_axis),4,45,6u*sqrt 3.14159); + labels(a); +endchar; + +beginchar(hex"B1",arithmetic_bounds); + "Pentagon a"; + pickup tiny.nib; + draw_polygon.a((0.5w,math_axis),5,90,6u*sqrt 3.14159); + labels(a); +endchar; + +beginchar(hex"B2",arithmetic_bounds); + "Hexagon a"; + pickup tiny.nib; + draw_polygon.a((0.5w,math_axis),6,90,6u*sqrt 3.14159); + labels(a); +endchar; + +beginchar(hex"B3",arithmetic_bounds); + "Octogon a"; + pickup tiny.nib; + draw_polygon.a((0.5w,math_axis),8,22.5,6u*sqrt 3.14159); + labels(a); +endchar; + +beginchar(hex"B4",arithmetic_bounds); + "Square b"; + pickup tiny.nib; + draw_polygon.a((0.5w,math_axis),4,0,6u*sqrt 3.14159); + labels(a); +endchar; + +beginchar(hex"B5",arithmetic_bounds); + "Pentagon b"; + pickup tiny.nib; + draw_polygon.a((0.5w,math_axis),5,-90,6u*sqrt 3.14159); + labels(a); +endchar; + +beginchar(hex"B6",arithmetic_bounds); + "Hexagon b"; + pickup tiny.nib; + draw_polygon.a((0.5w,math_axis),6,0,6u*sqrt 3.14159); + labels(a); +endchar; + +beginchar(hex"B7",arithmetic_bounds); + "Octogon b"; + pickup tiny.nib; + draw_polygon.a((0.5w,math_axis),8,0,6u*sqrt 3.14159); + labels(a); +endchar; + +use_rule0; + +beginchar(hex"B8",arithmetic_bounds); + "5-bright-star"; + pickup tiny.nib; + draw_star.a((0.5w,math_axis),5,6u,0.05,90,true); + labels(a); +endchar; + +beginchar(hex"B9",arithmetic_bounds); + "5-black-star"; + pickup tiny.nib; + draw_star.a((0.5w,math_axis),5,6u,0.1,90,false); + labels(a); +endchar; + +beginchar(hex"BA",arithmetic_bounds); + "6-bright-star"; + pickup tiny.nib; + draw_star.a((0.5w,math_axis),6,6u,0.05,90,true); + labels(a); +endchar; + +beginchar(hex"BB",arithmetic_bounds); + "6-black-star"; + pickup tiny.nib; + draw_star.a((0.5w,math_axis),6,6u,0.2,90,false); + labels(a); +endchar; + +use_rule1; + +% mathltlk.mf + +% +% Q +% + +beginchar(Q_northwest,13u#+2appr#,cap_height#,0); + "Q northwest"; + autorounded; pickup rule.nib; + top y2=h+o; bot y4=-d-o; lft x3=appr; rt x1=w-appr; + x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4]; + tmp_path:=superellipse(z1,z2,z3,z4,1/sqrt 2); + draw tmp_path; pickup tiny.nib; top y5=h; lft x5=appr; + z5'=tmp_path intersectionpoint ((x2,y1)..z5); + (sqrt 2)*(z5-z5')=z5'-z6; a:=angle(z5-z6)-90; pos5(rth,a); pos6(rth,a); + filldraw stroke z5e..z6e; + labels(1,2,3,4); penlabels(5,6); +endchar; + +beginchar(Q_northeast,13u#+2appr#,cap_height#,0); + "Q northeast"; + autorounded; pickup rule.nib; + top y2=h+o; bot y4=-d-o; lft x3=appr; rt x1=w-appr; + x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4]; + tmp_path:=superellipse(z1,z2,z3,z4,1/sqrt 2); + draw tmp_path; pickup tiny.nib; top y5=h; rt x5=w-appr; + z5'=tmp_path intersectionpoint ((x2,y1)..z5); + (sqrt 2)*(z5-z5')=z5'-z6; a:=angle(z5-z6)-90; pos5(rth,a); pos6(rth,a); + filldraw stroke z5e..z6e; + labels(1,2,3,4); penlabels(5,6); +endchar; + +beginchar(Q_southwest,13u#+2appr#,cap_height#,0); + "Q southwest"; + autorounded; pickup rule.nib; + top y2=h+o; bot y4=-d-o; lft x3=appr; rt x1=w-appr; + x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4]; + tmp_path:=superellipse(z1,z2,z3,z4,1/sqrt 2); + draw tmp_path; pickup tiny.nib; bot y5=-d; lft x5=appr; + z5'=tmp_path intersectionpoint ((x2,y1)..z5); + (sqrt 2)*(z5-z5')=z5'-z6; a:=angle(z5-z6)-90; pos5(rth,a); pos6(rth,a); + filldraw stroke z5e..z6e; + labels(1,2,3,4); penlabels(5,6); +endchar; + +beginchar(Q_southeast,13u#+2appr#,cap_height#,0); + "Q southeast"; + autorounded; pickup rule.nib; + top y2=h+o; bot y4=-d-o; lft x3=appr; rt x1=w-appr; + x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4]; + tmp_path:=superellipse(z1,z2,z3,z4,1/sqrt 2); + draw tmp_path; pickup tiny.nib; bot y5=-d; rt x5=w-appr; + z5'=tmp_path intersectionpoint ((x2,y1)..z5); + (sqrt 2)*(z5-z5')=z5'-z6; a:=angle(z5-z6)-90; pos5(rth,a); pos6(rth,a); + filldraw stroke z5e..z6e; + labels(1,2,3,4); penlabels(5,6); +endchar; + +% +% Z +% + +vardef tmp_program(expr stem,radius, + up_adjustment,bot_adjustment)= + pickup tiny.nib; save R,a,c,s; + pos1(stem,90); pos2(stem,90); pos3(stem,0); + pos6(stem,0); pos7(stem,90); pos8(stem,90); + bot y1l=bot y2l=y0-radius=y3-radius=-d; + top y7r=top y8r=y0'+radius=y6+radius=h; + rt x1+hround bot_adjustment=rt x6r=w-appr; + x0'=x7=w-appr-radius; + lft x3l=lft x8-hround up_adjustment=appr; + x0=x2=appr+radius; + a=0.5length(z0'-z0); R=radius-0.5stem; + c=0.5((R/a)*(abs(x0'-x0)/a)-(abs(y0'-y0)/a)*((a+-+R)/a)); + s=1+-+c; z5-z0'=-R*(c,s); z4-z0=R*(c,s); + pos4(stem,angle(-c,-s)); pos5(stem,angle(-c,-s)); + filldraw stroke z1e..z2e left_to_up z3e...z4e + ---z5e...z6e up_to_left z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); labels(0,0'); +enddef; + +beginchar(Bourbaki_Z,12u#+2appr#,cap_height#,0); + "Bourbaki's Z"; + tmp_program(cap_stem,1.6cap_stem,1.2*0.6u,1.2*0.3u); +endchar; + +beginchar(bBourbaki_Z,16u#+2appr#,0,10/6dh#); + "Bourbaki's Z"; + tmp_program(round 1.2cap_curve,1.6*1.2cap_curve,1.6*0.6u,1.6*0.3u); +endchar; + +beginchar(BBourbaki_Z,22u#+2appr#,0,14/6dh#); + "Bourbaki's Z"; + tmp_program(round 1.4cap_curve,1.6*1.4cap_curve,2.2*0.6u,2.2*0.3u); +endchar; + +% mathsymb.mf + +beginchar(nuclear_sign,arithmetic_bounds); + "Nuclear sign"; + a:=0.13; t:=1.6; + autorounded; + pickup null.nib; + adjust_dot1((0.5w,0.5[-d,h]),dtsz,true,true); + dot(1,1'); + pickup rule.nib0; + top y7=top y4=h; bot y2=bot y9=-d; + lft x5=lft x8=appr; rt x6=rt x3=w-appr; + y5=y6=a[y2,y4]; y3=y8=a[y4,y2]; + x2=x7=a[x5,x6]; x4=x9=a[x6,x5]; + draw z2{right}..tension atleast t..z3{up}...z4{left} + ..tension atleast t..z5{down}...cycle; + draw z6{up}..tension atleast t..z7{left}...z8{down} + ..tension atleast t..z9{right}...cycle; + labels(2,3,4,5,4,5,6,7,8,9); +endchar; + +% SMILES AND FROWNS + +use_rule1; + +beginchar(smile_small,12u#+2appr#,v_center(spread1#+rth#)); + "Small smile sign"; + pickup tiny.nib; + pos2(rth,90); + y2=math_axis-0.5spread1; y1l=y3l=y2l+spread1; + lft x1l=appr; rt x3l=w-appr; x2=0.5[x1l,x3l]; + z1'-z1l=(z2l-z1l) xscaled 1/3; + z3'-z3l=(z2l-z3l) xscaled 1/3; + pos1(rth,angle(z1'-z1l)+90); + pos3(rth,angle(z3'-z3l)-90); + filldraw stroke z1e{z1'-z1l}...z2e{right}...z3e{z3l-z3'}; + penlabels(1,2,3); labels(1',3'); +endchar; + +beginchar(frown_small,12u#+2appr#,v_center(spread1#+rth#)); + "Small frown sign"; + pickup tiny.nib; + pos2(rth,90); + y2=math_axis+0.5spread1; y1r=y3r=y2r-spread1; + lft x1r=appr; rt x3r=w-appr; x2=0.5[x1r,x3r]; + z1'-z1r=(z2r-z1r) xscaled 1/3; + z3'-z3r=(z2r-z3r) xscaled 1/3; + pos1(rth,angle(z1'-z1r)+90); + pos3(rth,angle(z3'-z3r)-90); + filldraw stroke z1e{z1'-z1r}...z2e{right}...z3e{z3r-z3'}; + penlabels(1,2,3); labels(1',3'); +endchar; + +make_sim_picture; + +beginchar(sim_sim_bar,12u#+2appr#,v_center(3spread1#+2rth#)); + "Similarity-similarity-bar sign"; + currentpicture:=(sim_picture shifted(0,spread1+rth))+ + sim_picture;% shifted(0,-0.5(spread1+rth)); + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); + lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis-1.5spread1; + filldraw stroke z1e..z2e; penlabels(1,2); + tmp_picture:=currentpicture; +endchar; + +beginchar(sim_sim_not_bar,12u#+2appr#,asc_height#,asc_depth#); + "Not similarity-similarity_bar sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l-appr=w-appr-rt x1r=hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z2e..z1e; penlabels(1,2); +endchar; + +beginchar(bar_sim,12u#+2appr#,v_center(2spread1#+rth#)); + "Bar-similarity sign"; + currentpicture:=sim_picture shifted(0,-vround 0.5spread1); + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); + lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis+spread1; + filldraw stroke z1e..z2e; penlabels(1,2); + tmp_picture:=currentpicture; +endchar; + +beginchar(bar_sim_not,arithmetic_bounds); + "Not bar-similarity sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l-Appr=w-Appr-rt x1r=hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(sim_vert,arithmetic_bounds); + "Sim-vert sign"; + currentpicture:=sim_picture rotatedaround((0.5w,math_axis),90); +endchar; + +beginchar(sim_reverse,12u#+2appr#,v_center(spread1#+rth#)); + "Sim-reverse sign"; + currentpicture:=sim_picture reflectedabout((0.5w,0),(0.5w,h)); +endchar; + +beginchar(sim_reverse_bar,12u#+2appr#,v_center(2spread1#+rth#)); + "Sim-reverse-bar sign"; + currentpicture:=sim_picture reflectedabout((0.5w,0),(0.5w,h)) + shifted(0,vround 0.5spread1); + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); + lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis-spread1; + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(reverse_negation_sign,12u#+2appr#,v_center(spread1#+rth#)); + "Reverse negation sign"; + pickup tiny.nib; + pos1(rth,-90); pos3(rth,0); + y2r=y1r; y2l=y1l; x2l=x3l; x2r=x3r; + y1=math_axis+0.5spread1; y1r-y3=spread1; + rt x1=w-Appr; lft x3l=Appr; + filldraw stroke z1e--z2e--z3e; + penlabels(1,2,3); +endchar; + +beginchar(smash_product_sign,arithmetic_bounds); + "Smash product sign"; + pickup tiny.nib; + top y1r=top y5l=h+eps; bot y4l=bot y8r=-d-eps; + lft x3l=lft x6l=appr-eps; rt x2r=rt x7r=w-appr+eps; + y1r-y3l=y5r-y7l=y6l-y8r=y2r-y4l=vround((spread1+rth-tiny)/sqrt 2); + x1r-x3l=x7r-x5l=x8r-x6l=x2r-x4l=hround((spread1+rth-tiny)/sqrt 2); + pos1(rth,45); pos2(rth,45); pos3(rth,45); pos4(rth,45); + pos5(rth,-45); pos6(rth,-45); pos7(rth,-45); pos8(rth,-45); + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); +endchar; + +% The next design is taken from my favorite pen: +% a Omas' Paragon. + +beginchar(greek_motive,24u#,body_height#,0); + "Decorative greek motive"; + numeric a,b; a=2max(hround 0.5rth1,1); + b=a*(1++slant); + pickup pencircle scaled a; + if 0.5w<>good.x 0.5w: change_width; fi + x21=x22=good.x 0.5w; + x1=x3=x5l=x6l=-1; x2=x4=x20l=x19l=w+1; + x7=x8=good.x 0.75[x1,x21]; x17=x18=x21+(x21-x7); + x9=x10=good.x 0.5[x1,x21]; x15=x16=x21+(x21-x9); + x11=x12=good.x 0.25[x1,x21]; x13=x14=x21+(x21-x11); + y1r=y2r=h; y3l=y4l=-d; penpos1(a,90); + penpos2(a,90); penpos3(a,90); penpos4(a,90); + penpos5(0.5b+1,0); penpos20(0.5b+1,180); + penpos21(b,0); penpos22(b,0); + y6=y7=y18=y19=good.y 0.2[y3,y1]; y22=bot y6; + y12=y21=y13=good.y 0.8[y3,y1]; y5=y20=top y12; + y10=y11=y14=y15=good.y 0.3[y6,y12]; + y8=y9=y16=y17=good.y 0.7[y6,y12]; + forsuffixes $=6,7,12,13,18,19: + y$r-y$l=a; z$=0.5[z$r,z$l]; endfor + forsuffixes $=8,9,10,11,14,15,16,17: + y$l-y$r=a; z$=0.5[z$r,z$l]; endfor + forsuffixes $=9,10,13,14,17,18: + x$r-x$l=b; endfor + x6r-x6l=x19l-x19r=0.5b+1; + forsuffixes $=7,8,11,12,15,16: + x$l-x$r=b; endfor + penstroke z1e..z2e; penstroke z3e..z4e; penstroke z21e..z22e; + penstroke z5e--z6e--z7e--z8e--z9e--z10e--z11e-- + z12e--z13e--z14e--z15e--z16e--z17e--z18e--z19e--z20e; + penlabels(range 1 thru 22); +endchar; + +% The next motive appears in ITC's Kokoa font. +% The designer (Jochen Schuss) has been inspired by +% a trip in Ghana. It is therefore possible that +% this design is not copyright since it may be +% a traditionnal one. + +beginchar(ghanean_motive,14u#,body_height#,body_depth#); + "Decorative ghanean motive"; + numeric a; a=2max(hround 0.5rth1,1); + pickup pencircle scaled a; + if 0.5w<>good.x 0.5w: change_width; fi + numeric b; b=vround((h+d)/7); + x2=x3=x8l=x15l=x21l=0.5w; + x1r=x5r=x12r=x19l=x20l=0; + x4r=x11r=x18r=x23l=x22l=w; + y1r=y4r=h; + y1r-y5r=y5r-y12r=y12r-y19l=b; + y4r-y11r=y11r-y18r=y18r-y23l=b; + y3-y8l=y8l-y15l=y15l-y21l=b; + y1r-y2=y2-y3=y19l-y20l=y23l-y22l=2b; + x6=x7=good.x 2/3[x1r,x2]; x9=x10=x2+(x2-x6); + x13=x14=good.x 1/3[x1r,x2]; x16=x17=x2+(x2-x13); + forsuffixes $=2,3,6,7,13,14: + x$r-x$l=a; x$=0.5[x$r,x$l]; + endfor + forsuffixes $=10,9,17,16: + x$r-x$l=-a; x$=0.5[x$r,x$l]; + endfor + numeric b,c; + b=a/abs cosd angle(z2-z1r); + c=a/abs cosd angle(z2-z4r); + penpos1(b,90); penpos5(b,90); penpos12(b,90); + penpos4(c,90); penpos11(c,90); penpos18(c,90); + x19r-x19l=x20r-x20l=x23l-x23r=x22l-x22r=0.5a; +% + z21r-(z21l+z1r-z1l)=whatever*(z2-z1r); + z21r-(z21l+z4r-z4l)=whatever*(z2-z4r); + z8r-z8l=z15r-z15l=z21r-z21l; +% + z2l-z1l=whatever*(z2-z1r); z3-z3l=whatever*(z2-z1r); + z6r-z5r=whatever*(z2-z1r); z6l-z5l=whatever*(z2-z1r); + z8r-z7r=whatever*(z2-z1r); z8l-z7l=whatever*(z2-z1r); + z13r-z12r=whatever*(z2-z1r); z13l-z12l=whatever*(z2-z1r); + z15r-z14r=whatever*(z2-z1r); z15l-z14l=whatever*(z2-z1r); + z19r-z19l=whatever*(z2-z1r); + z21r-z20r=whatever*(z2-z1r);% z21l-z20l=whatever*(z2-z1r); +% + z2r-z4l=whatever*(z2-z4r); z3-z3r=whatever*(z2-z4r); + z10r-z11r=whatever*(z2-z4r); z10l-z11l=whatever*(z2-z4r); + z8r-z9r=whatever*(z2-z4r); z8l-z9l=whatever*(z2-z4r); + z17r-z18r=whatever*(z2-z4r); z17l-z18l=whatever*(z2-z4r); + z15r-z16r=whatever*(z2-z4r); z15l-z16l=whatever*(z2-z4r); + z23r-z23l=whatever*(z2-z4r); + z21r-z22r=whatever*(z2-z4r);% z21l-z22l=whatever*(z2-z4r); +% + fill z1r--z2--z4r--z4l--z2r--z3r--z3--z3l--z2l--z1l--cycle; + penstroke z5e--z6e--z7e--z8e--z9e--z10e--z11e; + penstroke z12e--z13e--z14e--z15e--z16e--z17e--z18e; + penstroke z19e--z20e--z21e--z22e--z23e; + penlabels(range 1 thru 23); +endchar; + +% +% doted symbols +% + +beginchar(cap_dot,12u#+2appr#,x_height#,0); + "Small cap with dot sign"; + pickup tiny.nib; + pos1(rth,180); pos2(rth,180); + pos4(rth,0); pos5(rth,0); + y3+0.5rth=h+o; bot y1r=bot y5r=-d; y2=y4=2/3[y3,y1r]; + lft x1r=w-rt x5r=appr+hround 0.8u; + x1=x2; x4=x5; x3=0.5[x2,x4]; + filldraw stroke z1e..z2e; filldraw stroke z4e..z5e; + pickup rule.nib; autorounded; + draw z2 up_to_right z3 right_to_down z4; + penlabels(1,2,3,4,5); + adjust_dot6((0.5w,h-math_axis),dtsz,false,true); + dot(6,6'); +endchar; + +beginchar(cup_dot,12u#+2appr#,x_height#,0); + "Small cup with dot sign"; + pickup tiny.nib; + pos1(rth,180); pos2(rth,180); + pos4(rth,0); pos5(rth,0); + y3-0.5rth=-d-o; top y1r=top y5r=h; y2=y4=2/3[y3,y1r]; + lft x1r=w-rt x5r=appr+hround 0.8u; + x1=x2; x4=x5; x3=0.5[x2,x4]; + filldraw stroke z5e..z4e; filldraw stroke z2e..z1e; + pickup rule.nib; autorounded; + draw z2 down_to_right z3 right_to_up z4; + penlabels(1,2,3,4,5); + adjust_dot6((0.5w,math_axis),dtsz,false,true); + dot(6,6'); +endchar; + +beginchar(sqcap_dot,12u#+2appr#,x_height#,0); + "Small square cap with dot sign"; + pickup tiny.nib; + pos1(rth,180); pos4(rth,0); + top y2r=top y3r=h; bot y1=bot y4=-d; + top y2r-bot y2l=top y3r-bot y3l=rth; + lft x1r=w-rt x4r=appr+hround 0.95u; + x2r=x1r; x3r=x4r; x2l=x1l; x3l=x4l; + filldraw stroke z1e--z2e--z3e--z4e; + penlabels(1,2,3,4); + adjust_dot5((0.5w,h-math_axis),dtsz,false,true); + dot(5,5'); +endchar; + +beginchar(sqcup_dot,12u#+2appr#,x_height#,0); + "Small square cup with dot sign"; + pickup tiny.nib; + pos1(rth,180); pos4(rth,0); + bot y2r=bot y3r=-d; top y1=top y4=h; + top y2l-bot y2r=top y3l-bot y3r=rth; + lft x1r=w-rt x4r=appr+hround 0.95u; + x2r=x1r; x3r=x4r; x2l=x1l; x3l=x4l; + filldraw stroke z4e--z3e--z2e--z1e; + penlabels(1,2,3,4); + adjust_dot5((0.5w,math_axis),dtsz,false,true); + dot(5,5'); +endchar; diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathux10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathux10.mf new file mode 100644 index 00000000000..1fd122aa54f --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathux10.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathux10.mf (unsupported math serie X at 10 points) +% last modification: May 16, 2005. + +font_identifier:="mathux"; font_size 10pt#; +font_coding_scheme "mathux"; + +input mathprmt; +input mathuxdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathuxdrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathuxdrv.mf new file mode 100644 index 00000000000..824e167885e --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathuxdrv.mf @@ -0,0 +1,435 @@ +% mathematical symbols by Anthony Phan. +% file: mathuxdrv.mf (unsupported eXtensible symbols driver file) +% last modification: May 16, 2005. + +mode_setup; + +math_setup; + +% PARENTHESIS + +%%paren_left_big:=hex"00"; paren_left_Big:=hex"01"; +%%paren_left_bigg:=hex"02"; paren_left_Bigg:=hex"03"; +%%paren_left_top:=hex"04"; paren_left_bot:=hex"05"; +%%paren_left_mid:=hex"06"; +%% +%%paren_right_big:=hex"08"; paren_right_Big:=hex"09"; +%%paren_right_bigg:=hex"0A"; paren_right_Bigg:=hex"0B"; +%%paren_right_top:=hex"0C"; paren_right_bot:=hex"0D"; +%%paren_right_mid:=hex"0E"; +%% +%%charlist paren_left_big: paren_left_Big: +%%paren_left_bigg: paren_left_Bigg: paren_left_top; +%%extensible paren_left_top: +%%paren_left_top,0,paren_left_bot,paren_left_mid; +%% +%%charlist paren_right_big: paren_right_Big: +%%paren_right_bigg: paren_right_Bigg: paren_right_top; +%%extensible paren_right_top: +%%paren_right_top,0,paren_right_bot,paren_right_mid; +%% +%%% BRACKETS +%% +%%bracket_left_big:=hex"10"; bracket_left_Big:=hex"11"; +%%bracket_left_bigg:=hex"12"; bracket_left_Bigg:=hex"13"; +%%bracket_left_top:=hex"14"; bracket_left_bot:=hex"15"; +%%bracket_left_mid:=hex"16"; +%% +%%bracket_right_big:=hex"18"; bracket_right_Big:=hex"19"; +%%bracket_right_bigg:=hex"1A"; bracket_right_Bigg:=hex"1B"; +%%bracket_right_top:=hex"1C"; bracket_right_bot:=hex"1D"; +%%bracket_right_mid:=hex"1E"; +%% +%%charlist bracket_left_big: bracket_left_Big: +%%bracket_left_bigg: bracket_left_Bigg: bracket_left_top; +%%extensible bracket_left_top: +%%bracket_left_top,0,bracket_left_bot,bracket_left_mid; +%% +%%charlist bracket_right_big: bracket_right_Big: +%%bracket_right_bigg: bracket_right_Bigg: bracket_right_top; +%%extensible bracket_right_top: +%%bracket_right_top,0,bracket_right_bot,bracket_right_mid; +%% +%%% BRACES +%% +%%brace_left_big:=hex"20"; brace_left_Big:=hex"21"; +%%brace_left_bigg:=hex"22"; brace_left_Bigg:=hex"23"; +%%brace_left_top:=hex"24"; brace_left_bot:=hex"25"; +%%brace_left_mid:=hex"26"; brace_left_mod:=hex"27"; +%% +%%brace_right_big:=hex"28"; brace_right_Big:=hex"29"; +%%brace_right_bigg:=hex"2A"; brace_right_Bigg:=hex"2B"; +%%brace_right_top:=hex"2C"; brace_right_bot:=hex"2D"; +%%brace_right_mid:=hex"2E"; brace_right_mod:=hex"2F"; +%% +%%charlist brace_left_big: brace_left_Big: +%%brace_left_bigg: brace_left_Bigg: brace_left_top; +%%extensible brace_left_top: +%%brace_left_top,brace_left_mid,brace_left_bot,brace_left_mod; +%% +%%charlist brace_right_big: brace_right_Big: +%%brace_right_bigg: brace_right_Bigg: brace_right_top; +%%extensible brace_right_top: +%%brace_right_top,brace_right_mid,brace_right_bot,brace_right_mod; +%% +%%% BBBRACKETS +%% +%%bbbracket_left_big:=hex"30"; bbbracket_left_Big:=hex"31"; +%%bbbracket_left_bigg:=hex"32"; bbbracket_left_Bigg:=hex"33"; +%%bbbracket_left_top:=hex"34"; bbbracket_left_bot:=hex"35"; +%%bbbracket_left_mid:=hex"36"; +%% +%%bbbracket_right_big:=hex"38"; bbbracket_right_Big:=hex"39"; +%%bbbracket_right_bigg:=hex"3A"; bbbracket_right_Bigg:=hex"3B"; +%%bbbracket_right_top:=hex"3C"; bbbracket_right_bot:=hex"3D"; +%%bbbracket_right_mid:=hex"3E"; +%% +%%charlist bbbracket_left_big: bbbracket_left_Big: +%%bbbracket_left_bigg: bbbracket_left_Bigg: bbbracket_left_top; +%%extensible bbbracket_left_top: +%%bbbracket_left_top,0,bbbracket_left_bot,bbbracket_left_mid; +%% +%%charlist bbbracket_right_big: bbbracket_right_Big: +%%bbbracket_right_bigg: bbbracket_right_Bigg: bbbracket_right_top; +%%extensible bbbracket_right_top: +%%bbbracket_right_top,0,bbbracket_right_bot,bbbracket_right_mid; +%% +%%% ANGLES +%% +%%angle_left_big:=hex"40"; angle_left_Big:=hex"41"; +%%angle_left_bigg:=hex"42"; angle_left_Bigg:=hex"43"; +%%angle_right_big:=hex"44"; angle_right_Big:=hex"45"; +%%angle_right_bigg:=hex"46"; angle_right_Bigg:=hex"47"; +%% +%%charlist angle_left_big: angle_left_Big: +%%angle_left_bigg: angle_left_Bigg; +%%charlist angle_right_big: angle_right_Big: +%%angle_right_bigg: angle_right_Bigg; +%% +%%% SLASHES +%% +%%backslash_big:=hex"48"; backslash_Big:=hex"49"; +%%backslash_bigg:=hex"4A"; backslash_Bigg:=hex"4B"; +%%slash_big:=hex"4C"; slash_Big:=hex"4D"; +%%slash_bigg:=hex"4E"; slash_Bigg:=hex"4F"; +%% +%%charlist backslash_big: backslash_Big: +%%backslash_bigg: backslash_Bigg; +%%charlist slash_big: slash_Big: +%%slash_bigg: slash_Bigg; +%% +%%% CEILINGS AND FLOORS +%% +%%ceiling_left_big:=hex"50"; ceiling_left_Big:=hex"51"; +%%ceiling_left_bigg:=hex"52"; ceiling_left_Bigg:=hex"53"; +%%ceiling_left_top:=bracket_left_top; +%%ceiling_left_mid:=bracket_left_mid; +%% +%%ceiling_right_big:=hex"54"; ceiling_right_Big:=hex"55"; +%%ceiling_right_bigg:=hex"56"; ceiling_right_Bigg:=hex"57"; +%%ceiling_right_top:=bracket_right_top; +%%ceiling_right_mid:=bracket_right_mid; +%% +%%charlist ceiling_left_big: ceiling_left_Big: +%%ceiling_left_bigg: ceiling_left_Bigg: ceiling_left_mid; +%%extensible ceiling_left_mid: +%%ceiling_left_top,0,0,ceiling_left_mid; +%% +%%charlist ceiling_right_big: ceiling_right_Big: +%%ceiling_right_bigg: ceiling_right_Bigg: ceiling_right_mid; +%%extensible ceiling_right_mid: +%%ceiling_right_top,0,0,ceiling_right_mid; +%% +%%floor_left_big:=hex"58"; floor_left_Big:=hex"59"; +%%floor_left_bigg:=hex"5A"; floor_left_Bigg:=hex"5B"; +%%floor_left_bot:=bracket_left_bot; +%%floor_left_mid:=bracket_left_mid; +%% +%%floor_right_big:=hex"5C"; floor_right_Big:=hex"5D"; +%%floor_right_bigg:=hex"5E"; floor_right_Bigg:=hex"5F"; +%%floor_right_bot:=bracket_right_bot; +%%floor_right_mid:=bracket_right_mid; +%% +%%charlist floor_left_big: floor_left_Big: +%%floor_left_bigg: floor_left_Bigg: floor_left_bot; +%%extensible floor_left_bot: +%%0,0,floor_left_bot,floor_left_mid; +%% +%%charlist floor_right_big: floor_right_Big: +%%floor_right_bigg: floor_right_Bigg: floor_right_bot; +%%extensible floor_right_bot: +%%0,0,floor_right_bot,floor_right_mid; +%% +%%radical_sign:=hex"60"; radical_big :=hex"61"; +%%radical_Big :=hex"62"; radical_bigg:=hex"63"; +%%radical_Bigg:=hex"64"; radical_bot :=hex"65"; +%%radical_mod :=hex"66"; radical_top :=hex"67"; +%% +%%charlist radical_big: radical_Big: +%%radical_bigg: radical_Bigg: radical_top; +%%extensible radical_top: +%%radical_top,0,radical_bot,radical_mod; +%% +%%overbrace_left :=hex"68"; +%%overbrace_mid :=hex"69"; +%%overbrace_right :=hex"6A"; +%%overbrace_mod :=hex"6B"; +%%underbrace_left :=hex"6C"; +%%underbrace_mid :=hex"6D"; +%%underbrace_right:=hex"6E"; +%%underbrace_mod :=hex"6F"; +%% +%%vert_mod:=hex"07"; vvert_mod:=hex"0F"; vvvert_mod:=hex"17"; +%%vert_thick_mod:=hex"1F"; left_filet:=hex"37"; right_filet:=hex"3F"; +%% +%%extensible vert_mod: 0,0,0,vert_mod; +%%extensible vvert_mod: 0,0,0,vvert_mod; +%%extensible vvvert_mod: 0,0,0,vvvert_mod; +%%extensible vert_thick_mod: 0,0,0,vert_thick_mod; +%%extensible left_filet: left_filet, +%%left_filet,0,left_filet; +%%extensible right_filet: right_filet, +%%right_filet,0,right_filet; +%% +%%% BONUS +%% +%%group_left_big:=hex"76"; +%%group_right_big:=hex"77"; +%% +%%% lgroup +%%charlist group_left_big: brace_left_bot; +%%extensible brace_left_bot: +%%brace_left_top,0,brace_left_bot,brace_left_mod; +%%% rgroup +%%charlist group_right_big: brace_right_bot; +%%extensible brace_right_bot: +%%brace_right_top,0,brace_right_bot,brace_right_mod; +%% +%%% lmoustache, hope it works +%%extensible paren_left_bot: +%%brace_left_top,0,brace_right_bot,brace_left_mod; +%%% rmoustache, hope it works +%%extensible paren_right_bot: +%%brace_right_top,0,brace_left_bot,brace_right_mod; +%% +%%input mathbdel; +%% +%input mathacnt; +%% +%%bplus_sign :=hex"90"; Bplus_sign :=hex"A0"; +%%btimes_sign :=hex"91"; Btimes_sign :=hex"A1"; +%%bcomplement :=hex"92"; Bcomplement :=hex"A2"; +%bcap_sign :=hex"93"; Bcap_sign :=hex"A3"; +%%bcup_sign :=hex"94"; Bcup_sign :=hex"A4"; +%%bcup_plus :=hex"95"; Bcup_plus :=hex"A5"; +%%bsqcap_sign :=hex"96"; Bsqcap_sign :=hex"A6"; +%%bsqcup_sign :=hex"97"; Bsqcup_sign :=hex"A7"; +%%bsqcup_plus :=hex"98"; Bsqcup_plus :=hex"A8"; +%%bwedge_sign :=hex"99"; Bwedge_sign :=hex"A9"; +%%bvee_sign :=hex"9A"; Bvee_sign :=hex"AA"; +%%bwedge_curly:=hex"9B"; Bwedge_curly:=hex"AB"; +%%bvee_curly :=hex"9C"; Bvee_curly :=hex"AC"; +%% +%%charlist bplus_sign: Bplus_sign; +%%charlist btimes_sign: Btimes_sign; +%%charlist bcomplement: Bcomplement; +%%charlist bcap_sign: Bcap_sign; +%%charlist bcup_sign: Bcup_sign; +%%charlist bcup_plus: Bcup_plus; +%%charlist bsqcap_sign: Bsqcap_sign; +%%charlist bsqcup_sign: Bsqcup_sign; +%%charlist bsqcup_plus: Bsqcup_plus; +%%charlist bwedge_sign: Bwedge_sign; +%%charlist bvee_sign: Bvee_sign; +%%charlist bwedge_curly: Bwedge_curly; +%%charlist bvee_curly: Bvee_curly; +%% +%%summation_sign :=hex"B0"; Summation_sign :=hex"B8"; +%%product_sign :=hex"B1"; Product_sign :=hex"B9"; +%%coproduct_sign :=hex"B2"; Coproduct_sign :=hex"BA"; +%%bintegral_sign :=hex"B3"; Bintegral_sign :=hex"BB"; +%%bintegral_double :=hex"B4"; Bintegral_double :=hex"BC"; +%%bintegral_triple :=hex"B5"; Bintegral_triple :=hex"BD"; +%%bintegral_contour:=hex"B6"; Bintegral_contour:=hex"BE"; +%%bintegral_dblcont:=hex"B7"; Bintegral_dblcont:=hex"BF"; +%% +%%charlist summation_sign: Summation_sign; +%%charlist product_sign: Product_sign; +%%charlist coproduct_sign: Coproduct_sign; +%%charlist bintegral_sign: Bintegral_sign; +%%charlist bintegral_double: Bintegral_double; +%%charlist bintegral_triple: Bintegral_triple; +%%charlist bintegral_contour: Bintegral_contour; +%%charlist bintegral_dblcont: Bintegral_dblcont; + +complement:=hex"43"; +bold_complement:=hex"44"; +bold_cup:=hex"45"; +bold_cap:=hex"46"; +Bourbaki_Z:=hex"47"; +btriangle_up:=hex"48"; +btriangle_down:=hex"49"; +bBourbaki_Z:=hex"4A"; BBourbaki_Z:=hex"4B"; +charlist bBourbaki_Z:BBourbaki_Z; +btruc_sign :=hex"4C"; Btruc_sign :=hex"4D"; +bcurt_sign :=hex"4E"; Bcurt_sign :=hex"4F"; +charlist btruc_sign: Btruc_sign; +charlist bcurt_sign: Bcurt_sign; + +bintegral_sign := hex"50"; +bintegral_contour_pos :=hex"51"; +bintegral_contour_neg :=hex"52"; +bintegral_square :=hex"53"; +bintegral_square_pos :=hex"54"; +bintegral_square_neg :=hex"55"; +% Bintegral_sign :=hex"BB"; +%%bintegral_double :=hex"B4"; Bintegral_double :=hex"BC"; +%%bintegral_triple :=hex"B5"; Bintegral_triple :=hex"BD"; +%%bintegral_contour:=hex"B6"; Bintegral_contour:=hex"BE"; +%%bintegral_dblcont:=hex"B7"; Bintegral_dblcont:=hex"BF"; + +input mathbigs; +input mathltlk; + +%%main_name_string:="bcircle";% ``b'' stands for big. +%%t:=hex"C0"; +%%forsuffixes $=_plus,_minus,_times,_division, +%% _dot,_circle,_asterisk,_co_asterisk, +%% _left,_right,_top,_bot, +%% _sign,_slash,_backslash,_triangle_up: +%% main_name_with($):=t; t:=t+1; endfor; +%% +%%input mathmbcb; +%% +%%main_name_string:="bbox";% ``b'' stands for big. +%%t:=hex"D0"; +%%forsuffixes $=_plus,_minus,_times,_division, +%% _dot,_circle,_asterisk,_co_asterisk, +%% _left,_right,_top,_bot, +%% _sign,_slash,_backslash,_triangle_up: +%% main_name_with($):=t; t:=t+1; endfor; +%% +%%input mathmbcb; +%% +%%main_name_string:="Bcircle";% ``B'' stands for Big. +%%t:=hex"E0"; +%%forsuffixes $=_plus,_minus,_times,_division, +%% _dot,_circle,_asterisk,_co_asterisk, +%% _left,_right,_top,_bot, +%% _sign,_slash,_backslash,_triangle_up: +%% main_name_with($):=t; t:=t+1; endfor; +%% +%%input mathmbcb; +%% +%%main_name_string:="Bbox";% ``B'' stands for Big. +%%t:=hex"F0"; +%%forsuffixes $=_plus,_minus,_times,_division, +%% _dot,_circle,_asterisk,_co_asterisk, +%% _left,_right,_top,_bot, +%% _sign,_slash,_backslash,_triangle_up: +%% main_name_with($):=t; t:=t+1; endfor; +%% +%%input mathmbcb; +%% +%%forsuffixes $=_plus,_minus,_times,_division, +%% _dot,_circle,_asterisk,_co_asterisk, +%% _left,_right,_top,_bot, +%% _sign,_slash,_backslash,_triangle_up: +%% charlist scantokens("bcircle" & str$):scantokens("Bcircle" & str$); +%% charlist scantokens("bbox" & str$):scantokens("Bbox" & str$); +%%endfor; +%% +% see also: + +main_name_string:="bcircle"; +t:=hex"80"; +forsuffixes $= + _truc,_curt,_full_circle,_five_star,_six_star, + _triangle_down,_triangle_left,_triangle_right, + _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, + _wedge,_vee, + _black_left,_black_right,_black_top,_black_bot, + _black_northwest,_black_northeast,_black_southwest,_black_southeast, + _ying_yang,_peace_and_love: + main_name_with($):=t; t:=t+1; endfor; +input mathmbcb; + +main_name_string:="bbox"; +t:=hex"A0"; +forsuffixes $= + _truc,_curt,_full_circle,_five_star,_six_star, + _triangle_down,_triangle_left,_triangle_right, + _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, + _wedge,_vee, + _black_left,_black_right,_black_top,_black_bot, + _black_northwest,_black_northeast,_black_southwest,_black_southeast, + _ying_yang,_peace_and_love: + main_name_with($):=t; t:=t+1; endfor; +input mathmbcb; + +main_name_string:="Bcircle"; +t:=hex"C0"; +forsuffixes $= + _truc,_curt,_full_circle,_five_star,_six_star, + _triangle_down,_triangle_left,_triangle_right, + _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, + _wedge,_vee, + _black_left,_black_right,_black_top,_black_bot, + _black_northwest,_black_northeast,_black_southwest,_black_southeast, + _ying_yang,_peace_and_love: + main_name_with($):=t; t:=t+1; endfor; +input mathmbcb; + +main_name_string:="Bbox"; +t:=hex"E0"; +forsuffixes $= + _truc,_curt,_full_circle,_five_star,_six_star, + _triangle_down,_triangle_left,_triangle_right, + _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, + _wedge,_vee, + _black_left,_black_right,_black_top,_black_bot, + _black_northwest,_black_northeast,_black_southwest,_black_southeast, + _ying_yang,_peace_and_love: + main_name_with($):=t; t:=t+1; endfor; +input mathmbcb; + +forsuffixes $= + _truc,_curt,_full_circle,_five_star,_six_star, + _triangle_down,_triangle_left,_triangle_right, + _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, + _wedge,_vee, + _black_left,_black_right,_black_top,_black_bot, + _black_northwest,_black_northeast,_black_southwest,_black_southeast, + _ying_yang,_peace_and_love: + charlist scantokens("bcircle" & str$):scantokens("Bcircle" & str$); + charlist scantokens("bbox" & str$):scantokens("Bbox" & str$); +endfor; + +%%arrow_top:=hex"9D"; arrow_bot:=hex"9E"; arrow_mod:=hex"9F"; +%%extensible arrow_top: arrow_top,0,0,arrow_mod; +%%extensible arrow_bot: 0,0,arrow_bot,arrow_mod; +%%extensible arrow_mod: arrow_top,0,arrow_bot,arrow_mod; +%% +%%double_arrow_top:=hex"AD"; double_arrow_bot:=hex"AE"; +%%double_arrow_mod:=hex"AF"; +%%extensible double_arrow_top: double_arrow_top,0,0,double_arrow_mod; +%%extensible double_arrow_bot: 0,0,double_arrow_bot,double_arrow_mod; +%%extensible double_arrow_mod: double_arrow_top,0,double_arrow_bot, +%%double_arrow_mod; +%% +%%input matharrw; + +% parameters for TFM files. + +font_slant=0; +font_x_height=x_height#; +%font_normal_stretch=3u#; +%font_normal_shrink=2u#; +font_quad=18u#+4letter_fit#; +%font_extra_space=2u#; +%font_normal_space=6u#+2letter_fit#; + +end. + + + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx10.mf new file mode 100644 index 00000000000..0e13922bbee --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx10.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathx10.mf (math serie X at 10 points) +% last modification: May 16, 2005. + +font_identifier:="mathx"; font_size 10pt#; +font_coding_scheme "mathx"; + +input mathprmt; +input mathxdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx12.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx12.mf new file mode 100644 index 00000000000..c547b8a9110 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx12.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathx12.mf (math serie X at 12 points) +% last modification: May 16, 2005. + +font_identifier:="mathx"; font_size 12pt#; +font_coding_scheme "mathx"; + +input mathprmt; +input mathxdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx5.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx5.mf new file mode 100644 index 00000000000..1e16fd19d40 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx5.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathx5.mf (math serie X at 5 points) +% last modification: May 16, 2005. + +font_identifier:="mathx"; font_size 5pt#; +font_coding_scheme "mathx"; + +input mathprmt; +input mathxdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx6.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx6.mf new file mode 100644 index 00000000000..0125608b9e6 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx6.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathx6.mf (math serie X at 6 points) +% last modification: May 16, 2005. + +font_identifier:="mathx"; font_size 6pt#; +font_coding_scheme "mathx"; + +input mathprmt; +input mathxdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx7.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx7.mf new file mode 100644 index 00000000000..25745ac3f2f --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx7.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathx7.mf (math serie X at 7 points) +% last modification: May 16, 2005. + +font_identifier:="mathx"; font_size 7pt#; +font_coding_scheme "mathx"; + +input mathprmt; +input mathxdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx8.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx8.mf new file mode 100644 index 00000000000..69cc300240b --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx8.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathx8.mf (math serie X at 8 points) +% last modification: May 16, 2005. + +font_identifier:="mathx"; font_size 8pt#; +font_coding_scheme "mathx"; + +input mathprmt; +input mathxdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx9.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx9.mf new file mode 100644 index 00000000000..224749075d3 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx9.mf @@ -0,0 +1,10 @@ +% mathematical symbols by Anthony Phan. +% file: mathx9.mf (math serie X at 9 points) +% last modification: May 16, 2005. + +font_identifier:="mathx"; font_size 9pt#; +font_coding_scheme "mathx"; + +input mathprmt; +input mathxdrv; + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathxdrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathxdrv.mf new file mode 100644 index 00000000000..184e7cbd8d6 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathxdrv.mf @@ -0,0 +1,371 @@ +% mathematical symbols by Anthony Phan. +% file: mathxdrv.mf (eXtensible symbols driver file) +% last modification: May 16, 2005. + +mode_setup; + +math_setup; + +% PARENTHESIS + +paren_left_big:=hex"00"; paren_left_Big:=hex"01"; +paren_left_bigg:=hex"02"; paren_left_Bigg:=hex"03"; +paren_left_top:=hex"04"; paren_left_bot:=hex"05"; +paren_left_mid:=hex"06"; + +paren_right_big:=hex"08"; paren_right_Big:=hex"09"; +paren_right_bigg:=hex"0A"; paren_right_Bigg:=hex"0B"; +paren_right_top:=hex"0C"; paren_right_bot:=hex"0D"; +paren_right_mid:=hex"0E"; + +charlist paren_left_big: paren_left_Big: +paren_left_bigg: paren_left_Bigg: paren_left_top; +extensible paren_left_top: +paren_left_top,0,paren_left_bot,paren_left_mid; + +charlist paren_right_big: paren_right_Big: +paren_right_bigg: paren_right_Bigg: paren_right_top; +extensible paren_right_top: +paren_right_top,0,paren_right_bot,paren_right_mid; + +% BRACKETS + +bracket_left_big:=hex"10"; bracket_left_Big:=hex"11"; +bracket_left_bigg:=hex"12"; bracket_left_Bigg:=hex"13"; +bracket_left_top:=hex"14"; bracket_left_bot:=hex"15"; +bracket_left_mid:=hex"16"; + +bracket_right_big:=hex"18"; bracket_right_Big:=hex"19"; +bracket_right_bigg:=hex"1A"; bracket_right_Bigg:=hex"1B"; +bracket_right_top:=hex"1C"; bracket_right_bot:=hex"1D"; +bracket_right_mid:=hex"1E"; + +charlist bracket_left_big: bracket_left_Big: +bracket_left_bigg: bracket_left_Bigg: bracket_left_top; +extensible bracket_left_top: +bracket_left_top,0,bracket_left_bot,bracket_left_mid; + +charlist bracket_right_big: bracket_right_Big: +bracket_right_bigg: bracket_right_Bigg: bracket_right_top; +extensible bracket_right_top: +bracket_right_top,0,bracket_right_bot,bracket_right_mid; + +% BRACES + +brace_left_big:=hex"20"; brace_left_Big:=hex"21"; +brace_left_bigg:=hex"22"; brace_left_Bigg:=hex"23"; +brace_left_top:=hex"24"; brace_left_bot:=hex"25"; +brace_left_mid:=hex"26"; brace_left_mod:=hex"27"; + +brace_right_big:=hex"28"; brace_right_Big:=hex"29"; +brace_right_bigg:=hex"2A"; brace_right_Bigg:=hex"2B"; +brace_right_top:=hex"2C"; brace_right_bot:=hex"2D"; +brace_right_mid:=hex"2E"; brace_right_mod:=hex"2F"; + +charlist brace_left_big: brace_left_Big: +brace_left_bigg: brace_left_Bigg: brace_left_top; +extensible brace_left_top: +brace_left_top,brace_left_mid,brace_left_bot,brace_left_mod; + +charlist brace_right_big: brace_right_Big: +brace_right_bigg: brace_right_Bigg: brace_right_top; +extensible brace_right_top: +brace_right_top,brace_right_mid,brace_right_bot,brace_right_mod; + +% BBBRACKETS + +bbbracket_left_big:=hex"30"; bbbracket_left_Big:=hex"31"; +bbbracket_left_bigg:=hex"32"; bbbracket_left_Bigg:=hex"33"; +bbbracket_left_top:=hex"34"; bbbracket_left_bot:=hex"35"; +bbbracket_left_mid:=hex"36"; + +bbbracket_right_big:=hex"38"; bbbracket_right_Big:=hex"39"; +bbbracket_right_bigg:=hex"3A"; bbbracket_right_Bigg:=hex"3B"; +bbbracket_right_top:=hex"3C"; bbbracket_right_bot:=hex"3D"; +bbbracket_right_mid:=hex"3E"; + +charlist bbbracket_left_big: bbbracket_left_Big: +bbbracket_left_bigg: bbbracket_left_Bigg: bbbracket_left_top; +extensible bbbracket_left_top: +bbbracket_left_top,0,bbbracket_left_bot,bbbracket_left_mid; + +charlist bbbracket_right_big: bbbracket_right_Big: +bbbracket_right_bigg: bbbracket_right_Bigg: bbbracket_right_top; +extensible bbbracket_right_top: +bbbracket_right_top,0,bbbracket_right_bot,bbbracket_right_mid; + +% ANGLES + +angle_left_big:=hex"40"; angle_left_Big:=hex"41"; +angle_left_bigg:=hex"42"; angle_left_Bigg:=hex"43"; +angle_right_big:=hex"44"; angle_right_Big:=hex"45"; +angle_right_bigg:=hex"46"; angle_right_Bigg:=hex"47"; + +charlist angle_left_big: angle_left_Big: +angle_left_bigg: angle_left_Bigg; +charlist angle_right_big: angle_right_Big: +angle_right_bigg: angle_right_Bigg; + +% SLASHES + +backslash_big:=hex"48"; backslash_Big:=hex"49"; +backslash_bigg:=hex"4A"; backslash_Bigg:=hex"4B"; +slash_big:=hex"4C"; slash_Big:=hex"4D"; +slash_bigg:=hex"4E"; slash_Bigg:=hex"4F"; + +charlist backslash_big: backslash_Big: +backslash_bigg: backslash_Bigg; +charlist slash_big: slash_Big: +slash_bigg: slash_Bigg; + +% CEILINGS AND FLOORS + +ceiling_left_big:=hex"50"; ceiling_left_Big:=hex"51"; +ceiling_left_bigg:=hex"52"; ceiling_left_Bigg:=hex"53"; +ceiling_left_top:=bracket_left_top; +ceiling_left_mid:=bracket_left_mid; + +ceiling_right_big:=hex"54"; ceiling_right_Big:=hex"55"; +ceiling_right_bigg:=hex"56"; ceiling_right_Bigg:=hex"57"; +ceiling_right_top:=bracket_right_top; +ceiling_right_mid:=bracket_right_mid; + +charlist ceiling_left_big: ceiling_left_Big: +ceiling_left_bigg: ceiling_left_Bigg: ceiling_left_mid; +extensible ceiling_left_mid: +ceiling_left_top,0,0,ceiling_left_mid; + +charlist ceiling_right_big: ceiling_right_Big: +ceiling_right_bigg: ceiling_right_Bigg: ceiling_right_mid; +extensible ceiling_right_mid: +ceiling_right_top,0,0,ceiling_right_mid; + +floor_left_big:=hex"58"; floor_left_Big:=hex"59"; +floor_left_bigg:=hex"5A"; floor_left_Bigg:=hex"5B"; +floor_left_bot:=bracket_left_bot; +floor_left_mid:=bracket_left_mid; + +floor_right_big:=hex"5C"; floor_right_Big:=hex"5D"; +floor_right_bigg:=hex"5E"; floor_right_Bigg:=hex"5F"; +floor_right_bot:=bracket_right_bot; +floor_right_mid:=bracket_right_mid; + +charlist floor_left_big: floor_left_Big: +floor_left_bigg: floor_left_Bigg: floor_left_bot; +extensible floor_left_bot: +0,0,floor_left_bot,floor_left_mid; + +charlist floor_right_big: floor_right_Big: +floor_right_bigg: floor_right_Bigg: floor_right_bot; +extensible floor_right_bot: +0,0,floor_right_bot,floor_right_mid; + +radical_sign:=hex"60"; radical_big :=hex"61"; +radical_Big :=hex"62"; radical_bigg:=hex"63"; +radical_Bigg:=hex"64"; radical_bot :=hex"65"; +radical_mod :=hex"66"; radical_top :=hex"67"; + +charlist radical_big: radical_Big: +radical_bigg: radical_Bigg: radical_top; +extensible radical_top: +radical_top,0,radical_bot,radical_mod; + +overbrace_left :=hex"68"; +overbrace_mid :=hex"69"; +overbrace_right :=hex"6A"; +overbrace_mod :=hex"6B"; +underbrace_left :=hex"6C"; +underbrace_mid :=hex"6D"; +underbrace_right:=hex"6E"; +underbrace_mod :=hex"6F"; + +vert_mod:=hex"07"; vvert_mod:=hex"0F"; vvvert_mod:=hex"17"; +vert_thick_mod:=hex"1F"; left_filet:=hex"37"; right_filet:=hex"3F"; + +extensible vert_mod: 0,0,0,vert_mod; +extensible vvert_mod: 0,0,0,vvert_mod; +extensible vvvert_mod: 0,0,0,vvvert_mod; +extensible vert_thick_mod: 0,0,0,vert_thick_mod; +extensible left_filet: left_filet, +left_filet,0,left_filet; +extensible right_filet: right_filet, +right_filet,0,right_filet; + +% BONUS + +group_left_big:=hex"76"; +group_right_big:=hex"77"; + +% lgroup +charlist group_left_big: brace_left_bot; +extensible brace_left_bot: +brace_left_top,0,brace_left_bot,brace_left_mod; +% rgroup +charlist group_right_big: brace_right_bot; +extensible brace_right_bot: +brace_right_top,0,brace_right_bot,brace_right_mod; + +% lmoustache, hope it works +extensible paren_left_bot: +brace_left_top,0,brace_right_bot,brace_left_mod; +% rmoustache, hope it works +extensible paren_right_bot: +brace_right_top,0,brace_left_bot,brace_right_mod; + +input mathbdel; + +input mathacnt; + +bplus_sign :=hex"90"; Bplus_sign :=hex"A0"; +btimes_sign :=hex"91"; Btimes_sign :=hex"A1"; +bcomplement :=hex"92"; Bcomplement :=hex"A2"; +%btruc_sign :=hex"93"; Btruc_sign :=hex"A3"; +%bcurt_sign :=hex"94"; Bcurt_sign :=hex"A4"; +bcap_sign :=hex"93"; Bcap_sign :=hex"A3"; +bcup_sign :=hex"94"; Bcup_sign :=hex"A4"; +bcup_plus :=hex"95"; Bcup_plus :=hex"A5"; +bsqcap_sign :=hex"96"; Bsqcap_sign :=hex"A6"; +bsqcup_sign :=hex"97"; Bsqcup_sign :=hex"A7"; +bsqcup_plus :=hex"98"; Bsqcup_plus :=hex"A8"; +bwedge_sign :=hex"99"; Bwedge_sign :=hex"A9"; +bvee_sign :=hex"9A"; Bvee_sign :=hex"AA"; +bwedge_curly:=hex"9B"; Bwedge_curly:=hex"AB"; +bvee_curly :=hex"9C"; Bvee_curly :=hex"AC"; + +charlist bplus_sign: Bplus_sign; +charlist btimes_sign: Btimes_sign; +charlist bcomplement: Bcomplement; +%charlist btruc_sign: Btruc_sign; +%charlist bcurt_sign: Bcurt_sign; +charlist bcap_sign: Bcap_sign; +charlist bcup_sign: Bcup_sign; +charlist bcup_plus: Bcup_plus; +charlist bsqcap_sign: Bsqcap_sign; +charlist bsqcup_sign: Bsqcup_sign; +charlist bsqcup_plus: Bsqcup_plus; +charlist bwedge_sign: Bwedge_sign; +charlist bvee_sign: Bvee_sign; +charlist bwedge_curly: Bwedge_curly; +charlist bvee_curly: Bvee_curly; + +summation_sign :=hex"B0"; Summation_sign :=hex"B8"; +product_sign :=hex"B1"; Product_sign :=hex"B9"; +coproduct_sign :=hex"B2"; Coproduct_sign :=hex"BA"; +bintegral_sign :=hex"B3"; Bintegral_sign :=hex"BB"; +bintegral_double :=hex"B4"; Bintegral_double :=hex"BC"; +bintegral_triple :=hex"B5"; Bintegral_triple :=hex"BD"; +bintegral_contour:=hex"B6"; Bintegral_contour:=hex"BE"; +bintegral_dblcont:=hex"B7"; Bintegral_dblcont:=hex"BF"; + +charlist summation_sign: Summation_sign; +charlist product_sign: Product_sign; +charlist coproduct_sign: Coproduct_sign; +charlist bintegral_sign: Bintegral_sign; +charlist bintegral_double: Bintegral_double; +charlist bintegral_triple: Bintegral_triple; +charlist bintegral_contour: Bintegral_contour; +charlist bintegral_dblcont: Bintegral_dblcont; + +%small_summation_sign:=hex"40"; +%small_product_sign:=hex"41"; +%small_coproduct_sign:=hex"42"; +%complement:=hex"43"; +%bold_complement:=hex"44"; +%bold_cup:=hex"45"; +%bold_cap:=hex"46"; +%Bourbaki_Z:=hex"47"; +%btriangle_up:=hex"48"; +%btriangle_down:=hex"49"; +%bBourbaki_Z:=hex"4A"; +%BBourbaki_Z:=hex"4B"; +%charlist bBourbaki_Z:BBourbaki_Z; + +input mathbigs; +input mathltlk; + +main_name_string:="bcircle";% ``b'' stands for big. +t:=hex"C0"; +forsuffixes $=_plus,_minus,_times,_division, + _dot,_circle,_asterisk,_co_asterisk, + _left,_right,_top,_bot, + _sign,_slash,_backslash,_triangle_up: + main_name_with($):=t; t:=t+1; endfor; + +input mathmbcb; + +main_name_string:="bbox";% ``b'' stands for big. +t:=hex"D0"; +forsuffixes $=_plus,_minus,_times,_division, + _dot,_circle,_asterisk,_co_asterisk, + _left,_right,_top,_bot, + _sign,_slash,_backslash,_triangle_up: + main_name_with($):=t; t:=t+1; endfor; + +input mathmbcb; + +main_name_string:="Bcircle";% ``B'' stands for Big. +t:=hex"E0"; +forsuffixes $=_plus,_minus,_times,_division, + _dot,_circle,_asterisk,_co_asterisk, + _left,_right,_top,_bot, + _sign,_slash,_backslash,_triangle_up: + main_name_with($):=t; t:=t+1; endfor; + +input mathmbcb; + +main_name_string:="Bbox";% ``B'' stands for Big. +t:=hex"F0"; +forsuffixes $=_plus,_minus,_times,_division, + _dot,_circle,_asterisk,_co_asterisk, + _left,_right,_top,_bot, + _sign,_slash,_backslash,_triangle_up: + main_name_with($):=t; t:=t+1; endfor; + +input mathmbcb; + +forsuffixes $=_plus,_minus,_times,_division, + _dot,_circle,_asterisk,_co_asterisk, + _left,_right,_top,_bot, + _sign,_slash,_backslash,_triangle_up: + charlist scantokens("bcircle" & str$):scantokens("Bcircle" & str$); + charlist scantokens("bbox" & str$):scantokens("Bbox" & str$); +endfor; + +% see also: +% _peace_and_love,_ying_yang, +% _truc,_curt,_full_circle,_five_star,_six_star, +% _triangle_down,_triangle_left,_triangle_right, +% _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across, +% _wedge,_vee, +% _black_left,_black_right,_black_top,_black_bot, +% _black_northwest,_black_northeast,_black_southwest,_black_southeast: + + +arrow_top:=hex"9D"; arrow_bot:=hex"9E"; arrow_mod:=hex"9F"; +extensible arrow_top: arrow_top,0,0,arrow_mod; +extensible arrow_bot: 0,0,arrow_bot,arrow_mod; +extensible arrow_mod: arrow_top,0,arrow_bot,arrow_mod; + +double_arrow_top:=hex"AD"; double_arrow_bot:=hex"AE"; +double_arrow_mod:=hex"AF"; +extensible double_arrow_top: double_arrow_top,0,0,double_arrow_mod; +extensible double_arrow_bot: 0,0,double_arrow_bot,double_arrow_mod; +extensible double_arrow_mod: double_arrow_top,0,double_arrow_bot, +double_arrow_mod; + +input matharrw; + +% parameters for TFM files. + +font_slant=0; +font_x_height=x_height#; +%font_normal_stretch=3u#; +%font_normal_shrink=2u#; +font_quad=18u#+4letter_fit#; +%font_extra_space=2u#; +%font_normal_space=6u#+2letter_fit#; + +end. + + + diff --git a/Master/texmf-dist/fonts/source/public/mathabx/maydigit.mf b/Master/texmf-dist/fonts/source/public/mathabx/maydigit.mf new file mode 100644 index 00000000000..e39b0e44d6b --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/maydigit.mf @@ -0,0 +1,107 @@ +% blackboard typefaces by Anthony Phan. +% file: maydigit.mf (Maya digits) +% last modification: May 16, 2005. + +numeric fig_width#; +fig_width#=max(dtsz#,stem#*(1++slant)); + +use_rule1; + +beginchar("0",20u#+2appr#,fig_height#,0); + "Maya numeral 0"; +% italcorr fig_height#*slant-0.5u#; + numeric a; a=vround 0.2(h+d); + pickup rule.nib; x2r=x4r=good.x 0.5w; + pickup fine.nib; y1r=y3r=good.y 0.5[-d,h]; + top y2r=h+o; y2r-y1r=y1r-y4r; y1'=y2r; y3'=y4r; + lft x1r=appr; x3r-x2r=x2r-x1r; + x1'=1/3[x1r,x2r]; x3'=1/3[x3r,x4r]; + pos2(rth,90); pos4(rth,-90); + penpos1(diag_width(rth-fine,z1'-z1r),180); + penpos3(diag_width(rth-fine,z3'-z3r),0); + path tmp_path[],tmp_path[]r,tmp_path[]l; + numeric t[],t[]r,t[]l; + forsuffixes $=,r,l: + z[5]$=z[1]$ shifted(0,a); z[7]$=z[4]$ shifted(0,a); + z[9]$=z[3]$ shifted(0,a); + tmp_path[1]$=z[1]${z1'-z1r}...z[2]${right} + ...z[3]${(z3'-z3r) xscaled -1}; + tmp_path[2]$=z[9]${z3'-z3r}...z[7]${left} + ...z[5]${(z1r-z1') yscaled -1}; + t[1]$=xpart(tmp_path[2]$ + intersectiontimes subpath (1,2) of tmp_path[1]); + t[2]$=xpart(tmp_path[2]$ + intersectiontimes subpath (0,1) of tmp_path[1]); + tmp_path[3]$=subpath (t[1]$,t[2]$) of tmp_path[2]$; + z[6]$=point t[1]$ of tmp_path[2]$; + z[8]$=point t[2]$ of tmp_path[2]$; + endfor + pickup rule.nib; x12=good.x 1/3[x2,x6]; + x14=x2; x18-x16=x16-x14=x14-x12=x12-x10; + pickup fine.nib; + for i=10 step 2 until 18: + rt x[i]r-lft x[i]l=rth; 0.5[x[i]r,x[i]l]=x[i]; + forsuffixes $=,r,l: + z[i]$=tmp_path[1] intersectionpoint ((x[i]$,y2r)..(x[i]$,y7r)); + z[i+1]$=tmp_path[3] intersectionpoint ((x[i]$,y2r)..(x[i]$,y7r)); + endfor + filldraw stroke z[i]e..z[i+1]e; + endfor + filldraw stroke tmp_path[1]e; filldraw stroke tmp_path[3]e; + filldraw stroke z3e{z3'-z3r}...z4e{left}...z1e{(z1r-z1') yscaled -1}; + penlabels(range 1 thru 19); labels(1',3'); +endchar; + +beginchar("1",fig_width#+2appr#,fig_height#,0); + "Maya numeral 1 (hun)"; +% italcorr fig_height#*slant-0.5u#; + pickup fine.nib; + adjust_dot1((0.5w,0.5h),dtsz,false,false); + dot(1,1'); +endchar; + +beginchar("2",fig_width#+2appr#,fig_height#,0); + "Maya numeral 2 (ca)"; +% italcorr fig_height#*slant-0.5u#; + pickup fine.nib; + adjust_dot1((0.5w,0.25h),dtsz,false,false); + dot(1,1'); + adjust_dot2((0.5w,0.75h),dtsz,false,false); + dot(2,2'); +endchar; + +beginchar("3",fig_width#+2appr#,fig_height#,0); + "Maya numeral 3 (ox)"; +% italcorr fig_height#*slant-0.5u#; + pickup fine.nib; + adjust_dot1((0.5w,h/6),dtsz,false,false); + dot(1,1'); + adjust_dot2((0.5w,0.5h),dtsz,false,false); + dot(2,2'); + x3=x1; x3'=x1'; y2-y1=y3-y2; y2'-y1'=y3'-y2'; dot(3,3'); +endchar; + +beginchar("4",fig_width#+2appr#,fig_height#,0); + "Maya numeral 4 (can)"; +% italcorr fig_height#*slant-0.5u#; + pickup fine.nib; + adjust_dot1((0.5w,0.5dtsz),dtsz,false,false); + dot(1,1'); + adjust_dot2((0.5w,1/3(h-dtsz)+0.5dtsz),dtsz,false,false); + dot(2,2'); + x3=x1; x3'=x1'; y2-y1=y3-y2; y2'-y1'=y3'-y2'; dot(3,3'); + x4=x1; x4'=x1'; y2-y1=y4-y3; y2'-y1'=y4'-y3'; dot(4,4'); +endchar; + +beginchar("5",fig_width#+2appr#,fig_height#,0); + "Maya numeral 5 (ho)"; +% italcorr fig_height#*slant-0.5u#; + pickup fine.nib; top y1=h; bot y2=0; + lft x1l=lft x2l=hround(0.5w-0.5stem); + pos1(stem,0); pos2(stem,0); filldraw stroke z1e..z2e; + penlabels(1,2); +endchar; + +% 6=uac, 7=uc, 8=vaxac, 9=bolon, 10=lahun +% 11=hun lahun, 12=ca lahun, 13=ox lahun. + |