%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% bnbanjon.mf: METAFONT file that defines various macros
%              for use in bnjuk.mf
% Created by: Abhijit Das (Barda) IISc Bangalore
% Last modified: Jun 19 1997
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

def newchar(expr code, char_width, char_descr) = 
beginchar(code,char_width*stwd#,stht#,stdp#); char_descr;
enddef;

def matra(expr w,h) = 
pickup dflt_pen;
draw (0,3/4h)..(w,3/4h);
enddef;

def rtbar(expr w,h) =
pickup dflt_pen;
draw (w-0.9pt,0)..(w-0.9pt,3/4h);
enddef;

def na(expr xoff, yoff, w, h, overshoot) = 
begingroup
save z; pair z[];
z1 = (xoff + w, yoff + (overshoot + 1)*h); z2 = (xoff + w, yoff);
z3 = (xoff + 0.040w, yoff + 2/3h);
pickup dflt_pen; draw z1..z2;
pickup pencircle xscaled 0.3pt yscaled 0.6pt;
draw z3{dir 25}..{down}z2;
fill fullcircle scaled 0.5h shifted (z3 + (0.062w,-0.152h));
endgroup
enddef;

def na_(expr xoff, yoff, w, h) = 
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z2 = (1/5w,4/9h); z3 = (11/15w,0); top z4 = (15/16w,h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 30;
draw z2{right}..{right}z3{right}..{dir 105}z4;
fill fullcircle scaled 1.4pt shifted (z2 + (-0.02w,-0.19h));
endgroup
enddef;

def ma(expr xoff, yoff, w, h, overshoot, another) = 
begingroup
save z; pair z[];
z1 = (xoff + w, yoff + (overshoot + 1)*h); z2 = (xoff + w, yoff);
z3 = (xoff - 0.25w, yoff + 4/5h); z4 = (xoff, yoff + h + another);
pickup dflt_pen; draw z1..z2; draw z4{dir -80}..{dir -100}(z3 + (0.25w,0));
pickup pencircle xscaled 0.3pt yscaled 0.6pt;
draw z3{right}..{down}z2;
fill fullcircle scaled 1.5pt shifted (z3 + (-0.02w,-0.152h));
endgroup
enddef;

def la(expr xoff, yoff, w, h, overshoot) = 
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (w,(overshoot + 1)*h); z2 = (w,0);
z3 = (w,1/2h); z4 = (3/4w,4/5h); z5 = (20/33w,11/20h);
z6 = (7/24w,5/6h); z7 = (0,1/2h); z8 = (1/8w,4/15h);
pickup dflt_pen; draw z1..z2;
pickup pencircle xscaled 0.3pt yscaled 0.5pt;
draw z3{dir 135}..{left}z4{left}..{dir -75}z5{dir 105}..{left}z6{left}
     ..{down}z7{down}..{dir -15}z8;
fill fullcircle scaled 1.2pt shifted (z8 + (0.042w,0.110h));
endgroup
enddef;

def ds_(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (0,1/6h); z2 = (1/8w,0); z3 = (6/15w,h);
z4 = (17/20w,0); z5 = (9/10w,h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 60;
draw z1..{right}z2{right}..{dir 75}z3{dir -75}..{right}z4{right}..{dir 135}z5;
endgroup
enddef;

def ga(expr xoff, yoff, w, h, overshoot) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (w,h+0.3pt); z2 = (w,-overshoot*h);
pickup dflt_pen; draw z1..z2;
rt z4 = (w,4/7h); z5 = (9/20w,h); rt z6 = (0,5/9h);
z7 = (17/40w,11/40h); z8 = (16/50w,1/20h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 45;
draw z4{dir 120}..{left}z5{left}..{down}z6{dir 30}
                                     ..{down}z7{down}..{dir -135}z8;
endgroup
enddef;

def ba(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top z1 = (w,h); z2 = (w,0); z3 = 1/8[z1,z2] - (0.015w,0); z4 = (0,1/2h);
pickup dflt_pen; draw z1..z2;
pickup pencircle scaled 0.5pt;
draw z3{z4-z3 rotated -8}..z4;
draw z4{right}.. tension 1.5 .. (z2 - (0.015w,0));
endgroup
enddef;

def ba_(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top z1 = (w,h); z2 = (w,0); z3 = 1/8[z1,z2] - (0.015w,0);
z4 = (0,8/24h); z5 = (1/3w,0);
pickup dflt_pen; draw z1..z2;
pickup pencircle scaled 0.5pt;
draw z3{z4-z3 rotated -8}..z4;
draw z4..z5;
endgroup
enddef;

def ma_(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top z1 = (1/7w,h); z2 = (1/5w,4/9h); z3 = (11/15w,0); top z4 = (15/16w,h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 30;
draw z1..{dir -120}z2{right}..{right}z3{right}..{dir 135}z4;
fill fullcircle scaled 1.4pt shifted (z2 + (-0.10w,-0.12h));
endgroup
enddef;

def pa(expr xoff, yoff, w, h, overshoot) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (w,h+0.3pt); z2 = (w, -h * overshoot);
pickup pencircle scaled 0.4pt; draw z1..z2;
rt z4 = (w,19/40h); z5 = (9/20w,h); rt z6 = (0,2/3h);
z7 = (1/5w,0); z8 = (19/24w,3/4h);
pickup pencircle xscaled 0.3pt yscaled 0.5pt rotated 45;
draw z4--z8{z8-z4}..{left}z5{left}..{dir -140}z6{dir 30}..{dir -140}z7;
pickup pencircle xscaled 0pt yscaled 0.6pt rotated 50;
draw z7--z8;
endgroup
enddef;

def sha(expr xoff, yoff, w, h, overshoot) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (w,h+0.3pt); z2 = (w,0); z3 = (w,-overshoot * h);
pickup pencircle xscaled 0.56pt yscaled 0pt rotated -45; draw z1..z3;
top z4 = (0,h+0.13pt); z5 = (11/30w,16/24h);
top z6 = (16/25w,h); z7 = 1/2[z1,z2];
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 30;
draw z4{right}..{dir -60}z5{dir 60}..{right}z6{right}..{z7-z6}z7;
fill fullcircle xscaled 1.3pt yscaled 2.3pt rotated -45 shifted (z5 + (-0.50pt,-0.62pt));
fill fullcircle xscaled 1.3pt yscaled 2.3pt rotated  45 shifted (z5 + (0.50pt,-0.62pt));
endgroup
enddef;

def cha(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top z3 = (0,h); z4 = (0,1/3h);
z5 = (1/4w,1/16h); z6 = (w,16/27h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 30;
draw z3--z4{down}..z5{dir 30}..{up}z6{dir 165}..{dir 100}z3;
endgroup
enddef;

def chha(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top z3 = (0,h); z4 = (0,5/9h); z5 = (1/8w,1/2h);
z6 = (11/20w,3/4h); z7 = (26/40w,3/4h); z8 = (w,17/27h);
z9 = (1/5w,1/3h); z10 = (w,0);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 45;
draw z3..z4{down}..{right}z5{right}..{dir 80}z6{left}..{up}z3;
draw z6{right}..z7..{down}z8{down}..{left}z9;
draw z9{dir -25}..{dir -45}z10;
endgroup
enddef;

def ta(expr xoff, yoff, w, h, overshoot) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z3 = (2/3w,h); lft z4 = (w,7/15h);
z5 = (3/4w,0); z6 = (1/4w,11/20h); z7 = (0,(1 + overshoot)*h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt;
draw z3{dir 28}..{down}z4{down}..{left}z5{left}..z6..z7;
fill fullcircle scaled 1.5pt shifted (z3 + (0.24pt,-0.44pt));
endgroup
enddef;

def ta_(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z3 = (3/5w,4/5h); lft z4 = (w,7/15h);
z5 = (3/4w,0); z6 = (1/6w,1/2h); top z7 = (0,7/8h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt;
draw z3{dir 28}..{down}z4{down}..{left}z5{left}..z6..z7;
fill fullcircle scaled 1.5pt shifted (z3 + (0.24pt,-0.44pt));
endgroup
enddef;

def dha(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
ba(xoff,yoff,2/3w,h);
z1 = (2/3w,6/7h); z2 = (41/40w,5/6h); z3 = (w,1/25h);
pickup pencircle xscaled 0.35pt yscaled 0.5pt;
draw z1--z2{dir -95}..tension 1.5..{dir -85}z3;
endgroup
enddef;

def ka(expr xoff, yoff, w, h, pos) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
ba(xoff,yoff,2/3w,h);
z1 = (2/3w,4/5h); z2 = (w,pos * h);
draw z1{right}..{dir -120}z2;
fill fullcircle scaled 1.1pt shifted (z2 + (-0.25pt,0.16pt));
endgroup
enddef;

def ka_(expr xoff, yoff, w, h, pos) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
ba_(xoff,yoff,2/3w,h);
z1 = (2/3w,4/5h); z2 = (w,pos * h);
draw z1{right}..{dir -120}z2;
fill fullcircle scaled 1.1pt shifted (z2 + (-0.25pt,0.16pt));
endgroup
enddef;

def da(expr xoff, yoff, w, h, overshoot) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z3 = (0,(1 + overshoot)*h); z4 = (0,17/50h);
pickup dflt_pen; draw z3..z4;
z5 = (9/8w,3/4h); z2 = 1/2[z4,z5] + (0,0.25pt);
z6 = (w,0);
pickup pencircle xscaled 0pt yscaled 0.5pt rotated 45;
draw z4{z2-z4}..z2..{z5-z2}z5;
pickup dflt_pen; draw z5{dir -105}..{dir -80}z6;
endgroup
enddef;

def da_(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (0,h); z2 = (0,0); z3 = (7/8w,1/2h); z4 = (w,1/3h); z5 = (w,0);
z6 = 1/2[z2,z3] + (0,0.35pt);
pickup dflt_pen; draw z1--z2{z6-z2}..{z3-z6}z3--z4--z5;
endgroup
enddef;

def tiki(expr w,h,offshoot) =
begingroup
save z; pair z[];
z1 = (w-0.7pt,3/4h); z2 = ((1 + offshoot)/2*w,31/32h);
z3 = (offshoot*w,11/10h);
pickup pencircle xscaled 0.2pt yscaled 0.4pt;
draw z1{dir 60}..{left}z2{left}..z3;
endgroup
enddef;

def shnur(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (0,1/2h); z2 = (1/2w,h); z3 = (5/6w,0);
pickup dflt_pen;
draw z1..{right}z2{right}..{dir -120}z3;
fill fullcircle scaled (3/5w) shifted (z3 + (-0.17*w,0.11*h));
endgroup
enddef;

def ha(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z4 = (1/4w,4/5h); z5 = (5/6w,2/3h);
z6 = (1/10w,11/24h); z7 = (w,0);
pickup pencircle xscaled 0.6pt yscaled 0.3pt rotated -45;
draw z4{dir 30}..{down}z5{down}..{dir 150}z6;
pickup pencircle scaled 0.3pt;
draw z6{dir -30}..{dir -45}z7;
fill fullcircle xscaled 1.5pt yscaled 1pt rotated 30 shifted (z4 + (0,-0.20pt));
endgroup
enddef;

def ha_(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z3 = (2/10w,h); z4 = (1/4w,4/5h); z5 = (5/6w,2/3h);
z6 = (1/10w,11/24h); z7 = (w,0);
pickup pencircle xscaled 0.6pt yscaled 0.3pt rotated -45;
draw z4{dir 30}..{down}z5{down}..{dir 150}z6;
pickup pencircle scaled 0.3pt;
draw z3{dir -20}..{dir -75}(z4 + (0.5pt,0));
draw z6{dir -30}..{dir -45}z7;
fill fullcircle xscaled 1.5pt yscaled 1pt rotated 30 shifted (z4 + (0,-0.20pt));
endgroup
enddef;

def mna(expr xoff, yoff, w, h, overshoot) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (w,(overshoot + 1)*h); z2 = (w,0);
z4 = (8/16w,h); z3 = (0.040w,4/9h); rt z5 = (w,2/3h);
pickup dflt_pen; draw z1..z2;
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 45;
draw z3{dir 100}..{right}z4{right}..{dir -55}z5;
fill fullcircle scaled 0.4h shifted (z3 + (0.120w,0.050h));
endgroup
enddef;

def tra(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (9/20w,8/15h); z2 = (4/5w,h); z3 = (w,8/9h);
z4 = (w,0); z5 = (1/2w,1/7h); 
z6 = (1/6w,1/5h); z7 = (0,1/2h); z8 = (1/18w,5/7h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 45;
draw z1{dir 135}..tension 1.2..{right}z2{right}..z3{down}..z4;
pickup pencircle xscaled 0.3pt yscaled 0.6pt;
draw (z4+(0,0.2pt)){up}...{left}z5{left}..z6..{up}z7{up}..z8;
fill fullcircle scaled 0.263h shifted (z1 + (0.0887w,0.0713h));
endgroup
enddef;

def Dha(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top lft z3 = (0,h); lft z4 = (0,3/16h);
z5 = (2/5w,1/20h); z6 = (w,16/27h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 30;
draw z3--z4{down}..z5{dir 30}..{up}z6;
fill fullcircle scaled 1.2pt shifted (z6 - (0.43pt,0.15pt));
endgroup
enddef;

def bha(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z3 = (1/3w,5/8h); z4 = (6/7w,5/6h); z5 = (w,15/32h);
z6 = (3/5w,0); z8 = (0,13/15h); z7 = (3/25w,7/16h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 15;
draw z3{dir -29}..{dir 60}z4{dir -50}..{down}z5{down}..{left}z6{left}..z7..z8;
fill fullcircle scaled 1.4pt shifted (z3 + (0.36pt,0.38pt));
endgroup
enddef;

def Da(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top z3 = (1/2w,h); z4 = (1/2w,6/11h); z5 = (11/20w,1/2h);
z6 = (8/9w,7/10h); lft z7 = (w,5/12h);
z8 = (23/40w,1/10h); z9 = (0,8/15h); z10 = (1/10w,1/3h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt;
draw z3{down}..{down}z4{dir -60}..{dir -60}z5{dir 30}..{dir60}z6{dir -60}
     ..{down}z7{down}..{left}z8{left}..z10..z9;
endgroup
enddef;

def ms_(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top z1 = (4/5w,h); z2 = (0,1/4h); z3 = (1/5w,0); z4 = (w,3/4h);
pickup pencircle xscaled 0.3pt yscaled 0.5pt rotated 45;
draw z1{left}..{down}z2{down}..{right}z3{right}..{up}z4{up}..{left}z1;
z5 = (1/3w,2/3h); z6 = (2/3w,3/10h); draw z5..z6;
endgroup
enddef;

def pha_(expr xoff, yoff, w, h) = 
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z3 = (7/10w,4/5h); z4 = (7/10w,0); draw z3..z4;
top rt z5 = (0,h); z6 = (1/3w,43/60h); z7 = (1/10w,4/9h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 50;
draw z5{right}.. tension 2 ..z6--z7;
draw z7{right}..tension 1.5 ..{dir -75}(z4 - (0.08pt,0));
lft z8 = (41/40w,14/27h); z9 = (w,1/4h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt;
draw z3{right}..{down}z8{down}..z9;
fill fullcircle scaled 1pt shifted (z9 + (-0.20pt,0.20pt));
endgroup
enddef;

def pha(expr xoff, yoff, w, h, overshoot) = 
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z3 = (7/10w,4/5*(1+overshoot)*h); z4 = (7/10w,0); draw z3..z4;
top rt z5 = (1/7w,h); z6 = (11/40w,48/60h); z7 = (0w,4/9h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 50;
draw z5{right}.. tension 2 ..z6--z7;
draw z7{right}..tension 1.5 ..{dir -75}(z4 - (0.08pt,0));
lft z8 = (41/40w,(14/27+overshoot*3/4)*h); z9 = (w,(1/4+overshoot*3/4)*h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt;
draw z3{right}..{down}z8{down}..z9;
fill fullcircle scaled 1pt shifted (z9 + (-0.20pt,0.20pt));
endgroup
enddef;

def ds(expr xoff, yoff, w, h) = 
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
pickup dflt_pen;
top z3 = (w,h); z4 = (w,0); draw z3..z4;
top z5 = (1/20w,h); rt z10 = (w,3/7h);
z7 = (0,2/5h); z8 = (1/7w,14/50h);
z9 - z10 = (z7 - z8); rt bot z6 = 3/5[z8,z9];
pickup pencircle xscaled 0.3pt yscaled 0.6pt;
draw z5{right}..{down}z6;
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 45;
draw z7..z8..z9..tension 1.4..z10;
endgroup
enddef;

def _ds(expr xoff, yoff, w, h) = 
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
pickup dflt_pen;
top z3 = (w,h); z4 = (w,0); draw z3..z4;
top z5 = (1/20w,h); rt z10 = (w,3/7h);
z7 = (0,2/5h); z8 = (1/7w,14/50h);
z9 - z10 = (z7 - z8); rt bot z6 = 3/5[z8,z9];
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 45;
draw z7..z8..z9..tension 1.4..z10;
endgroup
enddef;

def _Dha(expr xoff, yoff, w, h) = 
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top lft z3 = (2/5w,h); lft z4 = (0,3/6h);
z5 = (1/2w,0); z6 = (w,20/27h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 30;
draw z3..tension 2..z4{down}..z5..{up}z6;
fill fullcircle scaled 1.2pt shifted (z6 - (0.43pt,0.15pt));
endgroup
enddef;

def Tha(expr xoff, yoff, w, h) = 
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z3 = (1/2w,h); z4 = (0,3/10h); z5 = (6/16w,1/12h);
z6 = (w,1/2h); z7 = (3/8w,3/2h); z8 = (9/19w,19/12h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 45;
draw z3{dir -75}..{dir -150}z4{down}..{right}z5{right}..{up}z6{up}
     ..{dir 120}z3..{up}z7{up}..{dir 45}z8;
endgroup
enddef;

def tta(expr xoff, yoff, w, h) = 
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (1/5w,3/4h); z2 = (3/4w,h);
z3 = (w,64/75h); z4 = (4/5w,3/5h); z5 = (w,28/75h);
z6 = (3/5w,1/9h); z8 = (0,13/15h); z7 = (3/25w,4/9h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 30;
draw z1{dir 75}..{right}z2{right}..{down}z3{down}..{dir -135}z4
{dir -40}..{down}z5{down}..{left}z6{left}..z7..z8;
fill fullcircle scaled 1.3pt shifted (z4 + (-0.37pt,0));
fill fullcircle scaled 1.1pt shifted (z1 + (0.39pt,0));
endgroup
enddef;

def gha(expr xoff, yoff, w, h) = 
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top z3 = (w,h); z4 = (w,0); pickup dflt_pen; draw z3..z4;
z5 = (1/7w,h-0.05pt); z6 = (0,4/5h);
z7 = (15/25w,7/10h); z8 = (1/9w,4/10h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 45;
draw z5{dir -120}..{down}z6{down}..{dir 30}z7--z8;
draw z8{right}..tension 1.5 ..{dir -75}z4;
endgroup
enddef;

def una(expr xoff, yoff, w, h) = 
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (1/10w,h); z2 = (19/40w,76/93h); z3 = (25/29w,92/93h);
z4 = (1/2w,h); z5 = (4/9w,1/2h); z6 = (19/40w,64/135h);
z7 = (8/9w,2/3h); lft z8 = (w,11/25h); z9 = (23/40w,1/9h);
z10 = (6/50w,4/9h); z11 = (0,13/15h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 30;
draw z1..tension 1.2..{right}z2{right}..tension 1.2..
{up}z3{up}..{dir -130}z4{dir -130}..
tension 2..z5--z6{dir 0}..{dir 60}z7{dir -60}..{down}z8{down}
..{left}z9{left}..z10..z11;
endgroup
enddef;

def khiyo_base(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top z1 = (1/15w,h); z2 = (1/7w,4/5h); z3 = (1/2w,2/5h); 
z4 = (w-0.01pt,0.2pt); z5 = (w,h); z6 = (w,0);
pickup dflt_pen; draw z5..z6;
pickup pencircle xscaled 0.3pt yscaled 0.55 pt rotated 45;
draw z1..{down}z2{dir 20}..{dir -130}z3{right}..{down}z4;
fill fullcircle scaled 1.4pt shifted (z2 + (-0.055w,-0.07h));
fill fullcircle scaled 1.4pt shifted (z3 + (-0.07w,-0.04h));
endgroup
enddef;

def khiyo(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
khiyo_base(xoff,yoff,2/3w,h);
top z1 = (17/40w,h); z2 = (2/3w,29/40h); z3 = (w,9/20h);
pickup pencircle xscaled 0.3pt yscaled 0.6 pt;
draw z1{dir -120}..{dir 15}z2{dir 15}..{dir -120}z3;
fill fullcircle scaled 1.3pt shifted (z3 + (-0.090w,-0.00h));
endgroup
enddef;

def bhra(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z3 = (1/3w,9/15h); z4 = (6/7w,6/7h); z5 = (w,8/11h); z6 = (w,0);
z8 = (w,0); z9 = (1/2w,1/6h); 
z10 = (11/30w,1/6h); z11 = (1/15w,6/8h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 15;
draw z3{dir -29}..{dir 60}z4..tension 3.5..z5--z6;
pickup pencircle xscaled 0.3pt yscaled 0.6pt;
draw z8{dir 90}..{left}z9..z10{left}..z11;
fill fullcircle scaled 1.4pt shifted (z3 + (0.36pt,0.38pt));
endgroup
enddef;

def ja(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top z3 = (8/20w,h); z4 = (4/21w,2/3h); z5 = (8/20w,1/2h);
z6 = (23/36w,35/60h); z7 = (12/16w,19/50h); z8 = (1/2w,1/6h);
rt z9 = (0,3/4h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt;
draw z3{dir -135}..{down}z4{down}..{right}z5{right}..{dir30}z6
     {dir -60}..{down}z7{down}..{left}z8{left}..{up}z9;
endgroup
enddef;

def jaleg(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
top z3 = (0,h);
rt z11 = (w,3/4h);
z12 =  (7/8w,0);
pickup pencircle xscaled 0.25pt yscaled 0.5pt;
draw z3{dir -90}..{dir 15}z11;
pickup pencircle xscaled 0.2pt yscaled 0.45pt rotated 45;
draw z11{dir -120}..tension 1.8..z12;
endgroup
enddef;

def hump(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z9 = (0,2/5h); z13 = (0,3/5h); z11 = (8/9w,1/2h);
z10 = (w,0); z12 = (w,h);
pickup pencircle xscaled 0.25pt yscaled 0.45pt;
draw z9{dir -60}..z10..z11;
pickup pencircle xscaled 0.25pt yscaled 0.45pt;
draw z13{dir 60}..z12..z11;
fill fullcircle scaled 1.0pt shifted (z11 + (-0.15pt,0));
endgroup
enddef;

def ina(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
tra(xoff,yoff,3/5w,h);
hump(xoff+3/5w,yoff+1/3h,2/5w,3/5h);
endgroup
enddef;

def jha(expr xoff, yoff, w, h, fract) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
ba(xoff,yoff,7/10w,h);
z1 = (7/10w,2/5h); z2 = (w,1/20h); z3 = (w,fract*h);
pickup dflt_pen; draw z2..z3;
draw z1{z2-z1 rotated -8}..z2;
endgroup
enddef;

def dha_(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
ba(xoff,yoff,w,h);
z8 = (1/2w,22/30h); z9 = (1/9w,9/10h); bot z10 = (9/30w,h);
pickup pencircle scaled 0.35pt;
draw z8{left}..{up}z9{up}..{right}z10;
fill fullcircle scaled 1.0pt shifted (z10 + (0.1pt,-0.33pt));
endgroup
enddef;

def gu(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[],z[]'; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
z1 = (7/10w,3/5h); z2 = (74/100w,76/100h);
z4 = (19/25w,8/20h); z5 = (7/8w,12/50h);
z6 = (24/40w,1/18h); z8 = (1/10w,13/20h); z7 = (9/50w,1/3h);
pickup pencircle xscaled 0.3pt yscaled 0.6pt rotated 30;
draw z1--z2{dir -60}..{dir -135}z4
     {dir -30}..{down}z5{down}..{left}z6{left}..z7..z8;
fill fullcircle scaled 1.4pt shifted (z4 + (-0.37pt,0));
z2' = (9/20w,3/4h); z3' = (9/40w,12/20h);
z4' = (18/40w,11/20h); z5' = (7/20w,8/20h);
draw z1{dir 120}..{left}z2'{left}..{down}z3'{dir 30}..{down}z4'{down}..z5';
endgroup
enddef;

def ha_ma(expr xoff, yoff, w, h) =
begingroup
save z, currenttransform; pair z[]; transform currenttransform;
currenttransform = identity shifted (xoff,yoff) slanted slantval;
khiyo_base(xoff,yoff,3/4w,h);
z2 = (3/8w,3/4h); z3 = (3/4w,3/4h);
z4 = (w,27/40h); z5 = (w,1/10h);
pickup pencircle scaled 0.5pt;
draw z2{dir -15}..{dir 15}z3{dir 15}..z4{dir -95}..{dir -85}z5;
endgroup
enddef;

%%% End of bnmacro.mf
