diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/bangtex/bangdefs.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/public/bangtex/bangdefs.mf | 914 |
1 files changed, 914 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/bangtex/bangdefs.mf b/Master/texmf-dist/fonts/source/public/bangtex/bangdefs.mf new file mode 100644 index 00000000000..fb97135357d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/bangtex/bangdefs.mf @@ -0,0 +1,914 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% bangdefs.mf: METAFONT file that defines various shapes +% for use in various bangla fonts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% This file is part of the package BANGTEX, containing Bangla fonts +%% and style files for the TeX/LaTeX typesetting systems +%% +%% Copyright (C) 2001, 2002 Palash Baran Pal +%% e-mail: pbpal@theory.saha.ernet.in internet: +%% internet: http://tnp.saha.ernet.in/~pbpal +%% Address: Saha Institute of Nuclear Physics +%% 1/AF Bidhan Nagar +%% Calcutta 700064, INDIA +%% +%% Original release: January 2001 +%% Latest modification released: January 2002 +%% +%% This program is free software; you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by +%% the Free Software Foundation; either version 2 of the License, or +%% (at your option) any later version. +%% +%% This program is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program; if not, write to the Free Software +%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +%% 02111-1307 USA +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +def E(expr xoff,yoff,w,h) = + begingroup + save x,y,balld,ypen,currenttransform; transform currenttransform; + currenttransform := identity shifted (xoff,yoff) slanted slantval; + numeric balld,ypen,height,theta; + balld = .3w; ypen = .9pt; height = matra_f*h; theta = 220; +% The circle + z1l = (.5w,.43h); penpos1(.5balld,theta); + fill fullcircle scaled balld shifted (z1l); +% The connector between the circle and the stem + z2r = (.7w,height); penpos2(matra_t*h,90); + z3 = (w-rindent,.6h); penpos3 (stem_width,0); + fill z1r{dir (theta-90)}..tension1.3..{right}z2r..tension1.2..{down}z3r--z3l{up}..{left}z2l..tension1.6..{dir (theta+90)}z1l--cycle; +% The wavy line + x4= w-rindent-.5stem_width; + y4 = ypen; penpos4(.07h,90); + z5 = (.51w,.18h); penpos5(6/50height,90); + z6 = (.27w,.21h); penpos6(6/50height,90); + z7 = (4/48w,26/50height); penpos7(3/50height,0); + z8 = (6.5/48w,36/50height); penpos8(2/50height,-30); + penstroke z5e{left}..z6e..z7e..tension1.2..z8e; +% The stem + hookstem(z5r,z5l,z3,0,0); + penlabels(1,2,3,4,5,6,7,8); + endgroup +enddef; + +def Estem(expr xoff,yoff,w,h) = + begingroup + save x,y,balld,currenttransform; transform currenttransform; + currenttransform := identity shifted (xoff,yoff) slanted slantval; + numeric balld,height,theta; + balld = .7(w-.5stem_width); height = matra_f*h; theta = 180; +% The circle + z1r = (0,.6height); penpos1(.5balld,theta); + fill fullcircle scaled balld shifted (z1l); +% The connector between the circle and the stem + x2r = .75[x1l,x3l]; y2r = height; + penpos2(matra_t*h,90); + z3 = (w,.8height); penpos3 (stem_width,0); + z4 = (x3,0); penpos4(stem_width,0); + fill z1r{dir (theta-90)}..{right}z2r..tension1.2..{down}z3r--z4r--z4l--z3l{up}..z2l..tension1.6..{dir (theta+90)}z1l--cycle; + penlabels(1,2,3,4); + endgroup +enddef; + +def O(expr xoff,yoff,w,h) = + begingroup + save x,y,balld,smalld,phia,phib,currenttransform; + transform currenttransform; + currenttransform := identity shifted (xoff,yoff) slanted slantval; + numeric balld,phia,phib,height,rballx,rbally; + phia=150; phib=-45; height = matra_f*h; % smalld,balld defined later +% The two circles + z1r = (21/52w,33/50height); + z4r = z5l = (37/52w,29/50height); + balld = .7 * length(z1r-z4r); + smalld = .9balld; + fill fullcircle scaled smalld shifted (z1r); + fill fullcircle scaled balld shifted (z4r); +% Line between the two circles + z2l = (44/52w,45/50height); + z3l = (45/52w,36/50height); + z3r = (43/52w,40/50height); + z2r = (37/52w,46/50height); + z1l= z1r + .5smalld * dir (phia); + z4l= z4r + .5balld * dir (phib); + fill z1l{dir (phia-90)}..z2l..z3l..z4l--z4r..z3r..z2r..tension1.5..z1r--cycle; +%% The line connecting to the cup + z5r= z5l + .5balld * dir (phib+90); + z6l = (45/52w,20/50height); + z6r = (47.5/52w,19/50height); + fill z5l..{down}z6l--z6r{up}..z5r--cycle; +%% The cup + z7r = (35/52w,6.5/50height); penpos7(6/50height,-90); + z8r = (2.5/52w,45/50height); + z8l = (5.2/52w,43/50height); + z9 = (0,63/50height); + penstroke z6e{down}..{left}z7e..{z9-z8l}z8e; + penlabels(1,2,3,4,5,6,7,8,9); +%% We now define the x and y co-ordinates for the right ball. +%% These are not protected. They need to be used sometimes. + rballx = x4r; rbally = y4r; + endgroup +enddef; + + +def ka(expr xoff,yoff,wba,h) = + begingroup + save x,y,xstem,theta,balld,wbar,currenttransform; + numeric xstem,theta,balld,height; + xstem=wba-rindent; theta=-30; balld=.2height; height = matra_f*h; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; +% The first part is equivalent to the definition of "ba" + ba(xoff,yoff,xstem,h); + z2l = (xstem,43/50height); penpos2(5.5/50height,-90); +% This part is for the ball at the end of the hook + z6 = (43/32xstem,21/50height); + fill fullcircle scaled balld shifted (z6); +% This part is the hook + z7l = z6 + .5balld * dir(theta); + z7r = z6 + .5balld * dir(theta+70); + penstroke z2e{right}..z7e; + penlabels(1,2,3,3',4,5,6,7,8,8',9,10); + endgroup +enddef; + +def ga_(expr xoff, yoff, w, h) = + begingroup + numeric xstem,height; + xstem=w-rindent; height = matra_f*h; + save x,y,currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + z1l = (11/35w,18/50height); + z1r = (15.5/35w,15/50height); + z2l = (19/35w,30/50height); + z2r = (24/35w,29/50height); + z3l = (19/35w,34/50height); + z3r = (21/35w,37/50height); + z4l = (16/35w,35.5/50height); + z4r = (13.5/35w,39/50height); + z5l = (4/35w,31/50height); + z5r = (8/35w,38/50height); + z6l = (1.5/35w,38/50height); + z6r = z5r; + z7l = (17/35w,height); + z7r = (18/35w,46/50height); + z8l = (w,35/50height); penpos8(stem_width,-90); + fill z1l..z2l..z3l..z4l{left}..tension1.2..{left}z5l..tension2..{up}z6l--z6r--z5r{z4l-z5l}..z4r..z3r..z2r..tension1.3..z1r--cycle; + fill z6l{up}..{right}z7l..tension1.5..z8l--z8r..tension1.42..z7r..z6r--cycle; + penlabels (1,2,3,4,5,6,7,8); + endgroup +enddef; + + +def unga(expr xoff,yoff,w,h) = + begingroup + save x,y,currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; +% The vertical part + z2 = (18.5/47w,36/50h); penpos2(stem_width,0); + z3l = (25.5/47w,18/50h); + z3r= (23/47w,23/50h); + z3 = .5[z3l,z3r]; +% The part going up + z4l = (36/47w,26/50h); + z4r = (34/47w,33/50h); + fill z2l{down}..tension0.8..{right}z3l{right}..tension1.5..z4l--z4r..tension1.8..{left}z3r..{up}z2r--cycle; +% The lower cup + z5l = (40/47w,22/50h); penpos5(3/47w,-10); + z6l = (28/47w,10/50h); + z6r = (29/47w,3/50h); + z7l = (6/47w,42/50h); + z7r = (4/47w,43/50h); + z8 = (0,63/50h); + fill z4l..{down}z5l..{left}z6l{left}..{z8-z7l}z7l--z7r{z7r-z8}..{right}z6r{right}..z5r{up}..z4r--cycle; +% The upper part with the dot + z9l = (31/47w,h); penpos9(stem_width,-90); + z10l = (38/47w,43/50h); penpos10(.6stem_width,180); + z11l = z2r; penpos11(stem_width,90); + x12l = x7l; y12r = h; penpos12(.12w,10); + penstroke z2e{up}..{right}z9e..z10e{down}..z11e..{z12-z3}z12e; + penlabels(1,2,3,4,5,6,7,8,9,10,11,12); + endgroup +enddef; + +def ca(expr xoff,yoff,w,h) = + begingroup + save x,y,height,currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric height; height = matra_f*h; + z1 = (lindent,matra_h*h); penpos1(stem_width,180); + z2r = (x1r,41.5/50height); penpos2(stem_width,180); + z3r = (x1r,.24h); + z3l = (x2l,.26h); + z5r = (33/37w,29/50height); + z5l = (27/37w,26.5/50height); + z4r = (.3[x3r,x5r],4/50height); + z4l = (.3[x3l,x5l],9/50height); + z6r = (x1l,.45[y1,y2]); + z6l = z2r; z6 = .5[z6l,z6r]; + penstroke z1e--z2e--z3e{down}..{right}z4e; + penstroke z4e{right}..{up}z5e; + penstroke z5e{up}..{up}z6e; + penlabels(1,2,3,4,5,6); + endgroup +enddef; + + +def cha(expr xoff,yoff,w,h) = + begingroup + save x,y,currenttransform,ww,hh,hrise; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric ww,hh,hrise,height; + height = matra_f*h; +% The rounded part + z7r = (25/44w,39/50height); + z7l = (x7r,y7r-matra_t*height); + z8l = (35/44w,30/50height); + z8r = (39/44w,28/50height); + z9l = (16.5/44w,15/50height); + z9r = (x9l,11/50height); + z10l = (7/44w,17/50height); + z10r = (12/44w,10/50height); + penstroke z7e{right}..{down}z8e{down}..{left}z9e..z10e; +% The part that goes down + z11= (w,-ha_dip); + hookjt(z10r,z10l,z11,.06h,.2,45); +% The part that looks like a small "ca" + ww = x7l+.8rindent; hrise - y10l = y10l - y9l; +% hrise = matra_h*(h-hh); + hh = h-(hrise/matra_h); + ca(xoff,hrise+yoff,ww,hh); + penlabels(7,8,9,10); + endgroup +enddef; + +def ja_bare(expr xoff,yoff,w,h) = + begingroup + save x,y,currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric height; + height = matra_f*h; +% The upper part + z1 = (27/37w,matra_h*h); penpos1(10/37w,0); + z2l = (13/37w,35/50height); + z2r = (16/37w,32/50height); + z3l = (23.5/37w,23/50height); + z3r = (20/37w,28/50height); + z4r = (30/37w,33.5/50height); + z4l = (32.5/37w,28/50height); + penstroke z1e{z2l-z1r}..{down}z2e{down}..{right}z3e..z4e; +% The lower cup + z5r = (w,y3l); penpos5(2.5/37w,0); + z6r = (26/37w,9/50height); penpos6(7/50height,-90); + z7r = (4.5/37w,43/50height); + z7l = (6/37w,42/50height); + penstroke z5e{down}..{left}z6e..{up}z7e; +% The part joining the above two parts + penstroke z5e{up}..z4e; + penlabels(1,2,3,4,5,6,7); +% The hook +% NONE FOR THIS VERSION +% Definitions to export + numeric topl_ja,topr_ja,midlx_ja,midrx_ja,midly_ja,midry_ja; + topl_ja = x1l; topr_ja = x1; + z91 = .5[z4r,z5r]; penpos91(.3length(z4l-z5r), angle(z5r-z4l)); + midlx_ja = x91r; midrx_ja = x91l; + midly_ja = y91r; midry_ja = y91l; + endgroup +enddef; + +def ja_(expr xoff,yoff,w,h) = + begingroup + save x,y,currenttransform; + numeric wbare,height; + wbare = 37/53w; height = matra_f*h; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + ja_bare(xoff,yoff,wbare,h); + z8l = (topl_ja,matra_h*h); + z8r = (topr_ja,matra_h*h); + z9l = (w,35/50height); + z9r = (47/53w,40/50height); + z3' = (midlx_ja,midly_ja); + penstroke z8e{z3'-z8l}..{right}z9e; + penlabels(3',8,9); +% Definitions to export + numeric tiplx,tiply,tiprx,tipry; + tiplx = x9l; tiply = y9l; + tiprx = x9r; tipry = y9r; + endgroup +enddef; + +def ja_full(expr xoff,yoff,w,h) = + begingroup + save x,y,currenttransform,width,thiv; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric height; height = matra_f*h; + ja_(xoff,yoff,w-.5rindent,h); + z9l = (tiplx,tiply); + z9' = (tiprx,tipry); z9r = .7[z9l,z9']; + z10l = (x9r,0); + z10r = (x10l-2/56w,1/50height); + penstroke z9e{z9r-(w,height)}..z10e; + penlabels(10); + endgroup +enddef; + +def ina(expr xoff,yoff,w,h) = + begingroup + save x,y,currenttransform,theta,wE; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric theta,wE; theta = 60; wE=18.5/26w; + z1 = (wE-rindent,.41h) + (xoff,yoff); + E(xoff,yoff,wE,h); + clover(z1,w-wE,.25h,.08h); + endgroup +enddef; + +def Da(expr xoff,yoff,w,h,fracrise) = + begingroup + save x,y,xstem,currenttransform; transform currenttransform; + currenttransform := identity shifted (xoff,yoff) slanted slantval; + numeric xstem; xstem = .5w; +% The vertical part + z1 = (xstem,h); penpos1(stem_width,0); + z2 = (x1,31/50h); penpos2(stem_width,0); + z3l = (27.5/49w,21.5/50h); + z3r= (x3l+1/49w,28/50h); + fill z1l..{down}z2l..{right}z3l--z3r{left}..{up}z2r--z1r--cycle; +% The part going up + z4l = (42.5/49w,30/50h); + z4r = (40/49w,38/50h); + fill z3l{right}..tension1.5..z4l--z4r..tension1.8..{left}z3r--cycle; +% The lower cup + z5l = (44/49w,27/50h); penpos5(3/50w,0); + z6l = (29.5/49w,12/50h); + z6r = (31/49w,5/50h); + z7l = (7/49w,(fracrise-.02)*h); + z7r = (5/49w,fracrise*h); + z8 = (0,(63/44)*fracrise*h); + fill z4l..{down}z5l..{left}z6l{left}..{z8-z7l}z7l--z7r{z7r-z8}..{right}z6r{right}..z5r{up}..z4r--cycle; + penlabels(1,2,3,4,5,6,7,8); + endgroup +enddef; + +def Dha(expr xoff,yoff,w,h) = + begingroup + save x,y,balld,currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric balld; balld = .19h; + z1 = (lindent,matra_f*h); penpos1(stem_width,0); + z2 = (lindent,.27h); penpos2(stem_width,0); + z3l = (.35w,.08h); + z3r = (.39w,.2h); + z4r = (.69w,.41h); + z4l = (max(.88w,x4r+.5balld),.47h); + penstroke z1e{down}..{down}z2e..tension1.2..z3e{right}..tension1.2..{up}z4e; + z5 = (x4l-.5balld,y4l); + fill fullcircle scaled (balld) shifted (z5); + penlabels (1,2,3,4,5); + endgroup +enddef; + +def Na_(expr xoff,yoff,w,h) = + begingroup + save x,y,xstem,balld,currenttransform; + numeric xstem,balld,height; + xstem = w - rindent; height = matra_f*h; balld = max(9/50height,.3w); + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) xscaled(w/xstem) slanted slantval; + z1r = (16.5/37w,31/50height); + fill fullcircle scaled balld xscaled(xstem/w) shifted (z1r); + penpos1(.5balld * xstem/w,180); + z2l = z1r - (0,.75balld); + penpos2(.5balld,90); + z3l = (3.5/37w,36/50height); penpos3(6/37w,0); + z4l = (15.5/37w,height); + z4r = (17/37w,45/50height); + z5r = (xstem,y3); penpos5(.08h,-90); + penstroke z1e{down}..z2e..{up}z3e..z4e{right}..{z5l-z4l}z5e; + penlabels(1,2,3,4,5); + endgroup +enddef; + +def ta(expr xoff,yoff,ww,hh) = + begingroup + save x,y,balld,currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric balld; balld = 14/50hh; +% The ball + z1l = (30/52ww,32/50hh); penpos1(.5balld,180); + fill fullcircle scaled balld shifted (z1l); +% Joining the ball and the cup + z2r = (33.5/52ww,43/50hh); + z2l = z1l + .5balld * dir(45); +% The cup at the bottom + z3l = (47/52ww,27/50hh); + z3r = (50/52ww,26/50hh); + z4l = (33/52ww,13.5/50hh); + z4r = (35/52ww,7/50hh); + z5l = (6/52ww,43/50hh); + z5r = (4/52ww,44/50hh); + z6 = (0,62/50hh); + fill z1l..z2l{right}..{down}z3l{down}..z4l{left}..tension1.2..{z6-z5l}z5l--z5r{z5r-z6}..tension1.2..{right}z4r{right}..{up}z3r{up}..{left}z2r..z1r--cycle; + penlabels(1,2,3,4,5,6); +% Definitions to export + numeric top_ta; + top_ta = y2l; + endgroup +enddef; + +def da(expr xoff,yoff,w,h) = + begingroup + save x,y,height,currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric height; height=matra_f*h; +%% The vertical bar at the left + z1 = (lindent,height); penpos1(stem_width,0); + z2l = (x1l,20/50height); + z2r = (x1r,15/50height); + penstroke z1e..z2e; +%% The diagonal line + y4r = .52h; + y4l-y4r=y2l-y2r; + x4r-x4l=stem_width; + .5[x4r,x4l] = w - rindent; + z3 = (x4l,height); + penstroke z2e{z3-z2l}..z4e; +%% Calculation for the upper end of the diagonal line + x5r = x4l; + y5 = y2r; + penpos5(.6*length(z4r-z4l),0); + x6r = x4r; y6r = 0; + penpos6(.4*length(z4r-z4l),-25); + penstroke z4e..z5e..z6e; + penlabels(1,2,3,4,5,6); +% Co-ordinates to export + numeric da_tiplx, da_tiply, da_tiprx, da_tipry; + da_tiplx = x6l; da_tiply = y6l; da_tiprx = x6r; da_tipry = y6r; + endgroup +enddef; + + +def na(expr xoff,yoff,w,h,frach) = + begingroup + save x,y,xstem,balld,currenttransform; + numeric xstem,balld; xstem=w-rindent; + balld = max(15/50h,1/3w); + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + z1r = (13/42w,21.5/50h); penpos1(.5balld,0); + z2r = z1r + .5balld * dir 45; + z2l = z1r + .5balld * (.4 dir 0 + 1.5 dir 90); + fill fullcircle scaled balld shifted (z1r); + fill z1l{up}..{right}z2l--z2r{left}..z1r--cycle; + if frach>0: + z3 = (xstem,frach*h); + hookstem(z2l,z2r,z3,0,0); + else: + z3 = (w,0); + hookjt(z2r,z2l,z3,0.2h,1,90); + fi; + penlabels(1,2,3,4); + endgroup +enddef; + + +def na_(expr xoff,yoff,w,h) = + begingroup + save x,y,xstem,vdiam,ecc,currenttransform; + numeric xstem,balld; + xstem=w-rindent; balld = .25h; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + z1r = (13/32w,21.5/50h); penpos1(.5balld,0); + z2r = z1r + .5balld * dir 45; + z2l = z1r + .5balld * (.4 dir 0 + 1.5 dir 90); + z3l = (w,y1); penpos3(.5*length(z2l-z2r),-90); + fill fullcircle scaled balld shifted (z1r); + fill z1l{up}..{right}z2l--z2r{left}..z1r--cycle; + penstroke z2e{right}..tension1.2..z3e; + penlabels(1,2,3,4); + endgroup +enddef; + +def pa_(expr xoff,yoff,w,h) = +begingroup + save x,y,height,full_w,currenttransform; transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric height; + height = matra_f*h; +% The upper curve + z1l = (3/39w,35/50height); + z1r= (11/39w,38/50height); + z2l = (20/39w,matra_h*h); + z2r = (22/39w,43/50height); + z3l = (w-.5stem_width,34/50height); + z3r = (x3l,y3l+y2r-y2l); + path p; p = z3r{z2l-z3r}..z2r..z1r; + penstroke z1e{up}..z2e..tension1.1..z3e; +% The lower bar + z4l = (10.5/39w,21/50height); + z4r = (17/39w,19/50height); + z5= p intersectionpoint (z4l--(w,matra_f*h)); + cwbar(z4r,z4l,z5,angle(z3l-z5)); +% The connector + z6l= (6.5/39w,32/50height); + z6r = z1r; + z7r = (16.3/39w,34/50height); + z7l = (14.5/39w,33/50height); + z8r = .4[z4l,z5]; + y8l = y8r; + x8r - x8l = length(z7r - z7l); + penstroke z1e{down}..{right}z6e; + penstroke z6e{right}..z7e..{down}z8e; + fill z8l..{z4l-z8r}z4l--z4r--z8r--cycle; + penlabels (1,2,3,4,5,6,7,8); +endgroup +enddef; + +def ba(expr xoff,yoff,w,h) = + begingroup + save x,y,height,currenttransform; + numeric height; height = matra_f*h; + transform currenttransform; + currenttransform := identity shifted (xoff,yoff) slanted slantval; + z1l = (4/39w,29/50height); + z3r = (8.5/39w,23.5/50height); + z2l = (w,43/50height); penpos2(5.5/50height,-90); + z1r = z1l + length(z2r-z2l) * dir angle(z3r-z1l); + path ba_pr; ba_pr = z1r{z2l-z1r}..z2r; + path ba_pl; ba_pl = z2l..{z1r-z2l}z1l; + penstroke z1e{z2l-z1r}..z2e; + z3l = point .2 of ba_pr; + fill z1l--z3l--z3r--cycle; + z4 = (w,height); + hookstem(z3l,z3r,z4,angle(z3l-z1l),2*angle(z3l-z1l)); + penlabels (1,2,3,4); + currenttransform := identity slanted slantval; + numeric ba_topxl, ba_topxr, ba_topy; + ba_topxl = x4 - .5stem_width + xoff; + ba_topxr = x4 + .5stem_width + xoff; + ba_topy = height + yoff; + endgroup +enddef; + +def ba_remove(expr xoff,yoff,w,h) = + begingroup + save x,y,height,currenttransform; + numeric height; height = matra_f*h; + transform currenttransform; + currenttransform := identity shifted (xoff,yoff) slanted slantval; + z1l = (4/39w,29/50height); + z3r = (8.5/39w,23.5/50height); + z2l = (w,43/50height); penpos2(5.5/50height,-90); + z1r = z1l + length(z2r-z2l) * dir angle(z3r-z1l); + path ba_pr; ba_pr = z1r{z2l-z1r}..z2r; + path ba_pl; ba_pl = z2l..{z1r-z2l}z1l; + z3l = point .2 of ba_pr; + z4r = (w+.5stem_width,0); penpos4(.5stem_width,-stem_slope); + z5 = z2 + (.5stem_width,0); penpos5(5.5/50height,-90); + z7 = (x5,0); + unfill z5l--ba_pl--z3r{z3l-z1l}..{down}z4l--z4r--cycle; + unfill z5l--ba_pl--z3r{z3l-z1l}..{down}z4l--z4r--cycle; + endgroup +enddef; + + + +def ba_(expr xoff,yoff,w,h) = + begingroup + save x,y; + z1l = (4/39w,29/50height); + z3r = (8.5/39w,23.5/50height); + z2l = (w,43/50height); penpos2(5.5/50height,-90); + z1r = z1l + length(z2r-z2l) * dir angle(z3r-z1l); + path ba_pr; ba_pr = z1r{z2l-z1r}..z2r; + path ba_pl; ba_pl = z2l..{z1r-z2r}z1l; + penstroke z1e{z2l-z1r}..z2e; + z3l = point .2 of ba_pr; + fill z1l--z3l--z3r--cycle; + z4 = (w,height); + hookstem(z3l,z3r,z4,angle(z3l-z1l),2*angle(z3l-z1l)); + penlabels (1,2,3,4,5); + endgroup +enddef; + +def ba_(expr xoff,yoff,w,h) = + begingroup + save x,y,xstem,currenttransform; + numeric wba,xstem; wba = w; xstem = w-rindent; + transform currenttransform; + currenttransform := identity xscaled (wba/xstem) shifted (xoff,yoff) slanted slantval; + z1 = (.07wba,.45h); + z2 = (.14wba,.35h); + z3 = (xstem,.53h); + z4 = (xstem,.03h); + z5 = z2 + .23wba * (cosd angle(z3-z2), sind angle(z3-z2)); + cwbar(z1,z2,z3,90); + hookjt(z2,z5,z4,.1h,.2,90); + penlabels (1,2,3,4,5); + currenttransform := identity slanted slantval; + endgroup +enddef; + +def bha(expr xoff,yoff,w,h) = + begingroup + save x,y,balld,currenttransform; + numeric balld; balld = 12/54w; + transform currenttransform; + currenttransform := identity shifted (xoff,yoff) slanted slantval; +% The cup at the bottom + z4l = (48/54w,28/50h); z4r = (51/54w,25/50h); + z5l = (33/54w,13/50h); z5r = (34/54w,6/50h); + z6l = (7/54w,43/50h); z6r = (5/54w,44/50h); +% The ball + z1r = (26/54w,34/50h); penpos1(.5balld,0); + fill fullcircle scaled balld shifted z1r; +% Joining the ball and the cup + z2l = (31/54w,24/50h); z2r = (32/54w,30/50h); + z3l = (45.5/54w,32.5/50h); z3r = (42/54w,39.5/50h); + fill z1r..z2r{right}..z3r--z3l..{left}z2l..{up}z1l--cycle; + fill z3r..z4r{down}..{left}z5r..tension1.4..{(0,63/50h)-z6r}z6r--z6l{z6l-(0,63/50h)}..tension1.4..z5l{right}..{up}z4l..z3l--cycle; + penlabels(1,2,3,4,5,6,7,8); + endgroup +enddef; + + +def ma_(expr xoff,yoff,w,h) = + begingroup + save x,y,xstem,theta,balld,height, currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric xstem,theta,balld,height; + xstem = w-rindent; theta = -30; balld = .25h; height = matra_f*h; +% The part leading to the dot + z1l = (4/43w,matra_h*h); penpos1(7/43w,0); + z2l = (21.5/43w,31/50height); + z2r = (26/43w,28/50height); + z3l = (16/43w,21/50height); penpos3(.5balld,theta); + fill z1l{down}..{down}z2l{down}..z3l--z3r{dir (theta+90)}..z2r..tension1.3..z1r--cycle; +% The dot + fill fullcircle scaled balld shifted z3l; +% The part to the lower right of the dot + z4r = z3l; + z4l = z3l + .5balld * dir 90; + z5 = (xstem,matra_h*h); + hookstem(z4l,z4r,z5,0,0); + penlabels(1,2,3,4,5); + endgroup +enddef; + + + +def Ja(expr xoff,yoff,w,h,topfrac) = + begingroup + save x,y,xstem,currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric xstem,height; xstem = w-rindent; height = matra_f*h; +% The upper left portion + z1l = (4/42w,matra_h*h); penpos1(11/42w,0); + z2l = (22/42w,37/50height); + z2r = (28/42w,34/50height); + fill z1l{down}..{z2l-z1l}z2l--z2r--z1r--cycle; + z3 = (12.5/42w,20/50height); +% The portion going towards lower left + cwbar(z2l,z2r,z3,angle(z1r-z2r)); +% The hook and the stem + z4 = 7/21[z3,z2r]; + z5 = (xstem,topfrac*matra_h*h); + hookstem(z4,z3,z5,0,angle(z2r-z2l)); + penlabels(1,2,3,4,5); + endgroup +enddef; + + +def la_(expr xoff,yoff,w,h) = + begingroup + save x,y,xstem,balld,xecc,currenttransform; + numeric xstem,balld,xecc,height; + height = matra_f*h; + xstem = w-rindent; balld = 13/50height; xecc = xstem/w; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) xscaled (1/xecc) slanted slantval; +% The ball + z1 = (.41w,.33h); + fill fullcircle scaled balld xscaled (xecc) shifted (z1); +% The first wavy line coming out of the ball + z2l = z1 + .5balld * dir (-90); penpos2(.3balld,90); + z3l = (5.8/50w,28/50height); + z3r = (9/50w,26/50height); + z4l = (16/50w,41.5/50height); + z4r = (18/50w,36/50height); + z5l = (26.5/50w,36/50height); + z5r = (29/50w,27/50height); + penstroke z2e..z3e{up}..{right}z4e..{z5r-z4l}z5e; +% The second wavy line connecting to the stem + z6l = (33/50w,y4l-1/100height); + z6r= (35/50w,y4r); + z7l = (xstem,31/50height); + z7r= (xstem,26/50height); + penstroke z5e{up}..z6e..tension1.4..{z6r-z6l}z7e; + penlabels(1,2,3,4,5,6,7); + endgroup +enddef; + + +def sha_(expr xoff,yoff,w,h) = + begingroup + save x,y,height,currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric height; height = matra_f*h; +% The balls + z1l = (14.5/40w,40/50height); + z1r = (17/40w,42/50height); + z2 = (5.5/40w,30/50height); + z3 = (11.5/40w,25/50height); + z4 = (19/40w,y2); + x5 -x4 = x4 - x3; y5 = y3; + x6 - x4 = x4 - x2; y6=y2; + z7l = z1r; + x7r - x4 = x4 - x1l; y7r = y1l; + fill z1r--z1l..tension1.4..{down}z2{down}..z3{right}..z4--cycle; + fill z7l--z7r..tension1.4..{down}z6{down}..z5{left}..z4--cycle; +% The antenna to the left + z8r = (0,matra_f*h); + x8l = abs(cosd(matra_slope))*matra_t*h; + y8r-y8l = matra_t*h; + penstroke z8e{right}..tension0.9..{z4-z1l}z1e; +% The line connecting the balls with the stem + z9l = (27/40w,y8r); + z9r = (29/40w,44.5/50height); + z10l = (w,40/50height); + z10r = (w,35/50height); + penstroke z7e..{right}z9e{right}..tension1.5..{z10r-z9r}z10e; + penlabels(1,2,3,4,5,6,7,8,9,10); + endgroup +enddef; + + +def Sha_(expr xoff,yoff,w,h) = + begingroup + save x,y,xstem, currenttransform; + numeric xstem,height; xstem = w-rindent; height=matra_f*h; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) xscaled (w/xstem) slanted slantval; +% The upper left portion + z1l = (4/42w,matra_h*h); penpos1(11/42w,0); + z2l = (22/42w,37.5/50height); + z2r = (28/42w,34/50height); + fill z1l{down}..{z2l-z1l}z2l--z2r--z1r--cycle; +% The portion going towards lower left + z3 = (12.5/42w,20/50height); + cwbar(z2l,z2r,z3,angle(z1r-z2r)); +% The hook + z4 = .33[z3,z2r]; + z5 = (xstem,.5stem_width*sind(stem_slope)); + hookjt(z3,z4,z5,.05h,.5,90); +% The cross through the belly + x6 = xstem; + y6 = (y1r*(x2r-x6) - y2r*(x1r-x6))/(x2r-x1r); + z7 = .13[z2r,z3]; + cwbar (z7,z2r,z6,90); + penlabels(1,2,3,4,5,6,7); + endgroup +enddef; + + + + +def sa_(expr xoff,yoff,w,h) = + begingroup + save x,y,currenttransform; + numeric xstem; xstem = w-rindent; + numeric midxl_sa,midyl_sa,midxr_sa,midyr_sa; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) xscaled(w/xstem) slanted slantval; +% The wavy line + z5l = (5/46w,26/50h); + z5r = (7/46w,27/50h); + z6l = (14.5/46w,15/50h); + z6r = (12/46w,22/50h); + z8r= (xstem,28/50h); + z8l= (x8r,22.5/50h); + x7r = 2/3[x6r,x8r]; y7r = 38.5/50h; + x7l = 2/3[x6l,x8l]; y7l = 31.5/50h; + path pr; pr = z7r{left}..tension2..{left}z6r{left}..tension5..z5r; + path pl; pl = z5l..tension5..{right}z6l{right}..tension2..{right}z7l; + fill pl--pr--cycle; + penstroke z7e{right}..{z8l-z7r}z8e; +% The upper left part + z1l = (3.5/46w,h); penpos1(12.5/46w,0); + z2 = (11/46w,43/50h); + z3l = ((21/46w,0)--(21/46w,h)) intersectionpoint pr; + z3r = ((23/46w,0)--(23/46w,h)) intersectionpoint pr; + fill z1l{down}..{right}z2{right}..{down}z3l--z3r{up}..tension1.2..z1r--cycle; +% Exporting co-ordinates + midxl_sa = (x3l+xoff)*(w/xstem); midyl_sa = y3l+yoff; + midxr_sa = (x3r+xoff)*(w/xstem); midyr_sa = y3r+yoff; + penlabels(1,2,3,4,5,6,7,8); + endgroup +enddef; + +def Ha(expr xoff,yoff,w,h) = + begingroup + save x,y,currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric balld,phi; balld = 13/50h; phi=-60; +%% The ball + z1r = (14.5/40w,34/50h); penpos1(.5balld,phi); + fill fullcircle scaled balld shifted z1r; +%% The connector + z2 = (16/40w,h); penpos2(6.5/40w,0); + z3l = (19.5/40w,42/50h); + z3r = (23/40w,42/50h); + z4 = z1r + .5balld * dir(-90); + fill z4{right}..{up}z3r..z2r--z2l..{down}z3l..z1r--cycle; + z5 = (26/40w,37/50h); + z6l = (37/40w,31/50h); + z6r = (34/40w,32.5/50h); + z7l = (19/40w,13.5/50h); + z7r = (16.5/40w,19/50h); + fill z1l..{right}z3l..{down}z6l--z6r{up}..{left}z5..z1r--cycle; +%% The swordlike line at the bottom + z9l = (10.5/40w,13/50h); + z9r = (5/40w,23/50h); + z10 = (46/40w,-ha_dip); + fill z6l{down}..{left}z7l..z9l--z9r..{right}z7r..{up}z6r--cycle; + hookjt(z9l,z9r,z10,.08h,.5,angle(z9r-z9l)); + penlabels(1,2,3,4,5,6,7,9,10); + endgroup +enddef; + +def khiyo(expr xoff,yoff,w,h) = + begingroup + save x,y,currenttransform; + transform currenttransform; + currenttransform = identity shifted (xoff,yoff) slanted slantval; + numeric xstem,balld,thinness,height,theta; + xstem=42/63w; thinness=.45; height = matra_f*h; balld=11/50height; + theta = -60; +% The two balls + z0 = (xstem,height); + z1= (11/63w,34.5/50height); + z2= (24/63w,20/50height); + fill fullcircle scaled balld shifted (z1); + fill fullcircle scaled balld shifted (z2); +% Points on the two circles + z1a = z1 + .5 * balld * dir(0); + z1b = thinness[z1a,z1]; + z1c = z1 + .5balld * dir(90); + z2a = z2 + .5balld * dir(0); + z2b = thinness[z2a,z2]; + z2c = z2 + .5balld * dir(90); +% The line from the matra to the first dot + z6l = (7/63w,matra_h*h); penpos6(6.5/63w,0); + fill z6l..{down}z1b--z1a{up}..z6r--cycle; +% The line between the two dots + fill z1c{right}..{down}z2a--z2b{up}..tension0.8..{left}z1b--cycle; +% The stem + hookstem(z2c,z2a,z0,0,0); +% This part is for the ball at the end of the hook + z3 = (51/63w,23/50height); + fill fullcircle scaled balld shifted z3; +% The hook + z4l = (xstem,34.5/50height); penpos4(.5balld,90); + z5 = (x3,y4); penpos5(.45balld,90);; + z7 = (24/63w,matra_h*h); penpos7(4/63w,0); + z3a = z3 + .5balld * dir(theta); + z3b = thinness[z3a,z3]; + fill z3a{dir (theta+90)}..tension1.4..{left}z5r..z4r{left}..tension0.8..{up}z7r--z7l..{right}z4l..z5l{right}..{dir (theta-90)}z3--cycle; + penlabels (0,1,1a,1b,1c,2,2a,2b,2c,3,3',3a,3b,4,5,6,7); +% definitions to export + numeric ballx, bally; + ballx = x3; bally = y3; + endgroup +enddef; + + + +%%% End of bangdefs.mf |