diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/itrans')
31 files changed, 11023 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/itrans/kan12.mf b/Master/texmf-dist/fonts/source/public/itrans/kan12.mf new file mode 100644 index 00000000000..77c76cd2d2d --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kan12.mf @@ -0,0 +1,7 @@ +%kan12% +%input kanmode; +font_size 12pt#; +slant:=0; +pen_width#:=0.5pt#; +input kanmain; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/kan12b.mf b/Master/texmf-dist/fonts/source/public/itrans/kan12b.mf new file mode 100644 index 00000000000..24b4b8bcf21 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kan12b.mf @@ -0,0 +1,7 @@ +%kan12b% +%input kanmode; +font_size 12pt#; +slant:=0; +pen_width#:=0.68pt#; +input kanmain; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/kan12nx.mf b/Master/texmf-dist/fonts/source/public/itrans/kan12nx.mf new file mode 100644 index 00000000000..4c08daab7a8 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kan12nx.mf @@ -0,0 +1,10 @@ +%kan12nx% non-uniform pen(x-axis) +%input kanmode; +font_size 12pt#; +slant:=0; +pen_width#:=0.74pt#; +vardef special_kanpen = + pickup pencircle xscaled (pen_width/2) yscaled (pen_width); +enddef; +input kanmain; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/kan12ny.mf b/Master/texmf-dist/fonts/source/public/itrans/kan12ny.mf new file mode 100644 index 00000000000..7c75f240bd1 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kan12ny.mf @@ -0,0 +1,10 @@ +%kan12ny% non-uniform pen(y-axis) +%input kanmode; +font_size 12pt#; +slant:=0; +pen_width#:=0.65pt#; +vardef special_kanpen = + pickup pencircle xscaled pen_width yscaled (pen_width/2); +enddef; +input kanmain; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/kan12s.mf b/Master/texmf-dist/fonts/source/public/itrans/kan12s.mf new file mode 100644 index 00000000000..a06fd7485a8 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kan12s.mf @@ -0,0 +1,7 @@ +%kan12s% +%input kanmode; +font_size 12pt#; +slant:=1/4; +pen_width#:=0.61pt#; +input kanmain; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/kan18.mf b/Master/texmf-dist/fonts/source/public/itrans/kan18.mf new file mode 100644 index 00000000000..eaa54528774 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kan18.mf @@ -0,0 +1,7 @@ +%kan18% +%input kanmode; +font_size 18pt#; +slant:=0; +pen_width#:=0.86pt#; +input kanmain; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/kanbase.mf b/Master/texmf-dist/fonts/source/public/itrans/kanbase.mf new file mode 100644 index 00000000000..8aab7aeb8cf --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kanbase.mf @@ -0,0 +1,896 @@ +% This file is part of the KannadaTeX Software Package. +%Copyright (c) 1991 G.S. Jagadeesh & Venkatesh. Gopinath. +% +%Author: Modified from TeluguTex by, 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 several macros. These are used for setting +% up the environment and character generation. Before you change +% anything in this file you should be very clear about the impact +% of the change. +% + % when testing is false all symbols in the font are + % generated automatically else when testing is true + % only selected symbols will be generated. + + +if unknown testing:boolean testing; testing:=false; fi +showstopping := 1; % for debugging only +let kanchar=\; +let generate=input; +let sketch=draw; +let pos=penpos; +let stop=bye; +string tl_symname,tl_stra,tl_strb,tl_strc,tl_strw,tl_strx,tl_stry; + % contains the name of the symbol being created +tl_symname:=""; % used for creating substitute commands on log file +tl_stra:="OFFSETA{"; tl_strb:="OFFSETB{"; tl_strc:="OFFSETC{"; +tl_strw:="CODE{"; +tl_strx:="\def\";tl_stry:="}%"; + + +if testing: + %To test different characters use following definitions of + % stest and etest. + def stest (text s) = + quote def s = + enddef; + let etest=enddef; +else: + %To generate all the characters use following definitions of + % stest and etest. + def stest (text s) = + tl_symname := str s;% symbol name - used in various messages + enddef; + let etest=;; +fi; + +let ee:=end; + +% We should be very careful about implications of currenttransform +% (particularly 'slanted' transform). When a path is drawn/filled +% currenttransform is applied. When a transform is applied to +% currentpicture, the transform is really applied to slanted (or +% whatever currenttransform is) path. +def font_setup = + let adjust_fit = normal_adjust_fit; + currenttransform := currenttransform slanted slant; + define_pixels(u,v,uh,asc_height,des_depth,x_height); + define_pixels(pen_width,ul,ur,em_width); + + define_pixels(pen_thick,ul,ur,em_width); + + define_pixels(bot_depth,top_height); + define_pixels(fig_height,kfig_height,kfig_width); + define_pixels(ascunit,vmwidth); + define_pixels(top_accent,bot_accent); + define_pixels(bot_cc_ceiling,bot_cc_floor,bot_cc_width,ccwidth); + define_pixels(c_height,w_height,j_height); + define_pixels(asc_height1,asc_height2); + define_pixels(dot_radius,wedge_height,wedge_depth); + define_pixels(half_plus_width,sc_height); + + define_pixels(v_a_width,v_e_width,v_u_width, v_uu_width); + define_pixels(v_ro_width,v_ea_width,v_i_width); + + define_pixels(vm_a_width,vm_aa_width,vm_e_width,vm_ee_width,vm_e_height1); + define_pixels(vm_e_height2,vm_e_heightx,vm_e_heightj, vm_u_width, vm_uu_width); + define_pixels(vm_ro_width,vm_y_width,vm_bar_width, vm_ao_width,vm_aoo_width); + define_pixels(vm_ea_width, vm_ea_height, vm_ea1_width, vm_ah_height, vm_ah_width, vm_au_width); + + define_pixels(cb_ka_width,cb_kha_width,cb_ga_width,cb_cha_width); + define_pixels(cb_ja_width,cb_tta_width,cb_nna_width); + define_pixels(cb_ta_width,cb_da_width,cb_na_width); + define_pixels(cb_ba_width,cb_ya_width,cb_ra_width, cb_rra_width); + define_pixels(cb_la_width,cb_lla_width,cb_pa_width,cb_ca_width); + define_pixels(cb_sha_width,cb_ksha_width); + define_pixels(cb_ksha_depth); + define_pixels(cb_np_width,cb_vg_width, cb_ha_width); + + define_pixels(cv_pu_width,cv_pu_depth); + + define_pixels(p_comma_width); + + %define pen + if unknown special_kanpen: + pickup pencircle scaled pen_width; + %pickup pencircle xscaled 1/2pt yscaled 1/3 rotated -35; + %pickup pencircle yscaled pen_width xscaled pen_thick rotated 30 ; + kanpen:=savepen; + else: + special_kanpen; + kanpen:=savepen; + fi; + + %print titles if generating font + if unknown offsets_only: + tracingtitles:=1; + fi; +enddef; + +newinternal l,r; %adjustment to spacing + +def normal_adjust_fit(expr left_adjustment,right_adjustment) = + l := -hround(left_adjustment*hppp); + interim xoffset := -l; + charwd := charwd + left_adjustment + right_adjustment; + r := l+hround(charwd*hppp) ; + w := r - hround(right_adjustment*hppp) ; +enddef; + +def makebox(text rule) = + for y=0,asc_height,-des_depth,x_height,-bot_depth, + top_height,w_height,c_height, + j_height: rule((l,y)t_,(r,y)t_); % horizontal rules + endfor; + rule((0,h),(r+pen_width,h)); rule((0,-d),(r+pen_width,-d));%height,depth markers + for x=l,r:rule((x,-bot_depth)t_,(x,top_height)t_); % vertical + endfor; + for x=u*(1+floor(l/u)) step u until r-1: + rule((x,-bot_depth)t_,(x,top_height)t_); + endfor; % vertical lines at each u + if charic <> 0: + rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); + fi % italic correction +enddef; + +rulepen := pensquare; + +def begintchar(expr a,b,c,d,e,f,g) = + beginchar(a,b,c,d); + italcorr e; + if known offsets_only: + message tl_strx&tl_symname&tl_strw&decimal(a)&tl_stry; + fi; + numeric left_space,right_space,l_s,r_s; + l_s:=f; r_s:=g; + left_space:=hround(hppp*f); right_space:=hround(hppp*g); + pickup kanpen; + enddef; + +extra_endchar := extra_endchar&"w:=r-l;"; + +def endtchar = + charwd:=w/hppp; charht:= h/vppp; chardp:= d/vppp; + adjust_fit(l_s,r_s); + penlabels(range 1 thru 20); + message ""; + % If any special effects are needed then those should be + % defined as special_effects macro. + if known special_effects: special_effects; fi; + endchar; + enddef; + +% pivot_message macro is used to print offsets to certain points +% in the symbol being generated. These offsets are used by syllable +% building macros to allign vowel modifiers/consonant conjuncts. +% Unlike in english where all symbols stand alone, in Kannada +% various symbols in the font combine to form text. +% For consonant bases two/three offsets are identified. One is used to place +% vowel modifiers and the other is used to place consonant conjuncts(excluding +% those that appear on side). Third offset is used in attaching vowel modifiers +% in some special cases. Offsets have suffixes A,B and C. +% Vowel modifiers, accents and consonant +% conjuncts that appear above/below base consonant indicate one offset value. +% Same macro works in all cases. +% The messages are in the form of TeX macros. +% The log file contains TeX macros mixed with other messages. Use +% some pattern matching program like grep to eliminate all lines containing +% not begining with a \ sign. Name this file tloffsets. +% grep '^\\' xxxxx.log>tloffsets.tex +% The offsets are in em units. So the offsets would be same for any designsize +% and pen width combination. +% Print the offsets only when offsets are being generated. +if unknown offsets_only: % do not print offsets + def pivot_message (text t) = + enddef; +else: %print offsets + def pivot_message (text t) = + numeric count,piv[],index; + % count indicates the number of arguments + count:=0; + for index=t: count:=count+1; piv[count]:=index; endfor; + if count=1: + message tl_strx&tl_symname&tl_stra&decimal((piv[1]+left_space)/em_width)&tl_stry; + elseif count=2: + message tl_strx&tl_symname&tl_stra&decimal((piv[1]+left_space)/em_width)&tl_stry; + message tl_strx&tl_symname&tl_strb&decimal((piv[2]+left_space)/em_width)&tl_stry; + else: + message tl_strx&tl_symname&tl_stra&decimal((piv[1]+left_space)/em_width)&tl_stry; + message tl_strx&tl_symname&tl_strb&decimal((piv[2]+left_space)/em_width)&tl_stry; + message tl_strx&tl_symname&tl_strc&decimal((piv[3]+left_space)/em_width)&tl_stry; + + fi; + enddef; +fi;%end of if unknown offsets + +def fill_dot(suffix $) = + z$t = (x$,y$+dot_radius); + z$l = (x$-dot_radius,y$); + z$b = (x$,y$-dot_radius); + z$r = (x$+dot_radius,y$); + path fill_dot_p; + fill_dot_p = z$t..z$l..z$b..z$r..cycle; + fill fill_dot_p; + penlabels($t,$l,$b,$r); + enddef; + +def fill_dotb(suffix $) = + z$t = (x$,y$+.75dot_radius); + z$l = (x$-.75dot_radius,y$); + z$b = (x$,y$-.75dot_radius); + z$r = (x$+.75dot_radius,y$); + path fill_dot_p; + fill_dot_p = z$t..z$l..z$b..z$r..cycle; + fill fill_dot_p; + penlabels($t,$l,$b,$r); + enddef; + +def lit_cir_form = + lft z61l = (0,c_height/2); top z61t = (c_height/2,c_height); + rt z61 = (c_height,c_height/2); bot z61b = (c_height/2,0); + path lit_cir_p; + lit_cir_p = z61..z61t..z61l..z61b..cycle; + sketch lit_cir_p; + penlabels(61t,61l,61b); + enddef; + +def barandhook_formk (suffix $)(expr bar_width,t) = + z$a=(x$+bar_width-u,y$); rt z$b=(x$a+u,y$-uh); + bot z$c =(x$b-u,y$-2uh); lft z$d=(x$b-2u,y$b); + top z$e=(x$a-u,y$); rt z$f=(x$b,y$+1.5uh); + top z$g=(x$a,y$f+uh); z$h=(x$d,y$f); +path barandhook_p; +barandhook_p= subpath(0,t) of (rt z$--z$a..z$b..z$c..z$d..z$e..z$f..z$g..z$h); +sketch barandhook_p; +penlabels($a,$b,$c,$d); +enddef; + +def wedge(suffix $) = +bot z$w=(x$,-wedge_depth); + path wedge_p; + wedge_p = z$--z$w; + sketch wedge_p; + penlabels($u,$v,$w,$x,$y); + enddef; + + +def vm_hook_form (suffix $)(expr t) = + z$a = (x$,y$+1.5ascunit); + z$b = (x$+u,y$+3ascunit); + z$c = (x$+2u,y$+1.5ascunit); + sketch subpath (0,t) of (z$..z$a..z$b..z$c); + penlabels ($a,$b,$c); + h:=top y$b; +enddef; + + def v_a_form = + top z1=(1/4v_a_width,x_height); + z10=(x1-u,y1-uh); z11=(x1,y1-2(y1-y10)); + lft z3=(0,2/3x_height); bot z4=(1/2v_a_width,0); + rt z5=(v_a_width,2/3x_height); top z6=(v_a_width-1.5u,x_height); + z7=(3.5/5x5,1/2x_height); z8=(1/4w,1/2x_height); + z12=(.65v_a_width,5/6x_height); rt z2=(v_a_width,1/2x_height); + enddef; + +def v_e_form = + lft z1=(0,j_height); top z2=(1/5v_e_width,x_height); + z3=(2/5v_e_width,1.2j_height); top z4=(3/5v_e_width,x_height); + rt z5=(v_e_width,1/2x_height); z6=(4/5v_e_width,1/5x_height); + bot z7=(1/2v_e_width,0); z8=(1/5v_e_width,1/4x_height); + z9=(1/2v_e_width,1/2x_height); rt z10=(v_e_width,-1/5des_depth); + path v_e_p; + v_e_p = z1..z2..tension 1.2..z3&z3..tension 1.2..z4..z5..z6..z7..z8..z9..z10; + sketch v_e_p; + enddef; + +def v_u_form = + z1=(v_u_width-1/2w_height,1/2w_height); z2=(v_u_width-u,w_height); + rt z3=(v_u_width,1/6x_height); bot z4=(3/4v_u_width,0); + z5=(1/2v_u_width,w_height); bot z6=(1/3v_u_width,0); + lft z7=(0,1/2x_height); top z8=(1/2v_u_width,x_height); + top z9=(v_u_width-w_height,x_height); +path v_u_p; +v_u_p=z1..z2..z3..z4..tension 1.2..z5&z5..tension 1.2..z6..z7..z8..z9; +sketch v_u_p; + enddef; + +def v_lo_form = + lft z1=(0,j_height); top z2=(v_lo_width/5,x_height); + z3=(2/5v_lo_width,j_height); top z4=(3/5v_lo_width,x_height); + z5=(4/5v_lo_width,j_height); z6=(3/5v_lo_width,w_height); + bot z7=(4/5v_lo_width,0); rt z8=(v_lo_width,1/2x_height); + top z9=(9/10v_lo_width,x_height); + path v_lo_p; +v_lo_p= z1..z2..z3&z3..z4..z5..z6..z7..z8..z9; +sketch v_lo_p; + enddef; + +def v_ea_form = + lit_cir_form; + bot z2=(2/3v_ea_width,0); rt z3=(v_ea_width,1/3x_height); + z4=(2/3v_ea_width,4/5x_height);top z5=(1/3v_ea_width,x_height); +sketch z1..z2..z3..z4..z5; + enddef; + + def vm_a_form (suffix $) = + path vm_a_p ; + top lft z$a=(x$-2/5vm_a_width,asc_height1); + top rt z$b=(x$+3/5vm_a_width,asc_height); + z$c = z$; + vm_a_p = z$a..tension 6..z$c..tension 16..z$b; + sketch vm_a_p; + penlabels($a,$b,$c); + enddef; + +def vm_e_form = + lft z1 = (0,x_height+1.2ascunit); + top z2 = (1/2vm_e_width,x_height); + rt z3 = (vm_e_width,x_height+2ascunit); + lft z5 = (0,x_height+3ascunit); + z6 = (1/2vm_e_width,y5); + top z7=(1/2vm_e_width,vm_e_height1+ascunit); + sketch subpath (0.4,1) of z1{down}..{right}z2..z3..z7..z5..z6; + % hook can be attached at z7 +enddef; + +def vm_e_form_a (expr xcoord) = +% used for vowel modifier e for some consonants (eg. khe, che, ne etc) +% 999 was chosen arbitrarily. we needed something not used elsewhere! +% same suffix should be used by vm_ee_form_a. + top z999=(xcoord,vm_e_height1); rt z999i=((lft x999)-1.8u,(y999+y999j)/2); + top z999j=(x999,asc_height1); + path vm_e_pa; + vm_e_pa=z999..z999i..z999j..cycle; h:= (top y999)+pen_width; + penlabels(z999,z999i,z999j); +enddef; + +def vm_ee_form_a (expr xcoord) = +% used for vowel modifier ee for some consonants (eg. khee, chee, nee etc) +% 999 was chosen arbitrarily. we needed something not used elsewhere! +% same suffix should be used by vm_e_form_a. + vm_e_form_a(xcoord); vm_hook_form(999,3); +enddef; + +def vm_u_form (suffix $) = + bot z$a = (x$+vm_u_width/2,0); + rt z$b = (x$+vm_u_width,y$); + z$c = (x$+3/4vm_u_width,3/4x_height); + top z$d = (x$+.55vm_u_width,x_height); +path vm_u_p; + vm_u_p=z$..z$a..z$b..z$c..z$d; + sketch vm_u_p; + penlabels($a,$b,$c,$d); + enddef; + +def vm_ro_form = + z1 = (1/3vm_ro_width,-1/2des_depth); + z2 = (1/2vm_ro_width,-1/2des_depth); + z3 = (1/3vm_ro_width,0); + lft z4 = (0,-1/2des_depth); + bot z5 = (1/2vm_ro_width,-des_depth); + rt z6 = (vm_ro_width,(y5+y7)/2); + top z7 = (1/2vm_ro_width,x_height); +sketch z1..z2..z3..z4..z5..z6..z7; +enddef; + +def vm_ea_form(suffix $) (expr bar_width) = + z$a=(5/7bar_width,y$); + z$b=(x$a,asc_height2); + lft z$c=(0,y$b); + rt z$d=(bar_width,(y$+y$b)/2); +penlabels ($a,$b,$c,$d); + sketch z$c--z$b..z$d..z$a--z$; +enddef; + +def vm_ao_form(suffix $)(expr x_offset) = + z$a = (1/6vm_ao_width+x_offset,x_height); + lft z$b = (0+x_offset,asc_height1); + z$c = (1/6vm_ao_width+x_offset,asc_height2); + z$d = (2/6vm_ao_width+x_offset,asc_height1); + z$e = (3/6vm_ao_width+x_offset,asc_height2); + z$f = (5/6vm_ao_width+x_offset,asc_height2); + rt z$g = (vm_ao_width+x_offset,1/2(asc_height1+asc_height2)); + top z$h = (5/6vm_ao_width+x_offset,asc_height1); + z$i = (4/6vm_ao_width+x_offset,asc_height2); + top z$j = (5/6vm_ao_width+x_offset,asc_height); + top z$k = (vm_aoo_width+x_offset-1.5u,asc_height); + rt z$l = (vm_aoo_width+x_offset,asc_height2); + %rt z$l = (vm_aoo_width+x_offset,1/2(asc_height+asc_height2)); + %rt z$k = (vm_ao_width+x_offset,1/2(asc_height+asc_height2)); + path vm_ao_pa,vm_ao_pb; + vm_ao_pa = z$a..z$b..z$c..tension1.2..z$d; + vm_ao_pb= z$d..tension1.2..z$e..tension 1.8..z$f..z$g..z$h..z$i..z$j..tension 1.8..z$k..z$l; + w:= rt x$g; h:= top y$c; + penlabels ($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l); +enddef; + +% b---------c--------------d +% | |_| +% $------a +def vm_au_form (suffix $)(expr bar_width) = % see the above diagram + numeric na; + top z$e=z$; + z$a = (x$e+2/10(bar_width-u),y$e); + z1000 = (x$-u,asc_height2); + % 1000 was chosen arbitrarily + % we needed some suffix not used by any user of + % this macro + barandhook_form(1000,bar_width,5); + z$d=z1000a; + %next two statements solve for c + x$c = x$a; + z$c = whatever[z1000,z$d]; + na:=x$c+(x1000a-x$c)/3; % used for alligning pa,pha,sha.. + sketch z$e--z$a{right}..{left}z$c; + penlabels($a,$b,$c,$d,$e,1000); +enddef; + +def cb_ka_form = +rt x1=rt x5=cb_ka_width; y1=8/10x_height; y5=1/4x_height; +x2=x4=x6=1/2cb_ka_width; top y2=x_height; y4=1/2x_height; bot y6=0; +lft x3=lft x7=0; y3=3/4x_height; y7=x_height-y1; +path cb_ka_p; +%cb_ka_p=z7..z6..z5..z4..z3..z2..z1..cycle; +% added a .. cycle to make a kannada "ka" +cb_ka_p=z7..z6..z5..z4..z3..z2..z1..cycle; +enddef; + +def cb_kha_form = +z1=(4/15cb_kha_width,5/6x_height);z2=(2/15cb_kha_width,y1-uh); +lft z3=(0,y1); top z4=(x6,x_height); +z5=(5/12cb_kha_width,1/8x_height); bot z6=(1/4cb_kha_width,0); +lft z7=(0,1/4x_height); z8=(1/4cb_kha_width,1/3x_height); +bot z9=(3/4cb_kha_width,0); rt z10=(cb_kha_width,1/3x_height); +top z11=(x9,x_height); +path cb_kha_p; +cb_kha_p=z1..z2..z3..z4..z5..z6..z7..z8..z9..z10..z11; +sketch cb_kha_p; +numeric a,b; +(a,b)=(subpath (3,5) of cb_kha_p) intersectiontimes + subpath (6,9) of cb_kha_p; +z15 = point a of (subpath (3,5) of cb_kha_p); wedge(15); +enddef; + +def cb_ga_form = +bot z1=(u,0); x5=cb_ga_width-x1; bot y5=0; +y2=y4=1/3x_height; lft x2=0; rt x4=cb_ga_width; +top z3=(1/2cb_ga_width,x_height); +path cb_ga_p,cv_ge_p; + cb_ga_p=z1..z2..z3..z4..z5; + sketch cb_ga_p; + numeric na,nb,nc,nd; + (na,nb)= cb_ga_p intersectiontimes + ((0,vm_e_height2)--(1/2cb_ga_width,vm_e_height2)); + z30= point na of cb_ga_p; + (nc,nd)= cb_ga_p intersectiontimes + ((1/2cb_ga_width,vm_e_height2)--(cb_ga_width,vm_e_height2)); + z32= point nc of cb_ga_p; + top z31=(1/2cb_ga_width,vm_e_height3); + cv_ge_p=z30..z31..z32; +enddef; + +def cb_cha_form = + lft z1=(0,x_height/2); z2=(cb_cha_width/3,x_height/2); + z3=(cb_cha_width/6,w_height); bot z4=(cb_cha_width/4,0); +z5=(cb_cha_width/2,w_height); bot z6=(3/4cb_cha_width,0); + rt z7=(cb_cha_width,w_height); top z8=(cb_cha_width/2,x_height); + path cb_cha_p; + cb_cha_p=z1--z2..z3..z4..tension1.2..z5&z5..tension1.2..z6..z7..z8; + sketch cb_cha_p; + enddef; + +def cb_ja_form = + lft z1 = (0,j_height); top z2 = (cb_ja_width/4,x_height); + z3 = (cb_ja_width/2,j_height); z4 = (cb_ja_width/4,x_height/2); + lft z5 = (0,w_height); bot z6 = (cb_ja_width/4,0); + z7 = (cb_ja_width/2,w_height); bot z8 = (3/4cb_ja_width,0); + rt z9 = (cb_ja_width,w_height); + %following are useful for defining a bowl at the top + bot lft z3w=top z3; z3x=(x8,y1); rt z3y=(w,5/6x_height); + top z3z=(4/5w,x_height); + path cb_ja_pa,cb_ja_pb; + cb_ja_pa=z1..z2..z3..z4..z5..z6..tension1.2..z7&z7..tension1.2..z8..z9; + cb_ja_pb=z3w..z3x..z3y..z3z; + sketch cb_ja_pa; + penlabels(3w,3x,3y,3z); + enddef; + +def cb_tta_form = + top z1=(1/4cb_tta_width,x_height); + y2=y6=1/2x_height; + lft x2=0; rt x6=cb_tta_width; + x3=x1; x5=cb_tta_width-x3; + bot y3=bot y5=0; + top z4=(1/2cb_tta_width,w_height); + top z7=(cb_tta_width-x1,x_height); + z11=(x1+1.5u,y1-1.45uh); + path cb_tta_p,cb_tta_pa,cb_tta_pb; + cb_tta_pb=z1..z2..z3..tension1.2..z4&z4..tension1.2..z5..z6..z7; + numeric na,nb,nc,nd; + (na,nb)= cb_tta_pb intersectiontimes + ((0,5/6x_height)--(1/2cb_tta_width,5/6x_height)); + z8=point na of cb_tta_pb; + (nc,nd)= cb_tta_pb intersectiontimes + ((0.6cb_tta_width,w_height)--(cb_tta_width,w_height)); + z20=point nc of cb_tta_pb; + z19=rt z20; + cb_tta_pa=bot z8..z11..z1; + cb_tta_p=cb_tta_pa..cb_tta_pb; + bot lft z18= z1;% used for placing a vertical line + enddef; + +def cb_nna_form = +z1a=(1/3cb_nna_width,1/2sc_height); +bot z1=(1/4cb_nna_width,0); lft z2=(0,1/4x_height); +z3=(1/6cb_nna_width,1/2x_height); lft z4=(0,3/4x_height); +top z5=(1/4cb_nna_width,x_height); z6=(1/2cb_nna_width,j_height); +top z7=(5/8cb_nna_width,x_height); rt z8=(cb_nna_width,1/2x_height); +bot z9=(2/3cb_nna_width,0); z10=(x9-1/2sc_height,sc_height); +z11=(x9,3/2sc_height); z12=(x9+1/2sc_height,sc_height); + path cb_nna_p; +cb_nna_p= z1a..z1..z2..z3&z3..z4..z5..z6&z6..z7..z8..z9..z10..z11..z12; +sketch cb_nna_p; + penlabels(1a); +enddef; + +def cb_ta_form = +lft z1=(0,1/2x_height); +z2=(x1+u,y1-uh); z3=(x1+2u,y1); z4=(x2,y1+uh); +bot z5=(1/2cb_ta_width,0); rt z6=(cb_ta_width,1/2x_height); +z7=(x6-u,y6+uh); z8=(x6-2u,y6); z9=(x7,y6-uh); +top z10=(1/2cb_ta_width,x_height); + path cb_ta_p; + cb_ta_p = z1..z2..z3..z4..z1..z5..z6..z7..z8..z9..z6..{left}z10; +enddef; + +def cb_da_form = + top z1=(1/2cb_da_width,x_height); lft z2=(0,w_height); + bot z3=(1/3cb_da_width,0);z4=(1/2cb_da_width,w_height); + bot z5=(2/3cb_da_width,0);rt z6=(cb_da_width,1/2x_height); + path cb_da_p,cv_de_p; + cb_da_p= z4..tension 1.2..z5..z6..z1..z2..z3..tension 1.2..z4; + sketch cb_da_p; + numeric na,nb,nc,nd; + (na,nb)= cb_da_p intersectiontimes + ((0,vm_e_height2)--(1/2cb_da_width,vm_e_height2)); + z30= point na of cb_da_p; + (nc,nd)= cb_da_p intersectiontimes + ((1/2cb_da_width,vm_e_height2)--(cb_da_width,vm_e_height2)); + z32= point nc of cb_da_p; + top z31=(1/2cb_da_width,vm_e_height3); + cv_de_p=z30..z31..z32; + enddef; + +def cb_na_form = + bot lft z1=(0,0); lft z2=(0,1/2w_height); + z3=(1/3cb_na_width,w_height); bot z4=(2/3cb_na_width,0); + rt z5=(cb_na_width,1/3x_height); top z6=(1/2cb_na_width,x_height); + path cb_na_p; + cb_na_p=z1..z2..z3..z4..z5..z6; + enddef; + +def cb_ba_form = + lft z1 = (u/2,j_height); top z2 = (cb_ba_width/5,x_height); + z3 = (cb_ba_width/3,j_height); lft z4 = (0,w_height); + bot z5 = (cb_ba_width/4,0); bot z6 = (cb_ba_width/2,w_height); + bot z7 = (3/4cb_ba_width,0); + rt z8 = (cb_ba_width,w_height); %z8 contact point + top z9 = (2/3cb_ba_width,x_height); % z9 another contact point + path cb_ba_p; + cb_ba_p = z1..z2..z3..z4..z5..tension 1.2..z6&z6..tension 1.2..z7..z8..z9; + sketch cb_ba_p; + enddef; + +def cb_ya_form = + lft z1 = (0,2/5x_height); + top z2 = (3/10cb_ya_width,8/10x_height); + rt z3 = (3/5cb_ya_width,y1); + bot z4 = (x2,0); + bot z5 = (4/5cb_ya_width,0); + rt z6 = (cb_ya_width,w_height); + z7 = ((x5+x6)/2,7.3/10x_height); + top z8 = (9/20cb_ya_width,x_height); +enddef; + +def cb_ra_form = + top z1=(cb_ra_width/2,x_height); + lft z2 = (0,w_height); + bot z3 = (cb_ra_width/2,0); + rt z4 = (cb_ra_width,y2); + path cb_ra_p,cv_re_p; + cb_ra_p = z1..z2..z3..z4..cycle; + sketch cb_ra_p; + numeric na,nb,nc,nd; + (na,nb)= cb_ra_p intersectiontimes + ((0,vm_e_height2)--(1/2cb_ra_width,vm_e_height2)); + z30= point na of cb_ra_p; + (nc,nd)= cb_ra_p intersectiontimes + ((1/2cb_ra_width,vm_e_height2)--(cb_ra_width,vm_e_height2)); + z32= point nc of cb_ra_p; + top z31=(1/2cb_ra_width,vm_e_height3); + cv_re_p=z30..z31..z32; + enddef; + +def cb_rra_form = +cb_tta_form; +z14=(cb_tta_width-1.5x1,x_height-sc_height); +z15=(x7,1/2x_height);z16=(x1,y15); + path cb_rra_p; + cb_rra_p= cb_tta_p..z14..z15--z16; + sketch cb_rra_p; +enddef; + +def cb_la_form = +top z1=(1/4cb_la_width,x_height); +lft z2=(0,x_height/2); bot z3=(1/2cb_la_width,0); +rt z4=(cb_la_width,y2); top z5=(cb_la_width-x1,x_height); +z7=(x1+1.5u,2/3x_height); + path cb_la_pa,cb_la_pb,cb_la_p; + cb_la_pb=z1..z2..z3..z4..z5; +z6=point 0.35 of cb_la_pb; + cb_la_pa= bot rt z6..z7..z1; + cb_la_p=cb_la_pa..cb_la_pb; +% z8 is useful for la+u and la+uu +numeric na,nb; +(na,nb)=cb_la_pb intersectiontimes + ((cb_la_width/2,w_height)..(cb_la_width,w_height)); +z9=point na of cb_la_pb; +z8=rt z9; +enddef; + +def cb_lla_form = +top z1=(cb_lla_width/2,w_height); +bot z2 =(x1,0); +z6=(1/3cb_lla_width,x_height-2uh); z3=(x6+u/2,y6-uh); +z4=(x6,.6x_height); z5=(x6+u/2,y3); lft z7=(0,2/3x_height); +bot z8=top z1; rt z9=(cb_lla_width,y7); top z10=(1/2cb_lla_width,x_height); +path cb_lla_pa,cb_lla_pb; +cb_lla_pa=z3..z4..z5..z6..z7..z8..z9..z10; +cb_lla_pb=z1..z2..cycle; +sketch cb_lla_pa; +sketch cb_lla_pb; +% z12 is useful for lla+u and lla+uu +numeric na,nb; +(na,nb)=cb_lla_pa intersectiontimes + ((cb_lla_width/2,x_height/2)..(cb_lla_width,x_height/2)); +z13=point na of cb_lla_pa; +z12=rt z13; +enddef; + +def cb_va_form = + lit_cir_form; + bot z62 = (3/5cb_pa_width,0); rt z63 = (cb_pa_width,w_height); + z64 = (7/8cb_pa_width,j_height); top lft z65 = (x1,x_height); +path cb_va_p,cv_paa_p; +cb_va_p=z61..z62..z63..z64..z65; +top z20=(cb_pa_width/2,h); +cv_paa_p=subpath(0,2) of cb_va_p{up}..z20; +% z22 is useful for alligning au modifier +numeric na,nb; +(na,nb)=cv_paa_p intersectiontimes + ((cb_pa_width/2,asc_height2)..(cb_pa_width,asc_height2)); +z22=point na of cv_paa_p; + enddef; + +def cb_ca_form = +lft z1=(0,1/2x_height); z2=(1/3cb_ca_width,6/8x_height); +bot z3=(1/3cb_ca_width,0); z4=(3/4cb_ca_width,1/3x_height); +rt z5=(cb_ca_width,2/3x_height); top z6=(1/2cb_ca_width,x_height); +lft z7=(0,1/6x_height); +path cb_ca_p,cb_ca_pa; +cb_ca_p=z1..z2{right}..z4..z3..z7..z4..z5..z6; +sketch cb_ca_p; +% z10 is useful for ca+u and ca+uu +cb_ca_pa=subpath(1,3) of cb_ca_p; +numeric na,nb; +(na,nb)=cb_ca_pa intersectiontimes + ((0,w_height)..(cb_ca_width,w_height)); +z11=point na of cb_ca_pa; +z10=rt z11; +enddef; + +def cb_ksha_form = + cb_ka_form; + top z11 = (1/5cb_ka_width,0); + lft z12 = (0,-1/2cb_ksha_depth); + bot z13 = (x11,-cb_ksha_depth); + z14 = (2/5cb_ka_width,-2/3cb_ksha_depth); + bot z15 = (3/5cb_ka_width,-cb_ksha_depth); + z16 = (4/5cb_ka_width,-1/2cb_ksha_depth); + top z17 = (x15,0); + bot rt z18 = (cb_ka_width,-cb_ksha_depth); + sketch z11..z12..z13..z14; sketch z14..z15..z16..z17; + sketch z16..z18; + enddef; + + +def cc_clear = +%erase all that is drawn so far. + clearit; + lft z99=(0,100); + left_spill := xpart(lft (z99 scaled cc_scale)) - xpart(lft z99); + bot z98=(100,0); + bot_spill := ypart(bot (z98 scaled cc_scale)) - ypart(bot z98); + top((z97 scaled cc_scale) + shifted (0,-bot_accent-(x_height*cc_scale)) + shifted (-left_spill,-bot_spill))= + (w*cc_scale/2,x_height); +enddef; + +def cc_transform(text t) = +% used to obtain consonant conjuncts for some consonants and vowels lo&loo +path cc_transformed_path; +cc_transformed_path = t scaled cc_scale + shifted (0,-bot_accent-(x_height*cc_scale)); +sketch cc_transformed_path; +enddef; + +def cc_my_transform(text t) = +% used to obtain consonant conjuncts for some consonants and vowels lo&loo +path cc_transformed_path; +cc_transformed_path = t scaled cc_scale + shifted (0,-bot_accent-(x_height*cc_scale)); +sketch cc_transformed_path; +enddef; + +def cc_f_transform(text t) = +% used to obtain consonant conjuncts for some consonants and vowels lo&loo +fill t scaled cc_scale + shifted (0,-bot_accent-(x_height*cc_scale)); +enddef; + +def cc_whd (expr hh,dd) = +%this macro sets w, h and d for accents that appear below baseline. +% for some consonant conjuncts that result from transforming +% consonant bases the height is not zero (eg. cha, ba ,pa etc) +% for such symbols hh should be 1 and for others hh should be 0. +% Some consonant bases have wedges that hang below base line (eg. bha, pha +% ddha etc. ). For these dd should be 1 and for others dd should be 0. +% +%When a picture is scaled, what really happens is the componant paths +% are scaled and the picture is redrawn. Hence we need to adjust w,h and d. +% Still consonant conjunct for nya needs special care( for d). +w:=w*cc_scale-pen_width*cc_scale+pen_width;; +h:=hh*x_height; +d:=bot_accent+((x_height+(dd*wedge_depth))*cc_scale)+dd*bot_spill; +% (x,y) slanted s shifted (a,b) is (x+sy+a,y+b) whereas +% (x,y) shifted (a,b) slanted s is (x+sy+a+ bs,y+b). Hence we +% need to add the correction 'bs'. 'bs' is -bot_spill*slant +currentpicture:=currentpicture shifted + (-left_spill+((-bot_spill)*slant),-bot_spill); +enddef; + +def cv_ngu_form = + z1=(0,j_height); z2=(cb_ja_width/4,j_height-uh#); + rt z3=(cb_ja_width/2,5/6x_height); top z4=(4/10cb_ja_width,x_height); + sketch z1..z2..z3..z4; +enddef; + +def cv_ju_form = + z1=(0,5/6x_height); z2=(cb_ja_width/4,j_height); + rt z3=(cb_ja_width/2,y1); top z4=(4/10cb_ja_width,x_height); + sketch z1..z2..z3..z4; +enddef; + +def cv_pu_form = + top lft z1=(0,c_height/2); bot z2=(cv_pu_width/2,-cv_pu_depth); + rt z3=(cv_pu_width,h/2); top z4=(cv_pu_width-2u,x_height); + sketch z1..z2..z3..z4; +enddef; + +def dr_sixnine_form = + path dr_sixnine_p; + top rt z1 = (w,fig_height); + z2 = (w/2+u,y1-uh); + bot z4 = (w/2,0); + rt z5 = (w,x4); + z6 = (x4,x5-x7); + lft z7 = (0,y5); + dr_sixnine_p = z1..z2..z7..z4..z5..z6..z7; +enddef; + +def cc_arkavattu= +path dt_six_pa,dt_six_pb; + top z1=(w/5,h); lft z2=(0,3h/4); z3=(x1,h/2); + z4=(w/3,h/2); lft z5=(0,h/4); bot z6=(x1,0); + bot rt z7=(w,0); +arka_pa= flex(z1,z2,z3)& z3--z4; +arka_pb=flex(z3,z5,z6)& z6--z7; +enddef; + + +def p_comma_form = +path p_comma_p; + z1 = (dot_radius,dot_radius); + rt z2 = (p_comma_width,0); + bot lft z3 = (x1-1/2dot_radius,-des_depth); +fill_dot(1); p_comma_p= flex(z1,z2,z3); +sketch p_comma_p; +enddef; + +def p_bar_form = +path p_bar_p; + bot lft z1 = (0,0); + top lft z2 = (0,x_height); +p_bar_p= z1--z2; +enddef; + +def p_slash_form = +path p_slash_p; + bot lft z1 = (0,-des_depth); + top rt z2 = (6u,asc_height); +p_slash_p= z1--z2; +enddef; + +def p_lbracket_form = % square bracket +path p_lbracket_p; + top lft z1 = (0,top_height); + bot lft z2 = (0,-bot_depth); + rt z3 = (w,y1); + rt z4 = (w,y2); +p_lbracket_p=z3--z1--z2--z4; +enddef; + + +def p_rparen_form = +path p_rparen_p; + top lft z1 = (0,top_height); bot lft z2 = (0,-bot_depth); + rt z3 = (w,(-d+h)/2); +p_rparen_p= flex(z1,z3,z2); +enddef; + + +def p_lbrace_form = +path p_lbrace_p; + top rt z1 = (w,h); lft z4 = (0,(h-d)/2); + z2 = (w/2,-d+7/8(h+d)); + z3 = (x2,-d+5/8(h+d)); +p_lbrace_p= z1..z2..z3..z4; +p_lbrace_p:=(p_lbrace_p reflectedabout (z4,z4+(w,0)) )..reverse(p_lbrace_p); +enddef; + + +def dk_five_form = + z1 = (.2w, .7h); lft z2 = (0, 3h/4); + top z3 = (1/4w, h) ; z4 = (.5w, .5h); + bot z5 = (1/4w, 0) ; lft z6 = (0, 1/4 h); + z6a = (.45w, .45h) ; + z7 = (.5w, .5h); z8 = (.95w, .8h) ; + top z9 = (.9w, .96h); z10 = (.6w, .8h) ; + rt z11 = (w, 1/4h) ; bot z12 = (.85w, 0) ; + sketch z1..z2..z3..z4..z5..z6..tension 1.3..z7..z8..z9..z10..z11..tension 1.2..z12; +enddef; + +def dk_six_form = + lft top z1 = (.05w, h); lft z2 = (.12w, .8h); + z3 = (.25w, .45h); z4 = (x3, .65h) ; + z4a = (.4w, (y3+y4)/2); + lft z5 = (0, .25h) ; bot z6 = (.25w, 0) ; + rt bot z7 = (w, 0) ; + sketch z1..z2..z3..z4a..z4..tension 1.2..z5...z6--z7 ; + +enddef; + +def cb_dollar_form = + rt x1=rt x5=cb_ka_width; y1=8/10x_height; y5=1/4x_height; + x2=x4=x6=1/2cb_ka_width; top y2=x_height; y4=1/2x_height; bot y6=0; + lft x3=lft x7=0; y3=3/4x_height; y7=x_height-y1; + path dol_p; + dol_p = z1..z2..z3..z4..z5..z6..z7; +enddef; + diff --git a/Master/texmf-dist/fonts/source/public/itrans/kancodes.mf b/Master/texmf-dist/fonts/source/public/itrans/kancodes.mf new file mode 100644 index 00000000000..c5a1d2c71f5 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kancodes.mf @@ -0,0 +1,269 @@ +% This file is part of the KannadaTeX Software Package. +%Copyright (c) 1991 G.S. Jagadeesh & Venkatesh. Gopinath. +% +%Author: Modified from TeluguTex by, GS. Jagadeesh. & Venkatesh Gopinath. +%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 codes to determine where various symbols +% are placed in the font. The symbols that are also part of ASCII +% character set are placed at the same location as in ASCII code. +% Any revision of this file MUST maintain this assignment. +% All kannada digits are given contiguous codes in the order +% 0,1,2,3,4,5,6,7,8,9. Any revision of this file MUST maintain +% this property. +% +% vowels + +v_a_code := oct"027"; +v_aa_code := v_a_code +1; +v_e_code := v_aa_code +1; +v_ee_code := v_e_code +1; +v_u_code := v_ee_code +1; +v_uu_code := v_u_code +1; +v_ro_code := v_uu_code +1; +v_roo_code := v_ro_code +1; +v_ea_code := v_roo_code +1; +v_eae_code := v_ea_code +1; +v_i_code := oct"101" ; +v_ao_code := v_i_code +1; +v_aoo_code := v_ao_code +1; +v_au_code := v_aoo_code +1; + +% vowel modifiers +%vm_a_code := v_au_code +1; +vm_a_code := oct"200"; +vm_aa_code := vm_a_code +1; +vm_ah_code := vm_aa_code +1; +vm_e_code := vm_ah_code +1; +vm_ee_code := vm_e_code +1; +vm_u_code := vm_ee_code +1; +vm_uu_code := vm_u_code +1; +vm_ro_code := vm_uu_code +1; +vm_roo_code := vm_ro_code +1; +vm_ea_code := vm_roo_code +1; +vm_ea1_code := vm_ea_code +1; +vm_y_code := vm_ea1_code +1; +vm_au_code := vm_y_code +1; +vm_p_code := vm_au_code +1; + +% Consonant bases +%cb_ka_code := vm_p_code +1; +cb_ka_code := v_au_code +1; +cb_kha_code := cb_ka_code +1; +cb_ga_code := cb_kha_code +1; +cb_gha_code := cb_ga_code +1; +cb_nga_code := cb_gha_code +1; +cb_cha_code := cb_nga_code +1; +cb_ccha_code := cb_cha_code +1; +cb_ja_code := cb_ccha_code +1; +cb_jha_code := cb_ja_code +1; +cb_nya_code := cb_jha_code +1; +cb_tta_code := cb_nya_code +1; +cb_ttha_code := cb_tta_code +1; +cb_dda_code := cb_ttha_code +1; +cb_ddha_code := cb_dda_code +1; +cb_nna_code := cb_ddha_code +1; +cb_ta_code := cb_nna_code +1; +cb_tha_code := cb_ta_code +1; +cb_da_code := cb_tha_code +1; +cb_dha_code := cb_da_code +1; +cb_na_code := cb_dha_code +1; +cb_naa_code := cb_na_code +1; +cb_pa_code := cb_naa_code +1; + +cb_pha_code := oct"141"; +%cb_pha_code := cb_pa_code +1; +cb_ba_code := cb_pha_code +1; +cb_bha_code := cb_ba_code +1; +cb_ma_code := cb_bha_code +1; +cb_ya_code := cb_ma_code +1; +cb_ra_code := cb_ya_code +1; +cb_rra_code := cb_ra_code +1; +cb_la_code := cb_rra_code +1; +cb_lla_code := cb_la_code +1; +cb_llaa_code := cb_lla_code +1; +cb_va_code := cb_llaa_code +1; +cb_ca_code := cb_va_code +1; +cb_sha_code := cb_ca_code +1; +cb_sa_code := cb_sha_code +1; +cb_ha_code := cb_sa_code +1; +cb_ksha_code := cb_ha_code +1; +cb_dt_code := cb_ksha_code +1; +cb_np_code := cb_dt_code +1; +cb_vg_code := cb_np_code +1; +cb_bb_code := cb_vg_code +1; % boxes(bb,bo,be)(used for demonstrating +% vowel modifiers, cons. conjuncts) +cb_bo_code := cb_bb_code +1; +cb_be_code := cb_bo_code +1; + +% Consonant conjuncts +cc_ka_code := vm_p_code; +cc_kha_code := cc_ka_code +1; +cc_ga_code := cc_kha_code +1; +cc_gha_code := cc_ga_code +1; +cc_nga_code := cc_gha_code +1; +cc_cha_code := cc_nga_code +1; +cc_ccha_code := cc_cha_code +1; +cc_ja_code := cc_ccha_code +1; +cc_jha_code := cc_ja_code +1; +cc_nya_code := cc_jha_code +1; +cc_tta_code := cc_nya_code +1; +cc_ttha_code := cc_tta_code +1; +cc_dda_code := cc_ttha_code +1; +cc_ddha_code := cc_dda_code +1; +cc_nna_code := cc_ddha_code +1; +cc_ta_code := cc_nna_code +1; +cc_tha_code := cc_ta_code +1; +cc_da_code := cc_tha_code +1; +cc_dha_code := cc_da_code +1; +cc_na_code := cc_dha_code +1; +cc_pa_code := cc_na_code +1; +cc_pha_code := cc_pa_code +1; +cc_ba_code := cc_pha_code +1; +cc_bha_code := cc_ba_code +1; +cc_ma_code := cc_bha_code +1; +cc_ya_code := cc_ma_code +1; +cc_ra_code := cc_ya_code +1; +cc_rra_code := cc_ra_code +1; +cc_ara_code := cc_rra_code +1; +cc_la_code := cc_ara_code +1; +cc_lla_code := cc_la_code +1; +cc_va_code := cc_lla_code +1; +cc_ca_code := cc_va_code +1; +cc_sha_code := cc_ca_code +1; +cc_sa_code := cc_sha_code +1; +cc_ha_code := cc_sa_code +1; + +% bars used for transliteration of vedic hymns +% and other symbols used for singing +b_udatta1_code := oct"005"; +b_udatta2_code := b_udatta1_code +1; +b_anudatta_code := b_udatta2_code +1; + +% Roman digits +dr_zero_code := ASCII"0"; +dr_one_code := dr_zero_code +1; +dr_two_code := dr_one_code +1; +dr_three_code := dr_two_code +1; +dr_four_code := dr_three_code +1; +dr_five_code := dr_four_code +1; +dr_six_code := dr_five_code +1; +dr_seven_code := dr_six_code +1; +dr_eight_code := dr_seven_code +1; +dr_nine_code := dr_eight_code +1; + +% Kannada digits +dk_zero_code := oct"015"; +dk_one_code := dk_zero_code +1; +dk_two_code := dk_one_code +1; +dk_three_code := dk_two_code +1; +dk_four_code := dk_three_code +1; +dk_five_code := dk_four_code +1; +dk_six_code := dk_five_code +1; +dk_seven_code := dk_six_code +1; +dk_eight_code := dk_seven_code +1; +dk_nine_code := dk_eight_code +1; + +% Punctuations +p_period_code := ASCII"."; +p_comma_code := ASCII","; +p_equal_code := ASCII"="; +p_bar_code := oct"177"; +p_dbar_code := oct"000"; +p_colon_code := ASCII":"; +p_scolon_code := ASCII";"; +p_cquote_code := ASCII"'"; +p_cquotes_code := oct"001"; +p_oquote_code := ASCII"`"; +p_oquotes_code := oct"002"; +p_dquotes_code := ASCII ditto; %ASCII " +p_slash_code := ASCII"/"; +p_hash_code := ASCII"#"; +p_excla_code := ASCII"!"; +p_asterisk_code := ASCII"*"; +p_plus_code := ASCII"+"; +p_lbracket_code := ASCII"["; +p_rbracket_code := ASCII"]"; +p_lparen_code := ASCII"("; +p_rparen_code := ASCII")"; +p_lbrace_code := ASCII"{"; +p_rbrace_code := ASCII"}"; +p_percent_code := ASCII"%"; +p_bslash_code := ASCII"\"; +p_lbar_code := ASCII"|"; +p_hyphen_code := ASCII"-"; +p_lhyphen_code := oct"003"; +p_vlhyphen_code := oct"004"; +p_ubar_code := ASCII"_"; +p_question_code := ASCII"?"; +p_dollar_code := ASCII"$"; +p_greater_code := ASCII">"; +p_less_code := ASCII"<"; +p_at_code := ASCII"@"; +p_tilde_code := ASCII"~"; +p_hat_code := ASCII"^"; +p_ampersand_code := ASCII"&"; + +% Ubayaksharas +u_sunna_code := oct"010" ; +u_visarga_code := u_sunna_code +1; +u_uss_code := u_visarga_code +1; +%u_ardhavisarga_code := u_visarga_code +1; +%u_avagraha_code := u_ardhavisarga_code +1; + +%some consonant+vowel's need special symbols. Next we will +%define codes for these symbols. +cv_ke_code := cc_ha_code+1; +cv_khe_code := cv_ke_code+1; +cv_ge_code := cv_khe_code+1; +cv_ghe_code := cv_ge_code+1; +cv_che_code := cv_ghe_code+1; +cv_cche_code := cv_che_code+1; +cv_je_code := cv_cche_code+1; +cv_jhe_code := cv_je_code+1; +cv_tte_code := cv_jhe_code+1; +cv_tthe_code := cv_tte_code+1; +cv_dde_code := cv_tthe_code+1; +cv_ddhe_code := cv_dde_code+1; +cv_te_code := cv_ddhe_code+1; +cv_the_code := cv_te_code+1; +cv_de_code := cv_the_code+1; +cv_dhe_code := cv_de_code+1; +cv_ne_code := cv_dhe_code+1; +cv_pe_code := cv_ne_code+1; +cv_phe_code := cv_pe_code+1; +cv_be_code := cv_phe_code+1; +cv_bhe_code := cv_be_code+1; +cv_me_code := cv_bhe_code+1; +cv_re_code := cv_me_code+1; +cv_le_code := cv_re_code+1; +cv_ye_code := cv_le_code+1; +cv_lle_code := cv_ye_code+1; +cv_ve_code := cv_lle_code+1; +cv_vu_code := cv_ve_code+1; +cv_vuu_code := cv_vu_code+1; +cv_ce_code := cv_vuu_code+1; +cv_she_code := cv_ce_code+1; +cv_se_code := cv_she_code+1; +cv_he_code := cv_se_code+1; +cv_kshe_code := cv_he_code+1; + + + +% Some Special characters +kn_spla_code := cv_kshe_code +1 ; +kn_splb_code := kn_spla_code +1; diff --git a/Master/texmf-dist/fonts/source/public/itrans/kanlets.mf b/Master/texmf-dist/fonts/source/public/itrans/kanlets.mf new file mode 100644 index 00000000000..3445e2ca81b --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kanlets.mf @@ -0,0 +1,220 @@ +% 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. +%%%%% + +CBKA; +CCKA; +CBKHA; +CCKHA; +CBGA; +CCGA; +CBGHA ; +CCGHA; +CBNGA ; +CCNGA ; +CBCHA ; +CCCHA ; +CBCCHA; +CCCCHA; +CBJA ; +CCJA ; +CBJHA ; +CCJHA ; +CBNYA; +CCNYA; +CBTTA; +CCTTA; +CBTTHA; +CCTTHA; +CBDDA; +CCDDA; +CBDDHA; +CCDDHA; +CBNNA; +CCNNA; +CBTA; +CCTA; +CBTHA; +CCTHA; +CBDA; +CCDA; +CBDHA; +CCDHA; +CBNA; +CBNAA; +CCNA; +CBPA; +CCPA; +CBPHA; +CCPHA; +CBBA; +CCBA; +CBBHA; +CCBHA; +CBMA; +CCMA; +CBYA; +CCYA; +CBRA ; +CBRRA ; +CCRA ; +CCRRA ; +CBLA ; +CCLA ; +CBVA; +CVVE; +CVVU; +CVVUU; +CCVA; +CBCA; +CCCA; +CBSA ; +CCSA ; +CBHA ; +CCHA ; +CBLLA ; +CBLLAA ; +CCLLA ; +CBSHA; +CCSHA; +CBKSHA ; +VA ; +VAA; +VE; +VEE ; +VU; +VUU; +VRO; +VROO; +VEA; +VEAE; +VI ; +VAO ; +VAOO ; +VAU; +VMAH ; +VMA ; +VMAA ; +VMEE; +VMU ; +VMUU ; +VMRO ; +VMROO ; +VMEA ; +VMEAA ; +VMY ; +VMAU; +CVKE ; +CVKHE ; +CVGE; +CVGHE; +CVCHE ; +CVCCHE; +CVJE ; +CVJHE ; +CVTTE; +CVTTHE ; +CVDDE; +CVDDHE; +CVTE; +CVTHE; +CVDE; +CVDHE; +CVNE; +CVPE; +CVPHE; +CVBE; +CVBHE; +CVME; +CVYE; +CVRE ; +CVLE ; +CVCE; +CVSHE ; +CVSE ; +CVHE ; +CVLLE ; +CVKSHE ; +VME; + + +DRZERO +DRONE +DRTWO +DRTHREE +DRFOUR +DRFIVE +DRSIX +DRSEVEN +DREIGHT +DRNINE +DKZERO +DKONE +DKTWO +DKTHREE +DKFOUR +DKFIVE +DKSIX +DKSEVEN +DKEIGHT +DKNINE +PPERIOD +PCOMMA +PEQUAL +PBAR +PDBAR +PCOLON +PSCOLON +PCQUOTE +PCQUOTES +POQUOTE +POQUOTES +PDQUOTES +PSLASH +PHASH +PEXCLA +PASTERISK +PPLUS +PLBRACKET +PRBRACKET +PLPAREN +PRPAREN +PLBRACE +PRBRACE +PPERCENT +PBSLASH +PLBAR +PHYPHEN +PLHYPHEN +PVLHYPHEN +PUBAR +PQUESTION +PDOLLAR +PGREATER +PLESS +PAT +PTILDE +PHAT +PAMPERSAND +BOXA +BOXB +BOXC + +FROWN +SMILE diff --git a/Master/texmf-dist/fonts/source/public/itrans/kanmain.mf b/Master/texmf-dist/fonts/source/public/itrans/kanmain.mf new file mode 100644 index 00000000000..783a6b6d389 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kanmain.mf @@ -0,0 +1,1298 @@ +% This file is part of the KannadaTeX Software Package. +%Copyright (c) 1991 G.S. Jagadeesh & Venkatesh. Gopinath. +% +%Author: GS. Jagadeesh. +%The KannadaTeX Software Package is distributed in the hope that +%it will be useful,but WITHOUT ANY WARRANTY. No author or distributor +%accepts responsibility to anyone for the consequences of using it +%or for whether it serves any particular purpose or works at all, +%unless he says so in writing. Refer to the KannadaTeX Software Package +%General Public License for full details. +% +%Everyone is granted permission to copy, modify and redistribute +%the KannadaTeX Software Package, but only under the conditions described in the +%KannadaTeX Software Package General Public License. A copy of this license is +%supposed to have been given to you along with KannadaTeX Software Package so you +%can know your rights and responsibilities. It should be in a +%file named CopyrightLong. Among other things, the copyright notice +%and this notice must be preserved on all copies. +%%%%% + +font_coding_scheme := "TeX text"; + +%font_size 10pt#; slant:=0; pen_width#:=0.35pt#; penangle := 30 ; + +% avinash: June 1998: do not set mode here, that is set by MakeTeXPK +% mode=localfont; + +input kancodes; % codes for kannada symbols +input kanparam; + +font_coding_scheme := "TeX text"; + +mode_setup; font_setup; + + +def v_e_form = + lft z1=(0,j_height); top z2=(1/5v_e_width,x_height); + z3=(2/5v_e_width,1.2j_height); top z4=(3/5v_e_width,x_height); + rt z5=(v_e_width,1/2x_height); z6=(4/5v_e_width,1/5x_height); + bot z7=(1/2v_e_width,0); z8=(1/5v_e_width,1/4x_height); + z9=(1/2v_e_width,1/2x_height); rt z10=(v_e_width,-1/5des_depth); + path v_e_p; + v_e_p = z1..z2..tension 1.2..z3&z3..tension 1.2..z4..z5..z6..z7..z8..z9..z10; + sketch v_e_p; +enddef; + +def place_lit_circ (suffix $) (expr sc) = + lit_cir_form; + erase sketch lit_cir_p; + path pl_lit_cir_p ; + transform t; + t=identity scaled sc shifted z$ ; + %sketch lit_cir_p transformed t; + pl_lit_cir_p = lit_cir_p transformed t; + sketch pl_lit_cir_p ; +enddef ; + +def bar_form(suffix $) (expr width) = + path bar_p; + z$b= (x$+width-2u, y$); + bar_p = z$--z$b; + sketch bar_p; +enddef; + +def bar_forma(expr width) = + path bar_pa; + z300=rt bot (0,x_height); z301= bot(width-2u, x_height); + bar_pa=z300--z301; + sketch bar_pa; +enddef; + +def vmfa_form(suffix $) = % tale-kattu + path bar_p; + z$c= (x$+1.4u, y$); + top z$d= (x$c+.5u, y$+2.5u); + bar_p = z$--z$c{z$c-z$}..z$d; + sketch bar_p; +enddef; + +def vm_aa_form = + top z1 = (0+u,x_height); + top z2 = (vm_aa_width-2u,x_height); + rt z3 = (vm_aa_width, 1/2y1); + bot z4 = (x2, 0); + z5 = (x2-x1, y4+.1y1); + z6 = (x2-1/4x1, y4+.2y1); + z7 = (x2-1/8x1, y4+.1y1); + sketch z1..tension 7..z2..tension 1.8..z3..z4..z5..z6..z7; + flop(4); +enddef; + +def vmfaa_form(suffix $) = % tale-a ile. + top z1a = (x$+0,x_height); + z1b = (x$+4.2u,y1a); + rt z1c = (x1b+2u, .5y1a); + bot z1d = (x1b-.4u, 0); + bot z1e = (x1d, 1.5u); + z1f = (x1e+.25u, y1e-.5u); + + sketch z1a---z1b..tension 1.8..z1c..tension 1.2..z1d..z1e..z1f; + %sketch z1a..tension 10..z1b..tension 1.8..z1c..tension 1.2..z1d..z1e..z1f; + %sketch z1a; draw z1b; draw z1c; draw z1d; draw z1e; draw z1f; draw z1f; +enddef; + + +def vmfea_form(suffix $) = % tale-athwa + path bar_p; + z$c= (x$+1.5u, y$); + z$d= (x$c+.5u, y$+2.5u); + z$e= (x$+1u, y$+1.5u); + z$f= (x$+1.5u, y$e-.4u); + bar_p = z$---z$c{z$c-z$}..z$d..z$e..z$f; + sketch bar_p; +enddef; + +def vmah_form(suffix $) = % tale-ardha akshara + path bar_p; + z$c= (x$+1.2u, y$); + z$cc= (x$c+1.5u, y$); + z$d= (x$cc-.75u, y$-1u); + %z$e= (x$+2.75u, y$+1.25u); % adjust if you want it.. + z$e= (x$+3u, y$+1.5u); + bar_p = z$--z$c..z$cc{dir 2}..z$d..tension 1.4..z$e; + sketch bar_p; +enddef; + +def cb_ka_form = + path cb_ka_pa, cb_ka_pb, cb_ka_pc; + rt top z1=(0.5cb_ka_width, 0.75x_height); lft z2=(0, 3/8x_height); + bot z3=(.5cb_ka_width, 0); + rt z4=(cb_ka_width, 3/8x_height); + lft z5=(0, 0.75x_height); rt z6=(cb_ka_width, .75x_height); + top z7=(0.5cb_ka_width, 0.75x_height); + top z8=(0.55cb_ka_width, x_height); + path cb_ka_p; + cb_ka_pa = z1..z2..z3..z4..cycle; + cb_ka_pb = z5--z6; + cb_ka_pc = z7..{dir 125}z8; + sketch cb_ka_pa; + sketch cb_ka_pb; + sketch cb_ka_pc; + lft top z0 = (0, x_height); + bar_forma(cb_ka_width-.5u); % z301 is comming from bar_forma... + %vmfa_form(301); % Following are test to see How vowel modifer looks. + %vmfaa_form(301) ; + %vmfea_form(301); + %bar_form(0,cb_ka_width); + + % to compute the joining point of "kombu for ka". + path inter; + inter = (1/2cb_ka_width, .3x_height)--(1.1cb_ka_width, .3x_height); + z400 = cb_ka_pa intersectionpoint inter; + +enddef; + +def cb_kha_form = + z1=(4/15cb_kha_width,5/6x_height);z2=(2/15cb_kha_width,y1-uh); + lft z3=(0,y1); top z4=(x6,x_height); + z5=(5/12cb_kha_width,1/8x_height); bot z6=(1/4cb_kha_width,0); + lft z7=(0,1/4x_height); z8=(1/4cb_kha_width,1/3x_height); + bot z9=(3/4cb_kha_width,0); rt z10=(cb_kha_width,1/3x_height); + top z11=(x9,x_height); + path cb_kha_p; + cb_kha_p=z1..z2..z3..z4..z5..z6..z7..z8..z9..z10..z11; + %sketch cb_kha_p; + z12 = lft z11; + %vmfaa_form(12) ; + %vmfea_form(12); + + % to compute the joining point of "kombu for ka". + path inter; + inter = (.8cb_kha_width, .3x_height)--(1.1cb_kha_width, .3x_height); + z400 = cb_kha_p intersectionpoint inter; + +enddef; + +def cb_ga_form = + bot z1=(u,0); x5=cb_ga_width-x1; bot y5=0; + y2=y4=1/3x_height; lft x2=0; rt x4=cb_ga_width; + top z3=(1/2cb_ga_width,x_height); + path cb_ga_p, cv_ge_p, cb_ga_pt; + cb_ga_p=z1..z2..z3..z4..z5; + %sketch cb_ga_p; + + % following is for vowel modifier "e". + numeric na,nb,nc,nd; + (na,nb)= cb_ga_p intersectiontimes + ((0,vm_e_height2)--(1/2cb_ga_width,vm_e_height2)); + z30= point na of cb_ga_p; + top z31=(1/6cb_ga_width,.9vm_e_heightx); + %top z31=(1/2cb_ga_width,vm_e_heightx); + (nc,nd)= cb_ga_p intersectiontimes + ((1/2cb_ga_width,vm_e_height2)--(cb_ga_width,vm_e_height2)); + z32= point nc of cb_ga_p; + cv_ge_p=z30..z31..tension1.2..z32; + + % to compute the joining point of "kombu for ka". + path inter; + inter = (.8cb_ga_width, .3x_height)--(1.1cb_ga_width, .3x_height); + z400 = cb_ga_p intersectionpoint inter; + +enddef; + +% following macro is used for many derivatives of "pa" like gha, va etc., +def cb_pa_form = + top z41=0.85(1/8cb_pa_width+1/2u, 1/4x_height+1/4u); + top z42=0.85(1/4cb_pa_width, 3/8x_height); + top z43=0.85(1/8cb_pa_width, 1/2x_height); + top z44=0.85(0, 3/8x_height); + bot z45=(1/4cb_pa_width, 0); + bot z46=(1/2cb_pa_width, 0.6w_height); + bot z47=(3/4cb_pa_width, 0); + rt top z48=(cb_pa_width, 1/2x_height); + rt z33=(0.9cb_pa_width, .85x_height) ; + + path cb_pa_p,cb_paa_p; + cb_pa_p = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z33; + + + % to compute the joining point of "kombu for pa and its derivatives". + path inter; + inter = (.8cb_pa_width, .25x_height)--(1.1cb_pa_width, .25x_height); + z400 = cb_pa_p intersectionpoint inter; + +enddef; + +def vm_ghu_form (suffix $) = + numeric diff_ht; + numeric mx, my, mz; + diff_ht = x_height-y$; + bot z$x = (x$+vm_u_width/4,y$-1/9diff_ht); + rt z$y = (x$+vm_u_width/2,y$+1/2diff_ht); + top rt z$z = (x$+vm_u_width/3,y$+diff_ht-0.3u); + path vm_ghu_p; + vm_ghu_p=z$..z$x..z$y..z$z; + sketch vm_ghu_p; + %penlabels($aa,$bb,$cc,$d); +enddef; + +def cb_cch_form = + path cb_ccha_pa, cb_ccha_pb, cb_ccha_pc; + numeric k_w, k_yo, k_h, k_xo; + k_w=1/4cb_ja_width; % Kondi width + k_xo=1/6cb_ja_width; + k_yo=3/4x_height; + k_h=1/4x_height; + + top rt rt z1=(k_xo+1/3k_w, k_yo+1/2k_h); + rt top z2=(k_xo+1/2k_w, k_yo); + rt top z3=(k_xo+k_w, k_yo+1/2k_h); + rt top z4=(k_xo+1/2k_w,k_yo+k_h); + + rt z5=(0.075cb_ja_width, 3/4x_height); + + z6=(0, 1/2x_height); + bot z7=(1/4cb_ja_width, 0); + z8=(1/2cb_ja_width, .6w_height); + bot z9=(3/4cb_ja_width, 0); + rt z10=(cb_ja_width, 1/2x_height); + top z11=(0.80cb_ja_width, x_height); + + cb_ccha_pa = z1..z2..z3..z4..z5..z6..z7..z8..z8..z9..z10..z11; + sketch cb_ccha_pa; + z12 = (x11-.5u, y11); + + %vmfa_form(12); % Following are test to see How vowel modifer looks. + %vmfaa_form(12) ; + %vmfea_form(12); + %bar_form(0,cb_ja_width); + %vm_au_form(12,w); + + % to compute the joining point of "kombu for ka". + path inter; + inter = (.8cb_ja_width, .3x_height)--(1.1cb_ja_width, .3x_height); + z400 = cb_ccha_pa intersectionpoint inter; + +enddef ; + + +def cb_ch_ja_base= + numeric j_offset; + j_offset = 0.08cb_ja_width; + lft z1 = (0,j_height); top z2 = (cb_ja_width/8,x_height); + z3 = (cb_ja_width/4+j_offset,j_height); + z4 = (cb_ja_width/8+j_offset,x_height/2); + lft z5 = (0,w_height); bot z6 = (cb_ja_width/8,0); + %z7 = (cb_ja_width/2,0.8w_height); bot z8 = (3/4cb_ja_width,0); + z7 = (cb_ja_width/2,0.8w_height); bot z8 = (.8cb_ja_width,0); +enddef ; + +def cb_ja_form = + + cb_ch_ja_base; % Defines some base points for ja, ch O etc., + rt z9 = (cb_ja_width,w_height); + path cb_ja_pa,cb_ja_pb, cb_nga_p, cb_ja_pc, cb_ja_pe; + cb_ja_pa=z1..z2..z3..z4..z5..z6..tension1.15..z7&z7..tension1.2..z8..z9; + + % to define BOWL for ja. + z40 = (0.2cb_ja_width, .9x_height); top z41=(.95cb_ja_width, x_height); + z60= (z40..z41) intersectionpoint cb_ja_pa ; + z50 = (1.4x3,0.8x_height); + cb_ja_pb=z60..z50..z41; + + % to define BOWL for nga. + z20 = (0.2cb_ja_width, .8x_height); top z21=(.95cb_ja_width, .9x_height); + z30= (z20..z21) intersectionpoint cb_ja_pa ; + top z10 = (1.4x3,.95x_height); + cb_nga_p=z30..z10..z21; + + z42= (x41, y41+1.5u) ; + z43= (x41-u, y42-.75u) ; + z44= (x41-.7u, y42-1.4u) ; + cb_ja_pe = z60..z50..z41..z42..z43..z44 ; + z35=(0.62cb_ja_width, y40-u) ; + cb_ja_pc = rt bot z35 ; + sketch cb_ja_pa; + %penlabels(3w,3x,3y,3z); + + % for "ile" and "tale kattu" + + z52=(x41-u, y41); + %vmfa_form(52); % Following are test to see How vowel modifer looks. + %vmfaa_form(52) ; + %vmfea_form(52); + %bar_form(0,cb_ka_width); + %vm_au_form(52,w); + + % to compute the joining point of "kombu for ka". + path inter; + inter = (.8cb_ja_width, .3x_height)--(1.1cb_ja_width, .3x_height); + z400 = cb_ja_pa intersectionpoint inter; + + enddef; + +def cb_ch_form = + path cb_cha_pa, cb_cha_pb, cb_cha_pc; + cb_ch_ja_base; + rt rt z9 = (0.9cb_ja_width, .6x_height); + cb_cha_pa=z1..z2..z3..z4..z5..z6..tension1.2..z7&z7..tension1.15..z8..tension1.1..z9; + sketch cb_cha_pa; + y11 = y10 = y9; x10=cb_ja_width; x11=x9-(x10-x9); + + top z12 = (x9, x_height); + cb_cha_pb = z10--z11; + cb_cha_pc = z9{dir 40}..z12; + sketch cb_cha_pb ; + sketch cb_cha_pc ; + + z20 = (x12-.1u,y12) ; + %vmfa_form(20); % Following are test to see How vowel modifer looks. + %vmfaa_form(20) ; + %vmfea_form(20); + %bar_form(0,cb_ka_width); + %vm_au_form(20,w); + + % to compute the joining point of "kombu for ka". + path inter; + inter = (.8cb_ja_width, .3x_height)--(1.2cb_ja_width, .3x_height); + %sketch inter; + z400 = cb_cha_pa intersectionpoint inter; + +enddef ; + +def cb_nya_form= + v_e_form; + path cb_ny_pb; + z14= v_e_p intersectionpoint ((x4,.8x_height)--(w,.8x_height)); + z15=z14; + z16=(v_e_width+half_plus_width, .9y14); + cb_ny_pb = z14{dir 60}..z16; + sketch cb_ny_pb; + z17=top(.6(x14+x16), x_height); + %pivot_message(x15c,x7); + %vmfa_form(17); % Following are test to see How vowel modifer looks. + %vmfaa_form(17) ; + %vmfea_form(17); + %bar_form(0,cb_ka_width); + %vm_au_form(400,w); + + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8v_e_width, .3x_height)--(1.1v_e_width, .3x_height); + z500 = v_e_p intersectionpoint inter; + z400=(x500+3u,y500); + %vm_u_form(400); + +enddef ; + +def cb_ta_form = + lft z1=(0,.35x_height); bot z2=(.55cb_ta_width, 0); + rt z3=(cb_ta_width, .35x_height); z4=(.55cb_ta_width, .55x_height); + rt z5=(.4cb_ta_width, .42x_height); + top z6=(.7cb_ta_width, .48x_height); + bot z7=(.75cb_ta_width, .68x_height); + bot z8=(.7cb_ta_width, .78x_height); + top z9=(.5cb_ta_width, x_height); + + top z10 = (.4cb_ta_width, x_height) ; + z11 = (.41cb_ta_width, .8x_height) ; + z12 = (.5cb_ta_width, .85x_height) ; + + path cb_ta_p, cb_te_p; + cb_ta_p = z1..z2..z3..z4..tension 1.2..z5..tension1.2..z6..z7..z8..z9; + cb_te_p = cb_ta_p softjoin z9..z10..z11..z12 ; + bar_forma(cb_ta_width-.5u); % z301 is comming from bar_forma... + %vmfa_form(301); % Following are test to see How vowel modifer looks. + %vmfaa_form(301) ; + %vmfea_form(301); + %vm_au_form(301,vm_au_width); + + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_ta_width, .3x_height)--(1.1cb_ta_width, .3x_height); + z400 = cb_ta_p intersectionpoint inter; + %vm_u_form(400); + +enddef; + +def cb_tta_form = + path cb_tta_p, cb_tta_pa, cb_tta_pe; + lft top z1=(0.12cb_tta_width,x_height); + lft top z2=(0.1cb_tta_width,x_height); + top z3=(0,.75x_height); + lft z4=(.15cb_tta_width, 0.43x_height); + lft z5=(.2cb_tta_width, 0.55x_height); + z6=(0, .25x_height); + bot z7=(1/4cb_tta_width, 0); + + z8=(1/2cb_tta_width, 0.6w_height);%(wedge) + + bot z9=(3/4cb_tta_width, 0); + lft z10=(cb_tta_width, 1/4x_height); + + z11=(0.85cb_tta_width, 1/2x_height); %(wedge) + rt lft z12=(cb_tta_width, 3/4x_height); + rt top z13=(.9cb_tta_width, x_height); + + %For consanant +e + z14=(.8cb_tta_width, .9x_height); + z15=(.89cb_tta_width, .8x_height); + + %cb_tta_pa = z1..tension1.2..z2..z3..tension1.2..z4; + cb_tta_pa = z1..tension1.2..z2..z3..{curl 6.3}z4; + cb_tta_p = z4..z5..tension1.2..z6..z7 + ..z8..z8..z9..z10..z11..z11..z12..z13; + %For consanant +e + cb_tta_pe = z4..z5..tension1.2..z6..z7 + ..z8..z8..z9..z10..z11..z11..z12..z13..z14..z15; + sketch cb_tta_pa ;sketch cb_tta_p; + z20=(x13-u,y13); + + %vmfa_form(20); % Following are test to see How vowel modifer looks. + %vmfaa_form(20) ; + %vmfea_form(20); + %bar_form(0,cb_ka_width); + %vm_au_form(20,w); + + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_tta_width, .3x_height)--(1.1cb_tta_width, .3x_height); + z400 = cb_tta_p intersectionpoint inter; + %vm_u_form(400); + +enddef; + + +def cb_da_form = + top z1=(1/2cb_da_width,x_height); lft z2=(0,w_height); + bot z3=(1/3cb_da_width,0);z4=(1/2cb_da_width,.6w_height); + bot z5=(2/3cb_da_width,0);rt z6=(cb_da_width,1/2x_height); + path cb_da_p,cv_de_p; + cb_da_p= z4..tension 1.2..z5..z6..z1..z2..z3..tension 1.2..z4; + sketch cb_da_p; + numeric na,nb,nc,nd; + (na,nb)= cb_da_p intersectiontimes + ((0,vm_e_height2)--(1/2cb_da_width,vm_e_height2)); + z30= point na of cb_da_p; + (nc,nd)= cb_da_p intersectiontimes + ((1/2cb_da_width,vm_e_height2)--(cb_da_width,vm_e_height2)); + z32= point nc of cb_da_p; + top z31=(1/2cb_da_width,.95vm_e_heightx); + cv_de_p=z30{curl 3}..z31..z32; + bar_forma(cb_da_width-.5u); % z301 is comming from bar_forma... + %vmfa_form(301); % Following are test to see How vowel modifer looks. + %vmfaa_form(301) ; + %vmfea_form(301); + %vm_au_form(301,vm_au_width); + + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_da_width, .3x_height)--(1.1cb_da_width, .3x_height); + z400 = cb_da_p intersectionpoint inter; + %vm_u_form(400); + + enddef; + +def cb_dda_form = + path cb_dda_p, cv_dde_p; + rt z1=(0.1cb_da_width, .5x_height); bot z2=(0.25cb_da_width, 0); + bot z3=(1/2cb_da_width,0.6w_height); + bot z4=(0.7cb_da_width,0); lft z5=(0.9cb_da_width, 0.4x_height); + top z6=(0.6cb_da_width, 0.6x_height); + lft z7=(0.79cb_da_width, 0.7x_height); + top z8=(0.45cb_da_width, .99x_height); + + cb_dda_p=z1...z2..z3..z3...z4...z5..{curl 2.5}z6..z7..z8..tension 1.0..cycle; + sketch cb_dda_p; + + bar_forma(cb_da_width-u); % z301 is comming from bar_forma... + %vmfa_form(301); % Following are test to see How vowel modifer looks. + %vmfaa_form(301) ; + %vmfea_form(301); + %vm_au_form(301,vm_au_width); + + numeric na,nb,nc,nd; + (na,nb)= cb_dda_p intersectiontimes + ((0,vm_e_height2)--(1/2cb_da_width,vm_e_height2)); + z30= point na of cb_dda_p; + (nc,nd)= cb_dda_p intersectiontimes + ((1/2cb_da_width,vm_e_height2)--(cb_da_width,vm_e_height2)); + z32= point nc of cb_dda_p; + top z31=(1/2cb_da_width,.92vm_e_heightx); + cv_dde_p=z30{curl 3}..z31...z32; + + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_da_width, .3x_height)--(1.1cb_da_width, .3x_height); + z400 = cb_dda_p intersectionpoint inter; + %vm_u_form(400); + +enddef; + +def cb_na_form = + bot lft z1=(0,0); lft z2=(0,1/2w_height); + bot lft z1=(0,0); lft z2=(0,1/2w_height); + z3=(1/3cb_na_width,w_height); bot z4=(2/3cb_na_width,0); + rt z5=(cb_na_width,1/3x_height); top z6=(1/2cb_na_width,x_height); + bot z10=(.12cb_na_width, -.65w_height); + + % For consonant+e + top z7 = (.3cb_na_width, x_height); + z8 = (.3cb_na_width, .7x_height); + z9 = (.45cb_na_width, .8x_height); + + path cb_na_p, cb_ne_p; + + cb_na_p=z10..z1..z2..z3..z4..z5..z6; + cb_ne_p = cb_na_p softjoin z6..tension1.3..z7..z8..z9; + + bar_forma(cb_na_width-.5u); % z301 is comming from bar_forma... + %vmfa_form(301); % Following are test to see How vowel modifer looks. + %vmfaa_form(301) ; + %vmfea_form(301); + %vm_au_form(301,vm_au_width); + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_na_width, .3x_height)--(1.1cb_na_width, .3x_height); + z400 = cb_na_p intersectionpoint inter; + %vm_u_form(400); + +enddef; + +def cb_nna_form = + z1a=(1/3cb_nna_width,1/2sc_height); + bot z1=(1/4cb_nna_width,0); lft z2=(0,1/4x_height); + z3=(1/6cb_nna_width,1/2x_height); lft z4=(0,3/4x_height); + top z5=(1/4cb_nna_width,x_height); z6=(1/2cb_nna_width,.8x_height); + top z7=(5/8cb_nna_width,x_height); rt z8=(cb_nna_width,1/2x_height); + bot z9=(2/3cb_nna_width,0); bot z10=(x9-1/2sc_height,sc_height); + bot z11=(x9,3/2sc_height); bot z12=(x9+1/2sc_height,sc_height); + path cb_nna_p; + cb_nna_p= z1a..z1..z2..z3&z3..z4..z5..z6&z6..z7..z8..z9..z10 + ..tension 1.1..z11..z12; + sketch cb_nna_p; + z20=bot(.8cb_na_width, x_height); + %bar_forma(vm_ea1_width); + %bar_forma(cb_nna_width); + %vmfa_form(20); % Following are test to see How vowel modifer looks. + %vmfaa_form(20) ; + %vmfea_form(301); + %vm_au_form(20,vm_au_width); + + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_nna_width, .3x_height)--(1.1cb_nna_width, .3x_height); + z400 = cb_nna_p intersectionpoint inter; + %vm_u_form(400); + + penlabels(1a); +enddef; + +def cb_ba_form = + lft z1 = (u/2,j_height); top z2 = (cb_ba_width/5,x_height); + z3 = (cb_ba_width/3,j_height); lft z4 = (0,w_height); + bot z5 = (cb_ba_width/4,0); bot z6 = (cb_ba_width/2,.6w_height); + bot z7 = (3/4cb_ba_width,0); + rt z8 = (cb_ba_width,w_height); %z8 contact point + top z9 = (.8cb_ba_width,x_height); % z9 another contact point + + %for consant+e + z10 = (.65cb_ba_width, 1.1x_height); + z11 = (.65cb_ba_width, .91x_height); + + path cb_ba_p, cb_be_p; + cb_ba_p = z1..z2..z3..z4..z5..tension 1.2..z6&z6..tension 1.2..z7..z8..z9; + cb_be_p = cb_ba_p softjoin z9..tension1.7..z10..z11; + sketch cb_ba_p; + + z12 = (x9-u,y9); + %vmfa_form(12); % Following are test to see How vowel modifer looks. + %vmfaa_form(12) ; + %vmfea_form(12); + %vm_au_form(12,vm_au_width); + + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_ba_width, .3x_height)--(1.1cb_ba_width, .3x_height); + z400 = cb_ba_p intersectionpoint inter; + %vm_u_form(400); + +enddef; + +def vb_ea_form = + cb_pa_form ; + path vb_a_p,vb_a_pa; + top z9 = (.80cb_ba_width,.80x_height); % z9 another contact point + top z10 = (.35cb_ba_width,x_height); % z9 another contact point + vb_a_p = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..tension 1.2..z10; +enddef ; + +def vb_eae_form = + vb_ea_form; + path vb_a_pb; + z11 = (.25cb_ba_width,.82x_height); + top z12 = (.13cb_ba_width,x_height); + vb_a_pb = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..tension 1.2..z10..z10..z11..z12 +enddef ; + +def vb_i_form = + cb_pa_form; + path vb_a_pb; + top z9 = (3/4cb_pa_width, x_height); z10 = ( 1/2cb_pa_width, .8x_height); + top z11 = (1/4cb_pa_width, x_height); lft z12 = (0, .75x_height); + vb_a_pb = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..z10..z10..z11..z12 +enddef ; + +%def cb_va_form = +% cb_pa_form ; +% path cb_va_p,cb_va_pa; +% top z9 = (.82cb_ba_width,.83x_height); % z9 another contact point +% top z10 = (.4cb_ba_width,x_height); % z9 another contact point +% cb_va_p = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..z10; +% z20 = (.6cb_ba_width,w_height); +% z21 = (cb_ba_width, w_height); +% z30= (z20--z21) intersectionpoint cb_va_p ; +% vm_u_form(30); +%enddef ; + +def cb_ya_form = + + path cb_ya_pa, cb_ya_pb, cb_ya_pc, cb_ye_p; + lft z1 = (0, .49x_height); bot z2 = (3/10cb_ya_width, 0); + rt z3 = (3/5cb_ya_width, y1) ; top z4 = (x2, 2y1); + z20 = (.7x2, 3/10x_height); + z21 = (cb_ya_width+vm_u_width, 3/10x_height); + cb_ya_pa = superellipse( z3, z4, z1, z2, .7) ; + top z30 = (z20--z21) intersectionpoint cb_ya_pa ; + bot z5 = (8/10cb_ya_width, 0); lft z6 = (.85*2x3, .5x_height); + %top z7 = (.9x5, x_height); + top z7 = (.77cb_ya_width, x_height); + + %for consonant+e + z50 = (.75x5, 1.15x_height); + z51 = (.68x5, .98x_height); + z52 = (.89x5, .92x_height); + cb_ya_pb = z30..tension 1.12..z5..z6..z7; + cb_ye_p = z30..tension 1.12..z5..z6..z7..tension 1.4..z50..z51..z52; + %cb_ye_p = z30..tension 1.12..z5..z6..z7; + %sketch z6;sketch z7;sketch z50;sketch z51;sketch z52; + %cb_ye_p = z30..tension 1.12..z5..z6..z7..tension 1.6..z50; sketch z51; sketch z52; + + top z40 = (z20--z21) intersectionpoint cb_ya_pb ; + numeric ya_width ; + ya_width = cb_ya_width + vm_u_width ; + bot z8 = (.79(ya_width), 0); rt z9 = (ya_width, .5x_height); + top z10 = (.8ya_width, x_height) ; + cb_ya_pc = z40..z8..z9..z10 ; + draw cb_ya_pa ; + draw cb_ya_pb ; + draw cb_ya_pc ; + + z90=(x7-1.5u, y7); + bar_form(90, .4cb_ya_width); + %vmfa_form(7); % Following are test to see How vowel modifer looks. + %vmfaa_form(10) ; + %vmfea_form(7); + %vm_au_form(10,vm_au_width); + + % to compute the joining point of "kombu for ya". + path inter; + inter = (.7ya_width, .3x_height)--(1.1ya_width, .3x_height); + z400 = cb_ya_pc intersectionpoint inter; + %vm_u_form(400); + +enddef; + +def cb_la_form = + top z1=(1/4cb_la_width,x_height); + lft z2=(0,x_height/2); bot z3=(1/2cb_la_width,0); + rt z4=(cb_la_width,y2); top z5=(cb_la_width-.8x1,x_height); + z7=(x1+1.5u,2/3x_height); + path cb_la_pa,cb_la_pb,cb_la_p, cb_le_p, cb_le_pb; + cb_la_pb=z1..z2..z3..z4..z5; + z6=point 0.35 of cb_la_pb; + cb_la_pa= bot rt z6..z7..z1; + cb_la_p=cb_la_pa..cb_la_pb; + + %for consonant+e + + z20=(x5-1.5u, x_height+.7u); + z21=(x5-2.3u, x_height-.75u); + z22=(x5-.1u, x_height-.4u); + %draw z21; + + %cb_le_pb=z1..z2..z3..z4..z5..{curl 2}z20..z21; + cb_le_pb=z1..z2..z3..z4..z5..tension1.6..z20..z21..z22; + cb_le_p=cb_la_pa..cb_le_pb; + + % z8 is useful for la+u and la+uu + numeric na,nb; + (na,nb)=cb_la_pb intersectiontimes + ((cb_la_width/2,w_height)..(cb_la_width,w_height)); + z9=point na of cb_la_pb; + z8=rt z9; + z55= lft z5; + %bar_forma(cb_ra_width); % z301 is comming from bar_forma... + %vmfa_form(55); % Following are test to see How vowel modifer looks. + %vmfaa_form(55) ; + %vmfea_form(55); + %vm_au_form(55,vm_au_width); + %vmah_form(55); % tale-ardha akshara + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_la_width, .5x_height)--(1.1cb_la_width, .3x_height); + z400 = cb_la_p intersectionpoint inter; + %vm_u_form(400); +enddef; + +def cb_ra_form = + top z1=(cb_ra_width/2,x_height); + lft z2 = (0,w_height); + bot z3 = (cb_ra_width/2,0); + rt z4 = (cb_ra_width,y2); + path cb_ra_p,cv_re_p; + cb_ra_p = z1..z2..z3..z4..cycle; + sketch cb_ra_p; + numeric na,nb,nc,nd; + (na,nb)= cb_ra_p intersectiontimes + ((0,vm_e_height2)--(1/2cb_ra_width,vm_e_height2)); + z30= point na of cb_ra_p; + (nc,nd)= cb_ra_p intersectiontimes + ((1/2cb_ra_width,vm_e_height2)--(cb_ra_width,vm_e_height2)); + z32= point nc of cb_ra_p; + top z31=(.05cb_ra_width,.8vm_e_heightx); + cv_re_p=z30..z31..tension1.2..z32; + + bar_forma(cb_ra_width); % z301 is comming from bar_forma... + %vmfa_form(301); % Following are test to see How vowel modifer looks. + %vmfaa_form(301) ; + %vmfea_form(301); + %vm_au_form(301,vm_au_width); + %vmah_form(301); % tale-ardha akshara + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_ra_width, .3x_height)--(1.1cb_ra_width, .3x_height); + z400 = cb_ra_p intersectionpoint inter; + %vm_u_form(400); + enddef; + +def cb_rra_form = + top z1=(1/4cb_rra_width,x_height); + y2=y6=1/2x_height; + lft x2=0; rt x6=cb_rra_width; + x3=x1; x5=cb_rra_width-x3; + bot y3=bot y5=0; + top z4=(1/2cb_rra_width,w_height); + top z7=(cb_rra_width-x1,x_height); + z11=(x1+1.5u,y1-1.45uh); + path cb_rra_p,cb_rra_pa,cb_rra_pb; + cb_rra_pb=z1..z2..z3..tension1.2..z4&z4..tension1.2..z5..z6..z7; + numeric na,nb,nc,nd, ne, nf; + (na,nb)= cb_rra_pb intersectiontimes + ((0,5/6x_height)--(1/2cb_rra_width,5/6x_height)); + z8=point na of cb_rra_pb; + (nc,nd)= cb_rra_pb intersectiontimes + ((0.6cb_rra_width,w_height)--(cb_rra_width,w_height)); + z20=point nc of cb_rra_pb; + z19=rt z20; + cb_rra_pa=bot z8..z11..z1; + cb_rra_p=cb_rra_pa..cb_rra_pb; + bot lft z18= z1;% used for placing a vertical line + + z14=(cb_rra_width-1.6x1,x_height-sc_height); + %z15=(x7,1/2x_height);z16=(x1,y15); + z15 = cb_rra_p intersectionpoint + ((0.7cb_rra_width,y8-.6u)--(cb_rra_width,y8-.6u)); + + z22 = cb_rra_p intersectionpoint + ((0, .6x_height)--(.4cb_rra_width, .6x_height)) ; + z23 = cb_rra_p intersectionpoint + ((.6cb_rra_width, .6x_height)--(cb_rra_width, .6x_height)) ; + + z16=(x1,y15); + path cb_rra_pc, cb_rra_pd; + %cb_rra_pc= cb_rra_p..z14..z15--z16; + cb_rra_pc= cb_rra_p..z14..z15;%--z16; + cb_rra_pd = z22--z23 ; + sketch cb_rra_pc; + sketch cb_rra_pd ; + + path inter; + inter = (.8cb_rra_width, .3x_height)--(1.1cb_rra_width, .3x_height); + z400 = cb_rra_pc intersectionpoint inter; + enddef; + +def arkavattu = + path arka_pa, arka_pb ; + top z1=(w/5,h); lft z2=(0,3h/4); z3=(x1,h/2); + z4=(w/3,h/2); lft z5=(0,h/4); bot z6=(x1,0); + bot rt z7=(w,0); + arka_pa= flex(z1,z2,z3)& z3--z4; + arka_pb=flex(z3,z5,z6)& z6--z7; +enddef; + + +def flop(expr e) = + for d = 1 step 1 until e: + draw z[d]; + endfor; +enddef ; + +def cb_ca_form = + path cb_ca_p, cb_ce_p, cb_ca_pb; + lft z1 = (0, .25x_height); bot z2= (.5cb_ca_width, 0); + rt z3 = (cb_ca_width, .42x_height); z4 = (.75cb_ca_width, .82 x_height); + top lft z5 = (.3cb_ca_width, .98x_height) ; + top lft z6 = (.15cb_ca_width, .8x_height) ; + top lft z7 = (.2cb_ca_width, .74x_height) ; + top lft z8 = (.35cb_ca_width, .78x_height) ; + top z9 = (.33cb_ca_width, .85x_height) ; + z22 = (.3cb_ca_width, y3); + z21 = (.58cb_ca_width, .7x_height); + top z20 = (.45cb_ca_width, x_height); + + z30 = (x20-1.25u, x_height+1u); + z31 = (x20-2.25u, x_height+.5u); + z32 = (x20-1.25u, x_height+.1u); + + + cb_ca_p = z20..z21..z22..z1..z2..{dir 92}z3..z4..z5..z6..z7..z8..z9; + cb_ca_pb = z32..z31..z30..tension1.6..z20; + + cb_ce_p = cb_ca_pb softjoin cb_ca_p ; + bar_forma(cb_ca_width-.5u); % z301 is comming from bar_forma... + %vmfa_form(301); % Following are test to see How vowel modifer looks. + %vmfaa_form(301) ; + %vmfea_form(301); + %vm_au_form(301,vm_au_width); + %vmah_form(301); % tale-ardha akshara + + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_ca_width, .3x_height)--(1.1cb_ca_width, .3x_height); + z400 = cb_ca_p intersectionpoint inter; + %vm_u_form(400); + +enddef; + +def cb_va_form = + cb_pa_form ; + path cb_va_p, cb_va_pa, cb_ve_p; + top z9 = (.82cb_ba_width,.8x_height); % z9 another contact point + top z10 = (.5cb_ba_width,x_height); % z9 another contact point + + %for consonant +e + top z11 = (.3cb_ba_width, .8x_height); + z12 = (.5cb_ba_width, .85x_height); + + %cb_va_p = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..{left}z10; + cb_va_p = z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..z10; + cb_ve_p =z41..z42..z43..z43..z44..z45..z46 & z46..z47..z48..z9..z10..z11..z12; + + bar_forma(cb_pa_width-.2u); % z301 is comming from bar_forma... + %vmfa_form(301); % Following are test to see How vowel modifer looks. + %vmfea_form(301); + %vm_u_form(46); + +enddef ; + +def cv_vu_form(suffix $) = + path cv_vu_p; + z$a = z$; + bot z$b = (x$a+.25cb_ba_width, -.5des_depth) ; + z$c = (cb_ba_width+.5vm_u_width, .4x_height); + rt z$d = (cb_ba_width+.35vm_u_width, .8x_height); + sketch z$..z$b..z$c..z$d; +enddef; + +def cv_vuu_form(suffix $) = + path cv_vu_p; + z$a = z$; + bot z$b = (x$a+.25cb_ba_width, -.5des_depth) ; + z$c = (cb_ba_width+.2vm_uu_width, .4x_height); + rt z$d = (cb_ba_width+.5vm_uu_width, .9x_height); + z$e = (cb_ba_width+.8vm_uu_width, .5x_height); + rt z$g = (cb_ba_width+.7vm_uu_width, .05x_height); + z$h = (cb_ba_width+.55vm_uu_width, .1x_height); + z$i = (cb_ba_width+.65vm_uu_width, .25x_height); + sketch z$..z$b..z$c..z$d..z$e..z$g..z$h..z$i; +enddef; + +def vm_a_form(suffix $) = + path vm_a_p ; + rt x$a = vm_a_width; y$a = y$; + x$b = x$a ; y$b = 1.3y$a; + vm_a_p = z$--z$a..{dir 160}z$b; + penlabels($a,$b,$c); +enddef ; + +def vm_a_forma(suffix $) = + path vm_a_p ; + top z51$=(x$-1/6vm_a_width,x_height); + top z52$=(x$+.6vm_a_width,x_height); + top top z53$=(x$+.6vm_a_width,1.3x_height); + vm_a_p = z51$--z52$..{dir 160}z53$; +enddef ; + +def cb_sa_form = + bot lft z1=(0,0); lft z2=(0,1/2w_height); + z3=(.5cb_na_width,.4x_height); bot rt z4=(.85cb_na_width,.02x_height); + rt z44=(.98cb_na_width,.1x_height); + + rt z5=(cb_na_width,.5x_height); top z6=(.8cb_na_width,.9x_height); + path cb_sa_p; + top lft z77=(1/3cb_na_width-1/2c_height, top (x_height - c_height)); + place_lit_circ(77, 1); + cb_sa_p=z1..z2..z3..{z5-z6}z4.. z44..z5..z6; + bar_forma(cb_na_width-u); % z301 is comming from bar_forma... + %vmfa_form(301); % Following are test to see How vowel modifer looks. + %vmfaa_form(301) ; + %vmfea_form(301); + %vm_au_form(301,vm_au_width); + %vmah_form(301); % tale-ardha akshara + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_na_width, .3x_height)--(1.1cb_na_width, .3x_height); + z400 = cb_sa_p intersectionpoint inter; + %vm_u_form(400); +enddef; + +def cb_ha_form = + lft z1 = (0, .45x_height) ; bot z2 = (.24cb_ha_width, 0); + z3 = (.48cb_ha_width, .3x_height); z4 = (cb_ha_width-x3, .6x_height); + z5 = (.76cb_ha_width, .8x_height); rt z6 = (cb_ha_width, .4x_height); + bot z7 = (.76cb_ha_width, 0); z8 = (cb_ha_width-x3, y3); + z9 = (x3, y4); z10 = (x2, y5); + z11 = (x3,.65x_height); top z12 = (.4cb_ha_width, x_height); + path cb_ha_p, cb_ha_pa ; + cb_ha_p = z1..z2..z3..z4..z5..z6..z7..z8..z9..z10..cycle; + cb_ha_pa = z11..{dir 130}z12; + sketch cb_ha_p ; + sketch cb_ha_pa ; + bar_forma(cb_ha_width-u); % z301 is comming from bar_forma... + %vmfa_form(301); % Following are test to see How vowel modifer looks. + %vmfaa_form(301) ; + %vmfea_form(301); + %vm_au_form(301,vm_au_width); + %vmah_form(301); % tale-ardha akshara + % to compute the joining point of "kombu for nya". + path inter; + inter = (.8cb_ha_width, .3x_height)--(1.1cb_ha_width, .3x_height); + z400 = cb_ha_p intersectionpoint inter; + %vm_u_form(400); +enddef ; + +def cb_lla_form = + z1=(.18cb_lla_width,.84x_height); z2=(.25cb_lla_width,.8x_height); + top z3=(.32cb_lla_width,.86x_height); top z4=(x2,x_height); + lft z5 =(0, .8x_height); + z6 = (1/2cb_lla_width, .4x_height); + z7 = (3/4cb_lla_width, .2x_height); + bot z8 = (1/2cb_lla_width,0); + z9 = (1/4cb_lla_width,y7); + rt z10 = (cb_lla_width,.75x_height); + + top z11 = (.8cb_lla_width,x_height); + + z19 = (.9cb_lla_width, .9x_height); + z20 = (x19-1.2u, y19+1.2u); + z21 = (x19-1.5u, y19); + z22 = (x19-.95u, y19+.15u); + path cb_lla_p, cb_lle_p, cb_lla_pb; + + cb_lla_p = z1..z2..z3..z4..z5..z6..z7..z8..z9..z6..z10..z11; + + %cb_lla_pb = z11..tension 1.3..z20..z21; + + %cb_lle_pb = cb_lla_p softjoin cb_lla_pb ; + cb_lle_p = z1..z2..z3..z4..z5..z6..z7..z8..z9..z6..z10..z19..tension 1.6..z20...z21..z22; + %cb_lle_p = z1..z2..z3..z4..z5..z6..z7..z8..z9..z6..z10..z19..z11; + z12 = lft lft z11; + %vmfa_form(12); % Following are test to see How vowel modifer looks. + %vmfaa_form(12) ; + %vmfea_form(12); + %vm_au_form(12,vm_au_width); + %vmah_form(12); % tale-ardha akshara + % to compute the joining point of "kombu for nya". + path inter; + inter = (.6cb_lla_width, .22x_height)--(1.1cb_lla_width, .22x_height); + z400 = cb_lla_p intersectionpoint inter; + %vm_u_form(400); + +enddef; + +def cb_sha_form = + cb_va_form; + top lft z77=(1/2cb_pa_width-1/2c_height-.5u, top (x_height - c_height)); + place_lit_circ(77, 1); + bot rt z66 = (cb_pa_width, 0); + path cb_sha_pb; + z65 = (.65cb_pa_width, .6x_height); + cb_sha_pb = z65--z66; + %bar_forma(cb_ra_width); % z301 is comming from bar_forma... + %vmfa_form(301); % Following are test to see How vowel modifer looks. + %vmfaa_form(301) ; + %vmfea_form(301); + %vm_au_form(301,vm_au_width); + %vmah_form(301); % tale-ardha akshara +enddef ; + +def cb_ksha_form = + cb_ka_form; + top z11 = (1/6cb_ka_width, -.4cb_ksha_depth); + lft z12 = (0,-1/2cb_ksha_depth); + bot z13 = (1/4cb_ka_width,-cb_ksha_depth); + z14 = (.48cb_ka_width,-2/3cb_ksha_depth); + bot z15 = (3/4cb_ka_width,-cb_ksha_depth); + rt z16 = (.95cb_ka_width,-1/2cb_ksha_depth); + top z17 = (.8cb_ka_width, -.01cb_ksha_depth); + bot rt z18 = (cb_ka_width,-cb_ksha_depth); + bot z19 = (.9cb_ka_width, y16); + sketch z11..z12..z13..z14; sketch z14..z15..z16..z17; + sketch z19..z18; +enddef; + +def v_a_form = + top z1=(1/4v_a_width,x_height); + z10=(x1-u,y1-uh); z11=(x1,y1-2(y1-y10)); + lft z3=(0,2/3x_height); bot z4=(1/2v_a_width,0); + rt z5=(v_a_width,2/3x_height); top z6=(v_a_width-1.5u,x_height); + z7=(4/5x5,.55x_height); z8=(1/4w,y7); + z12=(.65v_a_width,5/6x_height); rt z2=(v_a_width,1/2x_height); +enddef; + +def v_aa_form = + z1=(.1v_a_width,.7x_height); z2=(.3v_a_width,.85x_height); + top z3 = (.15v_a_width, x_height); lft z4 = (0, .75x_height); + lft z4a = (.12v_a_width, .2x_height); + bot z5 = (.5v_a_width, 0); rt z6 = (v_a_width, .3x_height); + bot z66 = (.85v_a_width, .55x_height); + top z7 = (.76v_a_width, .7x_height); top z8 = (.88v_a_width, x_height); + rt z9 =(v_a_width, .85x_height); + rt z11 =(x7, y7); + rt z12 =(.4v_a_width, y11); + sketch z1..z2..z3..z4..z4a..z5 ..tension 1.2..z6..z66..z7..z8..z9..z7..z11--z12; +enddef; + +def v_u_form = + path v_u_pa, v_u_pb; + z1 = (.13v_u_width, .78x_height); z2= (2x1, .88x_height); z3a=(.09v_u_width,y2); + top lft z3 = (x1, x_height); + lft z4 = (0, .43x_height); bot z5 = lft (.2v_u_width, 0); + z5a = (.38v_u_width, .53y6); + %top z6 = (.52v_u_width, x_height); z6a = (.65v_u_width, 1.2y5a); + top z6 = (.52v_u_width, x_height); z6a = (.66v_u_width, y5a); + bot z7 = (.8v_u_width, 0); rt z7a = (v_u_width, .5x_height); + rt z8 = (.94v_u_width, .9x_height) ; top rt z8a = (.91v_u_width,x_height); + + %v_u_pa = z1..z2..z3..z3a..tension 1.2..z4..z5...z5a..tension 1.2..z6 + % {dir 9}..z6a{dir -85}..z7..z7a..z8..z8a; + v_u_pa = z1..z2..z3..z3a..z4..z5...z5a..z6..z6a..z7..z7a..z8..z8a; + %v_u_pb = z1..z2..z3..z3a..tension 1.2..z4..z5..z5a..tension 1.2..z6 + % {dir 5}..z6a{dir -85}..z7; + %flop(8); draw z3a; draw z5a; draw z6a; draw z7a; draw z8a ; + sketch v_u_pa; +enddef; + +def vm_uu_form (suffix $) = + bot z1$ = (x$+.1vm_uu_width, 0); z2$ = (x$+.4vm_uu_width, .66x_height); + top z3$ = (x$+.52vm_uu_width,x_height); + rt z4$ = (x$+vm_uu_width, .5x_height); + bot z5$ = (x$+.75vm_uu_width, 0); z6$ = (x$+.65vm_uu_width, .1x_height); + rt z7$ =(x$+.85vm_uu_width, .25x_height); + sketch z$..z1$..z2$..z3$..z4$..z5$..z6$..z7$; +enddef; + +def v_uu_form = + numeric wid, het ; + wid = v_uu_width ; het = x_height ; + z1 = (1/10wid,8/10het) ; z2 = (2x1, y1); top z3 = (x1, het) ; + lft z4 = (0-.5u, 1/2 het) ; bot z5 = (1/8wid, 0) ; + z6 = (1/4wid, 1/2het) ; top z7 = (3/8wid, het) ; + z8 = (1/2wid, 1/2het) ; bot z9 = (5/8wid, 0) ; + z10 = (3/4wid, 1/2het); top z11 = (7/8wid, het) ; + rt z12 = (wid+.5u, 1/2het) ;bot z13 = (wid-x3, 0) ; + z14 = (wid-x2, het-y2) ; z15 = (wid-x1, het-y1) ; + %sketch z1...z2...z3...z4...z5...z6...z7...z8...z9...z10...z11...z12...z13...z14...z15; + sketch z1..z2..z3..z4..tension 1.2..z5..tension 1.2..z6..tension 1.2..z7..tension 1.2..z8..tension 1.2..z9..tension 1.2..z10..tension 1.2..z11..tension 1.2..z12..z13..z14..z15; +enddef; + +def v_ro_form = + path v_ro_p; + z1 = (.5v_ro_width, .8x_height); z2 = (.25v_ro_width, .7x_height); + lft z3 = (0, .8x_height); top z4 = (.5v_ro_width, x_height); + rt z5 = (v_ro_width, .5x_height); + bot z6 = (x4, 0); lft z7 = (0, .2x_height); z8 = (x2, .3x_height); + z9 = (x1, .2x_height); + v_ro_p = z1..z2..z3..z4..z5..z6..z7..z8..z9; + + z10 = (.6v_ro_width, y8); z11 = (v_ro_width+2vm_u_width, y10); + sketch v_ro_p; + z19 = (z10--z11) intersectionpoint v_ro_p; + vm_u_form(19); + z29 = (x19+.4vm_u_width, x_height); + vm_a_forma(29); + sketch vm_a_p; + z20=z19b; + vm_u_form(20); + z39 = z20b; +enddef; + +def barandhook_formk (suffix $)(expr bar_width,t) = + z$a=(x$+bar_width-u,y$); rt z$b=(x$a+u,y$-uh); + bot z$c =(x$b-u,y$-2uh); lft z$d=(x$b-2u,y$b); + top z$e=(x$a-u,y$); rt z$f=(x$b,y$+1.5uh); + top z$g=(x$a,y$f+uh); z$h=(x$d,y$f); + path barandhook_p; + barandhook_p= subpath(0,t) of (rt z$--z$a..z$b..z$c..z$d..z$e..z$f..z$g..z$h); + sketch barandhook_p; + penlabels($a,$b,$c,$d); +enddef; + +def barandhook_form (suffix $)(expr bar_width,t) = + z$a=(x$+bar_width-u,y$); rt z$bb=(x$a+u,y$-1/2des_depth); + rt z$b=(x$a+u,y$-des_depth+uh); + bot z$c =(x$b-u,y$b-uh); lft z$d=(x$b-1.75u,y$b); + top z$e=(x$d+.75u,y$b+.5u); rt z$f=(x$b,y$+1.5uh); + path barandhook_p; + barandhook_p= (rt z$--z$a..z$bb..z$b..z$c..z$d..z$e); + %barandhook_p= subpath(0,t) of (rt z$--z$a..z$bb..z$b..z$c..z$d..z$e); + sketch barandhook_p; + penlabels($a,$b,$c,$d); +enddef; + +%Following is old version it's obsolete............... +def vm_au_forma (suffix $)(expr bar_width) = % see the above diagram + numeric na; + %top z$e=z$; % screwed up GHA+AU. + %z$e=z$; + z$e=(x$, y$); + z$a = (x$e+2/10(bar_width-u),y$e); + z1000 = (x$-.5u,asc_height2); + % 1000 was chosen arbitrarily + % we needed some suffix not used by any user of + % this macro + barandhook_form(1000,bar_width,5); + z$d=z1000a; + %next two statements solve for c + x$c = x$a; + z$c = whatever[z1000,z$d]; + na:=x$c+(x1000a-x$c)/3; % used for alligning pa,pha,sha.. + sketch z$e--z$a{right}..{left}z$c; + penlabels($a,$b,$c,$d,$e,1000); +enddef; + +def vm_au_form (suffix $)(expr bar_width) = % see the above diagram + numeric na; + %top z$e=z$; % screwed up GHA+AU. + %z$e=z$; + z$e=(x$, y$); + z$a = (x$e+5/10(bar_width-u),y$e); + z1000 = (x$+2.3u,asc_height2); + % 1000 was chosen arbitrarily + % we needed some suffix not used by any user of + % this macro + barandhook_form(1000,.9bar_width,5); + z$d=z1000a; + %next two statements solve for c + x$c = x$a; + z$c = whatever[z1000,z$d]; + na:=x$c+(x1000a-x$c)/3; % used for alligning pa,pha,sha.. + sketch z$e--z$a{right}..{left}z$c; + penlabels($a,$b,$c,$d,$e,1000); +enddef; + +% Begin of Vowel Modifiers..... + +def vm_ee_form = + z0 = (.5vm_ee_width+u, y2); + z1 = (.7vm_ee_width+u, 2/3x_height); + rt z2 = (vm_ee_width+u, y1+1/6x_height); + top z3 = (1/2vm_ee_width+u, x_height); + lft z4 = (0+u, .6x_height); bot z5 = (3/5vm_ee_width+u, 0); + sketch z0..z1..z2..z3..z4..z5; +enddef; + +def vm_ro_form = + z1=(.8vm_ro_width,3/5x_height);rt z2=(vm_ro_width,0); + bot z3=(1/2vm_ro_width,-des_depth);z4=(.15vm_ro_width,-.1des_depth); + z5=(.2vm_ro_width,.05x_height); z6 = (.25vm_ro_width, .1x_height); + z7=(.3vm_ro_width,-.2des_depth); + path vm_ro_p; + vm_ro_p = z1..z2..z3..z4..z5..z6..z7; + path ct; + ct = vm_ro_p scaled 1 shifted (-3u, -.5des_depth) rotated 0 ; + sketch ct; +enddef; + +def vm_y_form = + top z1=(.75vm_y_width, 3/5x_height); rt z1a=(vm_y_width,3/10x_height); + rt z2=(.8vm_y_width,.1x_height); + rt z3a=(vm_y_width,-1/2des_depth); + bot z3=(1/2vm_y_width,-des_depth);z4=(.15vm_y_width,-.1des_depth); + z5=(.2vm_y_width,.05x_height); z6 = (.25vm_y_width, .1x_height); + z7=(.3vm_y_width,-.2des_depth); + path vm_y_p ; + vm_y_p = z1..z1a..z2..z2..z3a..z3..z4..z5..z6..z7; +enddef; + +%def vm_e_form_a (suffix $) (expr xoff, yoff) = +% z$1 = (x$+xoff, y$+yoff); +% z$2 = (x$1+u, y$1+u); +% z$3 = (x$1, y$1+2u); +% z$4 = (x$1-u, y$1+u); +% z$5 = (x$1-.7u, y$1+.1u); +% path vm_e_p; +% vm_e_p = z$..z$1..z$2..z$3..z$4..z$5; +%enddef; + +def vm_e_form_a (suffix $) (expr xoff, yoff) = + z31 = (x$+xoff, y$+yoff); + z32 = (x31+u, y31+u); + z33 = (x31, y31+2u); + z34 = (x31-u, y31+u); + z35 = (x31-.7u, y31+.1u); + path vm_e_p; + vm_e_p = z$..z31..z32..z33..z34..z35; +enddef; + +def vm_e_formb(suffix $) (expr a, b) = + z50 = (a-1/2u, b+u) ; + z51 = (a, b) ; + sketch z$..z50..z51 ; +enddef; + +def vm_e_form = + path vm_e_p; + lft z551 = (0,x_height+1.2ascunit); + top z552 = (1/2vm_e_width,x_height); + rt z553 = (vm_e_width,x_height+2ascunit); + z554 = z553; + lft z555 = (0,x_height+3ascunit); + z556 = (1/2vm_e_width,y555); + top z557=(1/2vm_e_width,vm_e_height1+ascunit); + vm_e_p = subpath (0.4,1) of z551{down}..{right}z552..z553..z557..z555..z556; + sketch vm_e_p; + %sketch subpath (0.4,1) of z551{down}..{right}z552..z553..z557..z5..z556; + % hook can be attached at z7 +enddef; + +def naa_form = + path naa_p ; + z1 = bot lft (cb_na_width, x_height) ; z2 = bot ( 2u, x_height) ; + z3 = rt (0, 5/6x_height) ; + z4 = bot (u, 2/3x_height) ; z5 = (3/4cb_na_width, y4) ; + z6 = rt (0, 1/2x_height) ; + z7 = bot (u, 1/3x_height); z8 = (1/2cb_na_width, y7) ; + z9 = rt (0, 1/6x_height) ; + z10 = top (u, 0) ; + + naa_p = z1--z2...z3...z4--z5 &z5--z4...z6...z7--z8 & z8--z7...z9..z10 ; + sketch naa_p ; +enddef ; + +input kanvarna ; +input kanlets; + +end; diff --git a/Master/texmf-dist/fonts/source/public/itrans/kanparam.mf b/Master/texmf-dist/fonts/source/public/itrans/kanparam.mf new file mode 100644 index 00000000000..8346ee22b24 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kanparam.mf @@ -0,0 +1,181 @@ +% This file is part of the KannadaTeX Software Package. +%Copyright (c) 1991 G.S. Jagadeesh & Venkatesh. Gopinath. +% +%Author: Modified from TeluguTex by, GS. Jagadeesh & Venkatesh Gopinath. +%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 various parameters used in making a font +% for kannada. Many of the parameters are used in several places. +% Before changing anything here you should be very clear about +% the possible impact. +% +% +input kanbase % read basefile + +font_identifier :="KANNADA"; + +% parameters + +u#:=designsize/18; % unit width +v#:=designsize; % total height +uh#:=v#/18; % unit height +top_shoulder:=2/36; % top shoulder proportion +bot_shoulder:=2/36; % bottom shoulder proportion +xheight:=15/36; % x height proportion +ascheight:=10/36; % ascender height proportion +desdepth:=7/36; % descender depth proportion +figheight:=6/36; % height of roman digits + +em_width#:=18u#; % same as font_quad +%font_quad em_width#; + +asc_height#:=(ascheight+xheight)*v#; +des_depth#:=desdepth*v#; +x_height#:=xheight*v#; +bot_depth#:=(bot_shoulder+desdepth)*v#; +top_height#:=(top_shoulder+ascheight+xheight)*v#; +fig_height#:=(figheight+xheight)*v#; % height of roman digits +kfig_width#:=7.5u#; % width of kannada digits +kfig_height#:=x_height#; % height of kannada digits + +asc_height1#:=(1/3ascheight+xheight)*v#; +asc_height2#:=(2/3ascheight+xheight)*v#; + +%j_height#:=2/3x_height#; % height of bowls in ja,ta etc +j_height#:=.6x_height#; % height of bowls in ja,ta etc +c_height#:=1/3x_height#; % height of circle in ma, pa etc +% c_height is used to draw small circles. If we use a wide pen then the circle +% may not be clearly visible. Hence the following statement. +if c_height# < (3.2*pen_width#):c_height#:=3.2pen_width#; fi; +w_height#:=1/3x_height#; % height of wedge in da,ta etc +ascunit#:=1/6(asc_height#-x_height#); % a unit for acsender area +vmwidth#:=7u#; % width of vowel modifiers +top_accent#:=1.5uh#; % base for accents that appear at top +bot_accent#:=1.5uh#; % base for accents that appear below +cc_scale:=0.65; % scale factor for consonant conjuncts +ccwidth#:=vmwidth#; % width of co.conjuncts that appear on % the side +dot_radius#:=u#; % radius of dot +wedge_height#:=x_height#/4; % height of wedge (in dha, uu etc) +wedge_depth#:=4/9des_depth#; % depth of wedge(in dha,uu etc) +sc_height#:=1/6x_height#; % misc. usage + +v_a_width#:=10u#; % width of vowel a +v_e_width#:=7.5u#; % width of vowel e +v_u_width#:=10u#; % width of vowel u (like dda no hat +v_uu_width#:=13u#; % width of vowel u (like dda no hat +v_lo_width#:=11u#; % width of vowel lo(inverted ja) +v_ea_width#:=6u#; % width of vowel ea(like pa without +v_i_width#:=7u#; % width of vowel i +v_ro_width#:=4.5u#; % width of vowel ro + +vm_ah_width# :=4u#; +vm_ah_height# :=3u#; +vm_a_width#:=2u#; % width of vowel modifier a +vm_aa_width#:=6u#; % width of vowel modifier aa +vm_e_width#:=4u#; % width of vowel modifier e +vm_ee_width#:=4u#; % width of vowel modifier e +vm_e_height1#:=asc_height2#; % height of vowelmodifier e (used +vm_ea_width# := 2u#; +vm_ea1_width# := 8u#; +vm_ea_height# := 2u#; +vm_e_height2#:=5/6x_height#; % vowel mod. e for ra,ga.da sits +vm_e_heightx#:=(1/2ascheight+xheight)*v#; % between vm_e_height2 and 3 + % with certain consonants kha,cha, + % ccha,ja,ta,na,ba,bha,ma,la,va etc) +vm_u_width#:=4.5u#; % width of ubowl (attached to letter +vm_uu_width#:=8u#; % width of uubowl (attchd to lett). +vm_ro_width#:=6u#; % width of vowel modifier ro +vm_y_width#:=6u#; % width of vowel modifier ro +vm_bar_width#:=4u#; % width of vowel modifier ro +vm_ao_width#:=8u#; % width of vowel modifier ao +vm_aoo_width#:=vm_ao_width#+1.5u#; % width of vowel modifier aoo +vm_au_width#:=8u#; % width of vowel modifier ao + +vm_e_width1#:=3u#; % width of vowel modifier e +vm_e_heightj#:=2.25u#; % height of vowel modifier e + +%vm_e_width#:=3u#; % width of vowel modifier ao +%vm_e_height#:=2u#; % width of vowel modifier ao + +cb_ka_width#:=6u#; % width of ka +cb_kha_width#:=7.5u#; % width of kha +cb_ga_width#:=6u#; % width of ga +cb_cha_width#:=9u#; % width of cha +cb_ja_width#:=7.5u#; % width of ja +%cb_tta_width#:=10.5u#; % width of tta +cb_tta_width#:=7.5u#; % width of tta +cb_nna_width#:=9u#; % width of nna +cb_ta_width#:=7u#; % width of ta +cb_da_width#:=9.0u#; % width of da +cb_ha_width#:=9.0u#; % width of da +cb_na_width#:=7u#; % width of na +cb_ba_width#:=7.5u#; % width of ba +cb_ya_width#:=10u#; % width of ya (without bowl) +cb_ra_width#:=6u#; % width of ra +cb_rra_width#:=9u#; % width of rra +cb_la_width#:=9u#; % width of la +cb_lla_width#:=6u#; % width of lla +cb_pa_width#:=7.5u#; % width of pa +cb_ca_width#:=5.5u#; % width of ca +cb_sha_width#:=cb_pa_width#+1.5u#; % width of sha +cb_ksha_width#:=cb_ka_width#; % width of ksha +cb_ksha_depth#:=des_depth#; % floor of ksha +cb_np_width#:=ccwidth#; % width of nakarapollu +cb_vg_width#:=ccwidth#; % width of valapalagilaka + +cv_pu_width#:=cb_pa_width#+2u#; % width of u modifier for pa +cv_pu_depth#:=1.5uh#; % depth of u modifier for pa + +p_comma_width#:=2dot_radius#+u#; % width of comma +half_plus_width#:=cb_ja_width#/2; % width of symbol like truncated + + +% ul#, ur# indicate the amount of white space that is added +% to a symbol. Following are the criteria used to add space +% consonant base, vowels - none +% punctuation,digits - on right +% consonant conjuncts that appear below,vowel modifiers that appear +% above/below - none +% accents that appear below/above - none +% consonant conjuncts that appear on the side - on left +% vowel modifiers for u, uu - none +% vowel modifiers for ro, roo - on left +% While composing Kannada text using TeX, space is added after a syllable +% by the macros that build a syllable. +ul#:=2u#; % white space (on left) +ur#:=2u#; % white space (on right) + + +%generate kannada; % switch to driver files +% Font Dimensions + +font_slant slant; +font_x_height x_height#; +font_normal_space 6u#; +font_normal_stretch 3u#; +font_normal_shrink 2u#; +font_quad em_width#; +font_extra_space 2u#; + +%ligature and kern information + +%ligtable "'": "'" =: p_cquotes_code; % close quotes +%ligtable "`": "`" =: p_oquotes_code; % open quotes +%ligtable "-": "-" =: p_lhyphen_code; % en dash +%ligtable p_lhyphen_code: "-" =: p_vlhyphen_code; % em dash + +%if not testing: expandafter stop fi; diff --git a/Master/texmf-dist/fonts/source/public/itrans/kanspc.mf b/Master/texmf-dist/fonts/source/public/itrans/kanspc.mf new file mode 100644 index 00000000000..98d74be993f --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kanspc.mf @@ -0,0 +1,52 @@ +%kanspc% +% generates striped characters with shading +%input kanmode; +font_size 72pt#; +slant:=0; +pen_width#:=2.5pt#; +% Following code(with minor modifications) is taken from the article, +% The ABC's of Special Effects by Georgia K. M. Tobin, +% that appeared in TUGboat, Volume 9(1988), No. 1 +vardef special_effects= +% creates characters filled with stripes and followed by a shadow. + cullit; + picture Normalchar; + Normalchar:=currentpicture; + clearit; +% Depending on the output device, pen size(0.1pt) may need to be +% changed. + pickup pencircle scaled 0.1pt; + filldraw (0,-d)--(w,-d)-- + (w,h)--(0,h)--cycle; + picture Blackbox; + Blackbox:=currentpicture; + picture Reversevideo; + Reversevideo:=Blackbox-Normalchar; + clearit; +% Depending on the output device,stepsize(uh/3) may need to be +% changed. + for f=-d step uh/3 until h: + draw(0,f)--(w,f); + endfor; + currentpicture:= + currentpicture-Reversevideo; + cullit; + picture Stripedchar; + Stripedchar:=currentpicture; + clearit; +% Depending on the output device,offset(1.5pt) may need to be +% changed. + currentpicture:=Normalchar shifted(1.5pt,-1.5pt); + picture Shadow; + Shadow:=currentpicture; + clearit; + currentpicture:=Shadow-Normalchar; + cullit; + picture Shadowonly; + Shadowonly:=currentpicture; + clearit; + + currentpicture:=Shadowonly+Stripedchar; +enddef; +input kanmain; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/kanvarna.mf b/Master/texmf-dist/fonts/source/public/itrans/kanvarna.mf new file mode 100644 index 00000000000..f2a429c2dd3 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/kanvarna.mf @@ -0,0 +1,2359 @@ +% 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-------------- + + diff --git a/Master/texmf-dist/fonts/source/public/itrans/tamilORG.mf b/Master/texmf-dist/fonts/source/public/itrans/tamilORG.mf new file mode 100644 index 00000000000..d2c30d53140 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/tamilORG.mf @@ -0,0 +1,2020 @@ +boolean dodraw; +dodraw=true; +boolean goleft; +goleft=false; +def tthinnest=max(hair,2) enddef; +def tthinner=max(1.4hair,2) enddef; +def tthin=max(1.8hair,2) enddef; +def tmed=max(.75curve,2) enddef; +def tthick=curve enddef; +def tthicker=1.2curve enddef; +def tthickest=1.4curve enddef; + +string callchar; +numeric oldh; numeric oldw; numeric oldd; + +def charspec(expr c, w_sharp, h_sharp, d_sharp) = + oldh:=h; oldw:=w; oldd:=d; + w:=hround(w_sharp*hppp); h:=vround(h_sharp*hppp); d:=vround(d_sharp*hppp); +enddef; + +input tamilmax; + +def cloney(suffix $,@) = + y$=y@; y$r=y@r; y$l=y@l; +enddef; + +def clonex(suffix $,@) = + x$=x@; x$r=x@r; x$l=x@l; +enddef; + +def small_iito (suffix @,$)(expr iheight) = +x$99=x@; y$99=y@; pos$99(tthin,180); +x$100=x$99-2.5u; y$100=.5[y$99,y$1]; pos$100(tthin,135); +x$1=x@+.5u; top y$1r=iheight; pos$1(tthick,90); +x$2=x$1+u; y$2=y$1-.5u; pos$2(.7tthick,60); +x$3=x$2; y$3=y$2-2u; pos$3(tthin,-90); +x$4=x$4l=x$4r=x$2; y$4=y$2; y$4r=y$4+1; y$4l=y$4-1; +filldraw stroke z$99e{left}...{up}z$100e...{right}z$1e...z$2e...{left}z$3e...{right}z$4e; +penlabels($1,$2,$3,$4); +enddef; + +def help_uu = +charspec("9",x_height#,.75x_height#,0); +x181=x101=u; x106=x107=x108=x109=.55w; x111=x112=.8w; x110=w; +x103=x105=.5[x101,x106]; x102=x104=.5[x101,x103]; +bot y104r=y106=y107=y111=0; top y105r=y108=top y109r=top y110r=y112=h; +y101=y181=y103=.5y102; y102=.6h; +pos101(.8tthinner,180); pos102(.8tthin,90); pos103(.8tmed,0); +pos104(.8tthin,-90); pos181(.8tthinner,-180); pos105(.8tthick,-270); +pos106(.8tthin,-360); pos107(.8tthin,0); pos108(.8tthin,0); +pos109(.8tthin,90); pos110(.8tthin,90); pos111(.8tthick,0); pos112(.8tthick,0); +if dodraw: +filldraw stroke z101e...{right}z102e...{down}z103e...{left}z104e..z181e...{right}z105e...{down}z106e; +filldraw stroke z107e---z108e; filldraw stroke z109e---z110e; +filldraw stroke z111e---z112e; +fi +enddef; + + +cmchar "Tamil vii"; +beginchar(115,1.5x_height#+u#,body_height#,0); +adjust_fit(0,0); +callchar:="v"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x21r=x10l; x21l=x10r; x21=x10; cloney(21,10); small_iito(21,s,h); +endchar; + +cmchar "tamil a"; +beginchar(0,2x_height#,x_height#,.6desc_depth#); +adjust_fit(0,0); +x3=.5[x9,x11]; top y1r=h; y5=y12=h; y2=y4=y6=.5[y3,y1]; y3=.8bar_height; x1=x3; +x4=x8=.4[x9,x11]; x2=.6[x9,x11]; x5=.6[x9,x11]; x6=.7[x9,x11]; x7=.8[x9,x11]; x11=x12=x13=w-u; +x9=u; x10=.15[x9,x11]; y8=-.8d; y13=-d; y7=bar_height; y9=.2bar_height; y10=y11=.25bar_height; +z20=z1; +pos1(tthinnest,90); pos2(tthin,0); pos3(tthinnest,-90); pos4(tthinnest,-180); +pos5(hair,90); pos6(curve,0); pos7(tthick,-360); pos8(tthinner,-450); +pos9(tthinnest,-580); pos10(tthinnest,-630); pos11(tthinnest,-630); pos12(tthick,0); +pos13(tthick,0);pos20(tthinner,-270); +filldraw stroke z1e...z2e...z3e...z4e...z20e...{down}z7e...{left}z8e...{up}z9e...z10e---z11e; +filldraw stroke z12e---z13e; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar; + +cmchar "tamil aa"; +beginchar(1,2.5x_height#,x_height#,1.4desc_depth#); +adjust_fit(0,0); +x3=.5[x9,x11]; top y1r=h; y5=y12=h; y2=y4=y6=.5[y3,y1]; y3=.8bar_height; x1=x3; +x4=x8=.4[x9,x11]; x2=.6[x9,x11]; x5=.6[x9,x11]; x6=.7[x9,x11]; x7=.8[x9,x11]; x11=x12=x13=2x_height-u; +x9=u; x10=.15[x9,x11]; y8=-.48desc_depth; y13=-.6desc_depth; y7=bar_height; y9=.2bar_height; y10=y11=.25bar_height; +z20=z1; x31=x31r=x31l=x11+u; cloney(31,11); +x32r=x13r; y32=y13; pos32(tthinner,0); x34=w-u; y34=y32; pos34(tthinner,-720); +x33=.5[x32,x34]; y33=0; pos33(tthin,-90); x35=.1[x13,x8]; y35=-1.2d; %bot y35l=-d; +pos35(.8tthick,-810); x36=.2[x8,x13]; y36=-desc_depth; pos36(tthin,-900); +x37=.5[x8,x13]; y37=y13; pos37(tthinner,-990); +pos1(tthinnest,90); pos2(tthin,0); pos3(tthinnest,-90); pos4(tthinnest,-180); +pos5(hair,90); pos6(curve,0); pos7(tthick,-360); pos8(tthinner,-450); +pos9(tthinnest,-580); pos10(tthinnest,-630); pos11(tthinnest,-630); pos12(tthick,0); +pos13(tthick,0);pos20(tthinner,-270); +filldraw stroke z1e...z2e...z3e...z4e...z20e...{down}z7e...{left}z8e...{up}z9e...z10e---z31e{right} + ...{down}z34e...{left}z35e...{up}z36e...{right}z37e; +filldraw stroke z12e---z13e; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,31,32,33,34,35,36,37); +endchar; + +cmchar "tamil i"; +beginchar(2,2x_height#,asc_height#,desc_depth#); +adjust_fit(0,0); +pickup crisp.nib; +x6=.6w; x11=x13=x15=.5w; x16=x17=.9w; x12=.75w; +x5=x7=.55w; x4=.3w; x3=.4w; x2=.5w; x1=.35w; +x8=x10=x14=.15w; x9=.1w; +y15=h; y5=x_height; y14=y11=.1h; y10=0; y16=.8x_height; +y7=-.1d; y8=y13=y17=-d; y9=y12=-.6d; +y2=y4=y6=.6x_height; y1=.8x_height; y3=.4x_height; +z20=z1; pos20(tthinnest,-200); +z65=.5[z6,z7]; pos65(tthicker,-370); +pos1(tmed,45); pos2(tmed,0); pos3(tthin,-90); pos4(tthinnest,-180); +pos5(tmed,-270); pos6(tthick,-360); pos7(tthicker,-380); pos8(tmed,-450); +pos9(tthinner,-540); pos10(tthinnest,-585); pos11(tthin,-630); +pos12(tthick,-720); pos13(tthin,-810); pos14(tthinner,-880); +pos15(tthick,-990); pos16(tthin,-1060); pos17(tthin,-1060); +filldraw stroke z1e..z2e..z3e..z4e..z20e..z5e..z65e..z8e..z9e..z10e..z11e..z12e..z13e..z14e..z15e...{down}z16e---z17e; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17); endchar; + +cmchar "Tamil ii"; +beginchar(3,1.125x_height#+2u#,x_height#,0); +adjust_fit(0,0); +callchar:="r"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x7=.5[x1,x6]; x8=x4-.5dot_size; +top y77r=top y88r=bar_height+.375dot_size; +y7=y8=.5[y77r,y77l]; +x77=x7; x88=x8; pos7(.75dot_size,0); pos77(.75dot_size,90); +pos8(.75dot_size,0); pos88(.75dot_size,90); +dot(7,77); dot(8,88); +penlabels(7,8); endchar; + +cmchar "tamil u"; +beginchar(4,2x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="u"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + + +cmchar "tamil uu"; +beginchar(5,2.8x_height#,x_height#,0); +adjust_fit(0,0); +help_uu; +picture V; transform t; +t=identity shifted(1.4x_height,.25x_height); +V=currentpicture transformed t; currentpicture:=V; +h:=oldh; w:=oldw; d:=oldd; +callchar:="u"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x12=w-u; y12=y11; pos12(tthin,-290); +filldraw stroke z11e--z12e; +endchar; + +cmchar "tamil e"; +beginchar(6,1.6x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="e"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "tamil ai"; +beginchar(7,1.75x_height#,x_height#,.8x_height#); +adjust_fit(0,0); +pickup crisp.nib; +y7=y10=h; y4=y8=y9=.2h; y15=y19=-d; y12=.9bar_height; +y21=.25h; y13=-.2d; y14=-.6d; y16=-.8d; y17=y18=-.3d; y20=-.2d; +y1=y3=.4h; y2=.7h; y11=.75h; y85=0; +% +x14=x1=u; x11=x12=w-u; x8=x9=x17=x18=.55[x1,x11]; x85=x8; +x7=.6[x1,x8]; x10=.5[x9,x11]; x3=.6[x1,x8]; x2=x4=.5[x1,x3]; +x13=x2; x15=x7-.7u; x16=x17; x19=.5[x18,x11]; x20=.95x11; x21=.9x11; +% +x77=x8; y77=.6h; z99=z77; +pos77(tthick,-360); pos99(tthick,0); +pos1(tthinner,180); pos2(tmed,90); pos3(tthick,0); pos4(tmed,-90); +z55=z1; pos55(tthinner,-180); +%pos6 ? +pos7(tthick,-270); pos8(tthick,-405); +pos9(tthick,-45); pos10(tthin,-90); pos11(tthick,-180); pos12(tthick,-200); +pos21(tthin,-240); pos13(tthin,-240); pos14(tmed,-180); +pos15(tthick,-90); pos16(tthick,-45); pos17(tthick,-45); +pos18(tthick,-45); pos19(tthick,90); pos20(tmed,225); +pos85(tthin,-270); +%pickup pencircle scaled .2pt +filldraw stroke z1e..z2e{right}..z3e{down}..z4e{left}..z55e...{right}z7e...{down}z77e---z8e; +%pickup crisp.nib +%filldraw stroke z9e---z99e{up}...z10e{right}...{down}z12e..z21e---z13e..z14e{down}...z15e{right}...z16e...{up}z17e; +filldraw stroke z9e---z99e{up}...z10e{right}...{down}z12e...{left}z85e{left}..z14e{down}...z15e{right}...z16e...{up}z17e; +filldraw stroke z18e{down}...z19e{right}...z20e; +%pickup pencircle scaled .2pt +%draw stroke z18e{down}...z19e{right}...z20e; +penlabels(1,2,3,4,55,7,8,9,10,11,12,21,13,14,15,16,17,19,20); endchar; + +cmchar "Tamil k"; +beginchar(8,1.5x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="k"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "Tamil o"; +beginchar(9,1.6x_height#,x_height#,.8x_height#); +adjust_fit(0,0); +x1=x5=x16=u; x7=rt x12r=rt x13r=w-u; +x6=.5[x1,x7]; x15=.5[x16,x12]; x17=.1[x16,x12]; x14=.85[x16,x12]; +x11=x9; x8=.4[x9,x7]; x9=x10=.7[x1,x7]; +x3=.3[x1,x7]; x2=x4=.5[x1,x3]; +top y6r=h; bot y15r=-d; +y2=.5h; y1=y5=y3=.5y2; +bot y4r=bot y8r=0; +y9=y10=y2; y7=.3h; y11=-.1d; y12=y13=-.3d; +y14=-.6d; y16=-.5d; y17=-.2d; +pos1(tthin,180); pos2(tthin,90); pos3(tthick,0); pos4(tthin,-90); +pos5(tthin,-180); pos6(tmed,-270); pos7(tthick,-360); pos8(tmed,-450); +pos9(tthin,-540); pos10(tthin,0); pos11(tmed,5); pos12(tthin,10); +pos13(tthick,10); pos14(tthick,0); pos15(tmed,-90); pos16(tthinner,-180); +pos17(tmed,-250); +filldraw stroke z1e...{right}z2e...{down}z3e...{left}z4e...z5e...{right}z6e + ...{down}z7e...{left}z8e...z9e; +% pickup pencircle scaled .2pt; +filldraw stroke z10e..z11e...{right}z12e; +filldraw stroke z13e...z14e...{left}z15e...{up}z16e...z17e; +penlabels(1,2,3,4,6,7,8,9,11,12,14,15,16,17); +endchar; + + +cmchar "Tamil ki"; +beginchar(10,1.8x_height#,asc_height#,0); +adjust_fit(0,0); +callchar:="k"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +z45=z21; x46=x3; top y46r=h; x47=x48=w-u; y47=y4; y48=0; +pos45(tthinnest,270); pos46(tthick,90); pos47(tthinner,0); +x48l=x48-.5; x48r=x48+.5; y48l=y48r=0; +filldraw stroke z45e{left}...{right}z46e...z47e{down}---z48e; +penlabels(46,47,48); +endchar; + +cmchar "Tamil kii"; +beginchar(11,1.5x_height#,body_height#,0); +adjust_fit(0,0); +callchar:="k"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +z45=z21; x46=x3; top y46r=h; +pos45(tthinnest,270); pos46(tmed,90); +x47=.6[x3,x4]; y47=.9[y3,y46]; x48=x4; y48=.5[y3,y46]; +y49=.3[y3,y46]; x49=x47; x50=.2[x3,x4]; y50=y48; z51=z47; +pos47(.7tmed,45); pos48(tthinner,0); pos49(tthinnest,-90); +pos50(tthinnest,-180); pos51(tthinnest,-225); +filldraw stroke z45e{left}...{right}z46e...z47e...{down}z48e...{left}z49e...{up}z50e...z51e; +penlabels(46,47,48,49,50); +endchar; + +cmchar "Tamil ku"; +beginchar(12,2x_height#,asc_height#,desc_depth#); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x45=x5; bot y45r=-d; pos45(tthick,-450); +x46=x46r=x46l=x2; y46=y2; y46r=y46+1; y46l=y46-1; +y26=y25; y26l=y25l; y26r=y25r; x26=x26l=x26r=.7[x3,x4]; +x47=-.25x_height; y47=y8; pos47(tthin,-540); +filldraw stroke z25e---z26e{right}...z45e...{up}z47e...{right}z46e; +picture V; transform t; t=identity shifted(.4x_height,0); +V=currentpicture transformed t; currentpicture:=V; +penlabels(26,45,46,47); +endchar; + +cmchar "Tamil kuu"; +beginchar(13,2.1x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +cloney(26,25); x26=x26l=x26r=.6[x3,x4]; +x28=x4; y28=0; x30=x28+(x4-x3); y30=0; top y29l=bar_height; x29=.5[x28,x30]; +x31=x30; bot y31l=0; pos31(tthin,90); x32=w-u; bot y32l=0; pos32(tthin,90); +pos28(tthin,0); pos29(tthinner,-90); pos30(tthin,-180); +filldraw stroke z25e--z26e{right}...{down}z28e; +filldraw stroke z28e{up}...{right}z29e...{down}z30e; +filldraw stroke z31e--z32e; +penlabels(26,28,29,30,31); endchar; + +cmchar "Tamil long o"; +beginchar(14,1.6x_height#,x_height#,.8x_height#); +adjust_fit(0,0); +x1=x5=x16=u; x7=rt x12r=rt x13r=w-u; +x6=.5[x1,x7]; x15=.5[x16,x12]; x17=.25[x16,x12]; x14=.85[x16,x12]; +x11=x9; x8=.4[x9,x7]; x9=x10=.7[x1,x7]; +x3=.3[x1,x7]; x2=x4=.5[x1,x3]; +top y6r=h; bot y15r=-d; +y2=.5h; y1=y5=y3=.5y2; +bot y4r=bot y8r=0; +y9=y10=y2; y7=.3h; y11=-.1d; y12=y13=-.3d; +y14=-.6d; y16=-.5d; y17=-.2d; +x18=.4[x16,x12]; y18=-.5d; pos18(tthinner,-360); +pos1(tthin,180); pos2(tthin,90); pos3(tthick,0); pos4(tthin,-90); +pos5(tthin,-180); pos6(tmed,-270); pos7(tthick,-360); pos8(tmed,-450); +pos9(tthin,-540); pos10(tthin,0); pos11(tmed,5); pos12(tthin,10); +pos13(tthick,10); pos14(tthick,0); pos15(tmed,-90); pos16(tthinner,-180); +pos17(tmed,-250); +filldraw stroke z1e...{right}z2e...{down}z3e...{left}z4e...z5e...{right}z6e + ...{down}z7e...{left}z8e...z9e; +% pickup pencircle scaled .2pt; +filldraw stroke z10e..z11e...{right}z12e; +filldraw stroke z13e...z14e...{left}z15e...{up}z16e...{right}z17e...{down}z18e; +penlabels(1,2,3,4,6,7,8,9,11,12,14,15,16,17,18); +endchar; + +cmchar "tamil long e"; +beginchar(15,1.6x_height#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="e"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x10=x4; bot y10r=-d; pos10(tthick,-90); +x11=x9; bot y11r=0; pos11(tthick,-90); +filldraw stroke z11e--z10e; +penlabels(10); +endchar; + +cmchar "tamil ng"; +beginchar(16,1.5x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="g"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "Tamil ai matra"; +beginchar(17,2x_height#,x_height#,0); +adjust_fit(0,0); +w:=3x_height; +x1=x81=u; x6=.6x10; x8=.6[x1,x6]; x7=.5[x8,x6]; +x5=.5[x1,x6]; x3=.5[x1,x8]; x4=x2=.5[x1,x3]; +x9=.5[x8,x10]; x10=.7w; x12=.6[x8,x10]; x11=.5[x12,x10]; +top y5r=top y9r=h; +bot y4r=bot y7r=bot y11r=0; +y2=y8=y6=y12=y10=.5h; +y81=y1=y3=.5y2; +pos1(tthinner,180); pos2(tthin,90); pos3(tthick,0); pos4(tthin,-90); +pos81(tthinner,-180); pos5(tmed,-270); pos6(tthicker,-360); +pos7(tmed,-450); pos8(tthin,-540); pos9(tmed,-630); pos10(tthicker,-720); +pos11(tmed,-810); pos12(tthin,-900); +x30=x11; y30=y10; x31=x12; bot y31r=0; pos30(tthick,-720); pos31(tmed,-790); +filldraw stroke z1e...{right}z2e...{down}z3e...{left}z4e..z81e...{right}z5e + ...{down}z6e...{left}z7e...{up}z8e...{right}z9e...{down}z30e...z31e; +penlabels(1,2,3,4,5,6,7,8,9,30,31); +endchar; + +cmchar "tamil ngi"; +beginchar(18,1.85x_height#,asc_height#,0); +adjust_fit(0,0); +callchar:="g"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x40=x13; y40=y13; pos40(tthin,0); x41=x40; top y41l=h; pos41(tthick,-90); +x50=x40-2u; y50=.5[y40,y41]; pos50(tmed,-30); +x42=w-u; y42=x_height; x43=x42; y43=y43l=y43r=0; pos42(tthin,-180); +x43r=x43-.6; x43l=x43+.6; +filldraw stroke z40e{left}...{right}z41e...{down}z42e--z43e; +penlabels(41,42,43,44); +endchar; + + + +cmchar "tamil ngii"; +beginchar(19,1.75x_height#,body_height#,0); +adjust_fit(0,0); +callchar:="g"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +small_iito(13,s,h); +endchar; + +cmchar "tamil ngu"; +beginchar(20,1.5x_height#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="g"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +clonex(40,12); y40=y40l=y40r=-d; +filldraw stroke z12e--z40e; +endchar; + +cmchar "tamil nguu"; +beginchar(21,1.85x_height#,x_height#,1.5desc_depth#); +adjust_fit(0,0); +callchar:="g"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +clonex(40,12); y40=y40l=y40r=-.5d; +filldraw stroke z12e--z40e; +x22=w-u; y22=.5y40; x21=.6[x12,x22]; y21=.25d; +pos21(tthinner,-90); pos22(tthin,-180); +x23=.7[x1,x12]; bot y23l=-d; pos23(tthick,-270); +x24=x2; y24=-.5d; pos24(tthin,-360); x25=x7; y25=-.25d; pos25(tthinner,-450); +x26=.5[x1,x12]; y26=-.5d; pos26(tthinnest,-540); +filldraw stroke z40e{up}...{right}z21e...{down}z22e...{left}z23e...{up}z24e + ...{right}z25e...{down}z26e; +penlabels(40,21,22,23,24,25,26); +endchar; + +cmchar "tamil e matra"; +beginchar(22,1.4x_height#,body_height#,0); +adjust_fit(0,0); +x1=x3=x5=.6w; x2=x1-1.5u; x4=x1+1.5u; top y3l=bar_height; +pos3(1.2tthin,-90); y2=y4=.5[y1,y3]; bot y1l=.25u; pos1(tthin,90); +pos2(tthin,0); pos4(tmed,-180); y5=y1; pos5(tthin,-270); +x6=u; y6=.5h; pos6(tthinner,-360); top y7l=h; x7=.5w; pos7(1.2tmed,-450); +x8=w-u; y8=x_height; pos8(tthin,-540); x9=x8; y9=0; x9r=x9-.6; x9l=x9+.6; +y9r=y9l=y9; x75=x7; bot y75l=0; pos75(tthin,-280); +filldraw stroke z1e...{up}z2e...{right}z3e...{down}z4e...z5e...{left}z75e + ...{up}z6e...{right}z7e...z8e--z9e; +penlabels(1,2,3,4,5,75,6,7,8,9); +endchar; + +cmchar "tamil long e matra"; +beginchar(23,1.4x_height#,body_height#,0); +adjust_fit(0,0); +x1=x3=x5=x10=x8=x12=w-2.5u; x2=x11=x1-1.5u; x4=x9=x1+1.5u; top y3l=bar_height; +pos3(1.2tthin,-90); y2=y4=.5[y1,y3]; bot y1l=.25u; pos1(tthin,90); +pos2(tthin,0); pos4(tmed,-180); y5=y1; pos5(tthin,-270); +x6=u; y6=.5h; pos6(tthinner,-360); top y7l=h; x7=.55w; pos7(1.2tmed,-450); +x75=x7; bot y75l=0; pos75(tthin,-280); +top y8l=h-.25u; pos8(.8tmed,-460); y9=y11=.5[y8,y10]; y10=y8-y3+y1; +y12=y8; pos9(tthin,-540); pos10(tthin,-630); pos11(tthinner,-720); +pos12(tthinnest,-810); +filldraw stroke z1e...{up}z2e...{right}z3e...{down}z4e...z5e...{left}z75e + ...{up}z6e...{right}z7e...z8e...{down}z9e...{left}z10e...{up}z11e...z12e; +penlabels(1,2,3,4,5,75,6,7,8,9,10,11,12); +endchar; + +cmchar "Tamil c"; +beginchar(24,1.5x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +y26=y25; y26l=y25l; y26r=y25r; x26=x26l=x26r=w-u; +filldraw stroke z25e---z26e; +penlabels(26); +endchar; + +cmchar "Tamil ci"; +beginchar(26,1.7x_height#,asc_height#,0); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +y26=y25; y26l=y25l; y26r=y25r; x26=x26l=x26r=w-u-.2x_height; +filldraw stroke z25e---z26e; +z45=z21; x46=x3; top y46r=h; x47=x48=w-u; y47=y4; y48=0; +pos45(tthinnest,270); pos46(tthick,90); pos47(tthinner,0); +x48l=x48-.5; x48r=x48+.5; y48l=y48r=0; +filldraw stroke z45e{left}...{right}z46e...z47e{down}---z48e; +penlabels(26,46,47,48); +endchar; + +cmchar "Tamil cii"; +beginchar(27,1.6x_height#,body_height#,0); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +y26=y25; y26l=y25l; y26r=y25r; x26=x26l=x26r=w-u-.1x_height; +filldraw stroke z25e---z26e; +z45=z21; x46=x3; top y46r=h; +pos45(tthinnest,270); pos46(tmed,90); +x47=.6[x3,x4]; y47=.9[y3,y46]; x48=x4; y48=.5[y3,y46]; +y49=.3[y3,y46]; x49=x47; x50=.2[x3,x4]; y50=y48; z51=z47; +pos47(.7tmed,45); pos48(tthinner,0); pos49(tthinnest,-90); +pos50(tthinnest,-180); pos51(tthinnest,-225); +filldraw stroke z45e{left}...{right}z46e...z47e...{down}z48e...{left}z49e...{up}z50e...z51e; +penlabels(26,46,47,48,49,50); +endchar; + +cmchar "Tamil cu"; +beginchar(28,1.65x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +y26=y25; y26l=y25l; y26r=y25r; x26=x26l=x26r=w-u; +filldraw stroke z25e---z26e; +x27=x28=.5[x25,x26]; y27=y26; y28=0; pos27(tmed,0); pos28(tmed,0); +filldraw stroke z27e--z28e; +penlabels(26,27,28); +endchar; + +cmchar "Tamil cuu"; +beginchar(29,2x_height#,x_height#,desc_depth#); +adjust_fit(0,0); +w:=1.65x_height; +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +y26=y25; y26l=y25l; y26r=y25r; x26=x26l=x26r=w-u; +filldraw stroke z25e---z26e; +x27=x28=.5[x25,x26]; y27=y26; y28=0; pos27(tmed,0); pos28(tmed,0); +filldraw stroke z27e--z28e; +x40=x6; bot y40r=-d; pos40(tthick,-90); +x41=-.25x_height; y41=y8; x42=x42l=x42r=x2; y42=y2; y42r=y42+.6; y42l=y42-.6; +pos41(tthinner,-180); +x48=x28; y48=0; pos48(tthinner,180); x49=w-u; y49=0; pos49(tthin,0); +filldraw stroke z48e{up}...{down}z49e...{left}z40e...{up}z41e...{right}z42e; +picture V; transform t; t=identity shifted(.35x_height,0); +V=currentpicture transformed t; currentpicture:=V; +penlabels(26,27,28,40,41); +endchar; + +cmchar "tamil ny"; +beginchar(32,2x_height#+2u#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +w:=1.7x_height; +callchar:="e"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; x99=x9; y99=0; pos99(tthin,0); +x11=x9+4u; x10=.5[x9,x11]; top y10l=bar_height; pos10(tmed,-90); +y11=.2bar_height; pos11(tthin,-180); x12=.5[x4,x9]; bot y12l=-d; pos12(tthick,-270); +x13=-.2x_height; y13=.3bar_height; pos13(tthin,-360); x14=x5-.75u; y14=y5; pos14(tthinner,-400); +filldraw stroke z99e{up}...{right}z10e...{down}z11e...{left}z12e...{up}z13e...z14e; +picture V; transform t; t=identity shifted(.3x_height,0); +V=currentpicture transformed t; currentpicture:=V; +endchar; + +cmchar "tamil nyi"; +beginchar(34,2.2x_height#+2u#,asc_height#,1.2desc_depth#); +adjust_fit(0,0); +w:=1.7x_height; +callchar:="e"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; x99=x9; y99=0; pos99(tthin,0); +x11=x9+4u; x10=.5[x9,x11]; top y10l=bar_height; pos10(tmed,-90); +y11=.2bar_height; pos11(tthin,-180); x12=.5[x4,x9]; bot y12l=-d; pos12(tthick,-270); +x13=-.2x_height; y13=.3bar_height; pos13(tthin,-360); x14=x5-.75u; y14=y5; pos14(tthinner,-400); +filldraw stroke z99e{up}...{right}z10e...{down}z11e...{left}z12e...{up}z13e...z14e; +x30=x8; y30=x_height; pos30(tthin,0); x31=x30; top y31l=h; pos31(tthick,-90); +x33=x32=x11+2u; y32=x_height; y33=y33l=y33r=0; pos32(tthin,-180); x33l=x33+.6; +x33r=x33-.6; filldraw stroke z30e{left}...{right}z31e...{down}z32e--z33e; +picture V; transform t; t=identity shifted(.3x_height,0); +V=currentpicture transformed t; currentpicture:=V; +endchar; + +cmchar "tamil nyii"; +beginchar(35,2x_height#+2u#,body_height#,1.2desc_depth#); +adjust_fit(0,0); +w:=1.7x_height; +callchar:="e"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; x99=x9; y99=0; pos99(tthin,0); +x11=x9+4u; x10=.5[x9,x11]; top y10l=bar_height; pos10(tmed,-90); +y11=.2bar_height; pos11(tthin,-180); x12=.5[x4,x9]; bot y12l=-d; pos12(tthick,-270); +x13=-.2x_height; y13=.3bar_height; pos13(tthin,-360); x14=x5-.75u; y14=y5; pos14(tthinner,-400); +filldraw stroke z99e{up}...{right}z10e...{down}z11e...{left}z12e...{up}z13e...z14e; +small_iito(8,s,h); +picture V; transform t; t=identity shifted(.3x_height,0); +V=currentpicture transformed t; currentpicture:=V; +endchar; + +cmchar "tamil nyu"; +beginchar(36,2x_height#+u#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +w:=1.7x_height; +callchar:="e"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; x99=x9; y99=0; pos99(tthin,0); +x11=x9+4u; x10=.5[x9,x11]; top y10l=bar_height; pos10(tmed,-90); +y11=.2bar_height; pos11(tthin,-180); x12=.5[x4,x9]; y12=-d; pos12(tthick,-270); +x13=0; y13=-.3d; pos13(tthin,-360); x14=x13+.2u; y14=y13+.2u; pos14(tthin,-450); +x15=x11+1.5u; y15=y14; pos15(tthin,-450); +x16=x15; y16=y15r; pos16(tthick,0); x17=x16; y17=x_height; pos17(tthick,0); +filldraw stroke z99e{up}...{right}z10e...{down}z11e...{left}z12e...{up}z13e...{right}z14e--z15e; +filldraw stroke z16e--z17e; +penlabels(10,11,12,13,14,15,16,17); +endchar; + + +cmchar "tamil nyuu"; +beginchar(37,2.4x_height#+2u#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +w:=1.7x_height; +callchar:="e"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; x99=x9; y99=0; pos99(tthin,0); +x11=x9+4u; x10=.5[x9,x11]; top y10l=bar_height; pos10(tmed,-90); +y11=.2bar_height; pos11(tthin,-180); x12=.5[x4,x9]; y12=-d; pos12(tthick,-270); +x13=0; y13=-.3d; pos13(tthin,-360); x14=x13+.2u; y14=y13+.2u; pos14(tthin,-450); +x15=x11+2u; y15=y14; pos15(tthin,-450); +x16=x15; y16=y15r; pos16(tthin,0); x17=x16; y17=x_height; pos17(tthin,0); +filldraw stroke z99e{up}...{right}z10e...{down}z11e...{left}z12e...{up}z13e...{right}z14e--z15e; +filldraw stroke z16e--z17e; +w:=2.4x_height+2u; +top y18r=y17; x18=x17l; pos18(tmed,90); y19=y18; x19=w-u; x40r=x19-u; +y40=y17; x21=x40; y21=0; pos19(tmed,90); pos40(tmed,0); pos21(tmed,0); +filldraw stroke z18e--z19e; filldraw stroke z40e--z21e; +penlabels(10,11,12,13,14,15,16,17,18,19,40,21); +endchar; + +cmchar "Tamil t dot"; +beginchar(40,1.75x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="T"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "Tamil t dot i"; +beginchar(42,1.75x_height#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="T"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x5=.7[x3,x4]; bot y5r=0; pos5(tthin,270); x6=x5-1.5u; top y6r=h; pos6(tthick,90); +x7=x5; y7=bar_height; pos7(tthin,0); x8=x7; y8=-d; pos8(tthinnest,0); +x40=x1; y40=.6[y1,y2]; +filldraw stroke z5e{z40-z5}...{right}z6e...{down}z7e--z8e; +penlabels(5,6,7,8); endchar; + +cmchar "Tamil t dot ii"; +beginchar(43,1.75x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="T"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x5=.7[x3,x4]; y5=0; pos5(tmed,180); +small_iito(5,s,x_height); +penlabels(5,6,7,8); endchar; + +cmchar "tamil t dot u"; +beginchar(44,1.6x_height#,body_height#,desc_depth#); +adjust_fit(0,0); +x1=x2=.45w; y1=x_height; y2=0; pos1(tmed,0); pos2(tmed,0); +x3r=x2r; y3=y2; pos3(tthinner,0); x5l=w-2.5u; y5=.5[y4,y6]; pos5(tthinner,-180); +x4=.5[x3,x5]; y4=bar_height; pos4(tthin,-90); +x6=x3; bot y6l=-d; pos6(tthick,-270); x7=u; y7=.5[y6,y8]; pos7(tthinner,-360); +x8=x1+u; top y8l=h; pos8(tmed,-450); x9=x10=w-u; y9=y1; pos9(tthin,-540); +y10=y10r=y10l=0; x10l=x10+.6; x10r=x10-.6; +filldraw stroke z1e--z2e; +filldraw stroke z3e{up}...{right}z4e...{down}z5e...{left}z6e...{up}z7e...{right}z8e...{down}z9e--z10e; +penlabels(1,2,4,5,6,7,8,9,10); +endchar; + +cmchar "tamil t dot uu"; +beginchar(45,1.6x_height#,body_height#,desc_depth#); +adjust_fit(0,0); +x1=x2=.45w; y1=x_height; y2=0; pos1(tmed,0); pos2(tmed,0); +x3r=x2r; y3=y2; pos3(tthinner,0); x5l=w-2.5u; y5=.5[y4,y6]; pos5(tthinner,-180); +x4=.5[x3,x5]; y4=bar_height; pos4(tthin,-90); +x6=x3; bot y6l=-d; pos6(tthick,-270); x7=u; y7=.5[y6,y8]; pos7(tthinner,-360); +x8=x1+u; top y8l=h; pos8(tmed,-450); x9=w-3.5u; y9=asc_height-.25u; +x10=x9+1.5u; y10=.5[y9,y11]; x11=x9; y11=y9-4u; x12=x9-1.5u; y12=y10; +x13=x9; y13=y9; pos9(tthin,-470); pos10(tthin,-540); pos11(tthinner,-630); +pos12(tthinnest,-720); x13l=x13r=x13; y13l=y13+.6; y13r=y13-.6; +filldraw stroke z1e--z2e; +filldraw stroke z3e{up}...{right}z4e...{down}z5e...{left}z6e...{up}z7e...{right}z8e + ...z9e...{down}z10e...{left}z11e...{up}z12e...{right}z13e; +penlabels(1,2,4,5,6,7,8,9,10,11,12,13); +endchar; + +cmchar "Tamil n dot"; +beginchar(48,2.8x_height#+u#,x_height#,0); +adjust_fit(0,0); +callchar:="1"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +filldraw stroke z13e---z14e; +filldraw stroke z15e---z16e; +endchar; + +cmchar "Tamil n.aa"; +beginchar(49,2.8x_height#+3u#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +callchar:="1"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x21=x16; y21=y6; +y22=-d; x22=.4[x1,x21]; +x23=x1; y23=.8x_height; +pos21(tthick,-1080); pos22(tthin,-1170); +y23l+.5=y23r-.5=y23; x23l=x23; x23r=x23-1; +filldraw stroke z13e{right}...{down}z21e...{left}z22e...{right}z23e; +picture V; transform t; t=identity shifted(3u,0); +V=currentpicture transformed t; currentpicture:=V; +%penlabels(21,22,23); +endchar; + +cmchar "Tamil n.i"; +beginchar(50,3x_height#+u#,asc_height#,0); +adjust_fit(0,0); +callchar:="1"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +filldraw stroke z13e---z14e; +filldraw stroke z15e---z16e; +x17=.5[x13,x14]; top y17l=x_height; x18=x17; top y18r=h; +pos17(tthin,270); pos18(tthick,90); +x20=x19=x14+u; y19=x_height; y20=y20r=y20l=0; +pos19(tthin,0); x20l=x20-.6; x20r=x20+.6; +filldraw stroke z17e{left}...{right}z18e...{down}z19e--z20e; +penlabels(17,18,19,20); +endchar; + +cmchar "Tamil n.ii"; +beginchar(51,3x_height#,body_height#,0); +adjust_fit(0,0); +callchar:="1"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +filldraw stroke z13e---z14e; +filldraw stroke z15e---z16e; +x17=.5[x13,x14]; top y17l=x_height; pos17(tthin,270); +small_iito(17,s,h); +penlabels(17); +endchar; + +cmchar "Tamil n.u"; +beginchar(52,2.8x_height#+3u#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +callchar:="1"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x21=x16+u; y21=y6; +y22=-d; x22=.6[x1,x21]; +x23=x1; y23=-.3d; x24=x23+.2u; y24=y23+.2u; x25=w-u; y25=y24; +x27r=x26r=x25; y27=x_height; y26=y25r; +pos21(tthin,-1080); pos22(tthick,-1170); +pos23(tthin,-1260); pos24(tthin,-1350); pos25(tthin,-1350); +filldraw stroke z13e{right}...{down}z21e...{left}z22e...{up}z23e...{right}z24e--z25e; +pos26(tmed,0); pos27(tmed,0); filldraw stroke z26e--z27e; +penlabels(21,22,23,24,25,27); +endchar; + +cmchar "Tamil n.uu"; +beginchar(53,3.6x_height#+u#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +w:=3x_height+u; +callchar:="1"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x21=x16+u; y21=y6; +y22=-d; x22=.6[x1,x21]; +x23=x1; y23=-.3d; x24=x23+.2u; y24=y23+.2u; x25=w-u; y25=y24; +x27r=x26r=x25; y27=x_height; y26=y25r; +pos21(tthin,-1080); pos22(tthick,-1170); +pos23(tthin,-1260); pos24(tthin,-1350); pos25(tthin,-1350); +filldraw stroke z13e{right}...{down}z21e...{left}z22e...{up}z23e...{right}z24e--z25e; +pos26(tmed,0); pos27(tmed,0); filldraw stroke z26e--z27e; +w:=3.6x_height+u; x28=x27l; top y28r=y27; y29=y28; y30=y27; x29=w-u; x30=x29-2u; +x31=x30; y31=0; +pos28(tthin,90); pos29(tthin,90); pos30(tthin,0); pos31(tthin,0); +filldraw stroke z28e--z29e; filldraw stroke z30e--z31e; +penlabels(21,22,23,24,25,27,28,29,30,31); +endchar; + + + +cmchar "Tamil n dot ai"; +beginchar(54,3.8x_height#+u#,asc_height#,0); +adjust_fit(0,0); +callchar:="1"; +dodraw:=false; +tspecs; +dodraw:=true; +h:=oldh; w:=oldw; d:=oldd; +aipoints; +z211=.5[z210,z2]; pos211(tthin,135); +filldraw stroke z201e...{down}z202e...{left}z203e...{up}z204e...z205e...{right}z206e + ...{down}z207e...z208e...{down}z209e...{right}z210e...z211e + ...{right}z2e...{down}z3e...{left}z4e..z81e...{right}z5e + ...{down}z6e...{left}z7e...{up}z8e...{right}z9e...{down}z10e + ...{left}z11e...{up}z12e...{right}z13e---z14e; +filldraw stroke z15e---z16e; +picture V; transform t; t=identity shifted(x_height,0); +V=currentpicture transformed t; currentpicture:=V; +endchar; + +cmchar "Tamil t"; +beginchar(56,1.7x_height#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +% +% finish with tail for t shape +cloney(61,25); x61r=x61l=x61=.5[x3,x4]; +rt x62r=w-u; y62=.5y61; pos62(tthick,0); +y63=y64=-.3d; lft y66l=-d; y65=.4[y64,y66]; +x63=x61; x64=x2; x65=u; x66=.7[x65,x64]; +pos63(tthin,-90); pos64(tthin,-90); pos65(tthinner,0); +pos66(tthick,45); +%filldraw stroke z25e--z61e{right}...{down}z62e...{left}z63e---z64e{left}...{down}z65e..z66e; +filldraw stroke z66e...{up}z65e...{right}z64e---z63e{right}...{up}z62e...{left}z61e---z25e; +penlabels(45,47,48,61,62,63,64,65,66); +endchar; + + +cmchar "Tamil ti"; +beginchar(58,1.85x_height#,asc_height#,1.2desc_depth#); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +% +% draw the i loop +z45=z21; x46=x3; top y46r=h; x47=x48=w-u; y47=y4; y48=0; +pos45(tthinnest,270); pos46(tthick,90); pos47(tthinner,0); +x48l=x48-.5; x48r=x48+.5; y48l=y48r=0; +filldraw stroke z45e{left}...{right}z46e...z47e{down}---z48e; +% +% finish with tail for t shape +cloney(61,25); x61r=x61l=x61=.5[x3,x4]; +rt x62r=.5[x4,x48]; % note this is based on position of i-loop +y62=.5y61; pos62(tthick,0); +y63=y64=-.3d; lft y66l=-d; y65=.4[y64,y66]; +x63=x61; x64=x2; x65=u; x66=.7[x65,x64]; +pos63(tthinner,-90); pos64(tthinner,-90); pos65(tthinner,0); +pos66(tthick,45); +%filldraw stroke z25e--z61e{right}...{down}z62e...{left}z63e---z64e{left}...{down}z65e..z66e; +filldraw stroke z66e...{up}z65e...{right}z64e---z63e{right}...{up}z62e...{left}z61e---z25e; +penlabels(45,47,48,61,62,63,64,65,66); +endchar; + +cmchar "Tamil tii"; +beginchar(59,1.65x_height#,asc_height#,1.2desc_depth#); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +% +% do the upper loop for ii +z45=z21; x46=x3; top y46r=h; +pos45(tthinnest,270); pos46(tmed,90); +x47=.6[x3,x4]; y47=.9[y3,y46]; x48=x4; y48=.5[y3,y46]; +y49=.3[y3,y46]; x49=x47; x50=.2[x3,x4]; y50=y48; z51=z47; +pos47(.7tmed,45); pos48(tthinner,0); pos49(tthinnest,-90); +pos50(tthinnest,-180); pos51(tthinnest,-225); +filldraw stroke z45e{left}...{right}z46e...z47e...{down}z48e...{left}z49e...{up}z50e...z51e; +% +% finish with tail for t shape +cloney(61,25); x61r=x61l=x61=.5[x3,x4]; +rt x62r=w-u; y62=.5y61; pos62(tthick,0); +y63=y64=-.3d; lft y66l=-d; y65=.4[y64,y66]; +x63=x61; x64=x2; x65=u; x66=.7[x65,x64]; +pos63(tthin,-90); pos64(tthin,-90); pos65(tthinner,0); +pos66(tthick,45); +%filldraw stroke z25e--z61e{right}...{down}z62e...{left}z63e---z64e{left}...{down}z65e..z66e; +filldraw stroke z66e...{up}z65e...{right}z64e---z63e{right}...{up}z62e...{left}z61e---z25e; +penlabels(45,47,48,49,50,61,62,63,64,65,66); +endchar; + +cmchar "Tamil tu"; +beginchar(60,2.2x_height#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +w:=w-2u; +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +% +% finish with tail for t shape +cloney(61,25); x61r=x61l=x61=.5[x3,x4]; +rt x62r=.35[x4,x90]; y62=.5y61; pos62(tthick,0); +x63=x7; y63=-d; x64=x8-2u; y64=.85[y63,y65]; y66=y65=-.3d; +x65=.25[x64,x8]; x66=w-u;rt x67r=x66; y67=bot y66l; x90=x67; y90=x_height; +pos63(tthin,-90); pos64(tthinner,-180); pos65(tthinner,-270); +pos66(tthinner,-270); pos67(.8tthick,0); pos90(.8tthick,0); +filldraw stroke z25e--z61e{right}...{down}z62e...{left}z63e...{up}z64e + ...{right}z65e---z66e; +filldraw stroke z67e---z90e; +picture V; transform t; t= identity shifted(2u,0); +V=currentpicture transformed t; currentpicture:=V; +penlabels(61,62,63,64,65,66,90); +endchar; + +cmchar "Tamil tuu"; +beginchar(61,2.6x_height#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +w:=2.2x_height-2u; +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +% +% finish with tail for t shape +cloney(61,25); x61r=x61l=x61=.5[x3,x4]; +rt x62r=.35[x4,x90]; y62=.5y61; pos62(tthick,0); +x63=x7; y63=-d; x64=x8-2u; y64=.85[y63,y65]; y66=y65=-.3d; +x65=.25[x64,x8]; x66=w-u;rt x67r=x66; y67=bot y66l; x90=x67; y90=x_height; +pos63(tthin,-90); pos64(tthinner,-180); pos65(tthinner,-270); +pos66(tthinner,-270); pos67(tthin,0); pos90(tthin,0); +filldraw stroke z25e--z61e{right}...{down}z62e...{left}z63e...{up}z64e + ...{right}z65e---z66e; +filldraw stroke z67e---z90e; +w:=2.6x_height-2u; +x201=x90l; top y201r=x_height; y202=y201; x202=w-u; pos201(tthin,90); +pos202(tthin,90); x203=.6[x201,x202]; y203=x_height; x204=x203; +y204=0; pos203(tmed,0); pos204(tmed,0); +filldraw stroke z201e--z202e; filldraw stroke z203e--z204e; +picture V; transform t; t= identity shifted(2u,0); +V=currentpicture transformed t; currentpicture:=V; +penlabels(61,62,63,64,65,66,90); +endchar; + +cmchar "Tamil n"; +beginchar(64,1.5x_height#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +callchar:="n"; +tspecs; h:= oldh; w:=oldw; d:=oldd; +%draw the end loop +filldraw stroke z7e{up}...{right}z8e...{down}z9e...{left}z10e...{left}z11e...{down}z12e..z13e; +endchar; + +cmchar "Tamil ni"; +beginchar(66,1.75x_height#,asc_height#,1.2desc_depth#); +adjust_fit(0,0); +callchar:="n"; +tspecs; h:= oldh; w:=oldw; d:=oldd; +%draw the end loop +filldraw stroke z7e{up}...{right}z8e...{down}z9e...{left}z10e...{left}z11e...{down}z12e..z13e; +% draw the i loop +x45=.8[x5,x4]; top y45r=x_height; x46=x45; top y46l=h; x47=x48=w-u; y47=y4; y48=0; +pos45(tthinnest,90); pos46(tthick,-90); pos47(tthinner,-180); +x48l=x48+.65; x48r=x48-.65; y48l=y48r=0; +filldraw stroke z45e{left}...{right}z46e...z47e{down}---z48e; +penlabels(45,46,47,48); +endchar; + +cmchar "Tamil nii"; +beginchar(67,1.65x_height#,body_height#,1.2desc_depth#); +adjust_fit(0,0); +callchar:="n"; +tspecs; h:= oldh; w:=oldw; d:=oldd; +%draw the end loop +filldraw stroke z7e{up}...{right}z8e...{down}z9e...{left}z10e...{left}z11e...{down}z12e..z13e; +x31=x9l; y31=x_height; small_iito(31,s,h); +endchar; + +cmchar "Tamil nu"; +beginchar(68,1.8x_height#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +callchar:="n"; +tspecs; h:= oldh; w:=oldw; d:=oldd; +%draw the end loop +x70=.5[x1,x6]; y70=-d; x72=w-u; y72=y82; rt x73r=x72; +y73=y72; x74=x73; y74=x_height; +z81=z12; z82=z11; pos70(tthinner,-90); pos81(tthinner,-180); +pos82(tthinner,-270); pos72(tthinner,-270); +pos73(.8tthick,0); pos74(.8tthick,0); +filldraw stroke z7e{up}...{right}z8e...{down}z9e...{left}z70e...{up}z81e + ...{right}z82e---z72e; +filldraw stroke z73e--z74e; +penlabels(70,72,73,74,81,82); +endchar; + +cmchar "Tamil nuu"; +beginchar(69,2.1x_height#,x_height#,.5x_height#); +adjust_fit(0,0); +callchar:="n"; +tspecs; h:= oldh; w:=oldw; d:=oldd; +%draw the end loop +x70=.5[x1,x6]; y70=-d; x72=w-3u; y72=y82; rt x73r=x72; +y73=y72; x74=x73; y74=x_height; +z81=z12; z82=z11; pos70(tthinner,-90); pos81(tthinner,-180); +pos82(tthinner,-270); pos72(tthinner,-270); +pos73(tthinner,0); pos74(tthinner,0); +filldraw stroke z7e{up}...{right}z8e...{down}z9e...{left}z70e...{up}z81e + ...{right}z82e---z72e; +filldraw stroke z73e--z74e; +top y90r=x_height; x90=lft x73l; x91=w-u; y91=y90; +pos90(tthinner,90); pos91(tthinner,90); filldraw stroke z90e--z91e; +rt x92r=x91; y92=x_height; y93=0; x93=x92; +pos92(.8tthick,0); pos93(.8tthick,0); filldraw stroke z92e--z93e; +penlabels(70,72,73,74,81,82,90,91,92,93); +endchar; + +cmchar "Tamil p"; +beginchar(72,1.4x_height#+u#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="p"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "Tamil pi"; +beginchar(74,1.5x_height#+2u#,asc_height#,0); +adjust_fit(0,0); +callchar:="p"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x7=x6; top y7l=h; pos7(tthick,-90); x8=x9=w-u; y8=x_height; y9=y9r=y9l=0; +x9r=x9-.6; x9l=x9+.6; pos8(tthin,-180); +filldraw stroke z6e{left}...{right}z7e...{down}z8e--z9e; +penlabels(7,8,9); endchar; + +cmchar "Tamil pii"; +beginchar(75,1.4x_height#+u#,body_height#,0); +adjust_fit(0,0); +callchar:="p"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x7=x6; x7r=x6l; x7l=x6r; cloney(7,6); +small_iito(7,s,h); +endchar; + +cmchar "Tamil pu"; +beginchar(76,1.4x_height#+u#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="p"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +clonex(7,5); y7r=y7l=y7=-d; filldraw stroke z5e--z7e; +endchar; + +cmchar "Tamil puu"; +beginchar(77,1.4x_height#+4u#,x_height#,1.4desc_depth#); +adjust_fit(0,0); +callchar:="p"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +clonex(7,5); y7r=y7l=y7=-.5d; filldraw stroke z5e--z7e; +x8=x7; y8=y7; pos8(tthin,0); x10=w-u; y10=.5[y9,y11]; pos10(tthin,-180); +x9=.5[x8,x10]; top y9l=0; pos9(tthin,-90); x11=.5[x1,x10]; y11=-d; +x12=x1; y12=-.4d; x13=.25[x1,x4]; y13=-.2d; x14=.5[x1,x4]; y14=-.45d; +pos11(tthick,-270); pos12(tthin,-360); pos13(tthin,-450); pos14(tthinner,-540); +filldraw stroke z8e{up}...{right}z9e...{down}z10e...{left}z11e...{up}z12e + ...{right}z13e...{down}z14e; +endchar; + +cmchar "Tamil m"; +beginchar(80,1.6x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="m"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "Tamil mi"; +beginchar(82,1.85x_height#,asc_height#,0); +adjust_fit(0,0); +callchar:="m"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x10=x6; top y10l=h; y11=x_height; x12=x11=w-u; y12=0; +pos10(tthick,-90); pos11(tthin,-180); y12r=y12l=y12; +x12r=x12-.6; x12l=x12+.6; +filldraw stroke z6e{left}...{right}z10e...{down}z11e--z12e; +penlabels(10,11,12); endchar; + +cmchar "Tamil mii"; +beginchar(83,1.6x_height#,body_height#,0); +adjust_fit(0,0); +callchar:="m"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x10=x6; y10l=x_height; x10r=x10-.6; x10l=x10+.6; y10=y10l-.6; y10r=y10-.6; +small_iito(10,s,h); +endchar; + +cmchar "Tamil mu"; +beginchar(84,2.2x_height#,x_height#,desc_depth#); +adjust_fit(0,0); +w:=1.6x_height; +callchar:="m"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x9=x8; y9=0; pos9(tthick,-180); +x10=.25[x2,x8]; bot y10l=-d; pos10(tmed,-270); +x11=-.6x_height+u; y11=.5bar_height; x12=x1-.5u; y12l=h; +pos11(tthin,-360); x12l=x12r=x12; y12=y12l-.6; y12r=y12-.6; +filldraw stroke z9e{down}...{left}z10e...{up}z11e...{right}z12e; +picture V; transform t; t=identity shifted(.6x_height,0); +V=currentpicture transformed t; currentpicture:= V; +endchar; + + +cmchar "Tamil muu"; +beginchar(85,2.2x_height#,x_height#,desc_depth#); +adjust_fit(0,0); +w:=1.6x_height; +callchar:="m"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x9=x8; y9=0; pos9(tthick,-180); +x10=.25[x2,x8]; bot y10l=-d; pos10(tmed,-270); +x11=-.6x_height+u; y11=.5bar_height; x12=x1-2.5u; y12l=h; +pos11(tthin,-360); pos12(tthinnest,-450); +x13=x12+u; y14=y12-u; x14=x13-2u; y14=y13; +pos13(tthinnest,-540); x14l=x14-.6; x14r=x14+.6; y14r=y14l=y14; +filldraw stroke z9e{down}...{left}z10e...{up}z11e...{right}z12e...{down}z13e...{z14-z2}z14e; +picture V; transform t; t=identity shifted(.6x_height,0); +V=currentpicture transformed t; currentpicture:= V; +endchar; + +cmchar "Tamil y"; +beginchar(88,1.5x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="y"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "Tamil yi"; +beginchar(90,1.9x_height#,asc_height#,0); +adjust_fit(0,0); +callchar:="y"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x20=x9; y20l=h; pos20(tthick,-90); x21=w-u; y21=x_height; pos21(tthin,-180); +x22=x21; y22=y22l=y22r=0; x22r=x22-.6; x22l=x22+.6; +filldraw stroke z9e{left}...{right}z20e...{down}z21e--z22e; +penlabels(20,21,22); endchar; + +cmchar "Tamil yii"; +beginchar(91,1.65x_height#,body_height#,0); +adjust_fit(0,0); +callchar:="y"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x20=x9; y20=y9; pos20(tthin,180); +small_iito(20,s,h); +endchar; + +cmchar "Tamil yu"; +beginchar(92,1.5x_height#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="y"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +clonex(20,10); y20=y20l=y20r=-d; +filldraw stroke z10e--z20e; +penlabels(20); endchar; + +cmchar "Tamil yuu"; +beginchar(93,1.75x_height#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="y"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +clonex(20,10); y20=y20l=y20r=-.5d; +filldraw stroke z10e--z20e; +x22=w-u; y22=0; x21=.6[x10,x22]; y21=.25d; +pos21(tthinner,-90); pos22(tthin,-180); +x23=.7[x7,x8]; y23=-1.2d; pos23(tthick,-270); +x24=x2; y24=-.5d; pos24(tthin,-360); x25=x7; y25=-.25d; pos25(tthinner,-450); +x26=.5[x7,x8]; y26=-.5d; pos26(tthinnest,-540); +filldraw stroke z20e{up}...{right}z21e...{down}z22e...{left}z23e...{up}z24e + ...{right}z25e...{down}z26e; +penlabels(20,21,22,23,24,25,26); endchar; + +cmchar "Tamil r"; +beginchar(96,.9x_height#+2u#,x_height#,.75desc_depth#); +adjust_fit(0,0); +callchar:="r2"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x7=x6; bot y7l=y6; x8=x1; bot y8l=-d; +pos7(tthin,90); pos8(tthin,90); +filldraw stroke z7e--z8e; +penlabels(7,8); endchar; + +cmchar "Tamil aa matra"; +beginchar(97,.9x_height#+2u#,x_height#,0); +adjust_fit(0,0); +callchar:="r2"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "Tamil ri"; +beginchar(98,.9x_height#+3.5u#,asc_height#,0); +adjust_fit(0,0); +callchar:="r2"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x7=.5[x5,x4]; y7=y5; x8=x7; top y8r=h; x9=x10=w-u; y9=x_height; y10=0; +pos7(tthinner,-90); pos8(tthick,90); pos9(tthin,0); +x10l=x10-.6; x10r=x10+.6; y10r=y10l=0; +filldraw stroke z7e{left}...{right}z8e...{down}z9e--z10e; +penlabels(7,8,9,10); endchar; + +cmchar "Tamil rii"; +beginchar(99,.9x_height#+2.5u#,body_height#,0); +adjust_fit(0,0); +callchar:="r2"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x7=.5[x5,x4]; y7=x_height; pos7(tthinner,-90); +small_iito(7,s,body_height); +penlabels(7,8,9,10); endchar; + +cmchar "Tamil ru"; +beginchar(100,.9x_height#+7u#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +callchar:="r2"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x7=x6; y7=y6; x8=.7[x5,x4]; top y8l=bar_height; pos8(tthick,-90); +pos7(tthin,0); x9=1.4[x5,x4]; y9=0; pos9(tthin,-180); +x10=.7[x1,x6]; bot y10l=-d; pos10(tthinner,-270); x11=x1-4u; y11=.5bar_height; +pos11(tthinner,-360); x12=x2-u; top y12l=x_height; pos12(tthinnest,-450); +filldraw stroke z7e{up}...{right}z8e...{down}z9e...{left}z10e...{up}z11e...{right}z12e; +picture V; transform t; t=identity shifted(3.75u,0); +V=currentpicture transformed t; currentpicture:= V; +penlabels(7,8,9,10,11,12); endchar; + + +cmchar "Tamil ruu"; +beginchar(101,.9x_height#+9u#,x_height#,1.2desc_depth#); +adjust_fit(0,0); +callchar:="r2"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x7=x6; y7=y6; x8=.7[x5,x4]; top y8l=bar_height; pos8(tthick,-90); +pos7(tthin,0); x9=1.4[x5,x4]; y9=0; pos9(tthin,-180); +x10=.7[x1,x6]; bot y10l=-d; pos10(tthinner,-270); x11=x1-6u; y11=.5bar_height; +pos11(tthinner,-360); x12=.5[x11,x2]; top y12l=x_height; pos12(tthin,-450); +x13=.8[x11,x2]; y13=y12-1.5u; x14=.3[x11,x2]; y14=y12-3u; +pos13(tthin,-540); pos14(tthinner,-600); +filldraw stroke z7e{up}...{right}z8e...{down}z9e...{left}z10e...{up}z11e...{right}z12e + ...{down}z13e...z14e; +picture V; transform t; t=identity shifted(5.75u,0); +V=currentpicture transformed t; currentpicture:= V; +penlabels(7,8,9,10,11,12); endchar; + + +cmchar "Tamil l"; +beginchar(104,1.4x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="l"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x11=x9; top y11r=h; x12=x11+.5u; y12=y11-.25u; pos11(tthick,90); pos12(.7tthick,60); +x13=x12; y13=x12-2u; pos13(tthin,-90); x14r=x14l=x14=x12; y14=y12; y14r=y14+1; y14l=y14-1; +filldraw stroke z4e...z1e..z2e..z3e..z4e...{up}z81e..z5e...{down}z6e--z7e{down}...{right}z8e...{up}z9e + ...{left}z10e; +endchar; + +cmchar "Tamil li"; +beginchar(106,1.6x_height#+2u#,body_height#,0); +adjust_fit(0,0); +callchar:="l"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x11=x10; top y11r=h; pos11(tthick,90); x13=x12=w-u; y12=x_height; +y13r=y13l=y13=0; x13l=x13-.6; x13r=x13+.6; pos12(tthin,0); +filldraw stroke z4e...z1e..z2e..z3e..z4e...{up}z81e..z5e...{down}z6e--z7e{down}...{right}z8e...{up}z9e + ...{left}z10e...{right}z11e...{down}z12e--z13e; +%filldraw stroke z10e...{right}z11e...{down}z12e--z13e; +penlabels(11,12,13); +endchar; + +cmchar "Tamil lii"; +beginchar(107,1.5x_height#,asc_height#,0); +adjust_fit(0,0); +callchar:="l"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x11=x9; top y11r=h; x12=x11+.5u; y12=y11-.25u; pos11(tthick,90); pos12(.7tthick,60); +x13=x12; y13=x12-2u; pos13(tthin,-90); x14r=x14l=x14=x12; y14=y12; y14r=y14+1; y14l=y14-1; +filldraw stroke z4e...z1e..z2e..z3e..z4e...{up}z81e..z5e...{down}z6e--z7e{down}...{right}z8e...{up}z9e + ...{left}z10e...{right}z11e..z12e...{left}z13e...{right}z14e; +%small_iito(10,s,h); +endchar; + +cmchar "Tamil lu"; +beginchar(108,2x_height#,x_height#,1.4desc_depth#); +adjust_fit(0,0); +callchar:="l"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +filldraw stroke z4e...z1e..z2e..z3e..z4e...{up}z81e..z5e...{down}z6e--z7e{down}...{right}z8e...{up}z9e + ...{left}z10e; +z21=z8; pos21(tthin,0); x22=.15[x5,x21]; bot y22r=-d; pos22(tthick,-90); +x23=x81-u; y23=-.4d; x24=x23+.5u; y24=y23+.5u; pos23(tthin,-180); pos24(tthin,-270); +x25=w-u; y25=y24; pos25(tthin,-270); x26r=x25; x27=x26; pos26(tmed,0); +y26=y25l; y27=x_height; pos27(tmed,0); +filldraw stroke z21e{down}...{left}z22e...{up}z23e...{right}z24e--z25e; +filldraw stroke z26e--z27e; +penlabels(21,22,23,24,25,26,27); +endchar; + +cmchar "Tamil luu"; +beginchar(109,2.4x_height#,x_height#,1.4desc_depth#); +adjust_fit(0,0); +w:=1.9x_height; +callchar:="l"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +filldraw stroke z4e...z1e..z2e..z3e..z4e...{up}z81e..z5e...{down}z6e--z7e{down}...{right}z8e...{up}z9e + ...{left}z10e; +z21=z8; pos21(tthin,0); x22=.15[x5,x21]; bot y22r=-d; pos22(tthick,-90); +x23=x81-u; y23=-.4d; x24=x23+.5u; y24=y23+.5u; pos23(tthin,-180); pos24(tthin,-270); +x25=w-u; y25=y24; pos25(tthin,-270); x26r=x25; x27=x26; pos26(tthin,0); +y26=y25l; y27=x_height; pos27(tthin,0); +filldraw stroke z21e{down}...{left}z22e...{up}z23e...{right}z24e--z25e; +filldraw stroke z26e--z27e; +w:=2.4x_height; +x28=x27l; y28r=y27; y29=y28; x29=w-u; pos28(tthin,90); pos29(tthin,90); +filldraw stroke z28e--z29e; +x31=x30=.65[x28,x29]; y30=y27; y31=0; pos30(tmed,0); pos31(tmed,0); +filldraw stroke z30e--z31e; +penlabels(21,22,23,24,25,26,27,28,29,30); +endchar; + +cmchar "Tamil lai"; +beginchar(110,2.8x_height#,asc_height#,0); +adjust_fit(0,0); +callchar:="l"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; aipoints; +z211=.5[z210,z2]; pos211(tthin,135); +filldraw stroke z201e...{down}z202e...{left}z203e...{up}z204e...z205e...{right}z206e + ...{down}z207e...z208e...{down}z209e...{right}z210e...z211e + ...{right}z2e...{down}z3e...{left}z4e...{up}z81e...{right}z5e...{down}z6e--z7e{down}...{right}z8e...{up}z9e...{left}z10e; +picture V; transform t; t=identity shifted(x_height,0); +V=currentpicture transformed t; currentpicture:=V; +endchar; + + + +cmchar "Tamil v"; +beginchar(112,1.4x_height#+2u#,x_height#,0); +adjust_fit(0,0); +callchar:="v"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "Tamil vi"; +beginchar(114,1.65x_height#+2u#,asc_height#,0); +adjust_fit(0,0); +callchar:="v"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; x21r=x10l; x21l=x10r; x21=x10; cloney(21,10); +x11=x10; top y11r=h; pos11(tthick,90); x13=x12=w-u; y12=x_height; +y13r=y13l=y13=0; x13l=x13-.6; x13r=x13+.6; pos12(tthin,0); +filldraw stroke z21e{left}...{right}z11e...{down}z12e--z13e; +penlabels(11,12,13); +endchar; + +cmchar "Tamil vii"; +beginchar(115,1.5x_height#+u#,body_height#,0); +adjust_fit(0,0); +callchar:="v"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x21r=x10l; x21l=x10r; x21=x10; cloney(21,10); small_iito(21,s,h); +endchar; + +cmchar "Tamil vu"; +beginchar(116,1.5x_height#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="v"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +clonex(11,9); y11r=y11l=y11=-d; filldraw stroke z9e--z11e; +penlabels(11); endchar; + +cmchar "Tamil vuu"; +beginchar(117,1.5x_height#+3u#,x_height#,1.4desc_depth#); +adjust_fit(0,0); +callchar:="v"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +clonex(11,9); y11r=y11l=y11=-.5d; filldraw stroke z9e--z11e; +x18=x11; y18=y11; pos18(tthin,0); x20=w-u; y20=.5[y19,y21]; pos20(tthin,-180); +x19=.5[x18,x20]; top y19l=0; pos19(tthin,-90); x21=.5[x1,x20]; y21=-d; +x22=x1; y22=-.4d; x23=.25[x1,x9]; y23=-.2d; x24=.5[x1,x9]; y24=-.45d; +pos21(tthick,-270); pos22(tthin,-360); pos23(tthin,-450); pos24(tthinner,-540); +filldraw stroke z18e{up}...{right}z19e...{down}z20e...{left}z21e...{up}z22e + ...{right}z23e...{down}z24e; +penlabels(11); endchar; + +cmchar "Tamil z"; +beginchar(120,1.6x_height#,x_height#,1.4desc_depth#); +adjust_fit(0,0); +callchar:="m"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x9=x9r=x9l=x5; y9=-.3d; y9l=y9+.6;y9r=y9-.6; filldraw stroke z8e{down}...{right}z9e; +x90l=x9l; y90l=y9l; pos90(tthin,-170); +x10=.4[x1,x5]; bot y10r=-d; x11=x1; y11=.3[y9,y10]; pos10(tthick,-90); pos11(tthin,-180); +x12=.25[x2,x5]; y12=.5[y2,y11]; pos12(tthinner,40); +filldraw stroke z9e{left}...{left}z10e...{up}z11e...z12e; +penlabels(9,10,11,12); +endchar; + +cmchar "Tamil zi"; +beginchar(122,1.9x_height#,asc_height#,1.4desc_depth#); +adjust_fit(0,0); +callchar:="m"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x9=x9r=x9l=x5; y9=-.3d; y9l=y9+.6;y9r=y9-.6; filldraw stroke z8e{down}...{right}z9e; +x90l=x9l; y90l=y9l; pos90(tthin,-170); +x10=.4[x1,x5]; bot y10r=-d; x11=x1; y11=.3[y9,y10]; pos10(tthick,-90); pos11(tthin,-180); +x12=.25[x2,x5]; y12=.5[y2,y11]; pos12(tthinner,40); +filldraw stroke z9e{left}...{left}z10e...{up}z11e...z12e; +x30=x6; top y30l=h; y31=x_height; x32=x31=w-u; y32=0; +pos30(tthick,-90); pos31(tthin,-180); y32r=y32l=y32; +x32r=x32-.6; x32l=x32+.6; +filldraw stroke z6e{left}...{right}z30e...{down}z31e--z32e; +penlabels(9,10,11,12,30,31,32); +endchar; + +cmchar "Tamil zii"; +beginchar(123,1.6x_height#,body_height#,1.4desc_depth#); +adjust_fit(0,0); +callchar:="m"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x9=x9r=x9l=x5; y9=-.3d; y9l=y9+.6;y9r=y9-.6; filldraw stroke z8e{down}...{right}z9e; +x90l=x9l; y90l=y9l; pos90(tthin,-170); +x10=.4[x1,x5]; bot y10r=-d; x11=x1; y11=.3[y9,y10]; pos10(tthick,-90); pos11(tthin,-180); +x12=.25[x2,x5]; y12=.5[y2,y11]; pos12(tthinner,40); +filldraw stroke z9e{left}...{left}z10e...{up}z11e...z12e; +small_iito(6,s,h); +penlabels(9,10,11,12); +endchar; + +cmchar "Tamil zu"; +beginchar(124,2.2x_height#,x_height#,1.4desc_depth#); +adjust_fit(0,0); +callchar:="m"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +clonex(88,8); y88r=y88l=y88=-.5d; filldraw stroke z8e--z88e; +x9=x88; y9=y88; pos9(tthin,-360); x99=x4; y99=y9; pos99(tthin,-180); +x10=.25[x2,x8]; bot y10l=-d; pos10(tmed,-270); +x11=-.6x_height+u; y11=.5bar_height; x12=x1-.5u; y12l=h; +pos11(tthin,-360); x12l=x12r=x12; y12=y12l-.6; y12r=y12-.6; +filldraw stroke z9e{up}...{down}z99e...{left}z10e...{up}z11e...{right}z12e; +picture V; transform t; t=identity shifted(.6x_height,0); +V=currentpicture transformed t; currentpicture:= V; +endchar; + +cmchar "Tamil zuu"; +beginchar(125,2.2x_height#,x_height#,1.4desc_depth#); +adjust_fit(0,0); +callchar:="m"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +clonex(88,8); y88r=y88l=y88=-.5d; filldraw stroke z8e--z88e; +x9=x88; y9=y88; pos9(tthin,-360); x99=x4; y99=y9; pos99(tthin,-180); +x10=.25[x2,x8]; bot y10l=-d; pos10(tmed,-270); +x11=-.6x_height+u; y11=.5bar_height; x12=.5[x11,x1]; top y12l=h; +pos11(tthin,-360); pos12(tthin,-450); x13=.8[x11,x1]; y13=y12-1.5u; +pos13(tthin,-540); x14=.3[x11,x1]; y14=y13-1.5u; pos14(tthinner,-600); +filldraw stroke z9e{up}...{down}z99e...{left}z10e...{up}z11e...{right}z12e + ...{down}z13e...z14e; +picture V; transform t; t=identity shifted(.6x_height,0); +V=currentpicture transformed t; currentpicture:= V; +endchar; + + + +cmchar "Tamil l dot"; +beginchar(128,1.75x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="L"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "Tamil l dot i"; +beginchar(130,1.75x_height#+2u#,asc_height#,0); +adjust_fit(0,0); +callchar:="L"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +y13=y12; x13=x12r; x14=x13; top y14r=h; x15=x16=w-u; y15=y12; y16l=y16r=y16=0; +x16l=x16-.6; x16r=x16+.6; pos13(tthin,180); pos14(tthick,90); pos15(tthin,0); +filldraw stroke z13e{left}...{right}z14e...{down}z15e--z16e; +penlabels(14,15,16); endchar; + +cmchar "Tamil l dot ii"; +beginchar(131,1.75x_height#+u#,body_height#,0); +adjust_fit(0,0); +callchar:="L"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +y13=y12; x13=x12r; +pos13(tthin,0); +small_iito(13,s,h); +endchar; + +cmchar "Tamil l dot u"; +beginchar(132,2.05x_height#+3u#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="L"; +tspecs; +h:=oldh; w:=2.05x_height; d:=oldd; +x31=x11; y31=0; pos31(tthin,0); x33=w-u; y33=.5[y32,y34]; pos33(tthin,-180); +x32=.5[x31,x33]; y32=bar_height; pos32(tthin,-90); +x35=x1-3u; y35=.5[y1,y2]; pos35(tthin,-360); x34=.5[x35,x33]; bot y34l=-d; +pos34(tthick,-270); x36=x1; y36=y5; x36r=x36+.6; x36l=x36-.6; +y36r=y36-.6; y36l=y36+.6; +filldraw stroke z31e{up}...{right}z32e...{down}z33e...{left}z34e...{up}z35e..{right}z36e; +picture V; transform t; t=identity shifted(3u,0); V=currentpicture transformed t; +currentpicture:=V; +endchar; + +cmchar "Tamil l dot uu"; +beginchar(133,2.05x_height#+3u#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="L"; +tspecs; +h:=oldh; w:=2.05x_height; d:=oldd; +x31=x11; y31=0; pos31(tthin,0); x33=w-u; y33=.5[y32,y34]; pos33(tthin,-180); +x32=.5[x31,x33]; y32=bar_height; pos32(tthin,-90); +x35=x1-3u; y35=.5[y1,y2]; pos35(tthin,-360); x34=.5[x35,x33]; bot y34l=-d; +pos34(tthick,-270); x36=.5[x35,x1]; top y36l=h; pos36(tthin,-450); +x37=.9[x35,x1]; y37=y36-u; pos37(tthin,-540); x38=.3[x35,x1]; y38=y37-u; +pos38(tthinner,-600); +filldraw stroke z31e{up}...{right}z32e...{down}z33e...{left}z34e...{up}z35e..{right}z36e + ...{down}z37e...z38e; +picture V; transform t; t=identity shifted(3u,0); V=currentpicture transformed t; +currentpicture:=V; +endchar; + +cmchar "Tamil l dot ai"; +beginchar(134,2.75x_height#,asc_height#,0); +adjust_fit(0,0); +callchar:="L"; +dodraw:=false; +tspecs; +dodraw:=true; +h:=oldh; w:=oldw; d:=oldd; +aipoints; +z211=.5[z210,z2]; pos211(tthin,135); +filldraw stroke z201e...{down}z202e...{left}z203e...{up}z204e...z205e...{right}z206e + ...{down}z207e...z208e...{down}z209e...{right}z210e...z211e + ...{right}z2e...{down}z3e...{left}z4e...{up}z1e...{right}z5e...{down}z6e; +filldraw stroke z7e---z8e; filldraw stroke z9e---z10e; +filldraw stroke z11e---z12e; +picture V; transform t; t=identity shifted(x_height,0); +V=currentpicture transformed t; currentpicture:=V; +endchar; + +cmchar "Tamil alv. r"; +beginchar(136,1.3x_height#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="R"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +filldraw stroke z4e{up}...{right}z6e...{down}z7e..z8e..z9e...{down}z12e..z10e; +endchar; + +cmchar "Tamil alv. raa"; +beginchar(137,1.3x_height#+3u#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="R"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x77=x7; y77=.4[y6,y7]; pos77(tthin,-180); +x7:=x7-u; x7r:=x7r-u; x7l:=x7l-u; +x88=x77; y88=0; pos88(tthin,-180); +x31=x5; bot y31l=-d; x32=-2u; y32=.3bar_height; +pos31(tthick,-270); pos32(tthin,-360); +x33=x33r=x33l=x11-.5u; y33=y11; y33l=y33+.6; y33r=y33-.6; +filldraw stroke z4e{up}...{right}z6e...{down}z77e...{down}z7e...{down}z88e...{left}z31e...{up}z32e...z33e; +picture V; transform t; t=identity shifted(3u,0); +V=currentpicture transformed t; currentpicture:=V; +endchar; + +cmchar "Tamil alv. ri"; +beginchar(138,1.7x_height#,asc_height#,desc_depth#); +adjust_fit(0,0); +callchar:="R"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +filldraw stroke z4e{up}...{right}z6e...{down}z7e..z8e..z9e...{down}z12e..z10e; +x77=x6; top y77r=h; pos77(tthick,-270); +x78=w-u; y78=x_height; x79=x78; y79=y79r=y79l=0; +x79r=x79+.6; x79l=x79-.6; pos78(tthin,-360); +filldraw stroke z6e{left}...{right}z77e...{down}z78e--z79e; +endchar; + +cmchar "Tamil alv. rii"; +beginchar(139,1.3x_height#,body_height#,desc_depth#); +adjust_fit(0,0); +callchar:="R"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +filldraw stroke z4e{up}...{right}z6e...{down}z7e..z8e..z9e...{down}z12e..z10e; +small_iito(6,s,h); +endchar; + +cmchar "Tamil alv. ru"; +beginchar(140,1.75x_height#,x_height#,1.4desc_depth#); +adjust_fit(0,0); +callchar:="R"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x77=x7; y77=y7; pos77(tthin,-180); +x31=x5; bot y31l=-d; x32=x1; y32=-.5d; y33=y32+.5u; x33=x32+.5u; x34=w-u; y34=y33; +pos31(tthick,-270); pos32(tthin,-360); pos33(tthin,-450); pos34(tthin,-450); +filldraw stroke z4e{up}...{right}z6e...{down}z77e...{left}z31e...{up}z32e...{right}z33e--z34e; +x35r=x34; y35=y34r; x36=x35; y36=x_height; pos35(tthick,0); pos36(tthick,0); +filldraw stroke z35e--z36e; +endchar; + +cmchar "Tamil alv. ruu"; +beginchar(141,2x_height#,x_height#,1.4desc_depth#); +adjust_fit(0,0); +callchar:="R"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x77=x7; y77=y7; pos77(tthin,-180); +x31=x5; bot y31l=-d; x32=x1; y32=-.5d; y33=y32+.5u; x33=x32+.5u; x34=w-3.3u; y34=y33; +pos31(tthick,-270); pos32(tthin,-360); pos33(tthin,-450); pos34(tthin,-450); +filldraw stroke z4e{up}...{right}z6e...{down}z77e...{left}z31e...{up}z32e...{right}z33e--z34e; +x35r=x34; y35=y34r; x36=x35; y36=x_height; pos35(tthin,0); pos36(tthin,0); +filldraw stroke z35e--z36e; +x37=x36l; top y37r=x_height; x38=w-.3u; y38=y37; pos37(tthin,90); pos38(tthin,90); +filldraw stroke z37e--z38e; +x39r=x38-.7u; y39=x_height; x40=x39; y40=0; pos39(tthick,0); pos40(tthick,0); +filldraw stroke z39e--z40e; +endchar; + + +cmchar "Tamil 2loop n"; +beginchar(144,2x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="N"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +filldraw stroke z13e---z14e; +filldraw stroke z15e---z16e; +endchar; + +cmchar "Tamil 2loop naa"; +beginchar(145,2x_height#+3u#,x_height#,desc_depth#); +adjust_fit(0,0); +w:=2x_height; +callchar:="N"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x21=x16+u; y21=y6; +y22=-d; x22=.4[x1,x21]; +x23=x1; y23=.8x_height; +pos21(tthick,-1080); pos22(tthin,-1170); +y23l+.5=y23r-.5=y23; x23l=x23; x23r=x23-1; +filldraw stroke z13e{right}...{down}z21e...{left}z22e...{right}z23e; +picture V; transform t; t=identity shifted(3u,0); +V=currentpicture transformed t; currentpicture:=V; +endchar; + + + +cmchar "Tamil 2loop ni"; +beginchar(146,2.25x_height#,asc_height#,0); +adjust_fit(0,0); +callchar:="N"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +filldraw stroke z13e---z14e; +filldraw stroke z15e---z16e; +x21=x16; y21=x_height; pos21(tthin,0); x22=x21; top y22l=h; pos22(tthick,-90); +x23=w-u; y23=x_height; x24=x23; y24=y24l=y24r=0; x24r=x24-.6; x24l=x24+.6; +pos23(tthin,-180); +filldraw stroke z21e{left}...{right}z22e...{down}z23e--z24e; +penlabels(22,23,24); +endchar; + +cmchar "Tamil 2loop nii"; +beginchar(147,2x_height#,body_height#,0); +adjust_fit(0,0); +callchar:="N"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +filldraw stroke z13e---z14e; +filldraw stroke z15e---z16e; +small_iito(16,s,h); +endchar; + +cmchar "Tamil 2loop nu"; +beginchar(148,2.5x_height#+3u#,x_height#,desc_depth#); +adjust_fit(0,0); +w:=2x_height; +callchar:="N"; +tspecs; +h:=oldh; w:=2.5x_height; d:=oldd; +x21=x16+u; y21=y6; +y22=-d; x22=.4[x1,x21]; +x23=x1-3u; y23=-.43d; x24=x23+u; y24=-.25d; +pos21(tthick,-1080); pos22(tthin,-1170); +pos23(tthin,-1260); pos24(tthin,-1350); +y25=y24; x25=w-2u; pos25(tthin,-1350); +rt x26r=x25; y26=y25; pos26(tthick,0); x27=x26; y27=h; pos27(tthick,0); +filldraw stroke z13e{right}...{down}z21e...{left}z22e...{up}z23e{up}...{right}z24e--z25e; +filldraw stroke z26e--z27e; +picture V; transform t; t=identity shifted(3u,0); +V=currentpicture transformed t; currentpicture:=V; +endchar; + +cmchar "Tamil 2loop nuu"; +beginchar(149,2.8x_height#+3u#,x_height#,desc_depth#); +adjust_fit(0,0); +w:=2x_height; +callchar:="N"; +tspecs; +h:=oldh; w:=2.5x_height; d:=oldd; +x21=x16+u; y21=y6; +y22=-d; x22=.4[x1,x21]; +x23=x1-3u; y23=-.43d; x24=x23+u; y24=-.25d; +pos21(tthick,-1080); pos22(tthin,-1170); +pos23(tthin,-1260); pos24(tthin,-1350); +y25=y24; x25=w-3u; pos25(tthin,-1350); +rt x26r=x25; y26=y25; pos26(tthin,0); x27=x26; y27=h; pos27(tthin,0); +filldraw stroke z13e{right}...{down}z21e...{left}z22e...{up}z23e{up}...{right}z24e--z25e; +filldraw stroke z26e--z27e; +w:=2.8x_height; +x28=lft x27l; top y28r=h; x29=w-u; y29=y28; pos28(tthin,90); pos29(tthin,90); +rt x30r=x29-.7u; y30=h; x31=x30; y31=0; pos30(tthick,0); pos31(tthick,0); +filldraw stroke z28e--z29e; filldraw stroke z30e--z31e; +picture V; transform t; t=identity shifted(3u,0); +V=currentpicture transformed t; currentpicture:=V; +endchar; + +cmchar "Tamil 2loop n ai"; +beginchar(150,3x_height#,asc_height#,0); +adjust_fit(0,0); +callchar:="N"; +dodraw:=false; +tspecs; +dodraw:=true; +h:=oldh; w:=oldw; d:=oldd; +aipoints; +z211=.5[z210,z2]; pos211(tthin,135); +filldraw stroke z201e...{down}z202e...{left}z203e...{up}z204e...z205e...{right}z206e + ...{down}z207e...z208e...{down}z209e...{right}z210e...z211e + ...{right}z2e...{down}z3e...{left}z4e..z81e...{right}z5e + ...{down}z6e...{left}z7e...{up}z8e...{right}z13e---z14e; +filldraw stroke z15e---z16e; +picture V; transform t; t=identity shifted(x_height,0); +V=currentpicture transformed t; currentpicture:=V; +endchar; + +cmchar "grantha s dot"; +beginchar(176,2.2x_height#,asc_height#,desc_depth#); +adjust_fit(0,0); +callchar:="S"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "grantha s dot i"; +beginchar(178,2.5x_height#,body_height#+2u#,desc_depth#); +adjust_fit(0,0); +callchar:="S"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x50=x44; y50=y44; pos50(tthin,90); +x51=x50; top y51l=h; pos51(tthick,-90); +x52=x53=w-u; y52=x_height; y53=y53r=y53l=0; pos52(tthin,-180); +x53r=x53-.6; x53l=x53+.6; +filldraw stroke z50e{left}...{right}z51e...{down}z52e--z53e; +penlabels(50,51,52,53); +endchar; + +cmchar "grantha s dot ii"; +beginchar(179,2.4x_height#,body_height#+4u#,desc_depth#); +adjust_fit(0,0); +callchar:="S"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x50=x44; y50=y44; pos50(tthin,0); +small_iito(50,s,h); +endchar; + +cmchar "grantha s"; +beginchar(184,2.4x_height#,x_height#,0); +adjust_fit(0,0); +callchar:="s"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + +cmchar "grantha si"; +beginchar(186,2.6x_height#,asc_height#,0); +adjust_fit(0,0); +callchar:="s"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +z82=z16; x83=x16; top y83l=h; pos82(tthin,45); pos83(tthick,-90); +x85=x84=w-u; y84=x_height; y85=y85r=y85l=0; x85r=x85-.6; x85l=x85+.6; +pos84(tthin,-180); +filldraw stroke z82e{left}...{right}z83e...{down}z84e--z85e; +penlabels(83,84,85); +endchar; + +cmchar "grantha sii"; +beginchar(187,2.4x_height#,body_height#,0); +adjust_fit(0,0); +callchar:="s"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +x100=x16-2.5u; x101=x16+.5u; top y101l=h; pos101(tthick,-90); +y100=.5[y16,y101]; pos100(tthin,0); +x102=x101+u; y102=y101-.5u; pos102(.7tthick,-135); x103=x102; +y103=y102-2u; pos103(tthin,-270); x104=x104r=x104l=x102; +y104=y101; y104r=y104-.6; y104l=y104+.6; +filldraw stroke z16e{left}...{up}z100e...{right}z101e...z102e...{left}z103e...{right}z104e; +endchar; + +cmchar "grantha j"; +beginchar(192,1.75x_height#,x_height#,.8x_height#); +adjust_fit(0,0); +callchar:="j"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + + +cmchar "grantha ji"; +beginchar(194,2.05x_height#,asc_height#,.8x_height#); +adjust_fit(0,0); +callchar:="j"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +z182=z10; x183=x10; top y183l=h; pos182(tthin,90); pos183(tthick,-90); +x185=x184=w-u; y184=x_height; y185=y185r=y185l=0; x185r=x185-.6; x185l=x185+.6; +pos184(tthin,-180); +filldraw stroke z182e{left}...{right}z183e...{down}z184e--z185e; +penlabels(183,184,185); +endchar; + +cmchar "grantha jii"; +beginchar(195,1.75x_height#,body_height#,.8x_height#); +adjust_fit(0,0); +callchar:="j"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +z82=z10; pos82(tthinner,0); small_iito(82,s,h); +endchar; + + + + + +cmchar "grantha h"; +beginchar(200,3x_height#,x_height#,desc_depth#); +adjust_fit(0,0); +callchar:="h"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +endchar; + + +cmchar "grantha hi"; +beginchar(202,3.2x_height#,asc_height#,desc_depth#); +adjust_fit(0,0); +callchar:="h"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +z180=z106; pos180(tthin,90); x181=x180; top y181l=h; pos181(tthick,-90); +x182=x183=w-u; y182=x_height; y183=y183r=y183l=0; pos182(tthin,-180); +x183r=x183-.6; x183l=x183+.6; +filldraw stroke z180e{left}...{right}z181e...{down}z182e--z183e; +penlabels(180,181,182,183); +endchar; + +cmchar "grantha hii"; +beginchar(203,3x_height#,body_height#,desc_depth#); +adjust_fit(0,0); +callchar:="h"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +small_iito(106,s,h); +endchar; + +cmchar "grantha ksh"; +beginchar(208,3.6x_height#,asc_height#,desc_depth#); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +y202=y25; x202=x4+2.5u; pos202(tthin,90); x241r=w-u; +x206=.4[x202,x241]; x207=.3[x202,x241]; x205=.2[x202,x241]; +top y205r=x_height; pos205(tthin,-270); y206=.5[y205,y207]; pos206(tthick,-360); +bot y207r=0; pos207(tmed,-450); x240=.8[x207,x241]; bot y240r=0; +pos240(tmed,-450); y241=.5bar_height; pos241(tthick,-360); +x243=.5[x207,x240]; y243=h-y241; z242=.5[z241,z243]; +pos242(.5(tthick+tthin),-315); pos243(tthin,-360); +x244=.5[x243,x245]; top y244l=h; pos244(tmed,-450); x245=x243+4u; y245=y243; +pos245(tthin,-540); x246=.5[x207,x243]; bot y246l=-d; pos246(tthinner,-585); +x203=.4[x202,x207]; y203=.5[y202,y204]; pos203(tthick,0); x204=x202; +bot y204r=0; pos204(tthin,-90); x201=2x202-x203; y201=y203; pos201(tthin,-180); +filldraw stroke z25e--z202e{right}...{down}z203e...{left}z204e...z201e...{right}z205e + ...{down}z206e...{left}z207e; +filldraw stroke z207e--z240e{right}...{up}z241e...{z243-z241}z242e...{up}z243e + ...{right}z244e...z245e--z246e; +endchar; + +cmchar "grantha kshi"; +beginchar(210,3.6x_height#+2.6u#,body_height#+2u#,desc_depth#); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=3.6x_height; d:=oldd; +y202=y25; x202=x4+2.5u; pos202(tthin,90); x241r=w-u; +x206=.4[x202,x241]; x207=.3[x202,x241]; x205=.2[x202,x241]; +top y205r=x_height; pos205(tthin,-270); y206=.5[y205,y207]; pos206(tthick,-360); +bot y207r=0; pos207(tmed,-450); x240=.8[x207,x241]; bot y240r=0; +pos240(tmed,-450); y241=.5bar_height; pos241(tthick,-360); +x243=.5[x207,x240]; y243=asc_height-y241; z242=.5[z241,z243]; +pos242(.5(tthick+tthin),-315); pos243(tthin,-360); +x244=.5[x243,x245]; top y244l=asc_height; pos244(tmed,-450); x245=x243+4u; y245=y243; +pos245(tthin,-540); x246=.5[x207,x243]; bot y246l=-d; pos246(tthinner,-585); +x203=.4[x202,x207]; y203=.5[y202,y204]; pos203(tthick,0); x204=x202; +bot y204r=0; pos204(tthin,-90); x201=2x202-x203; y201=y203; pos201(tthin,-180); +filldraw stroke z25e--z202e{right}...{down}z203e...{left}z204e...z201e...{right}z205e + ...{down}z206e...{left}z207e; +filldraw stroke z207e--z240e{right}...{up}z241e...{z243-z241}z242e...{up}z243e + ...{right}z244e...z245e--z246e; +w:=oldw; +x250=x244; top y250l=asc_height; pos250(tthin,-90); x251=x245; top y251=h; +pos251(tthick,90); x252=w-u; y252=x_height; pos252(tthin,0); x253=x252; +y253=y253r=y253l=0; x253l=x253-.6; x253r=x253+.6; +filldraw stroke z250e{left}...{right}z251e...{down}z252e--z253e; +endchar; + +cmchar "grantha kshii"; +beginchar(211,3.6x_height#,body_height#+4u#,desc_depth#); +adjust_fit(0,0); +callchar:="c"; +tspecs; +h:=oldh; w:=oldw; d:=oldd; +y202=y25; x202=x4+2.5u; pos202(tthin,90); x241r=w-u; +x206=.4[x202,x241]; x207=.3[x202,x241]; x205=.2[x202,x241]; +top y205r=x_height; pos205(tthin,-270); y206=.5[y205,y207]; pos206(tthick,-360); +bot y207r=0; pos207(tmed,-450); x240=.8[x207,x241]; bot y240r=0; +pos240(tmed,-450); y241=.5bar_height; pos241(tthick,-360); +x243=.5[x207,x240]; y243=asc_height-y241; z242=.5[z241,z243]; +pos242(.5(tthick+tthin),-315); pos243(tthin,-360); +x244=.5[x243,x245]; top y244l=asc_height; pos244(tmed,-450); x245=x243+4u; y245=y243; +pos245(tthin,-540); x246=.5[x207,x243]; bot y246l=-d; pos246(tthinner,-585); +x203=.4[x202,x207]; y203=.5[y202,y204]; pos203(tthick,0); x204=x202; +bot y204r=0; pos204(tthin,-90); x201=2x202-x203; y201=y203; pos201(tthin,-180); +filldraw stroke z25e--z202e{right}...{down}z203e...{left}z204e...z201e...{right}z205e + ...{down}z206e...{left}z207e; +filldraw stroke z207e--z240e{right}...{up}z241e...{z243-z241}z242e...{up}z243e + ...{right}z244e...z245e--z246e; +small_iito(244,s,h) +endchar; + +cmchar "Tamil ayyatham"; +beginchar(240,asc_height#+2u#,asc_height#,0); +adjust_fit(0,0); pickup light_rule.nib; autorounded; +lft x6=hround u; x2=5u-x6; bot y4=0; y2=2u; circle_points; draw_circle; +transform ta; ta=identity shifted(w-5u,0); transform tb; tb=identity shifted(.5w-2.5u,h-6u); +picture VA; VA=currentpicture transformed ta; +picture VB; VB=currentpicture transformed tb; +addto currentpicture also VA; addto currentpicture also VB; +endchar; + +% following taken directly from cmr's accent.mf +cmchar "Dot accent"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar(241,5u#,min(asc_height#,10/7x_height#+.5dot_diam#),0); +define_whole_blacker_pixels(dot_diam); +italcorr h#*slant+.5dot_diam#-2u#; +adjust_fit(0,0); +pickup tiny.nib; pos1(dot_diam,0); pos2(dot_diam,90); +x1=x2=.5w; top y2r=h+1; +if bot y2l<x_height+o+slab: y2l:=min(y2r-eps,x_height+o+slab+.5tiny); fi +y1=.5[y2l,y2r]; dot(1,2); % dot +penlabels(1,2); endchar; + +cmchar "grantha u"; +beginchar(242,x_height#,asc_height#,0); +adjust_fit(0,0); +x1=u; x2=w-u; top y1r=h; y2=y1; pos1(tthinner,90); pos2(tthinner,90); +rt x3r=x2; x4=x3; y3=h; y4=h-3u; pos3(tthinner,0); pos4(tthinner,0); +x5=x2; bot y5l=y4; x6=x5-3u; y6=y5; pos5(tthinner,90); pos6(tthinner,90); +lft x7l=x6; y7=y4; y8=y3; x8=x7; pos7(tthinner,0); pos8(tthinner,0); +filldraw stroke z1e--z2e; +filldraw stroke z3e--z4e; +filldraw stroke z5e--z6e; +filldraw stroke z7e--z8e; +%picture V; transform t; t=identity shifted(-x_height,0); +%V=currentpicture transformed t; currentpicture:=V; +endchar; + +cmchar "grantha uu"; +beginchar(243,1.2x_height#,asc_height#+3u#,0); +adjust_fit(0,0); +w:=x_height; h:=asc_height; +x1=u; x2=w-u; top y1r=h; y2=y1; pos1(tthinner,90); pos2(tthinner,90); +rt x3r=x2; x4=x3; y3=h; y4=h-3u; pos3(tthinner,0); pos4(tthinner,0); +x5=x2; bot y5l=y4; x6=x5-3u; y6=y5; pos5(tthinner,90); pos6(tthinner,90); +lft x7l=x6; y7=y4; y8=y3; x8=x7; pos7(tthinner,0); pos8(tthinner,0); +filldraw stroke z1e--z2e; +filldraw stroke z3e--z4e; +filldraw stroke z5e--z6e; +filldraw stroke z7e--z8e; +w:=1.2x_height; h:=asc_height+3u; +x10=w-u; x11=.5[x10,x12]; y11=y4-3u; y10=.5[y9,y11]; top y9l=h; x9=.5[x8,x10]; +pos9(tthinner,-90); pos10(tthinner,-180); pos11(tthinner,-270); +y12=y4; x12=x6-2u; pos12(tthinner,-360); +filldraw stroke z8e{up}...{right}z9e...{down}z10e...{left}z11e...{up}z12e; +%picture V; transform t; t=identity shifted(-x_height,0); +%V=currentpicture transformed t; currentpicture:=V; +endchar; + + diff --git a/Master/texmf-dist/fonts/source/public/itrans/tel12.mf b/Master/texmf-dist/fonts/source/public/itrans/tel12.mf new file mode 100644 index 00000000000..c33adccf1cf --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/tel12.mf @@ -0,0 +1,7 @@ +%tel12% +input telmode; +font_size 12pt#; +slant:=0; +pen_width#:=0.5pt#; +input telparam; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/tel12b.mf b/Master/texmf-dist/fonts/source/public/itrans/tel12b.mf new file mode 100644 index 00000000000..b54210f2ee9 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/tel12b.mf @@ -0,0 +1,7 @@ +%tel12b% +input telmode; +font_size 12pt#; +slant:=0; +pen_width#:=0.68pt#; +input telparam; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/tel12nx.mf b/Master/texmf-dist/fonts/source/public/itrans/tel12nx.mf new file mode 100644 index 00000000000..b012a6547a3 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/tel12nx.mf @@ -0,0 +1,10 @@ +%tel12nx% non-uniform pen(x-axis) +input telmode; +font_size 12pt#; +slant:=0; +pen_width#:=0.74pt#; +vardef special_telpen = + pickup pencircle xscaled (pen_width/2) yscaled (pen_width); +enddef; +input telparam; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/tel12ny.mf b/Master/texmf-dist/fonts/source/public/itrans/tel12ny.mf new file mode 100644 index 00000000000..ea0f796e09a --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/tel12ny.mf @@ -0,0 +1,10 @@ +%tel12ny% non-uniform pen(y-axis) +input telmode; +font_size 12pt#; +slant:=0; +pen_width#:=0.65pt#; +vardef special_telpen = + pickup pencircle xscaled pen_width yscaled (pen_width/2); +enddef; +input telparam; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/tel12s.mf b/Master/texmf-dist/fonts/source/public/itrans/tel12s.mf new file mode 100644 index 00000000000..6816c2d6d56 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/tel12s.mf @@ -0,0 +1,7 @@ +%tel12s% +input telmode; +font_size 12pt#; +slant:=1/4; +pen_width#:=0.61pt#; +input telparam; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/tel18.mf b/Master/texmf-dist/fonts/source/public/itrans/tel18.mf new file mode 100644 index 00000000000..a54da7079ec --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/tel18.mf @@ -0,0 +1,7 @@ +%tel18% +input telmode; +font_size 18pt#; +slant:=0; +pen_width#:=0.86pt#; +input telparam; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/telbase.mf b/Master/texmf-dist/fonts/source/public/itrans/telbase.mf new file mode 100644 index 00000000000..9234fcdc269 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/telbase.mf @@ -0,0 +1,871 @@ +% 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 several macros. These are used for setting +% up the environment and character generation. Before you change +% anything in this file you should be very clear about the impact +% of the change. +% + % when testing is false all symbols in the font are + % generated automatically else when testing is true + % only selected symbols will be generated. +if unknown testing:boolean testing; testing:=false; fi +showstopping := 1; % for debugging only +let telchar=\; +let generate=input; +let sketch=draw; +let pos=penpos; +let stop=bye; +string tl_symname,tl_stra,tl_strb,tl_strc,tl_strw,tl_strx,tl_stry; + % contains the name of the symbol being created +tl_symname:=""; % used for creating substitute commands on log file +tl_stra:="OFFSETA{"; tl_strb:="OFFSETB{"; tl_strc:="OFFSETC{"; +tl_strw:="CODE{"; +tl_strx:="\def\";tl_stry:="}%"; + + +if testing: + %To test different characters use following definitions of + % stest and etest. + def stest (text s) = + quote def s = + enddef; + let etest=enddef; +else: + %To generate all the characters use following definitions of + % stest and etest. + def stest (text s) = + tl_symname := str s;% symbol name - used in various messages + enddef; + let etest=;; +fi; + +% We should be very careful about implications of currenttransform +% (particularly 'slanted' transform). When a path is drawn/filled +% currenttransform is applied. When a transform is applied to +% currentpicture, the transform is really applied to slanted (or +% whatever currenttransform is) path. +def font_setup = + let adjust_fit = normal_adjust_fit; + currenttransform := currenttransform slanted slant; + define_pixels(u,v,uh,asc_height,des_depth,x_height); + define_pixels(pen_width,ul,ur,em_width); + define_pixels(bot_depth,top_height); + define_pixels(fig_height,tfig_height,tfig_width); + define_pixels(ascunit,vmwidth); + define_pixels(top_accent,bot_accent); + define_pixels(bot_cc_ceiling,bot_cc_floor,bot_cc_width,ccwidth); + define_pixels(c_height,w_height,j_height); + define_pixels(asc_height1,asc_height2); + define_pixels(dot_radius,wedge_height,wedge_depth); + define_pixels(half_plus_width,sc_height); + + define_pixels(v_a_width,v_e_width,v_u_width); + define_pixels(v_lo_width,v_ea_width,v_i_width); + + define_pixels(vm_a_width,vm_e_width,vm_e_height1); + define_pixels(vm_e_height2,vm_e_height3,vm_u_width); + define_pixels(vm_ro_width,vm_ao_width,vm_aoo_width); + + define_pixels(cb_ka_width,cb_kha_width,cb_ga_width,cb_cha_width); + define_pixels(cb_ja_width,cb_tta_width,cb_nna_width); + define_pixels(cb_ta_width,cb_da_width,cb_na_width); + define_pixels(cb_ba_width,cb_ya_width,cb_ra_width); + define_pixels(cb_la_width,cb_lla_width,cb_va_width,cb_ca_width); + define_pixels(cb_sha_width,cb_ksha_width); + define_pixels(cb_ksha_depth); + define_pixels(cb_np_width,cb_vg_width); + + define_pixels(cv_pu_width,cv_pu_depth); + + define_pixels(p_comma_width); + + %define pen + if unknown special_telpen: + pickup pencircle scaled pen_width; + telpen:=savepen; + else: + special_telpen; + telpen:=savepen; + fi; + + %print titles if generating font + if unknown offsets_only: + tracingtitles:=1; + fi; +enddef; + +newinternal l,r; %adjustment to spacing + +def normal_adjust_fit(expr left_adjustment,right_adjustment) = + l := -hround(left_adjustment*hppp); + interim xoffset := -l; + charwd := charwd + left_adjustment + right_adjustment; + r := l+hround(charwd*hppp) ; + w := r - hround(right_adjustment*hppp) ; +enddef; + +def makebox(text rule) = + for y=0,asc_height,-des_depth,x_height,-bot_depth, + top_height,w_height,c_height, + j_height: rule((l,y)t_,(r,y)t_); % horizontal rules + endfor; + rule((0,h),(r+pen_width,h)); rule((0,-d),(r+pen_width,-d));%height,depth markers + for x=l,r:rule((x,-bot_depth)t_,(x,top_height)t_); % vertical + endfor; + for x=u*(1+floor(l/u)) step u until r-1: + rule((x,-bot_depth)t_,(x,top_height)t_); + endfor; % vertical lines at each u + if charic <> 0: + rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); + fi % italic correction +enddef; + +def maketicks(text rule) = + for y=0,h.o_,-d.o_; + rule((l,y),(l+10,y));rule((r-10,y),(r,y)); % horizontals + endfor + for x=l,r: + rule((x,10-d.o_),(x,-d.o_)); + rule((x,h.o_-10),(x,h.o_)); % verticals + endfor + if charic <> 0: + rule((r+charic*pt,h.o_-10),(r+charic*pt,h.o_)); % italic corr + fi +enddef; + +rulepen := pensquare; + +def begintchar(expr a,b,c,d,e,f,g) = + beginchar(a,b,c,d); + italcorr e; + if known offsets_only: + message tl_strx&tl_symname&tl_strw&decimal(a)&tl_stry; + fi; + numeric left_space,right_space,l_s,r_s; + l_s:=f; r_s:=g; + left_space:=hround(hppp*f); right_space:=hround(hppp*g); + pickup telpen; + enddef; + +extra_endchar := extra_endchar&"w:=r-l;"; + +def endtchar = + charwd:=w/hppp; charht:= h/vppp; chardp:= d/vppp; + adjust_fit(l_s,r_s); + penlabels(range 1 thru 20); + message ""; + % If any special effects are needed then those should be + % defined as special_effects macro. + if known special_effects: special_effects; fi; + endchar; + enddef; + +% pivot_message macro is used to print offsets to certain points +% in the symbol being generated. These offsets are used by syllable +% building macros to allign vowel modifiers/consonant conjuncts. +% Unlike in english where all symbols stand alone, in Telugu +% various symbols in the font combine to form text. +% For consonant bases two/three offsets are identified. One is used to place +% vowel modifiers and the other is used to place consonant conjuncts(excluding +% those that appear on side). Third offset is used in attaching vowel modifiers +% in some special cases. Offsets have suffixes A,B and C. +% Vowel modifiers, accents and consonant +% conjuncts that appear above/below base consonant indicate one offset value. +% Same macro works in all cases. +% The messages are in the form of TeX macros. +% The log file contains TeX macros mixed with other messages. Use +% some pattern matching program like grep to eliminate all lines containing +% not begining with a \ sign. Name this file tloffsets. +% grep '^\\' xxxxx.log>tloffsets.tex +% The offsets are in em units. So the offsets would be same for any designsize +% and pen width combination. +% Print the offsets only when offsets are being generated. +if unknown offsets_only: % do not print offsets + def pivot_message (text t) = + enddef; +else: %print offsets + def pivot_message (text t) = + numeric count,piv[],index; + % count indicates the number of arguments + count:=0; + for index=t: count:=count+1; piv[count]:=index; endfor; + if count=1: + message tl_strx&tl_symname&tl_stra&decimal((piv[1]+left_space)/em_width)&tl_stry; + elseif count=2: + message tl_strx&tl_symname&tl_stra&decimal((piv[1]+left_space)/em_width)&tl_stry; + message tl_strx&tl_symname&tl_strb&decimal((piv[2]+left_space)/em_width)&tl_stry; + else: + message tl_strx&tl_symname&tl_stra&decimal((piv[1]+left_space)/em_width)&tl_stry; + message tl_strx&tl_symname&tl_strb&decimal((piv[2]+left_space)/em_width)&tl_stry; + message tl_strx&tl_symname&tl_strc&decimal((piv[3]+left_space)/em_width)&tl_stry; + + fi; + enddef; +fi;%end of if unknown offsets + +def fill_dot(suffix $) = + z$t = (x$,y$+dot_radius); + z$l = (x$-dot_radius,y$); + z$b = (x$,y$-dot_radius); + z$r = (x$+dot_radius,y$); + path fill_dot_p; + fill_dot_p = z$t..z$l..z$b..z$r..cycle; + fill fill_dot_p; + penlabels($t,$l,$b,$r); + enddef; + +def lit_cir_form = + lft z1l = (0,c_height/2); top z1t = (c_height/2,c_height); + rt z1 = (c_height,c_height/2); bot z1b = (c_height/2,0); + path lit_cir_p; + lit_cir_p = z1..z1t..z1l..z1b..cycle; + sketch lit_cir_p; + penlabels(1t,1l,1b); + enddef; + +def half_plus_form(suffix $) = + z$a=(x$+1/2half_plus_width,y$); rt z$b=(x$+half_plus_width,y$); + top z$c=(x$+1/2half_plus_width,x_height); + lft z$d = z$; + path half_plus_pa,half_plus_pb; + half_plus_pa = z$d--z$a--z$b; + half_plus_pb = z$a--z$c; + sketch half_plus_pa; sketch half_plus_pb; + penlabels($a,$b,$c,$d); +enddef; + +def barandhook_form (suffix $)(expr bar_width,t) = + z$a=(x$+bar_width-u,y$); rt z$b=(x$a+u,y$-uh); + bot z$c =(x$b-u,y$-2uh); lft z$d=(x$b-2u,y$b); + top z$e=(x$a-u,y$); rt z$f=(x$b,y$+1.5uh); + top z$g=(x$a,y$f+uh); z$h=(x$d,y$f); +path barandhook_p; +barandhook_p= subpath(0,t) of (rt z$--z$a..z$b..z$c..z$d..z$e..z$f..z$g..z$h); +sketch barandhook_p; +penlabels($a,$b,$c,$d); +enddef; + +def barandhook_forma (suffix $)(expr bar_width,t) = +barandhook_form($,bar_width,t); +erase sketch barandhook_p; +barandhook_p:= subpath(0,t) of (z$--z$a..z$b..z$c..z$d..z$e..z$f..z$g..z$h); +sketch barandhook_p; +enddef; + +def wedge(suffix $) = +bot z$w=(x$,-wedge_depth); + path wedge_p; + wedge_p = z$--z$w; + sketch wedge_p; + penlabels($u,$v,$w,$x,$y); + enddef; + +def vwedge(suffix $) = + z$a=(x$,y$+wedge_height); + path vwedge_p; + vwedge_p =z$--z$a; + sketch vwedge_p; + penlabels($a); + enddef; + + +def vm_hook_form (suffix $)(expr t) = + z$a = (x$,y$+1.5ascunit); + z$b = (x$+u,y$+3ascunit); + z$c = (x$+2u,y$+1.5ascunit); + sketch subpath (0,t) of (z$..z$a..z$b..z$c); + penlabels ($a,$b,$c); + h:=top y$b; +enddef; + + def v_a_form = + top z1=(1/4v_a_width,x_height); + z10=(x1-u,y1-uh); z11=(x1,y1-2(y1-y10)); + lft z3=(0,2/3x_height); bot z4=(1/2v_a_width,0); + rt z5=(v_a_width,2/3x_height); top z6=(v_a_width-1.5u,x_height); + z7=(3.5/5x5,1/2x_height); z8=(1/4w,1/2x_height); + z12=(.65v_a_width,5/6x_height); rt z2=(v_a_width,1/2x_height); + enddef; + +def v_e_form = + lft z1=(0,j_height); top z2=(1/5v_e_width,x_height); + z3=(2/5v_e_width,j_height); top z4=(3/5v_e_width,x_height); + rt z5=(v_e_width,1/2x_height); z6=(4/5v_e_width,1/5x_height); + bot z7=(1/2v_e_width,0); z8=(1/5v_e_width,1/4x_height); + z9=(1/2v_e_width,1/2x_height); rt z10=(v_e_width,-1/5des_depth); + path v_e_p; + v_e_p = z1..z2..tension 1.2..z3&z3..tension 1.2..z4..z5..z6..z7..z8..z9..z10; + sketch v_e_p; + enddef; + +def v_u_form = + z1=(v_u_width-1/2w_height,1/2w_height); z2=(v_u_width-u,w_height); + rt z3=(v_u_width,1/6x_height); bot z4=(3/4v_u_width,0); + z5=(1/2v_u_width,w_height); bot z6=(1/3v_u_width,0); + lft z7=(0,1/2x_height); top z8=(1/2v_u_width,x_height); + top z9=(v_u_width-w_height,x_height); +path v_u_p; +v_u_p=z1..z2..z3..z4..tension 1.2..z5&z5..tension 1.2..z6..z7..z8..z9; +sketch v_u_p; + enddef; + +def v_lo_form = + lft z1=(0,j_height); top z2=(v_lo_width/5,x_height); + z3=(2/5v_lo_width,j_height); top z4=(3/5v_lo_width,x_height); + z5=(4/5v_lo_width,j_height); z6=(3/5v_lo_width,w_height); + bot z7=(4/5v_lo_width,0); rt z8=(v_lo_width,1/2x_height); + top z9=(9/10v_lo_width,x_height); + path v_lo_p; +v_lo_p= z1..z2..z3&z3..z4..z5..z6..z7..z8..z9; +sketch v_lo_p; + enddef; + +def v_ea_form = + lit_cir_form; + bot z2=(2/3v_ea_width,0); rt z3=(v_ea_width,1/3x_height); + z4=(2/3v_ea_width,4/5x_height);top z5=(1/3v_ea_width,x_height); +sketch z1..z2..z3..z4..z5; + enddef; + + def vm_a_form (suffix $) = + top lft z$a=(x$-2/5vm_a_width,asc_height1); + top rt z$b=(x$+3/5vm_a_width,asc_height); + z$c = z$; + sketch z$a..tension 6..z$c..tension 16..z$b; + penlabels($a,$b,$c); + enddef; + +def vm_e_form = + lft z1 = (0,x_height+1.2ascunit); + top z2 = (1/2vm_e_width,x_height); + rt z3 = (vm_e_width,x_height+2ascunit); + lft z5 = (0,x_height+3ascunit); + z6 = (1/2vm_e_width,y5); + top z7=(1/2vm_e_width,vm_e_height1+ascunit); + sketch subpath (0.4,1) of z1{down}..{right}z2..z3..z7..z5..z6; + % hook can be attached at z7 +enddef; + +def vm_e_form_a (expr xcoord) = +% used for vowel modifier e for some consonants (eg. khe, che, ne etc) +% 999 was chosen arbitrarily. we needed something not used elsewhere! +% same suffix should be used by vm_ee_form_a. + top z999=(xcoord,vm_e_height1); rt z999i=((lft x999)-1.8u,(y999+y999j)/2); + top z999j=(x999,asc_height1); + path vm_e_pa; + vm_e_pa=z999..z999i..z999j..cycle; h:= (top y999)+pen_width; + penlabels(z999,z999i,z999j); +enddef; + +def vm_ee_form_a (expr xcoord) = +% used for vowel modifier ee for some consonants (eg. khee, chee, nee etc) +% 999 was chosen arbitrarily. we needed something not used elsewhere! +% same suffix should be used by vm_e_form_a. + vm_e_form_a(xcoord); vm_hook_form(999,3); +enddef; + +def vm_u_form (suffix $) = + bot z$a = (x$+vm_u_width/2,0); + rt z$b = (x$+vm_u_width,y$); + z$c = (x$+3/4vm_u_width,3/4x_height); + top z$d = (x$+vm_u_width/2,x_height); +path vm_u_p; + vm_u_p=z$..z$a..z$b..z$c..z$d; + sketch vm_u_p; + penlabels($a,$b,$c,$d); + enddef; + +def vm_ro_form = + z1 = (1/3vm_ro_width,-1/2des_depth); + z2 = (1/2vm_ro_width,-1/2des_depth); + z3 = (1/3vm_ro_width,0); + lft z4 = (0,-1/2des_depth); + bot z5 = (1/2vm_ro_width,-des_depth); + rt z6 = (vm_ro_width,(y5+y7)/2); + top z7 = (1/2vm_ro_width,x_height); +sketch z1..z2..z3..z4..z5..z6..z7; +enddef; + +def vm_ea_form(suffix $) (expr bar_width) = + z$a=(5/7bar_width,y$); + z$b=(x$a,asc_height2); + lft z$c=(0,y$b); + rt z$d=(bar_width,(y$+y$b)/2); +penlabels ($a,$b,$c,$d); + sketch z$c--z$b..z$d..z$a--z$; +enddef; + +def vm_ao_form(suffix $)(expr x_offset) = + z$a = (1/6vm_ao_width+x_offset,x_height); + lft z$b = (0+x_offset,asc_height1); + z$c = (1/6vm_ao_width+x_offset,asc_height2); + z$d = (2/6vm_ao_width+x_offset,asc_height1); + z$e = (3/6vm_ao_width+x_offset,asc_height2); + z$f = (5/6vm_ao_width+x_offset,asc_height2); + rt z$g = (vm_ao_width+x_offset,1/2(asc_height1+asc_height2)); + top z$h = (5/6vm_ao_width+x_offset,asc_height1); + z$i = (4/6vm_ao_width+x_offset,asc_height2); + top z$j = (5/6vm_ao_width+x_offset,asc_height); + top z$k = (vm_aoo_width+x_offset-1.5u,asc_height); + rt z$l = (vm_aoo_width+x_offset,asc_height2); + %rt z$l = (vm_aoo_width+x_offset,1/2(asc_height+asc_height2)); + %rt z$k = (vm_ao_width+x_offset,1/2(asc_height+asc_height2)); + path vm_ao_pa,vm_ao_pb; + vm_ao_pa = z$a..z$b..z$c..tension1.2..z$d; + vm_ao_pb= z$d..tension1.2..z$e..tension 1.8..z$f..z$g..z$h..z$i..z$j..tension 1.8..z$k..z$l; + w:= rt x$g; h:= top y$c; + penlabels ($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l); +enddef; + +% b---------c--------------d +% | |_| +% $------a +def vm_au_form (suffix $)(expr bar_width) = % see the above diagram + numeric na; + top z$e=z$; + z$a = (x$e+2/10(bar_width-u),y$e); + z1000 = (x$-u,asc_height2); + % 1000 was chosen arbitrarily + % we needed some suffix not used by any user of + % this macro + barandhook_form(1000,bar_width,5); + z$d=z1000a; + %next two statements solve for c + x$c = x$a; + z$c = whatever[z1000,z$d]; + na:=x$c+(x1000a-x$c)/3; % used for alligning pa,pha,sha.. + sketch z$e--z$a{right}..{left}z$c; + penlabels($a,$b,$c,$d,$e,1000); +enddef; + +def cb_ka_form = +rt x1=rt x5=cb_ka_width; y1=8/10x_height; y5=1/4x_height; +x2=x4=x6=1/2cb_ka_width; top y2=x_height; y4=1/2x_height; bot y6=0; +lft x3=lft x7=0; y3=3/4x_height; y7=x_height-y1; +path cb_ka_p; +cb_ka_p=z7..z6..z5..z4..z3..z2..z1; +enddef; + +def cb_kha_form = +z1=(4/15cb_kha_width,5/6x_height);z2=(2/15cb_kha_width,y1-uh); +lft z3=(0,y1); top z4=(x6,x_height); +z5=(5/12cb_kha_width,1/8x_height); bot z6=(1/4cb_kha_width,0); +lft z7=(0,1/4x_height); z8=(1/4cb_kha_width,1/3x_height); +bot z9=(3/4cb_kha_width,0); rt z10=(cb_kha_width,1/3x_height); +top z11=(x9,x_height); +path cb_kha_p; +cb_kha_p=z1..z2..z3..z4..z5..z6..z7..z8..z9..z10..z11; +sketch cb_kha_p; +numeric a,b; +(a,b)=(subpath (3,5) of cb_kha_p) intersectiontimes + subpath (6,9) of cb_kha_p; +z15 = point a of (subpath (3,5) of cb_kha_p); wedge(15); +enddef; + +def cb_ga_form = +bot z1=(u,0); x5=cb_ga_width-x1; bot y5=0; +y2=y4=1/3x_height; lft x2=0; rt x4=cb_ga_width; +top z3=(1/2cb_ga_width,x_height); +path cb_ga_p,cv_ge_p; + cb_ga_p=z1..z2..z3..z4..z5; + sketch cb_ga_p; + numeric na,nb,nc,nd; + (na,nb)= cb_ga_p intersectiontimes + ((0,vm_e_height2)--(1/2cb_ga_width,vm_e_height2)); + z30= point na of cb_ga_p; + (nc,nd)= cb_ga_p intersectiontimes + ((1/2cb_ga_width,vm_e_height2)--(cb_ga_width,vm_e_height2)); + z32= point nc of cb_ga_p; + top z31=(1/2cb_ga_width,vm_e_height3); + cv_ge_p=z30..z31..z32; +enddef; + +def cb_cha_form = + lft z1=(0,x_height/2); z2=(cb_cha_width/3,x_height/2); + z3=(cb_cha_width/6,w_height); bot z4=(cb_cha_width/4,0); +z5=(cb_cha_width/2,w_height); bot z6=(3/4cb_cha_width,0); + rt z7=(cb_cha_width,w_height); top z8=(cb_cha_width/2,x_height); + path cb_cha_p; + cb_cha_p=z1--z2..z3..z4..tension1.2..z5&z5..tension1.2..z6..z7..z8; + sketch cb_cha_p; + enddef; + +def cb_ja_form = + lft z1 = (0,j_height); top z2 = (cb_ja_width/4,x_height); + z3 = (cb_ja_width/2,j_height); z4 = (cb_ja_width/4,x_height/2); + lft z5 = (0,w_height); bot z6 = (cb_ja_width/4,0); + z7 = (cb_ja_width/2,w_height); bot z8 = (3/4cb_ja_width,0); + rt z9 = (cb_ja_width,w_height); + %following are useful for defining a bowl at the top + bot lft z3w=top z3; z3x=(x8,y1); rt z3y=(w,5/6x_height); + top z3z=(4/5w,x_height); + path cb_ja_pa,cb_ja_pb; + cb_ja_pa=z1..z2..z3..z4..z5..z6..tension1.2..z7&z7..tension1.2..z8..z9; + cb_ja_pb=z3w..z3x..z3y..z3z; + sketch cb_ja_pa; + penlabels(3w,3x,3y,3z); + enddef; + +def cb_tta_form = + top z1=(1/4cb_tta_width,x_height); + y2=y6=1/2x_height; + lft x2=0; rt x6=cb_tta_width; + x3=x1; x5=cb_tta_width-x3; + bot y3=bot y5=0; + top z4=(1/2cb_tta_width,w_height); + top z7=(cb_tta_width-x1,x_height); + z11=(x1+1.5u,y1-1.45uh); + path cb_tta_p,cb_tta_pa,cb_tta_pb; + cb_tta_pb=z1..z2..z3..tension1.2..z4&z4..tension1.2..z5..z6..z7; + numeric na,nb,nc,nd; + (na,nb)= cb_tta_pb intersectiontimes + ((0,5/6x_height)--(1/2cb_tta_width,5/6x_height)); + z8=point na of cb_tta_pb; + (nc,nd)= cb_tta_pb intersectiontimes + ((0.6cb_tta_width,w_height)--(cb_tta_width,w_height)); + z20=point nc of cb_tta_pb; + z19=rt z20; + cb_tta_pa=bot z8..z11..z1; + cb_tta_p=cb_tta_pa..cb_tta_pb; + bot lft z18= z1;% used for placing a vertical line + enddef; + +def cb_nna_form = +z1a=(1/3cb_nna_width,1/2sc_height); +bot z1=(1/4cb_nna_width,0); lft z2=(0,1/4x_height); +z3=(1/6cb_nna_width,1/2x_height); lft z4=(0,3/4x_height); +top z5=(1/4cb_nna_width,x_height); z6=(1/2cb_nna_width,j_height); +top z7=(5/8cb_nna_width,x_height); rt z8=(cb_nna_width,1/2x_height); +bot z9=(2/3cb_nna_width,0); z10=(x9-1/2sc_height,sc_height); +z11=(x9,3/2sc_height); z12=(x9+1/2sc_height,sc_height); + path cb_nna_p; +cb_nna_p= z1a..z1..z2..z3&z3..z4..z5..z6&z6..z7..z8..z9..z10..z11..z12; +sketch cb_nna_p; + penlabels(1a); +enddef; + +def cb_ta_form = +lft z1=(0,1/2x_height); +z2=(x1+u,y1-uh); z3=(x1+2u,y1); z4=(x2,y1+uh); +bot z5=(1/2cb_ta_width,0); rt z6=(cb_ta_width,1/2x_height); +z7=(x6-u,y6+uh); z8=(x6-2u,y6); z9=(x7,y6-uh); +top z10=(1/2cb_ta_width,x_height); + path cb_ta_p; + cb_ta_p = z1..z2..z3..z4..z1..z5..z6..z7..z8..z9..z6..{left}z10; +enddef; + +def cb_da_form = + top z1=(1/2cb_da_width,x_height); lft z2=(0,w_height); + bot z3=(1/3cb_da_width,0);z4=(1/2cb_da_width,w_height); + bot z5=(2/3cb_da_width,0);rt z6=(cb_da_width,1/2x_height); + path cb_da_p,cv_de_p; + cb_da_p= z4..tension 1.2..z5..z6..z1..z2..z3..tension 1.2..z4; + sketch cb_da_p; + numeric na,nb,nc,nd; + (na,nb)= cb_da_p intersectiontimes + ((0,vm_e_height2)--(1/2cb_da_width,vm_e_height2)); + z30= point na of cb_da_p; + (nc,nd)= cb_da_p intersectiontimes + ((1/2cb_da_width,vm_e_height2)--(cb_da_width,vm_e_height2)); + z32= point nc of cb_da_p; + top z31=(1/2cb_da_width,vm_e_height3); + cv_de_p=z30..z31..z32; + enddef; + +def cb_na_form = + bot lft z1=(0,0); lft z2=(0,1/2w_height); + z3=(1/3cb_na_width,w_height); bot z4=(2/3cb_na_width,0); + rt z5=(cb_na_width,1/3x_height); top z6=(1/2cb_na_width,x_height); + path cb_na_p; + cb_na_p=z1..z2..z3..z4..z5..z6; + enddef; + +def cb_ba_form = + lft z1 = (u/2,j_height); top z2 = (cb_ba_width/5,x_height); + z3 = (cb_ba_width/3,j_height); lft z4 = (0,w_height); + bot z5 = (cb_ba_width/4,0); bot z6 = (cb_ba_width/2,w_height); + bot z7 = (3/4cb_ba_width,0); + rt z8 = (cb_ba_width,w_height); %z8 contact point + top z9 = (2/3cb_ba_width,x_height); % z9 another contact point + path cb_ba_p; + cb_ba_p = z1..z2..z3..z4..z5..tension 1.2..z6&z6..tension 1.2..z7..z8..z9; + sketch cb_ba_p; + enddef; + +def cb_ya_form = + lft z1 = (0,2/5x_height); + top z2 = (3/10cb_ya_width,8/10x_height); + rt z3 = (3/5cb_ya_width,y1); + bot z4 = (x2,0); + bot z5 = (4/5cb_ya_width,0); + rt z6 = (cb_ya_width,w_height); + z7 = ((x5+x6)/2,7.3/10x_height); + top z8 = (9/20cb_ya_width,x_height); +enddef; + +def cb_ra_form = + top z1=(cb_ra_width/2,x_height); + lft z2 = (0,w_height); + bot z3 = (cb_ra_width/2,0); + rt z4 = (cb_ra_width,y2); + path cb_ra_p,cv_re_p; + cb_ra_p = z1..z2..z3..z4..cycle; + sketch cb_ra_p; + numeric na,nb,nc,nd; + (na,nb)= cb_ra_p intersectiontimes + ((0,vm_e_height2)--(1/2cb_ra_width,vm_e_height2)); + z30= point na of cb_ra_p; + (nc,nd)= cb_ra_p intersectiontimes + ((1/2cb_ra_width,vm_e_height2)--(cb_ra_width,vm_e_height2)); + z32= point nc of cb_ra_p; + top z31=(1/2cb_ra_width,vm_e_height3); + cv_re_p=z30..z31..z32; + enddef; + +def cb_rra_form = +cb_tta_form; +z14=(cb_tta_width-1.5x1,x_height-sc_height); +z15=(x7,1/2x_height);z16=(x1,y15); + path cb_rra_p; + cb_rra_p= cb_tta_p..z14..z15--z16; + sketch cb_rra_p; +enddef; + +def cb_la_form = +top z1=(1/4cb_la_width,x_height); +lft z2=(0,x_height/2); bot z3=(1/2cb_la_width,0); +rt z4=(cb_la_width,y2); top z5=(cb_la_width-x1,x_height); +z7=(x1+1.5u,2/3x_height); + path cb_la_pa,cb_la_pb,cb_la_p; + cb_la_pb=z1..z2..z3..z4..z5; +z6=point 0.35 of cb_la_pb; + cb_la_pa= bot rt z6..z7..z1; + cb_la_p=cb_la_pa..cb_la_pb; +% z8 is useful for la+u and la+uu +numeric na,nb; +(na,nb)=cb_la_pb intersectiontimes + ((cb_la_width/2,w_height)..(cb_la_width,w_height)); +z9=point na of cb_la_pb; +z8=rt z9; +enddef; + +def cb_lla_form = +top z1=(cb_lla_width/2,w_height); +bot z2 =(x1,0); +z6=(1/3cb_lla_width,x_height-2uh); z3=(x6+u/2,y6-uh); +z4=(x6,.6x_height); z5=(x6+u/2,y3); lft z7=(0,2/3x_height); +bot z8=top z1; rt z9=(cb_lla_width,y7); top z10=(1/2cb_lla_width,x_height); +path cb_lla_pa,cb_lla_pb; +cb_lla_pa=z3..z4..z5..z6..z7..z8..z9..z10; +cb_lla_pb=z1..z2..cycle; +sketch cb_lla_pa; +sketch cb_lla_pb; +% z12 is useful for lla+u and lla+uu +numeric na,nb; +(na,nb)=cb_lla_pa intersectiontimes + ((cb_lla_width/2,x_height/2)..(cb_lla_width,x_height/2)); +z13=point na of cb_lla_pa; +z12=rt z13; +enddef; + +def cb_va_form = + lit_cir_form; + bot z2 = (3/5cb_va_width,0); rt z3 = (cb_va_width,w_height); + z4 = (7/8cb_va_width,j_height); top lft z5 = (x1,x_height); +path cb_va_p,cv_paa_p; +cb_va_p=z1..z2..z3..z4..z5; +top z20=(cb_va_width/2,h); +cv_paa_p=subpath(0,2) of cb_va_p{up}..z20; +% z22 is useful for alligning au modifier +numeric na,nb; +(na,nb)=cv_paa_p intersectiontimes + ((cb_va_width/2,asc_height2)..(cb_va_width,asc_height2)); +z22=point na of cv_paa_p; + enddef; + +def cb_ca_form = +lft z1=(0,1/2x_height); z2=(1/3cb_ca_width,6/8x_height); +bot z3=(1/3cb_ca_width,0); z4=(3/4cb_ca_width,1/3x_height); +rt z5=(cb_ca_width,2/3x_height); top z6=(1/2cb_ca_width,x_height); +lft z7=(0,1/6x_height); +path cb_ca_p,cb_ca_pa; +cb_ca_p=z1..z2{right}..z4..z3..z7..z4..z5..z6; +sketch cb_ca_p; +% z10 is useful for ca+u and ca+uu +cb_ca_pa=subpath(1,3) of cb_ca_p; +numeric na,nb; +(na,nb)=cb_ca_pa intersectiontimes + ((0,w_height)..(cb_ca_width,w_height)); +z11=point na of cb_ca_pa; +z10=rt z11; +enddef; + +def cb_ksha_form = + cb_ka_form; + top z11 = (1/5cb_ka_width,0); + lft z12 = (0,-1/2cb_ksha_depth); + bot z13 = (x11,-cb_ksha_depth); + z14 = (2/5cb_ka_width,-2/3cb_ksha_depth); + bot z15 = (3/5cb_ka_width,-cb_ksha_depth); + z16 = (4/5cb_ka_width,-1/2cb_ksha_depth); + top z17 = (x15,0); + bot rt z18 = (cb_ka_width,-cb_ksha_depth); + sketch z11..z12..z13..z14; sketch z14..z15..z16..z17; + sketch z16..z18; + enddef; + + +def cc_clear = +%erase all that is drawn so far. + clearit; + lft z99=(0,100); + left_spill := xpart(lft (z99 scaled cc_scale)) - xpart(lft z99); + bot z98=(100,0); + bot_spill := ypart(bot (z98 scaled cc_scale)) - ypart(bot z98); + top((z97 scaled cc_scale) + shifted (0,-bot_accent-(x_height*cc_scale)) + shifted (-left_spill,-bot_spill))= + (w*cc_scale/2,x_height); +enddef; + +def cc_transform(text t) = +% used to obtain consonant conjuncts for some consonants and vowels lo&loo +path cc_transformed_path; +cc_transformed_path = t scaled cc_scale + shifted (0,-bot_accent-(x_height*cc_scale)); +sketch cc_transformed_path; +enddef; + +def cc_f_transform(text t) = +% used to obtain consonant conjuncts for some consonants and vowels lo&loo +fill t scaled cc_scale + shifted (0,-bot_accent-(x_height*cc_scale)); +enddef; + +def cc_whd (expr hh,dd) = +%this macro sets w, h and d for accents that appear below baseline. +% for some consonant conjuncts that result from transforming +% consonant bases the height is not zero (eg. cha, ba ,pa etc) +% for such symbols hh should be 1 and for others hh should be 0. +% Some consonant bases have wedges that hang below base line (eg. bha, pha +% ddha etc. ). For these dd should be 1 and for others dd should be 0. +% +%When a picture is scaled, what really happens is the componant paths +% are scaled and the picture is redrawn. Hence we need to adjust w,h and d. +% Still consonant conjunct for nya needs special care( for d). +w:=w*cc_scale-pen_width*cc_scale+pen_width;; +h:=hh*x_height; +d:=bot_accent+((x_height+(dd*wedge_depth))*cc_scale)+dd*bot_spill; +% (x,y) slanted s shifted (a,b) is (x+sy+a,y+b) whereas +% (x,y) shifted (a,b) slanted s is (x+sy+a+ bs,y+b). Hence we +% need to add the correction 'bs'. 'bs' is -bot_spill*slant +currentpicture:=currentpicture shifted + (-left_spill+((-bot_spill)*slant),-bot_spill); +enddef; + +def cv_ngu_form = + z1=(0,j_height); z2=(cb_ja_width/4,j_height-uh#); + rt z3=(cb_ja_width/2,5/6x_height); top z4=(4/10cb_ja_width,x_height); + sketch z1..z2..z3..z4; +enddef; + +def cv_ju_form = + z1=(0,5/6x_height); z2=(cb_ja_width/4,j_height); + rt z3=(cb_ja_width/2,y1); top z4=(4/10cb_ja_width,x_height); + sketch z1..z2..z3..z4; +enddef; + +def cv_pu_form = + top lft z1=(0,c_height/2); bot z2=(cv_pu_width/2,-cv_pu_depth); + rt z3=(cv_pu_width,h/2); top z4=(cv_pu_width-2u,x_height); + sketch z1..z2..z3..z4; +enddef; + +def dr_sixnine_form = + path dr_sixnine_p; + top rt z1 = (w,fig_height); + z2 = (w/2+u,y1-uh); + bot z4 = (w/2,0); + rt z5 = (w,x4); + z6 = (x4,x5-x7); + lft z7 = (0,y5); + dr_sixnine_p = z1..z2..z7..z4..z5..z6..z7; +enddef; + +def dt_six_form= +path dt_six_pa,dt_six_pb; + top z1=(w/5,h); lft z2=(0,3h/4); z3=(x1,h/2); + z4=(w/3,h/2); lft z5=(0,h/4); bot z6=(x1,0); + bot rt z7=(w,0); +dt_six_pa= flex(z1,z2,z3)& z3--z4; +dt_six_pb=flex(z3,z5,z6)& z6--z7; +enddef; + + +def p_comma_form = +path p_comma_p; + z1 = (dot_radius,dot_radius); + rt z2 = (p_comma_width,0); + bot lft z3 = (x1-1/2dot_radius,-des_depth); +fill_dot(1); p_comma_p= flex(z1,z2,z3); +sketch p_comma_p; +enddef; + +def p_bar_form = +path p_bar_p; + bot lft z1 = (0,0); + top lft z2 = (0,x_height); +p_bar_p= z1--z2; +enddef; + +def p_slash_form = +path p_slash_p; + bot lft z1 = (0,-des_depth); + top rt z2 = (6u,asc_height); +p_slash_p= z1--z2; +enddef; + +def p_lbracket_form = % square bracket +path p_lbracket_p; + top lft z1 = (0,top_height); + bot lft z2 = (0,-bot_depth); + rt z3 = (w,y1); + rt z4 = (w,y2); +p_lbracket_p=z3--z1--z2--z4; +enddef; + + +def p_rparen_form = +path p_rparen_p; + top lft z1 = (0,top_height); bot lft z2 = (0,-bot_depth); + rt z3 = (w,(-d+h)/2); +p_rparen_p= flex(z1,z3,z2); +enddef; + + +def p_lbrace_form = +path p_lbrace_p; + top rt z1 = (w,h); lft z4 = (0,(h-d)/2); + z2 = (w/2,-d+7/8(h+d)); + z3 = (x2,-d+5/8(h+d)); +p_lbrace_p= z1..z2..z3..z4; +p_lbrace_p:=(p_lbrace_p reflectedabout (z4,z4+(w,0)) )..reverse(p_lbrace_p); +enddef; + + diff --git a/Master/texmf-dist/fonts/source/public/itrans/telchrs1.mf b/Master/texmf-dist/fonts/source/public/itrans/telchrs1.mf new file mode 100644 index 00000000000..b811a075515 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/telchrs1.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; + diff --git a/Master/texmf-dist/fonts/source/public/itrans/telchrs2.mf b/Master/texmf-dist/fonts/source/public/itrans/telchrs2.mf new file mode 100644 index 00000000000..595ad923c86 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/telchrs2.mf @@ -0,0 +1,506 @@ +% 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 +% symbols for Consonant + Vowel's that need special handling + +stest(cvku); telchar "consonant+vowel ka+u"; +begintchar(cv_ku_code,cb_ka_width#,asc_height#,0,0,0,0); +cb_ka_form; +vm_a_form(2); +z20=(cb_ka_width+u,w_height); +vm_u_form(20); erase sketch vm_u_p; +sketch cb_ka_p..vm_u_p;w:=rt x20b; +pivot_message(x20d); +endtchar; etest; + +stest(cvkhe); telchar "consonant+vowel kha+e"; +begintchar(cv_khe_code,cb_kha_width#,vm_e_height1#,wedge_depth#,0,0,0); +cb_kha_form;erase sketch cb_kha_p; +vm_e_form_a(cb_kha_width/2); sketch (subpath (0,9) of cb_kha_p)..vm_e_pa; +pivot_message(x999); +endtchar; etest; + +stest(cvkhao); telchar "consonant+vowel kha+ao"; +begintchar(cv_khao_code,cb_kha_width#,vm_e_height1#,wedge_depth#,0,0,0); +cb_kha_form;erase sketch cb_kha_p; +vm_ao_form(17,cb_kha_width/2); +sketch (subpath (0,9) of cb_kha_p)..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +pivot_message(x17i); +endtchar; etest; + +stest(cvge); telchar "consonant+vowel ga+e"; +begintchar(cv_ge_code,cb_ga_width#,vm_e_height3#,0,0,0,0); +cb_ga_form; +sketch cv_ge_p; +pivot_message(x31); +endtchar; etest; + +stest(cvngu); telchar "consonant+vowel nga+u"; +begintchar(cv_ngu_code,cb_ja_width#/2,x_height#,0,0,0,0); +cv_ngu_form; +endtchar; etest; + +stest(cvnguu); telchar "consonant+vowel nga+uu"; +begintchar(cv_nguu_code,cb_ja_width#/2,x_height#,0,0,0,0); +cv_ngu_form; +barandhook_forma(4,3/4vmwidth,5); +w:=rt x4b; +endtchar; etest; + +stest(cvche); telchar "consonant+vowel cha+e"; +begintchar(cv_che_code,cb_cha_width#,vm_e_height1#,0,0,0,0); +cb_cha_form; erase sketch cb_cha_p; +vm_e_form_a(cb_cha_width/2); +sketch (subpath(0,6) of cb_cha_p)..vm_e_pa; +pivot_message(x999); +endtchar; etest; + +stest(cvchao); telchar "consonant+vowel cha+ao"; +begintchar(cv_chao_code,cb_cha_width#,vm_e_height1#,0,0,0,0); +cb_cha_form; erase sketch cb_cha_p; +vm_ao_form(11,cb_cha_width/2); +sketch (subpath (0,6) of cb_cha_p)..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +pivot_message(x11i); +endtchar; etest; + +stest(cvcche); telchar "consonant+vowel ccha+e"; +begintchar(cv_cche_code,cb_cha_width#,vm_e_height1#,wedge_depth#,0,0,0); +cb_cha_form; erase sketch cb_cha_p; +vm_e_form_a(cb_cha_width/2); +sketch (subpath(0,6) of cb_cha_p)..vm_e_pa; +z10 = 1/2[rt z5,z5]; +wedge(10); +pivot_message(x999); +endtchar; etest; + +stest(cvcchao); telchar "consonant+vowel ccha+ao"; +begintchar(cv_cchao_code,cb_cha_width#,vm_e_height1#,wedge_depth#,0,0,0); +cb_cha_form; erase sketch cb_cha_p; +vm_ao_form(11,cb_cha_width/2); +sketch (subpath (0,6) of cb_cha_p)..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +z10 = 1/2[rt z5,z5]; +wedge(10); +pivot_message(x11i); +endtchar; etest; + +stest(cvje); telchar "consonant+vowel ja+e"; +begintchar(cv_je_code,cb_ja_width#,vm_e_height1#,0,0,0,0); +cb_ja_form;vm_e_form_a(0.8cb_ja_width); +sketch (subpath (0,1) of cb_ja_pb)..vm_e_pa; +pivot_message(x999); +endtchar; etest; + +stest(cvju); telchar "consonant+vowel ja+u"; +begintchar(cv_ju_code,cb_ja_width#/2,x_height#,0,0,0,0); +cv_ju_form; +endtchar; etest; + +stest(cvjuu); telchar "consonant+vowel ja+uu"; +begintchar(cv_juu_code,cb_ja_width#/2,x_height#,0,0,0,0); +cv_ju_form; +barandhook_forma(4,3/4vmwidth,5); +w:=rt x4b; +endtchar; etest; + +stest(cvjao); telchar "consonant+vowel ja+ao"; +begintchar(cv_jao_code,cb_ja_width#,vm_e_height1#,0,0,0,0); +cb_ja_form; +vm_ao_form(11,0.65cb_ja_width); +sketch (subpath (0,2) of cb_ja_pb)..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +pivot_message(x11i); +endtchar; etest; + +stest(cvttao); telchar "consonant+vowel tta+ao"; +begintchar(cv_ttao_code,cb_tta_width#,x_height#,0,0,0,0); +cb_tta_form; +vwedge(18); +vm_ao_form(16,cb_tta_width/2); +sketch cb_tta_p..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +h:=max(top y18a,h); +pivot_message(x16i); +endtchar; etest; + +stest(cvtthe); telchar "consonant+vowel ttha+e"; +begintchar(cv_tthe_code,cb_ra_width#,vm_e_height3#,0,0,0,0); +cb_ra_form; +sketch cv_re_p; +z10 = (x1,1/2x_height); +fill_dot(10); +pivot_message(x31); +endtchar; etest; + +stest(cvddu); telchar "consonant+vowel dda+u"; +begintchar(cv_ddu_code,v_u_width#,asc_height#,0,0,0,0); +v_u_form;z14=((x8+x9)/2,y8);vm_a_form(14); +vm_u_form(3); w:=rt x3b+4u/10; +pivot_message(x3d); +endtchar; etest; + +stest(cvddhu); telchar "consonant+vowel ddha+u"; +begintchar(cv_ddhu_code,v_u_width#,asc_height#,wedge_depth#,0,0,0); +v_u_form;z14=((x8+x9)/2,y8);vm_a_form(14); +z12=3/4[rt z5,z5]; +wedge(12); +vm_u_form(3); w:=rt x3b; +pivot_message(x3d); +endtchar; etest; + +stest(cvte); telchar "consonant+vowel ta+e"; +begintchar(cv_te_code,cb_ta_width#,vm_e_height1#,0,0,0,0); +cb_ta_form; +vm_e_form_a(3/5cb_ta_width); + sketch (subpath (0,10) of cb_ta_p)..vm_e_pa; +pivot_message(x999); +endtchar; etest; + +stest(cvtao); telchar "consonant+vowel ta+ao"; +begintchar(cv_tao_code,cb_ta_width#,vm_e_height1#,0,0,0,0); +cb_ta_form; +vm_ao_form(11,2.2/5cb_ta_width); +sketch (subpath (0,10) of cb_ta_p)..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +pivot_message(x11i); +endtchar; etest; + +stest(cvthe); telchar "consonant+vowel tha+e"; +begintchar(cv_the_code,cb_da_width#,vm_e_height3#,wedge_depth#,0,0,0); +cb_da_form; +sketch cv_de_p; +wedge(4); +z10 = (x1,2/3x_height-uh); +fill_dot(10); +pivot_message(x31); +endtchar; etest; + +stest(cvde); telchar "consonant+vowel da+e"; +begintchar(cv_de_code,cb_da_width#,vm_e_height3#,0,0,0,0); +cb_da_form; +sketch cv_de_p; +pivot_message(x31); +endtchar; etest; + +stest(cvdhe); telchar "consonant+vowel dha+e"; +begintchar(cv_dhe_code,cb_da_width#,vm_e_height3#,wedge_depth#,0,0,0); +cb_da_form; +sketch cv_de_p; +wedge(4); +pivot_message(x31); +endtchar; etest; + +stest(cvne);telchar "consonant+vowel na+e"; +begintchar(cv_ne_code,cb_na_width#,vm_e_height1#,0,0,0,0); +cb_na_form; +vm_e_form_a(cb_na_width/2); +sketch (subpath (0,4) of cb_na_p)..vm_e_pa; +pivot_message(x999); +endtchar; etest; + +stest(cvnao);telchar "consonant+vowel na+ao"; +begintchar(cv_nao_code,cb_na_width#,vm_e_height1#,0,0,0,0); +cb_na_form; +vm_ao_form(11,0.4cb_na_width); +sketch (subpath (0,4) of cb_na_p)..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +pivot_message(x11i); +endtchar; etest; + +stest(cvpaa); telchar "consonant+vowel pa+aa"; +begintchar(cv_paa_code,cb_va_width#,asc_height#,0,0,0,0); +cb_va_form; +sketch cv_paa_p; +pivot_message(x2,x22);% x22 is used for alligning au modifier +endtchar; etest; + +stest(cvpu); telchar "consonant+vowel pa+u"; +begintchar(cv_pu_code,cv_pu_width#,x_height#,cv_pu_depth#,0,0,0); +cv_pu_form; +pivot_message(x1); +endtchar; etest; + +stest(ccvpu); telchar "consonant conjunct of pa + vowel u"; +begintchar(ccv_pu_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)); +numeric na,nb; +(na,nb)=cc_transformed_path intersectiontimes + ((0,w_height)..(cb_va_width,w_height)); +z10=point na of cc_transformed_path; +vm_u_form(10); +cc_transform(lit_cir_p); +cc_whd(1,0); +w:=rt x10b; +endtchar; etest; + +stest(cvpuu); telchar "consonant+vowel pa+uu"; +begintchar(cv_puu_code,cv_pu_width#,x_height#,cv_pu_depth#,0,0,0); +cv_pu_form;barandhook_forma(4,3/4vmwidth,5); +w:=rt x4b; +pivot_message(x1); +endtchar; etest; + +stest(ccvpuu); telchar "consonant conjunct of pa + vowel uu"; +begintchar(ccv_puu_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)); +numeric na,nb; +(na,nb)=cc_transformed_path intersectiontimes + ((0,w_height)..(cb_va_width,w_height)); +z10=point na of cc_transformed_path; +vm_u_form(10);barandhook_forma(10d,vmwidth,5); +cc_transform(lit_cir_p); +cc_whd(1,0); +w:= rt x10d.b; +endtchar; etest; + +stest(cvphaa); telchar "consonant+vowel pha+aa"; +begintchar(cv_phaa_code,cb_va_width#,asc_height#,wedge_depth#,0,0,0); +cb_va_form; +sketch cv_paa_p; +top z13 = 1/2[rt z1,z1]; +wedge(13); +pivot_message(x2,x22); %x22 is used for alligning au modifier +endtchar; etest; + +stest(ccvphu); telchar "consonant conjunct of pha + vowel u"; +begintchar(ccv_phu_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)); +numeric na,nb; +(na,nb)=cc_transformed_path intersectiontimes + ((0,w_height)..(cb_va_width,w_height)); +z11=point na of cc_transformed_path; +vm_u_form(11); +cc_transform(lit_cir_p);cc_transform(wedge_p); cc_whd(1,1); +w:=rt x11b; +endtchar; etest; + +stest(ccvphuu); telchar "consonant conjunct of pha + vowel uu"; +begintchar(ccv_phuu_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)); +numeric na,nb; +(na,nb)=cc_transformed_path intersectiontimes + ((0,w_height)..(cb_va_width,w_height)); +z11=point na of cc_transformed_path; +vm_u_form(11);barandhook_forma(11d,vmwidth,5); +cc_transform(lit_cir_p);cc_transform(wedge_p); cc_whd(1,1); +w:=rt x11d.b; +endtchar; etest; + +stest(cvbe); telchar "consonant+vowel ba+e"; +begintchar(cv_be_code,cb_ba_width#,vm_e_height1#,0,0,0,0); +cb_ba_form;erase sketch cb_ba_p; +vm_e_form_a(cb_ba_width/2); +sketch (subpath(0,7) of cb_ba_p)..vm_e_pa; +pivot_message(x999); +endtchar; etest; + +stest(cvbao); telchar "consonant+vowel ba+ao"; +begintchar(cv_bao_code,cb_ba_width#,vm_e_height1#,0,0,0,0); +cb_ba_form;erase sketch cb_ba_p; +vm_ao_form(11,cb_ba_width/2); +sketch (subpath (0,7) of cb_ba_p)..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +pivot_message(x11i); +endtchar; etest; + +stest(cvbhe); telchar "consonant+vowel bha+e"; +begintchar(cv_bhe_code,cb_ba_width#,vm_e_height1#,wedge_depth#,0,0,0); +cb_ba_form;erase sketch cb_ba_p; +vm_e_form_a(cb_ba_width/2); +sketch (subpath(0,7) of cb_ba_p)..vm_e_pa; +wedge(6); +pivot_message(x999); +endtchar; etest; + +stest(cvbhao); telchar "consonant+vowel bha+ao"; +begintchar(cv_bhao_code,cb_ba_width#,vm_e_height1#,wedge_depth#,0,0,0); +cb_ba_form;erase sketch cb_ba_p; +vm_ao_form(11,cb_ba_width/2); +sketch (subpath (0,7) of cb_ba_p)..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +wedge(6); +pivot_message(x11i); +endtchar; etest; + +stest(cvre); telchar "consonant+vowel ra+e"; +begintchar(cv_re_code,cb_ra_width#,vm_e_height3#,0,0,0,0); +cb_ra_form; +sketch cv_re_p; +pivot_message(x31); +endtchar; etest; + +stest(cvle); telchar "consonant+vowel la+e"; +begintchar(cv_le_code,cb_la_width#,vm_e_height1#,0,0,0,0); +cb_la_form; +vm_e_form_a(0.6cb_la_width); +sketch (subpath(0,6) of cb_la_p)..vm_e_pa; +pivot_message(x999); +endtchar; etest; + +stest(cvlao); telchar "consonant+vowel la+ao"; +begintchar(cv_lao_code,cb_la_width#,vm_e_height1#,0,0,0,0); +cb_la_form; +vm_ao_form(11,0.6cb_la_width); +sketch (subpath (0,6) of cb_la_p)..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +pivot_message(x11i); +endtchar; etest; + +stest(cvlle); telchar "consonant+vowel lla+e"; +begintchar(cv_lle_code,cb_lla_width#,vm_e_height1#,0,0,0,0); + cb_lla_form; erase sketch cb_lla_pa; +vm_e_form_a(cb_lla_width/2); +sketch (subpath(0,6) of cb_lla_pa)..vm_e_pa; +pivot_message(x999); +endtchar; etest; + +stest(cvllu); telchar "consonant+vowel lla+u"; +begintchar(cv_llu_code,cb_lla_width#,asc_height#,0,0,0,0); + cb_lla_form;vm_a_form(10); +vm_u_form(12); w:=rt x12b; +pivot_message(lft x12d); +endtchar; etest; + +stest(cvllao); telchar "consonant+vowel lla+ao"; +begintchar(cv_llao_code,cb_lla_width#,vm_e_height1#,0,0,0,0); + cb_lla_form; erase sketch cb_lla_pa; +vm_ao_form(11,cb_lla_width/2); +sketch (subpath (0,6) of cb_lla_pa)..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +pivot_message(x11i); +endtchar; etest; + +stest(cvve); telchar "consonant+vowel va+e"; +begintchar(cv_ve_code,cb_va_width#,vm_e_height1#,0,0,0,0); +cb_va_form; +vm_e_form_a(cb_va_width/2); +sketch (subpath(0,2) of cb_va_p)..vm_e_pa; +pivot_message(x999); +endtchar; etest; + +stest(cvvao); telchar "consonant+vowel va+ao"; +begintchar(cv_vao_code,cb_va_width#,vm_e_height1#,0,0,0,0); +cb_va_form; +vm_ao_form(11,0.4cb_va_width); +sketch (subpath (0,2) of cb_va_p)..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +pivot_message(x11i); +endtchar; etest; + +stest(cvce); telchar "consonant+vowel ca+e"; +begintchar(cv_ce_code,cb_ca_width#,vm_e_height1#,0,0,0,0); + cb_ca_form; erase sketch cb_ca_p; +vm_e_form_a(cb_ca_width/3); +sketch (subpath(0,6) of cb_ca_p){up}..vm_e_pa; +pivot_message(x999); +endtchar; etest; + +stest(cvcao); telchar "consonant+vowel ca+ao"; +begintchar(cv_cao_code,cb_ca_width#,vm_e_height1#,0,0,0,0); + cb_ca_form; erase sketch cb_ca_p; +vm_ao_form(11,cb_ca_width/3); +sketch (subpath (0,6) of cb_ca_p){up}..subpath (1,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +pivot_message(x11i); +endtchar; etest; + +stest(cvshaa); telchar "consonant+vowel sha+aa"; +begintchar(cv_shaa_code,cb_sha_width#,asc_height#,wedge_depth#,0,0,0); +cb_va_form; +sketch cv_paa_p; +bot rt z25 = (cb_sha_width,-d); +sketch bot z3{down}..{right}z25; +pivot_message(x2,x22); %x22 used for alligning au modifier +endtchar; etest; + +stest(cvshu); telchar "consonant+vowel sha+u"; +begintchar(cv_shu_code,cb_va_width#,asc_height#,1.25wedge_depth#,0,0,0); +cb_va_form; +sketch subpath(0,3.4) of cb_va_p; +top z30=(x1,x_height);vm_a_form(30); +bot rt z25 = (cb_sha_width,-d); +sketch bot z3{down}..{right}z25; + vm_u_form(3);w:=rt x3b; +pivot_message(lft x3d); +endtchar; etest; + +stest(cvsaa); telchar "consonant+vowel sa+aa"; +begintchar(cv_saa_code,cb_na_width#,asc_height#,0,0,0,0); +cb_na_form;top z20=(w/2,h); +path cv_saa_p; +cv_saa_p=subpath (0,4) of cb_na_p..z20; +sketch cv_saa_p; +numeric aa; aa= (x3+x4)/2; +numeric na,nb; +(na,nb)=cv_saa_p intersectiontimes + ((0,asc_height2)..(cb_na_width,asc_height2)); +z21=point na of cv_saa_p; +pivot_message(aa,x21); %x21 is used for alligning au modifier +endtchar; etest; + +stest(cvhaa); telchar "consonant+vowel ha+aa"; +begintchar(cv_haa_code,cb_va_width#+vmwidth#,asc_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); +vm_a_form(5);vm_hook_form(11e,3); +w:=max(rt x11e.c,rt x11b); +endtchar; etest; + +stest(cvhao); telchar "consonant+vowel ha+ao"; +begintchar(cv_hao_code,cb_va_width#+vmwidth#,asc_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,4); +numeric oldh; +vm_a_form(5);erase sketch barandhook_p;oldh:=h; +vm_ao_form(12,0.63w); sketch barandhook_p..subpath (2,3) of vm_ao_pa; +sketch subpath (0,5) of vm_ao_pb; +h:=max(h,oldh); +pivot_message(x12i); +endtchar; etest; + +stest(cvkshu); telchar "consonant+vowel ksha+u"; +begintchar(cv_kshu_code,cb_ka_width#,asc_height#,cb_ksha_depth#,0,0,0); +cb_ksha_form; +vm_a_form(2); +z20=(cb_ka_width+u,w_height); +vm_u_form(20); erase sketch vm_u_p; +sketch cb_ka_p..vm_u_p; w := rt x20b; +pivot_message(x20d); +endtchar; etest; + diff --git a/Master/texmf-dist/fonts/source/public/itrans/telchrs3.mf b/Master/texmf-dist/fonts/source/public/itrans/telchrs3.mf new file mode 100644 index 00000000000..9cff20d6994 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/telchrs3.mf @@ -0,0 +1,502 @@ +% 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 roman digits, +% telugu digits and punctuation symbols +% --------- start of roman digits ------------ +stest(drzero); telchar "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; + +stest(drone); telchar "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; + +stest(drtwo); telchar "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; + +stest(drthree); telchar "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; + +stest(drfour); telchar "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; + +stest(drfive); telchar "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; + +stest(drsix); telchar "Roman digit six"; +begintchar(dr_six_code,6u#,fig_height#,0,0,0,ur#); +dr_sixnine_form; +sketch dr_sixnine_p; +endtchar; etest; + +stest(drseven); telchar "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; + +stest(dreight); telchar "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; + +stest(drnine); telchar "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; + +%---------------------end of roman digits------------------------ + +% ------------- start of telugu digits ------------ + +stest(dtzero); telchar "telugu digit zero"; +begintchar(dt_zero_code,tfig_width#,tfig_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; + +stest(dtone); telchar "telugu digit one"; +begintchar(dt_one_code,tfig_width#+u#,tfig_height#,0,0,0,ur#); +bot z1=(w/5,0); lft z2=(0,h/2); top z3=(w/2,h); +rt z4=(w,h/2); bot z5=(w-(w/5),0); +sketch z1..z2..z3..z4..z5; +endtchar; etest; + +stest(dttwo); telchar "telugu digit two"; +begintchar(dt_two_code,tfig_width#,tfig_height#,0,0,0,ur#); +z1=(3w/5,5h/6); z2=(x1,4h/6); z3=(w/2,y1); +top z4=(x1,h); z5=((x8+x1)/2,y3); bot z6=(x1,0); +bot lft z7=(0,0);rt z8=(w,h/2); +sketch z1..z2..z3..z4..z8..{(-1,0)}z6--z7; +endtchar; etest; + + +stest(dtthree); telchar "telugu digit three"; +begintchar(dt_three_code,tfig_width#-2u#,tfig_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; +endtchar; etest; + +stest(dtfour); telchar "telugu digit four"; +begintchar(dt_four_code,tfig_width#-u#,tfig_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; +endtchar; etest; + +stest(dtfive); telchar "telugu digit five"; +begintchar(dt_five_code,tfig_width#+u#,tfig_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; +endtchar; etest; + +stest(dtsix); telchar "telugu digit six"; +begintchar(dt_six_code,tfig_width#,tfig_height#,0,0,0,ur#); +dt_six_form; +sketch dt_six_pa; sketch dt_six_pb; +endtchar; etest; + +stest(dtseven); telchar "telugu digit seven"; +begintchar(dt_seven_code,tfig_width#-2u#,tfig_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,180); +endfor; +sketch z1..z2..z3..z4..z8..z7..z6; +endtchar; etest; + + +stest(dteight); telchar "telugu digit eight"; +begintchar(dt_eight_code,tfig_width#+u#,tfig_height#,0,0,0,ur#); +z2=(1.5u,w/2); lft z7=(0,(y2+y3)/2); +bot z3=(w/4,0); z4=z2+(3(x3-x2),0); +top z5=(x3,h); top rt z6=(w,h); +sketch z2..z7..z3..z4..z5 & z5--z6; +endtchar; etest; + +stest(dtnine); telchar "telugu digit nine"; +begintchar(dt_nine_code,tfig_width#,tfig_height#,0,0,0,ur#); +dt_six_form; +sketch dt_six_pa reflectedabout((0,0),(w,0)) shifted (0,h); +sketch dt_six_pb reflectedabout((0,0),(w,0)) shifted (0,h); +endtchar; etest; + +% end of telugu digits + +% --------- start of punctuation ---------- + +stest(pperiod); telchar "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; + +stest(pcomma); telchar "punctuation comma"; +begintchar(p_comma_code, p_comma_width#,2*dot_radius#,des_depth#,0,0,ur#); +p_comma_form; +endtchar; etest; + +stest(pequal); telchar "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; + +stest(pbar); telchar "punctuation vertical bar"; +begintchar(p_bar_code,u#,x_height#,0,0,0,ur#); +p_bar_form; +sketch p_bar_p; +endtchar; etest; + +stest(pdbar); telchar "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; + +stest(pcolon); telchar "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; + +stest(pscolon); telchar "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; + +stest(pcquote); telchar "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; + +stest(pcquotes); telchar "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; + +stest(poquote); telchar "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; + +stest(poquotes); telchar "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; + +stest(pdquotes);telchar "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; + +%stest(pdquotes);telchar "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; + +stest(pslash); telchar "punctuation virgule (slash)"; +begintchar(p_slash_code,6u#,asc_height#,des_depth#,0,0,ur#); +p_slash_form; +sketch p_slash_p; +endtchar; etest; + +stest(phash); telchar "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; + +%stest(pexcla); telchar "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; + +stest(pexcla); telchar "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; + +stest(pasterisk); telchar "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; + +stest(pplus); telchar "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; + + +stest(plbracket); telchar "punctuation left bracket"; +begintchar(p_lbracket_code,3u#,top_height#,bot_depth#,0,0,ur#); +p_lbracket_form; +sketch p_lbracket_p; +endtchar; etest; + +stest(prbracket); telchar "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; + +stest(plparen); telchar "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; + +stest(prparen); telchar "punctuation right parenthesis"; +begintchar(p_rparen_code,3u#,top_height#,bot_depth#,0,0,ur#); +p_rparen_form; +sketch p_rparen_p; +endtchar; etest; + +stest(plbrace); telchar "punctuation left brace"; +begintchar(p_lbrace_code,4u#,top_height#,bot_depth#,0,0,ur#); +p_lbrace_form; +sketch p_lbrace_p; +endtchar; etest; + +stest(prbrace); telchar "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; + +stest(ppercent); telchar "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; + +stest(pbslash); telchar "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; + +stest(plbar); telchar "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; + +stest(phyphen); telchar "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; + +stest(plhyphen); telchar "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; + +stest(pvlhyphen); telchar "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; + +stest(pubar); telchar "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; + +stest(pquestion); telchar "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; + +stest(pdollar); telchar "punctuation dollar sign"; +begintchar(p_dollar_code,cb_ka_width#,x_height#+1.5uh#,1.5uh#,0,0,ur#); +cb_ka_form; +sketch z1..z2..z3..z4..z5..z6..z7; +top z11 = (w/2,h); bot z12 = (w/2,-d); +sketch z11--z12; +endtchar; etest; + +stest(pgreater); telchar "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; + +stest(pless); telchar "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; + +stest(pat); telchar "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; + +stest(ptilde); telchar "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; + +stest(phat); telchar "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; + +stest(pampersand); telchar "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; + +% ---------------- end of punctuation ------------ diff --git a/Master/texmf-dist/fonts/source/public/itrans/telcodes.mf b/Master/texmf-dist/fonts/source/public/itrans/telcodes.mf new file mode 100644 index 00000000000..98f94481881 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/telcodes.mf @@ -0,0 +1,282 @@ +% 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 codes to determine where various symbols +% are placed in the font. The symbols that are also part of ASCII +% character set are placed at the same location as in ASCII code. +% Any revision of this file MUST maintain this assignment. +% All telugu digits are given contiguous codes in the order +% 0,1,2,3,4,5,6,7,8,9. Any revision of this file MUST maintain +% this property. +% +% vowels +v_a_code := oct"027"; +v_aa_code := v_a_code +1; +v_e_code := v_aa_code +1; +v_ee_code := v_e_code +1; +v_u_code := v_ee_code +1; +v_uu_code := v_u_code +1; +v_ro_code := v_uu_code +1; +v_roo_code := v_ro_code +1; +v_lo_code := v_roo_code +1; +v_loo_code := v_lo_code +1; +v_ea_code := oct"101"; +v_eae_code := v_ea_code +1; +v_i_code := v_eae_code +1; +v_ao_code := v_i_code +1; +v_aoo_code := v_ao_code +1; +v_au_code := v_aoo_code +1; + +% vowel modifiers +vm_a_code := oct"200"; +vm_aa_code := vm_a_code +1; +vm_aaa_code := vm_aa_code +1; +vm_e_code := vm_aaa_code +1; +vm_ee_code := vm_e_code +1; +vm_eea_code := vm_ee_code +1; +vm_eeb_code := vm_eea_code +1; +vm_u_code := vm_eeb_code +1; +vm_uu_code := vm_u_code +1; +vm_ro_code := vm_uu_code +1; +vm_roo_code := vm_ro_code +1; +vm_lo_code := vm_roo_code +1; +vm_loo_code := vm_lo_code +1; +vm_ea_code := vm_loo_code +1; +vm_eae_code := vm_ea_code +1; +vm_i1_code := vm_ea_code; +vm_i2_code := vm_eae_code +1; +vm_ao_code := vm_i2_code +1; +vm_aoo_code := vm_ao_code +1; +vm_aoo_code_a := vm_aoo_code +1; +vm_au_code := vm_aoo_code_a+1; +vm_p_code := vm_au_code +1; + +% Consonant bases +cb_ka_code := v_au_code +1; +cb_kha_code := cb_ka_code +1; +cb_ga_code := cb_kha_code +1; +cb_gha_code := cb_ga_code +1; +cb_nga_code := cb_gha_code +1; +cb_cha_code := cb_nga_code +1; +cb_ccha_code := cb_cha_code +1; +cb_ja_code := cb_ccha_code +1; +cb_jha_code := cb_ja_code +1; +cb_nya_code := cb_jha_code +1; +cb_tta_code := cb_nya_code +1; +cb_ttha_code := cb_tta_code +1; +cb_dda_code := cb_ttha_code +1; +cb_ddha_code := cb_dda_code +1; +cb_nna_code := cb_ddha_code +1; +cb_ta_code := cb_nna_code +1; +cb_tha_code := cb_ta_code +1; +cb_da_code := cb_tha_code +1; +cb_dha_code := cb_da_code +1; +cb_na_code := cb_dha_code +1; +cb_pa_code := oct"141"; +cb_pha_code := cb_pa_code +1; +cb_ba_code := cb_pha_code +1; +cb_bha_code := cb_ba_code +1; +cb_ma_code := cb_bha_code +1; +cb_ya_code := cb_ma_code +1; +cb_ra_code := cb_ya_code +1; +cb_rra_code := cb_ra_code +1; +cb_la_code := cb_rra_code +1; +cb_lla_code := cb_la_code +1; +cb_va_code := cb_lla_code +1; +cb_ca_code := cb_va_code +1; +cb_sha_code := cb_ca_code +1; +cb_sa_code := cb_sha_code +1; +cb_ha_code := cb_sa_code +1; +cb_ksha_code := cb_ha_code +1; +cb_dt_code := cb_ksha_code +1; +cb_np_code := cb_dt_code +1; +cb_vg_code := cb_np_code +1; +cb_bb_code := cb_vg_code +1; % boxes(bb,bo,be)(used for demonstrating +% vowel modifiers, cons. conjuncts) +cb_bo_code := cb_bb_code +1; +cb_be_code := cb_bo_code +1; + +% Consonant conjuncts +cc_ka_code := vm_p_code +1; +cc_kha_code := cc_ka_code +1; +cc_ga_code := cc_kha_code +1; +cc_gha_code := cc_ga_code +1; +cc_nga_code := cc_gha_code +1; +cc_cha_code := cc_nga_code +1; +cc_ccha_code := cc_cha_code +1; +cc_ja_code := cc_ccha_code +1; +cc_jha_code := cc_ja_code +1; +cc_nya_code := cc_jha_code +1; +cc_tta_code := cc_nya_code +1; +cc_ttha_code := cc_tta_code +1; +cc_dda_code := cc_ttha_code +1; +cc_ddha_code := cc_dda_code +1; +cc_nna_code := cc_ddha_code +1; +cc_ta_code := cc_nna_code +1; +cc_tha_code := cc_ta_code +1; +cc_da_code := cc_tha_code +1; +cc_dha_code := cc_da_code +1; +cc_na_code := cc_dha_code +1; +cc_pa_code := cc_na_code +1; +cc_pha_code := cc_pa_code +1; +cc_ba_code := cc_pha_code +1; +cc_bha_code := cc_ba_code +1; +cc_ma_code := cc_bha_code +1; +cc_ya_code := cc_ma_code +1; +cc_ra_code := cc_ya_code +1; +cc_rra_code := cc_ra_code +1; +cc_la_code := cc_rra_code +1; +cc_lla_code := cc_la_code +1; +cc_va_code := cc_lla_code +1; +cc_ca_code := cc_va_code +1; +cc_sha_code := cc_ca_code +1; +cc_sa_code := cc_sha_code +1; +cc_ha_code := cc_sa_code +1; + +% bars used for transliteration of vedic hymns +% and other symbols used for singing +b_udatta1_code := oct"005"; +b_udatta2_code := b_udatta1_code +1; +b_anudatta_code := b_udatta2_code +1; + +% Roman digits +dr_zero_code := ASCII"0"; +dr_one_code := dr_zero_code +1; +dr_two_code := dr_one_code +1; +dr_three_code := dr_two_code +1; +dr_four_code := dr_three_code +1; +dr_five_code := dr_four_code +1; +dr_six_code := dr_five_code +1; +dr_seven_code := dr_six_code +1; +dr_eight_code := dr_seven_code +1; +dr_nine_code := dr_eight_code +1; + +% Telugu digits +dt_zero_code := oct"015"; +dt_one_code := dt_zero_code +1; +dt_two_code := dt_one_code +1; +dt_three_code := dt_two_code +1; +dt_four_code := dt_three_code +1; +dt_five_code := dt_four_code +1; +dt_six_code := dt_five_code +1; +dt_seven_code := dt_six_code +1; +dt_eight_code := dt_seven_code +1; +dt_nine_code := dt_eight_code +1; + +% Punctuations +p_period_code := ASCII"."; +p_comma_code := ASCII","; +p_equal_code := ASCII"="; +p_bar_code := oct"177"; +p_dbar_code := oct"000"; +p_colon_code := ASCII":"; +p_scolon_code := ASCII";"; +p_cquote_code := ASCII"'"; +p_cquotes_code := oct"001"; +p_oquote_code := ASCII"`"; +p_oquotes_code := oct"002"; +p_dquotes_code := ASCII ditto; %ASCII " +p_slash_code := ASCII"/"; +p_hash_code := ASCII"#"; +p_excla_code := ASCII"!"; +p_asterisk_code := ASCII"*"; +p_plus_code := ASCII"+"; +p_lbracket_code := ASCII"["; +p_rbracket_code := ASCII"]"; +p_lparen_code := ASCII"("; +p_rparen_code := ASCII")"; +p_lbrace_code := ASCII"{"; +p_rbrace_code := ASCII"}"; +p_percent_code := ASCII"%"; +p_bslash_code := ASCII"\"; +p_lbar_code := ASCII"|"; +p_hyphen_code := ASCII"-"; +p_lhyphen_code := oct"003"; +p_vlhyphen_code := oct"004"; +p_ubar_code := ASCII"_"; +p_question_code := ASCII"?"; +p_dollar_code := ASCII"$"; +p_greater_code := ASCII">"; +p_less_code := ASCII"<"; +p_at_code := ASCII"@"; +p_tilde_code := ASCII"~"; +p_hat_code := ASCII"^"; +p_ampersand_code := ASCII"&"; + +% Ubayaksharas +u_ardhasunna_code := oct"010"; +u_sunna_code := u_ardhasunna_code +1; +u_visarga_code := u_sunna_code +1; +u_ardhavisarga_code := u_visarga_code +1; +u_avagraha_code := u_ardhavisarga_code +1; + +%some consonant+vowel's need special symbols. Next we will +%define codes for these symbols. +cv_ku_code := cc_ha_code+1; +cv_khe_code := cv_ku_code+1; +cv_khao_code := cv_khe_code+1; +cv_ge_code := cv_khao_code+1; +cv_ngu_code := cv_ge_code+1; +cv_nguu_code := cv_ngu_code+1; +cv_che_code := cv_nguu_code+1; +cv_chao_code := cv_che_code+1; +cv_cche_code := cv_chao_code+1; +cv_cchao_code := cv_cche_code+1; +cv_je_code := cv_cchao_code+1; +cv_ju_code := cv_je_code+1; +cv_juu_code := cv_ju_code+1; +cv_jao_code := cv_juu_code+1; +cv_ttao_code := cv_jao_code+1; +cv_tthe_code := cv_ttao_code+1; +cv_ddu_code := cv_tthe_code+1; +cv_ddhu_code := cv_ddu_code+1; +cv_te_code := cv_ddhu_code+1; +cv_tao_code := cv_te_code+1; +cv_the_code := cv_tao_code+1; +cv_de_code := cv_the_code+1; +cv_dhe_code := cv_de_code+1; +cv_ne_code := cv_dhe_code+1; +cv_nao_code := cv_ne_code+1; +cv_paa_code := cv_nao_code+1; +cv_pu_code := cv_paa_code+1; +ccv_pu_code := cv_pu_code+1; %con. conjunct for pa + vowel u +cv_puu_code := ccv_pu_code+1; +ccv_puu_code := cv_puu_code+1; %con. conjunct for pa + vowel uu +cv_phaa_code := ccv_puu_code+1; +ccv_phu_code := cv_phaa_code+1; %con. conjunct for pha + vowel u +ccv_phuu_code := ccv_phu_code+1; %con. conjunct for pha + vowel uu +cv_be_code := ccv_phuu_code+1; +cv_bao_code := cv_be_code+1; +cv_bhe_code := cv_bao_code+1; +cv_bhao_code := cv_bhe_code+1; +cv_re_code := cv_bhao_code+1; +cv_le_code := cv_re_code+1; +cv_lao_code := cv_le_code+1; +cv_lle_code := cv_lao_code+1; +cv_llu_code := cv_lle_code+1; +cv_llao_code := cv_llu_code+1; +cv_ve_code := cv_llao_code+1; +cv_vao_code := cv_ve_code+1; +cv_ce_code := cv_vao_code+1; +cv_cao_code := cv_ce_code+1; +cv_shaa_code := cv_cao_code+1; +cv_shu_code := cv_shaa_code+1; +cv_saa_code := cv_shu_code+1; +cv_haa_code := cv_saa_code+1; +cv_hao_code := cv_haa_code+1; +cv_kshu_code := cv_hao_code+1; diff --git a/Master/texmf-dist/fonts/source/public/itrans/telmode.mf b/Master/texmf-dist/fonts/source/public/itrans/telmode.mf new file mode 100644 index 00000000000..63760d2a2bc --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/telmode.mf @@ -0,0 +1,21 @@ +% 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. + +% avinash: comment out the mode line, since MakeTeXPK or MakeTeXTFM will +% pass the correct mode to mf anyway, no need to hardcode it here. +% mode=localfont; diff --git a/Master/texmf-dist/fonts/source/public/itrans/telparam.mf b/Master/texmf-dist/fonts/source/public/itrans/telparam.mf new file mode 100644 index 00000000000..74cb3f0efe0 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/telparam.mf @@ -0,0 +1,135 @@ +% 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 various parameters used in making a font +% for telugu. Many of the parameters are used in several places. +% Before changing anything here you should be very clear about +% the possible impact. +% +input telbase % read basefile + +font_identifier :="TELUGU"; + +% parameters + +u#:=designsize/18; % unit width +v#:=designsize; % total height +uh#:=v#/18; % unit height +top_shoulder:=2/36; % top shoulder proportion +bot_shoulder:=2/36; % bottom shoulder proportion +xheight:=15/36; % x height proportion +ascheight:=10/36; % ascender height proportion +desdepth:=7/36; % descender depth proportion +figheight:=6/36; % height of roman digits + +em_width#:=18u#; % same as font_quad + +asc_height#:=(ascheight+xheight)*v#; +des_depth#:=desdepth*v#; +x_height#:=xheight*v#; +bot_depth#:=(bot_shoulder+desdepth)*v#; +top_height#:=(top_shoulder+ascheight+xheight)*v#; +fig_height#:=(figheight+xheight)*v#; % height of roman digits +tfig_width#:=7.5u#; % width of telugu digits +tfig_height#:=x_height#; % height of telugu digits + +asc_height1#:=(1/3ascheight+xheight)*v#; +asc_height2#:=(2/3ascheight+xheight)*v#; + +j_height#:=2/3x_height#; % height of bowls in ja,ta etc +c_height#:=1/3x_height#; % height of circle in ma, va etc +% c_height is used to draw small circles. If we use a wide pen then the circle +% may not be clearly visible. Hence the following statement. +if c_height# < (3.2*pen_width#):c_height#:=3.2pen_width#; fi; +w_height#:=1/3x_height#; % height of wedge in da,ta etc +ascunit#:=1/6(asc_height#-x_height#); % a unit for acsender area +vmwidth#:=7u#; % width of vowel modifiers +top_accent#:=1.5uh#; % base for accents that appear at top +bot_accent#:=1.5uh#; % base for accents that appear below +cc_scale:=0.7; % scale factor for consonant conjuncts +ccwidth#:=vmwidth#; % width of co.conjuncts that appear on % the side +dot_radius#:=u#; % radius of dot +wedge_height#:=x_height#/4; % height of wedge (in dha, uu etc) +wedge_depth#:=4/9des_depth#; % depth of wedge(in dha,uu etc) +sc_height#:=1/6x_height#; % misc. usage + +v_a_width#:=10u#; % width of vowel a +v_e_width#:=7.5u#; % width of vowel e +v_u_width#:=8u#; % width of vowel u (like dda no hat +v_lo_width#:=11u#; % width of vowel lo(inverted ja) +v_ea_width#:=6u#; % width of vowel ea(like va without +v_i_width#:=7u#; % width of vowel i + +vm_a_width#:=5u#; % width of vowel modifier a +vm_e_width#:=4u#; % width of vowel modifier e +vm_e_height1#:=asc_height2#; % height of vowelmodifier e (used + % with certain consonants kha,cha, + % ccha,ja,ta,na,ba,bha,ma,la,va etc) +vm_e_height2#:=5/6x_height#; % vowel mod. e for ra,ga.da sits +vm_e_height3#:=(1/2ascheight+xheight)*v#; % between vm_e_height2 and 3 +vm_u_width#:=5u#; % width of ubowl (attached to letter +vm_ro_width#:=6u#; % width of vowel modifier ro +vm_ao_width#:=8u#; % width of vowel modifier ao +vm_aoo_width#:=vm_ao_width#+1.5u#; % width of vowel modifier aoo + +cb_ka_width#:=6u#; % width of ka +cb_kha_width#:=7.5u#; % width of kha +cb_ga_width#:=6u#; % width of ga +cb_cha_width#:=9u#; % width of cha +cb_ja_width#:=7.5u#; % width of ja +cb_tta_width#:=10.5u#; % width of tta +cb_nna_width#:=10u#; % width of nna +cb_ta_width#:=8u#; % width of ta +cb_da_width#:=9.0u#; % width of da +cb_na_width#:=7.5u#; % width of na +cb_ba_width#:=7.5u#; % width of ba +cb_ya_width#:=10u#; % width of ya (without bowl) +cb_ra_width#:=6u#; % width of ra +cb_la_width#:=9u#; % width of la +cb_lla_width#:=6u#; % width of lla +cb_va_width#:=7.5u#; % width of va +cb_ca_width#:=5u#; % width of ca +cb_sha_width#:=cb_va_width#+1.5u#; % width of sha +cb_ksha_width#:=cb_ka_width#; % width of ksha +cb_ksha_depth#:=des_depth#; % floor of ksha +cb_np_width#:=ccwidth#; % width of nakarapollu +cb_vg_width#:=ccwidth#; % width of valapalagilaka + +cv_pu_width#:=cb_va_width#+2u#; % width of u modifier for pa +cv_pu_depth#:=1.5uh#; % depth of u modifier for pa + +p_comma_width#:=2dot_radius#+u#; % width of comma +half_plus_width#:=cb_ja_width#/2; % width of symbol like truncated + + +% ul#, ur# indicate the amount of white space that is added +% to a symbol. Following are the criteria used to add space +% consonant base, vowels - none +% punctuation,digits - on right +% consonant conjuncts that appear below,vowel modifiers that appear +% above/below - none +% accents that appear below/above - none +% consonant conjuncts that appear on the side - on left +% vowel modifiers for u, uu - none +% vowel modifiers for ro, roo - on left +% While composing Telugu text using TeX, space is added after a syllable +% by the macros that build a syllable. +ul#:=2u#; % white space (on left) +ur#:=2u#; % white space (on right) + + +generate telugu; % switch to driver files diff --git a/Master/texmf-dist/fonts/source/public/itrans/telspc.mf b/Master/texmf-dist/fonts/source/public/itrans/telspc.mf new file mode 100644 index 00000000000..c2ae45d132e --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/telspc.mf @@ -0,0 +1,52 @@ +%telspc% +% generates striped characters with shading +input telmode; +font_size 72pt#; +slant:=0; +pen_width#:=2.5pt#; +% Following code(with minor modifications) is taken from the article, +% The ABC's of Special Effects by Georgia K. M. Tobin, +% that appeared in TUGboat, Volume 9(1988), No. 1 +vardef special_effects= +% creates characters filled with stripes and followed by a shadow. + cullit; + picture Normalchar; + Normalchar:=currentpicture; + clearit; +% Depending on the output device, pen size(0.1pt) may need to be +% changed. + pickup pencircle scaled 0.1pt; + filldraw (0,-d)--(w,-d)-- + (w,h)--(0,h)--cycle; + picture Blackbox; + Blackbox:=currentpicture; + picture Reversevideo; + Reversevideo:=Blackbox-Normalchar; + clearit; +% Depending on the output device,stepsize(uh/3) may need to be +% changed. + for f=-d step uh/3 until h: + draw(0,f)--(w,f); + endfor; + currentpicture:= + currentpicture-Reversevideo; + cullit; + picture Stripedchar; + Stripedchar:=currentpicture; + clearit; +% Depending on the output device,offset(1.5pt) may need to be +% changed. + currentpicture:=Normalchar shifted(1.5pt,-1.5pt); + picture Shadow; + Shadow:=currentpicture; + clearit; + currentpicture:=Shadow-Normalchar; + cullit; + picture Shadowonly; + Shadowonly:=currentpicture; + clearit; + + currentpicture:=Shadowonly+Stripedchar; +enddef; +input telparam; +%% diff --git a/Master/texmf-dist/fonts/source/public/itrans/telugu.mf b/Master/texmf-dist/fonts/source/public/itrans/telugu.mf new file mode 100644 index 00000000000..f442599c9f2 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/telugu.mf @@ -0,0 +1,48 @@ +% 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 font dimensions, ligature definitions etc. +% +font_coding_scheme := "TeX text"; + +mode_setup; font_setup; + +input telcodes; % codes for telugu symbols +input telchrs1; % vowels,vowel modifiers, consonant bases, +% % consonant conjuncts, accents, c+v's +input telchrs2; % consonant + vowel that need special care +input telchrs3; % digits(roman&Telugu), punctuation + +% Font Dimensions + +font_slant slant; +font_x_height x_height#; +font_normal_space 6u#; +font_normal_stretch 3u#; +font_normal_shrink 2u#; +font_quad em_width#; +font_extra_space 2u#; + +%ligature and kern information + +ligtable "'": "'" =: p_cquotes_code; % close quotes +ligtable "`": "`" =: p_oquotes_code; % open quotes +ligtable "-": "-" =: p_lhyphen_code; % en dash +ligtable p_lhyphen_code: "-" =: p_vlhyphen_code; % em dash + +if not testing: expandafter stop fi; diff --git a/Master/texmf-dist/fonts/source/public/itrans/wntml12.mf b/Master/texmf-dist/fonts/source/public/itrans/wntml12.mf new file mode 100644 index 00000000000..46d97df59aa --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/wntml12.mf @@ -0,0 +1,77 @@ +% This is WNTML12.MF (Washington Tamil 12pt) +% based on CMR12.MF +% Created by Avinash Chopde, from the existing U of Wash definition +if unknown cmbase: input cmbase fi + +font_identifier:="WNTML"; font_size 12pt#; + +u#:=23.5/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=5.8/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=0pt#; % extra space added to all sidebars + +body_height#:=324/36pt#; % height of tallest characters +asc_height#:=300/36pt#; % height of lowercase ascenders +cap_height#:=295.2/36pt#; % height of caps +fig_height#:=278.4/36pt#; % height of numerals +x_height#:=186/36pt#; % height of lowercase without ascenders +math_axis#:=108/36pt#; % axis of symmetry for math symbols +bar_height#:=104.4/36pt#; % height of crossbar in lowercase e +comma_depth#:=84/36pt#; % depth of comma below baseline +desc_depth#:=84/36pt#; % depth of lowercase descenders + +crisp#:=0pt#; % diameter of serif corners +tiny#:=8/36pt#; % diameter of rounded corners +fine#:=7/36pt#; % diameter of sharply rounded corners +thin_join#:=7.5/36pt#; % width of extrafine details +hair#:=9.5/36pt#; % lowercase hairline breadth +stem#:=28/36pt#; % lowercase stem breadth +curve#:=33/36pt#; % lowercase curve breadth +ess#:=30/36pt#; % breadth in middle of lowercase s +flare#:=36/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=42/36pt#; % diameter of dots +cap_hair#:=11.5/36pt#; % uppercase hairline breadth +cap_stem#:=35/36pt#; % uppercase stem breadth +cap_curve#:=40/36pt#; % uppercase curve breadth +cap_ess#:=38/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.44pt#; % thickness of lines in math symbols + +dish#:=1/36pt#; % amount erased at top or bottom of serifs +bracket#:=24/36pt#; % vertical distance from serif base to tangent +jut#:=33/36pt#; % protrusion of lowercase serifs +cap_jut#:=41/36pt#; % protrusion of uppercase serifs +beak_jut#:=11.4/36pt#; % horizontal protrusion of beak serifs +beak#:=84/36pt#; % vertical protrusion of beak serifs +vair#:=8.5/36pt#; % vertical diameter of hairlines +notch_cut#:=12pt#; % maximum breadth above or below notches +bar#:=12.5/36pt#; % lowercase bar thickness +slab#:=12.5/36pt#; % serif and arm thickness +cap_bar#:=12.5/36pt#; % uppercase bar thickness +cap_band#:=12.5/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=12pt#; % max breadth above/below uppercase notches +serif_drop#:=4.8/36pt#; % vertical drop of sloped serifs +stem_corr#:=1/36pt#; % for small refinements of stem breadth +vair_corr#:=1/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=9/36pt#; % amount of overshoot for curves +apex_o#:=9/36pt#; % amount of overshoot for diagonal junctions + +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=-0.2; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=11/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + +generate wntamil % switch to the driver file diff --git a/Master/texmf-dist/fonts/source/public/itrans/wntml17.mf b/Master/texmf-dist/fonts/source/public/itrans/wntml17.mf new file mode 100644 index 00000000000..57fc94db469 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/itrans/wntml17.mf @@ -0,0 +1,77 @@ +% This is WNTML12.MF (Washington Tamil 12pt) +% based on CMR12.MF +% Created by Avinash Chopde, from the existing U of Wash definition +if unknown cmbase: input cmbase fi + +font_identifier:="WNTML"; font_size 17.28pt#; + +u#:=32.5/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=-0.1pt#; % extra space added to all sidebars + +body_height#:=466/36pt#; % height of tallest characters +asc_height#:=432/36pt#; % height of lowercase ascenders +cap_height#:=425/36pt#; % height of caps +fig_height#:=401/36pt#; % height of numerals +x_height#:=267.8/36pt#; % height of lowercase without ascenders +math_axis#:=155.5/36pt#; % axis of symmetry for math symbols +bar_height#:=150/36pt#; % height of crossbar in lowercase e +comma_depth#:=121/36pt#; % depth of comma below baseline +desc_depth#:=121/36pt#; % depth of lowercase descenders + +crisp#:=0pt#; % diameter of serif corners +tiny#:=8/36pt#; % diameter of rounded corners +fine#:=7/36pt#; % diameter of sharply rounded corners +thin_join#:=9/36pt#; % width of extrafine details +hair#:=11/36pt#; % lowercase hairline breadth +stem#:=33/36pt#; % lowercase stem breadth +curve#:=40/36pt#; % lowercase curve breadth +ess#:=35/36pt#; % breadth in middle of lowercase s +flare#:=45/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=51/36pt#; % diameter of dots +cap_hair#:=13/36pt#; % uppercase hairline breadth +cap_stem#:=41/36pt#; % uppercase stem breadth +cap_curve#:=47/36pt#; % uppercase curve breadth +cap_ess#:=43/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.6pt#; % thickness of lines in math symbols + +dish#:=1/36pt#; % amount erased at top or bottom of serifs +bracket#:=34/36pt#; % vertical distance from serif base to tangent +jut#:=42/36pt#; % protrusion of lowercase serifs +cap_jut#:=50/36pt#; % protrusion of uppercase serifs +beak_jut#:=15/36pt#; % horizontal protrusion of beak serifs +beak#:=121/36pt#; % vertical protrusion of beak serifs +vair#:=10/36pt#; % vertical diameter of hairlines +notch_cut#:=17pt#; % maximum breadth above or below notches +bar#:=16/36pt#; % lowercase bar thickness +slab#:=16/36pt#; % serif and arm thickness +cap_bar#:=16/36pt#; % uppercase bar thickness +cap_band#:=16/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=17pt#; % max breadth above/below uppercase notches +serif_drop#:=7/36pt#; % vertical drop of sloped serifs +stem_corr#:=1/36pt#; % for small refinements of stem breadth +vair_corr#:=1/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=10/36pt#; % amount of overshoot for curves +apex_o#:=10/36pt#; % amount of overshoot for diagonal junctions + +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=-0.4; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=11/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + +generate wntamil % switch to the driver file |