summaryrefslogtreecommitdiff
path: root/language/gurmukhi/singh/gmchars.mf
diff options
context:
space:
mode:
Diffstat (limited to 'language/gurmukhi/singh/gmchars.mf')
-rw-r--r--language/gurmukhi/singh/gmchars.mf1004
1 files changed, 1004 insertions, 0 deletions
diff --git a/language/gurmukhi/singh/gmchars.mf b/language/gurmukhi/singh/gmchars.mf
new file mode 100644
index 0000000000..e336c9e452
--- /dev/null
+++ b/language/gurmukhi/singh/gmchars.mf
@@ -0,0 +1,1004 @@
+% GMCHARS.MF
+% Metafont source file of the Gurmukhi font
+%
+% Author: Amarjit Singh
+% E-mail: asingh@evolving.com
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 1, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%
+%________________________________________________________________________
+beginchar(0,0,ht#,0); "sub-u";
+% 0x0
+ pickup frame_pen;
+ x1=-1/2uwidth; y1=mb-(penwd+1/4uwidth);
+ z2=(1/4uwidth, y1);
+ draw z1{down}..tension4.0..z2;
+endchar;
+beginchar(1,0,ht#,0); "sub-U";
+% 0x1
+ pickup frame_pen;
+ x1=-1/2uwidth; y1=mb-(penwd+1/4uwidth);
+ z2=(1/4uwidth, y1);
+ x3=x1; y3=mb-(penwd+3/5uwidth);
+ z4=(x2, y3);
+ draw z1{down}..tension4.0..z2;
+ draw z3{down}..tension4.0..z4;
+endsav;
+beginchar(3,.9twd#+brm#,1.5ht#,0); "sup-e";
+% 0x3
+ pickup frame_pen;
+ z1=(w-brm,ht+1.5penwd);
+ z2=(0,1.5ht);
+ draw z1{curl.5}..{left}z2;
+endchar;
+beginchar(11,1.1twd#+brm#,ht#,0); ".g";
+% 0xb
+ italcorr brm#; path p;
+ z11=(.6(w-brm),.5penwd);
+ sqdot(z11);
+ frame; z5=(.25(w-brm),h);
+ z6=(x5,.3h);
+ z7=2/3[z5,z6];
+ z8=z7 shifted (.1(w-brm),0);
+ z9= (1/2penwd,y6+.08h);
+ p = z5..z8{down}..z6{left}..z9{up};
+ z10 = point 2.4 of p;
+ draw p..z10;
+endchar;
+beginchar(12,1.1twd#+brm#,ht#,0); ".kh";
+% 0xc
+ italcorr brm#;
+ tframe; path p;
+ z5=(1/2penwd,.55h);
+ z6=(x3,.55h);
+ z7=(0,h);
+ draw z5{dir-70}..tension.95..z6;
+ p = z5{right}..tension.95..z7;
+ draw p;
+ z12=(.65(w-brm),0);
+ sqdot(z12);
+ z8 = point .22 of p;
+ x9 = x3; y9 = y8;
+ pickup sub_pen;
+ draw z8--z9;
+endchar;
+beginchar(20,twd#,ht#,0); "period";
+% 0x14
+ z1=(1/2w,1/2penwd);
+ sqdot(z1);
+endchar;
+beginchar(26,1.15twd#+rm#,ht#,0); "'n";
+% 0x1a
+ italcorr rm#+.5twd#;
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ lm := w-rm;
+ x3=good.x .25lm; y3=h;
+ z4=(x3,.68h);
+ z5=(lm,.47h);
+ z6=(.3lm,.1h);
+ z7=(3/2penwd,.23h);
+ draw z3--z4{right}..tension.9..{down}z5..tension.9..{left}z6..z7;
+ z8=(.6lm,-1/7h);
+ draw z7{right}..tension.8..z8;
+endchar;
+beginchar(27,1.07twd#+rm#,ht#,0); "front-o";
+% 0x1b
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ lm:=w-rm;
+ z3=(.84lm,h); z4=(.4lm,.55h);
+ z5=(.64lm,y4);
+ z6=(x5,1/2penwd);
+ z7=(1/2penwd,h);
+ draw z1--z2;
+ draw z4--z5{right}..tension1.1..z3;
+ draw z5..z6{left}..{curl.4}z7;
+
+ x8=.42lm+1/4penwd; y8=1.5h;
+ x9=lm; y9 = 1.6h;
+ draw z7{up}..z8..z9;
+
+% z8=(0,1.1h);
+% z9=(w-.5rm+.6twd,1.8h);
+% draw z7..z8..z9;
+%
+% curl over small e matra
+% frame
+% z5=(x3,1.35ht);
+% z6=(w-.5rm+.6twd,1.35ht);
+% x7=.3[x5,x6]; y7=1.5ht;
+% draw z3--z5{up}..z7{right}..{curl0}z6;
+
+% very intersting curve
+% x8 = good.x w-brm; y8 = 1.35h;
+% z9=(w-.5rm+.6twd,2.35h);
+% x10=0; y10=1.5h;
+% z11=(0,h);
+% draw z11..z10{left}..z9;
+
+% perfect curve but too big
+% z8=(0,1.5h);
+% z9=(w-.5rm+.6twd,2.35h);
+% draw z7..z8..tension.95..z9;
+endchar;
+
+beginchar(" ",0,1.5ht#,0); "candrabindu";
+% 0x20
+ lm := .7twd;
+ z1=(.55lm,1.48ht);
+ sqdot(z1);
+ pickup sub_pen;
+ z5=(lm,1.5ht);
+ z6=(.66lm,1.25ht);
+ z7=(0,1.5ht);
+ draw z5..tension1.1..z6{left}..z7;
+endchar;
+beginchar(38,0,ht#,0); "/v";
+% 0x26
+ path p;
+ pickup sub_pen;
+ z1 = (2/14uwidth,mb-penwd);
+ z2 = (-9/28uwidth,mb-(penwd+.18uwidth));
+ z3 = (9/28uwidth,mb-(penwd+.36uwidth));
+ p = z1{left}..tension1.2..z2{down}..tension1.1..{curl.2}z3;
+ draw p;
+ z4 = point 1.5 of p;
+ z5 = (-8/28uwidth,mb-(penwd+.57uwidth));
+ z6 = (3/7uwidth,mb-(penwd+.68uwidth));
+ draw z4..tension1.1..z5{down}..tension1.2..{curl.3}z6;
+endchar;
+beginchar("'",1.1twd#+rm#,ht#,0); "f";
+% 0x27
+ italcorr rm#+.3twd#;
+ path p;
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ x3=good.x .85(w-rm); y3=h;
+ z4=(x3,.72h);
+ z5=(1/2penwd,.47h);
+ z6=(.7(w-rm),1/2penwd);
+ z7=(w-rm,.23h);
+ draw z3--z4;
+ p=z4{left}..tension.9..{down}z5..tension.9..{right}z6..{up}z7;
+ draw p..z6;
+ z12=(1/2penwd,0);
+ sqdot(z12);
+endchar;
+beginchar(")",1.1twd#+brm#,ht#,0); "z";
+% 0x29
+ italcorr brm#;
+ frame;
+ x5=.25w; y5=.1h;
+ x6=x5; y6=good.y .65h;
+ x7=x3; y7=y6-penwd;
+ z8=(x6-penwd,y6-penwd);
+ draw z7--z8{up}..z6--z5;
+ z11=(.6(w-brm),.5penwd);
+ sqdot(z11);
+endchar;
+beginchar(",",0,ht#,0); "visarga";
+% 0x2c
+ z1=(0,1.45h);
+ sqdot(z1);
+endchar;
+beginchar(".",twd#,ht#,0); "|";
+% 0x2e
+ pickup frame_pen;
+ x1=good.x w; y1=0; z2=(x1,h); draw z1--z2;
+endchar;
+beginchar("0",.5ht#+rm#,ht#,0); "0";
+% 0x30
+ pickup frame_pen; z1 =(1/4h+1/2penwd,1/2h);
+ draw fullcircle scaled 1/2h shifted z1;
+endchar;
+beginchar("1",5/8twd#+rm#,ht#,0); "1";
+% 0x31
+ pickup frame_pen; path p;
+ z1=(3/2penwd,.33h);
+ z2=(w-rm,0);
+ z3=(x2-.75penwd,-.07h);
+ z4=(w-rm,.75h);
+ z5=(.6(w-rm),h);
+ z6=(3/2penwd,.8h);
+ draw z1--z2;
+ draw z2--z3;
+ p=z1{curl0}..tension1.2..z4{up}..z5{left};
+ z7=point .8 of p;
+ draw p..z6{down}..tension1.1..z7;
+endchar;
+beginchar("2",twd#+rm#,ht#,0); "2";
+% 0x32
+ pickup frame_pen;
+ z1=(1/2penwd,.9h);
+ z2=(w-rm,.7h);
+ z3=(.25(w-rm),.35h);
+ z4=(x3,.45h);
+ z5=(w-rm,0);
+ draw z1{curl0}..tension1.1..z2{down}..z3{left}..z4..tension2..{curl0}z5;
+endchar;
+beginchar("3",.85twd#+rm#,ht#,0); "3";
+% 0x33
+ pickup frame_pen;
+ z1=(1/2penwd,.95h);
+ z2=(.95(w-rm),.82h);
+ z3=(.65(w-rm),.65h);
+ z4=(.2(w-rm),.65h);
+ z5=(w-rm,.4h);
+ z6=(.3(w-rm),.2h);
+ z7=(x6,.3h);
+ z8=(w-rm,0);
+ draw z1{right}..tension1.1..z2{down}..{left}z3..tension1.2..{curl0}z4;
+ draw z3..z5{down}..z6{left}..z7..tension2..{curl0}z8;
+endchar;
+beginchar("4",4/3twd#+rm#,ht#,0); "4";
+% 0x34
+ pickup frame_pen;
+ z1=(1/2penwd,h);
+ z2=(w-rm,h);
+ z3=(1/2(w-rm),.2h);
+ z4=(1/2(w-rm),.64h);
+ draw z1..z4..tension.9..z3{left}..tension.9..z4..z2;
+endchar;
+beginchar("5",1.1twd#+rm#,ht#,0); "5";
+% 0x35
+ italcorr brm#;
+ pickup frame_pen;
+ z3=(.8(w-rm),h); z4=(x3,0);
+ draw z3--z4;
+ z5=(1/2penwd,.55h);
+ z6=(x3,.55h);
+ z7=(.3x3,h);
+ draw z5{dir-70}..tension.95..z6;
+ draw z5{right}..tension.95..z7;
+endchar;
+beginchar("6",.85twd#+rm#,ht#,0); "6";
+% 0x36
+ pickup frame_pen;
+ lm:=w-.5rm;
+ z1=(.85lm,1/2penwd);
+ z2=(1/2penwd,.22h);
+ z3=(.35lm,.4h);
+ z4=(.8lm,.4h);
+ z5=(1/2penwd,.65h);
+ z6=(.7lm,.85h);
+ z7=(x6,.75h);
+ z8=(x6,1.2h);
+ draw z1{left}..tension1.1..z2{up}..{right}z3..tension1.2..{curl0}z4;
+ draw z3..z5{up}..z6{right}..z7{left}..{right}z8;
+endchar;
+beginchar("7",twd#+rm#,ht#,0); "7";
+% 0x37
+ pickup frame_pen;
+ lm:=w-rm;
+ z1 = (.5lm,.8h);
+ z2 = (lm,.8h);
+ z3 = (1/2penwd, penwd);
+ draw z1{up}...{down}z2{down}..z3;
+endchar;
+beginchar("8",1.15twd#+rm#,ht#,0); "8";
+% 0x38
+ italcorr rm#+.5twd#;
+ pickup frame_pen; path p;
+ lm := w-rm;
+ z4=(.9lm,.66h);
+ z7=(.25w, .6h);
+ x5=x7-3/4penwd; y5 = y4;
+ x6=x7; y6=y4+3/4penwd;
+ z8=(lm,.1h);
+ draw z4--z5{up}..z6--z7;
+ draw z7{down}..tension.95..z8;
+endchar;
+beginchar("9",1.15twd#+rm#,ht#,0); "9";
+% 0x39
+ italcorr rm#+.5twd#;
+ pickup frame_pen; path p;
+ lm := w-rm;
+ z1=(.8lm,.7h);
+ z2=(.8lm,h);
+ draw z1{left}..{right}z2;
+ z4=(.9lm,.66h);
+ z7=(.25w, .6h);
+ x5=x7-3/4penwd; y5 = y4;
+ x6=x7; y6=y4+3/4penwd;
+ z8=(lm,.1h);
+ draw z4--z5{up}..z6--z7;
+ draw z7{down}..tension.95..z8;
+endchar;
+beginchar(":",1.07twd#+rm#,ht#,0); "OM";
+% 0x3a
+ pickup frame_pen;
+ lm:=w-rm;
+ z1=(0,h); z2=(lm,h);
+ z3=(.84lm,h); z4=(.4lm,.55h);
+ z5=(.64lm,y4);
+ z6=(x5,1/2penwd);
+ z7=(1/2penwd,h);
+ draw z1--z2;
+ draw z4--z5{right}..tension1.1..z3;
+ draw z5..z6{left}..{curl.4}z7;
+
+ x8=.52lm+1/4penwd; y8=1.26h;
+ draw z7{up}..z8;
+ z9=(w,1.5h);
+ draw z8{up}..z9;
+endchar;
+beginchar(";",1.2twd#,ht#,0); "||";
+% 0x3b
+ pickup frame_pen;
+ x1=good.x w-2.5penwd; y1=0;
+ z2=(x1,h);
+ x3=good.x w; y3=0;
+ z4=(x3,h);
+ draw z1--z2; draw z3--z4;
+endchar;
+beginchar("A",2rm#,ht#,0); "A";
+% 0x41
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ x3=good.x w-brm; y3=h; z4=(x3,.4h);
+ draw z1--z2; draw z3--z4;
+endchar;
+beginchar("B",1.07twd#+rm#,ht#,0); "B";
+% 0x42
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ lm:=w-rm;
+ z3=(.84lm,h);
+ z4=(rm,.4h);
+ z5=(rm,.7h);
+ z6=(.84lm,.35h);
+ z7=(1/2penwd,.2h);
+ draw z1--z2;
+ draw z3{down}..tension1.3..{left}z4{left}..z5;
+ draw z5{right}..z6{down}..tension1.5..{up}z7;
+endchar;
+beginchar("C",1.25twd#+rm#+penwd#,ht#,-.1ht#); "C";
+% 0x43
+ italcorr rm#+.5twd#;
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ x3=good.x w-rm-penwd; y3=h;
+ z4=(x3,.74h); z5=(.2twd+1/2penwd,.6h);
+ z6=(x3+1/2penwd,.37h);
+% z7=(1/2(.25twd+x3),1/7h);
+ z7=(1/2(.25twd+x3),1/2penwd);
+ z8=(.15w,.45h);
+ draw z1--z2; draw z3--z4;
+ draw z4{left}..z5{down}..z6{down}..z7{left}..z8{right}..tension.95..z7;
+endsav;
+beginchar("D",1.1twd#+brm#,ht#,0); "dh";
+% 0x44
+ italcorr brm#;
+ frame;
+ z5=(1/2penwd,.55h);
+ z6=(x3,.55h);
+ z7=(.3x3,h);
+ draw z5{dir-70}..tension.95..z6;
+ draw z5{right}..tension.95..z7;
+endchar;
+beginchar("E",1.6rm#,1.5ht#,0); "i";
+% 0x45
+ pickup frame_pen;
+ z1 = (0,ht); z2 = (w,ht);
+ x3 = good.x w-rm; y3 = ht; z4 = (x3,0);
+ draw z1--z2; draw z3--z4;
+ z5=(x3,1.35ht);
+ z6=(w-.5rm+.6twd,1.35ht);
+ x7=.3[x5,x6]; y7=1.5ht;
+ draw z3--z5{up}..z7{right}..{curl0}z6;
+endchar;
+beginchar("F",2rm#,1.5ht#,0); "I";
+% 0x46
+ frame; z5=(-1.5rm-penwd,1.25ht);
+ z6=(1/2x5,1.5ht);
+ draw z3{curl0}..{left}z6...z5;
+endchar;
+beginchar("G",1.45twd#+brm#,ht#,0); "gh";
+% 0x47
+ italcorr brm#;
+ tframe; path p;
+ z5=(1/2penwd,.55h);
+ z7=(0,h);
+ draw z5{right}..tension.95..z7;
+ x6 = .6[x5,x3]; y6=.25h;
+ draw z5{dir-70}..tension.95..z6;
+ x8 = x6; y8=.75h;
+ draw z6--z8;
+ z9=(x3-1/2penwd, .35h);
+ draw z6{dir-40}..tension.95..z9;
+endchar;
+beginchar("H",0,ht#,.25ht#); "/h";
+% 0x48
+ pickup sub_pen;
+ z1=(.1twd,mb-1/2penwd);
+ z2=(.1twd,mb-.54h);
+ z3=(-.35twd,mb-.35h);
+ draw z1--z2;
+ draw z2{left}..z3;
+endchar;
+beginchar("J",1.15twd#+rm#,ht#,0); "J";
+% 0x4a
+ italcorr rm#+.5twd#;
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ lm := w-rm;
+ z11 = (lm, h); z12 = (.1lm, .65h);
+ draw z11{down}..tension1.5..z12;
+ x3=good.x .45lm; y3=h;
+ z4=(x3,.68h);
+ z5=(lm,.47h);
+ z6=(.3lm,.1h);
+ z7=(penwd,.23h);
+ draw z3{left}..z4{right}..tension.9..{down}z5..tension.9..{left}z6..z7;
+ z8=(.5lm,-1/7h);
+ draw z7{right}..tension.8..z8;
+endchar;
+beginchar("K",1.1twd#+brm#,ht#,0); "kh";
+% 0x4b
+ italcorr brm#;
+ tframe; path p;
+ z5=(1/2penwd,.55h);
+ z6=(x3,.55h);
+ z7=(0,h);
+ draw z5{dir-70}..tension.95..z6;
+ p = z5{right}..tension.95..z7;
+ draw p;
+ z8 = point .22 of p;
+ x9 = x3; y9 = y8;
+ pickup sub_pen;
+ draw z8--z9;
+endchar;
+beginchar("O",0,1ht#,0); "O";
+% 0x4f
+ pickup frame_pen;
+ path p;
+ z1=(-1.1twd,1.5h);
+ z3=(x1+.9twd-.1brm,h+penwd);
+ x2 = .4 [x1,x3]; y2 = 1.3h;
+ p = z1{down}..z2..{down}z3;
+ draw p;
+ z4=point .95 of p;
+ z5=(x4, h);
+ draw z4--z5;
+endchar;
+beginchar("P",1.1twd#+rm#,ht#,0); "ph";
+% 0x50
+ italcorr rm#+.3twd#;
+ path p;
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ x3=good.x .85(w-rm); y3=h;
+ z4=(x3,.72h);
+ z5=(1/2penwd,.47h);
+ z6=(.7(w-rm),1/2penwd);
+ z7=(w-rm,.23h);
+ draw z3--z4;
+ p=z4{left}..tension.9..{down}z5..tension.9..{right}z6..{up}z7;
+ draw p..z6;
+endchar;
+beginchar("R",1.15twd#+rm#,ht#,.4ht#); "gn";
+% 0x52
+ italcorr rm#+.5twd#; path p;
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ lm := w-rm;
+ x3 = good.x .7lm; y3=h;
+ z4 = (x3,.72h);
+ z6 = (.55lm,.4h);
+ z7 = (.8lm,.45h);
+ draw z3--z4;
+ vardef dwn(expr y) = xpart direction 1 of (z4{curl0}..tension1.1..
+ (1/2penwd,y)..z6{right}..{curl0}z7) < 0 enddef;
+ z55 = (1/2penwd,solve dwn(y4,y6));
+ z8 = (x7, y6);
+ p = z4{curl0}..tension1.1..z55..z6{right}..{curl0}z7;
+ draw p;
+ z9 = p intersectionpoint ((.25lm,.65h)--(.25lm,0));
+ z10 = (x7,penwd);
+ draw z9{down}..tension.95..z10;
+ z56 = point .2 of p;
+ draw p;
+% pickup penrazor scaled subthick;
+ draw (1/2penwd,h)--(x56,y56-1/2penwd);
+endchar;
+beginchar("T",1.1twd#+brm#,ht#,0); "th";
+% 0x54
+ italcorr brm#;
+ frame; path p;
+ z5=(1/2penwd,.55h);
+ z6=(x3,.55h);
+ z7=(0,h);
+ draw z5{dir-70}..tension.95..z6;
+ p = z5{right}..tension.95..z7;
+ draw p;
+ z8 = point .22 of p;
+ x9 = x3; y9 = y8;
+ pickup sub_pen;
+ draw z8--z9;
+endchar;
+beginchar("V",1.15twd#+rm#,ht#,0); ".t";
+% 0x56
+ italcorr rm#+.5twd#;
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ lm := w-rm;
+ x3=good.x .7lm; y3=h;
+ z4=(x3,.66h);
+ z6=(.55lm,.1h);
+ z7=(lm,.2h);
+ draw z3--z4;
+ vardef dwn(expr y) = xpart direction 1 of (z4{curl0}..(1/2penwd,y)
+ ..z6{right}..{curl0}z7) < 0 enddef;
+ z55=(1/2penwd,solve dwn(y4,y6));
+ draw z4{curl0}..z55..z6{right}..{curl0}z7;
+endchar;
+beginchar("W",1.15twd#+rm#,ht#,0); ".th";
+% 0x57
+ italcorr rm#+.5twd#;
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ lm:= w-rm;
+ x3=good.x .75lm; y3=h;
+ z4=(x3,.66h);
+ z6=(.55lm,.1h);
+ z7=(lm,y5);
+ z8=(x4+penwd,y4-penwd);
+ draw z3--z4;
+ vardef dwn(expr y) = xpart direction 1 of (z4{curl0}..(1/2penwd,y)
+ ..{right}z6) < 0 enddef;
+ z5 = (1/2penwd,solve dwn(y4,y6));
+ draw z4{curl0}..z5..z6{right}..z7{up}..{curl0}z8;
+endchar;
+beginchar("X",1.07twd#+rm#,ht#,0); ".d";
+% 0x58
+ pickup frame_pen; path p;
+ z1=(0,h); z2=(w,h);
+ lm:=w-rm;
+ z3=(.84lm,h);
+ z4=(.3lm,.65h);
+ z5=(.64lm,y4);
+ z6=(.84lm,.2h);
+ z7=(.24lm,1/2penwd);
+ draw z1--z2;
+ draw z4--z5{right}..tension1.1..z3;
+ p = z5..tension1.1..z6{down}..tension1.8..z7;
+ z8=(x7,.32h);
+ z9=point .97 of p;
+ draw p{left}..z8{right}..z9;
+endchar;
+beginchar("Y",1.15twd#+rm#,ht#,0); ".dh";
+% 0x59
+ italcorr rm#+.5twd#;
+ pickup frame_pen; path p;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ lm := w-rm;
+ x3=good.x .9lm; y3=h;
+ z4=(x3,.66h);
+ z7=(.25w, .6h);
+ x5=x7-3/4penwd; y5 = y4;
+ x6=x7; y6=y4+3/4penwd;
+ z8=(.8lm,1/2penwd);
+ z9=(lm,.23h);
+ draw z3--z4;
+ draw z4--z5{up}..z6--z7;
+ p = z7{down}..tension.9..{right}z8..{up}z9;
+ draw p..z8;
+endchar;
+beginchar("Z",1.15twd#+rm#,ht#,.4ht#); ".n";
+% 0x5a
+ italcorr rm#+.5twd#; path p;
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ lm := w-rm;
+ x3 = good.x .7lm; y3=h;
+ z4 = (.3lm, h); z5 = (lm, .7h);
+ p = z4{down}..tension2.5..z5;
+ draw p;
+ z8 = p intersectionpoint ((x3,h)--(x3,.5h));
+ hdif := y3-y8;
+ z9 = (x8,.72h-hdif);
+ z11 = (.55lm,.3h-hdif);
+ z12 = (lm,.4h-hdif);
+ vardef dwn(expr y) = xpart direction 1 of (z9{curl0}..tension1.1..
+ (1/2penwd,y)..z11{right}..{curl0}z12) < 0 enddef;
+ z55 = (1/2penwd,solve dwn(y9,y11));
+ draw z8--z9;
+ draw z9{curl0}..tension1.1..z55..z11{right}..{curl0}z12;
+endchar;
+beginchar("\",0,ht#,0); "anusvara";
+% 0x5c
+ pickup frame_pen;
+ z1=(0,1.25h);
+ draw (reverse halfcircle rotated 0 scaled 2usthick shifted z1);
+endchar;
+beginchar("^",0,ht#,.25ht#); "virama";
+% 0x5e
+ pickup frame_pen;
+ z1=(1.35rm,mb-.5h);
+ z2=(0,mb-.3h);
+ draw z1..{left}z2;
+endchar;
+beginchar("_",0,1.5ht#,0); "adhak";
+% 0x5f
+ pickup sub_pen;
+ lm := .7twd;
+ z5=(lm,1.5ht);
+ z6=(.66lm,1.25ht);
+ z7=(0,1.5ht);
+ draw z5..tension1.1..z6{left}..z7;
+endchar;
+beginchar("a",1.45twd#+brm#,ht#,0); "front-a";
+% 0x61
+ italcorr brm#;
+ path p; path q;
+ tframe;
+ pickup frame_pen;
+ z5=(1/2penwd,h);
+ z6=(.2w,.3h);
+ z7=2/3[z5,z6];
+ z8=z7 shifted (.08w,0);
+ z9= (.1w,y6+.1h);
+ p = z5..z8{down}..z6{left}..z9{up};
+ offs=.2w+.1w;
+ z15=(offs+1/2penwd,.8h);
+ z16=(offs+.1w,.1h);
+ z17=2/3[z15,z16];
+ z18=z7 shifted (offs+.08w,0);
+ z19= (offs+.1w,y16+.1h);
+ q = z15..z18{down}..z16{left}..z19{up};
+ z21=(x3,.9h);
+ draw p..z15..q..z21;
+endchar;
+beginchar("b",1.1twd#+brm#,ht#,0); "b";
+% 0x62
+ italcorr brm#;
+ frame;
+ path p;
+ z5=(x3,.5h);
+ z6=(.65x3,.65h);
+ z10=(.18x3,.5h);
+ p=z5{curl0}..z10{up}...{right}z6;
+ draw p;
+ z7= point 1.7 of p;
+ z8=(.26x3,h);
+ vardef yup(expr y)= xpart direction 1 of (z7{curl0}..(1/2penwd,y)..{right}z
+8) < 0
+ enddef;
+ z9=(1/2penwd,solve yup(y7,y8));
+ draw z7{curl0}..z9..{right}z8;
+endchar;
+beginchar("c",1.15twd#+rm#,ht#,0); "c";
+% 0x63
+ italcorr rm#+.5twd#;
+ pickup frame_pen; path p;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ lm := w-rm;
+ x3=good.x .9lm; y3=h;
+ z4=(x3,.66h);
+ z7=(.25w, .6h);
+ x5=x7-3/4penwd; y5 = y4;
+ x6=x7; y6=y4+3/4penwd;
+ z8=(.8lm,1/2penwd);
+ draw z3--z4;
+ draw z4--z5{up}..z6--z7;
+ p = z7{down}..tension.9..{right}z8;
+ draw p{dir-20}..tension5.5..z4;
+endchar;
+beginchar("d",1.15twd#+rm#,ht#,0); "d";
+% 0x64
+ italcorr rm#+.5twd#;
+ pickup frame_pen; path p;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ lm := w-rm;
+ x3=good.x .9lm; y3=h;
+ z4=(x3,.66h);
+ z7=(.25w, .6h);
+ x5=x7-3/4penwd; y5 = y4;
+ x6=x7; y6=y4+3/4penwd;
+ z8=(lm,.1h);
+ draw z3--z4;
+ draw z4--z5{up}..z6--z7;
+ draw z7{down}..tension.95..z8;
+endchar;
+beginchar("f",1.1twd#+brm#,ht#,0); "sh";
+% 0x66
+ italcorr brm#;
+ frame; x5=good.x 3/2penwd; y5=h;
+ z6=(x5,y7-penwd);
+ y7=good.y .35h+penwd; x7=x3;
+ z8=(x6-1/2penwd,y6+1/2penwd);
+ draw z5--z6;
+ draw (reverse halfcircle rotated rot scaled usthick shifted z8)--z7;
+ z11=(.6(w-brm),.5penwd);
+ sqdot(z11);
+endchar;
+beginchar("g",1.1twd#+brm#,ht#,0); "g";
+% 0x67
+ italcorr brm#; path p;
+ frame; z5=(.25(w-brm),h);
+ z6=(x5,.3h);
+ z7=2/3[z5,z6];
+ z8=z7 shifted (.1(w-brm),0);
+ z9= (1/2penwd,y6+.08h);
+ p = z5..z8{down}..z6{left}..z9{up};
+ z10 = point 2.4 of p;
+ draw p..z10;
+endchar;
+beginchar("h",1.1twd#+.5rm#,ht#,0); "h";
+% 0x68
+ pickup frame_pen;
+ z1 = (0,h); z2 = (w,h);
+ z5=(.55w,h);
+ z6=(x5,.2h);
+ z7= (.1w,.45h);
+ draw z1--z2;
+ draw z5--z6{down}..tension1.5..z7;
+endchar;
+beginchar("i",1.15twd#+rm#,ht#,0); "front-i";
+% 0x69
+ italcorr rm#+.5twd#;
+ pickup frame_pen; path p;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ lm := w-rm;
+ x3=good.x .7lm; y3=h;
+ z4=(x3,.66h);
+ z6=(.55lm,.1h);
+ z7=(lm,.2h);
+ draw z3--z4;
+ vardef dwn(expr y) = xpart direction 1 of (z4{curl0}..(1/2penwd,y)
+ ..z6{right}..{curl0}z7) < 0 enddef;
+ z55=(1/2penwd,solve dwn(y4,y6));
+ p = z4{curl0}..z55..z6{right}..{curl0}z7;
+ z56 = point .2 of p;
+ draw p;
+ pickup penrazor scaled subthick;
+ draw (1/2penwd,h)--(x56,y56-1/2penwd);
+endchar;
+beginchar("j",1.1twd#+brm#,ht#,0); "j";
+% 0x6a
+ italcorr brm#;
+ frame;
+ x5=.25w; y5=.1h;
+ x6=x5; y6=good.y .65h;
+ x7=x3; y7=y6-penwd;
+ z8=(x6-penwd,y6-penwd);
+ draw z7--z8{up}..z6--z5;
+endchar;
+beginchar("k",.8twd#+1.5rm#,ht#,0); "k";
+% 0x6b
+ italcorr 1.5rm#;
+ path p;
+ z1=(0,h); z2=(w,h);
+ pickup frame_pen;
+ draw z1--z2;
+ z3=(w-rm,h);
+ z4=(rm,.35h);
+ z5=(rm,.65h);
+ z6=(w-rm,0);
+ draw z3{curl0}..tension1.1..{left}z4{left}..z5;
+ pickup penrazor scaled subthick;
+ draw z5--z6;
+endsav;
+beginchar("l",1.25twd#+rm#,ht#,0); "l";
+% 0x6c
+ path p; path q;
+ lm := (w-rm);
+ z3=(.5lm, .5h);
+ pickup penrazor scaled subthick;
+ p = (.2lm,h)--z3;
+ q = (.8lm,h)--z3;
+ draw p; draw q;
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ z6 = point .7 of p;
+ z7 = point .7 of q;
+ z4 = (.15lm, 1/2penwd);
+ z5 = (.85lm, 1/2penwd);
+ draw z6{left}..z4;
+ draw z7{right}..z5;
+endchar;
+beginchar("m",1.1twd#+brm#,ht#,0); "m";
+% 0x6d
+ italcorr brm#;
+ tframe;
+ z5=(0,h);
+ z6=(3/2penwd+.1twd,.76h);
+ z7=(3/2penwd+.1twd,.34h);
+ z8=(x3,y7+penwd);
+ z9=(x7-1/2penwd,y7+1/2penwd);
+ draw z5{right}..tension.95..z6---z7;
+ draw (reverse halfcircle rotated rot scaled usthick shifted z9)--z8;
+endchar;
+beginchar("n",1.25twd#+rm#,ht#,0); "n";
+% 0x6e
+ path p; path q;
+ lm := (w-rm);
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ z3=(.5lm, h);
+ z4 = (.15lm, 1/2penwd);
+ z5 = (.85lm, 1/2penwd);
+ z6=(.5lm, .7h);
+ draw z4{up}..z6..{down}z5{left};
+ draw z4{right};
+ draw z3--z6;
+endchar;
+beginchar("o",0,1ht#,0); "o";
+% 0x6f
+ pickup frame_pen;
+ z1=(-1.1twd,1.5h);
+ z3=(x1+.9twd-.1brm,h+penwd);
+ x2 = .4 [x1,x3]; y2 = 1.3h;
+ draw z1{down}..z2..{down}z3;
+endchar;
+beginchar("p",1.1twd#+brm#,ht#,0); "p";
+% 0x70
+ italcorr brm#;
+ tframe;
+ z5=(1/2penwd,.55h);
+ z6=(x3,.55h);
+ z7=(.3x3,h);
+ draw z5{dir-70}..tension.95..z6;
+ draw z5{right}..tension.95..z7;
+endchar;
+beginchar("r",1.1twd#+.5rm#,ht#,0); "r";
+% 0x72
+ pickup frame_pen;
+ z1 = (0,h); z2 = (w,h);
+ z5=(.55w,h);
+ z6=(x5,.2h);
+ z7= (.15w,.45h);
+ z8= (x5,y7);
+ draw z1--z2;
+ draw z5--z6{down}..tension1.5..z7{dir10}..tension1.5..z8;
+endchar;
+beginchar("s",1.1twd#+brm#,ht#,0); "s";
+% 0x73
+ italcorr brm#;
+ frame; x5=good.x 3/2penwd; y5=h;
+ z6=(x5,y7-penwd);
+ y7=good.y .35h+penwd; x7=x3;
+ z8=(x6-1/2penwd,y6+1/2penwd);
+ draw z5--z6;
+ draw (reverse halfcircle rotated rot scaled usthick shifted z8)--z7;
+endchar;
+beginchar("t",1.07twd#+rm#,ht#,0); "t";
+% 0x74
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ lm:=w-rm;
+ z3=(.84lm,h); z4=(.4lm,.55h);
+ z5=(.64lm,y4);
+ z6=(x5,1/2penwd);
+ z7=(1/2penwd,.2h);
+ draw z1--z2;
+ draw z4--z5{right}..tension1.1..z3;
+ draw z5..z6{left}..{curl.4}z7;
+endchar;
+beginchar("u",1.07twd#+rm#,ht#,0); "front-u";
+% 0x75
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ lm:=w-rm;
+ z3=(.84lm,h); z4=(.4lm,.55h);
+ z5=(.64lm,y4);
+ z6=(x5,1/2penwd);
+ z7=(1/2penwd,h);
+ x8=.42lm+1/4penwd; y8=1.5h;
+ draw z1--z2;
+ draw z4--z5{right}..tension1.1..z3;
+ draw z5..z6{left}..{curl.4}z7;
+ draw z7{up}..z8..z3;
+endchar;
+beginchar("v",1.15twd#+rm#,ht#,.4ht#); "v";
+% 0x76
+ italcorr rm#+.5twd#; path p;
+ pickup frame_pen;
+ z1=(0,h); z2=(w,h);
+ draw z1--z2;
+ lm := w-rm;
+ x3 = good.x .7lm; y3=h;
+ z4 = (x3,.72h);
+ z6 = (.55lm,.4h);
+ z7 = (.8lm,.45h);
+ draw z3--z4;
+ vardef dwn(expr y) = xpart direction 1 of (z4{curl0}..tension1.1..
+ (1/2penwd,y)..z6{right}..{curl0}z7) < 0 enddef;
+ z55 = (1/2penwd,solve dwn(y4,y6));
+ z8 = (x7, y6);
+ p = z4{curl0}..tension1.1..z55..z6{right}..{curl0}z7;
+ draw p;
+ z9 = p intersectionpoint ((.25lm,.65h)--(.25lm,0));
+ z10 = (x7,penwd);
+ draw z9{down}..tension.95..z10;
+endchar;
+beginchar("w",1.07twd#+rm#,ht#,0); "R";
+% 0x77
+ pickup frame_pen; path p;
+ z1=(0,h); z2=(w,h);
+ lm:=w-rm;
+ z3=(.84lm,h);
+ z4=(.3lm,.65h);
+ z5=(.64lm,y4);
+ draw z1--z2;
+ draw z4--z5{right}..tension1.1..z3;
+ z6=(lm,.47h);
+ z7=(.3lm,.1h);
+ z8=(penwd,.23h);
+ z9=(.5lm,-1/7h);
+ p = z5..{down}z6..tension.9..{left}z7..z8;
+ draw p;
+ draw z8{right}..tension.8..z9;
+% z10=point .97 of p;
+ z10=(.7lm,.1h);
+ z11=(.84lm,y9);
+ draw z10..z11;
+endchar;
+beginchar("y",1.45twd#+brm#,ht#,0); "y";
+% 0x79
+ italcorr brm#;
+ frame; path p;
+ z5=(1/2penwd,.55h);
+ z7=(0,h);
+ draw z5{right}..tension.95..z7;
+ x6 = .6[x5,x3]; y6=.25h;
+ p = z5{dir-70}..tension.95..z6;
+ x8 = x6; y8=.6h;
+ x9 = x3; y9 = y8;
+ draw p--(x6,y8) ;
+ draw z8--z9;
+endchar;
+beginchar("{",.9twd#+brm#,1.5ht#,0); "sup-ai";
+% 0x7b
+ pickup frame_pen;
+ z1=(w-brm,ht+1.5penwd);
+ z2=(0,1.35ht);
+ z3=(penwd,1.55ht);
+ draw z1{curl.5}..{left}z2;
+ draw z1{curl.5}..{left}z3;
+endchar;
+beginchar("}",0,ht#,0); "r-stroke";
+% 0x7d
+ pickup sub_pen;
+ z1= (0,mb-(penwd+3/8uwidth));
+ lft z2= (-1/2uwidth,mb-(penwd+1/8uwidth));
+ z3= (0,mb-penwd);
+ z4= (1/2uwidth,mb-(penwd+1/2uwidth));
+ draw z1..tension1.2..z2..z3..{curl0}z4;
+endsav;
+beginchar(127,.5ht#+2rm#,ht#,0); "abbrev";
+% 0x7f
+ pickup sub_pen;
+ z1=(1/2w,.8h-1/2penwd);
+ draw fullcircle scaled .4h shifted z1;
+endchar;
+ligtable "." : "." =: ";";
+end.
+