summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/itrans/kanmain.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/itrans/kanmain.mf')
-rw-r--r--Master/texmf-dist/fonts/source/public/itrans/kanmain.mf1298
1 files changed, 1298 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/itrans/kanmain.mf b/Master/texmf-dist/fonts/source/public/itrans/kanmain.mf
new file mode 100644
index 00000000000..783a6b6d389
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/itrans/kanmain.mf
@@ -0,0 +1,1298 @@
+% This file is part of the KannadaTeX Software Package.
+%Copyright (c) 1991 G.S. Jagadeesh & Venkatesh. Gopinath.
+%
+%Author: GS. Jagadeesh.
+%The KannadaTeX Software Package is distributed in the hope that
+%it will be useful,but WITHOUT ANY WARRANTY. No author or distributor
+%accepts responsibility to anyone for the consequences of using it
+%or for whether it serves any particular purpose or works at all,
+%unless he says so in writing. Refer to the KannadaTeX Software Package
+%General Public License for full details.
+%
+%Everyone is granted permission to copy, modify and redistribute
+%the KannadaTeX Software Package, but only under the conditions described in the
+%KannadaTeX Software Package General Public License. A copy of this license is
+%supposed to have been given to you along with KannadaTeX Software Package so you
+%can know your rights and responsibilities. It should be in a
+%file named CopyrightLong. Among other things, the copyright notice
+%and this notice must be preserved on all copies.
+%%%%%
+
+font_coding_scheme := "TeX text";
+
+%font_size 10pt#; slant:=0; pen_width#:=0.35pt#; penangle := 30 ;
+
+% avinash: June 1998: do not set mode here, that is set by MakeTeXPK
+% mode=localfont;
+
+input kancodes; % codes for kannada symbols
+input kanparam;
+
+font_coding_scheme := "TeX text";
+
+mode_setup; font_setup;
+
+
+def v_e_form =
+ lft z1=(0,j_height); top z2=(1/5v_e_width,x_height);
+ z3=(2/5v_e_width,1.2j_height); top z4=(3/5v_e_width,x_height);
+ rt z5=(v_e_width,1/2x_height); z6=(4/5v_e_width,1/5x_height);
+ bot z7=(1/2v_e_width,0); z8=(1/5v_e_width,1/4x_height);
+ z9=(1/2v_e_width,1/2x_height); rt z10=(v_e_width,-1/5des_depth);
+ path v_e_p;
+ v_e_p = z1..z2..tension 1.2..z3&z3..tension 1.2..z4..z5..z6..z7..z8..z9..z10;
+ sketch v_e_p;
+enddef;
+
+def place_lit_circ (suffix $) (expr sc) =
+ lit_cir_form;
+ erase sketch lit_cir_p;
+ path pl_lit_cir_p ;
+ transform t;
+ t=identity scaled sc shifted z$ ;
+ %sketch lit_cir_p transformed t;
+ pl_lit_cir_p = lit_cir_p transformed t;
+ sketch pl_lit_cir_p ;
+enddef ;
+
+def bar_form(suffix $) (expr width) =
+ path bar_p;
+ z$b= (x$+width-2u, y$);
+ bar_p = z$--z$b;
+ sketch bar_p;
+enddef;
+
+def bar_forma(expr width) =
+ path bar_pa;
+ z300=rt bot (0,x_height); z301= bot(width-2u, x_height);
+ bar_pa=z300--z301;
+ sketch bar_pa;
+enddef;
+
+def vmfa_form(suffix $) = % tale-kattu
+ path bar_p;
+ z$c= (x$+1.4u, y$);
+ top z$d= (x$c+.5u, y$+2.5u);
+ bar_p = z$--z$c{z$c-z$}..z$d;
+ sketch bar_p;
+enddef;
+
+def vm_aa_form =
+ top z1 = (0+u,x_height);
+ top z2 = (vm_aa_width-2u,x_height);
+ rt z3 = (vm_aa_width, 1/2y1);
+ bot z4 = (x2, 0);
+ z5 = (x2-x1, y4+.1y1);
+ z6 = (x2-1/4x1, y4+.2y1);
+ z7 = (x2-1/8x1, y4+.1y1);
+ sketch z1..tension 7..z2..tension 1.8..z3..z4..z5..z6..z7;
+ flop(4);
+enddef;
+
+def vmfaa_form(suffix $) = % tale-a ile.
+ top z1a = (x$+0,x_height);
+ z1b = (x$+4.2u,y1a);
+ rt z1c = (x1b+2u, .5y1a);
+ bot z1d = (x1b-.4u, 0);
+ bot z1e = (x1d, 1.5u);
+ z1f = (x1e+.25u, y1e-.5u);
+
+ sketch z1a---z1b..tension 1.8..z1c..tension 1.2..z1d..z1e..z1f;
+ %sketch z1a..tension 10..z1b..tension 1.8..z1c..tension 1.2..z1d..z1e..z1f;
+ %sketch z1a; draw z1b; draw z1c; draw z1d; draw z1e; draw z1f; draw z1f;
+enddef;
+
+
+def vmfea_form(suffix $) = % tale-athwa
+ path bar_p;
+ z$c= (x$+1.5u, y$);
+ z$d= (x$c+.5u, y$+2.5u);
+ z$e= (x$+1u, y$+1.5u);
+ z$f= (x$+1.5u, y$e-.4u);
+ bar_p = z$---z$c{z$c-z$}..z$d..z$e..z$f;
+ sketch bar_p;
+enddef;
+
+def vmah_form(suffix $) = % tale-ardha akshara
+ path bar_p;
+ z$c= (x$+1.2u, y$);
+ z$cc= (x$c+1.5u, y$);
+ z$d= (x$cc-.75u, y$-1u);
+ %z$e= (x$+2.75u, y$+1.25u); % adjust if you want it..
+ z$e= (x$+3u, y$+1.5u);
+ bar_p = z$--z$c..z$cc{dir 2}..z$d..tension 1.4..z$e;
+ sketch bar_p;
+enddef;
+
+def cb_ka_form =
+ path cb_ka_pa, cb_ka_pb, cb_ka_pc;
+ rt top z1=(0.5cb_ka_width, 0.75x_height); lft z2=(0, 3/8x_height);
+ bot z3=(.5cb_ka_width, 0);
+ rt z4=(cb_ka_width, 3/8x_height);
+ lft z5=(0, 0.75x_height); rt z6=(cb_ka_width, .75x_height);
+ top z7=(0.5cb_ka_width, 0.75x_height);
+ top z8=(0.55cb_ka_width, x_height);
+ path cb_ka_p;
+ cb_ka_pa = z1..z2..z3..z4..cycle;
+ cb_ka_pb = z5--z6;
+ cb_ka_pc = z7..{dir 125}z8;
+ sketch cb_ka_pa;
+ sketch cb_ka_pb;
+ sketch cb_ka_pc;
+ lft top z0 = (0, x_height);
+ bar_forma(cb_ka_width-.5u); % z301 is comming from bar_forma...
+ %vmfa_form(301); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(301) ;
+ %vmfea_form(301);
+ %bar_form(0,cb_ka_width);
+
+ % to compute the joining point of "kombu for ka".
+ path inter;
+ inter = (1/2cb_ka_width, .3x_height)--(1.1cb_ka_width, .3x_height);
+ z400 = cb_ka_pa intersectionpoint inter;
+
+enddef;
+
+def cb_kha_form =
+ z1=(4/15cb_kha_width,5/6x_height);z2=(2/15cb_kha_width,y1-uh);
+ lft z3=(0,y1); top z4=(x6,x_height);
+ z5=(5/12cb_kha_width,1/8x_height); bot z6=(1/4cb_kha_width,0);
+ lft z7=(0,1/4x_height); z8=(1/4cb_kha_width,1/3x_height);
+ bot z9=(3/4cb_kha_width,0); rt z10=(cb_kha_width,1/3x_height);
+ top z11=(x9,x_height);
+ path cb_kha_p;
+ cb_kha_p=z1..z2..z3..z4..z5..z6..z7..z8..z9..z10..z11;
+ %sketch cb_kha_p;
+ z12 = lft z11;
+ %vmfaa_form(12) ;
+ %vmfea_form(12);
+
+ % to compute the joining point of "kombu for ka".
+ path inter;
+ inter = (.8cb_kha_width, .3x_height)--(1.1cb_kha_width, .3x_height);
+ z400 = cb_kha_p intersectionpoint inter;
+
+enddef;
+
+def cb_ga_form =
+ bot z1=(u,0); x5=cb_ga_width-x1; bot y5=0;
+ y2=y4=1/3x_height; lft x2=0; rt x4=cb_ga_width;
+ top z3=(1/2cb_ga_width,x_height);
+ path cb_ga_p, cv_ge_p, cb_ga_pt;
+ cb_ga_p=z1..z2..z3..z4..z5;
+ %sketch cb_ga_p;
+
+ % following is for vowel modifier "e".
+ numeric na,nb,nc,nd;
+ (na,nb)= cb_ga_p intersectiontimes
+ ((0,vm_e_height2)--(1/2cb_ga_width,vm_e_height2));
+ z30= point na of cb_ga_p;
+ top z31=(1/6cb_ga_width,.9vm_e_heightx);
+ %top z31=(1/2cb_ga_width,vm_e_heightx);
+ (nc,nd)= cb_ga_p intersectiontimes
+ ((1/2cb_ga_width,vm_e_height2)--(cb_ga_width,vm_e_height2));
+ z32= point nc of cb_ga_p;
+ cv_ge_p=z30..z31..tension1.2..z32;
+
+ % to compute the joining point of "kombu for ka".
+ path inter;
+ inter = (.8cb_ga_width, .3x_height)--(1.1cb_ga_width, .3x_height);
+ z400 = cb_ga_p intersectionpoint inter;
+
+enddef;
+
+% following macro is used for many derivatives of "pa" like gha, va etc.,
+def cb_pa_form =
+ top z41=0.85(1/8cb_pa_width+1/2u, 1/4x_height+1/4u);
+ top z42=0.85(1/4cb_pa_width, 3/8x_height);
+ top z43=0.85(1/8cb_pa_width, 1/2x_height);
+ top z44=0.85(0, 3/8x_height);
+ bot z45=(1/4cb_pa_width, 0);
+ bot z46=(1/2cb_pa_width, 0.6w_height);
+ bot z47=(3/4cb_pa_width, 0);
+ rt top z48=(cb_pa_width, 1/2x_height);
+ rt z33=(0.9cb_pa_width, .85x_height) ;
+
+ path cb_pa_p,cb_paa_p;
+ cb_pa_p = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z33;
+
+
+ % to compute the joining point of "kombu for pa and its derivatives".
+ path inter;
+ inter = (.8cb_pa_width, .25x_height)--(1.1cb_pa_width, .25x_height);
+ z400 = cb_pa_p intersectionpoint inter;
+
+enddef;
+
+def vm_ghu_form (suffix $) =
+ numeric diff_ht;
+ numeric mx, my, mz;
+ diff_ht = x_height-y$;
+ bot z$x = (x$+vm_u_width/4,y$-1/9diff_ht);
+ rt z$y = (x$+vm_u_width/2,y$+1/2diff_ht);
+ top rt z$z = (x$+vm_u_width/3,y$+diff_ht-0.3u);
+ path vm_ghu_p;
+ vm_ghu_p=z$..z$x..z$y..z$z;
+ sketch vm_ghu_p;
+ %penlabels($aa,$bb,$cc,$d);
+enddef;
+
+def cb_cch_form =
+ path cb_ccha_pa, cb_ccha_pb, cb_ccha_pc;
+ numeric k_w, k_yo, k_h, k_xo;
+ k_w=1/4cb_ja_width; % Kondi width
+ k_xo=1/6cb_ja_width;
+ k_yo=3/4x_height;
+ k_h=1/4x_height;
+
+ top rt rt z1=(k_xo+1/3k_w, k_yo+1/2k_h);
+ rt top z2=(k_xo+1/2k_w, k_yo);
+ rt top z3=(k_xo+k_w, k_yo+1/2k_h);
+ rt top z4=(k_xo+1/2k_w,k_yo+k_h);
+
+ rt z5=(0.075cb_ja_width, 3/4x_height);
+
+ z6=(0, 1/2x_height);
+ bot z7=(1/4cb_ja_width, 0);
+ z8=(1/2cb_ja_width, .6w_height);
+ bot z9=(3/4cb_ja_width, 0);
+ rt z10=(cb_ja_width, 1/2x_height);
+ top z11=(0.80cb_ja_width, x_height);
+
+ cb_ccha_pa = z1..z2..z3..z4..z5..z6..z7..z8..z8..z9..z10..z11;
+ sketch cb_ccha_pa;
+ z12 = (x11-.5u, y11);
+
+ %vmfa_form(12); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(12) ;
+ %vmfea_form(12);
+ %bar_form(0,cb_ja_width);
+ %vm_au_form(12,w);
+
+ % to compute the joining point of "kombu for ka".
+ path inter;
+ inter = (.8cb_ja_width, .3x_height)--(1.1cb_ja_width, .3x_height);
+ z400 = cb_ccha_pa intersectionpoint inter;
+
+enddef ;
+
+
+def cb_ch_ja_base=
+ numeric j_offset;
+ j_offset = 0.08cb_ja_width;
+ lft z1 = (0,j_height); top z2 = (cb_ja_width/8,x_height);
+ z3 = (cb_ja_width/4+j_offset,j_height);
+ z4 = (cb_ja_width/8+j_offset,x_height/2);
+ lft z5 = (0,w_height); bot z6 = (cb_ja_width/8,0);
+ %z7 = (cb_ja_width/2,0.8w_height); bot z8 = (3/4cb_ja_width,0);
+ z7 = (cb_ja_width/2,0.8w_height); bot z8 = (.8cb_ja_width,0);
+enddef ;
+
+def cb_ja_form =
+
+ cb_ch_ja_base; % Defines some base points for ja, ch O etc.,
+ rt z9 = (cb_ja_width,w_height);
+ path cb_ja_pa,cb_ja_pb, cb_nga_p, cb_ja_pc, cb_ja_pe;
+ cb_ja_pa=z1..z2..z3..z4..z5..z6..tension1.15..z7&z7..tension1.2..z8..z9;
+
+ % to define BOWL for ja.
+ z40 = (0.2cb_ja_width, .9x_height); top z41=(.95cb_ja_width, x_height);
+ z60= (z40..z41) intersectionpoint cb_ja_pa ;
+ z50 = (1.4x3,0.8x_height);
+ cb_ja_pb=z60..z50..z41;
+
+ % to define BOWL for nga.
+ z20 = (0.2cb_ja_width, .8x_height); top z21=(.95cb_ja_width, .9x_height);
+ z30= (z20..z21) intersectionpoint cb_ja_pa ;
+ top z10 = (1.4x3,.95x_height);
+ cb_nga_p=z30..z10..z21;
+
+ z42= (x41, y41+1.5u) ;
+ z43= (x41-u, y42-.75u) ;
+ z44= (x41-.7u, y42-1.4u) ;
+ cb_ja_pe = z60..z50..z41..z42..z43..z44 ;
+ z35=(0.62cb_ja_width, y40-u) ;
+ cb_ja_pc = rt bot z35 ;
+ sketch cb_ja_pa;
+ %penlabels(3w,3x,3y,3z);
+
+ % for "ile" and "tale kattu"
+
+ z52=(x41-u, y41);
+ %vmfa_form(52); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(52) ;
+ %vmfea_form(52);
+ %bar_form(0,cb_ka_width);
+ %vm_au_form(52,w);
+
+ % to compute the joining point of "kombu for ka".
+ path inter;
+ inter = (.8cb_ja_width, .3x_height)--(1.1cb_ja_width, .3x_height);
+ z400 = cb_ja_pa intersectionpoint inter;
+
+ enddef;
+
+def cb_ch_form =
+ path cb_cha_pa, cb_cha_pb, cb_cha_pc;
+ cb_ch_ja_base;
+ rt rt z9 = (0.9cb_ja_width, .6x_height);
+ cb_cha_pa=z1..z2..z3..z4..z5..z6..tension1.2..z7&z7..tension1.15..z8..tension1.1..z9;
+ sketch cb_cha_pa;
+ y11 = y10 = y9; x10=cb_ja_width; x11=x9-(x10-x9);
+
+ top z12 = (x9, x_height);
+ cb_cha_pb = z10--z11;
+ cb_cha_pc = z9{dir 40}..z12;
+ sketch cb_cha_pb ;
+ sketch cb_cha_pc ;
+
+ z20 = (x12-.1u,y12) ;
+ %vmfa_form(20); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(20) ;
+ %vmfea_form(20);
+ %bar_form(0,cb_ka_width);
+ %vm_au_form(20,w);
+
+ % to compute the joining point of "kombu for ka".
+ path inter;
+ inter = (.8cb_ja_width, .3x_height)--(1.2cb_ja_width, .3x_height);
+ %sketch inter;
+ z400 = cb_cha_pa intersectionpoint inter;
+
+enddef ;
+
+def cb_nya_form=
+ v_e_form;
+ path cb_ny_pb;
+ z14= v_e_p intersectionpoint ((x4,.8x_height)--(w,.8x_height));
+ z15=z14;
+ z16=(v_e_width+half_plus_width, .9y14);
+ cb_ny_pb = z14{dir 60}..z16;
+ sketch cb_ny_pb;
+ z17=top(.6(x14+x16), x_height);
+ %pivot_message(x15c,x7);
+ %vmfa_form(17); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(17) ;
+ %vmfea_form(17);
+ %bar_form(0,cb_ka_width);
+ %vm_au_form(400,w);
+
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8v_e_width, .3x_height)--(1.1v_e_width, .3x_height);
+ z500 = v_e_p intersectionpoint inter;
+ z400=(x500+3u,y500);
+ %vm_u_form(400);
+
+enddef ;
+
+def cb_ta_form =
+ lft z1=(0,.35x_height); bot z2=(.55cb_ta_width, 0);
+ rt z3=(cb_ta_width, .35x_height); z4=(.55cb_ta_width, .55x_height);
+ rt z5=(.4cb_ta_width, .42x_height);
+ top z6=(.7cb_ta_width, .48x_height);
+ bot z7=(.75cb_ta_width, .68x_height);
+ bot z8=(.7cb_ta_width, .78x_height);
+ top z9=(.5cb_ta_width, x_height);
+
+ top z10 = (.4cb_ta_width, x_height) ;
+ z11 = (.41cb_ta_width, .8x_height) ;
+ z12 = (.5cb_ta_width, .85x_height) ;
+
+ path cb_ta_p, cb_te_p;
+ cb_ta_p = z1..z2..z3..z4..tension 1.2..z5..tension1.2..z6..z7..z8..z9;
+ cb_te_p = cb_ta_p softjoin z9..z10..z11..z12 ;
+ bar_forma(cb_ta_width-.5u); % z301 is comming from bar_forma...
+ %vmfa_form(301); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(301) ;
+ %vmfea_form(301);
+ %vm_au_form(301,vm_au_width);
+
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_ta_width, .3x_height)--(1.1cb_ta_width, .3x_height);
+ z400 = cb_ta_p intersectionpoint inter;
+ %vm_u_form(400);
+
+enddef;
+
+def cb_tta_form =
+ path cb_tta_p, cb_tta_pa, cb_tta_pe;
+ lft top z1=(0.12cb_tta_width,x_height);
+ lft top z2=(0.1cb_tta_width,x_height);
+ top z3=(0,.75x_height);
+ lft z4=(.15cb_tta_width, 0.43x_height);
+ lft z5=(.2cb_tta_width, 0.55x_height);
+ z6=(0, .25x_height);
+ bot z7=(1/4cb_tta_width, 0);
+
+ z8=(1/2cb_tta_width, 0.6w_height);%(wedge)
+
+ bot z9=(3/4cb_tta_width, 0);
+ lft z10=(cb_tta_width, 1/4x_height);
+
+ z11=(0.85cb_tta_width, 1/2x_height); %(wedge)
+ rt lft z12=(cb_tta_width, 3/4x_height);
+ rt top z13=(.9cb_tta_width, x_height);
+
+ %For consanant +e
+ z14=(.8cb_tta_width, .9x_height);
+ z15=(.89cb_tta_width, .8x_height);
+
+ %cb_tta_pa = z1..tension1.2..z2..z3..tension1.2..z4;
+ cb_tta_pa = z1..tension1.2..z2..z3..{curl 6.3}z4;
+ cb_tta_p = z4..z5..tension1.2..z6..z7
+ ..z8..z8..z9..z10..z11..z11..z12..z13;
+ %For consanant +e
+ cb_tta_pe = z4..z5..tension1.2..z6..z7
+ ..z8..z8..z9..z10..z11..z11..z12..z13..z14..z15;
+ sketch cb_tta_pa ;sketch cb_tta_p;
+ z20=(x13-u,y13);
+
+ %vmfa_form(20); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(20) ;
+ %vmfea_form(20);
+ %bar_form(0,cb_ka_width);
+ %vm_au_form(20,w);
+
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_tta_width, .3x_height)--(1.1cb_tta_width, .3x_height);
+ z400 = cb_tta_p intersectionpoint inter;
+ %vm_u_form(400);
+
+enddef;
+
+
+def cb_da_form =
+ top z1=(1/2cb_da_width,x_height); lft z2=(0,w_height);
+ bot z3=(1/3cb_da_width,0);z4=(1/2cb_da_width,.6w_height);
+ bot z5=(2/3cb_da_width,0);rt z6=(cb_da_width,1/2x_height);
+ path cb_da_p,cv_de_p;
+ cb_da_p= z4..tension 1.2..z5..z6..z1..z2..z3..tension 1.2..z4;
+ sketch cb_da_p;
+ numeric na,nb,nc,nd;
+ (na,nb)= cb_da_p intersectiontimes
+ ((0,vm_e_height2)--(1/2cb_da_width,vm_e_height2));
+ z30= point na of cb_da_p;
+ (nc,nd)= cb_da_p intersectiontimes
+ ((1/2cb_da_width,vm_e_height2)--(cb_da_width,vm_e_height2));
+ z32= point nc of cb_da_p;
+ top z31=(1/2cb_da_width,.95vm_e_heightx);
+ cv_de_p=z30{curl 3}..z31..z32;
+ bar_forma(cb_da_width-.5u); % z301 is comming from bar_forma...
+ %vmfa_form(301); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(301) ;
+ %vmfea_form(301);
+ %vm_au_form(301,vm_au_width);
+
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_da_width, .3x_height)--(1.1cb_da_width, .3x_height);
+ z400 = cb_da_p intersectionpoint inter;
+ %vm_u_form(400);
+
+ enddef;
+
+def cb_dda_form =
+ path cb_dda_p, cv_dde_p;
+ rt z1=(0.1cb_da_width, .5x_height); bot z2=(0.25cb_da_width, 0);
+ bot z3=(1/2cb_da_width,0.6w_height);
+ bot z4=(0.7cb_da_width,0); lft z5=(0.9cb_da_width, 0.4x_height);
+ top z6=(0.6cb_da_width, 0.6x_height);
+ lft z7=(0.79cb_da_width, 0.7x_height);
+ top z8=(0.45cb_da_width, .99x_height);
+
+ cb_dda_p=z1...z2..z3..z3...z4...z5..{curl 2.5}z6..z7..z8..tension 1.0..cycle;
+ sketch cb_dda_p;
+
+ bar_forma(cb_da_width-u); % z301 is comming from bar_forma...
+ %vmfa_form(301); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(301) ;
+ %vmfea_form(301);
+ %vm_au_form(301,vm_au_width);
+
+ numeric na,nb,nc,nd;
+ (na,nb)= cb_dda_p intersectiontimes
+ ((0,vm_e_height2)--(1/2cb_da_width,vm_e_height2));
+ z30= point na of cb_dda_p;
+ (nc,nd)= cb_dda_p intersectiontimes
+ ((1/2cb_da_width,vm_e_height2)--(cb_da_width,vm_e_height2));
+ z32= point nc of cb_dda_p;
+ top z31=(1/2cb_da_width,.92vm_e_heightx);
+ cv_dde_p=z30{curl 3}..z31...z32;
+
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_da_width, .3x_height)--(1.1cb_da_width, .3x_height);
+ z400 = cb_dda_p intersectionpoint inter;
+ %vm_u_form(400);
+
+enddef;
+
+def cb_na_form =
+ bot lft z1=(0,0); lft z2=(0,1/2w_height);
+ bot lft z1=(0,0); lft z2=(0,1/2w_height);
+ z3=(1/3cb_na_width,w_height); bot z4=(2/3cb_na_width,0);
+ rt z5=(cb_na_width,1/3x_height); top z6=(1/2cb_na_width,x_height);
+ bot z10=(.12cb_na_width, -.65w_height);
+
+ % For consonant+e
+ top z7 = (.3cb_na_width, x_height);
+ z8 = (.3cb_na_width, .7x_height);
+ z9 = (.45cb_na_width, .8x_height);
+
+ path cb_na_p, cb_ne_p;
+
+ cb_na_p=z10..z1..z2..z3..z4..z5..z6;
+ cb_ne_p = cb_na_p softjoin z6..tension1.3..z7..z8..z9;
+
+ bar_forma(cb_na_width-.5u); % z301 is comming from bar_forma...
+ %vmfa_form(301); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(301) ;
+ %vmfea_form(301);
+ %vm_au_form(301,vm_au_width);
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_na_width, .3x_height)--(1.1cb_na_width, .3x_height);
+ z400 = cb_na_p intersectionpoint inter;
+ %vm_u_form(400);
+
+enddef;
+
+def cb_nna_form =
+ z1a=(1/3cb_nna_width,1/2sc_height);
+ bot z1=(1/4cb_nna_width,0); lft z2=(0,1/4x_height);
+ z3=(1/6cb_nna_width,1/2x_height); lft z4=(0,3/4x_height);
+ top z5=(1/4cb_nna_width,x_height); z6=(1/2cb_nna_width,.8x_height);
+ top z7=(5/8cb_nna_width,x_height); rt z8=(cb_nna_width,1/2x_height);
+ bot z9=(2/3cb_nna_width,0); bot z10=(x9-1/2sc_height,sc_height);
+ bot z11=(x9,3/2sc_height); bot z12=(x9+1/2sc_height,sc_height);
+ path cb_nna_p;
+ cb_nna_p= z1a..z1..z2..z3&z3..z4..z5..z6&z6..z7..z8..z9..z10
+ ..tension 1.1..z11..z12;
+ sketch cb_nna_p;
+ z20=bot(.8cb_na_width, x_height);
+ %bar_forma(vm_ea1_width);
+ %bar_forma(cb_nna_width);
+ %vmfa_form(20); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(20) ;
+ %vmfea_form(301);
+ %vm_au_form(20,vm_au_width);
+
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_nna_width, .3x_height)--(1.1cb_nna_width, .3x_height);
+ z400 = cb_nna_p intersectionpoint inter;
+ %vm_u_form(400);
+
+ penlabels(1a);
+enddef;
+
+def cb_ba_form =
+ lft z1 = (u/2,j_height); top z2 = (cb_ba_width/5,x_height);
+ z3 = (cb_ba_width/3,j_height); lft z4 = (0,w_height);
+ bot z5 = (cb_ba_width/4,0); bot z6 = (cb_ba_width/2,.6w_height);
+ bot z7 = (3/4cb_ba_width,0);
+ rt z8 = (cb_ba_width,w_height); %z8 contact point
+ top z9 = (.8cb_ba_width,x_height); % z9 another contact point
+
+ %for consant+e
+ z10 = (.65cb_ba_width, 1.1x_height);
+ z11 = (.65cb_ba_width, .91x_height);
+
+ path cb_ba_p, cb_be_p;
+ cb_ba_p = z1..z2..z3..z4..z5..tension 1.2..z6&z6..tension 1.2..z7..z8..z9;
+ cb_be_p = cb_ba_p softjoin z9..tension1.7..z10..z11;
+ sketch cb_ba_p;
+
+ z12 = (x9-u,y9);
+ %vmfa_form(12); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(12) ;
+ %vmfea_form(12);
+ %vm_au_form(12,vm_au_width);
+
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_ba_width, .3x_height)--(1.1cb_ba_width, .3x_height);
+ z400 = cb_ba_p intersectionpoint inter;
+ %vm_u_form(400);
+
+enddef;
+
+def vb_ea_form =
+ cb_pa_form ;
+ path vb_a_p,vb_a_pa;
+ top z9 = (.80cb_ba_width,.80x_height); % z9 another contact point
+ top z10 = (.35cb_ba_width,x_height); % z9 another contact point
+ vb_a_p = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..tension 1.2..z10;
+enddef ;
+
+def vb_eae_form =
+ vb_ea_form;
+ path vb_a_pb;
+ z11 = (.25cb_ba_width,.82x_height);
+ top z12 = (.13cb_ba_width,x_height);
+ vb_a_pb = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..tension 1.2..z10..z10..z11..z12
+enddef ;
+
+def vb_i_form =
+ cb_pa_form;
+ path vb_a_pb;
+ top z9 = (3/4cb_pa_width, x_height); z10 = ( 1/2cb_pa_width, .8x_height);
+ top z11 = (1/4cb_pa_width, x_height); lft z12 = (0, .75x_height);
+ vb_a_pb = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..z10..z10..z11..z12
+enddef ;
+
+%def cb_va_form =
+% cb_pa_form ;
+% path cb_va_p,cb_va_pa;
+% top z9 = (.82cb_ba_width,.83x_height); % z9 another contact point
+% top z10 = (.4cb_ba_width,x_height); % z9 another contact point
+% cb_va_p = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..z10;
+% z20 = (.6cb_ba_width,w_height);
+% z21 = (cb_ba_width, w_height);
+% z30= (z20--z21) intersectionpoint cb_va_p ;
+% vm_u_form(30);
+%enddef ;
+
+def cb_ya_form =
+
+ path cb_ya_pa, cb_ya_pb, cb_ya_pc, cb_ye_p;
+ lft z1 = (0, .49x_height); bot z2 = (3/10cb_ya_width, 0);
+ rt z3 = (3/5cb_ya_width, y1) ; top z4 = (x2, 2y1);
+ z20 = (.7x2, 3/10x_height);
+ z21 = (cb_ya_width+vm_u_width, 3/10x_height);
+ cb_ya_pa = superellipse( z3, z4, z1, z2, .7) ;
+ top z30 = (z20--z21) intersectionpoint cb_ya_pa ;
+ bot z5 = (8/10cb_ya_width, 0); lft z6 = (.85*2x3, .5x_height);
+ %top z7 = (.9x5, x_height);
+ top z7 = (.77cb_ya_width, x_height);
+
+ %for consonant+e
+ z50 = (.75x5, 1.15x_height);
+ z51 = (.68x5, .98x_height);
+ z52 = (.89x5, .92x_height);
+ cb_ya_pb = z30..tension 1.12..z5..z6..z7;
+ cb_ye_p = z30..tension 1.12..z5..z6..z7..tension 1.4..z50..z51..z52;
+ %cb_ye_p = z30..tension 1.12..z5..z6..z7;
+ %sketch z6;sketch z7;sketch z50;sketch z51;sketch z52;
+ %cb_ye_p = z30..tension 1.12..z5..z6..z7..tension 1.6..z50; sketch z51; sketch z52;
+
+ top z40 = (z20--z21) intersectionpoint cb_ya_pb ;
+ numeric ya_width ;
+ ya_width = cb_ya_width + vm_u_width ;
+ bot z8 = (.79(ya_width), 0); rt z9 = (ya_width, .5x_height);
+ top z10 = (.8ya_width, x_height) ;
+ cb_ya_pc = z40..z8..z9..z10 ;
+ draw cb_ya_pa ;
+ draw cb_ya_pb ;
+ draw cb_ya_pc ;
+
+ z90=(x7-1.5u, y7);
+ bar_form(90, .4cb_ya_width);
+ %vmfa_form(7); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(10) ;
+ %vmfea_form(7);
+ %vm_au_form(10,vm_au_width);
+
+ % to compute the joining point of "kombu for ya".
+ path inter;
+ inter = (.7ya_width, .3x_height)--(1.1ya_width, .3x_height);
+ z400 = cb_ya_pc intersectionpoint inter;
+ %vm_u_form(400);
+
+enddef;
+
+def cb_la_form =
+ top z1=(1/4cb_la_width,x_height);
+ lft z2=(0,x_height/2); bot z3=(1/2cb_la_width,0);
+ rt z4=(cb_la_width,y2); top z5=(cb_la_width-.8x1,x_height);
+ z7=(x1+1.5u,2/3x_height);
+ path cb_la_pa,cb_la_pb,cb_la_p, cb_le_p, cb_le_pb;
+ cb_la_pb=z1..z2..z3..z4..z5;
+ z6=point 0.35 of cb_la_pb;
+ cb_la_pa= bot rt z6..z7..z1;
+ cb_la_p=cb_la_pa..cb_la_pb;
+
+ %for consonant+e
+
+ z20=(x5-1.5u, x_height+.7u);
+ z21=(x5-2.3u, x_height-.75u);
+ z22=(x5-.1u, x_height-.4u);
+ %draw z21;
+
+ %cb_le_pb=z1..z2..z3..z4..z5..{curl 2}z20..z21;
+ cb_le_pb=z1..z2..z3..z4..z5..tension1.6..z20..z21..z22;
+ cb_le_p=cb_la_pa..cb_le_pb;
+
+ % z8 is useful for la+u and la+uu
+ numeric na,nb;
+ (na,nb)=cb_la_pb intersectiontimes
+ ((cb_la_width/2,w_height)..(cb_la_width,w_height));
+ z9=point na of cb_la_pb;
+ z8=rt z9;
+ z55= lft z5;
+ %bar_forma(cb_ra_width); % z301 is comming from bar_forma...
+ %vmfa_form(55); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(55) ;
+ %vmfea_form(55);
+ %vm_au_form(55,vm_au_width);
+ %vmah_form(55); % tale-ardha akshara
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_la_width, .5x_height)--(1.1cb_la_width, .3x_height);
+ z400 = cb_la_p intersectionpoint inter;
+ %vm_u_form(400);
+enddef;
+
+def cb_ra_form =
+ top z1=(cb_ra_width/2,x_height);
+ lft z2 = (0,w_height);
+ bot z3 = (cb_ra_width/2,0);
+ rt z4 = (cb_ra_width,y2);
+ path cb_ra_p,cv_re_p;
+ cb_ra_p = z1..z2..z3..z4..cycle;
+ sketch cb_ra_p;
+ numeric na,nb,nc,nd;
+ (na,nb)= cb_ra_p intersectiontimes
+ ((0,vm_e_height2)--(1/2cb_ra_width,vm_e_height2));
+ z30= point na of cb_ra_p;
+ (nc,nd)= cb_ra_p intersectiontimes
+ ((1/2cb_ra_width,vm_e_height2)--(cb_ra_width,vm_e_height2));
+ z32= point nc of cb_ra_p;
+ top z31=(.05cb_ra_width,.8vm_e_heightx);
+ cv_re_p=z30..z31..tension1.2..z32;
+
+ bar_forma(cb_ra_width); % z301 is comming from bar_forma...
+ %vmfa_form(301); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(301) ;
+ %vmfea_form(301);
+ %vm_au_form(301,vm_au_width);
+ %vmah_form(301); % tale-ardha akshara
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_ra_width, .3x_height)--(1.1cb_ra_width, .3x_height);
+ z400 = cb_ra_p intersectionpoint inter;
+ %vm_u_form(400);
+ enddef;
+
+def cb_rra_form =
+ top z1=(1/4cb_rra_width,x_height);
+ y2=y6=1/2x_height;
+ lft x2=0; rt x6=cb_rra_width;
+ x3=x1; x5=cb_rra_width-x3;
+ bot y3=bot y5=0;
+ top z4=(1/2cb_rra_width,w_height);
+ top z7=(cb_rra_width-x1,x_height);
+ z11=(x1+1.5u,y1-1.45uh);
+ path cb_rra_p,cb_rra_pa,cb_rra_pb;
+ cb_rra_pb=z1..z2..z3..tension1.2..z4&z4..tension1.2..z5..z6..z7;
+ numeric na,nb,nc,nd, ne, nf;
+ (na,nb)= cb_rra_pb intersectiontimes
+ ((0,5/6x_height)--(1/2cb_rra_width,5/6x_height));
+ z8=point na of cb_rra_pb;
+ (nc,nd)= cb_rra_pb intersectiontimes
+ ((0.6cb_rra_width,w_height)--(cb_rra_width,w_height));
+ z20=point nc of cb_rra_pb;
+ z19=rt z20;
+ cb_rra_pa=bot z8..z11..z1;
+ cb_rra_p=cb_rra_pa..cb_rra_pb;
+ bot lft z18= z1;% used for placing a vertical line
+
+ z14=(cb_rra_width-1.6x1,x_height-sc_height);
+ %z15=(x7,1/2x_height);z16=(x1,y15);
+ z15 = cb_rra_p intersectionpoint
+ ((0.7cb_rra_width,y8-.6u)--(cb_rra_width,y8-.6u));
+
+ z22 = cb_rra_p intersectionpoint
+ ((0, .6x_height)--(.4cb_rra_width, .6x_height)) ;
+ z23 = cb_rra_p intersectionpoint
+ ((.6cb_rra_width, .6x_height)--(cb_rra_width, .6x_height)) ;
+
+ z16=(x1,y15);
+ path cb_rra_pc, cb_rra_pd;
+ %cb_rra_pc= cb_rra_p..z14..z15--z16;
+ cb_rra_pc= cb_rra_p..z14..z15;%--z16;
+ cb_rra_pd = z22--z23 ;
+ sketch cb_rra_pc;
+ sketch cb_rra_pd ;
+
+ path inter;
+ inter = (.8cb_rra_width, .3x_height)--(1.1cb_rra_width, .3x_height);
+ z400 = cb_rra_pc intersectionpoint inter;
+ enddef;
+
+def arkavattu =
+ path arka_pa, arka_pb ;
+ top z1=(w/5,h); lft z2=(0,3h/4); z3=(x1,h/2);
+ z4=(w/3,h/2); lft z5=(0,h/4); bot z6=(x1,0);
+ bot rt z7=(w,0);
+ arka_pa= flex(z1,z2,z3)& z3--z4;
+ arka_pb=flex(z3,z5,z6)& z6--z7;
+enddef;
+
+
+def flop(expr e) =
+ for d = 1 step 1 until e:
+ draw z[d];
+ endfor;
+enddef ;
+
+def cb_ca_form =
+ path cb_ca_p, cb_ce_p, cb_ca_pb;
+ lft z1 = (0, .25x_height); bot z2= (.5cb_ca_width, 0);
+ rt z3 = (cb_ca_width, .42x_height); z4 = (.75cb_ca_width, .82 x_height);
+ top lft z5 = (.3cb_ca_width, .98x_height) ;
+ top lft z6 = (.15cb_ca_width, .8x_height) ;
+ top lft z7 = (.2cb_ca_width, .74x_height) ;
+ top lft z8 = (.35cb_ca_width, .78x_height) ;
+ top z9 = (.33cb_ca_width, .85x_height) ;
+ z22 = (.3cb_ca_width, y3);
+ z21 = (.58cb_ca_width, .7x_height);
+ top z20 = (.45cb_ca_width, x_height);
+
+ z30 = (x20-1.25u, x_height+1u);
+ z31 = (x20-2.25u, x_height+.5u);
+ z32 = (x20-1.25u, x_height+.1u);
+
+
+ cb_ca_p = z20..z21..z22..z1..z2..{dir 92}z3..z4..z5..z6..z7..z8..z9;
+ cb_ca_pb = z32..z31..z30..tension1.6..z20;
+
+ cb_ce_p = cb_ca_pb softjoin cb_ca_p ;
+ bar_forma(cb_ca_width-.5u); % z301 is comming from bar_forma...
+ %vmfa_form(301); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(301) ;
+ %vmfea_form(301);
+ %vm_au_form(301,vm_au_width);
+ %vmah_form(301); % tale-ardha akshara
+
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_ca_width, .3x_height)--(1.1cb_ca_width, .3x_height);
+ z400 = cb_ca_p intersectionpoint inter;
+ %vm_u_form(400);
+
+enddef;
+
+def cb_va_form =
+ cb_pa_form ;
+ path cb_va_p, cb_va_pa, cb_ve_p;
+ top z9 = (.82cb_ba_width,.8x_height); % z9 another contact point
+ top z10 = (.5cb_ba_width,x_height); % z9 another contact point
+
+ %for consonant +e
+ top z11 = (.3cb_ba_width, .8x_height);
+ z12 = (.5cb_ba_width, .85x_height);
+
+ %cb_va_p = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..{left}z10;
+ cb_va_p = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..z10;
+ cb_ve_p =z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..z10..z11..z12;
+
+ bar_forma(cb_pa_width-.2u); % z301 is comming from bar_forma...
+ %vmfa_form(301); % Following are test to see How vowel modifer looks.
+ %vmfea_form(301);
+ %vm_u_form(46);
+
+enddef ;
+
+def cv_vu_form(suffix $) =
+ path cv_vu_p;
+ z$a = z$;
+ bot z$b = (x$a+.25cb_ba_width, -.5des_depth) ;
+ z$c = (cb_ba_width+.5vm_u_width, .4x_height);
+ rt z$d = (cb_ba_width+.35vm_u_width, .8x_height);
+ sketch z$..z$b..z$c..z$d;
+enddef;
+
+def cv_vuu_form(suffix $) =
+ path cv_vu_p;
+ z$a = z$;
+ bot z$b = (x$a+.25cb_ba_width, -.5des_depth) ;
+ z$c = (cb_ba_width+.2vm_uu_width, .4x_height);
+ rt z$d = (cb_ba_width+.5vm_uu_width, .9x_height);
+ z$e = (cb_ba_width+.8vm_uu_width, .5x_height);
+ rt z$g = (cb_ba_width+.7vm_uu_width, .05x_height);
+ z$h = (cb_ba_width+.55vm_uu_width, .1x_height);
+ z$i = (cb_ba_width+.65vm_uu_width, .25x_height);
+ sketch z$..z$b..z$c..z$d..z$e..z$g..z$h..z$i;
+enddef;
+
+def vm_a_form(suffix $) =
+ path vm_a_p ;
+ rt x$a = vm_a_width; y$a = y$;
+ x$b = x$a ; y$b = 1.3y$a;
+ vm_a_p = z$--z$a..{dir 160}z$b;
+ penlabels($a,$b,$c);
+enddef ;
+
+def vm_a_forma(suffix $) =
+ path vm_a_p ;
+ top z51$=(x$-1/6vm_a_width,x_height);
+ top z52$=(x$+.6vm_a_width,x_height);
+ top top z53$=(x$+.6vm_a_width,1.3x_height);
+ vm_a_p = z51$--z52$..{dir 160}z53$;
+enddef ;
+
+def cb_sa_form =
+ bot lft z1=(0,0); lft z2=(0,1/2w_height);
+ z3=(.5cb_na_width,.4x_height); bot rt z4=(.85cb_na_width,.02x_height);
+ rt z44=(.98cb_na_width,.1x_height);
+
+ rt z5=(cb_na_width,.5x_height); top z6=(.8cb_na_width,.9x_height);
+ path cb_sa_p;
+ top lft z77=(1/3cb_na_width-1/2c_height, top (x_height - c_height));
+ place_lit_circ(77, 1);
+ cb_sa_p=z1..z2..z3..{z5-z6}z4.. z44..z5..z6;
+ bar_forma(cb_na_width-u); % z301 is comming from bar_forma...
+ %vmfa_form(301); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(301) ;
+ %vmfea_form(301);
+ %vm_au_form(301,vm_au_width);
+ %vmah_form(301); % tale-ardha akshara
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_na_width, .3x_height)--(1.1cb_na_width, .3x_height);
+ z400 = cb_sa_p intersectionpoint inter;
+ %vm_u_form(400);
+enddef;
+
+def cb_ha_form =
+ lft z1 = (0, .45x_height) ; bot z2 = (.24cb_ha_width, 0);
+ z3 = (.48cb_ha_width, .3x_height); z4 = (cb_ha_width-x3, .6x_height);
+ z5 = (.76cb_ha_width, .8x_height); rt z6 = (cb_ha_width, .4x_height);
+ bot z7 = (.76cb_ha_width, 0); z8 = (cb_ha_width-x3, y3);
+ z9 = (x3, y4); z10 = (x2, y5);
+ z11 = (x3,.65x_height); top z12 = (.4cb_ha_width, x_height);
+ path cb_ha_p, cb_ha_pa ;
+ cb_ha_p = z1..z2..z3..z4..z5..z6..z7..z8..z9..z10..cycle;
+ cb_ha_pa = z11..{dir 130}z12;
+ sketch cb_ha_p ;
+ sketch cb_ha_pa ;
+ bar_forma(cb_ha_width-u); % z301 is comming from bar_forma...
+ %vmfa_form(301); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(301) ;
+ %vmfea_form(301);
+ %vm_au_form(301,vm_au_width);
+ %vmah_form(301); % tale-ardha akshara
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.8cb_ha_width, .3x_height)--(1.1cb_ha_width, .3x_height);
+ z400 = cb_ha_p intersectionpoint inter;
+ %vm_u_form(400);
+enddef ;
+
+def cb_lla_form =
+ z1=(.18cb_lla_width,.84x_height); z2=(.25cb_lla_width,.8x_height);
+ top z3=(.32cb_lla_width,.86x_height); top z4=(x2,x_height);
+ lft z5 =(0, .8x_height);
+ z6 = (1/2cb_lla_width, .4x_height);
+ z7 = (3/4cb_lla_width, .2x_height);
+ bot z8 = (1/2cb_lla_width,0);
+ z9 = (1/4cb_lla_width,y7);
+ rt z10 = (cb_lla_width,.75x_height);
+
+ top z11 = (.8cb_lla_width,x_height);
+
+ z19 = (.9cb_lla_width, .9x_height);
+ z20 = (x19-1.2u, y19+1.2u);
+ z21 = (x19-1.5u, y19);
+ z22 = (x19-.95u, y19+.15u);
+ path cb_lla_p, cb_lle_p, cb_lla_pb;
+
+ cb_lla_p = z1..z2..z3..z4..z5..z6..z7..z8..z9..z6..z10..z11;
+
+ %cb_lla_pb = z11..tension 1.3..z20..z21;
+
+ %cb_lle_pb = cb_lla_p softjoin cb_lla_pb ;
+ cb_lle_p = z1..z2..z3..z4..z5..z6..z7..z8..z9..z6..z10..z19..tension 1.6..z20...z21..z22;
+ %cb_lle_p = z1..z2..z3..z4..z5..z6..z7..z8..z9..z6..z10..z19..z11;
+ z12 = lft lft z11;
+ %vmfa_form(12); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(12) ;
+ %vmfea_form(12);
+ %vm_au_form(12,vm_au_width);
+ %vmah_form(12); % tale-ardha akshara
+ % to compute the joining point of "kombu for nya".
+ path inter;
+ inter = (.6cb_lla_width, .22x_height)--(1.1cb_lla_width, .22x_height);
+ z400 = cb_lla_p intersectionpoint inter;
+ %vm_u_form(400);
+
+enddef;
+
+def cb_sha_form =
+ cb_va_form;
+ top lft z77=(1/2cb_pa_width-1/2c_height-.5u, top (x_height - c_height));
+ place_lit_circ(77, 1);
+ bot rt z66 = (cb_pa_width, 0);
+ path cb_sha_pb;
+ z65 = (.65cb_pa_width, .6x_height);
+ cb_sha_pb = z65--z66;
+ %bar_forma(cb_ra_width); % z301 is comming from bar_forma...
+ %vmfa_form(301); % Following are test to see How vowel modifer looks.
+ %vmfaa_form(301) ;
+ %vmfea_form(301);
+ %vm_au_form(301,vm_au_width);
+ %vmah_form(301); % tale-ardha akshara
+enddef ;
+
+def cb_ksha_form =
+ cb_ka_form;
+ top z11 = (1/6cb_ka_width, -.4cb_ksha_depth);
+ lft z12 = (0,-1/2cb_ksha_depth);
+ bot z13 = (1/4cb_ka_width,-cb_ksha_depth);
+ z14 = (.48cb_ka_width,-2/3cb_ksha_depth);
+ bot z15 = (3/4cb_ka_width,-cb_ksha_depth);
+ rt z16 = (.95cb_ka_width,-1/2cb_ksha_depth);
+ top z17 = (.8cb_ka_width, -.01cb_ksha_depth);
+ bot rt z18 = (cb_ka_width,-cb_ksha_depth);
+ bot z19 = (.9cb_ka_width, y16);
+ sketch z11..z12..z13..z14; sketch z14..z15..z16..z17;
+ sketch z19..z18;
+enddef;
+
+def v_a_form =
+ top z1=(1/4v_a_width,x_height);
+ z10=(x1-u,y1-uh); z11=(x1,y1-2(y1-y10));
+ lft z3=(0,2/3x_height); bot z4=(1/2v_a_width,0);
+ rt z5=(v_a_width,2/3x_height); top z6=(v_a_width-1.5u,x_height);
+ z7=(4/5x5,.55x_height); z8=(1/4w,y7);
+ z12=(.65v_a_width,5/6x_height); rt z2=(v_a_width,1/2x_height);
+enddef;
+
+def v_aa_form =
+ z1=(.1v_a_width,.7x_height); z2=(.3v_a_width,.85x_height);
+ top z3 = (.15v_a_width, x_height); lft z4 = (0, .75x_height);
+ lft z4a = (.12v_a_width, .2x_height);
+ bot z5 = (.5v_a_width, 0); rt z6 = (v_a_width, .3x_height);
+ bot z66 = (.85v_a_width, .55x_height);
+ top z7 = (.76v_a_width, .7x_height); top z8 = (.88v_a_width, x_height);
+ rt z9 =(v_a_width, .85x_height);
+ rt z11 =(x7, y7);
+ rt z12 =(.4v_a_width, y11);
+ sketch z1..z2..z3..z4..z4a..z5 ..tension 1.2..z6..z66..z7..z8..z9..z7..z11--z12;
+enddef;
+
+def v_u_form =
+ path v_u_pa, v_u_pb;
+ z1 = (.13v_u_width, .78x_height); z2= (2x1, .88x_height); z3a=(.09v_u_width,y2);
+ top lft z3 = (x1, x_height);
+ lft z4 = (0, .43x_height); bot z5 = lft (.2v_u_width, 0);
+ z5a = (.38v_u_width, .53y6);
+ %top z6 = (.52v_u_width, x_height); z6a = (.65v_u_width, 1.2y5a);
+ top z6 = (.52v_u_width, x_height); z6a = (.66v_u_width, y5a);
+ bot z7 = (.8v_u_width, 0); rt z7a = (v_u_width, .5x_height);
+ rt z8 = (.94v_u_width, .9x_height) ; top rt z8a = (.91v_u_width,x_height);
+
+ %v_u_pa = z1..z2..z3..z3a..tension 1.2..z4..z5...z5a..tension 1.2..z6
+ % {dir 9}..z6a{dir -85}..z7..z7a..z8..z8a;
+ v_u_pa = z1..z2..z3..z3a..z4..z5...z5a..z6..z6a..z7..z7a..z8..z8a;
+ %v_u_pb = z1..z2..z3..z3a..tension 1.2..z4..z5..z5a..tension 1.2..z6
+ % {dir 5}..z6a{dir -85}..z7;
+ %flop(8); draw z3a; draw z5a; draw z6a; draw z7a; draw z8a ;
+ sketch v_u_pa;
+enddef;
+
+def vm_uu_form (suffix $) =
+ bot z1$ = (x$+.1vm_uu_width, 0); z2$ = (x$+.4vm_uu_width, .66x_height);
+ top z3$ = (x$+.52vm_uu_width,x_height);
+ rt z4$ = (x$+vm_uu_width, .5x_height);
+ bot z5$ = (x$+.75vm_uu_width, 0); z6$ = (x$+.65vm_uu_width, .1x_height);
+ rt z7$ =(x$+.85vm_uu_width, .25x_height);
+ sketch z$..z1$..z2$..z3$..z4$..z5$..z6$..z7$;
+enddef;
+
+def v_uu_form =
+ numeric wid, het ;
+ wid = v_uu_width ; het = x_height ;
+ z1 = (1/10wid,8/10het) ; z2 = (2x1, y1); top z3 = (x1, het) ;
+ lft z4 = (0-.5u, 1/2 het) ; bot z5 = (1/8wid, 0) ;
+ z6 = (1/4wid, 1/2het) ; top z7 = (3/8wid, het) ;
+ z8 = (1/2wid, 1/2het) ; bot z9 = (5/8wid, 0) ;
+ z10 = (3/4wid, 1/2het); top z11 = (7/8wid, het) ;
+ rt z12 = (wid+.5u, 1/2het) ;bot z13 = (wid-x3, 0) ;
+ z14 = (wid-x2, het-y2) ; z15 = (wid-x1, het-y1) ;
+ %sketch z1...z2...z3...z4...z5...z6...z7...z8...z9...z10...z11...z12...z13...z14...z15;
+ sketch z1..z2..z3..z4..tension 1.2..z5..tension 1.2..z6..tension 1.2..z7..tension 1.2..z8..tension 1.2..z9..tension 1.2..z10..tension 1.2..z11..tension 1.2..z12..z13..z14..z15;
+enddef;
+
+def v_ro_form =
+ path v_ro_p;
+ z1 = (.5v_ro_width, .8x_height); z2 = (.25v_ro_width, .7x_height);
+ lft z3 = (0, .8x_height); top z4 = (.5v_ro_width, x_height);
+ rt z5 = (v_ro_width, .5x_height);
+ bot z6 = (x4, 0); lft z7 = (0, .2x_height); z8 = (x2, .3x_height);
+ z9 = (x1, .2x_height);
+ v_ro_p = z1..z2..z3..z4..z5..z6..z7..z8..z9;
+
+ z10 = (.6v_ro_width, y8); z11 = (v_ro_width+2vm_u_width, y10);
+ sketch v_ro_p;
+ z19 = (z10--z11) intersectionpoint v_ro_p;
+ vm_u_form(19);
+ z29 = (x19+.4vm_u_width, x_height);
+ vm_a_forma(29);
+ sketch vm_a_p;
+ z20=z19b;
+ vm_u_form(20);
+ z39 = z20b;
+enddef;
+
+def barandhook_formk (suffix $)(expr bar_width,t) =
+ z$a=(x$+bar_width-u,y$); rt z$b=(x$a+u,y$-uh);
+ bot z$c =(x$b-u,y$-2uh); lft z$d=(x$b-2u,y$b);
+ top z$e=(x$a-u,y$); rt z$f=(x$b,y$+1.5uh);
+ top z$g=(x$a,y$f+uh); z$h=(x$d,y$f);
+ path barandhook_p;
+ barandhook_p= subpath(0,t) of (rt z$--z$a..z$b..z$c..z$d..z$e..z$f..z$g..z$h);
+ sketch barandhook_p;
+ penlabels($a,$b,$c,$d);
+enddef;
+
+def barandhook_form (suffix $)(expr bar_width,t) =
+ z$a=(x$+bar_width-u,y$); rt z$bb=(x$a+u,y$-1/2des_depth);
+ rt z$b=(x$a+u,y$-des_depth+uh);
+ bot z$c =(x$b-u,y$b-uh); lft z$d=(x$b-1.75u,y$b);
+ top z$e=(x$d+.75u,y$b+.5u); rt z$f=(x$b,y$+1.5uh);
+ path barandhook_p;
+ barandhook_p= (rt z$--z$a..z$bb..z$b..z$c..z$d..z$e);
+ %barandhook_p= subpath(0,t) of (rt z$--z$a..z$bb..z$b..z$c..z$d..z$e);
+ sketch barandhook_p;
+ penlabels($a,$b,$c,$d);
+enddef;
+
+%Following is old version it's obsolete...............
+def vm_au_forma (suffix $)(expr bar_width) = % see the above diagram
+ numeric na;
+ %top z$e=z$; % screwed up GHA+AU.
+ %z$e=z$;
+ z$e=(x$, y$);
+ z$a = (x$e+2/10(bar_width-u),y$e);
+ z1000 = (x$-.5u,asc_height2);
+ % 1000 was chosen arbitrarily
+ % we needed some suffix not used by any user of
+ % this macro
+ barandhook_form(1000,bar_width,5);
+ z$d=z1000a;
+ %next two statements solve for c
+ x$c = x$a;
+ z$c = whatever[z1000,z$d];
+ na:=x$c+(x1000a-x$c)/3; % used for alligning pa,pha,sha..
+ sketch z$e--z$a{right}..{left}z$c;
+ penlabels($a,$b,$c,$d,$e,1000);
+enddef;
+
+def vm_au_form (suffix $)(expr bar_width) = % see the above diagram
+ numeric na;
+ %top z$e=z$; % screwed up GHA+AU.
+ %z$e=z$;
+ z$e=(x$, y$);
+ z$a = (x$e+5/10(bar_width-u),y$e);
+ z1000 = (x$+2.3u,asc_height2);
+ % 1000 was chosen arbitrarily
+ % we needed some suffix not used by any user of
+ % this macro
+ barandhook_form(1000,.9bar_width,5);
+ z$d=z1000a;
+ %next two statements solve for c
+ x$c = x$a;
+ z$c = whatever[z1000,z$d];
+ na:=x$c+(x1000a-x$c)/3; % used for alligning pa,pha,sha..
+ sketch z$e--z$a{right}..{left}z$c;
+ penlabels($a,$b,$c,$d,$e,1000);
+enddef;
+
+% Begin of Vowel Modifiers.....
+
+def vm_ee_form =
+ z0 = (.5vm_ee_width+u, y2);
+ z1 = (.7vm_ee_width+u, 2/3x_height);
+ rt z2 = (vm_ee_width+u, y1+1/6x_height);
+ top z3 = (1/2vm_ee_width+u, x_height);
+ lft z4 = (0+u, .6x_height); bot z5 = (3/5vm_ee_width+u, 0);
+ sketch z0..z1..z2..z3..z4..z5;
+enddef;
+
+def vm_ro_form =
+ z1=(.8vm_ro_width,3/5x_height);rt z2=(vm_ro_width,0);
+ bot z3=(1/2vm_ro_width,-des_depth);z4=(.15vm_ro_width,-.1des_depth);
+ z5=(.2vm_ro_width,.05x_height); z6 = (.25vm_ro_width, .1x_height);
+ z7=(.3vm_ro_width,-.2des_depth);
+ path vm_ro_p;
+ vm_ro_p = z1..z2..z3..z4..z5..z6..z7;
+ path ct;
+ ct = vm_ro_p scaled 1 shifted (-3u, -.5des_depth) rotated 0 ;
+ sketch ct;
+enddef;
+
+def vm_y_form =
+ top z1=(.75vm_y_width, 3/5x_height); rt z1a=(vm_y_width,3/10x_height);
+ rt z2=(.8vm_y_width,.1x_height);
+ rt z3a=(vm_y_width,-1/2des_depth);
+ bot z3=(1/2vm_y_width,-des_depth);z4=(.15vm_y_width,-.1des_depth);
+ z5=(.2vm_y_width,.05x_height); z6 = (.25vm_y_width, .1x_height);
+ z7=(.3vm_y_width,-.2des_depth);
+ path vm_y_p ;
+ vm_y_p = z1..z1a..z2..z2..z3a..z3..z4..z5..z6..z7;
+enddef;
+
+%def vm_e_form_a (suffix $) (expr xoff, yoff) =
+% z$1 = (x$+xoff, y$+yoff);
+% z$2 = (x$1+u, y$1+u);
+% z$3 = (x$1, y$1+2u);
+% z$4 = (x$1-u, y$1+u);
+% z$5 = (x$1-.7u, y$1+.1u);
+% path vm_e_p;
+% vm_e_p = z$..z$1..z$2..z$3..z$4..z$5;
+%enddef;
+
+def vm_e_form_a (suffix $) (expr xoff, yoff) =
+ z31 = (x$+xoff, y$+yoff);
+ z32 = (x31+u, y31+u);
+ z33 = (x31, y31+2u);
+ z34 = (x31-u, y31+u);
+ z35 = (x31-.7u, y31+.1u);
+ path vm_e_p;
+ vm_e_p = z$..z31..z32..z33..z34..z35;
+enddef;
+
+def vm_e_formb(suffix $) (expr a, b) =
+ z50 = (a-1/2u, b+u) ;
+ z51 = (a, b) ;
+ sketch z$..z50..z51 ;
+enddef;
+
+def vm_e_form =
+ path vm_e_p;
+ lft z551 = (0,x_height+1.2ascunit);
+ top z552 = (1/2vm_e_width,x_height);
+ rt z553 = (vm_e_width,x_height+2ascunit);
+ z554 = z553;
+ lft z555 = (0,x_height+3ascunit);
+ z556 = (1/2vm_e_width,y555);
+ top z557=(1/2vm_e_width,vm_e_height1+ascunit);
+ vm_e_p = subpath (0.4,1) of z551{down}..{right}z552..z553..z557..z555..z556;
+ sketch vm_e_p;
+ %sketch subpath (0.4,1) of z551{down}..{right}z552..z553..z557..z5..z556;
+ % hook can be attached at z7
+enddef;
+
+def naa_form =
+ path naa_p ;
+ z1 = bot lft (cb_na_width, x_height) ; z2 = bot ( 2u, x_height) ;
+ z3 = rt (0, 5/6x_height) ;
+ z4 = bot (u, 2/3x_height) ; z5 = (3/4cb_na_width, y4) ;
+ z6 = rt (0, 1/2x_height) ;
+ z7 = bot (u, 1/3x_height); z8 = (1/2cb_na_width, y7) ;
+ z9 = rt (0, 1/6x_height) ;
+ z10 = top (u, 0) ;
+
+ naa_p = z1--z2...z3...z4--z5 &z5--z4...z6...z7--z8 & z8--z7...z9..z10 ;
+ sketch naa_p ;
+enddef ;
+
+input kanvarna ;
+input kanlets;
+
+end;