summaryrefslogtreecommitdiff
path: root/language/telugu/telchars1.mf
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /language/telugu/telchars1.mf
Initial commit
Diffstat (limited to 'language/telugu/telchars1.mf')
-rw-r--r--language/telugu/telchars1.mf1061
1 files changed, 1061 insertions, 0 deletions
diff --git a/language/telugu/telchars1.mf b/language/telugu/telchars1.mf
new file mode 100644
index 0000000000..b811a07551
--- /dev/null
+++ b/language/telugu/telchars1.mf
@@ -0,0 +1,1061 @@
+% This file is part of the TeluguTeX Software Package.
+%Copyright (c) 1991 Lakshmankumar Mukkavilli
+%
+%The TeluguTeX 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 TeluguTeX Software Package
+%General Public License for full details.
+%
+%Everyone is granted permission to copy, modify and redistribute
+%the TeluguTeX Software Package, but only under the conditions described in the
+%TeluguTeX Software Package General Public License. A copy of this license is
+%supposed to have been given to you along with TeluguTeX 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.
+%%%%%
+% This file contains code to generate vowels, vowel modifiers,
+% consonant bases, consonant conjuncts and accents
+
+stest(va); telchar "vowel a";
+begintchar(v_a_code,v_a_width#,x_height#,0,0,0,0);
+v_a_form;
+sketch z10..z11..z1..z3..z4..z5..z6..z7--z8;
+endtchar; etest;
+
+stest(vaa); telchar "vowel aa";
+begintchar(v_aa_code,v_a_width#,x_height#,0,0,0,0);
+v_a_form;
+sketch z10..z11..z1..z3..z4..z2 &z2{(0,1)}..{up}z12..z6..z5..{left}z7--z8;
+endtchar; etest;
+
+stest(ve); telchar "vowel e";
+begintchar(v_e_code,v_e_width#,x_height#,des_depth#,0,0,0);
+v_e_form;
+d:=abs(bot y10);
+endtchar; etest;
+
+stest(vee); telchar "vowel ee";
+begintchar(v_ee_code,cb_ra_width#+4u#,asc_height#,0,0,0,0);
+cb_ra_form;
+z10=top z1;
+vm_a_form(1);
+currentpicture := currentpicture shifted (u,0);
+z6 = (0,1/2x_height);
+barandhook_form(6,w,8);
+endtchar; etest;
+
+stest(vu); telchar "vowel u";
+begintchar(v_u_code,v_u_width#,asc_height#,0,0,0,0);
+v_u_form;
+barandhook_form(7,v_u_width,1); z20=0.5[z8,z9];
+vwedge(20);
+h:=top y20a;
+endtchar; etest;
+
+stest(vuu); telchar "vowel uu";
+begintchar(v_uu_code,v_u_width#+2.5u#,asc_height#,0,0,0,0);
+v_u_form;
+barandhook_form(7,w-x7,8); vwedge(8); vwedge(9);
+h:=top y8a;
+endtchar; etest;
+
+stest(vro); telchar "vowel ro";
+begintchar(v_ro_code,cb_ba_width#+2vm_u_width#,x_height#,0,0,0,0);
+cb_ba_form;
+vm_u_form(8);
+vm_u_form(8b);
+w:=rt x8b.b;
+endtchar; etest;
+
+stest(vroo); telchar "vowel roo";
+begintchar(v_roo_code,cb_ba_width#+2vm_u_width#+vmwidth#,x_height#,0,0,0,0);
+cb_ba_form;
+vm_u_form(8);
+z10=z8b;
+vm_u_form(10);
+z11=z10d;
+barandhook_forma(11,vmwidth,5);
+w:=rt x11b;
+endtchar; etest;
+
+stest(vlo); telchar "vowel lo";
+begintchar(v_lo_code,v_lo_width#,x_height#,0,0,0,0);
+v_lo_form;
+endtchar; etest;
+
+stest(vloo); telchar "vowel loo";
+begintchar(v_loo_code,v_lo_width#+vmwidth#,x_height#,0,0,0,0);
+v_lo_form;
+barandhook_forma(9,vmwidth,5);
+w:=rt x9b;
+endtchar; etest;
+
+stest(vea); telchar "vowel ea";
+begintchar(v_ea_code,v_ea_width#,x_height#,0,0,0,0);
+v_ea_form;
+endtchar; etest;
+
+stest(veae); telchar "vowel eae";
+begintchar(v_eae_code,v_ea_width#,asc_height1#,0,0,0,0);
+v_ea_form;
+lft z10 = (0,5/6x_height);
+z11 = (1/2v_ea_width,asc_height1);
+sketch z10{up}..{right}z11;
+h:=top y11;
+endtchar; etest;
+
+stest(vi); telchar "vowel i";
+begintchar(v_i_code,v_i_width#,x_height#,0,0,0,0);
+lit_cir_form;
+bot z2=(x1+2u,0); rt z3=(v_i_width,1/2x_height);
+top z4=(x2,x_height); z5=(x1,x_height-y1); top z6=(1/2x1,x_height);
+lft z7=(0,y5);
+ sketch rt z1..z2..z3..z4..z5;
+ sketch z5..z6..z7;
+endtchar; etest;
+
+stest(vao); telchar "vowel ao";
+begintchar(v_ao_code,cb_ja_width#,x_height#,0,0,0,0);
+cb_ja_form;
+endtchar; etest;
+
+
+stest(vaoo); telchar "vowel aoo";
+begintchar(v_aoo_code,cb_ja_width#,x_height#,0,0,0,0);
+cb_ja_form;
+vm_hook_form(2,2);
+endtchar; etest;
+
+
+stest(vau); telchar "vowel au";
+begintchar(v_au_code,5/4cb_ja_width#,asc_height#,0,0,0,0);
+cb_ja_form;
+z12=top z2;
+vm_au_form(12,w);
+h:=top y12c; w:=rt x1000b;
+endtchar; etest;
+
+%--------------------end of vowels-------------------
+stest(vma); telchar "vowel modifier of a";
+begintchar(vm_a_code,vm_a_width#,asc_height#,0,0,0,0);
+top z1=(2/5vm_a_width,x_height); vm_a_form(1);
+pivot_message(x1);
+endtchar; etest;
+
+stest(vmaa); telchar "vowel modifier of aa";
+begintchar(vm_aa_code,11u#,asc_height#,0,0,0,0);
+top z1 = (0,x_height);
+barandhook_form(1,w,5);
+pivot_message((w/3));
+h:=top y1;
+endtchar; etest;
+
+stest(vmaaa); telchar "vowel modifier of aa";
+% used for kha,nga,ja,nya etc.
+begintchar(vm_aaa_code,8.3u#,asc_height#,0,0,0,0);
+top z1 = (0,x_height);
+barandhook_form(1,w,5);
+pivot_message((1.6u),rt x1);
+h:=top y1;
+endtchar; etest;
+
+stest(vme); telchar "vowel modifier of e";
+begintchar(vm_e_code,vm_e_width#,asc_height#,0,0,0,0);
+vm_e_form;
+pivot_message(x2);
+h:=top y7;
+endtchar; etest;
+
+stest(vmee); telchar "vowel modifier of ee";
+begintchar(vm_ee_code,vm_e_width#,asc_height#,0,0,0,0);
+vm_e_form;
+vm_hook_form(7,3);
+pivot_message(x2);
+endtchar; etest;
+
+stest(vmeea); telchar "vowel modifier of ee";
+% Used with kha,cha,ccha,ja,ta,na,ba,bha,ma,la,lla,va etc.
+begintchar(vm_eea_code,vm_e_width#,asc_height#,0,0,0,0);
+% w and h are revised
+top z1=(0,vm_e_height1);
+vm_hook_form(1,3); w:=rt x1c;
+pivot_message(x1);
+endtchar; etest;
+
+stest(vmeeb); telchar "vowel modifier of ee";
+% Used with ra,ga and da(and its variations)
+begintchar(vm_eeb_code,vm_e_width#,asc_height#,0,0,0,0);
+% w and h are revised
+top z1=(0,vm_e_height3);
+vm_hook_form(1,3); w:=rt x1c;
+pivot_message(x1);
+endtchar; etest;
+
+stest(vmu); telchar "vowel modifier of u";
+begintchar(vm_u_code,vm_u_width#,x_height#,0,0,0,0);
+rt z1 = (0,w_height);
+vm_u_form(1);
+w:=rt x1b;
+pivot_message(x1d);
+endtchar; etest;
+
+stest(vmuu); telchar "vowel modifier of uu";
+begintchar(vm_uu_code,vm_u_width#+vmwidth#-2.5u#,x_height#,0,0,0,0);
+rt z1 = (0,w_height);
+vm_u_form(1);
+barandhook_forma(1d,vmwidth,5);
+w:=rt x1d.b;
+endtchar; etest;
+
+stest(vmro); telchar "vowel modifier of ro";
+begintchar(vm_ro_code,vm_ro_width#,x_height#,des_depth#,0,ul#,0);
+vm_ro_form;
+endtchar; etest;
+
+stest(vmroo); telchar "vowel modifier of roo";
+begintchar(vm_roo_code,vm_ro_width#+vmwidth#,x_height#,des_depth#,0,ul#,0);
+vm_ro_form;
+barandhook_forma(7,vmwidth,5);
+w:=rt x7b;
+endtchar; etest;
+
+stest(vmlo); telchar "vowel modifier of lo";
+begintchar(vm_lo_code,v_lo_width#,x_height#,0,0,0,0);
+%w,h and d are revised later
+v_lo_form;
+cc_clear;cc_transform(v_lo_p);cc_whd(0,0);
+pivot_message((x3*cc_scale));
+endtchar; etest;
+
+stest(vmloo); telchar "vowel modifier of loo";
+begintchar(vm_loo_code,v_lo_width#+vmwidth#,x_height#,0,0,0,0);
+%w,h and d are revised later
+v_lo_form;
+barandhook_forma(9,vmwidth,5);
+w:=rt x9b;
+cc_clear;cc_transform(v_lo_p);cc_transform(barandhook_p);cc_whd(0,0);
+pivot_message((x3*cc_scale));
+endtchar; etest;
+
+stest(vmea); telchar "vowel modifier of ea";
+begintchar(vm_ea_code,vmwidth#,asc_height#,0,0,0,0);
+top z1 = (4/7w,x_height);
+vm_ea_form(1,w);
+pivot_message(x1a);
+h:=top y1c;
+endtchar; etest;
+
+stest(vmeae); telchar "vowel modifier of eae";
+begintchar(vm_eae_code,vmwidth#,asc_height#,0,0,0,0);
+top z1 = (4/7w,x_height);
+vm_ea_form(1,w);
+z2 = z1b;
+vm_hook_form(2,3);
+pivot_message(x1a);
+w:=rt x2c;
+endtchar; etest;
+
+stest(vmib); telchar "vowel modifier of i(bottom)";
+%top of vm_i is same as vm_ea
+begintchar(vm_i2_code,vmwidth#,0,des_depth#,0,0,0);
+top z1=(0,0);
+barandhook_form(1,w,5); erase sketch barandhook_p;
+transform t;
+t:= identity rotated 180 shifted (vmwidth,-(bot_accent+(top y1a - bot y1c)));
+sketch barandhook_p transformed t;
+pivot_message((w/2));
+d:=abs(ypart (top z1 transformed t));
+endtchar; etest;
+
+stest(vmao); telchar "vowel modifier of ao";
+begintchar(vm_ao_code,vm_ao_width#,asc_height#,0,0,0,0);
+vm_ao_form(1,0);sketch vm_ao_pa;
+sketch subpath(0,5) of vm_ao_pb;
+pivot_message(x1a);
+endtchar; etest;
+
+stest(vmaoo); telchar "vowel modifier of aoo";
+begintchar(vm_aoo_code,vm_aoo_width#,asc_height#,0,0,0,0);
+vm_ao_form(1,0);sketch vm_ao_pa; % place the hook
+sketch vm_ao_pb;
+pivot_message(x1a);
+w:=rt x1l; h:=top y1j;
+endtchar; etest;
+
+stest(vmaooa); telchar "vowel modifier of aoo(alternate)";
+% This is basically a hook to be attached on top of ao modifier
+begintchar(vm_aoo_code_a,0#,asc_height#,0,0,0,0);
+vm_ao_form(1,0); % place the hook
+sketch vm_ao_pb; erase sketch subpath (0,5) of vm_ao_pb;
+numeric left_shift;left_shift:=x1i;
+currentpicture := currentpicture shifted (-left_shift,0);
+h:=top y1j;w:=(rt x1l)-left_shift;
+pivot_message(x1i-left_shift);
+endtchar; etest;
+
+stest(vmau); telchar "vowel modifier of au";
+begintchar(vm_au_code,vmwidth#+4u#,asc_height#,0,0,0,0);
+z1 = (0,x_height);
+vm_au_form(1,w);
+pivot_message(x1,na);
+w:=rt x1000b; h:=top y1c;
+endtchar; etest;
+
+
+stest(vmp); telchar "absence of vowel modifier(pollu)";
+begintchar(vm_p_code,cb_vg_width#,asc_height#,0,0,0,0);
+top z1=(1/3w,x_height); top z2 = (1/5w,x_height);
+z3=(x2,(x_height+asc_height)/2); z4=(w/2,y3);
+top z5=(x2,h); top rt z6=(w,h);
+sketch z1--z2{left}..{right}z3--z4;
+sketch z3{left}..{right}z5--z6;
+pivot_message(x1);
+endtchar; etest;
+%------------End of Vowel Modifiers-------------------
+
+stest(cbka); telchar "base of consonant ka";
+begintchar(cb_ka_code,cb_ka_width#,x_height#,0,0,0,0);
+cb_ka_form;
+sketch cb_ka_p;
+pivot_message(x2,x2);
+endtchar; etest;
+
+stest(cbkha); telchar "base of consonant kha";
+begintchar(cb_kha_code,cb_kha_width#,x_height#,wedge_depth#,0,0,0);
+cb_kha_form;
+pivot_message(x11,x5);
+endtchar; etest;
+
+stest(cbga); telchar "base of consonant ga";
+begintchar(cb_ga_code,cb_ga_width#,x_height#,0,0,0,0);
+cb_ga_form;
+pivot_message(x3,x3);
+endtchar; etest;
+
+stest(cbgha); telchar "base of consonant gha";
+begintchar(cb_gha_code,cb_va_width#+vm_u_width#,x_height#,wedge_depth#,0,0,0);
+cb_va_form;
+sketch subpath(0,3.4) of cb_va_p;
+top z10=1/2[rt z1,z1];
+wedge(10);
+vm_u_form(3);
+w:=rt x3b;
+pivot_message(x1,x1,x3d);
+endtchar; etest;
+
+stest(cbnga); telchar "base of consonant nga";
+begintchar(cb_nga_code,cb_ja_width#,x_height#,0,0,0,0);
+cb_ja_form;
+half_plus_form(3);
+pivot_message(x3c,x7);
+endtchar; etest;
+
+stest(cbcha); telchar "base of consonant cha";
+begintchar(cb_cha_code,cb_cha_width#,x_height#,0,0,0,0);
+cb_cha_form;
+pivot_message(x8,x5);
+endtchar; etest;
+
+stest(cbccha); telchar "base of consonant ccha";
+begintchar(cb_ccha_code,cb_cha_width#,x_height#,wedge_depth#,0,0,0);
+cb_cha_form;
+z10 = 1/2[rt z5,z5];
+wedge(10);
+pivot_message(x8,x5);
+endtchar; etest;
+
+stest(cbja); telchar "base of consonant ja";
+begintchar(cb_ja_code,cb_ja_width#,x_height#,0,0,0,0);
+cb_ja_form;
+sketch cb_ja_pb;
+pivot_message(x3z,x7);
+endtchar; etest;
+
+stest(cbjha); telchar "base of consonant jha";
+begintchar(cb_jha_code,cb_ra_width#+2vm_u_width#,x_height#,wedge_depth#,0,0,0);
+cb_ra_form;
+% The next statement will identify the point on ra_form
+% where the bowl will be attached.
+z5 = (cb_ra_p) intersectionpoint ((x1,w_height)--(x1+w,w_height));
+vm_u_form(5);
+z6 = z5b;
+wedge(6);
+z7 = z6;
+vm_u_form(7);
+w:=rt x7b;
+pivot_message(x1,x5,lft x7d);
+endtchar; etest;
+
+stest(cbnya); telchar "base of consonant nya";
+begintchar(cb_nya_code,v_e_width#+half_plus_width#,x_height#,0,0,0,0);
+v_e_form;
+z14= v_e_p intersectionpoint ((x4,j_height)--(w,j_height));
+z15=z14;
+half_plus_form(15);
+pivot_message(x15c,x7);
+w:=rt x15b;d:=abs(bot y10);
+endtchar; etest;
+
+stest(cbtta); telchar "base of consonant tta";
+begintchar(cb_tta_code,cb_tta_width#,x_height#,0,0,0,0);
+cb_tta_form;
+vwedge(18);
+sketch cb_tta_p;
+pivot_message(x7,x4,x19);
+h:=top y18a;
+endtchar; etest;
+
+stest(cbttha); telchar "base of consonant ttha";
+begintchar(cb_ttha_code,cb_ra_width#,x_height#,0,0,0,0);
+cb_ra_form;
+z10 = (x1,1/2x_height);
+fill_dot(10);
+pivot_message(x1,x1);
+endtchar; etest;
+
+stest(cbdda); telchar "base of consonant dda";
+begintchar(cb_dda_code,v_u_width#,x_height#,0,0,0,0);
+v_u_form;
+pivot_message((x8+x9)/2,x5);
+endtchar; etest;
+
+stest(cbddha); telchar "base of consonant ddha";
+begintchar(cb_ddha_code,v_u_width#,x_height#,wedge_depth#,0,0,0);
+v_u_form;
+z12=3/4[rt z5,z5];
+wedge(12);
+pivot_message((x8+x9)/2,x5);
+endtchar; etest;
+
+stest(cbnna); telchar "base of consonant nna";
+begintchar(cb_nna_code,cb_nna_width#,x_height#,0,0,0,0);
+cb_nna_form;
+pivot_message(x7,x6);
+endtchar; etest;
+
+stest(cbta); telchar "base of consonant ta";
+begintchar(cb_ta_code,cb_ta_width#,x_height#,0,0,0,0);
+cb_ta_form;
+ sketch cb_ta_p;
+pivot_message(x10,x5);
+endtchar; etest;
+
+stest(cbtha); telchar "base of consonant tha";
+begintchar(cb_tha_code,cb_da_width#,x_height#,wedge_depth#,0,0,0);
+cb_da_form;
+wedge(4);
+z10 = (x1,2/3x_height-uh);
+fill_dot(10);
+pivot_message(x1,x4);
+endtchar; etest;
+
+stest(cbda); telchar "base of consonant da";
+begintchar(cb_da_code,cb_da_width#,x_height#,0,0,0,0);
+cb_da_form;
+pivot_message(x1,x4);
+endtchar; etest;
+
+stest(cbdha); telchar "base of consonant dha";
+begintchar(cb_dha_code,cb_da_width#,x_height#,wedge_depth#,0,0,0);
+cb_da_form;
+wedge(4);
+pivot_message(x1,x4);
+endtchar; etest;
+
+stest(cbna);telchar "base of consonant na";
+begintchar(cb_na_code,cb_na_width#,x_height#,0,0,0,0);
+cb_na_form;
+sketch cb_na_p;
+pivot_message(x6,x6);
+endtchar; etest;
+
+stest(cbpa); telchar "base of consonant pa";
+begintchar(cb_pa_code,cb_va_width#,x_height#,0,0,0,0);
+cb_va_form;
+sketch subpath(0,3.4) of cb_va_p;
+pivot_message(x1,x1);
+endtchar; etest;
+
+stest(cbpha); telchar "base of consonant pha";
+begintchar(cb_pha_code,cb_va_width#,x_height#,wedge_depth#,0,0,0);
+cb_va_form;
+sketch subpath(0,3.4) of cb_va_p;
+top z10 = 1/2[rt z1,z1];
+wedge(10);
+pivot_message(x1,x1);
+endtchar; etest;
+
+stest(cbba); telchar "base of consonant ba";
+begintchar(cb_ba_code,cb_ba_width#,x_height#,0,0,0,0);
+cb_ba_form;
+pivot_message(x9,x6);
+endtchar; etest;
+
+stest(cbbha); telchar "base of consonant bha";
+begintchar(cb_bha_code,cb_ba_width#,x_height#,wedge_depth#,0,0,0);
+cb_ba_form;
+wedge(6);
+pivot_message(x9,x6);
+endtchar; etest;
+
+stest(cbma); telchar "base of consonant ma";
+begintchar(cb_ma_code,cb_va_width#+vm_u_width#,x_height#,0,0,0,0);
+cb_va_form;
+sketch cb_va_p;
+vm_u_form(3);
+w:=rt x3b;
+pivot_message(x5,x1,x3d);
+endtchar; etest;
+
+stest(cbya); telchar "base of consonant ya";
+begintchar(cb_ya_code,cb_ya_width#+vm_u_width#,x_height#,0,0,0,0);
+cb_ya_form;
+ sketch z1..z2..z3..z4..cycle;
+ sketch z3{down}..{right}z5..z6..z7..z8;
+vm_u_form(6);
+w:=rt x6b;
+pivot_message(x8,x3,x6d);
+endtchar; etest;
+
+stest(cbra); telchar "base of consonant ra";
+begintchar(cb_ra_code,cb_ra_width#,x_height#,0,0,0,0);
+cb_ra_form;
+pivot_message(x1,x3);
+endtchar; etest;
+
+stest(cbrra); telchar "base of consonant rra";
+begintchar(cb_rra_code,cb_tta_width#,x_height#,0,0,0,0);
+cb_rra_form;
+pivot_message(x7,x4,x19);
+endtchar; etest;
+
+stest(cbla); telchar "base of consonant la";
+begintchar(cb_la_code,cb_la_width#,x_height#,0,0,0,0);
+cb_la_form;
+ sketch cb_la_p;
+pivot_message(x5,x3,x8);
+endtchar; etest;
+
+stest(cblla); telchar "base of consonant lla";
+begintchar(cb_lla_code,cb_lla_width#,x_height#,0,0,0,0);
+ cb_lla_form;
+pivot_message(x10,x1);
+endtchar; etest;
+
+stest(cbva); telchar "base of consonant va";
+begintchar(cb_va_code,cb_va_width#,x_height#,0,0,0,0);
+cb_va_form;
+sketch cb_va_p;
+pivot_message(x5,x1);
+endtchar; etest;
+
+stest(cbca); telchar "base of consonant ca";
+begintchar(cb_ca_code,cb_ca_width#,x_height#,0,0,0,0);
+ cb_ca_form;
+pivot_message(x6,x3,x10);
+endtchar; etest;
+
+stest(cbsha); telchar "base of consonant sha";
+begintchar(cb_sha_code,cb_sha_width#,x_height#,wedge_depth#,0,0,0);
+cb_va_form;
+sketch subpath(0,3.4) of cb_va_p;
+bot rt z25 = (cb_sha_width,-d);
+sketch bot z3{down}..{right}z25;
+pivot_message(x1,x1);
+endtchar; etest;
+
+stest(cbsa); telchar "base of consonant sa";
+begintchar(cb_sa_code,cb_na_width#,x_height#,0,0,0,0);
+cb_na_form;
+sketch subpath (0,4.7) of cb_na_p;
+pivot_message(x3,x6);
+endtchar; etest;
+
+stest(cbha); telchar "base of consonant ha";
+begintchar(cb_ha_code,cb_va_width#+vmwidth#,x_height#,0,0,0,0);
+cb_va_form;
+z10 = point 3.6 of cb_va_p;
+top z11 = (x10,x_height);
+sketch subpath(0,3) of cb_va_p..z11;
+barandhook_forma(11,vmwidth,5);
+pivot_message(x5,x2,x11a);
+w:=rt x11b;
+endtchar; etest;
+
+stest(cbksha); telchar "base of consonant ksha";
+begintchar(cb_ksha_code,cb_ka_width#,x_height#,cb_ksha_depth#,0,0,0);
+cb_ksha_form;
+sketch cb_ka_p;
+pivot_message(x2,x6);
+endtchar; etest;
+
+stest(cbdt); telchar "dantyam accent(sits at top)";
+begintchar(cb_dt_code,vmwidth#,0,0,0,0,0);
+% h is set later
+top z1=(0,top_accent);
+barandhook_form(1,w,5);erase sketch barandhook_p;
+transform t;
+t:=identity reflectedabout (top z1, top z1 + (w,0));
+sketch barandhook_p transformed t;
+h:=ypart((bot z1c) transformed t);
+pivot_message((w/2));
+endtchar; etest;
+
+stest(cbnp); telchar "consonant nakaarapollu(np)";
+begintchar(cb_np_code,cb_np_width#,x_height#,0,0,0,ur#);
+bot z1 = (1/2w,0);
+bot z2 = (1/5w,0);
+z3 = (x2,1/3x_height);
+z4 = (x1,y3);
+z5 = (x3,2/3x_height);
+z6 = (x1,y5);
+top z7 = (x2,x_height);
+top rt z8 = (w,x_height);
+sketch z1--z2{left}..{right}z3--z4;
+sketch z3{left}..{right}z5--z6;
+sketch z5{left}..{right}z7--z8;
+endtchar; etest;
+
+stest(cbvg); telchar "consonant valapalagilaka(vg)";
+begintchar(cb_vg_code,cb_vg_width#,x_height#,0,0,0,ur#);
+bot z1 = (1/2w,0);
+bot z2 = (1/5w,0);
+z3 = (x2,1/3x_height);
+z4 = (x1,y3);
+top z5 = (x2,2/3x_height);
+top rt z6 = (w,2/3x_height);
+sketch z1--z2{left}..{right}z3--z4;
+sketch z3{left}..{right}z5--z6;
+h:=top y5;
+endtchar; etest;
+
+stest(cbbb); telchar "consonant blackbox(bb)";
+%This is not really a letter in Telugu. However this character
+% is useful for demonstrating vowel modifiers, cons. conjuncts, accents etc.
+begintchar(cb_bb_code,0.2em_width#,0.8x_height#,0.25x_height#,0,0,0);
+fill (0,-d)--(w,-d)--(w,h)--(0,h)--cycle;
+pivot_message((w/2),(w/2));
+endtchar; etest;
+
+stest(cbbo); telchar "consonant outlinebox(bo)";
+%This is not really a letter in Telugu. However this character
+% is useful for demonstrating vowel modifiers, cons. conjuncts, accents etc.
+begintchar(cb_bo_code,0.2em_width#,x_height#,0,0,0,0);
+bot lft z1=(0,-d);bot rt z2=(w,-d);top rt z3=(w,h); top lft z4=(0,h);
+z1a=(0,y1);z2a=(w,y2);z3a=(w,y3);z4a=(0,y4);
+sketch z1--z4; sketch z2--z3; sketch z1a--z2a; sketch z4a--z3a;
+cutoff(z1a,180);cutoff(z2a,0);cutoff(z3a,0);cutoff(z4a,180);
+pivot_message((w/2),(w/2));
+endtchar; etest;
+
+stest(cbbe); telchar "consonant emptybox(be)";
+%This is not really a letter in Telugu. However this character
+% is useful for demonstrating vowel modifiers, cons. conjuncts, accents etc.
+begintchar(cb_be_code,0.2em_width#,x_height#,0,0,0,0);
+pivot_message((w/2),(w/2));
+endtchar; etest;
+%----------------End of Consonants(Base)----------
+
+stest(ccka); telchar "consonant conjunct of ka";
+begintchar(cc_ka_code,6u#,x_height#,des_depth#,0,ul#,0);
+top lft z1 = (0,h);
+z2 = (w/4,(-d+h)/2);
+lft z3 = (0,-1/3d);
+bot z4 = (1/3w,-d);
+z5 = (w/2,0);
+rt z6 = (w,0);
+sketch z1..z2..z3..z4{right}..{up}z5--z6;
+endtchar; etest;
+
+stest(cckha); telchar "consonant conjunct of kha";
+begintchar(cc_kha_code,cb_kha_width#,x_height#,0,0,0,0);
+cb_kha_form;
+cc_clear; cc_transform(cb_kha_p);
+cc_transform(wedge_p);cc_whd(0,1);
+pivot_message(x5*cc_scale);
+endtchar; etest;
+
+stest(ccga); telchar "consonant conjunct of ga";
+begintchar(cc_ga_code,cb_ga_width#,x_height#,0,0,0,0);
+cb_ga_form;
+cc_clear; cc_transform(cb_ga_p);cc_whd(0,0);
+pivot_message(x3*cc_scale);
+endtchar; etest;
+
+stest(ccgha); telchar "consonant conjunct of gha";
+begintchar(cc_gha_code,cb_va_width#+vm_u_width#,x_height#,0,0,0,0);
+cb_va_form;
+sketch subpath(0,3.4) of cb_va_p;
+top z10=1/2[rt z1,z1];
+wedge(10);
+vm_u_form(3);
+cc_clear; cc_transform(subpath(0,3.4) of cb_va_p);
+cc_transform(lit_cir_p);
+cc_transform(wedge_p);cc_transform(vm_u_p);cc_whd(0,1);
+pivot_message(x1*cc_scale);
+endtchar; etest;
+
+stest(ccnga); telchar "consonant conjunct of nga";
+begintchar(cc_nga_code,cb_ja_width#,x_height#,0,0,0,0);
+cb_ja_form;
+half_plus_form(3);
+cc_clear; cc_transform(cb_ja_pa);
+cc_transform(half_plus_pa);
+cc_transform(half_plus_pb);cc_whd(0,0);
+pivot_message(x7*cc_scale);
+endtchar; etest;
+
+stest(cccha); telchar "consonant conjunct of cha";
+begintchar(cc_cha_code,cb_cha_width#,x_height#,0,0,ul#,0);
+cb_cha_form;
+cc_clear; cc_transform(((subpath (0,6) of cb_cha_p) .. z97));
+cc_whd(1,0);
+endtchar; etest;
+
+stest(ccccha); telchar "consonant conjunct of ccha";
+begintchar(cc_ccha_code,cb_cha_width#,x_height#,0,0,ul#,0);
+cb_cha_form;
+z10 = 1/2[rt z5,z5];
+wedge(10);
+cc_clear; cc_transform(((subpath (0,6) of cb_cha_p) .. z97));
+cc_transform(wedge_p);cc_whd(1,1);
+endtchar; etest;
+
+stest(ccja); telchar "consonant conjunct of ja";
+begintchar(cc_ja_code,cb_ja_width#,x_height#,0,0,0,0);
+cb_ja_form;
+cc_clear; cc_transform(cb_ja_pa);
+cc_transform(cb_ja_pb); cc_whd(0,0);
+pivot_message(x7*cc_scale);
+endtchar; etest;
+
+stest(ccjha); telchar "consonant conjunct of jha";
+begintchar(cc_jha_code,cb_ra_width#+2vm_u_width#,x_height#,0,0,0,0);
+cb_ra_form;
+% The next statement will identify the point on ra_form
+% where the bowl will be attached.
+z5=z4;
+vm_u_form(5);
+path p; p:=vm_u_p;
+z6 = z5b;
+wedge(6);
+z7 = z6;
+vm_u_form(7);
+w:=rt x7b;
+cc_clear; cc_transform(cb_ra_p);
+cc_transform(p); cc_transform(vm_u_p);
+cc_transform(wedge_p);cc_whd(0,1);
+penlabels(5,6);
+pivot_message(x5*cc_scale);
+endtchar; etest;
+
+stest(ccnya); telchar "consonant conjunct of nya";
+begintchar(cc_nya_code,v_e_width#+half_plus_width#,x_height#,0,0,0,0);
+v_e_form;
+z14= v_e_p intersectionpoint ((x4,j_height)--(w,j_height));
+z15=rt z14;
+half_plus_form(15);
+w:=rt x15b;d:=abs(bot y10);
+cc_clear; cc_transform(v_e_p);
+cc_transform(half_plus_pa);
+cc_transform(half_plus_pb);cc_whd(0,0);
+d:=d+(abs(bot y10) - pen_width/2)*cc_scale + pen_width/2+bot_spill;
+pivot_message(x7*cc_scale);
+endtchar; etest;
+
+stest(cctta); telchar "consonant conjunct of tta";
+begintchar(cc_tta_code,cb_tta_width#,top_height#,0,0,0,0);
+cb_tta_form;
+vwedge(18);
+cc_clear; cc_transform(cb_tta_p); cc_whd(0,0);
+pivot_message(x4*cc_scale);
+endtchar; etest;
+
+stest(ccttha); telchar "consonant conjunct of ttha";
+begintchar(cc_ttha_code,cb_ra_width#,x_height#,0,0,0,0);
+cb_ra_form;
+z10 = (x1,1/2x_height);
+fill_dot(10);
+cc_clear; cc_transform(cb_ra_p);
+cc_f_transform(fill_dot_p);cc_whd(0,0);
+pivot_message(x1*cc_scale);
+endtchar; etest;
+
+stest(ccdda); telchar "consonant conjunct of dda";
+begintchar(cc_dda_code,v_u_width#,top_height#,0,0,0,0);
+v_u_form;
+cc_clear; cc_transform(v_u_p); cc_whd(0,0);
+pivot_message(x5*cc_scale);
+endtchar; etest;
+
+stest(ccddha); telchar "consonant conjunct of ddha";
+begintchar(cc_ddha_code,v_u_width#,x_height#,0,0,0,0);
+v_u_form;
+z12=3/4[rt z5,z5];
+wedge(12);
+cc_clear; cc_transform(v_u_p);
+cc_transform(wedge_p);cc_whd(0,1);
+pivot_message(x5*cc_scale);
+endtchar; etest;
+
+stest(ccnna); telchar "consonant conjunct of nna";
+begintchar(cc_nna_code,cb_nna_width#,x_height#,0,0,0,0);
+cb_nna_form;
+cc_clear; cc_transform(cb_nna_p);cc_whd(0,0);
+pivot_message(x6*cc_scale);
+endtchar; etest;
+
+stest(ccta); telchar "consonant conjunct of ta";
+begintchar(cc_ta_code,vmwidth#,0,0,0,0,0);
+% d is set later
+top z1=(0,0); barandhook_form(1,w,5); erase sketch barandhook_p;
+sketch barandhook_p reflectedabout ( top z1, top z1+(w,0))
+ shifted (0, (-bot_accent+ (bot y1c)));
+d:=bot_accent- (bot y1c);
+pivot_message((w/2));
+endtchar; etest;
+
+stest(cctha); telchar "consonant conjunct of tha";
+begintchar(cc_tha_code,cb_da_width#,x_height#,0,0,0,0);
+cb_da_form;
+wedge(4);
+z10 = (x1,2/3x_height-uh);
+fill_dot(10);
+cc_clear; cc_transform(cb_da_p);
+cc_transform(wedge_p); cc_f_transform(fill_dot_p);
+cc_whd(0,1);
+pivot_message(x4*cc_scale);
+endtchar; etest;
+
+stest(ccda); telchar "consonant conjunct of da";
+begintchar(cc_da_code,cb_da_width#,x_height#,0,0,0,0);
+cb_da_form;
+cc_clear; cc_transform(cb_da_p);
+cc_whd(0,0);
+pivot_message(x4*cc_scale);
+endtchar; etest;
+
+stest(ccdha); telchar "consonant conjunct of dha";
+begintchar(cc_dha_code,cb_da_width#,x_height#,0,0,0,0);
+cb_da_form;
+wedge(4);
+cc_clear; cc_transform(cb_da_p);
+cc_transform(wedge_p);
+cc_whd(0,1);
+pivot_message(x4*cc_scale);
+endtchar; etest;
+
+stest(ccna); telchar "consonant conjunct of na";
+begintchar(cc_na_code,7u#,x_height#,des_depth#,0,ul#,0);
+top lft z1 = (0,h);
+z2 = (1/2w,(h-d)/2);
+bot z3 = (1/4w,-d);
+lft z4 = (0,-d+1/2sc_height);
+z5 = (x3,y3+sc_height);
+bot z6 = (3/4w,-d);
+rt z7 = (w,y4);
+sketch z1..z2..z3..z4..z5..z6..z7;
+endtchar; etest;
+
+stest(ccpa); telchar "consonant conjunct of pa";
+begintchar(cc_pa_code,cb_va_width#,top_height#,0,0,ul#,0);
+cb_va_form;
+sketch subpath(0,3.4) of cb_va_p;
+cc_clear; cc_transform(((subpath(0,2) of cb_va_p)..z97));
+cc_transform(lit_cir_p);
+cc_whd(1,0);
+endtchar; etest;
+
+stest(ccpha); telchar "consonant conjunct of pha";
+begintchar(cc_pha_code,cb_va_width#,x_height#,0,0,ul#,0);
+cb_va_form;
+sketch subpath(0,3.4) of cb_va_p;
+top z10 = 1/2[rt z1,z1];
+wedge(10);
+cc_clear; cc_transform(((subpath(0,2) of cb_va_p)..z97));
+cc_transform(lit_cir_p);cc_transform(wedge_p); cc_whd(1,1);
+endtchar; etest;
+
+stest(ccba); telchar "consonant conjunct of ba";
+begintchar(cc_ba_code,cb_ba_width#,top_height#,0,0,ul#,0);
+cb_ba_form;
+cc_clear; cc_transform(((subpath(0,7) of cb_ba_p)..z97));
+cc_whd(1,0);
+endtchar; etest;
+
+stest(ccbha); telchar "consonant conjunct of bha";
+begintchar(cc_bha_code,cb_ba_width#,x_height#,0,0,ul#,0);
+cb_ba_form;
+wedge(6);
+cc_clear; cc_transform(((subpath(0,7) of cb_ba_p)..z97));
+cc_transform(wedge_p); cc_whd(1,1);
+endtchar; etest;
+
+stest(ccma); telchar "consonant conjunct of ma";
+begintchar(cc_ma_code,6u#,x_height#,des_depth#,0,ul#,0);
+rt z1=(w,-d+uh);bot z2=(w/2,-d);
+lft z3=(0,-d/3); z4=(2/3w,x_height/5);
+rt z5=(w,0); z6=(x4,-5/10d);
+z7=(w/2,y5); z8=(2/3w,x_height/2);
+top lft z9=(0,h);
+sketch z1..z2..z3..z4..z5..z6..z7..z8..z9;
+endtchar; etest;
+
+stest(ccya); telchar "consonant conjunct of ya";
+begintchar(cc_ya_code,6u#,x_height#,des_depth#,0,ul#,0);
+lft z1 = (0,-1/3d); z2 = (w/4,0); z3 = (1/4w,-1/2d);
+bot z4 = (1/3w,-d); z5 = (2/3w,0); z6 = (1/3w,j_height);
+top z7 = (2/3w,h); rt z8=(w,y6);
+sketch z1..z2..z3..z4..z5..z6..z7..z8;
+endtchar; etest;
+
+stest(ccra); telchar "consonant conjunct of ra";
+begintchar(cc_ra_code,7u#,0,3.5uh#,0,0,0);
+top lft z1=(0,-bot_accent); bot z2=(w/2,-d); top rt z3=(w,-bot_accent);
+sketch z1..z2..z3;
+pivot_message(x2);
+endtchar; etest;
+
+stest(ccrra); telchar "consonant conjunct of rra";
+begintchar(cc_rra_code,cb_tta_width#,x_height#,0,0,0,0);
+cb_rra_form;
+cc_clear; cc_transform(cb_rra_p); cc_whd(0,0);
+pivot_message(x4*cc_scale);
+endtchar; etest;
+
+stest(ccla); telchar "consonant conjunct of la";
+begintchar(cc_la_code,7u#,0,4.5uh#,0,0,0);
+path s,t;
+bot z1=(w/4,-d); lft z2 =(0,-1/2d); top z3=(x1,-bot_accent);
+top z4=(w/2,y2);
+s= z1..z2..z3..z4;
+t=s reflectedabout ((w/2,h),(w/2,-d));
+sketch s;sketch t;
+pivot_message(x4);
+endtchar; etest;
+
+stest(cclla); telchar "consonant conjunct of lla";
+begintchar(cc_lla_code,cb_lla_width#,asc_height#,0,0,ul#,0);
+ cb_lla_form;
+cc_clear; cc_transform(((subpath (0,6) of cb_lla_pa)..z97));
+cc_transform(cb_lla_pb); cc_whd(1,0);
+endtchar; etest;
+
+stest(ccva); telchar "consonant conjunct of va";
+begintchar(cc_va_code,6u#,x_height#,des_depth#,0,ul#,0);
+lit_cir_form; erase sketch lit_cir_p;
+transform t;
+t= identity shifted (0,-d);
+sketch lit_cir_p transformed t;
+z10=z1 transformed t;
+z2 = (0,y1); bot z3 = (2/3w,-d); rt z4 = (w,-1/2d);
+z5 = (1/3w,w_height); top z6 = (2/3w,h); rt z7 = (w,j_height);
+sketch z10..z3..z4..z5..z6..z7;
+endtchar; etest;
+
+stest(ccca); telchar "consonant conjunct of ca";
+begintchar(cc_ca_code,cb_ca_width#,asc_height#,0,0,ul#,0);
+ cb_ca_form;
+cc_clear; cc_transform(((subpath (0,6) of cb_ca_p){up}..z97)); cc_whd(1,0);
+endtchar; etest;
+
+stest(ccsha); telchar "consonant conjunct of sha";
+begintchar(cc_sha_code,cb_sha_width#,x_height#,0,0,0,0);
+cb_va_form;
+sketch subpath(0,3.4) of cb_va_p;
+bot rt z10 = (cb_sha_width,0);
+sketch z3..z10;
+cc_clear; cc_transform(subpath(0,3.4) of cb_va_p);
+cc_transform(lit_cir_p);
+cc_transform((z3..z10)); cc_whd(0,0);
+pivot_message(x2*cc_scale);
+endtchar; etest;
+
+stest(ccsa); telchar "consonant conjunct of sa";
+begintchar(cc_sa_code,cb_na_width#,x_height#,0,0,ul#,0);
+cb_na_form;
+sketch subpath (0,4.7) of cb_na_p;
+cc_clear; cc_transform(((subpath (0,4) of cb_na_p)..z97)); cc_whd(1,0);
+endtchar; etest;
+
+stest(ccha); telchar "consonant conjunct of ha";
+begintchar(cc_ha_code,cb_va_width#+vmwidth#-3.5u#,x_height#,0,0,0,0);
+cb_va_form;
+z10 = point 3.6 of cb_va_p;
+top z11 = (x10,x_height);
+sketch subpath(0,3) of cb_va_p..z11;
+barandhook_forma(11,vmwidth,5);
+cc_clear; cc_transform((subpath(0,3) of cb_va_p..z11));
+cc_transform(lit_cir_p);
+cc_transform(barandhook_p); cc_whd(0,0);
+pivot_message(x2*cc_scale);
+endtchar; etest;
+
+% ---------- start of ubayaksharas -----------
+
+stest(uas); telchar "accent ardhasunna";
+begintchar(u_ardhasunna_code,x_height#/2,x_height#,0,0,0,ur#);
+top rt z2=(w,h); bot rt z1=(w,0); lft z3=(0,h/2);
+sketch z1..z3..z2;
+endtchar; etest;
+
+stest(us); telchar "accent sunna";
+begintchar(u_sunna_code,x_height#,x_height#,0,0,0,ur#);
+top z2=(w/2,h); bot z1=(x2,0);
+sketch z1..z2..cycle;
+endtchar; etest;
+
+stest(uvi); telchar "accent visarga";
+begintchar(u_visarga_code,2/5x_height#,x_height#,0,0,0,ur#);
+top z2 = (w/2,h); bot z1 =(x2,3h/5);
+path puvi;
+puvi= z1..z2..cycle;
+sketch puvi; sketch puvi shifted (0,-2h/3);
+endtchar; etest;
+
+stest(uav); telchar "accent ardhavisarga";
+begintchar(u_ardhavisarga_code,2/5x_height#,x_height#,0,0,0,ur#);
+path puav;
+top z2 = (w/2,h); bot z1 =(x2,3h/5);
+puav = subpath (0.25,1.75) of (z1..z2..cycle);
+sketch puav;sketch puav shifted (0,-2h/3);
+endtchar; etest;
+
+stest(ua); telchar "accent avagraha";
+begintchar(u_avagraha_code,tfig_width#,x_height#,0,0,0,ur#);
+top lft z1=(0,h); lft z2=(0,h/4); z3=(w/2,(y1+y2)/2);
+bot lft z4=(0,0); bot rt z5=(w,0);
+sketch flex (z1,z3,z2,z4)& z4--z5;
+endtchar; etest;
+
+% ----------- end of ubhayaksharas ----------
+
+% bars used for transliteration of vedic hymns
+
+stest(buone); telchar "b udatta(one bar)";
+begintchar(b_udatta1_code,u#,top_accent#+3uh#,0,0,0,0);
+bot z1=(w/2,top_accent); top z2=(x1,h);
+sketch z1--z2;
+pivot_message((w/2));
+endtchar; etest;
+
+stest(butwo); telchar "b udatta (two bars)";
+begintchar(b_udatta2_code,3.5u#,top_accent#+3uh#,0,0,0,0);
+bot z1=(w/4,top_accent); top z2=(x1,h);
+bot z3=(w/4+w/2,top_accent); z4=z2+(w/2,0);
+sketch z1--z2; sketch z3-- z4;
+pivot_message((w/2));
+endtchar; etest;
+
+stest(ba); telchar "b anudatta";
+begintchar(b_anudatta_code,4u#,0,0,0,0,0);
+% d is set later
+top lft z1=(0,-bot_accent);top rt z2=(w,-bot_accent);
+sketch z1--z2;
+d:=- (bot y1);
+pivot_message((w/2));
+endtchar; etest;
+