% 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. %%%%% % This file contains all Kannada aksharas in it's varnamale. % along vowel modifiers and consonant conjunctions. %-------------- Begin of are the Vowel and Vowel modifiers.--------------- def VA = stest(va); kanchar "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; enddef ; def VAA= stest(vaa); kanchar "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; enddef ; def VE= stest(ve); kanchar "vowel e"; begintchar(v_e_code,v_e_width#,x_height#,des_depth#,0,0,0); v_e_form; endtchar; etest; enddef ; def VEE = stest(vee); kanchar "vowel ee"; begintchar(v_ee_code,cb_ra_width#+2.6u#,asc_height#,0,0,0,0); cb_ra_form; z1a = (0, 1/2x_height); z1b = (cb_ra_width+1.1u, y1a); rt z1c = (x1b+1.5u, .7x_height); z1d = (x1b+.75u, .85x_height); rt z1e = (x1b+1.5u, .25x_height); bot z1f = (x1b+.5u, 0); draw z1a--z1b..z1c..z1d..z1b..z1e..z1f; vmfa_form(301); % Following are test to see How vowel modifer looks. endtchar; etest; enddef ; def VU= stest(vu); kanchar "vowel u"; begintchar(v_u_code,v_u_width#,asc_height#,0,0,0,0); v_u_form; %sketch v_u_pa; endtchar; etest; enddef; def VUU= stest(vuu); kanchar "vowel uu"; begintchar(v_uu_code,v_uu_width#+.5u#,x_height#,0,0,0,0); v_uu_form; endtchar; etest; enddef; def VRO= stest(vro); kanchar "vowel ro"; begintchar(v_ro_code,v_ro_width#+1.7vm_u_width#,x_height#+2u#,0,0,0,0); v_ro_form; endtchar; etest; enddef; def VROO= stest(vroo); kanchar "vowel roo"; begintchar(v_roo_code,v_ro_width#+2vm_u_width#+vm_uu_width#,x_height#+2u#,0,0,0,0); v_ro_form; %z3a = (0, .7w_height); vm_uu_form(39); endtchar; etest; enddef; def VEA= stest(vea); kanchar "vowel ea"; begintchar(v_ea_code,cb_pa_width#,x_height#,0,0,0,0); vb_ea_form; sketch vb_a_p; endtchar; etest; enddef ; def VEAE= stest(veae); kanchar "vowel eae"; begintchar(v_eae_code,cb_pa_width#,x_height#,0,0,0,0); vb_eae_form; sketch vb_a_pb; endtchar; etest; enddef ; def VI = stest(vi); kanchar "vowel y"; begintchar(v_i_code,cb_pa_width#,x_height#,0,0,0,0); vb_i_form; draw vb_a_pb; endtchar; etest; enddef; def VAO = stest(vao); kanchar "vowel ao"; begintchar(v_ao_code,cb_ja_width#,x_height#,0,0,0,0); cb_ja_form; endtchar; etest; enddef; def VAOO = stest(vaoo); kanchar "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; enddef; def VAU= stest(vau); kanchar "vowel ow"; 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; enddef; % Begin of Vowel Modifiers....... def VMAH = stest(vmp); kanchar "vowel modifier of ah"; begintchar(vm_ah_code,vm_ah_width#,x_height#+vm_ah_height#,0,0,0,0); lft top z77 = (0, x_height); vmah_form(77); pivot_message(x77); endtchar; etest; enddef; def VMA = stest(vma); kanchar "vowel modifier of a"; begintchar(vm_a_code,vm_a_width#,asc_height#,0,0,0,0); lft top z1=(0,x_height); vmfa_form(1); pivot_message(x1); endtchar; etest; enddef ; def VMAA = stest(vmaa); kanchar "vowel modifier of aa"; % used for kha,nga,ja,nya etc. begintchar(vm_aa_code,vm_aa_width#,asc_height#,0,0,0,0); lft top z0 = (0, x_height); vmfaa_form(0) ; pivot_message(x0); endtchar; etest; enddef ; def VME= stest(vme); kanchar "vowel modifer of e "; begintchar(vm_e_code,vm_e_width#,vm_e_height1#+ascunit#,0,0,0,0); vm_e_form; pivot_message(.5u); endtchar; etest; enddef ; def VMEE= stest(vmee); kanchar "vowel modifier of ee"; begintchar(vm_ee_code,vm_e_width#,asc_height#,0,0,0,0); vm_ee_form; %vm_hook_form(7,3); pivot_message(x2); endtchar; etest; enddef; def VMU = stest(vmu); kanchar "vowel modifier of u"; begintchar(vm_u_code,vm_u_width#,x_height#,0,0,0,0); rt z1 = (0,.6w_height); vm_u_form(1); w:=rt x1b; pivot_message(x1d); endtchar; etest; enddef; def VMUU = stest(vmuu); kanchar "vowel modifier of uu"; begintchar(vm_uu_code,vm_uu_width#,x_height#,0,0,0,0); rt z1 = (0,.6w_height); vm_uu_form(1); endtchar; etest; enddef; def VMRO = stest(vmro); kanchar "vowel modifier of ro"; begintchar(vm_ro_code,vm_ro_width#-3u#,x_height#,.5des_depth#,0,ul#,0); cc_clear ; vm_ro_form; %cc_whd(0,1); %cc_whd(0,1); endtchar; etest; enddef; def VMROO = stest(vmroo); kanchar "vowel modifier of roo"; begintchar(vm_roo_code,vm_ro_width#+vm_bar_width#-3u#,x_height#,.5des_depth#,0,ul#,0); cc_clear ; vm_ro_form; z10 =(x1+.9vm_bar_width, y1); rt z11 = (x1+vm_bar_width, y1 -2u); z12 = (x1+.9vm_bar_width, y1 -u); path cd, bar_p; bar_p = z1---z10..z11..z12; cd = bar_p scaled 1 shifted (-3u, -.5des_depth) rotated 0 ; sketch cd; endtchar; etest; enddef; def VMEA = stest(vmea); kanchar "vowel modifier of ea"; begintchar(vm_ea_code,vm_ea_width#,x_height#+vm_ea_height#,0,0,0,0); lft top z77 = (0, x_height); vmfea_form(77); pivot_message(x77); endtchar; etest; enddef; def VMEAA = stest(vmeaa); kanchar "vowel modifier of ea"; begintchar(vm_ea1_code,vm_ea1_width#,x_height#+vm_ea_height#,0,0,0,0); bar_forma(vm_ea1_width) ; %lft top z77 = (0, x_height); vmfea_form(301); pivot_message(x300); endtchar; etest; enddef; def VMY = stest(vmy); kanchar "vowel modifier of y"; begintchar(vm_y_code,.5vm_ro_width#,x_height#,des_depth#+1.4u#,0,ul#,0); vm_y_form; %cc_whd(0,1); path ct ; %ct = vm_y_p scaled 1.3 shifted (-1.5u, 4.3u) rotated 0 ; ct = vm_y_p scaled .85 shifted (-2.0u, -.5des_depth) rotated 0 ; sketch ct; %cc_clear; cc_transform(ct); %cc_whd(1,0); endtchar; etest; enddef; def VMAU= stest(vmau); kanchar "vowel modifier au"; begintchar(vm_au_code,vm_au_width#,asc_height#,0,0,0,0); lft z12 = (0, x_height); vm_au_form(12,w); pivot_message(x12); endtchar; etest; enddef; % --------------------End of the Vowel and Vowel modifiers.------------ %---------------------Begin of Kannada Consonant and its conjunctions.-------- def CBKA= stest(cbka); kanchar "base of consonant ka"; begintchar(cb_ka_code,cb_ka_width#,x_height#,0,0,0,0); cb_ka_form; pivot_message(x301,x400); endtchar; etest; enddef ; def CCKA= stest(ccka); kanchar "consonant conjunction of ka"; begintchar(cc_ka_code,cb_ka_width#,x_height#,0,0,0,0); cb_ka_form; cc_clear; cc_transform(cb_ka_pa); cc_transform(cb_ka_pb); cc_transform(cb_ka_pc); cc_whd(1,0); pivot_message(w/2); endtchar; etest; enddef ; def CBKHA= stest(cbkha); kanchar "base of consonant kha"; begintchar(cb_kha_code,cb_kha_width#,x_height#,wedge_depth#,0,0,0); cb_kha_form; sketch cb_kha_p; pivot_message(x12,x400); endtchar; etest; enddef ; def CCKHA= stest(cckha); kanchar "consonant conjunction 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_whd(1,0); pivot_message(.6w); endtchar; etest; enddef ; def CBGA= stest(cbga); kanchar "base of consonant ga"; begintchar(cb_ga_code,cb_ga_width#,x_height#,0,0,0,0); cb_ga_form; sketch cb_ga_p; bar_forma(cb_ga_width-.5u); pivot_message(x301,x400); endtchar; etest; enddef ; def CCGA= stest(ccga); kanchar "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); cc_whd(1,0); pivot_message(w/2); endtchar; etest; enddef ; def CBGHA = stest(cbgha); kanchar "base of consonant gha"; begintchar(cb_gha_code,cb_pa_width#+1/2vm_u_width#,x_height#,wedge_depth#,0,0,0); cb_pa_form; top lft z77=(1/2cb_pa_width-1/2c_height-.5u, top (x_height - c_height)); place_lit_circ(77, 1); path new_path ; sketch cb_pa_p ; top z10=1/2[z46,z46]; %z50=(x48+1/4u,y48) ; wedge(10); vm_ghu_form(48); bar_forma(.9cb_pa_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); %bar_form(0,cb_ka_width); %vm_au_form(301,w); %vmah_form(301); % tale-ardha akshara %vm_u_form(400); pivot_message(x301,x400); endtchar; etest; enddef ; def transform_gha(text t) = path ct_p ; cc_transform(t) ; undraw cc_transformed_path ; ct_p = cc_transformed_path scaled .95 shifted (-1.5u, 2u) rotated 0 ; sketch ct_p ; enddef ; def CCGHA= stest(ccgha); kanchar "consonant conjunct of gha"; begintchar(cc_gha_code,cb_pa_width#+1/4vm_u_width#-2u#,x_height#,0,0,0,0); cb_pa_form; top lft z77=(1/2cb_pa_width-1/2c_height-.5u, top (x_height - c_height)); place_lit_circ(77, 1); sketch cb_pa_p; top z10=1/2[z46,z46]; z50=(x48+1/4u,y48) ; wedge(10); vm_ghu_form(48); path ca, cb, cc ; cc_clear; %cc_transform(pl_lit_cir_p); transform_gha(cb_pa_p); transform_gha(wedge_p); transform_gha(vm_ghu_p);cc_whd(1,1); pivot_message(w/2); endtchar; etest; enddef ; def CBNGA = stest(cbnga); kanchar "base of consonant nga"; begintchar(cb_nga_code,cb_ja_width#,x_height#,0,0,0,0); cb_ja_form; sketch cb_ja_pc; sketch cb_nga_p; % puts bowl to nga. %vmfa_form(301); % Following are test to see How vowel modifer looks. %vmfaa_form(21) ; %vmfea_form(21); %vm_au_form(21,w); pivot_message(x21-1.5u,x400); endtchar; etest; enddef ; def CCNGA = stest(ccnga); kanchar "base of consonant nga"; begintchar(cc_nga_code,cb_ja_width#,x_height#,0,0,0,0); cb_ja_form; cc_clear; cc_transform(cb_ja_pa); cc_transform(cb_nga_p); cc_transform(cb_ja_pc); cc_whd(1,0); pivot_message(w/2); endtchar; etest; enddef ; def CBCHA = stest(cbcha); kanchar "base of consonant cha"; begintchar(cb_cha_code,cb_ja_width#+.5u#,x_height#,0,0,0,0); cb_ch_form; pivot_message(x20-u,x400); endtchar; etest; enddef ; def transform_char(text t) = path ct_p ; cc_transform(t) ; undraw cc_transformed_path ; ct_p = cc_transformed_path scaled 1 shifted (-u, 1.5u) rotated 0 ; sketch ct_p ; enddef ; def CCCHA = stest(cccha); kanchar "consonant conjunction of cha"; begintchar(cc_cha_code,cb_ja_width#-2.5u#,x_height#,0,0,0,0); cb_ch_form; cc_clear; transform_char(cb_cha_pa); transform_char(cb_cha_pb); transform_char(cb_cha_pc); cc_whd(1,1); endtchar; etest; enddef ; def CBCCHA= stest(cbccha); kanchar "base of consonant ccha"; begintchar(cb_ccha_code,cb_ja_width#,x_height#,0,0,0,0); cb_cch_form; wedge(8); pivot_message(x12-u,x400); endtchar; etest; enddef ; def CCCCHA= stest(ccccha); kanchar "consonant conjunction ccha"; begintchar(cc_ccha_code,cb_ja_width#-2u#,x_height#,0,0,0,0); cb_cch_form; wedge(8); cc_clear; transform_char(cb_ccha_pa); transform_char(wedge_p); cc_whd(0,0); endtchar; etest; enddef ; def CBJA = stest(cbja); kanchar "base of consonant ja"; begintchar(cb_ja_code,cb_ja_width#,x_height#,0,0,0,0); cb_ja_form; sketch cb_ja_pb; % puts bowl to ja. pivot_message(x52-u,x400); %vmfa_form(52); % Following are test to see How vowel modifer looks. %vmfaa_form(52) ; %vmfea_form(52); %vm_au_form(52,vm_au_width); %vmah_form(52); % tale-ardha akshara endtchar; etest; enddef ; def CCJA = stest(ccja); kanchar "base of consonant ja"; begintchar(cc_ja_code,cb_ja_width#-2u#,x_height#,0,0,0,0); cb_ja_form; %sketch cb_ja_pb; % puts bowl to ja. cc_clear; transform_char(cb_ja_pa); transform_char(cb_ja_pb);cc_whd(0,0); pivot_message(w/2); endtchar; etest; enddef ; def CBJHA = stest(cbjha); kanchar "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; z8a=(x7d-.5u,y7d); %vmfa_form(301); % Following are test to see How vowel modifer looks. %vmfaa_form(8a) ; %vmfea_form(301); %bar_form(0,cb_ka_width); %vm_au_form(8a,w); % to compute the joining point of "kombu for jha". path inter; inter = (.9w, .3x_height)--(1.1w, .3x_height); z401 = vm_u_p intersectionpoint inter; %vm_u_form(401); pivot_message(x301,x401,x8a); endtchar; etest; enddef; def CCJHA = stest(ccjha); kanchar "consonant conjunct of jha"; begintchar(cc_jha_code,cb_ra_width#+2vm_u_width#-2.5u#,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; transform_char(cb_ra_p); transform_char(p); transform_char(vm_u_p); transform_char(wedge_p);cc_whd(1,0); penlabels(5,6); pivot_message(w/2); endtchar; etest; enddef ; def CBNYA= stest(cbnya); kanchar "base mf consonant nya"; begintchar(cb_nya_code,v_e_width#+half_plus_width#,x_height#,0,0,0,0); cb_nya_form; pivot_message(x17-u,x400); endtchar; etest; enddef ; def CCNYA= stest(ccnya); kanchar "consonant conjunction of nya"; begintchar(cc_nya_code,v_e_width#+half_plus_width#,x_height#,0,0,0,0); cb_nya_form; cc_clear; cc_transform(v_e_p); cc_transform(cb_ny_pb); cc_whd(0,1); pivot_message(0) ; endtchar; etest; enddef; def CBTTA= stest(cbtta); kanchar "base of consonant tta"; begintchar(cb_tta_code,cb_tta_width#,x_height#,0,0,0,0); cb_tta_form; pivot_message(x13-u,x400); endtchar; etest; enddef ; def CCTTA= stest(cctta); kanchar "base of consonant tta"; begintchar(cc_tta_code,cb_tta_width#-1.75u#,x_height#,0,0,0,0); cb_tta_form; cc_clear; transform_char(cb_tta_p);; cc_whd(1,0); pivot_message(w); endtchar; etest; enddef ; def CBTTHA= stest(cbttha); kanchar "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(x301,x400); endtchar; etest; enddef ; def CCTTHA= stest(ccttha); kanchar "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(w/2); endtchar; etest; enddef ; def CBDDA= stest(cbdda); kanchar "base of consonant dda"; begintchar(cb_dda_code,.9cb_da_width#,x_height#,0,0,0,0); cb_dda_form; pivot_message(x301,x400); endtchar; etest; enddef ; def CCDDA= stest(ccdda); kanchar "consonant conjunction of dda"; begintchar(cc_dda_code,.9cb_da_width#-2u#,x_height#,0,0,0,0); cb_dda_form; cc_clear; cc_transform(cb_dda_p);cc_whd(0,0); pivot_message(w/2); endtchar; etest; enddef ; def CBDDHA= stest(cbddha); kanchar "base of consonant ddha"; begintchar(cb_ddha_code,.9cb_da_width#,x_height#,0,0,0,0); cb_dda_form; wedge(3); pivot_message(x301,x400); endtchar; etest; enddef ; def CCDDHA= stest(ccddha); kanchar "consonant conjunction of ddha"; begintchar(cc_ddha_code,.9cb_da_width#-2u#,x_height#,0,0,0,0); cb_dda_form; wedge(3); cc_clear; cc_transform(cb_dda_p); cc_transform(wedge_p);cc_whd(1,1); pivot_message(w/2); endtchar; etest; enddef ; def CBNNA= stest(cbnna); kanchar "base of consonant nna"; begintchar(cb_nna_code,cb_nna_width#,x_height#,0,0,0,0); cb_nna_form; pivot_message(x400-.5u); endtchar; etest; enddef ; def CCNNA= stest(ccnna); kanchar "consonant conjunct of nna"; begintchar(cc_nna_code,cb_nna_width#-u#,x_height#,0,0,0,0); cb_nna_form; cc_clear; cc_transform(cb_nna_p);cc_whd(0,0); pivot_message(w/2); endtchar; etest; enddef ; def CBTA= stest(cbta); kanchar "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(x301,x400); endtchar; etest; enddef ; def CCTA= stest(ccta); kanchar "consonant conjunct of ta"; begintchar(cc_ta_code,vmwidth#,0,0,0,0,0); % d is set later top z1=(0,0); barandhook_formk(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); endtchar; etest; enddef ; def CBTHA= stest(cbtha); kanchar "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(x301,x400); endtchar; etest; enddef ; def CCTHA= stest(cctha); kanchar "consonant conjunct of tha"; begintchar(cc_tha_code,cb_da_width#-2u#,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(w/2); endtchar; etest; enddef ; def CBDA= stest(cbda); kanchar "base of consonant da"; begintchar(cb_da_code,cb_da_width#,x_height#,0,0,0,0); cb_da_form; pivot_message(x301,x400); endtchar; etest; enddef ; def CCDA= stest(ccda); kanchar "consonant conjunct of da"; begintchar(cc_da_code,cb_da_width#-2u#,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); pivot_message(w/2); endtchar; etest; enddef ; def CBDHA= stest(cbdha); kanchar "base of consonant dha"; begintchar(cb_dha_code,cb_da_width#,x_height#,0,0,0,0); cb_da_form; wedge(4); pivot_message(x301,x400); endtchar; etest; enddef ; def CCDHA= stest(ccdha); kanchar "consonant conjunct of da"; begintchar(cc_dha_code,cb_da_width#-2u#,x_height#,0,0,0,0); cb_da_form; wedge(4); cc_clear; cc_transform(cb_da_p); cc_transform(wedge_p); cc_whd(1,1); pivot_message(w/2); %pivot_message(x4*cc_scale); endtchar; etest; enddef ; def CBNA= stest(cbna);kanchar "base of consonant na"; begintchar(cb_na_code,cb_na_width#,x_height#,wedge_depth#,0,0,0); cb_na_form; sketch cb_na_p; pivot_message(x301,x400); endtchar; etest; enddef ; def CBNAA= stest(cbnaa); kanchar "consonant of nX (alternative)"; begintchar(cb_naa_code,cb_na_width#,x_height#,0,0,0,0); naa_form ; pivot_message(0); endtchar; etest; enddef ; def CCNA= stest(ccna); kanchar "consonant conjunct of na"; begintchar(cc_na_code,2.5u#,x_height#-3u#,des_depth#,0,ul#,0); numeric wid; wid = 7u ; top lft z1 = (.4wid,.5x_height); z2 = (.55wid,(x_height-d)/2); bot z3 = (1/4wid,-d); lft z4 = (0,-d+1/2sc_height); z5 = (x3,y3+sc_height); bot z6 = (3/4wid,-d); rt z7 = (wid,y4); path cc_na_p, ct; cc_na_p = z1..z2..z3..z4..z5..z6..z7; ct = cc_na_p scaled 1 shifted (-3u, 6u) rotated -10 ; cc_clear; transform_char(ct); cc_whd(1,0); pivot_message(w/2); endtchar; etest; enddef ; def CBPA= stest(cbpa); kanchar "base of consonant pa"; begintchar(cb_pa_code,cb_pa_width#,x_height#,0,0,0,0); cb_pa_form; top lft z77=(1/2cb_pa_width-1/2c_height-.5u, top (x_height - c_height)); place_lit_circ(77, 1); sketch cb_pa_p; bar_forma(cb_pa_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); pivot_message(x301,x400); endtchar; etest; enddef ; def transform_charb(text t) = path ct_p ; cc_transform(t) ; undraw cc_transformed_path ; ct_p = cc_transformed_path scaled 1 shifted (-2u, 2.5u) rotated 0 ; sketch ct_p ; enddef ; def CCPA= stest(ccpa); kanchar "consonant conpunction of pa"; begintchar(cc_pa_code,cb_pa_width#-2u#,x_height#,0,0,0,0); cb_pa_form; pivot_message(3/4w); cc_clear; transform_charb(cb_pa_p); cc_whd(1,0); endtchar; etest; enddef ; def CBPHA= stest(cbpha); kanchar "base of consonant pha"; begintchar(cb_pha_code,cb_pa_width#,x_height#,0,0,0,0); cb_pa_form; %pivot_message(x1,x1); top lft z77=(1/2cb_pa_width-1/2c_height-.5u, top (x_height - c_height)); place_lit_circ(77, 1); top z10=1/2[z46,z46]; wedge(10); sketch cb_pa_p; sketch wedge_p; bar_forma(cb_pa_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); pivot_message(x301,x400); endtchar; etest; enddef ; def CCPHA= stest(ccpha); kanchar "consonant conpunction of pha"; begintchar(cc_pha_code,cb_pa_width#-2u#,x_height#,0,0,0,0); cb_pa_form; sketch cb_pa_p; top z10=1/2[z46,z46]; wedge(10); cc_clear; transform_charb(cb_pa_p); transform_charb(wedge_p); cc_whd(1,1); endtchar; etest; enddef ; def CBBA= stest(cbba); kanchar "base of consonant ba"; begintchar(cb_ba_code,cb_ba_width#,x_height#,0,0,0,0); cb_ba_form; pivot_message(x9-u,x400); endtchar; etest; enddef ; def CCBA= stest(ccba); kanchar "consonant conjunct of ba"; begintchar(cc_ba_code,cb_ba_width#-3.5u#,top_height#,0,0,ul#,0); cb_ba_form; cc_clear; transform_charb(((subpath(0,7) of cb_ba_p)..(x9,1.3y9))); cc_whd(1,0); endtchar; etest; enddef; def CBBHA= stest(cbbha); kanchar "base of consonant bha"; begintchar(cb_bha_code,cb_ba_width#,x_height#,0,0,0,0); cb_ba_form; wedge(6); %vmah_form(9); % tale-ardha akshara pivot_message(x9-u,x400); endtchar; etest; enddef ; def CCBHA= stest(ccbha); kanchar "consonant conjunct of bha"; begintchar(cc_bha_code,cb_ba_width#-3.5u#,top_height#,0,0,ul#,0); cb_ba_form; wedge(6); cc_clear; transform_charb(((subpath(0,7) of cb_ba_p)..(x9,1.3y9))); transform_charb(wedge_p); cc_whd(1,1); pivot_message(x12,x400); endtchar; etest; enddef; def CBMA= stest(cbma); kanchar "base of consonant ma"; begintchar(cb_ma_code,cb_pa_width#+vm_u_width#,x_height#,0,0,0,0); cb_va_form; sketch cb_va_p; z65 = (cb_va_p) intersectionpoint ((x46,.8w_height)--(x46+cb_pa_width,.8w_height)); vm_u_form(65); % to compute the joining point of "kombu for nya". z500=z65b; %vm_u_form(500); z67=(x65d-.5u, y65d); %vm_au_form(67,vm_au_width); %vmfaa_form(67) ; %vmah_form(301); % tale-ardha akshara pivot_message(x301,x500, x67); endtchar; etest; enddef ; def CCMA= stest(ccma); kanchar "consonant conjunct of ma"; begintchar(cc_ma_code,4u#,x_height#,des_depth#,0,ul#,0); path cc_ma_p; numeric wid; wid = 6u; rt z1=(wid,-.8d+uh);bot z2=(wid/2,-d); lft z3=(0,-.1d); z4=(.3wid,.15x_height); %z4=(2/3wid,x_height/5); rt z5=(.6wid,0); z6=(.3wid,-.075d); z7=(.15wid,.1x_height); z8=(.075wid,.25x_height); z9=(.14wid,.55x_height); cc_ma_p = z1..z2..z3..z4..z5..z6..z7..tension1.2..z8..tension 1.2..z9; sketch cc_ma_p; path ct; ct = cc_ma_p scaled 1 shifted (0, 3.5u) ; %cc_clear; cc_transform(cc_ma_p); cc_whd(0,0); cc_clear; transform_charb(ct); cc_whd(0,0); endtchar; etest; enddef ; def CBYA= stest(cbya); kanchar "base of consonant ya"; begintchar(cb_ya_code,cb_ya_width#+vm_u_width#,x_height#,0,0,0,0); cb_ya_form; pivot_message(x7,x400, x10); endtchar; etest; enddef; def CCYA= stest(ccya); kanchar "consonant conjunct of ya"; %begintchar(cc_ya_code,6u#,x_height#,des_depth#,0,ul#,0); begintchar(cc_ya_code,4.5u#,x_height#,des_depth#+2.5u#,0,0,0); numeric y_width ; y_width = 6u ; lft z1 = (0,-1/3des_depth); z2 = (y_width/4,0); z3 = (1/4y_width,-1/2des_depth); bot z4 = (1/3y_width,-des_depth); z5 = (2/3y_width,0); z6 = (.45y_width,.45j_height); z7 = (.6y_width,.7j_height); z8=(.65y_width,.4j_height); path cc_ya_p, ct ; cc_ya_p = z1..z2..z3..z4..z5..{up}z6..z7..z8; %ct = cc_ya_p scaled 1.3 shifted (0, -3.5u) ; ct = cc_ya_p scaled 1.0 shifted (0, -2u) ; sketch ct; %cc_clear; cc_transform(ct); cc_whd(1,0); pivot_message(0); endtchar; etest enddef; def CBRA = stest(cbra); kanchar "base of consonant ra"; begintchar(cb_ra_code,cb_ra_width#,x_height#,0,0,0,0); cb_ra_form; pivot_message(x301,x400); endtchar; etest; enddef ; def CBRRA = stest(cbrra); kanchar "base of consonant rra"; begintchar(cb_rra_code,cb_rra_width#,x_height#,0,0,0,0); cb_rra_form; pivot_message(x7,x400); endtchar; etest; enddef ; % For arkavattu; def CCRRA = stest(ccara); kanchar "base of consonant ra(as arkavattu)"; begintchar(cc_ara_code,cb_ra_width#,x_height#,0,0,0,0); arkavattu ; sketch arka_pa reflectedabout((0,0),(w,0)) shifted (0,h); sketch arka_pb reflectedabout((0,0),(w,0)) shifted (0,h); endtchar; etest; enddef ; def CCRA = stest(ccra); kanchar "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(w); endtchar; etest; enddef ; def CBLA = stest(cbla); kanchar "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(x55-u,x400); endtchar; etest; enddef ; def CCLA = stest(ccla); kanchar "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(.8w); endtchar; etest; enddef ; def CBVA= stest(cbva); kanchar "base of consonant va"; begintchar(cb_va_code,cb_pa_width#,x_height#,0,0,0,0); cb_va_form; sketch cb_va_p ; %pivot_message(x46,x400); pivot_message(x301,x400); endtchar; etest; enddef ; def CCVA= stest(ccva); kanchar "consonant conjunction of va"; begintchar(cc_va_code,cb_pa_width#,x_height#,0,0,0,0); cb_va_form; vmfa_form(301); % Following are test to see How vowel modifer looks. cc_clear; cc_transform(cb_va_p); cc_transform(bar_pa) ; cc_transform(bar_p) ; cc_whd(1, 0); endtchar; etest; enddef ; def CBCA= stest(cbca); kanchar "base of consonant ca"; begintchar(cb_ca_code,cb_ca_width#,x_height#,0,0,0,0); cb_ca_form; draw cb_ca_p; pivot_message(x301,x400); endtchar; etest; enddef ; def CCCA= stest(ccca); kanchar "consonant conjunct of ca"; begintchar(cc_ca_code,cb_ca_width#-2.5u#,asc_height#,0,0,ul#,0); cb_ca_form; cc_clear; transform_charb(((x5, .8asc_height)..cb_ca_p)); cc_whd(1,0); endtchar; etest; enddef ; def CBSA = stest(cbsa); kanchar "base of consonant sa"; begintchar(cb_sa_code,cb_na_width#,x_height#,0,0,0,0); cb_sa_form; sketch cb_sa_p; pivot_message(x301+.2u,x400); endtchar; etest; enddef ; def CCSA = stest(ccsa); kanchar "consonant conjunct of sa"; begintchar(cc_sa_code,cb_na_width#-2.5u#,x_height#,0,0,ul#,0); cb_sa_form; %sketch cb_na_p; cc_clear; transform_charb(cb_sa_p); cc_whd(1,0); endtchar; etest; enddef ; def CBHA = stest(cbha); kanchar "base of consonant ha"; begintchar(cb_ha_code,cb_ha_width#,x_height#,0,0,0,0); cb_ha_form; pivot_message(x301,x400); endtchar; etest; enddef ; def CCHA = stest(ccha); kanchar "consonant conjunct of ha"; begintchar(cc_ha_code,cb_ha_width#,x_height#,0,0,0,0); cb_ha_form; cc_clear; cc_transform(cb_ha_p); cc_whd(0,0); pivot_message(0) ; endtchar; etest; enddef ; def CBLLA = stest(cblla); kanchar "base of consonant lla"; begintchar(cb_lla_code,cb_lla_width#,x_height#,0,0,0,0); cb_lla_form; sketch cb_lla_p; pivot_message(x12-u,x400); endtchar; etest; enddef ; def CBLLAA = stest(cbllaa); kanchar "base of consonant lla"; begintchar(cb_llaa_code,cb_rra_width#,x_height#,0,0,0,0); cb_rra_form; undraw cb_rra_pd ; pivot_message(x7,x400); endtchar; etest; enddef ; def CCLLA = stest(cclla); kanchar "consonant conjunct of lla"; begintchar(cc_lla_code,cb_lla_width#,asc_height#,0,0,ul#,0); cb_lla_form; cc_clear; cc_transform(cb_lla_p); cc_whd(1,0); endtchar; etest; enddef ; def CBSHA= stest(cbsha); kanchar "base of consonant sha"; begintchar(cb_sha_code,cb_pa_width#,x_height#,0,0,0,0); cb_sha_form; sketch cb_pa_p; sketch cb_sha_pb; pivot_message(x301,x400); endtchar; etest; enddef ; def CCSHA= stest(ccsha); kanchar "consonant conjunct of sha"; begintchar(cc_sha_code,cb_pa_width#-2u#,x_height#,0,0,0,0); cb_sha_form; cc_clear; transform_charb(cb_pa_p); transform_charb(cb_sha_pb); cc_whd(0,0); endtchar; etest; enddef ; def CBKSHA = stest(cbksha); kanchar "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_pa; sketch cb_ka_pb; sketch cb_ka_pc; pivot_message(x301,x400); endtchar; etest; enddef ; % ----------------End of Kannada Consonant and its conjunctions.---------- % ----------------Begin of Kannada Vowel modifed Consonants(special)---------- def CVKE = stest(cvke); kanchar "consonant+vowel ka+e"; begintchar(cv_ke_code,cb_ka_width#,x_height#+vm_e_heightj#,0,0,0,0); cb_ka_form; undraw bar_pa; %cb_ka_pc; vm_e_form_a(8,.1u, .3u); %sketch vm_e_p; path vm_e_pa,vm_e_pb,vm_e_pc ; vm_e_pa = cb_ka_pc softjoin vm_e_p; sketch vm_e_pa; endtchar; etest; enddef; def CVKHE = stest(cvkhe); kanchar "consonant+vowel kha+e"; begintchar(cv_khe_code,cb_kha_width#,x_height#+vm_e_heightj#,0,0,0,0); cb_kha_form; sketch cb_kha_p; vm_e_form_a(11,.6u, 1.u); path vm_e_pa,vm_e_pb,vm_e_pc ; vm_e_pa = vm_e_p reflectedabout(z11, z11+(.1u, .8u)); vm_e_pb = vm_e_pa reflectedabout(z11, z11+(-.45u, .8u)); %sketch cb_kha_p softjoin vm_e_pb ; sketch vm_e_pb ; pivot_message(1.99u); endtchar; etest; enddef; def CVGE= stest(cvge); kanchar "consonant+vowel e ga+e"; begintchar(cv_ge_code,cb_ga_width#,x_height#+2ascunit#,0,0,0,0); cb_ga_form; sketch cv_ge_p; sketch cb_ga_p; %vm_e_form; endtchar; etest; enddef ; def CVGHE = stest(cvghe); kanchar "base of consonant gha+ Vowel modifer e"; begintchar(cv_ghe_code,cb_pa_width#+1/2vm_u_width#,x_height#+.8u#,wedge_depth#,0,0,0); cb_pa_form; top lft z77=(1/2cb_pa_width-1/2c_height, top (x_height - c_height)); %place_lit_circ(77, 1); path new_path ; sketch cb_pa_p ; top z10=1/2[z46,z46]; wedge(10); vm_ghu_form(48); vm_e_form; undraw vm_e_p; path ct; ct = vm_e_p scaled .75 shifted (2u, -u) rotated 0 ; sketch ct; %pivot_message(x301,x400); endtchar; etest; enddef ; def CVCHE = stest(cvche); kanchar "consonant+vowel e cha+e"; begintchar(cv_che_code,cb_ja_width#,x_height#,0,0,0,0); cb_ch_form; vm_e_form_a(9,.6u, 1.u); undraw cb_cha_pc ; path vm_e_pa,vm_e_pb,vm_e_pc ; vm_e_pa = vm_e_p reflectedabout(z9, z9+(.1u, .8u)); vm_e_pb = vm_e_pa reflectedabout(z9, z9+(-.1u, .8u)); sketch vm_e_pb ; pivot_message(.199u); endtchar; etest; enddef ; def CVCCHE= stest(cvcche); kanchar "consonant+vowel e ccha+e"; begintchar(cv_cche_code,cb_ja_width#,x_height#+2.6u#,0,0,0,0); cb_cch_form; wedge(8); vm_e_form_a(11,.6u, 1.u); path vm_e_pa,vm_e_pb,vm_e_pc ; vm_e_pa = vm_e_p reflectedabout(z11, z11+(.1u, .8u)); vm_e_pb = vm_e_pa reflectedabout(z11, z11+(-.28u, .8u)); sketch vm_e_pb ; pivot_message(.199u); endtchar; etest; enddef ; def CVJE = stest(cvje); kanchar "consonant+vowel e cbja+e"; begintchar(cv_je_code,cb_ja_width#,x_height#+1.5u#,0,0,0,0); cb_ja_form; sketch cb_ja_pe; % puts bowl to ja. %pivot_message(x3c,x7); pivot_message(.199u); endtchar; etest; enddef ; def CVJHE = stest(cvjhe); kanchar "consonant+vowel e cbjha+e"; begintchar(cv_jhe_code,cb_ra_width#+2vm_u_width#,.9vm_e_heightx#, 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; sketch cv_re_p; undraw bar_pa; endtchar; etest; enddef; def CVTTE= stest(cvtte); kanchar "consonant+vowel e cbtta+e"; begintchar(cv_tte_code,cb_tta_width#,x_height#,0,0,0,0); cb_tta_form; undraw cb_tta_p ; sketch cb_tta_pe ; endtchar; etest; enddef ; def CVTTHE = stest(cvtthe); kanchar "consonant+vowel e cbttha+e"; begintchar(cv_tthe_code,cb_ra_width#,.9vm_e_heightx#,0,0,0,0); cb_ra_form; undraw bar_pa; z10 = (x1,1/2x_height); fill_dot(10); sketch cv_re_p; %pivot_message(x1,x1); pivot_message(.199u); endtchar; etest; enddef ; def CVDDE= stest(cvdde); kanchar "consonant+vowel e cbdda+e"; begintchar(cv_dde_code,cb_da_width#,x_height#+1.7u#,0,0,0,0); cb_dda_form; undraw bar_pa ; sketch cv_dde_p ; %pivot_message(x1,x4); endtchar; etest; enddef ; def CVDDHE= stest(cvddhe); kanchar "consonant+vowel e cbddha+e"; begintchar(cv_ddhe_code,cb_da_width#,x_height#+1.7u#,0,0,0,0); cb_dda_form; sketch cv_dde_p ; undraw bar_pa ; wedge(3); %pivot_message(x1,x4); endtchar; etest; enddef ; def CVTE= stest(cvte); kanchar "consonant+vowel e cbta+e"; begintchar(cv_te_code,cb_ta_width#,x_height#,0,0,0,0); cb_ta_form; sketch cb_te_p; undraw bar_pa ; %pivot_message(x10,x5); pivot_message(.199u); endtchar; etest; enddef ; def CVTHE= stest(cvthe); kanchar "consonant+vowel e cbtha+e"; begintchar(cv_the_code,cb_da_width#,x_height#+1.9u#,wedge_depth#,0,0,0); cb_da_form; undraw bar_pa ; wedge(4); z10 = (x1,2/3x_height-uh); fill_dot(10); %pivot_message(x1,x4); pivot_message(.199u); sketch cv_de_p; endtchar; etest; enddef ; def CVDE= stest(cvde); kanchar "consonant+vowel e cbda+e"; begintchar(cv_de_code,cb_da_width#,x_height#+1.9u#,0,0,0,0); cb_da_form; undraw bar_pa ; sketch cv_de_p; %pivot_message(x1,x4); endtchar; etest; enddef ; def CVDHE= stest(cvdhe); kanchar "consonant+vowel e cbda+e"; begintchar(cv_dhe_code,cb_da_width#,x_height#+1.9u#,0,0,0,0); cb_da_form; undraw bar_pa ; sketch cv_de_p; wedge(4); %pivot_message(x1,x4); pivot_message(.199u); endtchar; etest; enddef ; def CVNE= stest(cvne);kanchar "consonant+vowel e cbna+e"; begintchar(cv_ne_code,cb_na_width#,x_height#,wedge_depth#,0,0,0); cb_na_form; sketch cb_ne_p; undraw bar_pa ; %pivot_message(x6,x6); pivot_message(.199u); endtchar; etest; enddef ; def CVPE= stest(cvpe); kanchar "consonant pa+ e"; begintchar(cv_pe_code,cb_pa_width#,x_height#+.8u#,0,0,0,0); cb_pa_form; top lft z77=(1/2cb_pa_width-1/2c_height, top (x_height - c_height)); sketch cb_pa_p; vm_e_form; undraw vm_e_p; path ct; ct = vm_e_p scaled .75 shifted (2u, -.5u) rotated 0 ; sketch ct; %pivot_message(x301,x400); endtchar; etest; enddef ; def CVPHE= stest(cvphe); kanchar "consonant pha+ e"; begintchar(cv_phe_code,cb_pa_width#,x_height#+.8u#,0,0,0,0); cb_pa_form; top lft z77=(1/2cb_pa_width-1/2c_height, top (x_height - c_height)); sketch cb_pa_p; top z10=1/2[z46,z46]; wedge(10); vm_e_form; undraw vm_e_p; path ct; ct = vm_e_p scaled .75 shifted (2u, -.5u) rotated 0 ; sketch ct; %pivot_message(x301,x400); endtchar; etest; enddef ; def CVBE= stest(cvbe); kanchar "consonant+vowel e cbba+e"; begintchar(cv_be_code,cb_ba_width#,x_height#+1u#,0,0,0,0); cb_ba_form; undraw cb_ba_p; sketch cb_be_p; pivot_message(.199u); endtchar; etest; enddef ; def CVBHE= stest(cvbhe); kanchar "consonant+vowel e cbbha+e"; begintchar(cv_bhe_code,cb_ba_width#,x_height#+1u#,0,0,0,0); cb_ba_form; undraw cb_ba_p; sketch cb_be_p; wedge(6); pivot_message(.199u); endtchar; etest; enddef ; def CVME= stest(cvme); kanchar "consonant+vowel e cbma+e"; begintchar(cv_me_code,cb_pa_width#+vm_u_width#,x_height#,0,0,0,0); cb_va_form; sketch cb_ve_p; z65 = (cb_va_p) intersectionpoint ((x46,.8w_height)--(x46+cb_pa_width,.8w_height)); vm_u_form(65); undraw bar_pa ; %w:=rt x3b; pivot_message(.199u); endtchar; etest; enddef ; def CVYE= stest(cvye); kanchar "consonant+vowel e cbya+e"; begintchar(cv_ye_code,cb_ya_width#+vm_u_width#,x_height#+1.5u#,0,0,0,0); cb_ya_form; undraw cb_ya_pb ; undraw bar_p ; draw cb_ye_p ; endtchar; etest; enddef; def CVRE = stest(cvre); kanchar "consonant+vowel e cbra+e"; begintchar(cv_re_code,cb_ra_width#,x_height#,0,0,0,0); cb_ra_form; sketch cv_re_p; undraw bar_pa ; pivot_message(.199u); endtchar; etest; enddef ; def CVLE = stest(cvle); kanchar "consonant+vowel e cbla+e"; begintchar(cv_le_code,cb_la_width#,x_height#+1u#,0,0,0,0); cb_la_form; sketch cb_le_p; pivot_message(.199u); endtchar; etest; enddef ; def CVCE= stest(cvce); kanchar "consonant+vowel e cbca+e"; begintchar(cv_ce_code,cb_ca_width#,x_height#,0,0,0,0); cb_ca_form; draw cb_ce_p; undraw bar_pa ; pivot_message(.199u); endtchar; etest; enddef ; def CVLLE = stest(cvlle); kanchar "consonant+vowel e cblla+e"; begintchar(cv_lle_code,cb_lla_width#,x_height#,0,0,0,0); cb_lla_form; sketch cb_lle_p; pivot_message(.199u); endtchar; etest; enddef ; def CVVE= stest(cvve); kanchar "consonant+vowel e cbma+e"; begintchar(cv_ve_code,cb_pa_width#,x_height#,0,0,0,0); cb_va_form; sketch cb_ve_p; z65 = (cb_va_p) intersectionpoint ((x46,.8w_height)--(x46+cb_pa_width,.8w_height)); undraw bar_pa ; pivot_message(.199u); endtchar; etest; enddef ; def CVVU= stest(cvvu); kanchar "consonant va+u"; begintchar(cv_vu_code,cb_pa_width#+.6vm_u_width#,x_height#,.5des_depth#,0,0,0); cb_va_form; sketch cb_va_p ; %pivot_message(x46,x400); cv_vu_form(46); pivot_message(x301); endtchar; etest; enddef ; def CVVUU= stest(cvvuu); kanchar "consonant va+uu"; begintchar(cv_vuu_code,cb_pa_width#+.8vm_uu_width#,x_height#,.5des_depth#,0,0,0); cb_va_form; sketch cb_va_p ; cv_vuu_form(46); pivot_message(x301); endtchar; etest; enddef ; def CVSHE= stest(cvshe); kanchar "consonant sha+e"; begintchar(cv_she_code,cb_pa_width#,x_height#+.8u#,0,0,0,0); cb_sha_form; sketch cb_pa_p; sketch cb_sha_pb; undraw pl_lit_cir_p ; undraw bar_pa; %cb_ka_pc; vm_e_form; undraw vm_e_p; path ct; ct = vm_e_p scaled .75 shifted (2u, -.5u) rotated 0 ; sketch ct; pivot_message(x301,x400); endtchar; etest; enddef ; def CVSE = stest(cvse); kanchar "consonant sa+e"; begintchar(cv_se_code,cb_na_width#,x_height#+.8u#,0,0,0,0); cb_sa_form; sketch cb_sa_p; undraw pl_lit_cir_p ; undraw bar_pa; %cb_ka_pc; vm_e_form; undraw vm_e_p; path ct; ct = vm_e_p scaled .75 shifted (1.8u, -.5u) rotated 0 ; sketch ct; pivot_message(.199u); endtchar; etest; enddef ; def CVHE = stest(cvhe); kanchar "consonant ha+e"; begintchar(cv_he_code,cb_ha_width#,x_height#+1.8u#,0,0,0,0); cb_ha_form; vm_e_form; undraw bar_pa; %cb_ka_pc; undraw cb_ha_pa ; undraw vm_e_p; path ct; ct = vm_e_p scaled .75 shifted (.26u, +.5u) rotated 0 ; sketch ct; pivot_message(x301,x400); endtchar; etest; enddef ; def CVKSHE = stest(cvkshe); kanchar "base of consonant ksha+vowel modifer e"; begintchar(cv_kshe_code,cb_ka_width#,x_height#,cb_ksha_depth#,0,0,0); cb_ksha_form; %sketch cb_kha_p; sketch cb_ka_pa; sketch cb_ka_pb; sketch cb_ka_pc; undraw bar_pa; %cb_ka_pc; vm_e_form_a(8,.1u, .3u); %sketch vm_e_p; path vm_e_pa,vm_e_pb,vm_e_pc ; vm_e_pa = cb_ka_pc softjoin vm_e_p; sketch vm_e_pa; pivot_message(x301,x400); endtchar; etest; enddef ; % ----------------End of Kannada Vowel modifed Consonants(special)---------- % ---------- start of ubayaksharas ----------- %stest(uas); kanchar "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(uss); kanchar "accent s"; begintchar(u_uss_code,x_height#,x_height#,0,0,0,0); cb_dollar_form ; cc_clear; cc_transform(dol_p); cc_whd(1,0); endtchar; etest; stest(us); kanchar "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); kanchar "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); kanchar "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); kanchar "accent avagraha"; %begintchar(u_avagraha_code,kfig_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 ---------- %----------- Begin of bars used for transliteration of vedic hymns------------- stest(buone); kanchar "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); kanchar "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); kanchar "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; %----------- end of fonts for vedic hymns--------------- % kannada digits and punctuation symbols % % --------- start of roman digits ------------ def DRZERO = stest(drzero); kanchar "Roman digit zero"; begintchar(dr_zero_code,7u#,fig_height#,0,0,0,ur#); top z1=(w/2,h); lft z2=(0,1/2h); bot z3=(w/2,0); rt z4=(w,1/2h); sketch superellipse(z4,z1,z2,z3,0.707); endtchar; etest; enddef; def DRONE = stest(drone); kanchar "Roman digit one"; begintchar(dr_one_code,4u#,fig_height#,0,0,0,ur#); bot lft z1=(0,0); bot rt z2=(w,0); top z3=(x5,h); lft z4=(x1,x_height+uh); bot z5=1/2[z1,z2]; sketch z1--z2; sketch z3--z5; sketch z4..{up}z3; endtchar; etest; enddef; def DRTWO = stest(drtwo); kanchar "Roman digit two"; begintchar(dr_two_code,7u#,fig_height#,0,0,0,ur#); bot lft z1=(0,0); bot rt z2=(w,0); lft z3=(0,x_height); top z4=(w/2,h); rt z5=(w,y3); sketch z1--z2; sketch z3..z4..z5..{-1,-1}z1; endtchar; etest; enddef; def DRTHREE = stest(drthree); kanchar "Roman digit three"; begintchar(dr_three_code,7u#,fig_height#,0,0,0,ur#); path pa; top lft z1=(0,3/4h); top z2=(w/2,h); rt z3=(w,y1); z4=(w/2-u,1/2h); pa= z1..z2..z3..{(-1,0)}z4; sketch pa; sketch pa reflectedabout (z4,(w,y4)); endtchar; etest; enddef; def DRFOUR = stest(drfour); kanchar "Roman digit four"; begintchar(dr_four_code,7u#,fig_height#,0,0,0,ur#); bot z1=(w-1.5u,0); top z2=(x1,h); lft z3=(0,w_height); rt z4=(w,y3); bot z1a=(x1-(x4-x1),0); bot z1b=(x4,0); sketch z1a--z1b; sketch z1--z2; sketch z3--z2; sketch z3--z4; penlabels(1a,1b); endtchar; etest; enddef; def DRFIVE = stest(drfive); kanchar "Roman digit five"; begintchar(dr_five_code,7u#,fig_height#,0,0,0,ur#); top rt z1=(w,h); top lft z2=(0,h); lft z3=(0,6/10h); z4=(1/2w,y3+uh); rt z5=(w,(y4+y6)/2); bot z6=(x4,0); lft z7=(0,1/4h); sketch z1--z2; sketch z2--z3; sketch z3..z4..z5..z6..z7; endtchar; etest; enddef; def DRSIX = stest(drsix); kanchar "Roman digit six"; begintchar(dr_six_code,6u#,fig_height#,0,0,0,ur#); dr_sixnine_form; sketch dr_sixnine_p; endtchar; etest; enddef; def DRSEVEN = stest(drseven); kanchar "Roman digit seven"; begintchar(dr_seven_code,7u#,fig_height#,0,0,0,ur#); top lft z1=(0,h); top rt z3=(w,h); bot z4=(1/4w,0); sketch z1--z3{(-1,-1)}..{down}z4; endtchar; etest; enddef; def DREIGHT = stest(dreight); kanchar "Roman digit eight"; begintchar(dr_eight_code,7u#,fig_height#,0,0,0,ur#); top z1=(w/2,h); z2=(x1,0.6h); bot z3=(x1,0); lft z4=(0,y2/2); rt z5=(w,y4); z6=(x4+u,1/2(y1+y2)); z7=(w-u,y6); sketch superellipse(z7,z1,z6,z2,0.707); sketch superellipse(z5,z2,z4,z3,0.707); endtchar; etest; enddef; def DRNINE = stest(drnine); kanchar "Roman digit nine"; begintchar(dr_nine_code,6u#,fig_height#,0,0,0,ur#); dr_sixnine_form; bot lft z10 = z1; sketch dr_sixnine_p rotatedaround(z10,-180) shifted(-w,-h); endtchar; etest; enddef; %---------------------end of roman digits------------------------ % ------------- start of kannada digits ------------ def DKZERO = stest(dkzero); kanchar "kannada digit zero"; begintchar(dk_zero_code,kfig_width#,kfig_height#,0,0,0,ur#); top z1=(w/2,h); lft z2=(0,h/2); bot z3=(x1,0); rt z4=(w,y2); sketch superellipse(z4,z1,z2,z3,0.707); endtchar; etest; enddef; def DKONE = stest(dkone); kanchar "kannada digit one"; begintchar(dk_one_code,kfig_width#,kfig_height#,0,0,0,ur#); bot z1=(w/4,0); lft z2=(0,h/2); top z3=(w/2,h); rt z4=(w,h/2); bot z5=(w-(w/4),0); sketch z1..tension 1.2..z2..z3..z4..tension 1.2..z5; endtchar; etest; enddef; def DKTWO = stest(dktwo); kanchar "kannada digit two"; begintchar(dk_two_code,kfig_width#,kfig_height#,0,0,0,ur#); z1=(3w/5+.75u,5h/6); z2=(x1-.75u,4h/6); z3=(w/2,y1); top z4=(x1,h); z5=((x8+x1)/2,y3); bot z6=(x1,0); bot lft z7=(0+u,0);rt z8=(w,h/2); sketch z1..z2..z3..z4..z8..{(-1,0)}z6--z7; endtchar; etest; enddef; def DKTHREE = stest(dkthree); kanchar "kannada digit three"; begintchar(dk_three_code,kfig_width#-2u#,kfig_height#,0,0,0,ur#); path pa; %lft z1=(0,4h/5); top z2=(w/2,h); top z3=(4w/5,h); %rt z4=(w,3h/4); z5=(3w/4,h/2); z6=(w/3,h/2); %pa= z1..z2..z3..z4..z5; %sketch pa; sketch pa reflectedabout(z5,z6); %sketch z5--z6; cb_kha_form; path dkg_three ; dkg_three = z1..z2..z3..z4..z5..z6..z7..z8..z9; sketch dkg_three ; endtchar; etest; enddef; def DKFOUR = stest(dkfour); kanchar "kannada digit four"; begintchar(dk_four_code,kfig_width#-2u#,kfig_height#,0,0,0,ur#); %top z1=(w/5,h); lft z2=(0,2h/3); z4=(w/2,h/3); %bot z5=(x4,0); z3=(w/3,1/2(y4+y5)); %forsuffixes s=6,7,8: % z.s=z.[s-5] reflectedabout(z4,z5); endfor; %sketch z1..z2..z4..z7..z6; %sketch z4..z3..z5..z8..z4; cb_lla_form; sketch cb_lla_p ; endtchar; etest; enddef; def DKFIVE = stest(dkfive); kanchar "kannada digit five"; begintchar(dk_five_code,kfig_width#,kfig_height#,0,0,0,ur#); %lft z1=(0,8h/10); lft z2=(0,3h/10); z3=(2w/3,(y1+y2)/2); %top z11=(w/3,h); z12 = z11 reflectedabout ((0,y3),(w,y3)); %sketch z1..z11..z3..z12..z2; %top z4=(x3+(w-x3)/2,h); %rt z5=(w,(y3+y4)/2); %bot z7=(x4,0); rt z8=(x9,y9-uh); rt z9=(w,y2); %sketch z3..z5..z4..z3..z7..z8..z9; dk_five_form ; endtchar; etest; enddef; def DKSIX = stest(dksix); kanchar "kannada digit six"; begintchar(dk_six_code,kfig_width#,kfig_height#,0,0,0,ur#); dk_six_form; endtchar; etest; enddef; def DKSEVEN = stest(dkseven); kanchar "kannada digit seven"; begintchar(dk_seven_code,kfig_width#-2u#,kfig_height#,0,0,0,ur#); %lft z1=(0,3h/4); top z2=(w/2,h); rt z3=(w,y1); z4=(w/2,h/2); %forsuffixes i=6,7,8: % z.i=z.[i-5] rotatedaround (z4,0); %endfor; z1 = (.5w, .75h) ; top z2 = (.3w, .95h) ; top z3 = (x1+u, y1) ; lft z4 = (0, .2h) ; bot z5 = (.1w, 0) ; bot z6 = (w, 0) ; sketch z1..z2..z3..tension 1.1..z4...z5--z6 ; endtchar; etest; enddef; def DKEIGHT = stest(dkeight); kanchar "kannada digit eight"; begintchar(dk_eight_code,kfig_width#+u#,kfig_height#,0,0,0,ur#); z1 =(.2w, .75h) ; top z2 = (.3w, h) ; z2a = (.075w, .75h) ; lft z3 = (.0w, .5h) ; bot z4 = (.35w, .03h ) ; rt z5 = (.9w, .45h) ; z6 = (.7w, .8h) ; top z7 = (.75w, h) ; rt top z8 = (w, h) ; sketch z1..z2..z2a..z3..z4...z5..z6...z7--z8 ; sketch z1 ; sketch z2; sketch z3; sketch z4 ; ;sketch z5; sketch z6; sketch z7; endtchar; etest; enddef; def DKNINE = stest(dknine); kanchar "kannada digit nine"; begintchar(dk_nine_code,kfig_width#,kfig_height#,0,0,0,ur#); rt top z1 = (w, h) ; top z2 = (.25w, h) ; z2a = (.05w, .9h) ; lft z3 = (0, .75h) ; z4 = (.2w, .4h) ; z6 = (x4, .6h) ; z5 = ( .35w, (y4+y6)/2) ; lft z7 = (0, .25h) ; bot z8 = (.2w, 0) ; bot z9 = (.3w, 0 ) ; sketch z1---z2..z3..z4..z5..z6..z7...z8---z9 ; endtchar; etest; enddef; % end of kannada digits % --------- start of punctuation ---------- def PPERIOD = stest(pperiod); kanchar "punctuation period"; begintchar(p_period_code,2*dot_radius#,2*dot_radius#,0,0,0,ur#); z1=(dot_radius,dot_radius); fill_dot(1); endtchar; etest; enddef; def PCOMMA = stest(pcomma); kanchar "punctuation comma"; begintchar(p_comma_code, p_comma_width#,2*dot_radius#,des_depth#,0,0,ur#); p_comma_form; endtchar; etest; enddef; def PEQUAL = stest(pequal); kanchar "punctuation equal"; begintchar(p_equal_code,10u#,3/4x_height#,0,0,0,ur#); top lft z1=(0,h); top rt z2=(w,h); bot lft z3=(0,1/4x_height); bot rt z4=(w,1/4x_height); sketch z1--z2; sketch z3--z4; endtchar; etest; enddef; def PBAR = stest(pbar); kanchar "punctuation vertical bar"; begintchar(p_bar_code,u#,x_height#,0,0,0,ur#); p_bar_form; sketch p_bar_p; endtchar; etest; enddef; def PDBAR = stest(pdbar); kanchar "punctuation double bar"; begintchar(p_dbar_code,2.5u#,x_height#,0,0,0,ur#); p_bar_form; sketch p_bar_p;sketch p_bar_p reflectedabout ((w/2,0),(w/2,h)); endtchar; etest; enddef; def PCOLON = stest(pcolon); kanchar "punctuation colon"; begintchar(p_colon_code,2*dot_radius#,x_height#,0,0,0,ur#); z1=(dot_radius,dot_radius); fill_dot(1); z2=(x1,x_height-dot_radius); fill_dot(2); endtchar; etest; enddef; def PSCOLON = stest(pscolon); kanchar "punctuation semicolon"; begintchar(p_scolon_code,p_comma_width#,x_height#,des_depth#,0,0,ur#); p_comma_form; z5=(x1,x_height-dot_radius); fill_dot(5); endtchar; etest; enddef; def PCQUOTE = stest(pcquote); kanchar "punctuation closing quote"; begintchar(p_cquote_code,p_comma_width#,asc_height#,0,0,0,ur#); p_comma_form; erase fill fill_dot_p; erase sketch p_comma_p; fill fill_dot_p shifted (0,asc_height-2*dot_radius); sketch p_comma_p shifted (0,asc_height-2*dot_radius); endtchar; etest; enddef; def PCQUOTES = stest(pcquotes); kanchar "punctuation closing quotes"; begintchar(p_cquotes_code,2*p_comma_width#+u#,asc_height#,0,0,0,ur#); p_comma_form; erase fill fill_dot_p; erase sketch p_comma_p; fill fill_dot_p shifted (0,asc_height-2*dot_radius); sketch p_comma_p shifted (0,asc_height-2*dot_radius); fill fill_dot_p shifted (0,asc_height-2*dot_radius) shifted (p_comma_width+u,0); sketch p_comma_p shifted (0,asc_height-2*dot_radius) shifted (p_comma_width+u,0); endtchar; etest; enddef; def POQUOTE = stest(poquote); kanchar "punctuation opening quote"; begintchar(p_oquote_code,p_comma_width#,asc_height#,0,0,0,ur#); p_comma_form; erase fill fill_dot_p; erase sketch p_comma_p; lft z5 = z2; top rt z6 =z3; fill fill_dot_p rotatedaround (z5,-180) shifted(-x5,asc_height-abs(y6)); sketch p_comma_p rotatedaround (z5,-180) shifted(-x5,asc_height-abs(y6)); endtchar; etest; enddef; def POQUOTES = stest(poquotes); kanchar "punctuation opening quotes"; begintchar(p_oquotes_code,2*p_comma_width#+u#,asc_height#,0,0,0,ur#); p_comma_form; erase fill fill_dot_p; erase sketch p_comma_p; lft z5 = z2; top rt z6 =z3; fill fill_dot_p rotatedaround (z5,-180) shifted(-x5,asc_height-abs(y6)); sketch p_comma_p rotatedaround (z5,-180) shifted(-x5,asc_height-abs(y6)); fill fill_dot_p rotatedaround (z5,-180) shifted(-x5,asc_height-abs(y6)) shifted(p_comma_width+u,0); sketch p_comma_p rotatedaround (z5,-180) shifted(-x5,asc_height-abs(y6)) shifted(p_comma_width+u,0); endtchar; etest; enddef; def PDQUOTES = stest(pdquotes);kanchar "punctuation double quotes"; begintchar(p_dquotes_code,4.5u#,asc_height#,0,0,0,ur#); top lft z1=(1.5u,h); bot lft z2=(0,x_height); top rt z3=(w,h); bot rt z4=(x1+1.5u,x_height); sketch z1--z2; sketch z3--z4; endtchar; etest; enddef; %stest(pdquotes);kanchar "punctuation double quotes"; %begintchar(p_dquotes_code,2*dot_radius#+u#,asc_height#,0,0,0,ur#); %%begintchar(p_dquotes_code,4*dot_radius#+u#,asc_height#,0,0,0,ur#); %path pa; %%z1=(dot_radius,h-dot_radius);z1l=(0,y1);z1r=(2x1,y1);z1t=(x1,h); %z1=(dot_radius/2,h-dot_radius/2);z1l=(0,y1);z1r=(2x1,y1);z1t=(x1,h); %z2=(x1,x_height); %%z2=(x1,x_height);z2l=(dot_radius/2,y2);z2r=(x2+(x2-x2l),y2); %%pa= z2l--z1l & flex(z1l,z1t,z1r) & z1r--z2r--cycle; fill pa; %pa= z2--z1l & flex(z1l,z1t,z1r) & z1r--z2--cycle; filldraw pa; %filldraw pa shifted(dot_radius+u,0); %%fill pa shifted(2dot_radius+u,0); %endtchar; etest; def PSLASH = stest(pslash); kanchar "punctuation virgule (slash)"; begintchar(p_slash_code,6u#,asc_height#,des_depth#,0,0,ur#); p_slash_form; sketch p_slash_p; endtchar; etest; enddef; def PHASH = stest(phash); kanchar "punctuation hash mark (number sign)"; begintchar(p_hash_code,12u#,asc_height#,des_depth#,0,0,ur#); numeric midpoint; midpoint = (-des_depth+asc_height)/2; lft z1=(0,midpoint+2u); rt z2=(w,y1); lft z3=(0,midpoint-2u); rt z4=(w,y3); bot z5=(2u,-d); top z6=(x5+4u,h); z7=(x5+4u,y5); z8=(x7+4u,y6); sketch z1--z2; sketch z3--z4; sketch z5--z6; sketch z7--z8; endtchar; etest; enddef; %stest(pexcla); kanchar "punctuation exclamation point"; %begintchar(p_excla_code,dot_radius#,asc_height#,0,0,0,ur#); %pickup pencircle; %z1=(dot_radius/2,dot_radius/2); %filldraw fullcircle scaled 2x1 shifted z1; %z2=(x1,5*y1); z3 =(x1,h-y1); %z2l=(x1-dot_radius/4,y2); z2r=(x1+dot_radius/4,y2); %z3l=(0,y3); z3r=(x1+dot_radius/2,y3); z3t=(x1,h); %filldraw z2l--z3l & flex(z3l,z3t,z3r) & z3r--z2r--cycle; %endtchar; etest; def PEXCLA = stest(pexcla); kanchar "punctuation exclamation point"; begintchar(p_excla_code,dot_radius#,asc_height#,0,0,0,ur#); z1=(dot_radius,dot_radius); fill_dot(1); fill fullcircle scaled 2x1 shifted z1; top z2=(x1,h); bot z3 =(x1,4*y1); sketch z2--z3; endtchar; etest; enddef; def PASTERISK = stest(pasterisk); kanchar "punctuation asterisk"; begintchar(p_asterisk_code,x_height#,x_height#,0,0,0,ur#); z1=(1/2w,1/2h); for d=30 step 60 until 330: z[d]=z1+0.5 dir d xscaled w yscaled h; sketch z1--z[d]; penlabels(z[d]); endfor; endtchar; etest; enddef; def PPLUS = stest(pplus); kanchar "punctuation plus"; begintchar(p_plus_code,x_height#,x_height#,0,0,0,ur#); lft z1=(0,h/2); rt z2=(w,y1); top z3=(w/2,h); bot z4=(x3,0); sketch z1--z2; sketch z3--z4; endtchar; etest; enddef; def PLBRACKET = stest(plbracket); kanchar "punctuation left bracket"; begintchar(p_lbracket_code,3u#,top_height#,bot_depth#,0,0,ur#); p_lbracket_form; sketch p_lbracket_p; endtchar; etest; enddef; def PRBRACKET = stest(prbracket); kanchar "punctuation right bracket"; begintchar(p_rbracket_code,3u#,top_height#,bot_depth#,0,0,ur#); p_lbracket_form; sketch p_lbracket_p shifted (-w,0) reflectedabout ((0,0),(0,h)); endtchar; etest; enddef; def PLPAREN = stest(plparen); kanchar "punctuation left parenthesis"; begintchar(p_lparen_code,3u#,top_height#,bot_depth#,0,0,ur#); p_rparen_form; sketch p_rparen_p shifted (-w,0) reflectedabout ((0,0),(0,h)); endtchar; etest; enddef; def PRPAREN = stest(prparen); kanchar "punctuation right parenthesis"; begintchar(p_rparen_code,3u#,top_height#,bot_depth#,0,0,ur#); p_rparen_form; sketch p_rparen_p; endtchar; etest; enddef; def PLBRACE = stest(plbrace); kanchar "punctuation left brace"; begintchar(p_lbrace_code,4u#,top_height#,bot_depth#,0,0,ur#); p_lbrace_form; sketch p_lbrace_p; endtchar; etest; enddef; def PRBRACE = stest(prbrace); kanchar "punctuation right brace"; begintchar(p_rbrace_code,4u#,top_height#,bot_depth#,0,0,ur#); p_lbrace_form; sketch (p_lbrace_p shifted (-w,0) reflectedabout ((0,0),(0,h)) ); endtchar; etest; enddef; def PPERCENT = stest(ppercent); kanchar "punctuation percent sign"; begintchar(p_percent_code,6u#,asc_height#,des_depth#,0,0,ur#); p_slash_form; sketch p_slash_p; z3=(3(x1+x2)/8,-d+7/8(h+d)); z4=(w-x3,-d+(h-y3)); sketch fullcircle scaled (1.5u) shifted z3; sketch fullcircle scaled (1.5u) shifted z4; endtchar; etest; enddef; def PBSLASH = stest(pbslash); kanchar "punctuation backslash"; begintchar(p_bslash_code,6u#,asc_height#,des_depth#,0,0,ur#); p_slash_form; sketch p_slash_p reflectedabout ((w/2,h),(w/2,0)); endtchar; etest; enddef; def PLBAR = stest(plbar); kanchar "punctuation long bar"; begintchar(p_lbar_code,u#,asc_height#,des_depth#,0,0,ur#); top z1=(w/2,h); bot z2=(x1,-d); sketch z1--z2; endtchar; etest; enddef; def PHYPHEN = stest(phyphen); kanchar "punctuation hyphen"; begintchar(p_hyphen_code,6u#,1/2x_height#,0,0,0,ur#); top lft z1=(0,h); top rt z2=(w,h); sketch z1--z2; endtchar; etest; enddef; def PLHYPHEN = stest(plhyphen); kanchar "punctuation long hyphen"; begintchar(p_lhyphen_code,9u#,1/2x_height#,0,0,0,ur#); top lft z1=(0,h); top rt z2=(w,h); sketch z1--z2; endtchar; etest; enddef; def PVLHYPHEN = stest(pvlhyphen); kanchar "punctuation very long hyphen"; begintchar(p_vlhyphen_code,15u#,1/2x_height#,0,0,0,ur#); top lft z1=(0,h); top rt z2=(w,h); sketch z1--z2; endtchar; etest; enddef; def PUBAR = stest(pubar); kanchar "punctuation underbar"; begintchar(p_ubar_code,x_height#,0,uh#,0,0,ur#); bot lft z1=(0,-d); bot rt z2=(w,-d); sketch z1--z2; endtchar; etest; enddef; def PQUESTION = stest(pquestion); kanchar "punctuation question mark"; begintchar(p_question_code,6u#,asc_height#,0,0,0,ur#); lft z1=(0,h-2dot_radius); top z2=(w/2,h); rt z3=(w,y1); z4=(x2,1/2x_height); z5=(x2,1/3(y2+y4)); z6=(x2,dot_radius);fill_dot(6); sketch z1..z2..z3..z5..tension 1.5..z4; endtchar; etest; enddef; def PDOLLAR = stest(pdollar); kanchar "punctuation dollar sign"; begintchar(p_dollar_code,cb_ka_width#,x_height#+1.5uh#,1.5uh#,0,0,ur#); cb_dollar_form; sketch dol_p ; top z11 = (w/2,h); bot z12 = (w/2,-d); sketch z11--z12; endtchar; etest; enddef; def PGREATER = stest(pgreater); kanchar "punctuation greater than"; begintchar(p_greater_code,7u#,x_height#,0,0,0,ur#); bot lft z1=(0,0); top lft z2=(0,x_height); rt z3=(w,1/2(y1+y2)); sketch z1--z3; sketch z2--z3; endtchar; etest; enddef; def PLESS = stest(pless); kanchar "punctuation less than"; begintchar(p_less_code,7u#,x_height#,0,0,0,ur#); bot rt z1=(w,0); top rt z2=(w,x_height); lft z3=(0,1/2(y1+y2)); sketch z1--z3; sketch z2--z3; endtchar; etest; enddef; def PAT = stest(pat); kanchar "punctuation at sign"; begintchar(p_at_code,10u#,asc_height#,0,0,0,ur#); z1=(w/2,3/4h); z2=(1/5w,1/2h); z3=(x1,1/4h); z4=(4/5w,5/8h); z5=(4/5w,3/8h); z6=(9/10w,y3); rt z7=(w,y2); top z8=(x1,h); lft z9=(0,y2); bot z10=(x1,0); rt z11=(x7,1/8h); sketch z5..z3..z2..z1..z4&z4--z5& z5..z6..z7{up}..{left}z8..z9..z10..z11; endtchar; etest; enddef; def PTILDE = stest(ptilde); kanchar "punctuation tilde sign"; begintchar(p_tilde_code,9u#,asc_height#,0,0,0,ur#); top lft z1=(0,asc_height2); top z2=(w/3,h); z3=(2/3w,y1); top rt z4=(w,y2); sketch z1..z2..z3..z4; endtchar; etest; enddef; def PHAT = stest(phat); kanchar "punctuation circumflex(hat)"; begintchar(p_hat_code,5u#,asc_height#,0,0,0,ur#); lft z1=(0,asc_height1); rt z2=(w,y1); top z3=(1/2(x1+x2),h); sketch z1--z3; sketch z3--z2; endtchar; etest; enddef; def PAMPERSAND = stest(pampersand); kanchar "punctuation ampersand"; begintchar(p_ampersand_code,11u#,asc_height#,0,0,0,ur#); rt z11=(w,1/4x_height); bot z10=(3/4w,0); z1=(x10+u,x_height); y1a=y1; x1-x1a=w-x1; rt z1b=(w,x_height); bot z2=(w/4,0);lft z3=(0,y11); z4=(w/8,1/2x_height+uh); z5=(x2,3/4x_height); z6=(w/2,asc_height1); top z7=(5/12w,h); z8=(5/24w,y6); %z9=(x7,1/2x_height); sketch z1a--z1b; sketch z1..{left}z2..z3..z4..z5..z6..z7..z8..z5..z10..z11; penlabels (1a,1b); endtchar; etest; enddef; % ---------------- end of punctuation ------------ %-------Begin of glyps to demonstrate conjunctions and vowel modifers----- def BOXA = stest(cbbb); kanchar "consonant blackbox(bb)"; %This is not really a letter in Kannada. 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; enddef ; def BOXB = stest(cbbo); kanchar "consonant outlinebox(bo)"; %This is not really a letter in Kannada. 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; enddef ; def BOXC = stest(cbbe); kanchar "consonant emptybox(be)"; %This is not really a letter in Kannada. 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; enddef ; %-------End of glyps to demonstrate conjunctions and vowel modifers----- % ----------------Begin of Misc glyphs for emotional expression-------------- def SMILE = stest(grin); kanchar "Grin face"; begintchar(kn_spla_code,7u#,x_height#+u#,0,0,0,0); top z1 = (w/2, h) ; rt z2 = (0, 1/2h) ; bot z3 = (x1, 0) ; lft z4 = (w, 1/2h) ; top z5 = (1/4w, 2/3h) ; top z6 = (3/4w, 2/3h) ; fill_dotb(5) ; fill_dotb(6) ; sketch z1..z2..z3..z4..z1 ; z7 = (x5+.15u, 1/3h); z8 = (w-x7, y7) ; z9 = ((x7+x8)/2, .2h) ; draw z7...z9...z8 ; endtchar; etest; enddef ; def FROWN = stest(weep); kanchar "Weep face"; begintchar(kn_splb_code,7u#,x_height#+u#,0,0,0,0); top z1 = (w/2, h) ; rt z2 = (0, 1/2h) ; bot z3 = (x1, 0) ; lft z4 = (w, 1/2h) ; top z5 = (1/4w, 2/3h) ; top z6 = (3/4w, 2/3h) ; fill_dotb(5) ; fill_dotb(6) ; sketch z1..z2..z3..z4..z1 ; z7 = (x5+.15u, 1/3h); z8 = (w-x7, y7) ; z9 = ((x7+x8)/2, .4h) ; draw z7...z9...z8 ; endtchar; etest; enddef ; % ----------------End of Misc glyphs for emotional expression--------------