summaryrefslogtreecommitdiff
path: root/language/gurmukhi
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /language/gurmukhi
Initial commit
Diffstat (limited to 'language/gurmukhi')
-rw-r--r--language/gurmukhi/pandey/grmk.c984
-rw-r--r--language/gurmukhi/pandey/grmk.sty20
-rw-r--r--language/gurmukhi/pandey/grmkdoc.gm738
-rw-r--r--language/gurmukhi/pandey/ot1pun.fd30
-rw-r--r--language/gurmukhi/pandey/pun10.mf4459
-rw-r--r--language/gurmukhi/pandey/pun10.tfmbin0 -> 916 bytes
-rw-r--r--language/gurmukhi/singh/Readme106
-rw-r--r--language/gurmukhi/singh/bani.gm41
-rw-r--r--language/gurmukhi/singh/copying249
-rw-r--r--language/gurmukhi/singh/defs.mf99
-rw-r--r--language/gurmukhi/singh/eg.gm35
-rw-r--r--language/gurmukhi/singh/env25
-rw-r--r--language/gurmukhi/singh/gmchars.mf1004
-rw-r--r--language/gurmukhi/singh/gmmacs.tex107
-rw-r--r--language/gurmukhi/singh/grmk10.mf24
-rw-r--r--language/gurmukhi/singh/grmk10.tfmbin0 -> 776 bytes
-rw-r--r--language/gurmukhi/singh/grmk12.mf24
-rw-r--r--language/gurmukhi/singh/grmk12.tfmbin0 -> 772 bytes
-rw-r--r--language/gurmukhi/singh/grmk8.mf24
-rw-r--r--language/gurmukhi/singh/grmk8.tfmbin0 -> 776 bytes
-rw-r--r--language/gurmukhi/singh/grmk9.mf24
-rw-r--r--language/gurmukhi/singh/grmk9.tfmbin0 -> 776 bytes
-rw-r--r--language/gurmukhi/singh/gurmukhi.c948
-rw-r--r--language/gurmukhi/singh/install.dos106
-rw-r--r--language/gurmukhi/singh/install.ux68
-rw-r--r--language/gurmukhi/singh/known.prob9
-rw-r--r--language/gurmukhi/singh/manual.gm329
-rw-r--r--language/gurmukhi/singh/manual.ps887
28 files changed, 10340 insertions, 0 deletions
diff --git a/language/gurmukhi/pandey/grmk.c b/language/gurmukhi/pandey/grmk.c
new file mode 100644
index 0000000000..7596d08335
--- /dev/null
+++ b/language/gurmukhi/pandey/grmk.c
@@ -0,0 +1,984 @@
+/***************************************************************************/
+/* */
+/* GRMK.C */
+/* */
+/* Source code for "Gurmukhi for LaTeX" preprocessor. */
+/* */
+/* Based on Revision 1.1 1996/03/05 of skt.c preprocessor developed by */
+/* Charles Wikner <wikner@nacdh4.nac.ac.za> */
+/* */
+/* Modifications to original source for Gurmukhi preprocessor made by */
+/* Anshuman Pandey <apandey@u.washington.edu>, 1999/02/24 */
+/* */
+/***************************************************************************/
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+
+/* DECLARE FUNCTIONS */
+void exit (int);
+void search (void);
+void write_outbuf(void);
+void write_line (char *);
+char * str_find (char *, char *);
+void getline (void);
+char * command (char *);
+void error (char *, int);
+void process (void);
+void chrcat (char *, char);
+void sktcont (void);
+void sktword (void);
+void single (char);
+void frontac (void);
+void sam_warning (void);
+void backac (void);
+void samyoga (void);
+
+FILE *infile, *outfile, *fopen();
+char infilename[80];
+char outfilename[80];
+
+#define TRUE 1
+#define FALSE 0
+
+unsigned char sktline; /* flag TRUE if there is any sanskrit on this line */
+unsigned char sktmode; /* flag TRUE while within {\gm } */
+unsigned char eof_flag; /* flag True when end of file detected */
+unsigned char ac_flag; /* flag TRUE while processing skt vowels */
+unsigned char roman_flag; /* flag TRUE if previous output was Roman string */
+
+int nest_cnt; /* '{' increments, '}' decrements, while in \gm */
+int err_cnt; /* incremented by any error while in \gm */
+#define err_max 10 /* after err_max errors, program aborts */
+int line_cnt; /* line number of current input line */
+
+char inbuf[133]; /* input file line buffer of text being processed */
+char *i_ptr; /* general pointer to input buffer */
+char outbuf[512]; /* output file line buffer of text processed */
+char *o_ptr; /* general pointer to output buffer */
+
+unsigned char cont_end; /* flag TRUE when line ends with %-continuation */
+unsigned char cont_begin; /* flag TRUE when line begins after %-continuation */
+unsigned char hal_flag; /* flag TRUE when hal_type detected in syllable */
+unsigned char accent; /* storage for working accent character */
+unsigned char ac_char; /* storage for working vowel character */
+char sktbuf[255]; /* storage for sanskrit in internal code */
+char *s_ptr; /* general pointer to sanskrit buffer */
+char *old_sptr; /* points to samyoga start; used by warning message */
+char work[80]; /* general scratchpad */
+char *w_ptr; /* general pointer to work buffer */
+char tmp[80]; /* temporary buffer for previous syllable */
+int virama; /* flag to add viraama to samyoga (i.e. no vowel) */
+int hr_flag; /* flag indicates vowel picked up in samyoga (h.r) */
+
+
+/***************************************************************************/
+/* Function: main() */
+/***************************************************************************/
+
+main(argc,argv)
+int argc;
+char *argv[];
+{ char *p; int k;
+
+ /* Initialization */
+
+ sktmode = eof_flag = FALSE;
+ nest_cnt = err_cnt = 0;
+ line_cnt = 0;
+ i_ptr = inbuf; *i_ptr = '\0';
+ s_ptr = sktbuf; *s_ptr = '\0';
+ o_ptr = outbuf; *o_ptr = '\0';
+
+ /* handle command-line options */
+
+ k=0;
+ if (argc>1) strcpy(infilename,argv[1]);
+ if (strcmp(infilename,"-h")==0)
+ { k=1;
+ strcpy(infilename,"");
+ printf("Gurmukhi for TeX, v1.0, 1999.03.02\n");
+ printf("Anshuman Pandey <apandey@u.washington.edu>\n");
+ printf("Syntax: grmk infile[.gm] [outfile.tex]\n");
+ exit(0);
+ }
+
+ /* then get file names */
+ switch(argc-k)
+ { case 3: strcpy(infilename,argv[1+k]);
+ strcpy(outfilename,argv[2+k]);
+ break;
+ case 2: strcpy(infilename,argv[1+k]);
+ strcpy(outfilename,"");
+ break;
+ default: strcpy(infilename,"");
+ while(strlen(infilename) == 0)
+ { printf("Input file: "); gets(infilename); }
+ printf("Output file: ");
+ gets(outfilename);
+ }
+
+ if (strlen(outfilename) == 0)
+ { strcpy (outfilename,infilename); /* default output file name */
+ p = strchr(outfilename,'.');
+ if (p != 0) *p = '\0'; /* delete out file name extension */
+ }
+ p = strchr(infilename,'.');
+ if (p == 0) strcat(infilename,".gm"); /* default input file extension */
+ if ((infile=fopen(infilename,"r")) == NULL)
+ { printf("Cannot open file %s\n",infilename); exit(1); }
+ getline(); if (eof_flag)
+ { printf("Input file %s is empty.\n",infilename); exit(1); }
+ p = strchr(outfilename,'.');
+ if (p == 0)
+ { if (inbuf[0] == '@') strcat(outfilename,".dn");
+ else strcat(outfilename,".tex"); /* set default output file extension */
+ }
+ if ((outfile=fopen(outfilename,"w")) == NULL)
+ { printf("Cannot open output file %s\n",outfilename); exit(1); }
+
+ /* Normal main loop */
+
+ while(eof_flag == 0)
+ { while(!sktmode && !eof_flag) search(); /* search for \gm command */
+ while( sktmode && !eof_flag) process(); /* process bengali text */
+ if (err_cnt >= err_max)
+ { printf("Too many (%d) errors, aborting program\n",err_cnt); break; }
+ }
+ if ((err_cnt < err_max) && (nest_cnt != 0))
+ printf("Brace mismatch within \\gm = %d\n",nest_cnt);
+ fclose(infile);
+ fclose(outfile);
+ exit(1);
+
+}
+
+
+/***************************************************************************/
+/* Function: search() */
+/* */
+/* Search inbuf for '{\gm', getting more input lines as necessary */
+/* until string found or end of file, copying input to output; if */
+/* the string is found but command not recognised, it is treated as */
+/* ordinary text; if valid command i_ptr points to first sanskrit */
+/* char after command, and sets sktmode TRUE. */
+/***************************************************************************/
+
+void search(void)
+{
+unsigned char c;
+char *p,*q;
+ while (eof_flag == 0)
+ { p = str_find(i_ptr,"{\\gm");
+ if (p == 0)
+ { if (sktline == TRUE) { strcat(outbuf,i_ptr); write_outbuf(); }
+ else { write_line(inbuf); o_ptr = outbuf; *o_ptr = '\0'; }
+ getline();
+ continue;
+ }
+ q = i_ptr; i_ptr = p;
+ if ((p = command(p)) == 0) /* test command string \gm */
+ { p = i_ptr; i_ptr = q; /* if bad \gm command */
+ c = *++p; *p = '\0'; /* copy partial line, and search more */
+ strcat(outbuf,i_ptr); *p = c; i_ptr = p; continue;
+ }
+ i_ptr = q;
+ nest_cnt++; c = *p; *p = '\0'; /* skip over '{\gm' */
+ strcat(outbuf,i_ptr); /* append partial line to outbuf */
+ *p = c; i_ptr = p;
+ sktmode = TRUE; sktline = TRUE; /* now comes the fun! */
+ break;
+ }
+}
+
+
+/***************************************************************************/
+/* Function: write_outbuf() */
+/* */
+/* Write outbuf in 80 character lines */
+/***************************************************************************/
+
+void write_outbuf(void)
+{
+char c, d, e;
+ while(1)
+ { c = '\0';
+ if (strlen(outbuf) < 81) { write_line(outbuf); break; }
+ for (o_ptr = outbuf + 78; o_ptr > outbuf + 50; o_ptr--)
+ { if (*o_ptr == ' ') break; }
+ if (*o_ptr != ' ') { for (o_ptr = outbuf+78; o_ptr > outbuf + 50; o_ptr--)
+ if ((*o_ptr=='\\') && (*(o_ptr-1)!='\\')) break;
+ if (o_ptr == outbuf+50) o_ptr = outbuf+78;
+ c = *o_ptr; *o_ptr++ = '%'; d = *o_ptr;
+ }
+ *o_ptr++ = '\n'; e = *o_ptr; *o_ptr = '\0';
+ write_line(outbuf);
+ *o_ptr = e;
+ if (c!='\0') { *--o_ptr = d; *--o_ptr = c; } /* restore displaced chars */
+ strcpy(outbuf,o_ptr);
+ }
+ o_ptr = outbuf;
+ *o_ptr = '\0';
+}
+
+
+/***************************************************************************/
+/* Function: write_line() */
+/* */
+/* Write p-string to output device */
+/***************************************************************************/
+
+void write_line(char *p)
+{
+ if (err_cnt == 0) fputs(p,outfile);
+}
+
+
+/***************************************************************************/
+/* Function: str_find() */
+/* */
+/* Find first occasion of string *str within *buf before '%' char; */
+/* return pointer first char of str within buf, else 0. */
+/***************************************************************************/
+
+char * str_find(char *buf, char *str)
+{ char *p, *x;
+ p = strstr(buf,str);
+ if (p == 0) return(0);
+ x = strchr(buf,'%');
+ if ((x != 0) && (p > x)) return(0);
+ return(p);
+}
+
+
+/***************************************************************************/
+/* Function: getline() */
+/* */
+/* Get another line from input file; reset i_ptr, increments */
+/* line_cnt, and sets eof_flag if EOF. */
+/***************************************************************************/
+
+void getline(void)
+{
+char *p;
+ i_ptr = inbuf;
+ *i_ptr = '\0';
+ line_cnt++;
+ if (fgets(inbuf,133,infile) == NULL) eof_flag = TRUE;
+ if (sktmode == FALSE) sktline = FALSE;
+}
+
+
+/***************************************************************************/
+/* Function: command() */
+/* */
+/* Check for valid \gm command; if invalid command, print error message */
+/***************************************************************************/
+
+char * command(char *p)
+{ p += 4; /* skip over '{\gm' */
+ if (*p++ != ' ') p = 0;
+ if (p == 0) error("Unrecognised command string",7);
+ return(p);
+}
+
+
+/***************************************************************************/
+/* Function: error() */
+/* */
+/* Print out error message, including string *s and 'n' characters */
+/* of inbuf. */
+/***************************************************************************/
+
+void error(char *s, int n)
+{ char err_str[80]; int j;
+ if (++err_cnt <= err_max)
+ { if (n > 0) { for (j=0; j<n; j++) err_str[j] = *(i_ptr+j);
+ err_str[j] = '\0';
+ }
+ if (n == 0) { strcpy(err_str,"oct(");
+ chrcat(err_str,'0' + (*i_ptr/64));
+ chrcat(err_str,'0' + (*i_ptr/8));
+ chrcat(err_str,'0' + (*i_ptr & 7));
+ strcat(err_str,")");
+ }
+ if (n < 0) { err_str[0] = '\0'; }
+ }
+ printf("Line %4d Error: %s %s\n",line_cnt,s,err_str);
+}
+
+
+/***************************************************************************/
+/* Function: process() */
+/* */
+/* Process input text within {\gm, converting to internal format in sktbuf */
+/***************************************************************************/
+
+#define ISAC(c) (((strchr("aAiIuUeEoO",c) != 0) && c) ? TRUE : FALSE)
+
+/* wWX removed from the definition of ISAC above (.R .l .L) */
+
+void process(void)
+{ int cap_flag, underscore;
+unsigned char *i, c, d;
+#define CF ac_flag=underscore=cap_flag=roman_flag=FALSE
+#define CC CF; continue
+#define CR ac_flag=underscore=cap_flag=FALSE;
+#define CI i_ptr++; CC
+
+ CF;
+ while(1)
+ { if (eof_flag) return;
+ if (err_cnt >= err_max)
+ { sktmode = FALSE; return; }
+ c = *i_ptr; d = *(i_ptr+1);
+
+/* END OF LINE */
+ if ((c == '\0') || (c == '\n'))
+ { sktword(); strcat (outbuf,i_ptr); write_outbuf(); getline(); CC; }
+
+
+/* IMBEDDED ROMAN */
+/* if (strchr("!'()*+,-/:;=?[]`",c) || ((c == '.') && (*(i_ptr+1) == '.')))
+ { if (c == '.') i_ptr++;
+ if (sktbuf[0]) { sktword(); }
+ while(1) */
+
+ if (strchr("!'()*+,-/:;=?[]`",c))
+ { if (sktbuf[0]) { sktword(); }
+ while(1)
+
+ { chrcat(outbuf,c); c = *++i_ptr;
+ if (c == '.')
+ { if (*(i_ptr+1) != '.') break;
+ i_ptr++; continue;
+ }
+ if ((strchr("!'()*+,-/:;=?[]`",c) && c) == 0) break;
+ }
+ CR; continue;
+ }
+
+/* ILLEGAL CHARS */
+ if (strchr("_$qwxBCDEFJLNOPQSVWXYZ\177",c))
+ { error("Illegal Gurmukhi character: ",1); CI; }
+ if (c>127) { error("Invalid character >80H: ",1); CI; }
+/*?? Since we are now case sensitive (unlike skt), the list of */
+/*?? illegal chars has been increased (_ added, and & removed) */
+
+/* CONTROL CHARACTERS */
+ if (c < ' ')
+ { error("Illegal control character: ",0); CI; }
+
+/* IMBEDDED LATEX COMMAND STRINGS */
+ if (c == '\\')
+ { if (d == '-') /* imbedded discretionary hyphen */
+ { strcat(sktbuf,"!"); i_ptr++; CI; }
+ sktword();
+ if (isalpha(d) == 0)
+ { chrcat(outbuf,c); chrcat(outbuf,*++i_ptr); CI; }
+ else
+ { while (1)
+ { chrcat(outbuf,c); c = *++i_ptr; if (isalpha(c) == 0) break; }
+ }
+ CC;
+ }
+
+/* SPACE CHAR */
+ if (c == ' ')
+ { sktword(); while(*++i_ptr == ' '); chrcat(outbuf,c); CC;
+ }
+/*?? slight change here, since underscore is now an illegal character */
+
+/* COMMENT DELIMITER */
+ if (c == '%')
+ { if (*(i_ptr+1) == '\n') sktcont();
+ else sktword();
+ strcat(outbuf,i_ptr); write_outbuf(); getline(); CC;
+ }
+
+/* BRACES */
+ if (c == '{') { if (d == '}') { i_ptr++; CI; } /* for words like pra{}uga */
+ else { nest_cnt++; sktcont(); chrcat(outbuf,c); CI; }
+ }
+ if (c == '}')
+ { sktword(); chrcat(outbuf,c);
+ if (--nest_cnt == 0)
+ { sktmode = FALSE;
+ i_ptr++; return;
+ }
+ else CI;
+ }
+
+/* UPPER CASE */
+ if (isupper(c))
+ { switch (c)
+ { case 'A':
+ case 'I':
+ case 'U':
+ case 'H': break;
+ case 'M': c = '\\'; break;
+ case 'K': c = 'L'; break;
+ case 'R': c = 'w'; break;
+ case 'G': c = 'W'; break;
+ default: c = '*'; break;
+ }
+ if (c=='*') { error("Invalid upper case: ",1); CI; }
+ }
+/*?? big change with that code: the upper case has a different *meaning* than */
+/*?? the lower case: fortunately, AIUMH are the same as the internal code :-) */
+
+/* DOT_CHAR */
+ if (c == '.') { switch(d)
+ { case 'd': c = 'q'; break;
+ case 'h': c = 'H'; break;
+ case 'm': c = 'M'; break;
+ case 'n': c = 'N'; break;
+ case 'o': c = '%'; break;
+ case 't': c = 'x'; break;
+ case '.': c = '@'; break;
+ case ' ': c = '|'; break; /* following space */
+ case '\\': c = '|'; break; /* following LaTeX command */
+ case '}': c = '|'; break; /* following brace */
+ case '\0': c = '|'; break; /* end of line */
+ case '\n': c = '|'; break; /* end of line */
+ }
+ if (c=='.') { error("Invalid dot_character: ",2); CI; }
+ if (c!='|') { i_ptr++; d = *(i_ptr+1);}
+ }
+
+/* NEXT CHAR IS H */
+ if (d=='h')
+ { if (strchr("bcdgjkptqx",c)) { c=toupper(c); i_ptr++; d=*(i_ptr+1); }
+ }
+
+/* The upper/lowercase stuff removed: a following 'h' converts a consonant */
+/* to its upper case internal code, e.g th --> T. Note that 'w' is added */
+/* to the list for R Rh */
+
+/* QUOTE CHAR */
+ if (c == '\"') { switch(d)
+ { case 'n': c = 'Y'; break;
+ case 's': c = 'Z'; break;
+ }
+ if (c=='\"') { error("Invalid quote_character",2); CI; }
+ i_ptr++; d = *(i_ptr+1);
+ }
+/*?? "d and "h removed */
+
+/* TILDE CHAR */
+ if (c == '~') { switch (d)
+ { case 'n': c = 'V'; break;
+ default : c = '*'; break;
+ }
+ if (c=='*')
+ { error("Invalid use of tilde character: ",2); CI; }
+ i_ptr++; d = *(i_ptr+1);
+ }
+
+/* TWO CHAR VOWELS */
+ if ( strchr("aiu",c) && strchr("aiu",d) )
+ { switch(c)
+ { case 'a': switch(d)
+ { case 'a': c = 'A'; break;
+ case 'i': c = 'E'; break;
+ case 'u': c = 'O'; break;
+ } break;
+ case 'i': if (d=='i') c = 'I'; break;
+ case 'u': if (d=='u') c = 'U'; break;
+ }
+ if (isupper(c)) { i_ptr++; d = *(i_ptr+1); }
+ }
+/*?? all the upper/lowercase stuff removed */
+
+/* NOW CHAR SHOULD BE INTERNAL REPRESENTATION OF SANSKRIT CHAR */
+ if ( ((c=='\\' || c=='M') && !(ac_flag)) ) {
+ i_ptr -=2; error("No vowel before nasal: ",3); i_ptr +=2; CF;
+ }
+
+ if (c=='H' && !(ac_flag)) {
+ i_ptr -=2; error("No vowel before visarga: ",3); i_ptr +=2; CF;
+ }
+
+ chrcat(sktbuf,c);
+ CR;
+ if (ISAC(c)) ac_flag = TRUE;
+ i_ptr++;
+ }
+}
+/*?? all the tests for (semi-)vowel nasalization and accents removed */
+
+#undef CI;
+#undef CC;
+#undef CR;
+#undef CF;
+
+
+/***************************************************************************/
+/* Function: chrcat() */
+/* */
+/* Append character c to end of buffer s */
+/***************************************************************************/
+
+void chrcat(char *s, char c)
+{ char temp[] = " "; temp[0] = c; strcat(s,temp);
+}
+
+
+/***************************************************************************/
+/* Function: sktcont() */
+/* */
+/* Similar to sktword() but used where input text line ends in '%' to */
+/* cotinue on next line. */
+/***************************************************************************/
+
+void sktcont(void)
+{
+ cont_end = TRUE; sktword();
+ cont_end = FALSE; cont_begin = TRUE;
+}
+
+
+/***************************************************************************/
+/* Function: sktword() */
+/* */
+/* Convert contents of sktbuf to output string in outbuf */
+/***************************************************************************/
+
+/* internal code for consonants */
+static char hal_chars[] = "BCDGJKLNPQRTVWXYZbcdfghjklmnpqrstvwxyz";
+
+#define ISHAL(c) (((strchr(hal_chars,c) != 0) && c) ? TRUE : FALSE)
+
+#define CLRFLAGS virama=hal_flag=0
+
+#define CAT(w,x,z) \
+strcat(w,x); strcat(w,z)
+
+void sktword(void)
+{ char c;
+ if (roman_flag && sktbuf[0]) { strcat(outbuf,"\\,"); roman_flag = FALSE; }
+
+/* A word is built up one syllable at a time: a syllable typically comprises */
+/* a consonant (or samyoga) followed by a vowel (with its nasalisation and */
+/* accents). If there is no consonant, then a front-vowel is output; if there */
+/* is no vowel, then a viraama is appended to the consonant/samyoga. */
+/* One effect of this is that, if a consonant cluster is not fully resolved */
+/* into a single samyoga, it will be treated as two syllable: in particular, */
+/* the hook of the short-i will span one samyoga only. */
+/* */
+/* The `work' buffer is used as a scratchpad while building a syllable; on */
+/* completion it is stored in the `tmp' buffer before shipping to the output */
+/* buffer. This temporary storage while working on the next syllable, allows */
+/* changes to the back spacing of the previous syllable for more effiecient */
+/* output. */
+
+ CLRFLAGS;
+ s_ptr = sktbuf; c = *s_ptr;
+ if (c == '\0') return;
+ *tmp = '\0'; *work = '\0';
+ while (1)
+ { CLRFLAGS; /* in particular, need to clear hal_flag for the likes of kara */
+ c= *s_ptr++;
+ if (c == '\0')
+ { if (*tmp) { if (outbuf[0]=='\0' && tmp[0]=='[') strcat(outbuf,"{}");
+ strcat(outbuf,tmp);
+ }
+ break;
+ }
+ if (ISAC(c))
+ { ac_char = c;
+ frontac();
+ if (*tmp) { if (outbuf[0]=='\0' && tmp[0]=='[') strcat(outbuf,"{}");
+ strcat(outbuf,tmp);
+ }
+ strcpy(tmp,work);
+ *work = '\0'; cont_begin = 0;
+ continue;
+ }
+ if (strchr("0123456789\"!%|\\@~HM",c))
+ { single(c);
+ if (*tmp) { if (outbuf[0]=='\0' && tmp[0]=='[') strcat(outbuf,"{}");
+ strcat(outbuf,tmp);
+ }
+ strcpy(tmp,work);
+ *work = '\0'; cont_begin = 0;
+ continue;
+ }
+ s_ptr--;
+ old_sptr = s_ptr; /* save pointer to start of samyoga */
+ if (ISHAL(c)) { hal_flag = TRUE; samyoga(); c = *s_ptr; }
+ ac_char = virama = 0;
+ if (!hr_flag) { if (ISAC(c)) { ac_char = *s_ptr++; }
+ else virama = TRUE; /* hr_flag = h.r parsed by samyoga */
+ }
+ backac(); hr_flag = FALSE;
+ if (*tmp) { if (outbuf[0]=='\0' && tmp[0]=='[') strcat(outbuf,"{}");
+ strcat(outbuf,tmp);
+ }
+ strcpy(tmp,work);
+ *work = '\0'; cont_begin = FALSE;
+
+ }
+ strcat(outbuf,work);
+ s_ptr = sktbuf; *s_ptr = '\0';
+ cont_begin = 0;
+}
+
+
+/***************************************************************************/
+/* Function: single() */
+/* */
+/* Output single (stand-alone) character to work buffer */
+/***************************************************************************/
+
+void single(char c)
+{
+ switch(c)
+ { case '0': strcat(work,"0"); break; /* numerals */
+ case '1': strcat(work,"1"); break;
+ case '2': strcat(work,"2"); break;
+ case '3': strcat(work,"3"); break;
+ case '4': strcat(work,"4"); break;
+ case '5': strcat(work,"5"); break;
+ case '6': strcat(work,"6"); break;
+ case '7': strcat(work,"7"); break;
+ case '8': strcat(work,"8"); break;
+ case '9': strcat(work,"9"); break;
+ case '!': strcat(tmp,"\\-"); break; /* discretionary hyphen */
+ case '%': strcat(work,"{\\char35}"); break; /* pra.nava */
+ case '|': strcat(work,"."); break; /* single danda */
+ case '@': strcat(work,"|"); break; /* double danda */
+ case '\\': strcat(work,"{\\kern-1.8pt:}"); break; /* candrabindu */
+ case 'H': strcat(work,"{\\char92}"); break; /* visarga */
+ case 'M': strcat(work,"{\\tpp}"); break; /* anusvara */
+ }
+}
+
+
+/***************************************************************************/
+/* Function: frontac() */
+/* */
+/* Process a front-vowel to workbuf */
+/***************************************************************************/
+
+void frontac(void)
+{
+ CLRFLAGS;
+ switch(ac_char)
+ { case 'a': strcat(work,"a"); break;
+ case 'A': strcat(work,"aA"); break;
+ case 'i': strcat(work,"ie"); break;
+ case 'I': strcat(work,"eI"); break;
+ case 'u': strcat(work,"uU"); break;
+ case 'U': strcat(work,"u<"); break;
+ case 'e': strcat(work,"eE"); break;
+ case 'E': strcat(work,"a>"); break;
+ case 'o': strcat(work,"o"); break;
+ case 'O': strcat(work,"aO"); break;
+ default : error("Lost in frontac()",-1);
+ }
+}
+
+
+/***************************************************************************/
+/* Function: sam_warning() */
+/* */
+/* Print a warning message that a virama will be used within a */
+/* samyoga. Also print input file line number, together with an */
+/* indication of the samyoga and where the viraama will be placed. */
+/***************************************************************************/
+
+void sam_warning(void)
+{
+ char *p, msg[80]="";
+ p = old_sptr;
+
+ while (ISHAL(*p))
+ { switch (*p)
+ { case 'B': strcat(msg,"bh"); break;
+ case 'C': strcat(msg,"ch"); break;
+ case 'D': strcat(msg,"dh"); break;
+ case 'G': strcat(msg,"gh"); break;
+ case 'H': strcat(msg,".h"); break;
+ case 'J': strcat(msg,"jh"); break;
+ case 'K': strcat(msg,"kh"); break;
+ case 'L': strcat(msg,"K"); break;
+ case 'P': strcat(msg,"ph"); break;
+ case 'T': strcat(msg,"th"); break;
+ case 'x': strcat(msg,".t"); break;
+ case 'X': strcat(msg,".th"); break;
+ case 'N': strcat(msg,".n"); break;
+ case 'q': strcat(msg,".d"); break;
+ case 'Q': strcat(msg,".dh"); break;
+ case 'f': strcat(msg,"f"); break;
+ case 'V': strcat(msg,"~n"); break;
+ case 'w': strcat(msg,"R"); break;
+ case 'W': strcat(msg,"G"); break;
+ case 'z': strcat(msg,"z"); break;
+ case 'Y': strcat(msg,"\"n"); break;
+ case 'Z': strcat(msg,"\"s"); break;
+ case 'r': strcat(msg,"r"); break;
+ default: chrcat(msg,*p); break;
+ }
+ if (++p == s_ptr) strcat(msg,"-");
+ }
+ if (ISAC(*p))
+ { switch (*p)
+ { /* case 'w': strcat(msg,".l"); break; */
+ default: chrcat(msg,*p); break;
+ }
+ }
+ printf("Line %4d Warning: samyoga viraama: %s\n",line_cnt,msg);
+}
+
+/***************************************************************************/
+/* Function: backac() */
+/* */
+/* Process vowel diacritics */
+/***************************************************************************/
+
+void backac(void)
+{ int j,k; char c, *p;
+
+c = ac_char;
+
+if (ac_char == 'A') { strcat(work,"A");} /* add aa-dia */
+if (ac_char == 'i') { CAT(tmp,"i",""); } /* add i-dia */
+if (ac_char == 'I') { strcat(work,"I"); } /* add ii-dia */
+if (ac_char == 'u') { strcat(work,"U");} /* add u-dia */
+if (ac_char == 'U') { strcat(work,"<");} /* add uu-dia */
+if (ac_char == 'e') { strcat(work,"E"); } /* add e-dia */
+if (ac_char == 'E') { strcat(work,">"); } /* add ai-dia */
+if (ac_char == 'o') { strcat(work,"{\\char126}");} /* add o-dia */
+if (ac_char == 'O') { strcat(work,"O");} /* add au-dia */
+
+/* if (virama) { strcat(work,"\\30Cz"); } /* add virama */
+
+}
+
+/***************************************************************************/
+/* Function: samyoga() */
+/* */
+/* Work along sktbuf sequentially to build up a samyoga print */
+/* string in the work buffer and update the samyoga parameters. */
+/* */
+/* The method is quite unsophisticated, but its simplicity lends */
+/* clarity for later additions or changes, and for this reason */
+/* is done in Devanagari alphabetical order, but with longer */
+/* strings before shorter. */
+/* */
+/* Macros are used to simplify reading the program --- believe it or not! */
+/* */
+/* Switch/case is used on the first letter, then the main LS macro tests: */
+/* (1) if the test string matches the input exactly, then */
+/* (2) bump input pointer to the character after string match */
+/* (3) use NX macro to break out of switch instruction */
+/***************************************************************************/
+
+
+#define LS(a,c,z) n=strlen(a); \
+ if(strncmp(p,a,n)==0) { strcat(work,z); p+=n; c;}
+
+#define NX sam_flag = 'X'; break;
+
+/******************************************************************************/
+
+void samyoga(void)
+{
+char *p, sam_flag; int n;
+ sam_flag = 0;
+ p = s_ptr;
+ while (1)
+ { if (!ISHAL(*p)) { NX; }
+ switch (*p++)
+ {
+
+ /* k */
+ case 'k': LS("k", NX, "{\\adk}c");
+ LS("K", NX, "{\\adk}K");
+ LS("r", NX, "cq");
+ strcat(work,"c"); break;
+
+ /* kh */
+ case 'K': LS("y", NX, "kw");
+ strcat(work,"k"); break;
+
+ /* g */
+ case 'g': LS("g", NX, "{\\adk}g");
+ LS("G", NX, "{\\adk}G");
+ LS("r", NX, "gq");
+ strcat(work,"g"); break;
+
+ /* gh */
+ case 'G': strcat(work,"G"); break;
+
+ /* "n */
+ case 'Y': if(*p=='g' && *(p+1)=='i')
+ {p+=2; strcat(work,"{\\tpp}ig");NX;}
+ LS("k", NX, "{\\tpp}c");
+ LS("K", NX, "{\\tpp}k");
+ LS("g", NX, "{\\tpp}g");
+ LS("G", NX, "{\\tpp}G");
+ strcat(work,"L"); break;
+
+ /* c */
+ case 'c': LS("c", NX, "{\\adk}C");
+ LS("C", NX, "{\\adk}x");
+ strcat(work,"C"); break;
+
+ /* ch */
+ case 'C': strcat(work,"x"); break;
+
+ /* j */
+ case 'j': LS("j", NX, "{\\adk}j");
+ LS("J", NX, "{\\adk}J");
+ strcat(work,"j"); break;
+
+ /* jh */
+ case 'J': strcat(work,"J"); break;
+
+ /* ~n */
+ case 'V': LS("c", NX, "{\\tpp}C");
+ LS("C", NX, "{\\tpp}x");
+ LS("j", NX, "{\\tpp}j");
+ LS("J", NX, "{\\tpp}J");
+ strcat(work,"M"); break;
+
+ /* .t */
+ case 'x': LS("x", NX, "{\\adk}t");
+ LS("X", NX, "{\\adk}T");
+ strcat(work,"t"); break;
+
+ /* .th */
+ case 'X': strcat(work,"T"); break;
+
+ /* .da */
+ case 'q': LS("q", NX, "{\\adk}D");
+ LS("Q", NX, "{\\adk}Q");
+ strcat(work,"D"); break;
+
+ /* .dh */
+ case 'Q': strcat(work,"Q"); break;
+
+ /* .n */
+ case 'N': LS("x", NX, "{\\tpp}t");
+ LS("X", NX, "{\\tpp}T");
+ LS("q", NX, "{\\tpp}D");
+ LS("Q", NX, "{\\tpp}Q");
+ strcat(work,"N"); break;
+
+ /* t */
+ case 't': LS("t", NX, "{\\adk}V");
+ LS("T", NX, "{\\adk}W");
+ LS("r", NX, "Vq");
+ strcat(work,"V"); break;
+
+ /* th */
+ case 'T': strcat(work,"W"); break;
+
+ /* d */
+ case 'd': LS("d", NX, "{\\adk}d");
+ LS("D", NX, "{\\adk}Y");
+ LS("y", NX, "dw");
+ LS("r", NX, "dq");
+ LS("v", NX, "dX");
+ strcat(work,"d"); break;
+
+ /* dh */
+ case 'D': strcat(work,"Y"); break;
+
+ /* n */
+ case 'n': if(*p=='n' && *(p+1)=='i')
+ {p+=2; strcat(work,"i{\\tpt}n");NX;}
+ LS("t", NX, "{\\tpp}V");
+ LS("T", NX, "{\\tpp}W");
+ LS("d", NX, "{\\tpp}d");
+ LS("D", NX, "{\\tpp}Y");
+ LS("n", NX, "{\\tpp}n");
+ LS("h", NX, "nH");
+ strcat(work,"n"); break;
+
+ /* p */
+ case 'p': LS("p", NX, "{\\adk}p");
+ LS("P", NX, "{\\adk}f");
+ LS("r", NX, "pq");
+ strcat(work,"p"); break;
+
+ /* ph */
+ case 'P': strcat(work,"f"); break;
+
+ /* b */
+ case 'b': LS("b", NX, "{\\adk}b");
+ LS("B", NX, "{\\adk}B");
+ LS("r", NX, "bq");
+ strcat(work,"b"); break;
+
+ /* bh */
+ case 'B': strcat(work,"B"); break;
+
+ /* m */
+ case 'm': if(*p=='m' && *(p+1)=='i')
+ {p+=2; strcat(work,"i{\\tpt}m");NX;}
+ LS("p", NX, "{\\tpp}p");
+ LS("P", NX, "{\\tpp}f");
+ LS("b", NX, "{\\tpp}b");
+ LS("B", NX, "{\\tpp}B");
+ LS("m", NX, "{\\tpp}m");
+ LS("r", NX, "mq");
+ strcat(work,"m"); break;
+
+ /* y */
+ case 'y': strcat(work,"y"); break;
+
+ /* r */
+ case 'r': LS("h", NX, "rH");
+ strcat(work,"r"); break;
+
+ /* l */
+ case 'l': LS("l", NX, "{\\adk}l");
+ LS("h", NX, "lH");
+ strcat(work,"l"); break;
+
+ /* v */
+ case 'v': LS("h", NX, "vH");
+ strcat(work,"v"); break;
+
+ /* "s */
+ case 'Z': strcat(work,"S"); break;
+
+ /* s */
+ case 's': LS("s", NX, "{\\adk}s");
+ LS("v", NX, "sX");
+ strcat(work,"s"); break;
+
+ /* h */
+ case 'h': strcat(work,"h"); break;
+
+ /* K */
+ case 'L': strcat(work,"K"); break;
+
+ /* G */
+ case 'W': strcat(work,"Z"); break;
+
+ /* z */
+ case 'z': strcat(work,"z"); break;
+
+ /* R */
+ case 'w': LS("h", NX, "RH");
+ strcat(work,"R"); break;
+
+ /* f */
+ case 'f': strcat(work,"F"); break;
+
+ default: error("Lost in samyoga()",-1); NX;
+ }
+
+ if (sam_flag == 'X') { s_ptr = p; break; }
+ if (!ISHAL(*p)) { s_ptr = p; break; }
+ }
+}
+
+/***************************************************************************/
+/* samapta */
+/***************************************************************************/
diff --git a/language/gurmukhi/pandey/grmk.sty b/language/gurmukhi/pandey/grmk.sty
new file mode 100644
index 0000000000..c3661b38e8
--- /dev/null
+++ b/language/gurmukhi/pandey/grmk.sty
@@ -0,0 +1,20 @@
+% grmk.sty v1.0
+%
+% LaTeX2e style file for Gurmukhi for TeX package
+%
+% Author : Anshuman Pandey <apandey@u.washington.edu>
+% Date : 24 February 1999
+%
+
+\DeclareFontSubstitution{OT1}{pun}{m}{n}
+\newcommand{\gm}{%
+ \usefont{OT1}{pun}{m}{n}%
+ \baselineskip1.27\baselineskip
+}%
+
+\newcommand{\smkanda}{{\char64}}
+\newcommand{\lgkanda}{{\char141}}
+\newcommand{\ekonkarf}{{\char139}}
+\newcommand{\ekonkarp}{{\char140}}
+\newcommand{\adk}{{\char38\kern-.1ex}}
+\newcommand{\tpp}{{\kern-.2ex\char94\kern.2ex}}
diff --git a/language/gurmukhi/pandey/grmkdoc.gm b/language/gurmukhi/pandey/grmkdoc.gm
new file mode 100644
index 0000000000..e0b35a25c9
--- /dev/null
+++ b/language/gurmukhi/pandey/grmkdoc.gm
@@ -0,0 +1,738 @@
+\documentclass[11pt,titlepage]{article}
+\usepackage{grmk, multicol, mflogo}
+
+\def\portraitpage{%
+ \setlength{\topmargin}{-0.50in} % real margin == this + 1in
+ \setlength{\oddsidemargin}{-0.0in} % real margin == this + 1in
+ \setlength{\evensidemargin}{-0.0in} % real margin == this + 1in
+ \setlength{\columnsep}{20pt}
+ \setlength{\columnseprule}{0.4pt}
+
+ % Use Portrait Size Page
+ \setlength{\textwidth}{6.5in}
+ \setlength{\textheight}{9.0in}%
+}
+\portraitpage
+
+\newcommand{\moddate}{03 March 1999}
+\newcommand{\version}{1.0}
+
+\begin{document}
+\title{{\LARGE \bfseries Gurmukh{\=\i} for \TeX{}} \\
+ Version \version{}}
+\author{\Large Anshuman Pandey}
+\date{\large \moddate{}}
+\maketitle
+\vfill
+\newpage
+
+\section{Introduction}
+This document explains the \emph{Gurmukh{\=\i} for \TeX{}}
+{\sf gurmukhi} package for typesetting Panjabi language documents
+in \TeX{} and \LaTeX{}.
+
+The `Punjabi' ({\tt pun}) font used by the package was designed by,
+and is copyright \textcopyright{} Hardip Singh Pannu. I received
+permission from Mr. Pannu to use the `Punjabi' font with this
+package. The \MF{} source was derived from Mr. Pannu's TrueType
+version of `Punjabi' with the {\sf ttf2mf} package. Please respect
+his generosity by not modifying the font or making derivatives of
+it, and by not unbundling it from the package. I hope to
+eventually create a `true' \MF{} for the Gurmukh{\=\i} script.
+
+\section{Implementation}
+The delimiter \verb+{\+\verb+gm+ \ldots \verb+}+ are to be used to
+encode Gurmukh{\=\i} text. In the preamble of the document, the
+{\sf grmk} style file must be declared: \verb+\usepackage{grmk}+.
+
+The transliterated Panjabi text is to then be placed within the
+delimiters. The file is then to be run through the preprocessor:
+
+\centerline{{\tt grmk} \emph{x}[{\tt.gm}] \emph{y}[{\tt .tex}]}
+
+\section{Transliterated Input}
+The transliteration scheme for the {\sf gurmukhi} package follows
+the scheme developed by Frans Velthuis for his \emph{Devan\=agar{\=\i}
+for \TeX{}} package. Many Gurmukh{\=\i} nuances are handled implicitly
+by the preprocessor. These are illustrated below:
+
+
+\subsection{Use of \emph{addak}}
+In Gurmukh{\=\i} geminate consonants are not written twice or with
+consonant conjuncts. Rather, the first letter is dropped and only the
+second letter is written, and a diacritic mark called \emph{addak}
+is placed above the preceding letter, ie {\gm hattha} {\tt hattha}.
+This is handled by the preprocessor. It is unnecessary for
+hard-code for \emph{addak}.
+
+When the geminate consonants are \emph{nn} or \emph{mm}, a sign called
+\emph{\d{t}ipp{\=\i}} is used instead of \emph{addak}, ie.
+{\gm lammii} \emph{lamm{\=\i}}. {\it \d{T}ipp{\=\i}\/} is one of the
+nasalization diacritics.
+
+The following is a list of supported geminated consonants:
+
+{\parindent=0pt
+\begin{multicols}{4}
+{\tt k} $+$ {\tt ka} $=$ {\gm kka} \\
+{\tt k} $+$ {\tt kha} $=$ {\gm kkha} \\
+{\tt g} $+$ {\tt ga} $=$ {\gm gga} \\
+{\tt g} $+$ {\tt gha} $=$ {\gm ggha} \\
+{\tt c} $+$ {\tt ca} $=$ {\gm cca} \\
+{\tt c} $+$ {\tt cha} $=$ {\gm ccha} \\
+{\tt j} $+$ {\tt ja} $=$ {\gm jja} \\
+{\tt j} $+$ {\tt jha} $=$ {\gm jjha} \\
+{\tt T} $+$ {\tt Ta} $=$ {\gm .t.ta} \\
+{\tt T} $+$ {\tt Tha} $=$ {\gm .t.tha} \\
+{\tt D} $+$ {\tt Da} $=$ {\gm .d.da} \\
+{\tt D} $+$ {\tt Dha} $=$ {\gm .d.dha} \\
+{\tt t} $+$ {\tt ta} $=$ {\gm tta} \\
+{\tt t} $+$ {\tt tha} $=$ {\gm ttha} \\
+{\tt d} $+$ {\tt da} $=$ {\gm dda} \\
+{\tt d} $+$ {\tt dha} $=$ {\gm ddha} \\
+{\tt n} $+$ {\tt na} $=$ {\gm nna} \\
+{\tt p} $+$ {\tt pa} $=$ {\gm ppa} \\
+{\tt p} $+$ {\tt pha} $=$ {\gm ppha} \\
+{\tt b} $+$ {\tt ba} $=$ {\gm bba} \\
+{\tt b} $+$ {\tt bha} $=$ {\gm bbha} \\
+{\tt m} $+$ {\tt ma} $=$ {\gm mma} \\
+{\tt l} $+$ {\tt la} $=$ {\gm lla} \\
+{\tt s} $+$ {\tt sa} $=$ {\gm ssa}
+\end{multicols}
+}
+
+\subsection{Nasalization}
+Nasalization in Gurmukh{\=\i} is indicated by two
+diacritics called {\it \d{t}ipp{\=\i}\/} and {\it bind{\=\i}\/}.
+These are coded {\tt .m} and {\tt M}, respectively.
+
+{\it \d{T}ipp{\=\i}\/} is used with the vowels {\it a\/}, {\it i\/},
+and {\it u\/}, and with {\it \=u\/} when it is in word-final
+position, ie. {\gm mu.n.daa} \ {\tt mu.n.daa}. {\it Bind{\=\i}\/}
+is used with all other vowels, ie. {\gm "saaMt} \ {\tt "saaMt}.
+
+Words like {\gm a"nga} \ may either be encoded \verb+a"nga+ or
+\verb+a.mga+. In either case, the preprocessor will produce the correct
+output.
+
+\subsection{Consonant conjuncts}
+Consonsant conjuncts are limited in Gurmukh{\=\i}
+and are much simpler than those of Devan\=agar{\=\i}. The conjunct
+consonants supported in the IFM are:
+
+\begin{center}
+{\parindent=0pt
+\begin{multicols}{5}
+{\tt k} + {\tt ra} $=$ {\gm kra} \\
+{\tt kh} + {\tt ya} $=$ {\gm khya} \\
+{\tt g} + {\tt ra} $=$ {\gm gra} \\
+{\tt t} + {\tt ra} $=$ {\gm tra} \\
+{\tt d} + {\tt ya} $=$ {\gm dya} \\
+{\tt d} + {\tt ra} $=$ {\gm dra} \\
+{\tt d} + {\tt va} $=$ {\gm dva} \\
+{\tt n} + {\tt ha} $=$ {\gm nha} \\
+{\tt p} + {\tt ra} $=$ {\gm pra} \\
+{\tt b} + {\tt ra} $=$ {\gm bra} \\
+{\tt m} + {\tt ra} $=$ {\gm mra} \\
+{\tt r} + {\tt ha} $=$ {\gm rha} \\
+{\tt l} + {\tt ha} $=$ {\gm lha} \\
+{\tt v} + {\tt ha} $=$ {\gm vha} \\
+{\tt R} + {\tt ha} $=$ {\gm Rha} \\
+{\tt s} + {\tt va} $=$ {\gm sva}
+\end{multicols}
+}
+\end{center}
+
+\section{Variations}
+The {\it m\=atr\=a\/} for {\gm au} \ {\tt au} is sometimes not
+written. A word like {\gm auga.nu} \ \verb+auga.nu+ may be written
+alternately as {\gm a{}uga.nu} \ \verb+a{}uga.nu+. The code
+\verb+{}+ breaks characters which would otherwise be parsed
+as a single unit.
+
+\section{Example}
+The following example is a poem by Bulleh Shah.
+
+\begin{center}
+\begin{tabular}{ll}
+ {\gm bhai.naaM maiM katadii katadii hu.t.tii .}
+& \verb+bhai.naaM maiM katadii katadii hu.t.tii .+ \\
+ {\gm paRii pacchii pichavaaRe rahi ga{}ii ..}
+& \verb+paRii pacchii pichavaaRe rahi ga{}ii ..+ \\
+ {\gm hatth vica rahi ga{}ii ju.t.tii .}
+& \verb+hatth vica rahi ga{}ii ju.t.tii .+ \\
+ {\gm agge carakhaa picche piihaRaa ..}
+& \verb+agge carakhaa picche piihaRaa ..+ \\
+ {\gm hatth meriuM ta.md .tu.t.tii ..}
+& \verb+hatth meriuM ta.md .tu.t.tii ..+ \\
+\end{tabular}
+\end{center}
+
+\section{Another Example}
+
+\def\,{{\rm,}}
+
+\centerline{{\gm \Large \ekonkarp\ satiguru prasaadi}}
+\centerline{{\gm \large suuhii mahalaa 5}}
+\bigskip
+
+\begin{quote}\begin{quote}
+{\gm jis ke sir uupari tuu.m suaamii\, so dukhu kaisaa paavai . \\
+boli na jaanai maa{}ii{}aa madi maataa\, mara.naa ciiti na aavai .. 1.. \\
+mere raamaraa{}ii\, tuu.m santaa kaa sant tere . \\
+tere sevaka kau bhau kichu naahii\, jamu nahii aavai nere .. 1.. rahaa{}u .. \\
+jo terai ra"ngi raate suaamii\, tin kaa janam mara.na dukhu naasaa . \\
+terii bakhasa na me.tai koii\, satigur kaa dilaasaa .. 2.. \\
+naamu dhiaaiini\, sukh phala paaiini\, aa.th pahar aaraadhahi . \\
+terii sara.ni tere bharavaasai\, pa~nc du"sa.t lai saadhahi .. 3.. \\
+giaanu dhiaanu kichu karamu na jaa.naa\, saar na jaa.naa terii . \\
+sabh te va.daa satiguru naanak\, jini kala raakhii merii .. 4. 10. 57..
+}
+\end{quote}\end{quote}
+\bigskip
+
+\section{Special Characters}
+\begin{enumerate}
+\item The Gurmukh{\=\i} character {\gm la} \ $+$ \emph{nuqta} is not
+found in the `Punjabi' font.
+
+\item The symbol of the Sikhs, the \emph{k\=a\d{n}\d{d}\=a}, is available
+in two forms. One is {\gm \smkanda{}}, which is defined as \verb+\smkanda+
+(small \emph{k\=a\d{n}\d{d}\=a}). The other is {\gm \lgkanda{}}, which
+is defined as \verb+\lgkanda+ (large \emph{k\=a\d{n}\d{d}\=a}).
+
+\item The symbol {\it ek o\.nk\=ar} is also available in two forms.
+One is {\gm \ekonkarp{}}, defined as \verb+\ekonkarp+ (the ``plain''
+\emph{ek o\.nk\=ar}). The other is {\gm \ekonkarf{}}, defined as
+\verb+\ekonkarf+ (the ``fancy'' \emph{ek o\.nk\=ar}).
+
+\item \textbf{Vowel-bearers} are null characters which are modified
+with diacritics to form the vowels. The vowel bearers are \emph{u}
+{\gm \char117} for back vowels, \emph{a} {\gm \char97} for low vowels,
+and \emph{i} {\gm \char101} for front vowels. Suggested input for the
+vowel-bearers are {\tt `a}, {\tt `u}, and {\tt `i}.
+\end{enumerate}
+
+%%% Character Inventory %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{table}
+\begin{center}
+\renewcommand{\doublerulesep}{.5cm}
+\renewcommand{\arraystretch}{1.40}
+\begin{tabular}{|ll|ll|ll|}
+\hline
+\multicolumn{6}{|c|}{\it Vowel Bearers\/} \\
+\hline
+ {\it back\/} & {\gm \char117} & {\it low\/} & {\gm \char97} & {\it front\/} & {\gm \char101} \\
+\hline
+\end{tabular}
+\hspace*{.5cm}
+\begin{tabular}{|ll|ll|}
+\hline
+\multicolumn{4}{|c|}{\it Fricatives\/} \\
+\hline
+{\tt sa} & {\gm sa} & {\tt ha} & {\gm ha} \\
+\hline
+\end{tabular}
+\vspace*{.5cm} \\
+
+\begin{tabular}{|lll|lll|lll|lll|}
+\hline
+\multicolumn{12}{|c|}{\it Vowels\/} \\
+\hline
+{\tt a} & {\gm a} & --- & {\tt aa} & {\gm aa} & {\gm \char65} & {\tt i} & {\gm i} & {\gm \char105} & {\tt ii} & {\gm ii} & {\gm \char73} \\
+{\tt u} & {\gm u} & {\gm \char85} & {\tt uu} & {\gm uu} & {\gm \char60} & {\tt e} & {\gm e} & {\gm \char69} & {\tt ai} & {\gm ai} & {\gm \char62} \\
+{\tt o} & {\gm o} & {\gm \char126} & {\tt au} & {\gm au} & {\gm \char79} & {\tt aM} & [\ {\gm aM}\ ] & [\ {\gm \char42}\ ] & {\tt aH} & [ {\gm aH} ] & [ {\gm \char92} ] \\
+\hline
+\end{tabular}
+\vspace*{.5cm}
+
+\begin{tabular}{|ll|ll|ll|ll|ll|}
+\hline
+\multicolumn{10}{|c|}{\it Occlusives\/} \\
+\hline
+{\tt ka} & {\gm ka} & {\tt kha} & {\gm kha} & {\tt ga} & {\gm ga} & {\tt gha} & {\gm gha} & {\tt "na} & {\gm "na} \\
+{\tt ca} & {\gm ca} & {\tt cha} & {\gm cha} & {\tt ja} & {\gm ja} & {\tt jha} & {\gm jha} & {\tt \char`~na} & {\gm ~na} \\
+{\tt .ta} & {\gm .ta} & {\tt .tha} & {\gm .tha} & {\tt .da} & {\gm .da} & {\tt .dha} & {\gm .dha} & {\tt .na} & {\gm .na} \\
+{\tt ta} & {\gm ta} & {\tt tha} & {\gm tha} & {\tt da} & {\gm da} & {\tt dha} & {\gm dha} & {\tt na} & {\gm na} \\
+{\tt pa} & {\gm pa} & {\tt pha} & {\gm pha} & {\tt ba} & {\gm ba} & {\tt bha} & {\gm bha} & {\tt ma} & {\gm ma} \\
+\hline\hline
+\multicolumn{10}{|c|}{\it Sonorants\/} \\
+\hline
+{\tt ya} & {\gm ya} & {\tt ra} & {\gm ra} & {\tt la} & {\gm la} & {\tt va} & {\gm va} & {\tt Ra} & {\gm Ra} \\
+\hline
+\end{tabular}
+\vspace*{.5cm}
+
+\begin{tabular}{|ll|ll|ll|ll|ll|ll|}
+\hline
+\multicolumn{12}{|c|}{\it Supplementary Consonants\/} \\
+\hline
+{\tt "sa} & {\gm "sa} & {\tt za} & {\gm za} & {\tt fa} & {\gm fa} & {\tt Ka} & {\gm Ka} & {\tt Ga} & {\gm Ga} & {\tt La} & --- \\
+\hline
+\end{tabular}
+\vspace*{.5cm}
+
+\begin{tabular}{|ll|ll|ll|ll|ll|}
+\hline
+\multicolumn{10}{|c|}{\it Numerals\/} \\
+\hline
+{\tt 0} & {\gm 0} & {\tt 1} & {\gm 1} & {\tt 2} & {\gm 2} & {\tt 3} & {\gm 3} & {\tt 4} & {\gm 4} \\
+{\tt 5} & {\gm 5} & {\tt 6} & {\gm 6} & {\tt 7} & {\gm 7} & {\tt 8} & {\gm 8} & {\tt 9} & {\gm 9} \\
+\hline
+\end{tabular}
+\hspace*{.5cm}
+\begin{tabular}{|ll|ll|ll|}
+\hline
+\multicolumn{6}{|c|}{\it Specials\/} \\
+\hline
+ {\tt .o} & {\gm .o}
+& {\tt .m} & {\gm \char42}
+& {\tt M} & {\gm \char58} \\
+ {\tt .} & {\gm .}
+& {\tt ..} & {\gm ..}
+& {\tt |} & {\gm |} \\
+\hline
+\end{tabular}
+\end{center}
+\caption{`Velthuis' scheme for Gurmukh{\=\i}}
+\end{table}
+
+
+%%% Consonant-Vowel Combinations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\renewcommand{\arraystretch}{1.25}
+\begin{table}[p]
+\vspace*{-0.5in}
+\hspace*{0.0in}\vbox{
+\begin{center}
+\begin{tabular}{|c||c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
+\hline
+ / &
+ {\tt a} &
+ {\tt aa} &
+ {\tt i} &
+ {\tt ii} &
+ {\tt u} &
+ {\tt uu} &
+ {\tt e} &
+ {\tt ai} &
+ {\tt o} &
+ {\tt au} \\ \hline \hline
+
+ {\tt k} &
+{\gm ka} &
+{\gm kaa} &
+{\gm ki} &
+{\gm kii} &
+{\gm ku} &
+{\gm kuu} &
+{\gm ke} &
+{\gm kai} &
+{\gm ko} &
+{\gm kau}
+\\ \hline
+ {\tt kh} &
+{\gm kha} &
+{\gm khaa} &
+{\gm khi} &
+{\gm khii} &
+{\gm khu} &
+{\gm khuu} &
+{\gm khe} &
+{\gm khai} &
+{\gm kho} &
+{\gm khau} \\ \hline
+ {\tt g} &
+{\gm ga} &
+{\gm gaa} &
+{\gm gi} &
+{\gm gii} &
+{\gm gu} &
+{\gm guu} &
+{\gm ge} &
+{\gm gai} &
+{\gm go} &
+{\gm gau} \\ \hline
+ {\tt gh} &
+{\gm gha} &
+{\gm ghaa} &
+{\gm ghi} &
+{\gm ghii} &
+{\gm ghu} &
+{\gm ghuu} &
+{\gm ghe} &
+{\gm ghai} &
+{\gm gho} &
+{\gm ghau} \\ \hline
+ {\tt "n} &
+{\gm "na} &
+{\gm "naa} &
+{\gm "ni} &
+{\gm "nii} &
+{\gm "nu} &
+{\gm "nuu} &
+{\gm "ne} &
+{\gm "nai} &
+{\gm "no} &
+{\gm "nau} \\ \hline
+ {\tt c} &
+{\gm ca} &
+{\gm caa} &
+{\gm ci} &
+{\gm cii} &
+{\gm cu} &
+{\gm cuu} &
+{\gm ce} &
+{\gm cai} &
+{\gm co} &
+{\gm cau} \\ \hline
+ {\tt ch} &
+{\gm cha} &
+{\gm chaa} &
+{\gm chi} &
+{\gm chii} &
+{\gm chu} &
+{\gm chuu} &
+{\gm che} &
+{\gm chai} &
+{\gm cho} &
+{\gm chau} \\ \hline
+ {\tt j} &
+{\gm ja} &
+{\gm jaa} &
+{\gm ji} &
+{\gm jii} &
+{\gm ju} &
+{\gm juu} &
+{\gm je} &
+{\gm jai} &
+{\gm jo} &
+{\gm jau} \\ \hline
+ {\tt jh} &
+{\gm jha} &
+{\gm jhaa} &
+{\gm jhi} &
+{\gm jhii} &
+{\gm jhu} &
+{\gm jhuu} &
+{\gm jhe} &
+{\gm jhai} &
+{\gm jho} &
+{\gm jhau} \\ \hline
+ {\tt \char`~n} &
+{\gm ~na} &
+{\gm ~naa} &
+{\gm ~ni} &
+{\gm ~nii} &
+{\gm ~nu} &
+{\gm ~nuu} &
+{\gm ~ne} &
+{\gm ~nai} &
+{\gm ~no} &
+{\gm ~nau} \\ \hline
+ {\tt .t} &
+{\gm .ta} &
+{\gm .taa} &
+{\gm .ti} &
+{\gm .tii} &
+{\gm .tu} &
+{\gm .tuu} &
+{\gm .te} &
+{\gm .tai} &
+{\gm .to} &
+{\gm .tau} \\ \hline
+ {\tt .th} &
+{\gm .tha} &
+{\gm .thaa} &
+{\gm .thi} &
+{\gm .thii} &
+{\gm .thu} &
+{\gm .thuu} &
+{\gm .the} &
+{\gm .thai} &
+{\gm .tho} &
+{\gm .thau} \\ \hline
+ {\tt .d} &
+{\gm .da} &
+{\gm .daa} &
+{\gm .di} &
+{\gm .dii} &
+{\gm .du} &
+{\gm .duu} &
+{\gm .de} &
+{\gm .dai} &
+{\gm .do} &
+{\gm .dau} \\ \hline
+ {\tt .dh} &
+{\gm .dha} &
+{\gm .dhaa} &
+{\gm .dhi} &
+{\gm .dhii} &
+{\gm .dhu} &
+{\gm .dhuu} &
+{\gm .dhe} &
+{\gm .dhai} &
+{\gm .dho} &
+{\gm .dhau} \\ \hline
+ {\tt .n} &
+{\gm .na} &
+{\gm .naa} &
+{\gm .ni} &
+{\gm .nii} &
+{\gm .nu} &
+{\gm .nuu} &
+{\gm .ne} &
+{\gm .nai} &
+{\gm .no} &
+{\gm .nau} \\ \hline
+ {\tt t} &
+{\gm ta} &
+{\gm taa} &
+{\gm ti} &
+{\gm tii} &
+{\gm tu} &
+{\gm tuu} &
+{\gm te} &
+{\gm tai} &
+{\gm to} &
+{\gm tau} \\ \hline
+ {\tt th} &
+{\gm tha} &
+{\gm thaa} &
+{\gm thi} &
+{\gm thii} &
+{\gm thu} &
+{\gm thuu} &
+{\gm the} &
+{\gm thai} &
+{\gm tho} &
+{\gm thau} \\ \hline
+ {\tt d} &
+{\gm da} &
+{\gm daa} &
+{\gm di} &
+{\gm dii} &
+{\gm du} &
+{\gm duu} &
+{\gm de} &
+{\gm dai} &
+{\gm do} &
+{\gm dau} \\ \hline
+ {\tt dh} &
+{\gm dha} &
+{\gm dhaa} &
+{\gm dhi} &
+{\gm dhii} &
+{\gm dhu} &
+{\gm dhuu} &
+{\gm dhe} &
+{\gm dhai} &
+{\gm dho} &
+{\gm dhau} \\ \hline
+ {\tt n} &
+{\gm na} &
+{\gm naa} &
+{\gm ni} &
+{\gm nii} &
+{\gm nu} &
+{\gm nuu} &
+{\gm ne} &
+{\gm nai} &
+{\gm no} &
+{\gm nau} \\ \hline
+ {\tt p} &
+{\gm pa} &
+{\gm paa} &
+{\gm pi} &
+{\gm pii} &
+{\gm pu} &
+{\gm puu} &
+{\gm pe} &
+{\gm pai} &
+{\gm po} &
+{\gm pau} \\ \hline
+ {\tt ph} &
+{\gm pha} &
+{\gm phaa} &
+{\gm phi} &
+{\gm phii} &
+{\gm phu} &
+{\gm phuu} &
+{\gm phe} &
+{\gm phai} &
+{\gm pho} &
+{\gm phau} \\ \hline
+ {\tt b} &
+{\gm ba} &
+{\gm baa} &
+{\gm bi} &
+{\gm bii} &
+{\gm bu} &
+{\gm buu} &
+{\gm be} &
+{\gm bai} &
+{\gm bo} &
+{\gm bau} \\ \hline
+ {\tt bh} &
+{\gm bha} &
+{\gm bhaa} &
+{\gm bhi} &
+{\gm bhii} &
+{\gm bhu} &
+{\gm bhuu} &
+{\gm bhe} &
+{\gm bhai} &
+{\gm bho} &
+{\gm bhau} \\ \hline
+ {\tt m} &
+{\gm ma} &
+{\gm maa} &
+{\gm mi} &
+{\gm mii} &
+{\gm mu} &
+{\gm muu} &
+{\gm me} &
+{\gm mai} &
+{\gm mo} &
+{\gm mau} \\ \hline
+ {\tt y} &
+{\gm ya} &
+{\gm yaa} &
+{\gm yi} &
+{\gm yii} &
+{\gm yu} &
+{\gm yuu} &
+{\gm ye} &
+{\gm yai} &
+{\gm yo} &
+{\gm yau} \\ \hline
+ {\tt r} &
+{\gm ra} &
+{\gm raa} &
+{\gm ri} &
+{\gm rii} &
+{\gm ru} &
+{\gm ruu} &
+{\gm re} &
+{\gm rai} &
+{\gm ro} &
+{\gm rau} \\ \hline
+ {\tt l} &
+{\gm la} &
+{\gm laa} &
+{\gm li} &
+{\gm lii} &
+{\gm lu} &
+{\gm luu} &
+{\gm le} &
+{\gm lai} &
+{\gm lo} &
+{\gm lau} \\ \hline
+ {\tt v} &
+{\gm va} &
+{\gm vaa} &
+{\gm vi} &
+{\gm vii} &
+{\gm vu} &
+{\gm vuu} &
+{\gm ve} &
+{\gm vai} &
+{\gm vo} &
+{\gm vau} \\ \hline
+ {\tt R} &
+{\gm Ra} &
+{\gm Raa} &
+{\gm Ri} &
+{\gm Rii} &
+{\gm Ru} &
+{\gm Ruu} &
+{\gm Re} &
+{\gm Rai} &
+{\gm Ro} &
+{\gm Rau} \\ \hline
+ {\tt "s} &
+{\gm "sa} &
+{\gm "saa} &
+{\gm "si} &
+{\gm "sii} &
+{\gm "su} &
+{\gm "suu} &
+{\gm "se} &
+{\gm "sai} &
+{\gm "so} &
+{\gm "sau} \\ \hline
+ {\tt z} &
+{\gm za} &
+{\gm zaa} &
+{\gm zi} &
+{\gm zii} &
+{\gm zu} &
+{\gm zuu} &
+{\gm ze} &
+{\gm zai} &
+{\gm zo} &
+{\gm zau} \\ \hline
+ {\tt f} &
+{\gm fa} &
+{\gm faa} &
+{\gm fi} &
+{\gm fii} &
+{\gm fu} &
+{\gm fuu} &
+{\gm fe} &
+{\gm fai} &
+{\gm fo} &
+{\gm fau} \\ \hline
+ {\tt K} &
+{\gm Ka} &
+{\gm Kaa} &
+{\gm Ki} &
+{\gm Kii} &
+{\gm Ku} &
+{\gm Kuu} &
+{\gm Ke} &
+{\gm Kai} &
+{\gm Ko} &
+{\gm Kau} \\ \hline
+ {\tt G} &
+{\gm Ga} &
+{\gm Gaa} &
+{\gm Gi} &
+{\gm Gii} &
+{\gm Gu} &
+{\gm Guu} &
+{\gm Ge} &
+{\gm Gai} &
+{\gm Go} &
+{\gm Gau} \\ \hline
+ {\tt s} &
+{\gm sa} &
+{\gm saa} &
+{\gm si} &
+{\gm sii} &
+{\gm su} &
+{\gm suu} &
+{\gm se} &
+{\gm sai} &
+{\gm so} &
+{\gm sau} \\ \hline
+ {\tt h} &
+{\gm ha} &
+{\gm haa} &
+{\gm hi} &
+{\gm hii} &
+{\gm hu} &
+{\gm huu} &
+{\gm he} &
+{\gm hai} &
+{\gm ho} &
+{\gm hau} \\ \hline
+\end{tabular}
+\vspace{0.10in}
+\end{center}
+} % end vbox
+%\caption{Gurmukh{\=\i} Consonants with their Vowel Forms.}
+\end{table}
+
+\end{document}
diff --git a/language/gurmukhi/pandey/ot1pun.fd b/language/gurmukhi/pandey/ot1pun.fd
new file mode 100644
index 0000000000..91ab6f2532
--- /dev/null
+++ b/language/gurmukhi/pandey/ot1pun.fd
@@ -0,0 +1,30 @@
+% LaTeX2e font description file for "Gurmukhi for TeX".
+% =====================================================
+%
+% This file contains the font definitions for the pun family in the OT1
+% encoding. It is used by the LaTeX New Font Selection Scheme, which is
+% part of LaTeX2e.
+
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesFile{ot1pun.fd}[1999/02/24 v1.0 Gurmukhi font declarations]
+
+\DeclareFontFamily{OT1}{pun}{}
+
+\DeclareFontShape{OT1}{pun}{m}{n}{
+ <5><6><7> gen * pun
+ <8> <9> gen * pun
+ <10->pun10 }{}
+
+\DeclareFontShape{OT1}{pun}{m}{sc}{ <-> ssub * pun/m/n }{}
+\DeclareFontShape{OT1}{pun}{m}{it}{ <-> ssub * pun/m/sl }{}
+\DeclareFontShape{OT1}{pun}{m}{itsc}{ <-> ssub * pun/m/n }{}
+\DeclareFontShape{OT1}{pun}{m}{sl}{ <-> ssub * pun/m/n }{}
+\DeclareFontShape{OT1}{pun}{m}{slsc}{ <-> ssub * pun/m/sl }{}
+\DeclareFontShape{OT1}{pun}{bx}{n}{ <-> ssub * pun/m/n }{}
+\DeclareFontShape{OT1}{pun}{bx}{sc}{ <-> ssub * pun/m/n }{}
+\DeclareFontShape{OT1}{pun}{bx}{it}{ <-> ssub * pun/m/sl }{}
+\DeclareFontShape{OT1}{pun}{bx}{itsc}{ <-> ssub * pun/m/n }{}
+\DeclareFontShape{OT1}{pun}{bx}{sl}{ <-> ssub * pun/m/sl }{}
+\DeclareFontShape{OT1}{pun}{bx}{slsc}{ <-> ssub * pun/m/n}{}
+
+\endinput
diff --git a/language/gurmukhi/pandey/pun10.mf b/language/gurmukhi/pandey/pun10.mf
new file mode 100644
index 0000000000..eb32c5eb5b
--- /dev/null
+++ b/language/gurmukhi/pandey/pun10.mf
@@ -0,0 +1,4459 @@
+% font Normal Punjabi at 11pt
+% converted from True Type format by TTF2MF ver. 0.02
+
+mode_setup;
+if unknown FontSize: FontSize := 10pt#; fi
+FX# := FontSize * 0.073;
+FY# := FontSize * 0.073;
+
+def nonzerowinding =
+ cull currentpicture dropping (0,0);
+enddef;
+extra_endchar := extra_endchar & "nonzerowinding;";
+%
+smoothing := 0; autorounding := 0; turningcheck := 0;
+define_pixels (FX, FY);
+%
+
+
+beginchar(31, 7.5FX#, 12FY#, 0FY#); "";
+fill((0.945,0)
+--(0.945,12)
+--(6.57,12)
+--(6.57,0)
+--cycle) xscaled FX yscaled FY;
+fill((1.875,0.945)
+--(5.625,0.945)
+--(5.625,11.07)
+--(1.875,11.07)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(33, 4.289FX#, 10.949FY#, 0FY#); "";
+fill((2.912,0)
+--(1.262,0)
+--(1.262,1.711)
+--(2.912,1.711)
+--cycle) xscaled FX yscaled FY;
+fill((1.262,10.949)
+--(1.592,2.67)
+--(2.582,2.67)
+--(2.912,10.949)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(34, 5.49FX#, 10.949FY#, -6.539FY#); "";
+fill((2.251,10.949)
+--(1.951,6.539)
+--(1.082,6.539)
+--(0.781,10.949)
+--cycle) xscaled FX yscaled FY;
+fill((4.262,6.539)
+--(4.561,10.949)
+--(3.091,10.949)
+--(3.393,6.539)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(35, 6.135FX#, 10.904FY#, 0.164FY#); "";
+fill((4.23,2.295)
+..controls(4.35,2.075)and(4.41,1.82)
+..(4.41,1.53)
+..controls(4.41,1.2)and(4.28,0.94)
+..(4.02,0.75)
+..controls(3.8,0.6)and(3.565,0.525)
+..(3.315,0.525)
+..controls(2.445,0.525)and(1.8,1.115)
+..(1.38,2.295)
+--cycle) xscaled FX yscaled FY;
+fill((4.92,4.756)
+..controls(4.92,4.466)and(4.855,4.146)
+..(4.725,3.796)
+..controls(4.575,3.376)and(4.39,3.101)
+..(4.17,2.971)
+--(1.199,2.971)
+..controls(1.109,3.291)and(1.064,3.696)
+..(1.064,4.186)
+..controls(1.064,4.226)and(1.064,4.321)
+..(1.064,4.471)
+..controls(1.064,4.631)and(1.064,4.726)
+..(1.064,4.756)
+--cycle) xscaled FX yscaled FY;
+fill((2.912,6.75)
+--(4.549,6.75)
+..controls(4.839,7.65)and(5.63,8.46)
+..(6.922,9.18)
+..controls(7.943,9.75)and(8.894,10.105)
+..(9.775,10.245)
+..controls(10.055,10.285)and(10.326,10.305)
+..(10.586,10.305)
+..controls(11.587,10.305)and(12.388,10.022)
+..(12.989,9.457)
+..controls(13.59,8.892)and(13.89,8.15)
+..(13.89,7.23)
+--(13.89,6.81)
+--(14.52,6.81)
+--(14.52,7.41)
+..controls(14.52,8.51)and(14.13,9.38)
+..(13.35,10.019)
+..controls(12.63,10.609)and(11.73,10.904)
+..(10.65,10.904)
+..controls(10.36,10.904)and(10.07,10.879)
+..(9.78,10.829)
+..controls(8.85,10.679)and(7.865,10.324)
+..(6.825,9.765)
+..controls(5.565,9.095)and(4.64,8.315)
+..(4.05,7.425)
+--(2.925,7.425)
+..controls(1.475,7.425)and(0.61,6.76)
+..(0.33,5.43)
+--(0,5.43)
+--(0,4.845)
+--(0.33,4.845)
+..controls(0.34,4.505)and(0.395,4.015)
+..(0.495,3.375)
+..controls(0.615,2.655)and(0.74,2.121)
+..(0.87,1.771)
+..controls(1.06,1.261)and(1.365,0.821)
+..(1.785,0.451)
+..controls(2.265,0.041)and(2.775,-0.164)
+..(3.315,-0.164)
+..controls(3.895,-0.164)and(4.345,0.006)
+..(4.665,0.346)
+..controls(4.935,0.636)and(5.07,1.001)
+..(5.07,1.441)
+..controls(5.07,1.881)and(4.945,2.26)
+..(4.695,2.58)
+..controls(4.985,2.82)and(5.225,3.175)
+..(5.415,3.645)
+..controls(5.585,4.075)and(5.67,4.475)
+..(5.67,4.845)
+--(5.895,4.845)
+--(5.895,5.43)
+--(1.064,5.43)
+..controls(1.145,5.85)and(1.365,6.18)
+..(1.725,6.42)
+..controls(2.056,6.64)and(2.451,6.75)
+..(2.912,6.75)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(36, 8.4FX#, 11.971FY#, 1.59FY#); "";
+fill((1.771,3.66)
+--(0.451,3.66)
+..controls(0.481,2.53)and(0.764,1.668)
+..(1.299,1.073)
+..controls(1.834,0.478)and(2.661,0.12)
+..(3.781,0)
+--(3.781,-1.59)
+--(4.621,-1.59)
+--(4.621,0)
+..controls(5.471,0.05)and(6.151,0.26)
+..(6.661,0.63)
+..controls(7.481,1.21)and(7.891,2.03)
+..(7.891,3.09)
+..controls(7.891,3.98)and(7.551,4.69)
+..(6.871,5.22)
+..controls(6.371,5.6)and(5.621,5.92)
+..(4.621,6.18)
+--(4.621,9.57)
+..controls(5.161,9.53)and(5.551,9.38)
+..(5.791,9.12)
+..controls(6.031,8.86)and(6.221,8.4)
+..(6.361,7.74)
+--(7.681,7.74)
+..controls(7.611,8.7)and(7.339,9.41)
+..(6.864,9.87)
+..controls(6.389,10.33)and(5.641,10.62)
+..(4.621,10.741)
+--(4.621,11.971)
+--(3.781,11.971)
+--(3.781,10.741)
+..controls(1.781,10.531)and(0.781,9.571)
+..(0.781,7.86)
+..controls(0.781,6.46)and(1.781,5.5)
+..(3.781,4.98)
+--(3.781,1.17)
+..controls(3.081,1.3)and(2.581,1.575)
+..(2.281,1.995)
+..controls(2.041,2.325)and(1.871,2.88)
+..(1.771,3.66)
+--cycle) xscaled FX yscaled FY;
+fill((4.621,4.8)
+..controls(5.341,4.58)and(5.836,4.335)
+..(6.107,4.065)
+..controls(6.377,3.795)and(6.512,3.42)
+..(6.512,2.94)
+..controls(6.512,2.44)and(6.347,2.027)
+..(6.017,1.702)
+..controls(5.686,1.377)and(5.221,1.18)
+..(4.621,1.11)
+--cycle) xscaled FX yscaled FY;
+fill((3.781,9.6)
+--(3.781,6.33)
+..controls(3.192,6.54)and(2.774,6.765)
+..(2.529,7.005)
+..controls(2.285,7.245)and(2.162,7.56)
+..(2.162,7.95)
+..controls(2.162,8.39)and(2.305,8.757)
+..(2.589,9.052)
+..controls(2.874,9.347)and(3.272,9.53)
+..(3.781,9.6)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(37, 13.529FX#, 10.859FY#, 0.119FY#); "";
+fill((7.982,2.67)
+..controls(7.982,0.811)and(8.642,-0.119)
+..(9.962,-0.119)
+..controls(10.612,-0.119)and(11.114,0.141)
+..(11.469,0.661)
+..controls(11.824,1.181)and(12.002,1.921)
+..(12.002,2.88)
+..controls(12.002,4.7)and(11.342,5.61)
+..(10.022,5.61)
+..controls(8.662,5.61)and(7.982,4.63)
+..(7.982,2.67)
+--cycle) xscaled FX yscaled FY;
+fill((8.912,2.701)
+..controls(8.912,4.141)and(9.272,4.861)
+..(9.992,4.861)
+..controls(10.712,4.861)and(11.072,4.181)
+..(11.072,2.821)
+..controls(11.072,1.361)and(10.702,0.631)
+..(9.962,0.631)
+..controls(9.262,0.631)and(8.912,1.321)
+..(8.912,2.701)
+--cycle) xscaled FX yscaled FY;
+fill((9.152,10.74)
+--(3.332,0)
+--(4.172,0)
+--(10.022,10.74)
+--cycle) xscaled FX yscaled FY;
+fill((1.352,7.89)
+..controls(1.352,6.05)and(2.012,5.13)
+..(3.332,5.13)
+..controls(3.972,5.13)and(4.467,5.387)
+..(4.817,5.902)
+..controls(5.167,6.417)and(5.342,7.15)
+..(5.342,8.1)
+..controls(5.342,9.939)and(4.692,10.859)
+..(3.392,10.859)
+..controls(2.032,10.859)and(1.352,9.869)
+..(1.352,7.89)
+--cycle) xscaled FX yscaled FY;
+fill((2.281,7.919)
+..controls(2.281,9.379)and(2.641,10.109)
+..(3.362,10.109)
+..controls(4.062,10.109)and(4.412,9.429)
+..(4.412,8.069)
+..controls(4.412,6.609)and(4.052,5.879)
+..(3.332,5.879)
+..controls(2.631,5.879)and(2.281,6.559)
+..(2.281,7.919)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(38, 1.949FX#, 10.199FY#, -7.154FY#); "";
+fill((1.711,7.154)
+--(-0.238,7.154)
+--(-0.238,8.01)
+--(1.711,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((-0.988,10.019)
+--(-0.838,10.199)
+..controls(-0.358,9.85)and(-0.078,9.655)
+..(0.002,9.615)
+..controls(0.272,9.455)and(0.557,9.381)
+..(0.857,9.391)
+..controls(1.147,9.401)and(1.432,9.48)
+..(1.712,9.63)
+..controls(1.842,9.7)and(2.122,9.89)
+..(2.552,10.199)
+--(2.702,10.019)
+..controls(2.172,9.081)and(1.557,8.611)
+..(0.857,8.611)
+..controls(0.157,8.611)and(-0.458,9.081)
+..(-0.988,10.019)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(39, 2.91FX#, 10.949FY#, -6.539FY#); "";
+fill((1.861,6.539)
+--(2.161,10.949)
+--(0.721,10.949)
+--(1.021,6.539)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(40, 5.16FX#, 10.949FY#, 3.301FY#); "";
+fill((3.749,10.949)
+..controls(2.829,9.629)and(2.189,8.509)
+..(1.829,7.589)
+..controls(1.369,6.439)and(1.139,5.169)
+..(1.139,3.779)
+..controls(1.139,2.389)and(1.359,1.129)
+..(1.799,-0.001)
+..controls(2.189,-1.021)and(2.839,-2.121)
+..(3.749,-3.301)
+--(4.769,-3.301)
+..controls(3.999,-2.041)and(3.454,-0.916)
+..(3.134,0.074)
+..controls(2.784,1.174)and(2.609,2.409)
+..(2.609,3.779)
+..controls(2.609,5.179)and(2.789,6.434)
+..(3.149,7.544)
+..controls(3.479,8.574)and(4.039,9.709)
+..(4.829,10.949)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(41, 5.16FX#, 10.949FY#, 3.301FY#); "";
+fill((1.262,-3.301)
+..controls(2.182,-1.981)and(2.822,-0.861)
+..(3.182,0.059)
+..controls(3.642,1.209)and(3.872,2.479)
+..(3.872,3.869)
+..controls(3.872,5.259)and(3.657,6.519)
+..(3.227,7.649)
+..controls(2.827,8.669)and(2.172,9.769)
+..(1.262,10.949)
+--(0.242,10.949)
+..controls(1.042,9.629)and(1.592,8.504)
+..(1.892,7.574)
+..controls(2.232,6.504)and(2.402,5.269)
+..(2.402,3.869)
+..controls(2.402,2.459)and(2.222,1.199)
+..(1.862,0.089)
+..controls(1.542,-0.921)and(0.982,-2.051)
+..(0.182,-3.301)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(42, 0.016FX#, 10.785FY#, -8.609FY#); "";
+fill((-2.743,8.609)
+--(-3.343,8.609)
+..controls(-3.222,8.689)and(-3.162,8.839)
+..(-3.162,9.059)
+..controls(-3.162,9.279)and(-3.24,9.454)
+..(-3.395,9.584)
+..controls(-3.55,9.714)and(-3.733,9.779)
+..(-3.943,9.779)
+..controls(-4.443,9.779)and(-4.693,9.539)
+..(-4.693,9.059)
+..controls(-4.693,8.859)and(-4.643,8.709)
+..(-4.543,8.609)
+--(-5.113,8.609)
+..controls(-5.393,9)and(-5.533,9.35)
+..(-5.533,9.66)
+..controls(-5.533,10.01)and(-5.373,10.285)
+..(-5.053,10.485)
+..controls(-4.733,10.685)and(-4.358,10.785)
+..(-3.928,10.785)
+..controls(-3.498,10.785)and(-3.122,10.685)
+..(-2.802,10.485)
+..controls(-2.482,10.285)and(-2.322,10.01)
+..(-2.322,9.66)
+..controls(-2.322,9.35)and(-2.462,9)
+..(-2.743,8.609)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(43, 8.91FX#, 8.789FY#, -1.711FY#); "";
+fill((0.752,4.68)
+--(3.812,4.68)
+--(3.812,1.711)
+--(4.952,1.711)
+--(4.952,4.68)
+--(8.012,4.68)
+--(8.012,5.85)
+--(4.952,5.85)
+--(4.952,8.789)
+--(3.812,8.789)
+--(3.812,5.85)
+--(0.752,5.85)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(44, 4.289FX#, 1.74FY#, 2.221FY#); "";
+fill((1.262,1.74)
+--(1.262,0)
+--(2.042,0)
+..controls(2.012,-0.47)and(1.944,-0.803)
+..(1.839,-0.998)
+..controls(1.734,-1.193)and(1.542,-1.34)
+..(1.262,-1.44)
+--(1.262,-2.221)
+..controls(2.362,-2.011)and(2.912,-1.21)
+..(2.912,0.18)
+--(2.912,1.74)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(45, 4.994FX#, 4.395FY#, -3.375FY#); "";
+fill((0.57,3.375)
+--(0.57,4.395)
+--(4.621,4.395)
+--(4.621,3.375)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(46, 4.141FX#, 8.01FY#, 0FY#); "";
+fill((1.561,8.01)
+--(1.561,0)
+--(2.521,0)
+--(2.521,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(47, 4.756FX#, 10.949FY#, 2.189FY#); "";
+fill((2.763,10.949)
+--(-0.357,-2.189)
+--(0.993,-2.189)
+--(4.083,10.949)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(48, 9.24FX#, 8.189FY#, 0.211FY#); "";
+fill((8.521,3.989)
+..controls(8.521,2.809)and(8.102,1.814)
+..(7.262,1.004)
+..controls(6.422,0.194)and(5.412,-0.211)
+..(4.232,-0.211)
+..controls(3.032,-0.211)and(2.027,0.192)
+..(1.217,0.997)
+..controls(0.407,1.802)and(0.002,2.799)
+..(0.002,3.989)
+..controls(0.002,5.179)and(0.407,6.177)
+..(1.217,6.982)
+..controls(2.027,7.787)and(3.032,8.189)
+..(4.232,8.189)
+..controls(5.412,8.189)and(6.422,7.784)
+..(7.262,6.974)
+..controls(8.102,6.164)and(8.521,5.169)
+..(8.521,3.989)
+--cycle) xscaled FX yscaled FY;
+fill((7.561,3.989)
+..controls(7.561,4.899)and(7.236,5.684)
+..(6.586,6.344)
+..controls(5.936,7.004)and(5.161,7.334)
+..(4.262,7.334)
+..controls(3.362,7.334)and(2.587,7.004)
+..(1.938,6.344)
+..controls(1.288,5.684)and(0.963,4.899)
+..(0.963,3.989)
+..controls(0.963,3.079)and(1.288,2.294)
+..(1.938,1.634)
+..controls(2.587,0.975)and(3.362,0.645)
+..(4.262,0.645)
+..controls(5.161,0.645)and(5.936,0.975)
+..(6.586,1.634)
+..controls(7.236,2.294)and(7.561,3.079)
+..(7.561,3.989)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(49, 7.199FX#, 8.221FY#, 0FY#); "";
+fill((7.112,0)
+--(6.122,0)
+..controls(5.461,0)and(5.041,0.205)
+..(4.861,0.615)
+..controls(4.761,0.845)and(4.711,1.365)
+..(4.711,2.175)
+--(4.711,3.795)
+..controls(4.181,3.406)and(3.556,3.211)
+..(2.836,3.211)
+..controls(2.047,3.211)and(1.377,3.448)
+..(0.827,3.923)
+..controls(0.277,4.398)and(0.002,4.996)
+..(0.002,5.716)
+..controls(0.002,6.436)and(0.277,7.033)
+..(0.827,7.508)
+..controls(1.377,7.983)and(2.047,8.221)
+..(2.837,8.221)
+..controls(3.627,8.221)and(4.297,7.983)
+..(4.847,7.508)
+..controls(5.397,7.033)and(5.672,6.436)
+..(5.672,5.715)
+--(5.672,1.77)
+..controls(5.672,1.33)and(5.804,0.935)
+..(6.069,0.585)
+..controls(6.334,0.235)and(6.682,0.04)
+..(7.112,0)
+--cycle) xscaled FX yscaled FY;
+fill((4.711,5.716)
+..controls(4.711,6.216)and(4.531,6.615)
+..(4.171,6.915)
+..controls(3.811,7.215)and(3.367,7.365)
+..(2.837,7.365)
+..controls(2.307,7.365)and(1.862,7.215)
+..(1.503,6.915)
+..controls(1.143,6.615)and(0.963,6.216)
+..(0.963,5.716)
+..controls(0.963,5.216)and(1.143,4.816)
+..(1.503,4.516)
+..controls(1.862,4.216)and(2.307,4.066)
+..(2.837,4.066)
+..controls(3.367,4.066)and(3.811,4.216)
+..(4.171,4.516)
+..controls(4.531,4.816)and(4.711,5.216)
+..(4.711,5.716)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(50, 8.4FX#, 8.295FY#, -0.029FY#); "";
+fill((6.422,0.029)
+--(7.592,0.029)
+--(5.432,2.28)
+..controls(6.042,2.5)and(6.525,2.847)
+..(6.88,3.322)
+..controls(7.235,3.797)and(7.412,4.345)
+..(7.412,4.965)
+..controls(7.412,6.065)and(6.947,6.915)
+..(6.017,7.516)
+..controls(5.197,8.036)and(4.217,8.271)
+..(3.077,8.221)
+..controls(1.957,8.171)and(0.932,7.881)
+..(0.002,7.35)
+--(-0.088,6.3)
+..controls(0.362,6.57)and(0.912,6.81)
+..(1.562,7.02)
+..controls(2.272,7.25)and(2.882,7.365)
+..(3.392,7.365)
+..controls(4.132,7.365)and(4.825,7.153)
+..(5.47,6.728)
+..controls(6.115,6.303)and(6.437,5.83)
+..(6.437,5.31)
+..controls(6.437,4.63)and(6.307,4.117)
+..(6.047,3.772)
+..controls(5.787,3.427)and(5.392,3.185)
+..(4.862,3.045)
+..controls(3.682,3.615)and(2.712,3.9)
+..(1.952,3.9)
+..controls(0.652,3.9)and(0.002,3.49)
+..(0.002,2.67)
+..controls(0.002,2.23)and(0.222,1.87)
+..(0.662,1.59)
+..controls(1.042,1.35)and(1.472,1.23)
+..(1.952,1.23)
+..controls(2.292,1.23)and(2.732,1.285)
+..(3.272,1.395)
+..controls(3.872,1.515)and(4.337,1.66)
+..(4.667,1.83)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(51, 7.199FX#, 8.039FY#, 0FY#); "";
+fill((0.003,6.555)
+..controls(0.583,6.905)and(1.413,7.08)
+..(2.493,7.08)
+..controls(3.393,7.08)and(4.078,6.945)
+..(4.548,6.675)
+..controls(4.958,6.445)and(5.163,6.155)
+..(5.163,5.805)
+..controls(5.163,5.475)and(5.008,5.215)
+..(4.698,5.025)
+..controls(4.438,4.865)and(4.133,4.785)
+..(3.783,4.785)
+..controls(3.503,4.785)and(3.14,4.838)
+..(2.695,4.942)
+..controls(2.25,5.047)and(1.983,5.1)
+..(1.893,5.1)
+..controls(1.313,5.1)and(0.903,5.075)
+..(0.663,5.025)
+..controls(0.203,4.925)and(-0.027,4.71)
+..(-0.027,4.38)
+..controls(-0.027,3.84)and(0.408,3.57)
+..(1.278,3.57)
+..controls(1.368,3.57)and(1.488,3.57)
+..(1.638,3.57)
+..controls(1.778,3.581)and(1.873,3.586)
+..(1.923,3.586)
+..controls(2.063,3.586)and(2.408,3.631)
+..(2.958,3.72)
+..controls(3.508,3.809)and(3.923,3.854)
+..(4.203,3.854)
+..controls(4.423,3.854)and(4.603,3.754)
+..(4.743,3.554)
+..controls(4.883,3.354)and(4.953,3.114)
+..(4.953,2.834)
+..controls(4.953,2.204)and(4.673,1.769)
+..(4.113,1.529)
+..controls(3.953,1.569)and(3.448,1.72)
+..(2.598,1.98)
+..controls(2.198,2.1)and(1.863,2.16)
+..(1.593,2.16)
+..controls(0.533,2.16)and(0.003,1.99)
+..(0.003,1.65)
+..controls(0.003,1.24)and(0.328,0.935)
+..(0.978,0.735)
+..controls(1.488,0.565)and(2.093,0.48)
+..(2.793,0.48)
+..controls(2.833,0.48)and(3.078,0.47)
+..(3.528,0.45)
+..controls(3.868,0.43)and(4.113,0.43)
+..(4.263,0.45)
+--(4.863,0)
+--(6.363,0)
+--(5.103,1.05)
+..controls(5.683,1.54)and(5.973,2.1)
+..(5.973,2.73)
+..controls(5.973,3.16)and(5.833,3.59)
+..(5.553,4.02)
+..controls(5.913,4.569)and(6.093,5.134)
+..(6.093,5.714)
+..controls(6.093,6.384)and(5.833,6.919)
+..(5.313,7.319)
+..controls(4.693,7.799)and(3.753,8.039)
+..(2.493,8.039)
+..controls(1.493,8.039)and(0.663,7.889)
+..(0.003,7.589)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(52, 7.02FX#, 8.01FY#, 0FY#); "";
+fill((2.822,0)
+--(3.482,0)
+..controls(4.162,0)and(4.742,0.215)
+..(5.222,0.645)
+..controls(5.702,1.075)and(5.942,1.61)
+..(5.942,2.25)
+..controls(5.942,2.93)and(5.662,3.47)
+..(5.102,3.87)
+..controls(5.902,4.36)and(6.302,5)
+..(6.302,5.79)
+..controls(6.302,6.44)and(6.077,6.972)
+..(5.627,7.387)
+..controls(5.177,7.802)and(4.572,8.01)
+..(3.813,8.01)
+--(3.813,7.154)
+..controls(4.212,7.134)and(4.552,7.024)
+..(4.832,6.824)
+..controls(5.172,6.564)and(5.342,6.199)
+..(5.342,5.729)
+..controls(5.342,5.389)and(5.157,5.074)
+..(4.787,4.784)
+..controls(4.357,4.454)and(3.812,4.289)
+..(3.152,4.289)
+..controls(2.473,4.289)and(1.923,4.454)
+..(1.503,4.784)
+..controls(1.143,5.064)and(0.963,5.379)
+..(0.963,5.729)
+..controls(0.963,6.199)and(1.138,6.564)
+..(1.488,6.824)
+..controls(1.758,7.024)and(2.092,7.134)
+..(2.492,7.154)
+--(2.492,8.01)
+..controls(1.732,8.01)and(1.127,7.802)
+..(0.677,7.387)
+..controls(0.227,6.972)and(0.002,6.44)
+..(0.002,5.79)
+..controls(0.002,5)and(0.402,4.36)
+..(1.202,3.87)
+..controls(0.642,3.47)and(0.362,2.93)
+..(0.362,2.25)
+..controls(0.362,1.62)and(0.607,1.087)
+..(1.097,0.652)
+..controls(1.587,0.217)and(2.162,0)
+..(2.822,0)
+--cycle) xscaled FX yscaled FY;
+fill((1.322,2.251)
+..controls(1.322,2.611)and(1.497,2.898)
+..(1.847,3.113)
+..controls(2.197,3.328)and(2.632,3.436)
+..(3.152,3.436)
+..controls(3.672,3.436)and(4.107,3.328)
+..(4.457,3.113)
+..controls(4.807,2.898)and(4.982,2.611)
+..(4.982,2.251)
+..controls(4.982,1.79)and(4.782,1.43)
+..(4.382,1.17)
+..controls(4.042,0.96)and(3.632,0.855)
+..(3.152,0.855)
+..controls(2.672,0.855)and(2.262,0.96)
+..(1.922,1.17)
+..controls(1.522,1.43)and(1.322,1.79)
+..(1.322,2.251)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(53, 7.381FX#, 8.01FY#, 0FY#); "";
+fill((-0.117,8.01)
+..controls(0.223,7.23)and(0.393,6.485)
+..(0.393,5.775)
+..controls(0.393,5.175)and(0.248,4.4)
+..(-0.042,3.45)
+..controls(0.268,2.93)and(0.758,2.525)
+..(1.428,2.235)
+..controls(2.028,1.985)and(2.678,1.86)
+..(3.378,1.86)
+..controls(4.268,1.86)and(4.903,2.04)
+..(5.283,2.4)
+--(5.283,0)
+--(6.243,0)
+--(6.243,8.01)
+--(5.283,8.01)
+--(5.283,3.705)
+..controls(5.283,3.455)and(5.068,3.227)
+..(4.638,3.022)
+..controls(4.208,2.817)and(3.718,2.715)
+..(3.168,2.715)
+..controls(2.248,2.715)and(1.533,3.005)
+..(1.023,3.585)
+..controls(1.233,4.295)and(1.338,5)
+..(1.338,5.7)
+..controls(1.338,6.55)and(1.183,7.32)
+..(0.873,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(54, 7.711FX#, 10.545FY#, 0FY#); "";
+fill((2.403,0)
+--(6.753,0)
+--(6.753,0.855)
+--(2.583,0.855)
+..controls(2.193,0.855)and(1.883,0.96)
+..(1.653,1.17)
+..controls(1.463,1.36)and(1.368,1.595)
+..(1.368,1.875)
+..controls(1.368,2.135)and(1.461,2.362)
+..(1.646,2.557)
+..controls(1.831,2.752)and(2.083,2.85)
+..(2.403,2.85)
+..controls(2.713,2.85)and(3.231,2.805)
+..(3.956,2.715)
+..controls(4.681,2.625)and(5.143,2.58)
+..(5.343,2.58)
+..controls(6.133,2.58)and(6.528,2.78)
+..(6.528,3.18)
+..controls(6.528,3.41)and(6.386,3.628)
+..(6.101,3.833)
+..controls(5.816,4.038)and(5.473,4.141)
+..(5.073,4.141)
+..controls(4.813,4.141)and(4.373,4.086)
+..(3.753,3.976)
+..controls(3.133,3.866)and(2.733,3.811)
+..(2.553,3.811)
+..controls(2.053,3.811)and(1.663,3.916)
+..(1.383,4.126)
+..controls(1.103,4.335)and(0.963,4.59)
+..(0.963,4.89)
+..controls(0.963,5.25)and(1.153,5.555)
+..(1.533,5.805)
+..controls(1.963,6.095)and(2.543,6.24)
+..(3.273,6.24)
+..controls(3.653,6.24)and(4.108,6.145)
+..(4.638,5.955)
+..controls(5.168,5.765)and(5.513,5.67)
+..(5.673,5.67)
+..controls(6.053,5.67)and(6.243,5.85)
+..(6.243,6.21)
+..controls(6.243,6.47)and(6.118,6.695)
+..(5.868,6.885)
+..controls(5.568,7.115)and(5.163,7.23)
+..(4.653,7.23)
+..controls(4.093,7.61)and(3.813,8.065)
+..(3.813,8.595)
+..controls(3.813,9.295)and(4.383,9.645)
+..(5.523,9.645)
+..controls(5.583,9.645)and(5.706,9.64)
+..(5.891,9.63)
+..controls(6.076,9.62)and(6.223,9.615)
+..(6.333,9.615)
+--(6.333,10.5)
+..controls(5.633,10.53)and(5.028,10.495)
+..(4.518,10.395)
+..controls(3.318,10.165)and(2.718,9.645)
+..(2.718,8.835)
+..controls(2.718,8.385)and(2.913,7.85)
+..(3.303,7.23)
+..controls(2.133,7.09)and(1.258,6.81)
+..(0.678,6.39)
+..controls(0.188,6.03)and(-0.057,5.6)
+..(-0.057,5.1)
+..controls(-0.057,4.73)and(0.071,4.383)
+..(0.326,4.058)
+..controls(0.581,3.733)and(0.893,3.5)
+..(1.263,3.36)
+..controls(0.693,3.05)and(0.408,2.535)
+..(0.408,1.815)
+..controls(0.408,1.325)and(0.568,0.91)
+..(0.888,0.57)
+..controls(1.258,0.19)and(1.763,0)
+..(2.403,0)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(55, 8.07FX#, 7.83FY#, 0FY#); "";
+fill((1.712,4.35)
+--(2.672,4.35)
+..controls(2.582,4.66)and(2.537,4.95)
+..(2.537,5.22)
+..controls(2.537,5.79)and(2.727,6.235)
+..(3.107,6.555)
+..controls(3.437,6.845)and(3.857,6.99)
+..(4.367,6.99)
+..controls(4.897,6.99)and(5.352,6.83)
+..(5.731,6.51)
+..controls(6.151,6.16)and(6.361,5.695)
+..(6.361,5.115)
+..controls(6.361,4.855)and(6.316,4.58)
+..(6.226,4.29)
+..controls(5.916,3.29)and(5.186,2.468)
+..(4.037,1.823)
+..controls(2.887,1.178)and(1.542,0.855)
+..(0.002,0.855)
+--(0.002,0)
+..controls(1.832,0)and(3.404,0.373)
+..(4.719,1.118)
+..controls(6.034,1.863)and(6.862,2.89)
+..(7.202,4.2)
+..controls(7.292,4.53)and(7.337,4.85)
+..(7.337,5.16)
+..controls(7.337,6)and(7.027,6.665)
+..(6.407,7.155)
+..controls(5.847,7.605)and(5.167,7.83)
+..(4.367,7.83)
+..controls(3.597,7.83)and(2.952,7.625)
+..(2.432,7.215)
+..controls(1.852,6.755)and(1.562,6.13)
+..(1.562,5.34)
+..controls(1.562,5.03)and(1.612,4.7)
+..(1.712,4.35)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(56, 8.58FX#, 8.01FY#, 0.061FY#); "";
+fill((7.862,6.69)
+--(2.162,6.69)
+--(2.162,8.01)
+..controls(1.272,8.01)and(0.689,7.87)
+..(0.414,7.59)
+..controls(0.139,7.31)and(0.002,6.725)
+..(0.002,5.835)
+--(1.202,5.835)
+..controls(1.202,3.815)and(1.582,2.37)
+..(2.342,1.5)
+..controls(3.252,0.46)and(4.862,-0.061)
+..(7.172,-0.061)
+--(7.862,-0.061)
+--(7.862,0.825)
+--(7.172,0.825)
+..controls(5.192,0.825)and(3.842,1.225)
+..(3.122,2.025)
+..controls(2.482,2.735)and(2.162,4.005)
+..(2.162,5.835)
+--(7.862,5.835)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(57, 8.4FX#, 10.936FY#, 0.061FY#); "";
+fill((7.651,5.985)
+..controls(6.911,6.315)and(6.346,6.73)
+..(5.956,7.23)
+..controls(5.596,7.68)and(5.416,8.135)
+..(5.416,8.595)
+..controls(5.416,9.035)and(5.576,9.398)
+..(5.896,9.682)
+..controls(6.216,9.967)and(6.646,10.11)
+..(7.186,10.11)
+..controls(7.356,10.11)and(7.531,10.095)
+..(7.711,10.065)
+--(7.711,10.921)
+..controls(7.551,10.931)and(7.401,10.936)
+..(7.261,10.936)
+..controls(6.301,10.936)and(5.561,10.706)
+..(5.041,10.245)
+..controls(4.591,9.845)and(4.366,9.315)
+..(4.366,8.655)
+..controls(4.366,7.655)and(4.801,6.785)
+..(5.671,6.045)
+--(2.101,6.045)
+--(2.101,7.125)
+..controls(1.301,7.125)and(0.761,7.005)
+..(0.481,6.765)
+..controls(0.201,6.525)and(0.061,6.005)
+..(0.061,5.205)
+--(1.141,5.205)
+..controls(1.141,3.445)and(1.466,2.18)
+..(2.116,1.41)
+..controls(2.946,0.43)and(4.471,-0.061)
+..(6.691,-0.061)
+..controls(6.991,-0.061)and(7.311,-0.051)
+..(7.651,-0.031)
+--(7.651,0.824)
+..controls(5.961,0.824)and(4.701,0.994)
+..(3.871,1.334)
+..controls(3.111,1.634)and(2.611,2.124)
+..(2.371,2.805)
+..controls(2.191,3.295)and(2.101,4.095)
+..(2.101,5.205)
+--(7.651,5.205)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(58, 2.01FX#, 9.705FY#, -7.154FY#); "";
+fill((1.473,9.135)
+..controls(1.473,8.975)and(1.418,8.84)
+..(1.308,8.73)
+..controls(1.198,8.619)and(1.062,8.564)
+..(0.902,8.564)
+..controls(0.742,8.564)and(0.607,8.619)
+..(0.497,8.73)
+..controls(0.387,8.84)and(0.332,8.975)
+..(0.332,9.135)
+..controls(0.332,9.295)and(0.387,9.43)
+..(0.497,9.54)
+..controls(0.607,9.65)and(0.742,9.705)
+..(0.902,9.705)
+..controls(1.062,9.705)and(1.198,9.65)
+..(1.308,9.54)
+..controls(1.418,9.43)and(1.473,9.295)
+..(1.473,9.135)
+--cycle) xscaled FX yscaled FY;
+fill((1.803,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(1.803,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(59, 2.58FX#, 9.705FY#, -2.91FY#); "";
+fill((1.862,7.155)
+--(2.342,7.155)
+--(2.342,8.01)
+--(0.002,8.01)
+--(0.002,7.155)
+--(0.902,7.155)
+--(0.902,2.91)
+--(1.862,2.91)
+--cycle) xscaled FX yscaled FY;
+fill((1.951,9.135)
+..controls(1.951,8.975)and(1.896,8.84)
+..(1.786,8.73)
+..controls(1.676,8.619)and(1.541,8.564)
+..(1.381,8.564)
+..controls(1.221,8.564)and(1.086,8.619)
+..(0.976,8.73)
+..controls(0.866,8.84)and(0.811,8.975)
+..(0.811,9.135)
+..controls(0.811,9.295)and(0.866,9.43)
+..(0.976,9.54)
+..controls(1.086,9.65)and(1.221,9.705)
+..(1.381,9.705)
+..controls(1.541,9.705)and(1.676,9.65)
+..(1.786,9.54)
+..controls(1.896,9.43)and(1.951,9.295)
+..(1.951,9.135)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(60, 0.016FX#, -1.23FY#, 3.645FY#); "";
+fill((-1.617,-1.23)
+..controls(-1.767,-1.23)and(-2.122,-1.245)
+..(-2.682,-1.275)
+..controls(-3.242,-1.305)and(-3.677,-1.32)
+..(-3.987,-1.32)
+..controls(-5.027,-1.32)and(-5.767,-1.29)
+..(-6.207,-1.23)
+--(-6.207,-2.07)
+..controls(-5.237,-2.111)and(-4.497,-2.131)
+..(-3.987,-2.131)
+..controls(-3.477,-2.131)and(-2.687,-2.111)
+..(-1.617,-2.07)
+--cycle) xscaled FX yscaled FY;
+fill((-1.617,-2.746)
+..controls(-1.767,-2.746)and(-2.122,-2.761)
+..(-2.682,-2.791)
+..controls(-3.242,-2.821)and(-3.677,-2.836)
+..(-3.987,-2.836)
+..controls(-5.027,-2.836)and(-5.767,-2.806)
+..(-6.207,-2.746)
+--(-6.207,-3.585)
+..controls(-5.237,-3.625)and(-4.497,-3.645)
+..(-3.987,-3.645)
+..controls(-3.477,-3.645)and(-2.687,-3.625)
+..(-1.617,-3.585)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(61, 8.91FX#, 6.93FY#, -3.6FY#); "";
+fill((8.1,5.76)
+--(0.84,5.76)
+--(0.84,6.93)
+--(8.1,6.93)
+--cycle) xscaled FX yscaled FY;
+fill((8.1,3.6)
+--(0.84,3.6)
+--(0.84,4.77)
+--(8.1,4.77)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(62, 0.016FX#, 11.686FY#, -8.16FY#); "";
+fill((-0.717,8.16)
+..controls(-1.747,8.799)and(-2.807,9.119)
+..(-3.897,9.119)
+..controls(-4.027,9.119)and(-4.224,9.102)
+..(-4.489,9.067)
+..controls(-4.754,9.033)and(-4.957,9.016)
+..(-5.097,9.016)
+..controls(-5.457,9.016)and(-5.637,9.155)
+..(-5.637,9.435)
+..controls(-5.637,9.804)and(-5.287,9.988)
+..(-4.587,9.988)
+..controls(-4.037,9.988)and(-3.437,9.873)
+..(-2.787,9.644)
+..controls(-2.097,9.394)and(-1.547,9.08)
+..(-1.137,8.7)
+..controls(-1.307,9.12)and(-1.672,9.53)
+..(-2.232,9.93)
+..controls(-3.042,10.5)and(-4.012,10.77)
+..(-5.142,10.74)
+..controls(-5.632,10.73)and(-5.877,10.855)
+..(-5.877,11.115)
+..controls(-5.877,11.255)and(-5.797,11.385)
+..(-5.637,11.505)
+..controls(-5.477,11.625)and(-5.287,11.68)
+..(-5.067,11.67)
+..controls(-4.247,11.65)and(-3.367,11.295)
+..(-2.427,10.605)
+..controls(-1.417,9.865)and(-0.847,9.05)
+..(-0.717,8.16)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(63, 8.4FX#, 11.16FY#, 0FY#); "";
+fill((3.181,1.711)
+--(3.181,0)
+--(4.831,0)
+--(4.831,1.711)
+--cycle) xscaled FX yscaled FY;
+fill((4.711,2.881)
+..controls(4.741,3.581)and(4.846,4.096)
+..(5.026,4.426)
+..controls(5.166,4.696)and(5.509,5.078)
+..(6.054,5.573)
+..controls(6.599,6.068)and(6.976,6.508)
+..(7.186,6.893)
+..controls(7.396,7.278)and(7.501,7.73)
+..(7.501,8.25)
+..controls(7.501,9.14)and(7.206,9.848)
+..(6.616,10.373)
+..controls(6.026,10.898)and(5.231,11.16)
+..(4.231,11.16)
+..controls(3.181,11.16)and(2.361,10.843)
+..(1.771,10.208)
+..controls(1.181,9.573)and(0.881,8.68)
+..(0.871,7.53)
+--(2.281,7.53)
+..controls(2.391,9.11)and(3.041,9.9)
+..(4.231,9.9)
+..controls(4.781,9.9)and(5.219,9.748)
+..(5.544,9.443)
+..controls(5.869,9.138)and(6.031,8.72)
+..(6.031,8.19)
+..controls(6.031,7.74)and(5.846,7.295)
+..(5.476,6.855)
+..controls(5.476,6.845)and(5.111,6.47)
+..(4.381,5.73)
+..controls(3.931,5.271)and(3.644,4.856)
+..(3.519,4.486)
+..controls(3.394,4.116)and(3.321,3.581)
+..(3.301,2.881)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(64, 9.6FX#, 11.43FY#, 0.27FY#); "";
+fill((3.934,7.5)
+..controls(3.934,7.08)and(3.824,6.52)
+..(3.603,5.82)
+..controls(3.273,5.95)and(3.001,6.165)
+..(2.786,6.465)
+..controls(2.57,6.765)and(2.463,7.11)
+..(2.463,7.5)
+..controls(2.463,8.41)and(2.893,8.99)
+..(3.754,9.24)
+..controls(3.874,8.61)and(3.934,8.03)
+..(3.934,7.5)
+--cycle) xscaled FX yscaled FY;
+fill((4.503,11.43)
+--(3.153,10.74)
+..controls(3.333,10.5)and(3.473,10.23)
+..(3.573,9.93)
+..controls(3.023,9.81)and(2.575,9.522)
+..(2.23,9.067)
+..controls(1.885,8.612)and(1.713,8.09)
+..(1.713,7.5)
+..controls(1.713,6.97)and(1.883,6.48)
+..(2.223,6.03)
+..controls(2.533,5.61)and(2.913,5.32)
+..(3.363,5.16)
+..controls(3.313,5.02)and(3.243,4.83)
+..(3.153,4.59)
+--(4.264,4.59)
+--(4.264,3.93)
+..controls(3.224,4.2)and(2.454,4.555)
+..(1.953,4.995)
+..controls(1.333,5.535)and(1.023,6.25)
+..(1.023,7.14)
+..controls(1.023,7.65)and(1.163,8.205)
+..(1.443,8.805)
+..controls(1.743,9.455)and(2.113,9.93)
+..(2.553,10.23)
+..controls(1.793,9.85)and(1.183,9.365)
+..(0.723,8.775)
+..controls(0.223,8.135)and(-0.027,7.46)
+..(-0.027,6.75)
+..controls(-0.027,6.06)and(0.073,5.365)
+..(0.273,4.665)
+..controls(0.463,4.005)and(0.833,3.03)
+..(1.383,1.74)
+..controls(1.603,2.7)and(2.333,3.2)
+..(3.573,3.24)
+..controls(3.263,2.98)and(2.988,2.665)
+..(2.748,2.295)
+..controls(2.508,1.925)and(2.373,1.62)
+..(2.343,1.38)
+..controls(2.143,1.28)and(2.043,1.14)
+..(2.043,0.96)
+..controls(2.043,0.84)and(2.098,0.725)
+..(2.208,0.615)
+..controls(2.318,0.505)and(2.433,0.45)
+..(2.553,0.45)
+..controls(2.673,0.45)and(2.788,0.505)
+..(2.898,0.615)
+..controls(3.008,0.725)and(3.063,0.84)
+..(3.063,0.96)
+..controls(3.063,1.1)and(2.993,1.22)
+..(2.854,1.32)
+..controls(2.904,1.8)and(3.374,2.32)
+..(4.264,2.88)
+--(4.264,1.11)
+..controls(3.883,0.97)and(3.693,0.72)
+..(3.693,0.36)
+..controls(3.693,-0.06)and(3.963,-0.27)
+..(4.503,-0.27)
+..controls(5.043,-0.27)and(5.313,-0.06)
+..(5.313,0.36)
+..controls(5.313,0.72)and(5.122,0.97)
+..(4.742,1.11)
+--(4.742,2.88)
+..controls(5.632,2.32)and(6.102,1.8)
+..(6.152,1.32)
+..controls(6.013,1.22)and(5.943,1.1)
+..(5.943,0.96)
+..controls(5.943,0.84)and(5.998,0.725)
+..(6.108,0.615)
+..controls(6.218,0.505)and(6.333,0.45)
+..(6.453,0.45)
+..controls(6.573,0.45)and(6.688,0.505)
+..(6.798,0.615)
+..controls(6.908,0.725)and(6.963,0.84)
+..(6.963,0.96)
+..controls(6.963,1.14)and(6.863,1.28)
+..(6.663,1.38)
+..controls(6.633,1.62)and(6.498,1.925)
+..(6.258,2.295)
+..controls(6.018,2.665)and(5.743,2.98)
+..(5.433,3.24)
+..controls(6.673,3.2)and(7.403,2.7)
+..(7.623,1.74)
+..controls(8.173,3.02)and(8.545,4.003)
+..(8.74,4.688)
+..controls(8.935,5.372)and(9.033,6.06)
+..(9.033,6.75)
+..controls(9.033,7.46)and(8.783,8.135)
+..(8.283,8.775)
+..controls(7.823,9.365)and(7.213,9.85)
+..(6.453,10.23)
+..controls(6.893,9.93)and(7.263,9.455)
+..(7.563,8.805)
+..controls(7.842,8.205)and(7.982,7.65)
+..(7.982,7.14)
+..controls(7.982,6.25)and(7.677,5.535)
+..(7.067,4.995)
+..controls(6.557,4.555)and(5.782,4.2)
+..(4.742,3.93)
+--(4.742,4.59)
+--(5.853,4.59)
+..controls(5.813,4.71)and(5.743,4.9)
+..(5.643,5.16)
+..controls(6.093,5.32)and(6.48,5.617)
+..(6.805,6.052)
+..controls(7.13,6.487)and(7.293,6.97)
+..(7.293,7.5)
+..controls(7.293,8.09)and(7.12,8.612)
+..(6.775,9.067)
+..controls(6.43,9.522)and(5.983,9.81)
+..(5.433,9.93)
+..controls(5.533,10.23)and(5.673,10.5)
+..(5.853,10.74)
+--cycle) xscaled FX yscaled FY;
+fill((5.402,5.82)
+..controls(5.182,6.52)and(5.072,7.08)
+..(5.072,7.5)
+..controls(5.072,8.03)and(5.132,8.61)
+..(5.252,9.24)
+..controls(6.113,8.99)and(6.543,8.41)
+..(6.543,7.5)
+..controls(6.543,7.11)and(6.435,6.765)
+..(6.22,6.465)
+..controls(6.005,6.165)and(5.733,5.95)
+..(5.402,5.82)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(65, 2.58FX#, 8.01FY#, -2.91FY#); "";
+fill((1.862,7.155)
+--(2.342,7.155)
+--(2.342,8.01)
+--(0.002,8.01)
+--(0.002,7.155)
+--(0.902,7.155)
+--(0.902,2.91)
+--(1.862,2.91)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(66, 7.74FX#, 8.01FY#, 0.135FY#); "";
+fill((4.922,4.126)
+..controls(4.872,3.886)and(4.632,3.686)
+..(4.202,3.526)
+..controls(3.822,3.376)and(3.417,3.301)
+..(2.987,3.301)
+..controls(2.747,3.301)and(2.557,3.331)
+..(2.417,3.391)
+..controls(1.937,3.581)and(1.697,3.826)
+..(1.697,4.126)
+..controls(1.697,4.286)and(1.767,4.433)
+..(1.907,4.568)
+..controls(2.047,4.703)and(2.207,4.791)
+..(2.387,4.831)
+..controls(2.697,4.901)and(2.972,4.936)
+..(3.212,4.936)
+..controls(3.892,4.936)and(4.462,4.666)
+..(4.922,4.126)
+--cycle) xscaled FX yscaled FY;
+fill((0.482,1.92)
+..controls(0.482,1.91)and(0.449,1.88)
+..(0.384,1.83)
+..controls(0.319,1.78)and(0.292,1.75)
+..(0.302,1.74)
+..controls(0.682,1.13)and(1.212,0.66)
+..(1.892,0.33)
+..controls(2.522,0.02)and(3.187,-0.135)
+..(3.887,-0.135)
+..controls(4.687,-0.135)and(5.347,0.055)
+..(5.867,0.435)
+..controls(6.437,0.845)and(6.722,1.405)
+..(6.722,2.115)
+..controls(6.722,2.745)and(6.492,3.44)
+..(6.032,4.2)
+..controls(6.292,4.64)and(6.472,5.045)
+..(6.572,5.415)
+..controls(6.692,5.864)and(6.752,6.444)
+..(6.752,7.154)
+--(7.502,7.154)
+--(7.502,8.01)
+--(0.002,8.01)
+--(0.002,7.154)
+--(5.792,7.154)
+..controls(5.812,6.994)and(5.822,6.829)
+..(5.822,6.659)
+..controls(5.822,5.88)and(5.682,5.35)
+..(5.402,5.07)
+..controls(4.862,5.539)and(4.117,5.773)
+..(3.167,5.773)
+..controls(2.517,5.773)and(1.982,5.638)
+..(1.562,5.369)
+..controls(1.082,5.069)and(0.842,4.639)
+..(0.842,4.079)
+..controls(0.842,3.519)and(1.072,3.094)
+..(1.532,2.805)
+..controls(1.922,2.555)and(2.432,2.43)
+..(3.062,2.43)
+..controls(3.572,2.43)and(4.059,2.512)
+..(4.524,2.677)
+..controls(4.989,2.842)and(5.312,3.05)
+..(5.492,3.3)
+..controls(5.752,2.97)and(5.882,2.635)
+..(5.882,2.295)
+..controls(5.882,1.855)and(5.682,1.477)
+..(5.282,1.162)
+..controls(4.882,0.847)and(4.407,0.689)
+..(3.857,0.689)
+..controls(3.407,0.689)and(2.812,0.825)
+..(2.072,1.095)
+..controls(1.332,1.365)and(0.802,1.64)
+..(0.482,1.92)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(67, 7.77FX#, 8.01FY#, 0.195FY#); "";
+fill((7.532,7.154)
+--(7.172,7.154)
+--(7.172,3.15)
+..controls(7.172,2.12)and(6.927,1.31)
+..(6.437,0.72)
+..controls(5.917,0.11)and(5.182,-0.195)
+..(4.232,-0.195)
+..controls(3.352,-0.195)and(2.632,0.23)
+..(2.072,1.079)
+..controls(1.572,1.829)and(1.322,2.694)
+..(1.322,3.674)
+--(0.482,3.674)
+..controls(0.482,4.364)and(0.612,4.824)
+..(0.873,5.054)
+..controls(1.103,5.264)and(1.573,5.369)
+..(2.283,5.369)
+--(2.283,4.529)
+--(6.211,4.529)
+--(6.211,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.532,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((6.211,3.674)
+--(2.283,3.674)
+..controls(2.223,2.994)and(2.378,2.334)
+..(2.746,1.695)
+..controls(3.154,1.005)and(3.647,0.66)
+..(4.225,0.66)
+..controls(5.549,0.66)and(6.211,1.5)
+..(6.211,3.179)
+..controls(6.211,3.339)and(6.211,3.504)
+..(6.211,3.674)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(68, 7.859FX#, 8.01FY#, 0.211FY#); "";
+fill((5.087,0.855)
+..controls(4.817,0.995)and(4.417,1.122)
+..(3.887,1.238)
+..controls(3.357,1.353)and(2.882,1.41)
+..(2.462,1.41)
+..controls(1.822,1.41)and(1.502,1.28)
+..(1.502,1.02)
+..controls(1.502,0.74)and(2.067,0.6)
+..(3.197,0.6)
+..controls(3.917,0.6)and(4.547,0.685)
+..(5.087,0.855)
+--cycle) xscaled FX yscaled FY;
+fill((0.002,7.154)
+--(0.002,8.01)
+--(7.622,8.01)
+--(7.622,7.154)
+--(6.872,7.154)
+..controls(6.872,5.754)and(6.622,4.859)
+..(6.122,4.469)
+..controls(6.802,3.629)and(7.143,2.854)
+..(7.143,2.144)
+..controls(7.143,1.764)and(7.043,1.419)
+..(6.843,1.109)
+..controls(6.282,0.229)and(5.122,-0.211)
+..(3.362,-0.211)
+..controls(1.522,-0.211)and(0.602,0.229)
+..(0.602,1.11)
+..controls(0.602,1.48)and(0.817,1.77)
+..(1.247,1.98)
+..controls(1.627,2.16)and(2.122,2.25)
+..(2.732,2.25)
+..controls(3.352,2.25)and(3.942,2.16)
+..(4.503,1.98)
+..controls(5.103,1.8)and(5.523,1.56)
+..(5.763,1.26)
+..controls(6.033,1.45)and(6.168,1.73)
+..(6.168,2.1)
+..controls(6.168,2.47)and(6.023,2.83)
+..(5.733,3.18)
+..controls(5.383,3.61)and(4.938,3.8)
+..(4.398,3.75)
+..controls(4.308,3.74)and(3.958,3.695)
+..(3.347,3.615)
+..controls(2.877,3.555)and(2.502,3.525)
+..(2.222,3.525)
+..controls(1.462,3.525)and(1.082,3.75)
+..(1.082,4.201)
+..controls(1.082,4.661)and(1.437,4.891)
+..(2.147,4.891)
+..controls(2.397,4.891)and(2.777,4.855)
+..(3.287,4.785)
+..controls(3.797,4.715)and(4.137,4.68)
+..(4.307,4.68)
+..controls(4.807,4.68)and(5.207,4.965)
+..(5.507,5.535)
+..controls(5.757,6.014)and(5.882,6.554)
+..(5.882,7.154)
+..controls(5.882,7.134)and(3.922,7.134)
+..(0.002,7.154)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(69, 0.016FX#, 10.875FY#, -8.221FY#); "";
+fill((-0.627,8.221)
+..controls(-2.207,9.291)and(-3.572,9.826)
+..(-4.722,9.826)
+..controls(-5.002,9.826)and(-5.25,9.881)
+..(-5.465,9.991)
+..controls(-5.68,10.101)and(-5.787,10.221)
+..(-5.787,10.351)
+..controls(-5.787,10.591)and(-5.432,10.741)
+..(-4.722,10.801)
+..controls(-4.102,10.851)and(-3.427,10.661)
+..(-2.697,10.231)
+..controls(-1.907,9.751)and(-1.217,9.081)
+..(-0.627,8.221)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(70, 7.59FX#, 8.01FY#, 0.164FY#); "";
+fill((7.352,7.154)
+--(7.021,7.154)
+--(7.021,4.529)
+--(2.875,4.529)
+..controls(2.04,4.529)and(1.617,4.179)
+..(1.607,3.48)
+..controls(1.607,2.91)and(1.911,2.31)
+..(2.518,1.68)
+..controls(2.707,2.13)and(3.05,2.485)
+..(3.547,2.745)
+..controls(3.995,2.975)and(4.492,3.09)
+..(5.039,3.09)
+..controls(5.626,3.09)and(6.113,2.96)
+..(6.501,2.7)
+..controls(6.929,2.41)and(7.143,2.02)
+..(7.143,1.53)
+..controls(7.143,1.021)and(6.919,0.611)
+..(6.471,0.301)
+..controls(6.023,-0.009)and(5.47,-0.164)
+..(4.813,-0.164)
+..controls(4.166,-0.164)and(3.534,-0.014)
+..(2.917,0.286)
+..controls(2.24,0.616)and(1.668,1.101)
+..(1.2,1.741)
+..controls(0.822,2.26)and(0.633,2.845)
+..(0.633,3.495)
+..controls(0.633,4.045)and(0.792,4.485)
+..(1.11,4.815)
+..controls(1.498,5.195)and(2.084,5.385)
+..(2.87,5.385)
+--(6.061,5.385)
+--(6.061,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.352,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((6.332,1.53)
+..controls(6.332,2.01)and(5.902,2.25)
+..(5.042,2.25)
+..controls(4.622,2.25)and(4.257,2.175)
+..(3.947,2.025)
+..controls(3.597,1.865)and(3.422,1.66)
+..(3.422,1.41)
+..controls(3.422,1.18)and(3.567,0.998)
+..(3.857,0.863)
+..controls(4.147,0.728)and(4.487,0.66)
+..(4.877,0.66)
+..controls(5.267,0.66)and(5.607,0.735)
+..(5.897,0.885)
+..controls(6.187,1.035)and(6.332,1.25)
+..(6.332,1.53)
+--cycle) xscaled FX yscaled FY;
+fill((1.128,0.9)
+..controls(1.268,0.9)and(1.385,0.853)
+..(1.481,0.758)
+..controls(1.576,0.663)and(1.623,0.545)
+..(1.623,0.405)
+..controls(1.623,0.275)and(1.576,0.16)
+..(1.481,0.06)
+..controls(1.385,-0.04)and(1.268,-0.09)
+..(1.128,-0.09)
+..controls(0.998,-0.09)and(0.883,-0.04)
+..(0.783,0.06)
+..controls(0.683,0.16)and(0.633,0.275)
+..(0.633,0.405)
+..controls(0.633,0.545)and(0.683,0.663)
+..(0.783,0.758)
+..controls(0.883,0.853)and(0.998,0.9)
+..(1.128,0.9)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(71, 10.35FX#, 8.01FY#, 0FY#); "";
+fill((10.111,7.154)
+--(9.361,7.154)
+--(9.361,0)
+--(8.4,0)
+--(8.4,1.02)
+..controls(8.19,0.84)and(7.811,0.75)
+..(7.261,0.75)
+..controls(6.301,0.75)and(5.561,0.96)
+..(5.041,1.38)
+..controls(4.822,1.22)and(4.512,1.14)
+..(4.112,1.14)
+..controls(3.482,1.14)and(2.822,1.31)
+..(2.132,1.65)
+..controls(1.413,2.02)and(0.913,2.46)
+..(0.633,2.97)
+..controls(1.253,3.56)and(1.563,4.335)
+..(1.563,5.295)
+..controls(1.563,6.084)and(1.352,6.704)
+..(0.932,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(1.548,8.01)
+..controls(2.198,7.35)and(2.523,6.43)
+..(2.523,5.25)
+..controls(2.523,4.34)and(2.323,3.58)
+..(1.922,2.97)
+..controls(2.022,2.78)and(2.347,2.58)
+..(2.897,2.37)
+..controls(3.407,2.18)and(3.832,2.075)
+..(4.171,2.055)
+..controls(4.631,2.515)and(4.861,3.305)
+..(4.861,4.425)
+..controls(4.861,5.815)and(4.612,7.01)
+..(4.112,8.01)
+--(5.132,8.01)
+..controls(5.592,6.86)and(5.822,5.57)
+..(5.822,4.14)
+..controls(5.822,3.37)and(5.723,2.77)
+..(5.523,2.34)
+..controls(5.643,2.19)and(5.868,2.04)
+..(6.198,1.89)
+..controls(6.567,1.73)and(6.922,1.65)
+..(7.262,1.65)
+..controls(7.831,1.65)and(8.211,1.895)
+..(8.4,2.385)
+--(8.4,8.01)
+--(10.111,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(72, 0.016FX#, -0.359FY#, 3.119FY#); "";
+fill((-1.018,-0.359)
+--(-1.018,-2.174)
+..controls(-1.018,-2.804)and(-1.342,-3.119)
+..(-1.992,-3.119)
+..controls(-2.472,-3.119)and(-2.852,-2.934)
+..(-3.132,-2.564)
+..controls(-3.302,-2.344)and(-3.387,-2.119)
+..(-3.387,-1.889)
+..controls(-3.387,-1.429)and(-3.157,-1.199)
+..(-2.697,-1.199)
+--(-2.412,-1.199)
+--(-2.412,-1.529)
+--(-2.727,-1.529)
+..controls(-2.917,-1.529)and(-3.012,-1.639)
+..(-3.012,-1.859)
+..controls(-3.012,-2.069)and(-2.932,-2.269)
+..(-2.772,-2.459)
+..controls(-2.582,-2.679)and(-2.357,-2.789)
+..(-2.097,-2.789)
+..controls(-1.617,-2.789)and(-1.377,-2.549)
+..(-1.377,-2.069)
+--(-1.377,-0.359)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(73, 2.85FX#, 10.484FY#, 0FY#); "";
+fill((2.613,7.154)
+--(1.863,7.154)
+--(1.863,0)
+--(0.902,0)
+--(0.902,7.154)
+--(0.004,7.154)
+--(0.004,8.01)
+--(0.902,8.01)
+--(0.902,8.669)
+..controls(0.902,8.899)and(0.837,9.104)
+..(0.707,9.284)
+..controls(0.548,9.514)and(0.313,9.629)
+..(0.003,9.629)
+..controls(-0.307,9.629)and(-0.542,9.514)
+..(-0.702,9.284)
+..controls(-0.832,9.104)and(-0.896,8.899)
+..(-0.896,8.67)
+--(-0.896,8.28)
+--(-1.857,8.28)
+--(-1.857,8.67)
+..controls(-1.857,9.16)and(-1.672,9.585)
+..(-1.302,9.945)
+..controls(-0.932,10.304)and(-0.497,10.484)
+..(0.003,10.484)
+..controls(0.503,10.484)and(0.938,10.307)
+..(1.308,9.952)
+..controls(1.678,9.597)and(1.863,9.18)
+..(1.863,8.7)
+--(1.863,8.01)
+--(2.613,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(74, 8.609FX#, 8.01FY#, 0FY#); "";
+fill((7.082,7.154)
+..controls(6.912,6.354)and(6.634,5.806)
+..(6.249,5.511)
+..controls(5.864,5.216)and(5.282,5.068)
+..(4.502,5.068)
+..controls(3.132,5.068)and(2.262,5.764)
+..(1.892,7.154)
+--cycle) xscaled FX yscaled FY;
+fill((6.392,4.41)
+..controls(6.812,4.59)and(7.177,5.005)
+..(7.487,5.654)
+..controls(7.567,5.824)and(7.752,6.324)
+..(8.042,7.154)
+--(8.372,7.154)
+--(8.372,8.01)
+--(0.002,8.01)
+--(0.002,7.154)
+--(0.932,7.154)
+..controls(1.442,5.884)and(1.892,5.099)
+..(2.282,4.799)
+--(0.452,4.589)
+--(1.322,3.628)
+..controls(1.472,3.588)and(1.632,3.568)
+..(1.802,3.568)
+..controls(2.072,3.568)and(2.492,3.669)
+..(3.062,3.869)
+..controls(3.562,4.04)and(4.027,4.125)
+..(4.457,4.125)
+..controls(5.177,4.125)and(5.712,3.91)
+..(6.062,3.48)
+..controls(6.392,3.09)and(6.447,2.695)
+..(6.227,2.295)
+..controls(5.987,1.865)and(5.517,1.65)
+..(4.817,1.65)
+..controls(4.407,1.65)and(3.952,1.73)
+..(3.452,1.89)
+..controls(3.032,2.209)and(2.602,2.369)
+..(2.162,2.369)
+..controls(1.852,2.369)and(1.589,2.292)
+..(1.374,2.137)
+..controls(1.159,1.982)and(1.052,1.799)
+..(1.052,1.589)
+..controls(1.052,1.28)and(1.277,1.03)
+..(1.727,0.84)
+..controls(2.257,0.61)and(3.022,0.52)
+..(4.022,0.57)
+--(4.502,0)
+--(6.452,0)
+--(5.612,0.9)
+..controls(6.182,1.02)and(6.627,1.265)
+..(6.947,1.635)
+..controls(7.247,1.975)and(7.397,2.36)
+..(7.397,2.79)
+..controls(7.397,3.52)and(7.062,4.06)
+..(6.392,4.41)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(75, 8.01FX#, 8.01FY#, 0.09FY#); "";
+fill((7.771,7.154)
+--(7.021,7.154)
+--(7.021,0)
+--(6.061,0)
+--(6.061,1.38)
+..controls(5.611,0.96)and(5.051,0.75)
+..(4.381,0.75)
+..controls(3.621,0.75)and(2.831,0.995)
+..(2.012,1.485)
+..controls(1.272,1.925)and(0.762,2.39)
+..(0.482,2.88)
+..controls(0.872,3.46)and(1.066,4.215)
+..(1.066,5.145)
+..controls(1.066,6.044)and(0.872,6.714)
+..(0.482,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(1.292,8.01)
+..controls(1.712,7.17)and(1.952,6.285)
+..(2.012,5.355)
+--(6.061,5.355)
+--(6.061,8.01)
+--(7.771,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((6.061,2.625)
+--(6.061,4.5)
+--(2.012,4.5)
+..controls(1.982,3.99)and(1.842,3.47)
+..(1.592,2.94)
+..controls(2.432,2.1)and(3.341,1.68)
+..(4.321,1.68)
+..controls(5.121,1.68)and(5.701,1.995)
+..(6.061,2.625)
+--cycle) xscaled FX yscaled FY;
+fill((1.427,0.9)
+..controls(1.567,0.9)and(1.684,0.853)
+..(1.779,0.758)
+..controls(1.874,0.663)and(1.922,0.545)
+..(1.922,0.405)
+..controls(1.922,0.275)and(1.874,0.16)
+..(1.779,0.06)
+..controls(1.684,-0.04)and(1.567,-0.09)
+..(1.427,-0.09)
+..controls(1.297,-0.09)and(1.182,-0.04)
+..(1.082,0.06)
+..controls(0.982,0.16)and(0.932,0.275)
+..(0.932,0.405)
+..controls(0.932,0.545)and(0.982,0.663)
+..(1.082,0.758)
+..controls(1.182,0.853)and(1.297,0.9)
+..(1.427,0.9)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(76, 8.189FX#, 8.01FY#, 0.195FY#); "";
+fill((7.952,7.154)
+--(1.443,7.154)
+--(1.443,5.414)
+--(5.943,5.414)
+..controls(6.443,5.414)and(6.823,5.252)
+..(7.083,4.927)
+..controls(7.343,4.602)and(7.473,4.189)
+..(7.473,3.689)
+..controls(7.473,2.71)and(7.092,1.945)
+..(6.332,1.395)
+..controls(6.602,1.035)and(6.762,0.81)
+..(6.812,0.72)
+..controls(6.922,0.54)and(7.022,0.3)
+..(7.112,0)
+--(6.062,0)
+..controls(5.982,0.18)and(5.827,0.42)
+..(5.597,0.72)
+..controls(4.857,0.11)and(4.057,-0.195)
+..(3.197,-0.195)
+..controls(2.537,-0.195)and(1.979,-0.02)
+..(1.524,0.329)
+..controls(1.069,0.679)and(0.842,1.109)
+..(0.842,1.619)
+..controls(0.842,2.139)and(1.077,2.544)
+..(1.547,2.833)
+..controls(1.967,3.103)and(2.502,3.238)
+..(3.152,3.238)
+..controls(4.303,3.238)and(5.163,2.889)
+..(5.733,2.19)
+..controls(6.373,2.65)and(6.693,3.134)
+..(6.693,3.644)
+..controls(6.693,3.914)and(6.591,4.134)
+..(6.386,4.304)
+..controls(6.181,4.474)and(5.893,4.559)
+..(5.523,4.559)
+--(0.482,4.559)
+--(0.482,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.952,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((5.072,1.469)
+..controls(4.882,1.719)and(4.59,1.924)
+..(4.195,2.084)
+..controls(3.8,2.244)and(3.402,2.324)
+..(3.002,2.324)
+..controls(2.203,2.324)and(1.803,2.044)
+..(1.803,1.484)
+..controls(1.803,0.954)and(2.218,0.689)
+..(3.047,0.689)
+..controls(3.907,0.689)and(4.582,0.949)
+..(5.072,1.469)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(77, 7.711FX#, 8.01FY#, 0FY#); "";
+fill((7.517,7.154)
+--(7.037,7.154)
+--(7.037,4.844)
+--(2.133,4.844)
+..controls(1.723,4.844)and(1.518,4.604)
+..(1.518,4.124)
+..controls(1.518,3.905)and(1.585,3.71)
+..(1.72,3.54)
+..controls(1.855,3.37)and(2.043,3.285)
+..(2.283,3.285)
+--(7.037,3.285)
+--(7.037,2.43)
+--(3.557,2.43)
+..controls(3.557,1.38)and(4.397,0.855)
+..(6.077,0.855)
+..controls(6.167,0.855)and(6.322,0.855)
+..(6.542,0.855)
+..controls(6.762,0.855)and(6.927,0.855)
+..(7.037,0.855)
+--(7.037,0)
+--(5.972,0)
+..controls(3.702,0)and(2.568,0.81)
+..(2.568,2.43)
+..controls(1.958,2.43)and(1.473,2.605)
+..(1.113,2.955)
+..controls(0.793,3.275)and(0.633,3.66)
+..(0.633,4.11)
+..controls(0.633,4.78)and(0.947,5.259)
+..(1.577,5.549)
+..controls(1.447,5.629)and(1.314,5.864)
+..(1.179,6.254)
+..controls(1.044,6.644)and(0.977,6.944)
+..(0.977,7.154)
+--(0.047,7.154)
+--(0.047,8.01)
+--(7.517,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((6.076,5.699)
+--(6.076,7.154)
+--(1.938,7.154)
+..controls(1.938,6.704)and(2.127,6.219)
+..(2.507,5.699)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(78, 8.609FX#, 8.01FY#, 0.045FY#); "";
+fill((5.402,5.34)
+--(4.592,4.575)
+..controls(4.182,4.805)and(3.737,4.92)
+..(3.257,4.92)
+..controls(2.617,4.92)and(2.037,4.72)
+..(1.517,4.32)
+..controls(0.967,3.9)and(0.622,3.35)
+..(0.482,2.67)
+..controls(1.022,1.78)and(1.712,1.095)
+..(2.552,0.615)
+..controls(3.302,0.175)and(4.087,-0.045)
+..(4.907,-0.045)
+..controls(5.777,-0.045)and(6.497,0.195)
+..(7.067,0.675)
+..controls(7.677,1.185)and(7.982,1.86)
+..(7.982,2.7)
+..controls(7.142,1.46)and(6.112,0.84)
+..(4.892,0.84)
+..controls(4.182,0.84)and(3.492,1.05)
+..(2.822,1.47)
+..controls(2.212,1.86)and(1.782,2.31)
+..(1.532,2.82)
+..controls(1.622,3.2)and(1.842,3.495)
+..(2.192,3.705)
+..controls(2.502,3.895)and(2.857,3.99)
+..(3.257,3.99)
+..controls(3.857,3.99)and(4.267,3.81)
+..(4.487,3.45)
+--(5.732,4.98)
+..controls(6.182,4.63)and(6.442,4.43)
+..(6.512,4.38)
+..controls(6.902,4.11)and(7.262,3.905)
+..(7.592,3.765)
+--(8.042,4.83)
+..controls(7.482,5.04)and(6.912,5.36)
+..(6.332,5.79)
+..controls(5.662,6.289)and(5.272,6.744)
+..(5.162,7.154)
+--(8.372,7.154)
+--(8.372,8.01)
+--(0.002,8.01)
+--(0.002,7.154)
+--(4.322,7.154)
+..controls(4.652,6.265)and(5.012,5.66)
+..(5.402,5.34)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(79, 0.016FX#, 11.49FY#, -8.16FY#); "";
+fill((-3.688,8.16)
+--(-2.729,8.16)
+--(-2.729,8.685)
+..controls(-2.889,8.685)and(-2.969,8.78)
+..(-2.969,8.97)
+..controls(-2.969,9.13)and(-2.914,9.275)
+..(-2.804,9.405)
+..controls(-2.694,9.535)and(-2.554,9.6)
+..(-2.383,9.6)
+..controls(-2.203,9.6)and(-2.058,9.53)
+..(-1.948,9.39)
+..controls(-1.838,9.25)and(-1.783,9.105)
+..(-1.783,8.955)
+..controls(-1.783,8.785)and(-1.848,8.7)
+..(-1.979,8.7)
+--(-1.979,8.16)
+--(-1.018,8.16)
+--(-1.018,9.825)
+..controls(-1.018,10.235)and(-1.478,10.44)
+..(-2.398,10.44)
+..controls(-2.578,10.44)and(-2.883,10.433)
+..(-3.313,10.417)
+..controls(-3.743,10.402)and(-4.073,10.395)
+..(-4.303,10.395)
+..controls(-5.723,10.395)and(-6.508,10.76)
+..(-6.658,11.49)
+--(-6.838,11.49)
+..controls(-6.908,10.88)and(-6.648,10.378)
+..(-6.058,9.983)
+..controls(-5.468,9.588)and(-4.678,9.39)
+..(-3.688,9.39)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(80, 4.289FX#, 1.711FY#, 0FY#); "";
+fill((2.912,1.711)
+--(1.262,1.711)
+--(1.262,0)
+--(2.912,0)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(81, 7.92FX#, 8.01FY#, 0.195FY#); "";
+fill((7.682,7.154)
+--(6.932,7.154)
+--(6.932,4.004)
+--(2.283,4.004)
+..controls(2.283,2.964)and(2.423,2.26)
+..(2.703,1.89)
+..controls(3.173,2.5)and(3.888,2.805)
+..(4.847,2.805)
+..controls(5.477,2.805)and(6.019,2.662)
+..(6.474,2.377)
+..controls(6.929,2.092)and(7.156,1.71)
+..(7.156,1.23)
+..controls(7.156,0.81)and(6.956,0.467)
+..(6.556,0.202)
+..controls(6.156,-0.063)and(5.612,-0.195)
+..(4.922,-0.195)
+..controls(3.712,-0.195)and(2.792,0.23)
+..(2.162,1.079)
+..controls(1.602,1.819)and(1.322,2.794)
+..(1.322,4.004)
+--(0.482,4.004)
+..controls(0.482,4.684)and(0.602,5.137)
+..(0.843,5.362)
+..controls(1.083,5.587)and(1.563,5.699)
+..(2.283,5.699)
+--(2.283,4.859)
+--(5.971,4.859)
+--(5.971,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.682,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((6.211,1.23)
+..controls(6.211,1.44)and(6.086,1.61)
+..(5.836,1.74)
+..controls(5.586,1.87)and(5.291,1.936)
+..(4.951,1.936)
+..controls(4.172,1.936)and(3.672,1.7)
+..(3.452,1.23)
+..controls(3.722,0.829)and(4.237,0.629)
+..(4.996,0.629)
+..controls(5.336,0.629)and(5.624,0.684)
+..(5.859,0.794)
+..controls(6.093,0.904)and(6.211,1.049)
+..(6.211,1.23)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(82, 7.26FX#, 8.01FY#, 0FY#); "";
+fill((0.722,1.35)
+--(1.382,0)
+--(2.342,0)
+--(1.892,1.26)
+..controls(2.572,0.9)and(3.292,0.72)
+..(4.052,0.72)
+..controls(4.372,0.72)and(4.622,0.77)
+..(4.802,0.87)
+--(5.552,0)
+--(6.632,0)
+--(5.552,1.14)
+..controls(6.282,1.64)and(6.647,2.25)
+..(6.647,2.97)
+..controls(6.647,3.71)and(6.252,4.32)
+..(5.462,4.8)
+..controls(5.812,5.05)and(6.082,5.414)
+..(6.272,5.894)
+..controls(6.452,6.304)and(6.542,6.724)
+..(6.542,7.154)
+--(7.022,7.154)
+--(7.022,8.01)
+--(0.002,8.01)
+--(0.002,7.154)
+--(5.702,7.154)
+..controls(5.702,6.684)and(5.542,6.235)
+..(5.222,5.805)
+..controls(4.842,5.295)and(4.382,5.08)
+..(3.842,5.16)
+..controls(3.232,5.25)and(2.717,5.295)
+..(2.297,5.295)
+..controls(1.207,5.295)and(0.662,5.01)
+..(0.662,4.44)
+..controls(0.662,3.969)and(1.127,3.734)
+..(2.057,3.734)
+..controls(2.597,3.734)and(3.082,3.799)
+..(3.512,3.929)
+..controls(3.782,4.009)and(4.037,4.049)
+..(4.277,4.049)
+..controls(4.697,4.049)and(5.032,3.936)
+..(5.282,3.711)
+..controls(5.532,3.487)and(5.657,3.224)
+..(5.657,2.924)
+..controls(5.657,2.564)and(5.497,2.269)
+..(5.177,2.04)
+..controls(4.807,1.77)and(4.292,1.65)
+..(3.632,1.68)
+..controls(3.422,1.69)and(3.012,1.817)
+..(2.402,2.062)
+..controls(1.792,2.307)and(1.347,2.43)
+..(1.067,2.43)
+..controls(0.667,2.43)and(0.467,2.31)
+..(0.467,2.07)
+..controls(0.467,1.95)and(0.552,1.71)
+..(0.722,1.35)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(83, 8.189FX#, 8.01FY#, 0.09FY#); "";
+fill((6.242,7.154)
+--(6.242,4.02)
+--(2.882,4.02)
+..controls(2.692,5.279)and(2.452,6.324)
+..(2.162,7.154)
+--cycle) xscaled FX yscaled FY;
+fill((4.353,0.9)
+..controls(4.493,0.9)and(4.61,0.853)
+..(4.705,0.758)
+..controls(4.8,0.663)and(4.848,0.545)
+..(4.848,0.405)
+..controls(4.848,0.275)and(4.8,0.16)
+..(4.705,0.06)
+..controls(4.61,-0.04)and(4.493,-0.09)
+..(4.353,-0.09)
+..controls(4.223,-0.09)and(4.107,-0.04)
+..(4.007,0.06)
+..controls(3.907,0.16)and(3.857,0.275)
+..(3.857,0.405)
+..controls(3.857,0.545)and(3.907,0.663)
+..(4.007,0.758)
+..controls(4.107,0.853)and(4.223,0.9)
+..(4.353,0.9)
+--cycle) xscaled FX yscaled FY;
+fill((7.952,8.01)
+--(0.002,8.01)
+--(0.002,7.154)
+--(1.082,7.154)
+..controls(1.382,6.504)and(1.662,5.379)
+..(1.922,3.78)
+--(1.772,3.18)
+..controls(1.522,2.88)and(1.307,2.52)
+..(1.127,2.1)
+..controls(0.947,1.65)and(0.857,1.25)
+..(0.857,0.9)
+..controls(0.857,0.28)and(1.132,-0.04)
+..(1.682,-0.06)
+..controls(2.132,-0.08)and(2.452,0.335)
+..(2.642,1.185)
+..controls(2.702,1.445)and(2.782,2.106)
+..(2.882,3.166)
+--(6.242,3.166)
+--(6.242,0)
+--(7.202,0)
+--(7.202,7.154)
+--(7.952,7.154)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(84, 8.34FX#, 8.01FY#, 0.18FY#); "";
+fill((8.102,7.154)
+--(4.623,7.154)
+--(4.623,5.311)
+..controls(5.243,5.311)and(5.908,5.026)
+..(6.618,4.456)
+..controls(7.388,3.825)and(7.773,3.15)
+..(7.773,2.43)
+..controls(7.773,1.68)and(7.433,1.058)
+..(6.753,0.563)
+..controls(6.073,0.068)and(5.203,-0.18)
+..(4.143,-0.18)
+..controls(3.082,-0.18)and(2.212,0.068)
+..(1.532,0.563)
+..controls(0.852,1.058)and(0.512,1.68)
+..(0.512,2.43)
+..controls(0.512,3.15)and(0.897,3.825)
+..(1.667,4.456)
+..controls(2.377,5.026)and(3.042,5.311)
+..(3.662,5.311)
+--(3.662,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(8.102,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((6.723,2.401)
+..controls(6.723,2.941)and(6.463,3.406)
+..(5.943,3.796)
+..controls(5.423,4.186)and(4.823,4.381)
+..(4.143,4.381)
+..controls(3.463,4.381)and(2.863,4.186)
+..(2.343,3.796)
+..controls(1.823,3.406)and(1.563,2.941)
+..(1.563,2.401)
+..controls(1.563,2.021)and(1.845,1.646)
+..(2.41,1.276)
+..controls(2.975,0.906)and(3.553,0.721)
+..(4.143,0.721)
+..controls(4.733,0.721)and(5.31,0.906)
+..(5.875,1.276)
+..controls(6.44,1.646)and(6.723,2.021)
+..(6.723,2.401)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(85, 0.016FX#, -1.381FY#, 2.385FY#); "";
+fill((-1.588,-2.266)
+..controls(-2.488,-2.345)and(-3.263,-2.385)
+..(-3.913,-2.385)
+..controls(-4.553,-2.385)and(-5.323,-2.345)
+..(-6.223,-2.266)
+--(-6.223,-1.381)
+..controls(-5.323,-1.46)and(-4.553,-1.5)
+..(-3.913,-1.5)
+..controls(-3.263,-1.5)and(-2.488,-1.46)
+..(-1.588,-1.381)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(86, 7.26FX#, 8.01FY#, 0.09FY#); "";
+fill((0.002,7.125)
+--(5.732,7.125)
+..controls(5.732,6.535)and(5.607,6)
+..(5.357,5.52)
+..controls(5.047,4.96)and(4.647,4.68)
+..(4.157,4.68)
+..controls(3.987,4.68)and(3.647,4.715)
+..(3.137,4.785)
+..controls(2.627,4.855)and(2.247,4.891)
+..(1.997,4.891)
+..controls(1.287,4.891)and(0.932,4.661)
+..(0.932,4.2)
+..controls(0.932,3.75)and(1.312,3.525)
+..(2.072,3.525)
+..controls(2.352,3.525)and(2.727,3.555)
+..(3.197,3.615)
+..controls(3.807,3.695)and(4.157,3.74)
+..(4.247,3.75)
+..controls(4.737,3.79)and(5.147,3.64)
+..(5.477,3.3)
+..controls(5.757,3)and(5.897,2.67)
+..(5.897,2.31)
+..controls(5.897,2.24)and(5.887,2.17)
+..(5.867,2.1)
+..controls(5.627,1.3)and(4.902,0.91)
+..(3.692,0.93)
+..controls(2.562,0.95)and(1.592,1.34)
+..(0.782,2.1)
+..controls(0.752,2.12)and(0.719,2.098)
+..(0.684,2.033)
+..controls(0.649,1.968)and(0.612,1.95)
+..(0.572,1.98)
+..controls(0.822,1.29)and(1.292,0.76)
+..(1.982,0.39)
+..controls(2.572,0.07)and(3.227,-0.09)
+..(3.947,-0.09)
+..controls(4.447,-0.09)and(4.872,-0.01)
+..(5.222,0.15)
+..controls(5.712,0.38)and(6.102,0.695)
+..(6.392,1.095)
+..controls(6.682,1.495)and(6.827,1.92)
+..(6.827,2.37)
+..controls(6.827,3.12)and(6.432,3.77)
+..(5.642,4.32)
+..controls(5.992,4.58)and(6.267,5.015)
+..(6.467,5.625)
+..controls(6.617,6.115)and(6.692,6.615)
+..(6.692,7.125)
+--(7.022,7.125)
+--(7.022,8.01)
+--(0.002,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(87, 8.01FX#, 8.01FY#, 0FY#); "";
+fill((6.061,2.625)
+--(6.061,4.199)
+--(1.922,4.199)
+..controls(1.922,3.809)and(1.812,3.389)
+..(1.592,2.939)
+..controls(2.432,2.1)and(3.341,1.68)
+..(4.321,1.68)
+..controls(5.121,1.68)and(5.701,1.995)
+..(6.061,2.625)
+--cycle) xscaled FX yscaled FY;
+fill((2.012,5.055)
+--(6.061,5.055)
+--(6.061,7.154)
+--(1.517,7.154)
+..controls(1.777,6.664)and(1.942,5.965)
+..(2.012,5.055)
+--cycle) xscaled FX yscaled FY;
+fill((0.482,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.772,8.01)
+--(7.772,7.154)
+--(7.021,7.154)
+--(7.021,0)
+--(6.061,0)
+--(6.061,1.38)
+..controls(5.611,0.96)and(5.051,0.75)
+..(4.381,0.75)
+..controls(3.621,0.75)and(2.831,0.995)
+..(2.012,1.485)
+..controls(1.272,1.925)and(0.762,2.39)
+..(0.482,2.88)
+..controls(0.872,3.46)and(1.066,4.215)
+..(1.066,5.145)
+..controls(1.066,6.044)and(0.872,6.714)
+..(0.482,7.154)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(88, 0.016FX#, -0.359FY#, 3.045FY#); "";
+fill((-1.018,-0.359)
+--(-1.018,-1.229)
+--(-2.909,-1.229)
+..controls(-3.079,-1.229)and(-3.164,-1.319)
+..(-3.164,-1.499)
+..controls(-3.164,-1.69)and(-3.059,-1.785)
+..(-2.849,-1.785)
+--(-1.018,-1.785)
+--(-1.018,-2.1)
+--(-2.324,-2.1)
+..controls(-2.324,-2.52)and(-2.008,-2.73)
+..(-1.378,-2.73)
+..controls(-1.348,-2.73)and(-1.288,-2.73)
+..(-1.198,-2.73)
+..controls(-1.118,-2.73)and(-1.058,-2.73)
+..(-1.018,-2.73)
+--(-1.018,-3.045)
+--(-1.303,-3.045)
+..controls(-1.723,-3.045)and(-2.058,-2.96)
+..(-2.308,-2.79)
+..controls(-2.558,-2.62)and(-2.688,-2.389)
+..(-2.698,-2.099)
+..controls(-3.218,-2.079)and(-3.479,-1.874)
+..(-3.479,-1.484)
+..controls(-3.479,-1.334)and(-3.416,-1.199)
+..(-3.291,-1.079)
+..controls(-3.166,-0.958)and(-3.003,-0.898)
+..(-2.803,-0.898)
+--(-1.377,-0.898)
+--(-1.377,-0.359)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(89, 8.01FX#, 8.01FY#, 0FY#); "";
+fill((1.592,3.389)
+..controls(2.432,2.549)and(3.341,2.129)
+..(4.321,2.129)
+..controls(5.121,2.129)and(5.701,2.444)
+..(6.061,3.074)
+--(6.061,7.154)
+--(1.517,7.154)
+..controls(1.877,6.424)and(2.057,5.709)
+..(2.057,5.009)
+..controls(2.057,4.359)and(1.902,3.819)
+..(1.592,3.389)
+--cycle) xscaled FX yscaled FY;
+fill((0.482,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.772,8.01)
+--(7.772,7.154)
+--(7.021,7.154)
+--(7.021,0)
+--(6.061,0)
+--(6.061,1.83)
+..controls(5.611,1.409)and(5.051,1.199)
+..(4.381,1.199)
+..controls(3.621,1.199)and(2.831,1.444)
+..(2.012,1.934)
+..controls(1.272,2.374)and(0.762,2.839)
+..(0.482,3.329)
+..controls(0.872,3.909)and(1.066,4.584)
+..(1.066,5.354)
+..controls(1.066,6.114)and(0.872,6.714)
+..(0.482,7.154)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(90, 9.27FX#, 8.01FY#, 0.18FY#); "";
+fill((4.441,1.456)
+..controls(4.441,0.936)and(4.061,0.676)
+..(3.302,0.676)
+..controls(2.942,0.676)and(2.547,0.891)
+..(2.117,1.321)
+..controls(1.647,1.791)and(1.412,2.261)
+..(1.412,2.731)
+..controls(1.412,2.991)and(1.477,3.216)
+..(1.607,3.406)
+..controls(1.787,3.676)and(2.062,3.811)
+..(2.432,3.811)
+--(4.441,3.811)
+--cycle) xscaled FX yscaled FY;
+fill((4.441,7.154)
+--(4.441,4.664)
+--(2.282,4.664)
+..controls(1.672,4.664)and(1.202,4.459)
+..(0.873,4.049)
+..controls(0.593,3.699)and(0.453,3.259)
+..(0.453,2.73)
+..controls(0.453,1.97)and(0.738,1.305)
+..(1.308,0.735)
+..controls(1.918,0.125)and(2.673,-0.18)
+..(3.572,-0.18)
+..controls(4.792,-0.18)and(5.402,0.33)
+..(5.402,1.35)
+--(5.402,7.154)
+--(7.322,7.154)
+--(7.322,0)
+--(8.283,0)
+--(8.283,7.154)
+--(9.033,7.154)
+--(9.033,8.01)
+--(0.003,8.01)
+--(0.003,7.154)
+--cycle) xscaled FX yscaled FY;
+fill((0.468,0.9)
+..controls(0.608,0.9)and(0.725,0.853)
+..(0.82,0.758)
+..controls(0.915,0.663)and(0.963,0.545)
+..(0.963,0.405)
+..controls(0.963,0.275)and(0.915,0.16)
+..(0.82,0.06)
+..controls(0.725,-0.04)and(0.608,-0.09)
+..(0.468,-0.09)
+..controls(0.338,-0.09)and(0.223,-0.04)
+..(0.123,0.06)
+..controls(0.023,0.16)and(-0.027,0.275)
+..(-0.027,0.405)
+..controls(-0.027,0.545)and(0.023,0.663)
+..(0.123,0.758)
+..controls(0.223,0.853)and(0.338,0.9)
+..(0.468,0.9)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(91, 4.289FX#, 10.949FY#, 3.301FY#); "";
+fill((0.99,10.949)
+--(0.99,-3.301)
+--(3.63,-3.301)
+--(3.63,-1.92)
+--(2.37,-1.92)
+--(2.37,9.57)
+--(3.63,9.57)
+--(3.63,10.949)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(92, 5.775FX#, 8.01FY#, 0FY#); "";
+fill((4.576,6.225)
+..controls(4.576,5.735)and(4.401,5.318)
+..(4.051,4.973)
+..controls(3.701,4.628)and(3.281,4.455)
+..(2.791,4.455)
+..controls(2.301,4.455)and(1.881,4.628)
+..(1.531,4.973)
+..controls(1.181,5.318)and(1.006,5.735)
+..(1.006,6.225)
+..controls(1.006,6.725)and(1.181,7.147)
+..(1.531,7.492)
+..controls(1.881,7.837)and(2.301,8.01)
+..(2.791,8.01)
+..controls(3.291,8.01)and(3.714,7.837)
+..(4.059,7.492)
+..controls(4.404,7.147)and(4.576,6.725)
+..(4.576,6.225)
+--cycle) xscaled FX yscaled FY;
+fill((4.576,1.77)
+..controls(4.576,1.28)and(4.404,0.862)
+..(4.059,0.517)
+..controls(3.714,0.172)and(3.291,0)
+..(2.791,0)
+..controls(2.291,0)and(1.868,0.172)
+..(1.523,0.517)
+..controls(1.178,0.862)and(1.006,1.28)
+..(1.006,1.77)
+..controls(1.006,2.249)and(1.181,2.664)
+..(1.531,3.014)
+..controls(1.881,3.364)and(2.301,3.539)
+..(2.791,3.539)
+..controls(3.281,3.539)and(3.701,3.364)
+..(4.051,3.014)
+..controls(4.401,2.664)and(4.576,2.249)
+..(4.576,1.77)
+--cycle) xscaled FX yscaled FY;
+fill((2.791,7.096)
+..controls(2.541,7.096)and(2.318,7.011)
+..(2.123,6.841)
+..controls(1.928,6.671)and(1.83,6.466)
+..(1.83,6.226)
+..controls(1.83,5.996)and(1.928,5.793)
+..(2.123,5.618)
+..controls(2.318,5.443)and(2.541,5.355)
+..(2.791,5.355)
+..controls(3.041,5.355)and(3.264,5.443)
+..(3.459,5.618)
+..controls(3.654,5.793)and(3.752,5.996)
+..(3.752,6.226)
+..controls(3.752,6.466)and(3.654,6.671)
+..(3.459,6.841)
+..controls(3.264,7.011)and(3.041,7.096)
+..(2.791,7.096)
+--cycle) xscaled FX yscaled FY;
+fill((3.752,1.77)
+..controls(3.752,2)and(3.654,2.2)
+..(3.459,2.37)
+..controls(3.264,2.54)and(3.041,2.625)
+..(2.791,2.625)
+..controls(2.541,2.625)and(2.318,2.54)
+..(2.123,2.37)
+..controls(1.928,2.2)and(1.83,2)
+..(1.83,1.77)
+..controls(1.83,1.53)and(1.928,1.325)
+..(2.123,1.155)
+..controls(2.318,0.985)and(2.541,0.9)
+..(2.791,0.9)
+..controls(3.041,0.9)and(3.264,0.985)
+..(3.459,1.155)
+..controls(3.654,1.325)and(3.752,1.53)
+..(3.752,1.77)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(93, 4.289FX#, 10.949FY#, 3.301FY#); "";
+fill((3.181,-3.301)
+--(3.181,10.949)
+--(0.541,10.949)
+--(0.541,9.57)
+--(1.801,9.57)
+--(1.801,-1.92)
+--(0.541,-1.92)
+--(0.541,-3.301)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(94, 0.016FX#, 10.785FY#, -7.154FY#); "";
+fill((1.232,8.609)
+--(0.631,8.609)
+..controls(0.752,8.689)and(0.813,8.839)
+..(0.813,9.059)
+..controls(0.813,9.279)and(0.735,9.454)
+..(0.58,9.584)
+..controls(0.425,9.714)and(0.242,9.779)
+..(0.032,9.779)
+..controls(-0.469,9.779)and(-0.719,9.539)
+..(-0.719,9.059)
+..controls(-0.719,8.859)and(-0.669,8.709)
+..(-0.569,8.609)
+--(-1.139,8.609)
+..controls(-1.419,9)and(-1.559,9.35)
+..(-1.559,9.66)
+..controls(-1.559,10.01)and(-1.399,10.285)
+..(-1.078,10.485)
+..controls(-0.758,10.685)and(-0.383,10.785)
+..(0.047,10.785)
+..controls(0.477,10.785)and(0.852,10.685)
+..(1.172,10.485)
+..controls(1.492,10.285)and(1.652,10.01)
+..(1.652,9.66)
+..controls(1.652,9.35)and(1.512,9)
+..(1.232,8.609)
+--cycle) xscaled FX yscaled FY;
+fill((1.801,7.154)
+--(0,7.154)
+--(0,8.01)
+--(1.801,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(95, 8.4FX#, -1.32FY#, 2.49FY#); "";
+fill((0.002,-1.32)
+--(0.002,-2.49)
+--(8.342,-2.49)
+--(8.342,-1.32)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(96, 5.16FX#, 11.25FY#, -9.061FY#); "";
+fill((2.881,11.25)
+--(1.111,11.25)
+--(2.791,9.061)
+--(3.901,9.061)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(97, 11.16FX#, 8.01FY#, 0FY#); "";
+fill((1.892,3.75)
+..controls(1.392,2.92)and(1.142,2.18)
+..(1.142,1.53)
+..controls(1.142,0.95)and(1.342,0.66)
+..(1.742,0.66)
+..controls(2.601,0.66)and(3.031,1.365)
+..(3.031,2.775)
+..controls(3.031,3.135)and(3.001,3.535)
+..(2.942,3.975)
+..controls(3.092,4.305)and(3.337,4.66)
+..(3.677,5.04)
+..controls(4.057,5.47)and(4.432,5.775)
+..(4.802,5.955)
+..controls(5.022,5.765)and(5.282,5.395)
+..(5.582,4.845)
+..controls(5.882,4.265)and(6.032,3.83)
+..(6.032,3.54)
+..controls(5.652,3.22)and(5.329,2.795)
+..(5.064,2.265)
+..controls(4.799,1.735)and(4.666,1.265)
+..(4.666,0.855)
+..controls(4.666,0.285)and(4.911,0)
+..(5.401,0)
+..controls(5.731,0)and(6.054,0.33)
+..(6.369,0.99)
+..controls(6.684,1.65)and(6.871,2.375)
+..(6.931,3.165)
+--(9.212,3.165)
+--(9.212,0)
+--(10.172,0)
+--(10.172,7.155)
+--(10.922,7.155)
+--(10.922,8.01)
+--(9.212,8.01)
+--(9.212,4.02)
+--(6.932,4.02)
+..controls(6.652,4.79)and(6.412,5.345)
+..(6.212,5.685)
+..controls(5.832,6.335)and(5.382,6.75)
+..(4.862,6.93)
+..controls(4.492,6.84)and(4.067,6.595)
+..(3.587,6.195)
+..controls(3.107,5.795)and(2.772,5.42)
+..(2.582,5.07)
+..controls(2.482,5.5)and(2.312,6)
+..(2.072,6.57)
+..controls(1.792,7.23)and(1.527,7.71)
+..(1.277,8.01)
+--(0.002,8.01)
+--(0.002,7.155)
+--(0.752,7.155)
+..controls(0.972,6.855)and(1.217,6.325)
+..(1.487,5.565)
+..controls(1.757,4.775)and(1.892,4.17)
+..(1.892,3.75)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(98, 8.43FX#, 8.01FY#, 0FY#); "";
+fill((8.192,7.154)
+--(7.441,7.154)
+--(7.441,0)
+--(6.48,0)
+--(6.48,0.96)
+..controls(5.901,0.679)and(5.311,0.539)
+..(4.711,0.539)
+..controls(3.411,0.539)and(2.212,1.199)
+..(1.112,2.519)
+..controls(1.362,3.389)and(1.902,4.009)
+..(2.732,4.379)
+..controls(2.182,4.609)and(1.722,5.039)
+..(1.352,5.669)
+..controls(1.282,5.779)and(1.052,6.274)
+..(0.662,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(8.192,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((6.48,4.875)
+--(6.48,7.154)
+--(1.697,7.154)
+..controls(1.927,6.075)and(2.562,5.315)
+..(3.601,4.875)
+--cycle) xscaled FX yscaled FY;
+fill((6.48,1.875)
+--(6.48,4.02)
+--(4.741,4.02)
+..controls(4.041,4.02)and(3.487,3.9)
+..(3.077,3.66)
+..controls(2.777,3.48)and(2.502,3.19)
+..(2.252,2.79)
+..controls(2.522,2.38)and(2.902,2.045)
+..(3.392,1.785)
+..controls(3.881,1.525)and(4.391,1.395)
+..(4.921,1.395)
+..controls(5.501,1.395)and(6.021,1.555)
+..(6.48,1.875)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(99, 8.25FX#, 8.01FY#, 0FY#); "";
+fill((8.042,0)
+--(7.052,0)
+..controls(6.892,1.02)and(6.617,1.74)
+..(6.227,2.16)
+..controls(5.987,1.88)and(5.527,1.618)
+..(4.847,1.373)
+..controls(4.167,1.128)and(3.572,1.006)
+..(3.062,1.006)
+..controls(2.252,1.006)and(1.617,1.211)
+..(1.157,1.621)
+..controls(0.737,2.001)and(0.527,2.461)
+..(0.527,3.001)
+..controls(0.527,3.57)and(0.747,4.055)
+..(1.187,4.455)
+..controls(1.667,4.895)and(2.302,5.115)
+..(3.092,5.115)
+..controls(3.552,5.115)and(4.101,5)
+..(4.741,4.77)
+..controls(5.381,4.54)and(5.826,4.29)
+..(6.076,4.02)
+..controls(6.276,4.25)and(6.441,4.755)
+..(6.571,5.535)
+..controls(6.671,6.155)and(6.721,6.694)
+..(6.721,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(8.012,8.01)
+--(8.012,7.154)
+--(7.682,7.154)
+..controls(7.682,6.564)and(7.607,5.914)
+..(7.457,5.204)
+..controls(7.267,4.305)and(7.012,3.62)
+..(6.692,3.15)
+..controls(7.342,2.32)and(7.792,1.27)
+..(8.042,0)
+--cycle) xscaled FX yscaled FY;
+fill((5.642,3.061)
+..controls(5.362,3.41)and(4.922,3.71)
+..(4.322,3.96)
+..controls(3.812,4.16)and(3.392,4.26)
+..(3.062,4.26)
+..controls(2.592,4.26)and(2.225,4.142)
+..(1.96,3.908)
+..controls(1.695,3.673)and(1.563,3.39)
+..(1.563,3.061)
+..controls(1.563,2.741)and(1.695,2.461)
+..(1.96,2.221)
+..controls(2.225,1.981)and(2.592,1.861)
+..(3.062,1.861)
+..controls(3.402,1.861)and(3.857,1.981)
+..(4.427,2.221)
+..controls(5.077,2.481)and(5.482,2.761)
+..(5.642,3.061)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(100, 7.561FX#, 8.01FY#, 0.18FY#); "";
+fill((7.322,7.154)
+--(6.992,7.154)
+--(6.992,3.645)
+--(2.372,3.645)
+..controls(2.612,1.665)and(3.392,0.676)
+..(4.712,0.676)
+..controls(5.122,0.676)and(5.584,0.918)
+..(6.099,1.403)
+..controls(6.614,1.888)and(6.952,2.13)
+..(7.112,2.13)
+--(7.262,2.13)
+..controls(7.252,1.49)and(6.967,0.935)
+..(6.407,0.465)
+..controls(5.887,0.035)and(5.322,-0.18)
+..(4.712,-0.18)
+..controls(3.642,-0.18)and(2.822,0.215)
+..(2.252,1.005)
+..controls(1.782,1.655)and(1.502,2.535)
+..(1.412,3.645)
+--(0.572,3.645)
+--(0.572,4.08)
+..controls(0.572,4.62)and(0.657,4.99)
+..(0.827,5.19)
+..controls(1.027,5.44)and(1.402,5.565)
+..(1.952,5.565)
+--(2.372,5.565)
+--(2.372,4.5)
+--(6.031,4.5)
+--(6.031,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.322,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(101, 7.471FX#, 8.01FY#, 0.164FY#); "";
+fill((7.262,2.13)
+..controls(7.252,1.49)and(6.967,0.941)
+..(6.407,0.481)
+..controls(5.887,0.051)and(5.322,-0.164)
+..(4.712,-0.164)
+..controls(3.752,-0.164)and(2.917,0.086)
+..(2.207,0.586)
+..controls(1.687,1.006)and(1.172,1.421)
+..(0.662,1.831)
+..controls(0.662,2.26)and(0.827,2.73)
+..(1.157,3.24)
+..controls(1.407,3.64)and(1.702,3.98)
+..(2.042,4.26)
+..controls(1.252,4.81)and(0.732,5.775)
+..(0.482,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.232,8.01)
+--(7.232,7.154)
+--(6.902,7.154)
+--(6.902,3.75)
+--(6.242,3.75)
+..controls(5.242,3.86)and(4.472,3.86)
+..(3.932,3.75)
+..controls(2.772,3.51)and(2.072,3.05)
+..(1.832,2.371)
+..controls(1.852,2.351)and(2.107,2.136)
+..(2.597,1.726)
+..controls(2.967,1.406)and(3.282,1.171)
+..(3.542,1.021)
+..controls(3.902,0.801)and(4.222,0.691)
+..(4.502,0.691)
+..controls(4.852,0.691)and(5.334,0.931)
+..(5.949,1.411)
+..controls(6.564,1.89)and(6.952,2.13)
+..(7.112,2.13)
+--cycle) xscaled FX yscaled FY;
+fill((5.941,4.666)
+--(5.941,7.154)
+--(1.472,7.154)
+..controls(1.542,6.675)and(1.697,6.215)
+..(1.937,5.775)
+..controls(2.217,5.256)and(2.562,4.886)
+..(2.972,4.666)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(102, 7.59FX#, 8.01FY#, 0.164FY#); "";
+fill((7.352,7.154)
+--(7.021,7.154)
+--(7.021,4.529)
+--(2.851,4.529)
+..controls(2.011,4.529)and(1.586,4.179)
+..(1.576,3.48)
+..controls(1.576,2.91)and(1.881,2.31)
+..(2.491,1.68)
+..controls(2.681,2.13)and(3.027,2.485)
+..(3.527,2.745)
+..controls(3.977,2.975)and(4.477,3.09)
+..(5.027,3.09)
+..controls(5.617,3.09)and(6.107,2.96)
+..(6.497,2.7)
+..controls(6.928,2.41)and(7.143,2.02)
+..(7.143,1.53)
+..controls(7.143,1.021)and(6.918,0.611)
+..(6.467,0.301)
+..controls(6.017,-0.009)and(5.462,-0.164)
+..(4.802,-0.164)
+..controls(4.152,-0.164)and(3.517,-0.014)
+..(2.897,0.286)
+..controls(2.217,0.616)and(1.642,1.101)
+..(1.172,1.741)
+..controls(0.792,2.26)and(0.602,2.845)
+..(0.602,3.495)
+..controls(0.602,4.045)and(0.762,4.485)
+..(1.081,4.815)
+..controls(1.471,5.195)and(2.061,5.385)
+..(2.851,5.385)
+--(6.061,5.385)
+--(6.061,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.352,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((6.332,1.53)
+..controls(6.332,2.01)and(5.902,2.25)
+..(5.042,2.25)
+..controls(4.622,2.25)and(4.257,2.175)
+..(3.947,2.025)
+..controls(3.597,1.865)and(3.422,1.66)
+..(3.422,1.41)
+..controls(3.422,1.18)and(3.567,0.998)
+..(3.857,0.863)
+..controls(4.147,0.728)and(4.487,0.66)
+..(4.877,0.66)
+..controls(5.267,0.66)and(5.607,0.735)
+..(5.897,0.885)
+..controls(6.187,1.035)and(6.332,1.25)
+..(6.332,1.53)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(103, 9.27FX#, 8.01FY#, 0.18FY#); "";
+fill((4.441,1.456)
+..controls(4.441,0.936)and(4.061,0.676)
+..(3.302,0.676)
+..controls(2.942,0.676)and(2.547,0.891)
+..(2.117,1.321)
+..controls(1.647,1.791)and(1.412,2.261)
+..(1.412,2.731)
+..controls(1.412,2.991)and(1.477,3.216)
+..(1.607,3.406)
+..controls(1.787,3.676)and(2.062,3.811)
+..(2.432,3.811)
+--(4.441,3.811)
+--cycle) xscaled FX yscaled FY;
+fill((4.441,7.154)
+--(4.441,4.664)
+--(2.282,4.664)
+..controls(1.672,4.664)and(1.202,4.459)
+..(0.872,4.049)
+..controls(0.592,3.699)and(0.452,3.259)
+..(0.452,2.73)
+..controls(0.452,1.97)and(0.737,1.305)
+..(1.307,0.735)
+..controls(1.917,0.125)and(2.672,-0.18)
+..(3.572,-0.18)
+..controls(4.792,-0.18)and(5.402,0.33)
+..(5.402,1.35)
+--(5.402,7.154)
+--(7.322,7.154)
+--(7.322,0)
+--(8.282,0)
+--(8.282,7.154)
+--(9.032,7.154)
+--(9.032,8.01)
+--(0.002,8.01)
+--(0.002,7.154)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(104, 7.756FX#, 8.01FY#, 0.18FY#); "";
+fill((7.517,7.154)
+--(6.768,7.154)
+--(6.768,2.31)
+..controls(6.768,0.65)and(5.908,-0.18)
+..(4.188,-0.18)
+..controls(3.427,-0.18)and(2.84,-0.08)
+..(2.425,0.12)
+..controls(2.01,0.32)and(1.582,0.708)
+..(1.142,1.283)
+..controls(0.702,1.858)and(0.482,2.45)
+..(0.482,3.061)
+..controls(0.482,3.591)and(0.65,4.028)
+..(0.985,4.373)
+..controls(1.32,4.718)and(1.757,4.891)
+..(2.297,4.891)
+--(3.077,4.891)
+--(3.077,4.035)
+--(2.237,4.035)
+..controls(1.717,4.035)and(1.457,3.74)
+..(1.457,3.15)
+..controls(1.457,2.58)and(1.677,2.041)
+..(2.117,1.531)
+..controls(2.617,0.961)and(3.217,0.676)
+..(3.917,0.676)
+..controls(5.177,0.676)and(5.807,1.311)
+..(5.807,2.58)
+--(5.807,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.517,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(105, 2.85FX#, 10.484FY#, 0FY#); "";
+fill((4.471,8.279)
+--(3.51,8.279)
+--(3.51,8.669)
+..controls(3.51,8.899)and(3.445,9.104)
+..(3.315,9.284)
+..controls(3.155,9.514)and(2.92,9.629)
+..(2.61,9.629)
+..controls(2.301,9.629)and(2.066,9.514)
+..(1.906,9.284)
+..controls(1.776,9.104)and(1.711,8.899)
+..(1.711,8.669)
+--(1.711,8.01)
+--(2.609,8.01)
+--(2.609,7.154)
+--(1.711,7.154)
+--(1.711,0)
+--(0.75,0)
+--(0.75,7.154)
+--(0,7.154)
+--(0,8.01)
+--(0.75,8.01)
+--(0.75,8.7)
+..controls(0.75,9.18)and(0.935,9.597)
+..(1.305,9.952)
+..controls(1.675,10.307)and(2.11,10.484)
+..(2.61,10.484)
+..controls(3.11,10.484)and(3.546,10.304)
+..(3.916,9.944)
+..controls(4.286,9.584)and(4.471,9.159)
+..(4.471,8.669)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(106, 7.381FX#, 8.01FY#, 0FY#); "";
+fill((7.142,7.154)
+--(6.393,7.154)
+--(6.393,0)
+--(5.432,0)
+--(5.432,3.225)
+--(2.283,3.225)
+..controls(2.283,2.975)and(2.241,2.48)
+..(2.156,1.74)
+..controls(2.07,1)and(1.983,0.42)
+..(1.893,0)
+--(0.932,0)
+..controls(1.172,1.53)and(1.302,2.605)
+..(1.322,3.225)
+--(0.484,3.225)
+..controls(0.474,3.345)and(0.469,3.455)
+..(0.469,3.555)
+..controls(0.469,4.475)and(0.948,4.935)
+..(1.907,4.935)
+..controls(2.017,4.935)and(2.142,4.93)
+..(2.282,4.92)
+--(2.283,4.08)
+--(5.432,4.08)
+--(5.432,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.142,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(107, 8.01FX#, 8.01FY#, 0FY#); "";
+fill((7.771,7.154)
+--(7.021,7.154)
+--(7.021,0)
+--(6.061,0)
+--(6.061,1.38)
+..controls(5.611,0.96)and(5.051,0.75)
+..(4.381,0.75)
+..controls(3.621,0.75)and(2.831,0.995)
+..(2.012,1.485)
+..controls(1.272,1.925)and(0.762,2.39)
+..(0.482,2.88)
+..controls(0.872,3.46)and(1.066,4.215)
+..(1.066,5.145)
+..controls(1.066,6.044)and(0.872,6.714)
+..(0.482,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(1.292,8.01)
+..controls(1.712,7.17)and(1.952,6.285)
+..(2.012,5.355)
+--(6.061,5.355)
+--(6.061,8.01)
+--(7.771,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((6.061,2.625)
+--(6.061,4.5)
+--(2.012,4.5)
+..controls(1.982,3.99)and(1.842,3.47)
+..(1.592,2.94)
+..controls(2.432,2.1)and(3.341,1.68)
+..(4.321,1.68)
+..controls(5.121,1.68)and(5.701,1.995)
+..(6.061,2.625)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(108, 10.891FX#, 8.01FY#, 0.029FY#); "";
+fill((10.652,7.154)
+--(8.642,7.154)
+..controls(8.292,6.105)and(8.022,5.45)
+..(7.832,5.19)
+..controls(8.582,4.69)and(9.077,4.32)
+..(9.317,4.08)
+..controls(9.808,3.59)and(10.053,3.05)
+..(10.053,2.46)
+..controls(10.053,1.68)and(9.738,1.055)
+..(9.108,0.586)
+..controls(8.567,0.176)and(7.952,-0.029)
+..(7.262,-0.029)
+..controls(7.182,-0.029)and(7.047,-0.024)
+..(6.857,-0.015)
+..controls(6.667,-0.005)and(6.532,0)
+..(6.452,0)
+--(6.452,0.855)
+..controls(6.652,0.815)and(6.822,0.795)
+..(6.962,0.795)
+..controls(7.452,0.795)and(7.929,0.972)
+..(8.394,1.327)
+..controls(8.859,1.682)and(9.092,2.06)
+..(9.092,2.46)
+..controls(9.092,2.84)and(8.882,3.245)
+..(8.462,3.675)
+..controls(8.102,4.025)and(7.742,4.275)
+..(7.382,4.425)
+..controls(7.182,4.145)and(6.917,3.88)
+..(6.587,3.63)
+..controls(6.177,3.32)and(5.782,3.125)
+..(5.402,3.045)
+..controls(5.022,3.125)and(4.627,3.32)
+..(4.218,3.63)
+..controls(3.888,3.88)and(3.623,4.145)
+..(3.423,4.425)
+..controls(3.063,4.275)and(2.703,4.025)
+..(2.343,3.675)
+..controls(1.923,3.245)and(1.713,2.84)
+..(1.713,2.46)
+..controls(1.713,2.06)and(1.943,1.682)
+..(2.403,1.327)
+..controls(2.862,0.972)and(3.332,0.795)
+..(3.812,0.795)
+..controls(3.972,0.795)and(4.152,0.815)
+..(4.352,0.855)
+--(4.352,0)
+..controls(4.272,0)and(4.142,-0.005)
+..(3.962,-0.015)
+..controls(3.782,-0.024)and(3.652,-0.029)
+..(3.572,-0.029)
+..controls(2.882,-0.029)and(2.262,0.176)
+..(1.712,0.586)
+..controls(1.072,1.065)and(0.752,1.69)
+..(0.752,2.46)
+..controls(0.752,3.05)and(0.997,3.59)
+..(1.487,4.08)
+..controls(1.717,4.31)and(2.212,4.68)
+..(2.972,5.19)
+..controls(2.782,5.45)and(2.512,6.105)
+..(2.162,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(10.652,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((7.682,7.154)
+--(3.122,7.154)
+..controls(3.242,6.544)and(3.524,5.922)
+..(3.969,5.287)
+..controls(4.414,4.653)and(4.892,4.19)
+..(5.402,3.9)
+..controls(5.922,4.19)and(6.409,4.658)
+..(6.864,5.302)
+..controls(7.319,5.947)and(7.592,6.564)
+..(7.682,7.154)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(109, 8.189FX#, 8.01FY#, 0.09FY#); "";
+fill((6.242,4.02)
+--(2.882,4.02)
+..controls(2.822,4.44)and(2.687,5.095)
+..(2.477,5.985)
+..controls(2.247,6.925)and(2.062,7.6)
+..(1.922,8.01)
+--(0.002,8.01)
+--(0.002,7.155)
+--(1.082,7.155)
+..controls(1.382,6.505)and(1.662,5.38)
+..(1.922,3.78)
+--(1.772,3.18)
+..controls(1.522,2.88)and(1.307,2.52)
+..(1.127,2.1)
+..controls(0.947,1.65)and(0.857,1.25)
+..(0.857,0.9)
+..controls(0.857,0.279)and(1.132,-0.041)
+..(1.682,-0.061)
+..controls(2.132,-0.081)and(2.452,0.335)
+..(2.642,1.185)
+..controls(2.702,1.445)and(2.782,2.105)
+..(2.882,3.165)
+--(6.242,3.165)
+--(6.242,0)
+--(7.202,0)
+--(7.202,7.155)
+--(7.952,7.155)
+--(7.952,8.01)
+--(6.242,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(110, 8.07FX#, 8.01FY#, 0.029FY#); "";
+fill((7.832,7.154)
+--(4.473,7.154)
+--(4.473,5.61)
+..controls(5.472,4.99)and(6.167,4.485)
+..(6.557,4.095)
+..controls(7.187,3.455)and(7.502,2.75)
+..(7.502,1.98)
+..controls(7.502,1.34)and(7.212,0.836)
+..(6.632,0.466)
+..controls(6.112,0.136)and(5.473,-0.029)
+..(4.713,-0.029)
+--(4.713,0.826)
+..controls(4.733,0.826)and(4.768,0.826)
+..(4.818,0.826)
+..controls(4.868,0.826)and(4.903,0.826)
+..(4.923,0.826)
+..controls(5.272,0.826)and(5.629,0.959)
+..(5.994,1.223)
+..controls(6.359,1.488)and(6.541,1.771)
+..(6.541,2.07)
+..controls(6.541,2.62)and(6.241,3.185)
+..(5.641,3.764)
+..controls(5.091,4.294)and(4.541,4.624)
+..(3.992,4.754)
+..controls(3.442,4.624)and(2.887,4.294)
+..(2.327,3.764)
+..controls(1.717,3.185)and(1.412,2.62)
+..(1.412,2.07)
+..controls(1.412,1.771)and(1.602,1.486)
+..(1.982,1.216)
+..controls(2.332,0.956)and(2.682,0.826)
+..(3.032,0.826)
+..controls(3.052,0.826)and(3.092,0.826)
+..(3.152,0.826)
+..controls(3.211,0.826)and(3.251,0.826)
+..(3.271,0.826)
+--(3.271,-0.029)
+..controls(2.521,-0.029)and(1.881,0.136)
+..(1.351,0.466)
+..controls(0.751,0.836)and(0.451,1.34)
+..(0.451,1.98)
+..controls(0.451,2.75)and(0.776,3.455)
+..(1.426,4.095)
+..controls(1.806,4.475)and(2.502,4.98)
+..(3.512,5.61)
+--(3.512,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.832,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(111, 8.939FX#, 10.949FY#, 0.24FY#); "";
+fill((4.322,10.949)
+..controls(2.192,10.949)and(0.912,9.969)
+..(0.482,8.01)
+--(0.002,8.01)
+--(0.002,7.155)
+--(0.482,7.155)
+..controls(0.502,6.645)and(0.587,5.925)
+..(0.737,4.995)
+..controls(0.907,3.935)and(1.092,3.14)
+..(1.292,2.61)
+..controls(1.572,1.86)and(2.022,1.215)
+..(2.642,0.675)
+..controls(3.342,0.065)and(4.092,-0.24)
+..(4.892,-0.24)
+..controls(5.742,-0.24)and(6.402,0.01)
+..(6.872,0.51)
+..controls(7.272,0.94)and(7.472,1.48)
+..(7.472,2.13)
+..controls(7.472,2.79)and(7.292,3.35)
+..(6.932,3.81)
+..controls(7.362,4.17)and(7.717,4.695)
+..(7.997,5.385)
+..controls(8.247,6.015)and(8.372,6.605)
+..(8.372,7.155)
+--(8.702,7.155)
+--(8.702,8.01)
+--(1.592,8.01)
+..controls(1.702,8.62)and(2.037,9.105)
+..(2.597,9.465)
+..controls(3.097,9.785)and(3.672,9.945)
+..(4.322,9.945)
+--(6.842,9.945)
+--(6.842,10.949)
+--cycle) xscaled FX yscaled FY;
+fill((6.242,3.375)
+..controls(6.422,3.045)and(6.512,2.67)
+..(6.512,2.25)
+..controls(6.512,1.76)and(6.317,1.38)
+..(5.927,1.111)
+..controls(5.617,0.881)and(5.272,0.766)
+..(4.892,0.766)
+..controls(3.602,0.766)and(2.652,1.635)
+..(2.042,3.375)
+--cycle) xscaled FX yscaled FY;
+fill((7.262,7.006)
+..controls(7.262,6.586)and(7.167,6.116)
+..(6.977,5.596)
+..controls(6.757,4.976)and(6.482,4.571)
+..(6.152,4.381)
+--(1.772,4.381)
+..controls(1.632,4.841)and(1.562,5.441)
+..(1.562,6.181)
+..controls(1.562,6.231)and(1.567,6.371)
+..(1.577,6.601)
+..controls(1.587,6.831)and(1.592,6.966)
+..(1.592,7.006)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(112, 8.01FX#, 8.01FY#, 0FY#); "";
+fill((1.592,3.389)
+..controls(2.432,2.549)and(3.341,2.129)
+..(4.321,2.129)
+..controls(5.121,2.129)and(5.701,2.444)
+..(6.061,3.074)
+--(6.061,8.01)
+--(7.771,8.01)
+--(7.771,7.154)
+--(7.021,7.154)
+--(7.021,0)
+--(6.061,0)
+--(6.061,1.83)
+..controls(5.611,1.409)and(5.051,1.199)
+..(4.381,1.199)
+..controls(3.621,1.199)and(2.831,1.444)
+..(2.012,1.934)
+..controls(1.272,2.374)and(0.762,2.839)
+..(0.482,3.329)
+..controls(0.872,3.909)and(1.066,4.584)
+..(1.066,5.354)
+..controls(1.066,6.114)and(0.872,6.714)
+..(0.482,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(1.291,8.01)
+..controls(1.751,7.19)and(1.98,6.275)
+..(1.98,5.264)
+..controls(1.98,4.564)and(1.851,3.939)
+..(1.592,3.389)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(113, 0.016FX#, -0.359FY#, 2.76FY#); "";
+fill((0.753,-2.76)
+..controls(-0.067,-1.989)and(-0.917,-1.604)
+..(-1.797,-1.604)
+..controls(-2.037,-1.725)and(-2.287,-1.785)
+..(-2.547,-1.785)
+..controls(-2.887,-1.785)and(-3.057,-1.665)
+..(-3.057,-1.425)
+..controls(-3.057,-0.975)and(-2.697,-0.75)
+..(-1.977,-0.75)
+--(-1.977,-0.359)
+--(-1.016,-0.359)
+--(-1.016,-0.899)
+..controls(-0.146,-1.2)and(0.444,-1.82)
+..(0.753,-2.76)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(114, 8.07FX#, 8.01FY#, 0.164FY#); "";
+fill((7.832,7.154)
+--(7.082,7.154)
+--(7.082,2.01)
+..controls(7.082,1.411)and(6.87,0.898)
+..(6.445,0.473)
+..controls(6.02,0.048)and(5.482,-0.164)
+..(4.832,-0.164)
+..controls(4.002,-0.164)and(3.162,0.201)
+..(2.313,0.931)
+..controls(1.503,1.62)and(1.098,2.395)
+..(1.098,3.255)
+..controls(1.098,3.745)and(1.243,4.149)
+..(1.533,4.469)
+..controls(1.822,4.789)and(2.212,4.949)
+..(2.702,4.949)
+--(6.121,4.949)
+--(6.121,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.832,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((6.121,2.204)
+--(6.121,4.094)
+--(3.032,4.094)
+..controls(2.362,4.094)and(2.027,3.814)
+..(2.027,3.254)
+..controls(2.027,2.964)and(2.13,2.644)
+..(2.335,2.294)
+..controls(2.54,1.945)and(2.802,1.645)
+..(3.122,1.395)
+..controls(3.682,0.965)and(4.227,0.75)
+..(4.757,0.75)
+..controls(5.166,0.75)and(5.496,0.88)
+..(5.746,1.14)
+..controls(5.996,1.4)and(6.121,1.755)
+..(6.121,2.204)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(115, 8.189FX#, 8.01FY#, 0.09FY#); "";
+fill((6.242,7.154)
+--(6.242,4.02)
+--(2.882,4.02)
+..controls(2.692,5.279)and(2.452,6.324)
+..(2.162,7.154)
+--cycle) xscaled FX yscaled FY;
+fill((7.952,8.01)
+--(0.002,8.01)
+--(0.002,7.154)
+--(1.082,7.154)
+..controls(1.382,6.504)and(1.662,5.379)
+..(1.922,3.779)
+--(1.772,3.179)
+..controls(1.522,2.879)and(1.307,2.519)
+..(1.127,2.099)
+..controls(0.947,1.649)and(0.857,1.249)
+..(0.857,0.899)
+..controls(0.857,0.279)and(1.132,-0.041)
+..(1.682,-0.061)
+..controls(2.132,-0.081)and(2.452,0.335)
+..(2.642,1.185)
+..controls(2.702,1.445)and(2.782,2.105)
+..(2.882,3.165)
+--(6.242,3.165)
+--(6.242,0)
+--(7.202,0)
+--(7.202,7.154)
+--(7.952,7.154)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(116, 7.891FX#, 8.01FY#, 0.18FY#); "";
+fill((7.652,7.154)
+--(7.322,7.154)
+--(7.322,4.049)
+..controls(6.872,4.079)and(6.432,4.094)
+..(6.002,4.094)
+..controls(3.292,4.094)and(1.792,3.669)
+..(1.502,2.819)
+..controls(2.012,2.349)and(2.527,1.88)
+..(3.047,1.41)
+..controls(3.627,0.94)and(4.182,0.705)
+..(4.712,0.705)
+..controls(5.092,0.705)and(5.442,0.83)
+..(5.762,1.08)
+..controls(5.832,1.13)and(6.067,1.355)
+..(6.467,1.755)
+..controls(6.717,2.005)and(6.932,2.13)
+..(7.112,2.13)
+--(7.262,2.13)
+..controls(7.262,1.54)and(6.984,1.008)
+..(6.429,0.533)
+..controls(5.874,0.058)and(5.302,-0.18)
+..(4.712,-0.18)
+..controls(4.132,-0.18)and(3.464,0.08)
+..(2.709,0.6)
+..controls(1.954,1.12)and(1.212,1.83)
+..(0.482,2.73)
+..controls(0.812,3.63)and(1.427,4.229)
+..(2.327,4.529)
+..controls(3.077,4.779)and(4.362,4.904)
+..(6.181,4.904)
+--(6.361,4.904)
+--(6.361,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.652,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(117, 8.939FX#, 10.979FY#, 0.24FY#); "";
+fill((8.702,7.154)
+--(8.371,7.154)
+..controls(8.371,6.604)and(8.246,6.014)
+..(7.996,5.384)
+..controls(7.716,4.694)and(7.362,4.169)
+..(6.932,3.81)
+..controls(7.292,3.35)and(7.473,2.79)
+..(7.473,2.13)
+..controls(7.473,1.48)and(7.273,0.94)
+..(6.873,0.51)
+..controls(6.403,0.01)and(5.743,-0.24)
+..(4.892,-0.24)
+..controls(4.092,-0.24)and(3.342,0.065)
+..(2.642,0.675)
+..controls(2.022,1.215)and(1.572,1.86)
+..(1.292,2.61)
+..controls(1.092,3.14)and(0.907,3.935)
+..(0.737,4.994)
+..controls(0.587,5.924)and(0.502,6.644)
+..(0.482,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(0.482,8.01)
+..controls(0.902,9.919)and(2.182,10.899)
+..(4.322,10.949)
+..controls(5.361,10.969)and(6.246,10.744)
+..(6.976,10.274)
+..controls(7.786,9.744)and(8.251,8.99)
+..(8.371,8.01)
+--(8.702,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((7.262,8.01)
+..controls(7.192,8.569)and(6.827,9.044)
+..(6.167,9.434)
+..controls(5.567,9.773)and(4.952,9.943)
+..(4.322,9.943)
+..controls(3.662,9.943)and(3.082,9.783)
+..(2.582,9.464)
+..controls(2.032,9.104)and(1.702,8.619)
+..(1.592,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((7.262,7.004)
+--(1.592,7.004)
+..controls(1.592,6.964)and(1.587,6.829)
+..(1.577,6.599)
+..controls(1.567,6.369)and(1.562,6.229)
+..(1.562,6.18)
+..controls(1.562,5.44)and(1.632,4.841)
+..(1.772,4.381)
+--(6.152,4.381)
+..controls(6.482,4.571)and(6.757,4.975)
+..(6.977,5.595)
+..controls(7.167,6.115)and(7.262,6.584)
+..(7.262,7.004)
+--cycle) xscaled FX yscaled FY;
+fill((6.512,2.25)
+..controls(6.512,2.67)and(6.422,3.045)
+..(6.242,3.375)
+--(2.042,3.375)
+..controls(2.652,1.635)and(3.602,0.766)
+..(4.892,0.766)
+..controls(5.272,0.766)and(5.617,0.881)
+..(5.927,1.111)
+..controls(6.317,1.38)and(6.512,1.76)
+..(6.512,2.25)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(118, 7.711FX#, 8.01FY#, 0FY#); "";
+fill((7.472,7.154)
+--(6.992,7.154)
+--(6.992,4.844)
+--(1.952,4.844)
+..controls(1.742,4.844)and(1.574,4.774)
+..(1.449,4.634)
+..controls(1.324,4.494)and(1.262,4.33)
+..(1.262,4.14)
+..controls(1.262,3.93)and(1.334,3.748)
+..(1.479,3.593)
+..controls(1.624,3.439)and(1.832,3.361)
+..(2.102,3.361)
+--(6.992,3.361)
+--(6.992,2.506)
+--(3.512,2.506)
+..controls(3.512,1.916)and(3.767,1.475)
+..(4.277,1.185)
+..controls(4.717,0.925)and(5.302,0.795)
+..(6.032,0.795)
+..controls(6.122,0.795)and(6.277,0.805)
+..(6.497,0.825)
+..controls(6.717,0.845)and(6.882,0.855)
+..(6.992,0.855)
+--(6.992,0)
+--(6.242,0)
+..controls(5.122,0)and(4.224,0.225)
+..(3.549,0.675)
+..controls(2.874,1.125)and(2.531,1.735)
+..(2.521,2.505)
+..controls(1.851,2.535)and(1.326,2.715)
+..(0.946,3.045)
+..controls(0.616,3.345)and(0.451,3.704)
+..(0.451,4.124)
+..controls(0.451,4.544)and(0.614,4.912)
+..(0.939,5.227)
+..controls(1.264,5.542)and(1.691,5.699)
+..(2.221,5.699)
+--(6.031,5.699)
+--(6.031,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.472,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(119, 0.016FX#, -0.359FY#, 3.045FY#); "";
+fill((-1.377,-0.359)
+--(-1.377,-1.38)
+--(-2.668,-1.38)
+--(-2.668,-2.7)
+..controls(-2.848,-2.67)and(-3.063,-2.597)
+..(-3.313,-2.482)
+..controls(-3.563,-2.367)and(-3.729,-2.265)
+..(-3.809,-2.175)
+..controls(-3.668,-1.905)and(-3.598,-1.62)
+..(-3.598,-1.32)
+..controls(-3.598,-0.97)and(-3.683,-0.649)
+..(-3.852,-0.359)
+--(-4.242,-0.359)
+..controls(-4.042,-0.639)and(-3.942,-0.959)
+..(-3.942,-1.32)
+..controls(-3.942,-1.67)and(-4.037,-1.955)
+..(-4.227,-2.175)
+..controls(-3.697,-2.755)and(-3.057,-3.045)
+..(-2.307,-3.045)
+--(-2.307,-1.695)
+--(-1.377,-1.695)
+--(-1.377,-3.045)
+--(-1.017,-3.045)
+--(-1.017,-0.359)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(120, 8.881FX#, 8.01FY#, 0.18FY#); "";
+fill((8.642,7.154)
+--(7.893,7.154)
+--(7.893,4.92)
+--(2.372,4.92)
+..controls(2.211,4.92)and(2.079,4.845)
+..(1.974,4.695)
+..controls(1.869,4.545)and(1.816,4.375)
+..(1.816,4.186)
+..controls(1.816,3.756)and(2.041,3.541)
+..(2.492,3.541)
+--(6.602,3.541)
+..controls(7.062,3.541)and(7.422,3.361)
+..(7.682,3.001)
+..controls(7.912,2.681)and(8.027,2.281)
+..(8.027,1.801)
+..controls(8.027,1.381)and(7.937,1.006)
+..(7.757,0.675)
+..controls(7.567,0.315)and(7.312,0.09)
+..(6.992,0)
+..controls(6.562,-0.12)and(5.792,-0.18)
+..(4.683,-0.18)
+..controls(3.643,-0.18)and(2.823,-0.12)
+..(2.223,0)
+..controls(1.843,0.08)and(1.538,0.31)
+..(1.308,0.69)
+..controls(1.108,1.03)and(1.008,1.415)
+..(1.008,1.845)
+..controls(1.008,2.315)and(1.123,2.68)
+..(1.352,2.94)
+..controls(1.031,3.29)and(0.871,3.705)
+..(0.871,4.185)
+..controls(0.871,4.625)and(1.011,5)
+..(1.291,5.31)
+..controls(1.571,5.62)and(1.961,5.775)
+..(2.461,5.775)
+--(6.932,5.775)
+--(6.932,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(8.642,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((7.082,1.726)
+..controls(7.082,2.366)and(6.612,2.686)
+..(5.671,2.686)
+--(4.996,2.686)
+--(4.996,0.766)
+--(5.731,0.766)
+..controls(6.192,0.766)and(6.547,0.876)
+..(6.797,1.096)
+..controls(6.987,1.266)and(7.082,1.476)
+..(7.082,1.726)
+--cycle) xscaled FX yscaled FY;
+fill((4.035,0.766)
+--(4.035,2.686)
+--(3.361,2.686)
+..controls(2.932,2.686)and(2.59,2.591)
+..(2.335,2.401)
+..controls(2.08,2.211)and(1.953,1.986)
+..(1.953,1.726)
+..controls(1.953,1.466)and(2.08,1.241)
+..(2.335,1.051)
+..controls(2.59,0.861)and(2.922,0.766)
+..(3.331,0.766)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(121, 10.051FX#, 8.01FY#, 0FY#); "";
+fill((5.627,0)
+--(5.627,3.585)
+--(8.102,3.585)
+--(8.102,0)
+--(9.062,0)
+--(9.062,7.154)
+--(9.812,7.154)
+--(9.812,8.01)
+--(0.002,8.01)
+--(0.002,7.154)
+--(0.482,7.154)
+..controls(1.022,6.414)and(1.292,5.554)
+..(1.292,4.575)
+..controls(1.292,3.635)and(1.032,2.88)
+..(0.512,2.31)
+..controls(1.202,1.56)and(1.897,1.005)
+..(2.597,0.645)
+..controls(3.457,0.215)and(4.467,0)
+..(5.627,0)
+--cycle) xscaled FX yscaled FY;
+fill((1.532,7.154)
+--(8.102,7.154)
+--(8.102,4.439)
+--(4.668,4.439)
+--(4.668,0.93)
+..controls(4.188,1.01)and(3.623,1.195)
+..(2.973,1.485)
+..controls(2.292,1.785)and(1.852,2.06)
+..(1.652,2.31)
+..controls(2.022,3.02)and(2.207,3.77)
+..(2.207,4.56)
+..controls(2.207,5.469)and(1.982,6.334)
+..(1.532,7.154)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(122, 7.381FX#, 8.01FY#, 0.09FY#); "";
+fill((7.142,7.154)
+--(6.393,7.154)
+--(6.393,0)
+--(5.432,0)
+--(5.432,3.225)
+--(2.283,3.225)
+..controls(2.283,2.975)and(2.241,2.48)
+..(2.156,1.74)
+..controls(2.07,1)and(1.983,0.42)
+..(1.893,0)
+--(0.932,0)
+..controls(1.172,1.53)and(1.302,2.605)
+..(1.322,3.225)
+--(0.484,3.225)
+..controls(0.474,3.345)and(0.469,3.455)
+..(0.469,3.555)
+..controls(0.469,4.475)and(0.948,4.935)
+..(1.907,4.935)
+..controls(2.017,4.935)and(2.142,4.93)
+..(2.282,4.92)
+--(2.283,4.08)
+--(5.432,4.08)
+--(5.432,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(7.142,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((3.677,0.9)
+..controls(3.817,0.9)and(3.934,0.853)
+..(4.029,0.758)
+..controls(4.124,0.663)and(4.172,0.545)
+..(4.172,0.405)
+..controls(4.172,0.275)and(4.124,0.16)
+..(4.029,0.06)
+..controls(3.934,-0.04)and(3.817,-0.09)
+..(3.677,-0.09)
+..controls(3.547,-0.09)and(3.432,-0.04)
+..(3.332,0.06)
+..controls(3.232,0.16)and(3.182,0.275)
+..(3.182,0.405)
+..controls(3.182,0.545)and(3.232,0.663)
+..(3.332,0.758)
+..controls(3.432,0.853)and(3.547,0.9)
+..(3.677,0.9)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(123, 5.16FX#, 10.949FY#, 3.27FY#); "";
+fill((1.892,3.81)
+..controls(2.402,3.96)and(2.749,4.16)
+..(2.934,4.41)
+..controls(3.119,4.66)and(3.212,5.04)
+..(3.212,5.55)
+--(3.212,9.329)
+..controls(3.212,9.869)and(3.347,10.259)
+..(3.617,10.499)
+..controls(3.727,10.599)and(4.022,10.749)
+..(4.502,10.949)
+--(4.232,10.949)
+..controls(2.632,10.949)and(1.832,10.329)
+..(1.832,9.089)
+--(1.832,5.31)
+..controls(1.832,4.51)and(1.422,4.01)
+..(0.602,3.81)
+..controls(1.422,3.64)and(1.832,3.14)
+..(1.832,2.31)
+--(1.832,-1.2)
+..controls(1.832,-2.08)and(2.077,-2.665)
+..(2.567,-2.955)
+..controls(2.917,-3.165)and(3.562,-3.27)
+..(4.502,-3.27)
+..controls(3.642,-3.06)and(3.212,-2.53)
+..(3.212,-1.68)
+--(3.212,1.98)
+..controls(3.212,2.53)and(3.117,2.937)
+..(2.927,3.202)
+..controls(2.737,3.467)and(2.392,3.67)
+..(1.892,3.81)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(124, 5.686FX#, 8.01FY#, 0FY#); "";
+fill((4.453,0)
+--(3.492,0)
+--(3.492,8.01)
+--(4.453,8.01)
+--cycle) xscaled FX yscaled FY;
+fill((2.52,0)
+--(1.559,0)
+--(1.559,8.01)
+--(2.52,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(125, 5.16FX#, 10.949FY#, 3.27FY#); "";
+fill((3.121,3.81)
+..controls(2.621,3.67)and(2.276,3.467)
+..(2.086,3.202)
+..controls(1.896,2.937)and(1.801,2.53)
+..(1.801,1.98)
+--(1.801,-1.68)
+..controls(1.801,-2.53)and(1.381,-3.06)
+..(0.541,-3.27)
+..controls(1.461,-3.27)and(2.106,-3.16)
+..(2.476,-2.94)
+..controls(2.946,-2.64)and(3.181,-2.06)
+..(3.181,-1.2)
+--(3.181,2.31)
+..controls(3.181,3.14)and(3.591,3.64)
+..(4.411,3.81)
+..controls(3.591,4.02)and(3.181,4.52)
+..(3.181,5.31)
+--(3.181,9.089)
+..controls(3.181,9.889)and(2.911,10.424)
+..(2.371,10.694)
+..controls(2.021,10.864)and(1.411,10.949)
+..(0.541,10.949)
+..controls(1.001,10.759)and(1.311,10.574)
+..(1.471,10.394)
+..controls(1.691,10.154)and(1.801,9.799)
+..(1.801,9.329)
+--(1.801,5.55)
+..controls(1.801,5.04)and(1.896,4.66)
+..(2.086,4.41)
+..controls(2.276,4.16)and(2.621,3.96)
+..(3.121,3.81)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(126, 0.016FX#, 11.551FY#, -8.58FY#); "";
+fill((-1.018,8.58)
+..controls(-1.038,9.22)and(-1.143,9.685)
+..(-1.333,9.975)
+..controls(-1.573,10.325)and(-1.978,10.5)
+..(-2.548,10.5)
+--(-4.798,10.5)
+..controls(-5.278,10.5)and(-5.628,10.85)
+..(-5.848,11.551)
+--(-6.178,11.551)
+..controls(-6.138,10.21)and(-5.638,9.54)
+..(-4.678,9.54)
+--(-2.368,9.54)
+..controls(-1.858,9.54)and(-1.488,9.22)
+..(-1.258,8.58)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(127, 7.5FX#, 12FY#, 0FY#); "";
+fill((0.945,0)
+--(0.945,12)
+--(6.57,12)
+--(6.57,0)
+--cycle) xscaled FX yscaled FY;
+fill((1.875,0.945)
+--(5.625,0.945)
+--(5.625,11.07)
+--(1.875,11.07)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(129, 8.189FX#, 8.01FY#, 0FY#); "";
+fill((6.242,7.155)
+--(6.242,0.855)
+--(2.043,0.855)
+--(2.043,7.155)
+--cycle) xscaled FX yscaled FY;
+fill((7.952,8.01)
+--(0.002,8.01)
+--(0.002,7.155)
+--(1.082,7.155)
+--(1.082,0)
+--(7.202,0)
+--(7.202,7.155)
+--(7.952,7.155)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(130, 10.051FX#, 8.01FY#, 0FY#); "";
+fill((9.812,7.154)
+--(9.063,7.154)
+--(9.063,0)
+--(8.102,0)
+--(8.102,3.584)
+--(5.627,3.584)
+--(5.627,0)
+..controls(4.467,0)and(3.457,0.215)
+..(2.597,0.645)
+..controls(1.897,1.005)and(1.202,1.56)
+..(0.512,2.31)
+--(1.262,2.91)
+..controls(1.982,1.84)and(3.116,1.18)
+..(4.666,0.93)
+--(4.666,4.439)
+--(8.102,4.439)
+--(8.102,7.154)
+--(0.002,7.154)
+--(0.002,8.01)
+--(9.812,8.01)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(131, 0.016FX#, -0.359FY#, 3.016FY#); "";
+fill((-2.563,-0.359)
+--(-2.953,-0.359)
+..controls(-2.953,-1.1)and(-2.953,-1.485)
+..(-2.953,-1.515)
+..controls(-2.903,-1.975)and(-2.758,-2.325)
+..(-2.518,-2.565)
+..controls(-2.198,-2.866)and(-1.698,-3.016)
+..(-1.018,-3.016)
+--(-1.018,-2.445)
+..controls(-1.778,-2.505)and(-2.253,-2.275)
+..(-2.443,-1.755)
+..controls(-2.523,-1.555)and(-2.563,-1.09)
+..(-2.563,-0.359)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(132, 0.016FX#, -0.359FY#, 3.105FY#); "";
+fill((-1.392,-0.359)
+..controls(-1.392,-0.58)and(-1.442,-0.78)
+..(-1.542,-0.96)
+..controls(-1.652,-1.18)and(-1.802,-1.29)
+..(-1.992,-1.29)
+..controls(-2.052,-1.29)and(-2.18,-1.278)
+..(-2.375,-1.253)
+..controls(-2.57,-1.227)and(-2.712,-1.215)
+..(-2.802,-1.215)
+..controls(-3.072,-1.215)and(-3.207,-1.3)
+..(-3.207,-1.47)
+..controls(-3.207,-1.64)and(-3.057,-1.725)
+..(-2.757,-1.725)
+..controls(-2.857,-1.725)and(-2.587,-1.7)
+..(-1.947,-1.65)
+..controls(-1.737,-1.63)and(-1.572,-1.698)
+..(-1.452,-1.853)
+..controls(-1.332,-2.008)and(-1.292,-2.145)
+..(-1.332,-2.265)
+..controls(-1.422,-2.565)and(-1.697,-2.715)
+..(-2.157,-2.715)
+..controls(-2.587,-2.715)and(-2.957,-2.565)
+..(-3.267,-2.265)
+..controls(-3.287,-2.295)and(-3.317,-2.31)
+..(-3.357,-2.31)
+..controls(-3.167,-2.84)and(-2.737,-3.105)
+..(-2.067,-3.105)
+..controls(-1.787,-3.105)and(-1.535,-3.018)
+..(-1.31,-2.843)
+..controls(-1.085,-2.668)and(-0.972,-2.445)
+..(-0.972,-2.175)
+..controls(-0.972,-1.885)and(-1.122,-1.635)
+..(-1.422,-1.425)
+..controls(-1.152,-1.235)and(-1.017,-0.88)
+..(-1.017,-0.359)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(133, 0.016FX#, -0.346FY#, 3.061FY#); "";
+fill((0.813,-0.346)
+--(0.813,-1.35)
+..controls(0.813,-1.9)and(0.568,-2.33)
+..(0.078,-2.64)
+..controls(-0.362,-2.92)and(-0.882,-3.04)
+..(-1.482,-3)
+..controls(-2.572,-2.93)and(-3.572,-2.545)
+..(-4.482,-1.845)
+--(-4.257,-1.35)
+..controls(-3.527,-1.93)and(-2.642,-2.265)
+..(-1.602,-2.355)
+..controls(-1.192,-2.395)and(-0.795,-2.31)
+..(-0.41,-2.1)
+..controls(-0.025,-1.891)and(0.168,-1.641)
+..(0.168,-1.351)
+--(0.168,-0.346)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(134, 0.016FX#, -0.314FY#, 3.256FY#); "";
+fill((-2.053,-1.711)
+--(-3.628,-1.711)
+..controls(-3.648,-1.981)and(-3.58,-2.248)
+..(-3.425,-2.513)
+..controls(-3.27,-2.778)and(-3.078,-2.91)
+..(-2.848,-2.91)
+..controls(-2.258,-2.91)and(-1.993,-2.51)
+..(-2.053,-1.711)
+--cycle) xscaled FX yscaled FY;
+fill((-1.662,-0.314)
+--(-1.662,-1.92)
+..controls(-1.662,-2.811)and(-2.057,-3.256)
+..(-2.847,-3.256)
+..controls(-3.197,-3.256)and(-3.482,-3.086)
+..(-3.703,-2.746)
+..controls(-3.903,-2.446)and(-4.003,-2.101)
+..(-4.003,-1.711)
+--(-4.348,-1.711)
+..controls(-4.348,-1.431)and(-4.295,-1.248)
+..(-4.19,-1.163)
+..controls(-4.085,-1.078)and(-3.898,-1.035)
+..(-3.628,-1.035)
+--(-3.628,-1.365)
+--(-2.053,-1.365)
+--(-2.053,-0.314)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(135, 0.016FX#, -0.555FY#, 3.555FY#); "";
+fill((-1.842,-0.555)
+--(-1.842,-1.844)
+..controls(-2.062,-1.844)and(-2.282,-1.844)
+..(-2.502,-1.844)
+..controls(-3.512,-1.844)and(-4.077,-2.015)
+..(-4.197,-2.358)
+..controls(-3.984,-2.544)and(-3.777,-2.725)
+..(-3.574,-2.901)
+..controls(-3.331,-3.087)and(-3.103,-3.18)
+..(-2.89,-3.18)
+..controls(-2.688,-3.18)and(-2.49,-3.085)
+..(-2.298,-2.895)
+..controls(-2.105,-2.705)and(-1.973,-2.61)
+..(-1.903,-2.61)
+--(-1.842,-2.61)
+..controls(-1.842,-2.84)and(-1.956,-3.055)
+..(-2.183,-3.255)
+..controls(-2.411,-3.455)and(-2.646,-3.555)
+..(-2.888,-3.555)
+..controls(-3.363,-3.555)and(-3.94,-3.16)
+..(-4.617,-2.37)
+..controls(-4.467,-1.96)and(-4.142,-1.695)
+..(-3.642,-1.575)
+..controls(-3.382,-1.505)and(-2.937,-1.47)
+..(-2.307,-1.47)
+--(-2.232,-1.47)
+--(-2.232,-0.555)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(136, 0.016FX#, -0.51FY#, 2.865FY#); "";
+fill((-2.066,-0.51)
+--(-2.066,-1.005)
+..controls(-1.408,-1.415)and(-1.078,-1.815)
+..(-1.078,-2.205)
+..controls(-1.078,-2.415)and(-1.171,-2.578)
+..(-1.356,-2.693)
+..controls(-1.54,-2.808)and(-1.758,-2.865)
+..(-2.008,-2.865)
+--(-2.008,-2.58)
+..controls(-1.988,-2.58)and(-1.973,-2.58)
+..(-1.963,-2.58)
+..controls(-1.943,-2.58)and(-1.928,-2.58)
+..(-1.918,-2.58)
+..controls(-1.808,-2.58)and(-1.693,-2.538)
+..(-1.573,-2.452)
+..controls(-1.453,-2.367)and(-1.393,-2.27)
+..(-1.393,-2.16)
+..controls(-1.393,-1.98)and(-1.488,-1.799)
+..(-1.678,-1.619)
+..controls(-1.867,-1.439)and(-2.052,-1.329)
+..(-2.232,-1.289)
+..controls(-2.412,-1.329)and(-2.597,-1.439)
+..(-2.787,-1.619)
+..controls(-2.977,-1.799)and(-3.072,-1.98)
+..(-3.072,-2.16)
+..controls(-3.072,-2.27)and(-3.012,-2.367)
+..(-2.892,-2.452)
+..controls(-2.772,-2.538)and(-2.657,-2.58)
+..(-2.547,-2.58)
+..controls(-2.537,-2.58)and(-2.522,-2.58)
+..(-2.502,-2.58)
+..controls(-2.492,-2.58)and(-2.477,-2.58)
+..(-2.457,-2.58)
+--(-2.457,-2.865)
+..controls(-2.707,-2.865)and(-2.927,-2.805)
+..(-3.117,-2.685)
+..controls(-3.307,-2.565)and(-3.402,-2.405)
+..(-3.402,-2.205)
+..controls(-3.402,-1.825)and(-3.067,-1.425)
+..(-2.396,-1.005)
+--(-2.396,-0.51)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(137, 5.1FX#, 6.164FY#, 1.23FY#); "";
+fill((3.586,4.92)
+--(2.506,4.17)
+..controls(2.426,4.13)and(2.351,4.11)
+..(2.281,4.11)
+..controls(2.081,4.11)and(1.926,4.347)
+..(1.816,4.822)
+..controls(1.706,5.298)and(1.576,5.535)
+..(1.426,5.535)
+..controls(1.366,5.535)and(1.301,5.515)
+..(1.231,5.475)
+--(2.341,6.104)
+..controls(2.421,6.144)and(2.491,6.164)
+..(2.551,6.164)
+..controls(2.691,6.164)and(2.811,5.947)
+..(2.911,5.512)
+..controls(3.011,5.077)and(3.161,4.86)
+..(3.361,4.86)
+..controls(3.421,4.86)and(3.496,4.88)
+..(3.586,4.92)
+--cycle) xscaled FX yscaled FY;
+fill((3.511,0.42)
+--(1.156,-1.23)
+..controls(1.856,-0.72)and(2.206,-0.21)
+..(2.206,0.3)
+..controls(2.206,0.52)and(2.136,0.702)
+..(1.996,0.847)
+..controls(1.856,0.992)and(1.691,1.065)
+..(1.501,1.065)
+..controls(1.381,1.065)and(1.266,1.035)
+..(1.156,0.975)
+--(2.266,1.605)
+..controls(2.396,1.675)and(2.521,1.71)
+..(2.641,1.71)
+..controls(2.891,1.71)and(3.101,1.555)
+..(3.271,1.245)
+..controls(3.411,0.985)and(3.491,0.71)
+..(3.511,0.42)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(138, 4.756FX#, 10.949FY#, 2.189FY#); "";
+fill((4.083,-2.189)
+--(2.733,-2.189)
+--(-0.357,10.949)
+--(0.977,10.949)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(139, 15FX#, 11.789FY#, 0.09FY#); "";
+fill((3.286,0)
+..controls(1.526,1.068)and(0.646,2.207)
+..(0.646,3.415)
+..controls(0.646,4.184)and(1.007,5.023)
+..(1.727,5.932)
+..controls(1.917,6.181)and(2.582,6.895)
+..(3.722,8.074)
+..controls(4.432,8.822)and(4.787,9.377)
+..(4.787,9.736)
+..controls(4.787,9.966)and(4.667,10.161)
+..(4.427,10.32)
+..controls(4.317,9.824)and(4.097,9.352)
+..(3.767,8.905)
+..controls(3.387,8.398)and(2.992,8.145)
+..(2.582,8.145)
+..controls(2.302,8.145)and(2.036,8.274)
+..(1.786,8.533)
+..controls(1.586,8.731)and(1.486,8.95)
+..(1.486,9.189)
+..controls(1.486,9.617)and(1.766,10.012)
+..(2.326,10.375)
+..controls(2.886,10.738)and(3.461,10.92)
+..(4.051,10.92)
+..controls(4.791,10.92)and(5.227,10.605)
+..(5.357,9.976)
+..controls(5.426,9.617)and(5.171,9.077)
+..(4.591,8.358)
+..controls(3.561,7.1)and(2.981,6.376)
+..(2.851,6.186)
+..controls(2.211,5.218)and(1.891,4.279)
+..(1.891,3.37)
+..controls(1.891,2.272)and(2.356,1.148)
+..(3.286,0)
+--cycle) xscaled FX yscaled FY;
+fill((8.252,9.211)
+..controls(8.242,9.021)and(8.052,8.926)
+..(7.682,8.926)
+..controls(7.322,8.926)and(7.137,9.021)
+..(7.127,9.211)
+..controls(7.117,9.42)and(7.302,9.525)
+..(7.682,9.525)
+..controls(8.072,9.525)and(8.262,9.42)
+..(8.252,9.211)
+--cycle) xscaled FX yscaled FY;
+fill((5.356,0.36)
+..controls(5.856,0.06)and(6.456,-0.09)
+..(7.156,-0.09)
+..controls(7.976,-0.09)and(8.846,0.115)
+..(9.766,0.525)
+..controls(10.656,0.905)and(11.456,1.415)
+..(12.166,2.055)
+..controls(12.546,2.395)and(12.871,2.85)
+..(13.141,3.42)
+..controls(13.431,4.03)and(13.577,4.605)
+..(13.577,5.145)
+..controls(13.577,5.935)and(13.262,6.479)
+..(12.632,6.779)
+..controls(13.302,7.299)and(13.637,7.774)
+..(13.637,8.204)
+..controls(13.637,8.434)and(13.547,8.629)
+..(13.367,8.789)
+..controls(13.157,8.979)and(12.847,9.074)
+..(12.436,9.074)
+..controls(11.717,9.074)and(10.772,8.759)
+..(9.602,8.13)
+--(9.602,7.86)
+..controls(10.321,8.23)and(10.926,8.415)
+..(11.417,8.415)
+..controls(11.777,8.415)and(12.027,8.3)
+..(12.167,8.07)
+..controls(12.227,7.98)and(12.257,7.88)
+..(12.257,7.77)
+..controls(12.257,7.5)and(12.081,7.248)
+..(11.731,7.013)
+..controls(11.381,6.778)and(11.041,6.675)
+..(10.711,6.705)
+--(10.711,6.465)
+..controls(11.061,6.485)and(11.376,6.415)
+..(11.656,6.255)
+..controls(12.026,6.055)and(12.211,5.76)
+..(12.211,5.37)
+..controls(12.211,5.25)and(12.196,5.125)
+..(12.166,4.995)
+..controls(11.896,3.925)and(11.241,2.98)
+..(10.201,2.16)
+..controls(9.161,1.34)and(8.126,0.93)
+..(7.096,0.93)
+..controls(6.746,0.93)and(6.421,0.985)
+..(6.121,1.094)
+..controls(5.631,1.284)and(5.231,1.652)
+..(4.921,2.2)
+..controls(4.591,2.788)and(4.426,3.461)
+..(4.426,4.218)
+..controls(4.426,5.912)and(5.201,7.541)
+..(6.751,9.105)
+..controls(7.021,8.645)and(7.506,8.425)
+..(8.206,8.445)
+..controls(8.476,8.455)and(8.726,8.578)
+..(8.956,8.813)
+..controls(9.186,9.048)and(9.301,9.305)
+..(9.301,9.585)
+..controls(9.301,9.685)and(9.286,9.78)
+..(9.256,9.87)
+..controls(9.146,10.17)and(8.886,10.32)
+..(8.477,10.32)
+..controls(8.107,10.32)and(7.722,10.22)
+..(7.322,10.02)
+..controls(7.592,10.5)and(8.042,10.74)
+..(8.672,10.74)
+..controls(8.862,10.74)and(9.057,10.71)
+..(9.257,10.65)
+..controls(9.606,10.54)and(10.096,10.285)
+..(10.727,9.885)
+..controls(11.207,9.575)and(11.657,9.42)
+..(12.077,9.42)
+..controls(12.546,9.42)and(13.136,9.57)
+..(13.846,9.87)
+..controls(13.727,9.83)and(13.596,9.81)
+..(13.456,9.81)
+..controls(12.976,9.81)and(12.189,10.14)
+..(11.094,10.8)
+..controls(9.999,11.459)and(9.201,11.789)
+..(8.701,11.789)
+..controls(8.501,11.789)and(8.316,11.754)
+..(8.146,11.684)
+..controls(7.826,11.554)and(7.516,11.314)
+..(7.216,10.964)
+..controls(6.866,10.554)and(6.691,10.139)
+..(6.691,9.719)
+..controls(6.691,9.649)and(6.691,9.579)
+..(6.691,9.509)
+..controls(5.965,9.009)and(5.273,8.204)
+..(4.616,7.094)
+..controls(3.869,5.835)and(3.496,4.65)
+..(3.496,3.54)
+..controls(3.496,2.15)and(4.116,1.09)
+..(5.356,0.36)
+--cycle) xscaled FX yscaled FY;
+fill((3.811,10.32)
+..controls(3.251,10.291)and(2.896,10.128)
+..(2.746,9.831)
+..controls(2.646,9.634)and(2.596,9.496)
+..(2.596,9.417)
+..controls(2.596,9.209)and(2.701,9.105)
+..(2.911,9.105)
+..controls(3.101,9.105)and(3.301,9.239)
+..(3.511,9.505)
+..controls(3.721,9.772)and(3.826,10.009)
+..(3.826,10.217)
+..controls(3.826,10.256)and(3.821,10.291)
+..(3.811,10.32)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(140, 13.5FX#, 10.561FY#, 0.119FY#); "";
+fill((14.699,8.865)
+--(13.738,8.865)
+--(13.738,9.105)
+..controls(13.738,9.505)and(13.453,9.705)
+..(12.884,9.705)
+..controls(11.724,9.705)and(10.805,9.21)
+..(10.125,8.22)
+..controls(10.035,8.34)and(9.945,8.45)
+..(9.855,8.551)
+..controls(9.615,8.791)and(9.37,8.952)
+..(9.12,9.032)
+..controls(8.99,9.072)and(8.86,9.092)
+..(8.73,9.092)
+..controls(8.261,9.092)and(7.836,8.862)
+..(7.456,8.401)
+..controls(7.106,7.981)and(6.881,7.505)
+..(6.781,6.975)
+--(12.885,6.975)
+--(12.885,6.119)
+--(12.6,6.119)
+..controls(12.6,5.659)and(12.49,5.169)
+..(12.27,4.65)
+..controls(12.03,4.1)and(11.725,3.67)
+..(11.355,3.36)
+..controls(11.676,2.96)and(11.836,2.48)
+..(11.836,1.92)
+..controls(11.836,1.36)and(11.661,0.896)
+..(11.311,0.526)
+..controls(10.911,0.096)and(10.346,-0.119)
+..(9.616,-0.119)
+..controls(8.926,-0.119)and(8.28,0.146)
+..(7.68,0.676)
+..controls(7.14,1.136)and(6.75,1.69)
+..(6.51,2.34)
+..controls(6.34,2.79)and(6.185,3.45)
+..(6.045,4.32)
+..controls(5.915,5.099)and(5.845,5.699)
+..(5.835,6.119)
+--(5.415,6.119)
+--(5.415,6.975)
+--(5.835,6.975)
+..controls(6.015,7.805)and(6.34,8.5)
+..(6.81,9.061)
+..controls(7.32,9.661)and(7.9,9.961)
+..(8.55,9.961)
+..controls(8.74,9.961)and(8.937,9.933)
+..(9.142,9.878)
+..controls(9.347,9.823)and(9.675,9.66)
+..(10.125,9.39)
+..controls(11.015,10.17)and(11.984,10.561)
+..(13.034,10.561)
+..controls(13.464,10.561)and(13.849,10.438)
+..(14.189,10.193)
+..controls(14.529,9.948)and(14.699,9.66)
+..(14.699,9.33)
+--cycle) xscaled FX yscaled FY;
+fill((5.97,0)
+--(4.98,0)
+..controls(4.32,0)and(3.9,0.205)
+..(3.72,0.615)
+..controls(3.62,0.845)and(3.57,1.365)
+..(3.57,2.175)
+--(3.57,3.705)
+..controls(3.18,3.485)and(2.745,3.375)
+..(2.265,3.375)
+..controls(1.645,3.375)and(1.113,3.565)
+..(0.668,3.945)
+..controls(0.223,4.325)and(0,4.765)
+..(0,5.265)
+..controls(0,5.765)and(0.223,6.204)
+..(0.668,6.584)
+..controls(1.113,6.964)and(1.645,7.154)
+..(2.266,7.154)
+..controls(2.906,7.154)and(3.443,6.979)
+..(3.879,6.629)
+..controls(4.314,6.279)and(4.531,5.824)
+..(4.531,5.264)
+--(4.531,1.77)
+..controls(4.531,0.69)and(5.011,0.1)
+..(5.97,0)
+--cycle) xscaled FX yscaled FY;
+fill((11.639,6.119)
+--(6.781,6.119)
+..controls(6.781,6.079)and(6.781,5.959)
+..(6.781,5.759)
+..controls(6.781,5.569)and(6.781,5.45)
+..(6.781,5.4)
+..controls(6.781,4.79)and(6.836,4.275)
+..(6.946,3.855)
+--(10.697,3.855)
+..controls(10.986,4.015)and(11.22,4.36)
+..(11.4,4.89)
+..controls(11.559,5.34)and(11.639,5.749)
+..(11.639,6.119)
+--cycle) xscaled FX yscaled FY;
+fill((10.996,2.025)
+..controls(10.996,2.395)and(10.921,2.72)
+..(10.771,3)
+--(7.155,3)
+..controls(7.695,1.51)and(8.515,0.766)
+..(9.616,0.766)
+..controls(9.936,0.766)and(10.231,0.861)
+..(10.501,1.051)
+..controls(10.831,1.28)and(10.996,1.605)
+..(10.996,2.025)
+--cycle) xscaled FX yscaled FY;
+fill((3.57,5.265)
+..controls(3.57,5.544)and(3.442,5.787)
+..(3.185,5.992)
+..controls(2.929,6.196)and(2.625,6.299)
+..(2.272,6.299)
+..controls(1.92,6.299)and(1.616,6.196)
+..(1.359,5.992)
+..controls(1.103,5.787)and(0.975,5.544)
+..(0.975,5.265)
+..controls(0.975,4.985)and(1.103,4.743)
+..(1.359,4.538)
+..controls(1.616,4.333)and(1.92,4.23)
+..(2.272,4.23)
+..controls(2.625,4.23)and(2.929,4.333)
+..(3.185,4.538)
+..controls(3.442,4.743)and(3.57,4.985)
+..(3.57,5.265)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+beginchar(141, 10.141FX#, 11.025FY#, 1.904FY#); "";
+fill((10.005,3.87)
+..controls(9.955,3.3)and(9.58,2.515)
+..(8.88,1.515)
+..controls(8.15,0.455)and(7.775,-0.11)
+..(7.755,-0.18)
+..controls(7.525,0.11)and(7.19,0.495)
+..(6.751,0.975)
+..controls(6.681,0.895)and(6.331,0.735)
+..(5.701,0.495)
+..controls(6.101,0.325)and(6.541,0.06)
+..(7.021,-0.3)
+..controls(7.171,-0.41)and(7.246,-0.56)
+..(7.246,-0.75)
+..controls(7.246,-0.89)and(7.196,-1.01)
+..(7.096,-1.11)
+..controls(6.996,-1.21)and(6.881,-1.26)
+..(6.751,-1.26)
+..controls(6.621,-1.26)and(6.503,-1.21)
+..(6.398,-1.11)
+..controls(6.293,-1.01)and(6.24,-0.89)
+..(6.24,-0.75)
+..controls(6.24,-0.62)and(6.29,-0.505)
+..(6.391,-0.405)
+..controls(6.251,-0.195)and(5.891,0.005)
+..(5.311,0.195)
+--(5.311,-0.99)
+..controls(5.46,-1.1)and(5.535,-1.235)
+..(5.535,-1.394)
+..controls(5.535,-1.734)and(5.365,-1.904)
+..(5.025,-1.904)
+..controls(4.686,-1.904)and(4.516,-1.734)
+..(4.516,-1.394)
+..controls(4.516,-1.235)and(4.591,-1.1)
+..(4.741,-0.99)
+--(4.741,0.195)
+..controls(4.161,0.005)and(3.801,-0.195)
+..(3.661,-0.405)
+..controls(3.761,-0.505)and(3.811,-0.62)
+..(3.811,-0.75)
+..controls(3.811,-0.89)and(3.761,-1.01)
+..(3.66,-1.11)
+..controls(3.56,-1.21)and(3.44,-1.26)
+..(3.3,-1.26)
+..controls(3.17,-1.26)and(3.055,-1.21)
+..(2.955,-1.11)
+..controls(2.855,-1.01)and(2.805,-0.89)
+..(2.805,-0.75)
+..controls(2.805,-0.56)and(2.88,-0.41)
+..(3.03,-0.3)
+..controls(3.51,0.06)and(3.95,0.325)
+..(4.351,0.495)
+..controls(4.041,0.615)and(3.691,0.775)
+..(3.301,0.975)
+..controls(3.111,0.785)and(2.776,0.4)
+..(2.296,-0.18)
+..controls(2.276,-0.11)and(1.901,0.455)
+..(1.171,1.515)
+..controls(0.471,2.515)and(0.096,3.3)
+..(0.046,3.87)
+..controls(0.026,4.09)and(0.016,4.285)
+..(0.016,4.455)
+..controls(0.016,5.905)and(0.776,7.275)
+..(2.296,8.565)
+--(2.626,8.565)
+..controls(1.646,7.545)and(1.156,6.455)
+..(1.156,5.295)
+..controls(1.156,5.045)and(1.176,4.79)
+..(1.216,4.53)
+..controls(1.356,3.63)and(1.781,2.84)
+..(2.491,2.16)
+..controls(3.111,1.58)and(3.861,1.14)
+..(4.741,0.84)
+--(4.741,1.17)
+..controls(4.671,1.22)and(4.336,1.38)
+..(3.736,1.65)
+--(3.886,2.445)
+..controls(3.206,2.675)and(2.651,3.09)
+..(2.221,3.69)
+..controls(1.791,4.29)and(1.576,4.96)
+..(1.576,5.7)
+..controls(1.576,6.4)and(1.769,7.035)
+..(2.154,7.605)
+..controls(2.538,8.175)and(3.041,8.595)
+..(3.661,8.865)
+..controls(3.631,9.025)and(3.586,9.17)
+..(3.526,9.3)
+..controls(4.146,9.92)and(4.646,10.495)
+..(5.026,11.025)
+..controls(5.406,10.495)and(5.906,9.92)
+..(6.526,9.3)
+--(6.391,8.865)
+..controls(7.011,8.595)and(7.514,8.175)
+..(7.899,7.605)
+..controls(8.284,7.035)and(8.477,6.4)
+..(8.477,5.7)
+..controls(8.477,4.96)and(8.261,4.29)
+..(7.831,3.69)
+..controls(7.401,3.09)and(6.846,2.675)
+..(6.166,2.445)
+--(6.316,1.65)
+..controls(6.066,1.56)and(5.731,1.4)
+..(5.311,1.17)
+--(5.311,0.84)
+..controls(6.19,1.14)and(6.94,1.58)
+..(7.56,2.16)
+..controls(8.27,2.84)and(8.695,3.63)
+..(8.835,4.53)
+..controls(8.875,4.79)and(8.895,5.045)
+..(8.895,5.295)
+..controls(8.895,6.455)and(8.405,7.545)
+..(7.426,8.565)
+--(7.756,8.565)
+..controls(9.275,7.275)and(10.035,5.905)
+..(10.035,4.455)
+..controls(10.035,4.285)and(10.025,4.09)
+..(10.005,3.87)
+--cycle) xscaled FX yscaled FY;
+fill((7.682,5.7)
+..controls(7.682,6.81)and(7.202,7.6)
+..(6.242,8.07)
+..controls(6.011,7.04)and(5.896,6.12)
+..(5.896,5.31)
+..controls(5.896,4.72)and(5.951,4.035)
+..(6.061,3.255)
+..controls(6.552,3.455)and(6.944,3.775)
+..(7.239,4.215)
+..controls(7.534,4.655)and(7.682,5.15)
+..(7.682,5.7)
+--cycle) xscaled FX yscaled FY;
+fill((4.006,3.255)
+..controls(4.116,4.015)and(4.171,4.68)
+..(4.171,5.25)
+..controls(4.171,6.07)and(4.051,7.01)
+..(3.811,8.07)
+..controls(2.851,7.6)and(2.371,6.81)
+..(2.371,5.7)
+..controls(2.371,5.15)and(2.521,4.655)
+..(2.821,4.215)
+..controls(3.121,3.775)and(3.516,3.455)
+..(4.006,3.255)
+--cycle) xscaled FX yscaled FY;
+endchar;
+
+
+font_slant := 0;
+font_normal_space := 4.873 * FX#;
+font_normal_stretch := 2.437 * FX#;
+font_normal_shrink := 1.624 * FX#;
+font_quad := 14.62 * FX#;
+font_x_height := 8.01 * FX#;
+designsize := FontSize;
+
+end.
diff --git a/language/gurmukhi/pandey/pun10.tfm b/language/gurmukhi/pandey/pun10.tfm
new file mode 100644
index 0000000000..797a85757f
--- /dev/null
+++ b/language/gurmukhi/pandey/pun10.tfm
Binary files differ
diff --git a/language/gurmukhi/singh/Readme b/language/gurmukhi/singh/Readme
new file mode 100644
index 0000000000..4909831cff
--- /dev/null
+++ b/language/gurmukhi/singh/Readme
@@ -0,0 +1,106 @@
+ Gurmukhi for TeX
+ User Manual
+
+ Version 1.0
+ October 1995
+
+ Amarjit Singh
+
+________________________________________________________________________
+
+ 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.
+________________________________________________________________________
+
+The purpose of the "Gurmukhi for TeX" software package is to convert the
+characters in a document from English Alphabet to Gurmukhi utilizing the
+TeX and Metafont software packages. Gurmukhi is a script for the Punjabi
+language mostly used in North India.
+
+TeX is a typesetting system is a trademark of the American Mathematical
+Society, used widely on Unix systems, and occassionally on other
+operating environments. Metafont, a trademark of Addison Wesley
+Publishing Company, is a font generation tool used by TeX. Both TeX and
+Metafont are free software packages which can be downloaded from a TeX
+archive sites. A working knowledge of TeX will greatly help in using
+this package.
+
+This software package is greatly inspired by "Devanagari for TeX" which
+is written by Frans J. Velthuis. I would like to thank him for giving
+me permission to change his software package to support Gurmukhi.
+
+
+This package consists of following file:
+
+ gurmukhi.c C-source code of preprocessor
+ gmmacs.tex macro file for TeX
+ defs.mf, gmchars.mf, grmk8.mf, grmk9.mf, grmk10.mf
+ METAFONT-Source code of Gurmukhi characters.
+ grmk8.tfm, grmk9.tfm, grmk10.tfm
+ TFM Font format of Gurmukhi characters.
+ readme This file, describing this package.
+ install.ux File with some help on installation in Unix env.
+ install.dos Some help to install this package on DOS.
+ manual.gm and manual.ps
+ Manual on how to create documents using this package
+ bani.gm and eg.gm
+ Example files with Gurmukhi characters and other
+ information.
+ known.prob Known issues, and your help will be appreciated.
+
+All these files are put together in a tar file such that at the time of
+extraction all file go into same directory. For every specific operating
+environment, these files may need to move to different directories, and
+that information is provided in install.* file for that environment.
+
+Details of each file included in this package:
+
+o gurmukhi.c, is the c-source file for preprocessor and you would need to
+ create an executable file by compiling this with a c compiler. I
+ believe, compilation should be fairly easy on any environment as the
+ source code has no system dependency.
+
+ The purpose of this preprocessor is to convert text in a .gm file to a
+ .tex file in a format understanable by TeX.
+
+o gmmacs.tex, contains macros for TeX, and should be included in your
+ text file. This file has macros for fonts, for spacing and for other
+ macros which are generated by the Gurmukhi preprocessor.
+
+o *.mf, are the METAFONT source files for Gurmukhi fonts in various
+ point sizes. These files will be used to produce Gurmukhi fonts in
+ different formats.
+
+o *.tfm are the font files in TFM format. A TFM file can be generated
+ from a MF file using METAFONT. Usually, TeX internally calls METAFONT
+ to create required files.
+
+o manual.* contain the information on preparing an input text file (.gm)
+ and use of this package in detail. A postscript version of this manual
+ is also included, which can be directly sent to a postscript printer.
+ It may be useful, to get information on the package, while writing an
+ input text file.
+
+o *.gm, are some file to serve as examples. These can be used to
+ understand the features of a Gurmukhi text, and can also be used
+ as input text to see if the installation is complete.
+
+
+If you have comments or suggestion, feel free to send them to me at
+the following address:
+
+E-mail: asingh@evolving.com
+
+Current Postal Mail: 8405 E. Hampden Ave #11N Denver CO 80231 USA
+Permanent Postal Address : A-3 ManSarover Garden, New Delhi 110015 India
diff --git a/language/gurmukhi/singh/bani.gm b/language/gurmukhi/singh/bani.gm
new file mode 100644
index 0000000000..df1575cbdd
--- /dev/null
+++ b/language/gurmukhi/singh/bani.gm
@@ -0,0 +1,41 @@
+@punjabi
+@obeylines
+%________________________________________________________________________
+%
+% 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.
+%________________________________________________________________________
+\input gmmacs
+\gmnum
+
+\centerline{\gm 1.o satiguru prasAdi}
+\centerline{\gm sUhI mahalA 5 }
+{\gm
+
+jis ke sir Upari tuuN suaamii, so dukhu kaisaa paavai ||
+boli n jaanai maaiiaa madi maataa, mara.naa ciiti n aavai ||1||
+mere raamaraaii, tuuN sNtaa kaa sNt tere||
+tere sevak kau bhau kichu naahii, jamu nahii aavai nere ||1|| rahaau ||
+jo terai rNgi raate suaamii, tin kaa janam mara.n dukhu naasaa ||
+terii bakhas n me.tai koI, satigur kaa dilaasaa ||2||
+naamu dhiaaiini, sukh phala paaiini, aa.th pahar aaraadhahi||
+terii sara.ni tere bharavaasai, pNc dush.t lai saadhahi ||3||
+giaanu dhiaanu kichu karamu n jaa.naa, saar n jaa.naa terii||
+sabh te va.daa satiguru naanak, jini kala raakhii merii ||4||10||57||
+
+}
+
+\bye
+
+
diff --git a/language/gurmukhi/singh/copying b/language/gurmukhi/singh/copying
new file mode 100644
index 0000000000..9a17037581
--- /dev/null
+++ b/language/gurmukhi/singh/copying
@@ -0,0 +1,249 @@
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The license agreements of most software companies try to keep users
+at the mercy of those companies. By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must tell them their rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License. The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications. Each
+licensee is addressed as "you".
+
+ 1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program. You may charge a fee for the physical act of
+transferring a copy.
+
+ 2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+ a) cause the modified files to carry prominent notices stating that
+ you changed the files and the date of any change; and
+
+ b) cause the whole of any work that you distribute or publish, that
+ in whole or in part contains the Program or any part thereof, either
+ with or without modifications, to be licensed at no charge to all
+ third parties under the terms of this General Public License (except
+ that you may choose to grant warranty protection to some or all
+ third parties, at your option).
+
+ c) If the modified program normally reads commands interactively when
+ run, you must cause it, when started running for such interactive use
+ in the simplest and most usual way, to print or display an
+ announcement including an appropriate copyright notice and a notice
+ that there is no warranty (or else, saying that you provide a
+ warranty) and that users may redistribute the program under these
+ conditions, and telling the user how to view a copy of this General
+ Public License.
+
+ d) You may charge a fee for the physical act of transferring a
+ copy, and you may at your option offer warranty protection in
+ exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+ 3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+ a) accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ b) accompany it with a written offer, valid for at least three
+ years, to give any third party free (except for a nominal charge
+ for the cost of distribution) a complete machine-readable copy of the
+ corresponding source code, to be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ c) accompany it with the information you received as to where the
+ corresponding source code may be obtained. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it. For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+ 4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License. However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+ 5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions. You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
+ 7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+ 8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+ To do so, attach the following notices to the program. It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ 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.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19xx name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License. Of course, the
+commands you use may be called something other than `show w' and `show
+c'; they could even be mouse-clicks or menu items--whatever suits your
+program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ program `Gnomovision' (a program to direct compilers to make passes
+ at assemblers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/language/gurmukhi/singh/defs.mf b/language/gurmukhi/singh/defs.mf
new file mode 100644
index 0000000000..54225e30db
--- /dev/null
+++ b/language/gurmukhi/singh/defs.mf
@@ -0,0 +1,99 @@
+% DEFS.MF
+% Header file with Metafont-parameters for the Devanagari fonts
+%
+% Copyright (C) 1991 University of Groningen, The Netherlands
+%
+% Author: Frans J. Velthuis
+% Internet: velthuis@rc.rug.nl
+% Bitnet: velthuis@hgrrug5
+%
+% 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.
+%
+ penwd# :=thick# * cosd(rot-90);
+ usthick# := thick#;
+ mb# := .2ht#;
+ define_pixels(penwd,usthick,mb);
+ define_blacker_pixels(thin,thick,subthick);
+ thin := max(thin,1); subthick := max(subthick,1);
+ smoothing := 0;
+ pickup pencircle xscaled thick yscaled thin rotated rot;
+ scpenwd := pen_rt - pen_lft;
+ frame_pen := savepen;
+ pickup pencircle xscaled subthick yscaled thin rotated rot;
+ sub_pen := savepen;
+ picture v[];
+ numeric vbar[];
+ extra_endchar := extra_endchar & "chardp := chardp + mb#;" ;
+
+ def tframe =
+ pickup frame_pen;
+ z1=(w-brm-.7rm,h); z2=(w,h);
+ x3=good.x w-brm; y3=h; z4=(x3,0);
+ draw z1--z2;
+ draw z3--z4;
+ enddef;
+
+ def aframe =
+ pickup frame_pen;
+ z1=(w-rm-brm,h); z2=(w,h);
+ x3=good.x w-brm; y3=h; z4=(x3,0);
+ draw z1--z2;
+ draw z3--z4;
+ enddef;
+
+ def endsav =
+ vbar[charcode]=x3;
+ cullit;
+ v[charcode]=currentpicture;
+ endchar;
+ enddef;
+
+ def cutoff(expr t) =
+ x23 = vbar[t];
+ fill (-penwd,-d-mb-penwd)--(x23-.6scpenwd,-d-mb-penwd)--(x23-.6scpenwd,
+ h+penwd)--(-penwd,h+penwd)--cycle withweight 2;
+ cull currentpicture keeping(2,2);
+ addto currentpicture also v[t];
+ cull currentpicture keeping (2,2);
+ w := floor(x23-.6scpenwd);
+ enddef;
+
+ def addpic(expr t) =
+ addto currentpicture also v[t];
+ enddef;
+
+ def frame =
+ pickup frame_pen;
+ z1 = (0,ht); z2 = (w,ht);
+ x3 = good.x w-brm; y3 = ht; z4 = (x3,0);
+ draw z1--z2; draw z3--z4;
+ enddef;
+
+ def sqdot(expr p)=
+ x25:=floor(xpart p)+.5;
+ y25:=floor(ypart p)+.5;
+ dwd:=ceiling(thick);
+ if not odd dwd: dwd:= dwd+1; fi
+ fill unitsquare shifted -(.5,.5) rotated 45 scaled (.5sqrt2 * dwd)
+ shifted z25;
+ enddef;
+
+ def low_n(expr nw,nh)=
+ y38 := good.y nh; x38 := x3;
+ y39 := y38 - .6penwd; x39 := nw;
+ filldraw fullcircle scaled 1.2penwd shifted(x39,y39);
+ z40 = (x39,y38);
+ draw z38--z40;
+ enddef;
diff --git a/language/gurmukhi/singh/eg.gm b/language/gurmukhi/singh/eg.gm
new file mode 100644
index 0000000000..d1bb2339c0
--- /dev/null
+++ b/language/gurmukhi/singh/eg.gm
@@ -0,0 +1,35 @@
+@punjabi
+%________________________________________________________________________
+%
+% 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.
+%________________________________________________________________________
+\input gmmacs
+\hsize=6in
+
+
+{\gm {\gmsmall iih pNktI `smAl' a~akharAM vi~ac li~akhI gaI hai ! }}
+
+{\gm {\gmnine iih pNktI `nAiin' a~akharAM vi~ac li~akhI gaI hai ! }}
+
+{\gm {\gmnormal iih pNktI `nArmal' a~akharAM vi~ac li~akhI gaI hai ! }}
+
+{\gm {\gmbig iih pNktI `big' a~akharAM vi~ac li~akhI gaI hai ! }}
+
+{\gm {\gmlarge iih pNktI `lArj' a~akharAM vi~ac li~akhI gaI hai ! }}
+
+{\gm {\gmhuge iih pNktI `hyUj' a~akharAM vi~ac li~akhI gaI hai ! }}
+
+
+\bye
diff --git a/language/gurmukhi/singh/env b/language/gurmukhi/singh/env
new file mode 100644
index 0000000000..d7927f05c6
--- /dev/null
+++ b/language/gurmukhi/singh/env
@@ -0,0 +1,25 @@
+#________________________________________________________________________
+#
+# 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.
+#________________________________________________________________________
+
+# environment variables for TeX and LaTeX
+
+set texbase = /home/abc/gurmukhi/lib/tex
+setenv TEXINPUTS .:$texbase/macros:
+setenv TEXFONTS :$texbase/tfm
+setenv TEXPKS :$texbase/pk
+setenv MFINPUTS :$texbase/mf
+unset texbase
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.
+
diff --git a/language/gurmukhi/singh/gmmacs.tex b/language/gurmukhi/singh/gmmacs.tex
new file mode 100644
index 0000000000..64594408c2
--- /dev/null
+++ b/language/gurmukhi/singh/gmmacs.tex
@@ -0,0 +1,107 @@
+% DNMACS.TEX
+% TeX macros for the use of Devanagari fonts
+%
+% Copyright (C) 1991 University of Groningen, The Netherlands
+%
+% Author: Frans J. Velthuis
+% Internet: velthuis@rc.rug.nl
+% Bitnet: velthuis@hgrrug5
+%
+% 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.
+%
+\font\smallgm=grmk8
+\font\ninegm=grmk9
+\font\grmk=grmk10
+\font\halfgm=grmk10 scaled\magstephalf
+\font\biggm=grmk10 scaled\magstep1
+\font\largegm=grmk10 scaled\magstep2
+\font\hugegm=grmk10 scaled\magstep3
+\hyphenchar\smallgm=-1
+\hyphenchar\ninegm=-1
+\hyphenchar\grmk=-1
+\hyphenchar\halfgm=-1
+\hyphenchar\biggm=-1
+\hyphenchar\largegm=-1
+\hyphenchar\hugegm=-1
+\font\smallcr=cmr8
+\font\ninecr=cmr9
+\font\halfcr=cmr10 scaled\magstephalf
+\font\bigcr=cmr10 scaled\magstep1
+\font\largecr=cmr10 scaled\magstep2
+\font\hugecr=cmr10 scaled\magstep3
+\let\rsize=\rm
+\newcount\chnum
+\newdimen\itdim
+\newdimen\gmblskip
+\newif\ifgmmode
+\chnum=0
+\loop\catcode\chnum=11
+\ifnum\chnum<12\advance\chnum by1
+\repeat
+\chnum=14
+\loop\catcode\chnum=11
+\ifnum\chnum<31\advance\chnum by1
+\repeat
+\catcode127=11
+\def\subscr#1{\/\itdim=\lastkern
+\unkern\kern-\itdim \lower\dp0 \hbox to\itdim{#1\hfil}}
+\def\gmsmall{\let\pgm=\smallgm\let\rsize=\smallcr%
+\gmblskip=12pt\ifgmmode\gm\fi}
+\def\gmnine{\let\pgm=\ninegm\let\rsize=\ninecr%
+\gmblskip=13pt\ifgmmode\gm\fi}
+\def\gmnormal{\let\pgm=\grmk\let\rsize=\rm%
+\gmblskip=15pt\ifgmmode\gm\fi}
+\def\gmhalf{\let\pgm=\halfgm\let\rsize=\halfcr%
+\gmblskip=16pt\ifgmmode\gm\fi}
+\def\gmbig{\let\pgm=\biggm\let\rsize=\bigcr%
+\gmblskip=18pt\ifgmmode\gm\fi}
+\def\gmlarge{\let\pgm=\largegm\let\rsize=\largecr%
+\gmblskip=22pt\ifgmmode\gm\fi}
+\def\gmhuge{\let\pgm=\hugegm\let\rsize=\hugecr%
+\gmblskip=26pt\ifgmmode\gm\fi}
+\def\gm{\gmmodetrue\pgm\baselineskip=\gmblskip
+\tolerance=10000
+\pretolerance=10000}
+\def\0{\llap{\char13}}
+\def\1{\llap{\char32}}
+\def\2{\llap{\char92}}
+\def\3#1w{{\char"#1}}
+\def\4{\llap{\char123}}
+\def\5{\llap{\char125}}
+\def\6#1{\setbox0=\hbox{#1}#1\subscr{\char126}}
+\def\7#1{\setbox0=\hbox{#1}#1\subscr{\char0}}
+\def\8#1{\setbox0=\hbox{#1}#1\subscr{\char1}}
+\def\9#1{\setbox0=\hbox{#1}#1\subscr{\char2}}
+\def\qa#1#2{\setbox0=\hbox{#1}#1\subscr{\char253\kern1.5ex\lower1.25ex
+\hbox{\char#2}\kern-1.5ex}}
+\def\qb#1{\setbox0=\hbox{#1}#1\subscr{\char253}}
+\def\qq#1{\setbox0=\hbox{#1}#1\subscr{\char94}}
+\def\qx#1{\setbox0=\hbox{#1}#1\subscr{\char14}}
+\def\qy#1{\setbox0=\hbox{#1}#1\subscr{\char31}}
+\def\qz#1{\setbox0=\hbox{#1}#1\subscr{\char124}}
+\def\qva{\kern0.5ex\2\kern-0.5ex}
+\def\qvb{\kern1ex\0\kern-1ex}
+\def\qvc{\kern1ex\rdt\kern-1ex}
+\def\?{\llap{\char3}}
+\def\<{\llap{\char4}}
+\def\rs{\rsize\thinspace}
+\let\re=\thinspace
+\def\rdt{\llap{\char19}}
+\def\gmnum{\let\nstyle=d}
+\def\cmnum{\let\nstyle=r}
+\cmnum
+\def\rn#1{\if\nstyle r{\rsize #1}\else#1\fi}
+\let\pgm=\grmk
+\gmblskip=15pt
diff --git a/language/gurmukhi/singh/grmk10.mf b/language/gurmukhi/singh/grmk10.mf
new file mode 100644
index 0000000000..7e9333d54e
--- /dev/null
+++ b/language/gurmukhi/singh/grmk10.mf
@@ -0,0 +1,24 @@
+mode_setup;
+ ht# := 2mm#; rm# := 0.6mm#; brm# := 0.9mm#; twd# := 1.4mm#;
+ uwidth# := twd#;
+ define_pixels(rm,twd,uwidth,brm);
+ define_whole_pixels(ht);
+ rot = 135;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% the following parameters determine the line-thicknes.
+% the line-thicknes varies between thin# and thick#, depending on the
+% angle between the pen and the direction of writing.
+% for strokes in subscripts it varies between subthick# and thin#.
+ thick# := 1.1pt#; thin# := 0.2pt#;
+ subthick# := .8pt#;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ font_size 10pt#;
+ font_quad 1.5twd#+rm#;
+ font_x_height .7rm#;
+ font_normal_space:=1.2twd#;
+ font_normal_stretch:=.6twd#;
+ font_normal_shrink:=.4twd#;
+ font_identifier:="GRMK10";
+\input defs
+\input gmchars
+
diff --git a/language/gurmukhi/singh/grmk10.tfm b/language/gurmukhi/singh/grmk10.tfm
new file mode 100644
index 0000000000..04cf731b43
--- /dev/null
+++ b/language/gurmukhi/singh/grmk10.tfm
Binary files differ
diff --git a/language/gurmukhi/singh/grmk12.mf b/language/gurmukhi/singh/grmk12.mf
new file mode 100644
index 0000000000..1cd914cf88
--- /dev/null
+++ b/language/gurmukhi/singh/grmk12.mf
@@ -0,0 +1,24 @@
+mode_setup;
+ ht# := 2.4mm#; rm# := 0.72mm#; brm# := 1.08mm#; twd# := 1.75mm#;
+ uwidth# := twd#;
+ define_pixels(rm,twd,uwidth,brm);
+ define_whole_pixels(ht);
+ rot = 135;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% the following parameters determine the line-thicknes.
+% the line-thicknes varies between thin# and thick#, depending on the
+% angle between the pen and the direction of writing.
+% for strokes in subscripts it varies between subthick# and thin#.
+ thick# := 1.3pt#; thin# := 0.2pt#;
+ subthick# := .9pt#;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ font_size 12pt#;
+ font_quad 1.5twd#+rm#;
+ font_x_height .7rm#;
+ font_normal_space:=1.2twd#;
+ font_normal_stretch:=.6twd#;
+ font_normal_shrink:=.4twd#;
+ font_identifier:="GRMK12";
+\input defs
+\input gmchars
+
diff --git a/language/gurmukhi/singh/grmk12.tfm b/language/gurmukhi/singh/grmk12.tfm
new file mode 100644
index 0000000000..e98cb15ee6
--- /dev/null
+++ b/language/gurmukhi/singh/grmk12.tfm
Binary files differ
diff --git a/language/gurmukhi/singh/grmk8.mf b/language/gurmukhi/singh/grmk8.mf
new file mode 100644
index 0000000000..41700af785
--- /dev/null
+++ b/language/gurmukhi/singh/grmk8.mf
@@ -0,0 +1,24 @@
+mode_setup;
+ ht# := 1.6mm#; rm# := 0.48mm#; brm# := 0.72mm#; twd# := 1.12mm#;
+ uwidth# := twd#;
+ define_pixels(rm,twd,uwidth,brm);
+ define_whole_pixels(ht);
+ rot = 135;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% the following parameters determine the line-thicknes.
+% the line-thicknes varies between thin# and thick#, depending on the
+% angle between the pen and the direction of writing.
+% for strokes in subscripts it varies between subthick# and thin#.
+ thick# := .85pt#; thin# := 0.2pt#;
+ subthick# := .7pt#;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ font_size 8pt#;
+ font_quad 1.5twd#+rm#;
+ font_x_height .7rm#;
+ font_normal_space:=1.2twd#;
+ font_normal_stretch:=.6twd#;
+ font_normal_shrink:=.4twd#;
+ font_identifier:="GRMK8";
+\input defs
+\input gmchars
+
diff --git a/language/gurmukhi/singh/grmk8.tfm b/language/gurmukhi/singh/grmk8.tfm
new file mode 100644
index 0000000000..c3a5a96644
--- /dev/null
+++ b/language/gurmukhi/singh/grmk8.tfm
Binary files differ
diff --git a/language/gurmukhi/singh/grmk9.mf b/language/gurmukhi/singh/grmk9.mf
new file mode 100644
index 0000000000..c0202691aa
--- /dev/null
+++ b/language/gurmukhi/singh/grmk9.mf
@@ -0,0 +1,24 @@
+mode_setup;
+ ht# := 1.8mm#; rm# := 0.54mm#; brm# := 0.81mm#; twd# := 1.26mm#;
+ uwidth# := twd#;
+ define_pixels(rm,twd,uwidth,brm);
+ define_whole_pixels(ht);
+ rot = 135;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% the following parameters determine the line-thicknes.
+% the line-thicknes varies between thin# and thick#, depending on the
+% angle between the pen and the direction of writing.
+% for strokes in subscripts it varies between subthick# and thin#.
+ thick# := 1pt#; thin# := 0.2pt#;
+ subthick# := .7pt#;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ font_size 9pt#;
+ font_quad 1.5twd#+rm#;
+ font_x_height .7rm#;
+ font_normal_space:=1.2twd#;
+ font_normal_stretch:=.6twd#;
+ font_normal_shrink:=.4twd#;
+ font_identifier:="GRMK9";
+\input defs
+\input gmchars
+
diff --git a/language/gurmukhi/singh/grmk9.tfm b/language/gurmukhi/singh/grmk9.tfm
new file mode 100644
index 0000000000..881c1d2764
--- /dev/null
+++ b/language/gurmukhi/singh/grmk9.tfm
Binary files differ
diff --git a/language/gurmukhi/singh/gurmukhi.c b/language/gurmukhi/singh/gurmukhi.c
new file mode 100644
index 0000000000..1d0319d605
--- /dev/null
+++ b/language/gurmukhi/singh/gurmukhi.c
@@ -0,0 +1,948 @@
+/* gurmukhi.c
+ Preprocessor for TeX for text containing Gurmukhi characters.
+
+ 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.
+*/
+
+#include <stdio.h>
+#include <ctype.h>
+#define TRUE 1
+#define FALSE 0
+#define ILL_CHAR 29
+#define DUMMY 30
+#define END_OF_FILE 30
+#define END_OF_LINE 31
+#define N_NOLIGS 40
+/* ch_typ values */
+#define ILLEGAL 0
+#define CMR 1
+#define CONTROL 2
+#define GM 3
+#define NUMERAL 4
+/* ch_subtyp values */
+#define LO_VOWEL 0
+#define HI_VOWEL 1
+#define CONSONANT 2
+#define SPECIAL 3
+
+#define LBRACE 273
+#define RBRACE 264
+#define RE 263
+#define RN 265
+#define RS 256
+
+#define INBUF_LEN 133
+
+/* GLOBAL VARIABLES */
+FILE *f_in,*f_out,*fopen();
+
+short buf_length;
+short syll[30]; /* offset of syll is in chr_ptr or cons_ptr */
+short cons_ptr, chr_ptr;
+short cons_code;
+
+char *strchr();
+char wrong[10];
+char *p_in,*p_out,*s_ptr,*o_ptr;
+char infil[80], outfil[80];
+char inbuf[INBUF_LEN], outbuf[133];
+char word[500];
+
+unsigned char gm_mode, dollar_mode, cmr_mode;
+unsigned char d_found, no_gm, buf_ptr, wait_syl, lin_obey;
+unsigned char error, cons_seen, vow_seen;
+
+struct char_def {
+ short ch_typ, ch_subtyp, ch_code, ch_subcode;
+};
+
+struct char_def table[127] = {
+ {ILLEGAL,SPECIAL,0,0}, /* 1 not used */
+ {GM,CONSONANT,'\126',1}, /* 2 .t */
+ {GM,CONSONANT,'\130',2}, /* 3 .d */
+ {GM,SPECIAL,'\72',0}, /* 4 .o */
+ {GM,CONSONANT,'\132',3}, /* 5 .n */
+ {GM,CONSONANT,'\13',4}, /* 6 .g */
+ {GM,SPECIAL,'\24',0}, /* 7 .. */
+ {GM,CONSONANT,'\14',5}, /* 8 .K */
+ {GM,CONSONANT,'\127',6}, /* 9 .T */
+ {GM,CONSONANT,'\131',7}, /* 10 .D */
+ {GM,SPECIAL,'\54',0}, /* 11 .m */
+ {ILLEGAL,SPECIAL,0,0}, /* 12 not used */
+ {ILLEGAL,SPECIAL,0,0}, /* 13 not used */
+ {ILLEGAL,SPECIAL,0,0}, /* 14 not used */
+ {ILLEGAL,SPECIAL,0,0}, /* 15 not used */
+ {ILLEGAL,SPECIAL,0,0}, /* 16 not used */
+ {ILLEGAL,SPECIAL,0,0}, /* 17 not used */
+ {GM,CONSONANT,'\122',8}, /* 18 "n */
+ {GM,CONSONANT,'\146',9}, /* 19 "s */
+ {ILLEGAL,SPECIAL,0,0}, /* 20 not used */
+ {GM,CONSONANT,'\32', 10}, /* 21 ~n */
+ {GM,SPECIAL,'\137',0}, /* 22 ~a */
+ {ILLEGAL,SPECIAL,0,0}, /* 23 not used */
+ {ILLEGAL,SPECIAL,0,0}, /* 24 not used */
+ {GM,HI_VOWEL,275,'\106'}, /* 25 ii */
+ {GM,LO_VOWEL,274,1}, /* 26 uu */
+ {GM,HI_VOWEL,260,'\117'}, /* 27 oo */
+ {ILLEGAL,SPECIAL,0,0}, /* 28 not used */
+ {ILLEGAL,SPECIAL,0,0}, /* 29 not used */
+ {CONTROL,SPECIAL,0,0}, /* 30 DUMMY */
+ {CONTROL,SPECIAL,0,0}, /* 31 END_OF_LINE */
+ {CONTROL,SPECIAL,0,0}, /* 32 space */
+ {CMR,SPECIAL,0,0}, /* ! */
+ {ILLEGAL,SPECIAL,0,0}, /* " */
+ {ILLEGAL,SPECIAL,0,0}, /* # */
+ {ILLEGAL,SPECIAL,0,0}, /* $ */
+ {ILLEGAL,SPECIAL,0,0}, /* % */
+ {ILLEGAL,SPECIAL,0,0}, /* & */
+ {CMR,SPECIAL,0,0}, /* ' to - */
+ {CMR,SPECIAL,0,0}, /* ' to - */
+ {CMR,SPECIAL,0,0}, /* ' to - */
+ {CMR,SPECIAL,0,0}, /* ' to - */
+ {CMR,SPECIAL,0,0}, /* ' to - */
+ {CMR,SPECIAL,0,0}, /* ' to - */
+ {CMR,SPECIAL,0,0}, /* ' to - */
+ {ILLEGAL,SPECIAL,0,0}, /* . */
+ {GM,SPECIAL,'\40',0}, /* / */
+ {NUMERAL,SPECIAL,0,0}, /* 0 to 9 */
+ {NUMERAL,SPECIAL,0,0}, /* 0 to 9 */
+ {NUMERAL,SPECIAL,0,0}, /* 0 to 9 */
+ {NUMERAL,SPECIAL,0,0}, /* 0 to 9 */
+ {NUMERAL,SPECIAL,0,0}, /* 0 to 9 */
+ {NUMERAL,SPECIAL,0,0}, /* 0 to 9 */
+ {NUMERAL,SPECIAL,0,0}, /* 0 to 9 */
+ {NUMERAL,SPECIAL,0,0}, /* 0 to 9 */
+ {NUMERAL,SPECIAL,0,0}, /* 0 to 9 */
+ {NUMERAL,SPECIAL,0,0}, /* 0 to 9 */
+ {CMR,SPECIAL,0,0}, /* : and ; */
+ {CMR,SPECIAL,0,0}, /* : and ; */
+ {ILLEGAL,SPECIAL,0,0}, /* < */
+ {CMR,SPECIAL,0,0}, /* = */
+ {ILLEGAL,SPECIAL,0,0}, /* > */
+ {CMR,SPECIAL,0,0}, /* ? */
+ {GM,SPECIAL,'\177',0}, /* @ */
+ {GM,HI_VOWEL,258,'\101'}, /* A */
+ {GM,CONSONANT,'\102',11}, /* B */
+ {GM,CONSONANT,'\103',12}, /* C */
+ {GM,CONSONANT,'\104',13}, /* D */
+ {GM,HI_VOWEL,259,'\173'}, /* E */
+ {ILLEGAL,SPECIAL,0,0}, /* F */
+ {GM,CONSONANT,'\107',14}, /* G */
+ {GM,SPECIAL,'\54',0}, /* H */
+ {GM,HI_VOWEL,267,'\106'}, /* I */
+ {GM,CONSONANT,'\112',15}, /* J */
+ {GM,CONSONANT,'\113',16}, /* K */
+ {ILLEGAL,SPECIAL,0,0}, /* L not used */
+ {GM,SPECIAL,'\54',0}, /* M */
+ {GM,SPECIAL,'\134',0}, /* N */
+ {GM,HI_VOWEL,261,'\117'}, /* O */
+ {GM,CONSONANT,'\120',17}, /* P */
+ {ILLEGAL,SPECIAL,0,0}, /* Q */
+ {GM,CONSONANT,'\167',18}, /* R */
+ {GM,CONSONANT,'\146',9}, /* S */
+ {GM,CONSONANT,'\124',19}, /* T */
+ {GM,LO_VOWEL,276,1}, /* U */
+ {ILLEGAL,SPECIAL,0,0}, /* V to Z */
+ {ILLEGAL,SPECIAL,0,0}, /* V to Z */
+ {ILLEGAL,SPECIAL,0,0}, /* V to Z */
+ {ILLEGAL,SPECIAL,0,0}, /* V to Z */
+ {ILLEGAL,SPECIAL,0,0}, /* V to Z */
+ {CMR,SPECIAL,0,0}, /* [ */
+ {CONTROL,SPECIAL,0,0}, /* \ */
+ {CMR,SPECIAL,0,0}, /* ] */
+ {ILLEGAL,SPECIAL,0,0}, /* ^ */
+ {ILLEGAL,SPECIAL,0,0}, /* _ */
+ {CMR,SPECIAL,0,0}, /* ` */
+ {GM,HI_VOWEL,'\141',257}, /* a */
+ {GM,CONSONANT,'\142',20}, /* b */
+ {GM,CONSONANT,'\143',21}, /* c */
+ {GM,CONSONANT,'\144',22}, /* d */
+ {GM,HI_VOWEL,262,3}, /* e */
+ {GM,CONSONANT,'\47',23}, /* f */
+ {GM,CONSONANT,'\147',24}, /* g */
+ {GM,CONSONANT,'\150',25}, /* h */
+ {GM,HI_VOWEL,'\151','\105'}, /* i */
+ {GM,CONSONANT,'\152',26}, /* j */
+ {GM,CONSONANT,'\153',27}, /* k */
+ {GM,CONSONANT,'\154',28}, /* l */
+ {GM,CONSONANT,'\155',29}, /* m */
+ {GM,CONSONANT,'\156',30}, /* n */
+ {GM,HI_VOWEL,'\33','\157'}, /* o */
+ {GM,CONSONANT,'\160',31}, /* p */
+ {ILLEGAL,SPECIAL,0,0}, /* not used */
+ {GM,CONSONANT,'\162',32}, /* r */
+ {GM,CONSONANT,'\163',33}, /* s */
+ {GM,CONSONANT,'\164',34}, /* t */
+ {GM,LO_VOWEL,'\165',0}, /* u */
+ {GM,CONSONANT,'\166',35}, /* v */
+ {ILLEGAL,SPECIAL,0,0}, /* not used */
+ {ILLEGAL,SPECIAL,0,0}, /* not used */
+ {GM,CONSONANT,'\171',36}, /* y */
+ {GM,CONSONANT,'\51',37}, /* z */
+ {CONTROL,SPECIAL,0,0}, /* left brace */
+ {GM,SPECIAL,'\56',0}, /* | */
+ {CONTROL,SPECIAL,0,0}, /* right brace */
+ {ILLEGAL,SPECIAL,0,0}, /* ~ */
+ {ILLEGAL,SPECIAL,0,0} /* del */
+};
+
+char chset1[12]= {'k','t','d','o','n','g','.','K','T','D','m',' '};/* . */
+char chset4[10]= {'k','g','c','j','t','d','p','b','s',' '}; /* h */
+char chset3[3] = {'n','s',' '}; /* " */
+char chset6[3] = {'n','a',' '}; /* ~ */
+char chset2[3] = {'a','i',' '}; /* a */
+char chset5[2] = {'A','E'}; /* result of aa and ai */
+
+char out_string[277][7] = {
+ "\\7{","\\8{","\\9{","\\?","\\<","^^E","^^F",
+ "^^G","^^H","^^I","^^J","^^K","^^L","\\0",
+ "\\qx{","^^O","^^P","^^Q","^^R",
+ "^^S","^^T","^^U","^^V","^^W","^^X",
+ "^^Y","^^Z","^^[","^^\\","^^]",
+ "^^^","\\qy{","\\1","!","\"","\\#","\\$",
+ "\\%","\\&","\'","(",")","*","+",",","-",".","/","0","1","2",
+ "3","4","5","6","7","8","9",":",";","<","=",">","?","@",
+ "A","B","C","D","E","F","G","H","I","J","K","L","M","N",
+ "O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\2",
+ "]","\\qq{","\\35Fw","`","a","b","c","d","e","f","g","h","i","j",
+ "k","l","m","n","o","p","q","r","s","t","u","v","w","x",
+ "y","z","\\4","\\qz{","\\5","\\6{","^^?",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","","","","",
+ "","","{\\rs ","","aA","a\\4",
+ "ao","aO","a\\?","\\re}","}","\\rn{",
+ "{\\rdt}","iF","{\\qva}","{\\qvb}","{\\qvc}",
+ "\\qa{","\\qb{","{", "\\7{u}","Ei", "\\8{u}"
+};
+
+/* strstr : to make it portable */
+char *st_find(s,q)
+char *s, *q;
+{
+ short i,j,k,l;
+ j = strlen(s);
+ k = strlen(q);
+ for (i=0; i <= j-k; i++) {
+ if (s[i]==q[0]) {
+ for (l = 1; (s[i + l] == q[l]) && (q[l] != '\0'); l++) ;
+ if (q[l] == '\0') return(&s[i]);
+ }
+ }
+ return(NULL);
+}
+
+/* strchr : to make it portable */
+char *ch_find(s,q)
+char *s;
+char q;
+{
+ short i,j;
+ j = strlen(s);
+ for (i=0; i < j; i++)
+ if (s[i]==q) return(&s[i]);
+ return(NULL);
+}
+
+err_ill(str)
+char *str;
+{
+ printf("Error: illegal character(s): %s\n",str);
+ puts(inbuf);
+ getchar();
+ error = TRUE;
+}
+
+/* Find {\gm in inbuf, copy everything till {\gm to outbuf */
+/* and modify rest of it back to inbuf */
+/* RETURN : TRUE if inbuf is valid */
+/* FALSE otherwise */
+/* other ouputs : no_gm */
+/* d_found */
+char find_gm()
+{
+ char *d_ptr;
+ char *gm_ptr;
+ char *svbuf;
+ char again;
+
+ d_found = FALSE;
+ svbuf = inbuf;
+ do {
+ again = FALSE;
+ gm_ptr = st_find(svbuf,"{\\gm");
+ if (gm_ptr != NULL) {
+ again = isalpha(gm_ptr[4]);
+ svbuf = gm_ptr + 4;
+ }
+ } while(again);
+
+ if (dollar_mode) {
+ d_ptr = ch_find(inbuf,'$');
+ if ((d_ptr != NULL) && ((gm_ptr == NULL) || (d_ptr < gm_ptr))) {
+ d_found = TRUE;
+ gm_ptr = d_ptr;
+ }
+ }
+
+ if (gm_ptr == NULL)
+ return(FALSE);
+ strncat(outbuf,inbuf,gm_ptr-inbuf);
+ no_gm = FALSE;
+ if (!d_found) {
+ if (gm_ptr[4] == '#') {
+ no_gm = TRUE;
+ gm_ptr += 1;
+ } else {
+ strcat(outbuf,"{\\gm");
+ }
+ gm_ptr += 4;
+ } else {
+ switch(dollar_mode) {
+ case 1: strcat(outbuf,"{\\gm ");
+ break;
+ case 2: strcat(outbuf,"\\pgm ");
+ case 3: no_gm = TRUE;
+ }
+ gm_ptr += 1;
+ }
+ strcpy(inbuf,gm_ptr);
+ return(TRUE);
+}
+
+/* Returns one char from "inbuf" at "buf_ptr" */
+/* if inbuf is at END_OF_LINE then refills it from "f_in" */
+/* other inputs : p_in */
+/* other outputs: p_in, buf_length */
+char inp_ch()
+{
+ char ch, ch_out;
+ ch = inbuf[buf_ptr++];
+ if (ch == '\n') {
+ if (p_in == 0)
+ ch_out = END_OF_FILE;
+ else {
+ p_in = fgets(inbuf,INBUF_LEN,f_in);
+ buf_ptr = 0;
+ buf_length = strlen(inbuf);
+ ch_out = END_OF_LINE;
+ }
+ } else {
+ if (ch < 32)
+ ch_out = ILL_CHAR;
+ else
+ ch_out = ch;
+ }
+ return(ch_out);
+}
+
+put_macro(macro)
+short macro;
+{
+ char tmp[5];
+ int l, i;
+ if (syll[chr_ptr-1] == '\175') {
+ syll[chr_ptr+1] = '\175';
+ syll[chr_ptr] = RBRACE;
+ syll[chr_ptr-1] = syll[chr_ptr-2];
+ syll[chr_ptr-2] = macro;
+ chr_ptr += 2;
+ } else if (syll[chr_ptr-1]==RBRACE) {
+ syll[chr_ptr-3] = 271;
+ syll[chr_ptr] = LBRACE;
+ sprintf(tmp,"%d",macro);
+ l = strlen(tmp);
+ chr_ptr += 1;
+ for (i = 0; i < l; i++)
+ syll[chr_ptr+i] = tmp[i];
+ chr_ptr += l;
+ syll[chr_ptr] = RBRACE;
+ chr_ptr += 1;
+ } else {
+ syll[chr_ptr] = syll[chr_ptr-1];
+ syll[chr_ptr-1] = macro;
+ syll[chr_ptr+1] = RBRACE;
+ chr_ptr = chr_ptr +2;
+ }
+}
+
+/* find out string corresponding to chars in syll */
+/* and then move to word. */
+/* Reset related flags */
+put_syll()
+{
+ short i;
+ for (i = 0; i <= (chr_ptr-1); i++)
+ strcat(word,&out_string[syll[i]][0]);
+ chr_ptr = 0;
+ cons_seen =FALSE;
+ vow_seen =FALSE;
+ wait_syl = FALSE;
+}
+
+/* puts out string for one code ( or char ) in word */
+put_sym(code)
+short code;
+{
+ strcat(word,&out_string[code][0]);
+}
+
+/* move word to outbuf */
+/* if not lin_obey then
+ put outnuf in f_out
+ keep moving word to outbuf to f_out till
+ len of word is bigger than 80
+ At end of this routine outbuf may have a valid string
+*/
+put_word()
+{
+ short lw,lb;
+ lw = strlen(word);
+ lb = strlen(outbuf);
+ if (((lb + lw) > 80) && !lin_obey)
+ {
+ if (lb > 1)
+ {
+ if (outbuf[lb-1] != ' ')
+ strcat(outbuf,"%\n");
+ else
+ outbuf[lb-1] = '\n';
+ fputs(outbuf,f_out);
+ }
+ while (lw > 80)
+ {
+ strncpy(outbuf,word,79);
+ outbuf[79] = '\0';
+ strcat(outbuf,"%\n");
+ fputs(outbuf,f_out);
+ strcpy(word,&word[79]);
+ lw = strlen(word);
+ }
+ strcpy(outbuf,word);
+ }
+ else
+ strcat(outbuf,word);
+ strcpy(word,"");
+}
+
+/* copies c to word and */
+/* if c is space then outputs a word */
+sendchar(c)
+char c;
+{
+ char cstr[2];
+ cstr[0] = c;
+ cstr[1] = '\0';
+ strcat(word,cstr);
+ if (isspace(c))
+ put_word();
+}
+
+put_ch(code)
+short code;
+{
+ struct char_def *c_ptr;
+ short i;
+
+ c_ptr = &table[code-1];
+ switch(c_ptr->ch_typ) {
+ case GM:
+ if (cmr_mode) {
+ cmr_mode = FALSE;
+ put_sym(RE);
+ }
+ switch(c_ptr->ch_subtyp) {
+ case HI_VOWEL:
+ if (wait_syl)
+ put_syll();
+ if (cons_seen) {
+ if (code == 'i') {
+ for (i = chr_ptr; i>= (cons_ptr+1); i--)
+ syll[i] = syll[i-1];
+ syll[cons_ptr] = c_ptr->ch_subcode;
+ } else {
+ syll[chr_ptr] = c_ptr->ch_subcode;
+ if ((code != 'A') && (code != 'a'))
+ vow_seen = TRUE;
+ }
+ } else
+ syll[chr_ptr] = c_ptr->ch_code;
+ chr_ptr = chr_ptr + 1;
+ wait_syl = TRUE;
+ cons_seen = FALSE;
+ break;
+ case LO_VOWEL:
+ if (wait_syl)
+ put_syll();
+ if (cons_seen)
+ {
+ put_macro(c_ptr->ch_subcode);
+ chr_ptr = chr_ptr - 1;
+ }
+ else
+ syll[chr_ptr] = c_ptr->ch_code;
+ chr_ptr = chr_ptr + 1;
+ wait_syl = TRUE;
+ cons_seen = FALSE;
+ break;
+ case CONSONANT:
+ if (wait_syl)
+ put_syll();
+ if (!cons_seen) {
+ cons_seen = TRUE;
+ cons_ptr = chr_ptr;
+ cons_code = c_ptr->ch_subcode;
+ syll[chr_ptr] = c_ptr->ch_code;
+ chr_ptr += 1;
+ } else {
+ if (code == 'r') {
+ syll[chr_ptr] = '\175';
+ chr_ptr = chr_ptr + 1;
+ cons_code = 0;
+ } else if (code == 'h') {
+ syll[chr_ptr] = '\110';
+ chr_ptr = chr_ptr + 1;
+ cons_code = 0;
+ } else if (code == 'v') {
+ syll[chr_ptr] = '\46';
+ chr_ptr = chr_ptr + 1;
+ cons_code = 0;
+ } else {
+ cons_code = c_ptr->ch_subcode;
+ syll[chr_ptr] = c_ptr->ch_code;
+ chr_ptr += 1;
+ }
+ }
+ break;
+
+ case SPECIAL:
+ put_syll();
+ put_sym(c_ptr->ch_code);
+ }
+ break;
+
+ case ILLEGAL:
+ wrong[0] = code; wrong[1] = '\0';
+ err_ill(wrong);
+ break;
+
+ case CONTROL:
+ if (cmr_mode) {
+ cmr_mode = FALSE;
+ put_sym(RE);
+ } else {
+ put_syll();
+ }
+ if (code == END_OF_LINE) {
+ put_word();
+ strcat(outbuf,"\n");
+ fputs(outbuf,f_out);
+ strcpy(outbuf,"");
+ if (!lin_obey)
+ fputs("\n",f_out);
+ } else if (code != DUMMY)
+ sendchar(code);
+ break;
+
+ case CMR:
+ if (cmr_mode)
+ sendchar(code);
+ else {
+ cmr_mode = TRUE;
+ put_syll();
+ put_sym(RS);
+ sendchar(code);
+ }
+ break;
+
+ case NUMERAL:
+ sendchar(code);
+ break;
+ } /* end of switch on ch_typ */
+}
+
+/* This routine resolves the combination of charaters */
+/* used to symbolize font characters */
+/* i.e. it cooks set of input chars to one offset in "table" */
+gmproc(symbol)
+char symbol;
+{
+ unsigned char saved,gmready;
+ short brace_lev;
+ char savchr;
+ short i;
+
+ brace_lev = 1;
+ saved = FALSE;
+ gmready = FALSE;
+ do {
+ switch(symbol) {
+ case '.':
+ savchr = inp_ch();
+ i = 0;
+ do {
+ i++;
+ } while ((i != 12) && (chset1[i-1] != savchr));
+ if (i == 12) {
+ wrong[0] = '.';
+ wrong[1] = savchr;
+ wrong[2] = '\0';
+ err_ill(wrong);
+ } else if (i < 4) {
+ savchr = inp_ch();
+ if (savchr == 'h')
+ i = i+7;
+ else {
+ saved = TRUE;
+ if (i == 1)
+ err_ill(".k");
+ }
+ }
+ if (!error) {
+ if (i == 11)
+ put_ch('M');
+ else
+ put_ch(i);
+ }
+ break;
+ case 'i':
+ savchr = inp_ch();
+ if (savchr == 'i')
+ put_ch(25);
+ else {
+ put_ch(symbol);
+ saved = TRUE;
+ }
+ break;
+ case 'u':
+ savchr = inp_ch();
+ if (savchr == 'u')
+ put_ch(26);
+ else {
+ put_ch(symbol);
+ saved = TRUE;
+ }
+ break;
+ case 'o':
+ savchr = inp_ch();
+ if (savchr == 'o')
+ put_ch(27);
+ else {
+ put_ch(symbol);
+ saved = TRUE;
+ }
+ break;
+ case 'a':
+ savchr = inp_ch();
+ i = 0;
+ do {
+ i++;
+ } while ((i != 3) && (chset2[i-1] != savchr));
+ if (i == 3)
+ {
+ put_ch(symbol);
+ saved = TRUE;
+ } else
+ put_ch(chset5[i-1]);
+ break;
+
+ case '\"':
+ savchr = inp_ch();
+ i = 0;
+ do {
+ i++;
+ } while ((i != 3) && (chset3[i-1] != savchr));
+ if (i == 3) {
+ wrong[0] = '~';
+ wrong[1] = savchr;
+ wrong[2] = '\0';
+ err_ill(wrong);
+ } else
+ put_ch(i+17);
+ break;
+
+ case '~':
+ savchr = inp_ch();
+ i = 0;
+ do {
+ i++;
+ } while ((i != 3) && (chset6[i-1] != savchr));
+ if (i == 3) {
+ wrong[0] = '~';
+ wrong[1] = savchr;
+ wrong[2] = '\0';
+ err_ill(wrong);
+ } else
+ put_ch(i+20);
+ break;
+
+ case END_OF_LINE:
+ if (lin_obey) {
+ put_ch(END_OF_LINE);
+ put_ch(END_OF_LINE);
+ } else {
+ do {
+ savchr = inp_ch();
+ } while (savchr == ' ');
+ if (savchr == END_OF_LINE)
+ put_ch(END_OF_LINE);
+ else {
+ put_ch(' ');
+ saved = TRUE;
+ }
+ }
+ break;
+
+ case '$':
+ if (!dollar_mode)
+ put_ch(symbol);
+ else {
+ if (no_gm)
+ put_ch(DUMMY);
+ else
+ put_ch('}');
+ gmready= TRUE;
+ put_word();
+ strcpy(inbuf,&inbuf[buf_ptr]);
+ }
+ break;
+
+ case '}':
+ brace_lev = brace_lev-1;
+ if ((brace_lev == 0) && !d_found) {
+ if (no_gm)
+ put_ch(DUMMY);
+ else
+ put_ch(symbol);
+ gmready= TRUE;
+ put_word();
+ strcpy(inbuf,&inbuf[buf_ptr]);
+ } else
+ put_ch(symbol);
+ break;
+
+ case '{':
+ put_ch(symbol);
+ brace_lev = brace_lev+1;
+ break;
+
+ case '%': do
+ symbol = inp_ch();
+ while(symbol != END_OF_LINE);
+ break;
+
+ case '\\':
+ put_ch(symbol);
+ symbol = inp_ch();
+ if (symbol == END_OF_LINE) {
+ put_word();
+ strcat(outbuf,"\n");
+ fputs(outbuf,f_out);
+ strcpy(outbuf,"");
+ } else {
+ if (!isalnum(symbol))
+ sendchar(symbol);
+ else {
+ do {
+ sendchar(symbol);
+ symbol = inp_ch();
+ } while (isalnum(symbol));
+ savchr = symbol;
+ saved = TRUE;
+ }
+ }
+ break;
+
+ case ILL_CHAR: err_ill('\0');
+ break;
+
+ case END_OF_FILE:
+ puts("error: missing }");
+ error = TRUE;
+ break;
+
+ default:
+ i = 0;
+ do {
+ i++;
+ } while ((i != 10) && (chset4[i-1] != symbol));
+ if (i == 10)
+ put_ch(symbol);
+ else {
+ savchr = inp_ch();
+ if (savchr == 'h') {
+ put_ch(symbol-32);
+ } else {
+ put_ch(symbol);
+ saved = TRUE;
+ }
+ }
+ break;
+ } /* end of switch */
+ if (saved) {
+ symbol = savchr;
+ saved = FALSE;
+ } else if ((!error) && (!gmready)) {
+ symbol = inp_ch();
+ }
+ } while (!error && !gmready);
+}
+
+main(argc,argv)
+int argc;
+char *argv[];
+{
+ unsigned char gm_yes;
+ /* get file specifications */
+
+ if (argc == 3) {
+ strcpy(infil,argv[1]);
+ strcpy(outfil,argv[2]);
+ } else if (argc == 2) {
+ strcpy(infil,argv[1]);
+ strcpy(outfil,"");
+ } else {
+ do {
+ printf("input file: ");
+ gets(infil);
+ } while (strlen(infil) == 0);
+ printf("output file: ");
+ gets(outfil);
+ }
+ s_ptr = strchr(infil,'.');
+ if (strlen(outfil) == 0) {
+ strcpy(outfil,infil);
+ o_ptr = strchr(outfil,'.');
+ if (o_ptr != 0)
+ *o_ptr = '\0';
+ }
+ if (s_ptr == 0)
+ strcat(infil,".gm");
+ o_ptr = strchr(outfil,'.');
+ if (o_ptr == 0)
+ strcat(outfil,".tex");
+
+ /* open files */
+
+ if ((f_in = fopen(infil,"r")) == NULL) {
+ printf("cannot open file %s\n",infil);
+ exit(1);
+ }
+ if ((f_out = fopen(outfil,"w")) == NULL) {
+ printf("cannot open file %s\n",infil);
+ exit(1);
+ }
+
+ /* initialization */
+
+ error = FALSE;
+ cons_seen = FALSE;
+ vow_seen = FALSE;
+ wait_syl = FALSE;
+
+ cmr_mode = FALSE;
+ gm_mode = TRUE;
+ lin_obey = FALSE;
+ dollar_mode = 0;
+
+ chr_ptr = 0;
+ strcpy(word,"");
+ strcpy(outbuf,"");
+
+ /* read preprocessor commands */
+
+ while (TRUE) {
+ strcpy(inbuf,"");
+ p_in = fgets(inbuf,INBUF_LEN,f_in);
+ if (inbuf[0] != '@')
+ break;
+ while (TRUE) {
+ if (st_find(inbuf,"dollars") == &inbuf[1]) {
+ dollar_mode = 1;
+ break;
+ }
+ if (st_find(inbuf,"punjabi") == &inbuf[1]) {
+ /* reserved for hindi & pujabi merger */
+ break;
+ }
+ if (st_find(inbuf,"obeylines") == &inbuf[1]) {
+ lin_obey = TRUE;
+ break;
+ }
+ if (st_find(inbuf,"dolmode1") == &inbuf[1]) {
+ dollar_mode = 1;
+ break;
+ }
+ if (st_find(inbuf,"dolmode2") == &inbuf[1]) {
+ dollar_mode = 2;
+ break;
+ }
+ if (st_find(inbuf,"dolmode3") == &inbuf[1]) {
+ dollar_mode = 3;
+ break;
+ }
+ printf("Error: illegal preprocessor command\n");
+ puts(inbuf);
+ getchar();
+ break;
+ }
+ }
+
+ /* main loop */
+
+ do {
+ if (!find_gm())
+ fputs(inbuf,f_out);
+ else {
+ do {
+ buf_length = strlen(inbuf);
+ buf_ptr = 0;
+ gmproc(inp_ch());
+ if (!error)
+ gm_yes = find_gm();
+ if (!gm_yes) {
+ strcat(outbuf,inbuf);
+ fputs(outbuf,f_out);
+ }
+ } while (gm_yes && !error);
+ }
+ strcpy(inbuf,"");
+ p_in = fgets(inbuf,INBUF_LEN,f_in);
+ strcpy(outbuf,"");
+ } while ((p_in != NULL) && !error);
+ fclose(f_in);
+ fclose(f_out);
+}
diff --git a/language/gurmukhi/singh/install.dos b/language/gurmukhi/singh/install.dos
new file mode 100644
index 0000000000..2ac424b986
--- /dev/null
+++ b/language/gurmukhi/singh/install.dos
@@ -0,0 +1,106 @@
+The purpose of this file is to help in installation of "Gurmukhi for TeX"
+software package on DOS. In addition to this file Readme and manual.gm,
+are also provided which provide information about how and why to use this
+package.
+
+Lets assume that you have installed TeX and TeX can call METAFONT for
+font creation. I do not have TeX, METAFONT, and C-compiler on my machine
+in DOS environment, so was not able to install or test this software.
+Please let me know if you are successfully able to setup this package.
+
+Following help is extracted from "Devanagari for TeX" readme file, and
+and is modified a little for "Gurmukhi for Tex" in hope that this will
+be helpful in installation.
+
+In order to install the software you have to put the files in the right
+directories and rename them (if necessary).
+
+* GMMACS.TEX, BANI.GM, EG.GM, MANUAL.GM must be in the directory
+ where TeX expects it's input. This is something like C:\TEX\INPUTS on
+ MS-DOS systems.
+
+* Compile GURMUKHI.C file to create an executable of preprocessor, with
+ a name may be GURMUKHI.EXE. Move it in a directory specified in the
+ PATH environment-variable. Preferably it should be put in the directory
+ where other executable files are kept, often called BIN.
+
+* If you do have a 300dpi black-writing laser-printer then you can use
+ the included PK and TFM files. The TFM-files have to be put in the
+ directory where TeX keeps its TFM-files, mostly called C:\TEX\FONTS
+ or something like that. The organization of the fontfiles (PK-files)
+ varies from installation to installation. Sometimes all the fontfiles
+ are put together in one large directory and the different magnifications
+ of a font are distinguished by their filename extension, as is the case
+ with the fonts in this package.
+
+ Instead of in a directory the font files are sometimes put in a library.
+ This is the way it is done in emTeX. And sometimes there are different
+ directories for each magnification. These directories have 'names' like
+ 300, 329 etc. The fontfiles within these directories have no extensions
+ or just the extension 'PK'.
+
+ According to which fontfile-organization is used on your system, you
+ have to copy and rename the fontfiles in the PK300 directory in this
+ package.
+
+* If your printer is not a 300dpi black-writing laser-printer, or if you
+ want to change the appearance of the font or of some characters in it
+ then you have to run METAFONT and use the .MF files as input. There
+ are METAFONT source files for 3 different sizes: 8,9 and 10 point:
+ GRMK8.MF, GRMK9.MF and GRMK10.MF.
+ All of these three source-files make use of DEFS.MF and GMCHARS.MF.
+
+ The following is taken from: FAQ about TeX
+
+ METAFONT allows you to create your own fonts. METAFONT, unlike TeX,
+ requires some customization. Each output device for which you will be
+ generating fonts needs a mode associated with it. Modes are defined
+ using the mode_def convention described on page 94 of _The METAFONTbook_.
+ The person who installed METAFONT on your system should know which
+ modes are defined.
+
+ The usual way to create a font with plain METAFONT is to start
+ it with the line
+ \mode=<mode name>; mag=<magnification>; input <font file name>
+ in response to the * prompt or on the METAFONT command line. If
+ <mode name> is unknown or omitted, then the mode defaults to proof
+ mode. If this has happened METAFONT will produce an output file
+ called <font file name>.2602gf. The <magnification> is a floating
+ point number or magstep (magsteps are defined in _The METAFONTbook_
+ and _The TeXbook_). If mag=<magnification> is omitted, then the
+ default is 1. For example, to generate dvng10 at 12pt for an epson
+ printer you would type
+ mf \mode=epson; mag=1.2; input dvng10
+
+ If you need a special mode that isn't defined for your METAFONT,
+ you can put its commands in a file (e.g., ln03.mf) and invoke
+ it on the fly with the \smode command. For example, to create
+ dvng10.300gf for an LN03 printer, using the file
+ % This is ln03.mf as of 2/27/90
+ % mode_def courtesy of John Sauter
+ proofing:=0;
+ fontmaking:=1;
+ tracingtitles:=0;
+ pixels_per_inch:=300;
+ blacker:=0.65;
+ fillin:=-0.1;
+ o_correction:=.5;
+ (note the absence of the mode_def and enddef commands), we would type
+ mf \smode="ln03"; input dvng10
+
+* After this setup you are ready to use this package. You can use
+ example file bani.gm and eg.gm to see if everything is alright. A
+ typical set of commands can be given as follows. This information
+ is in greater detail in manual.ps
+
+ gurmukhi bani
+ tex bani
+
+ You can send dvi file generated here to your printer.
+
+------------------------------------------------------------------------
+Amarjit Singh
+E-mail Address: asingh@evovling.com
+Postal Address: 8405 E. Hampden Ave #11N Denver CO 80231 USA (Current)
+ A-3 Mansarover Garden, New Delhi 110015 India(Permanent)
+------------------------------------------------------------------------
diff --git a/language/gurmukhi/singh/install.ux b/language/gurmukhi/singh/install.ux
new file mode 100644
index 0000000000..05811547a6
--- /dev/null
+++ b/language/gurmukhi/singh/install.ux
@@ -0,0 +1,68 @@
+The purpose of this file is to help in installation of "Gurmukhi for TeX"
+software package on a Unix. In addition to this file Readme and manual.gm,
+are also provided which provide information about how and why to use this
+package
+
+Lets assume that you have installed TeX and TeX can call METAFONT for
+font creation. I have Tex Version 3.1415N (C version 6.1), and METAFONT
+Version 2.71 (C version 6.1). I got all these tools with Linux version
+1.2.1.
+
+Lets also assume that you are installing this software under a directory
+"/usr/abc/gurmukhi". Under this directory make top-level TeX directory
+lib/tex. In this top-level TeX directory /usr/abc/gurmukhi/lib/tex, make
+sub-directories "macros", "mf", "pk", and "tfm", and move all *.mf files
+in mf directory, *.tfm files in tfm directory, *.pk files in pk directory,
+and gmmacs.tex file in macros directory.
+
+Compile the preprocessor, gurmukhi.c and put the executable somewhere on
+your path. With following command, you will get preprocessor with name
+"gurmukhi",
+cc -o gurmukhi gurmukhi.c
+
+To set the environment variables in a c-shell environment, you can create
+a file with following information and "source" it every time you want to
+use this package.
+
+set texbase = /usr/abc/gurmukhi/lib/tex
+setenv TEXINPUTS .:$texbase/macros:
+setenv TEXFONTS :$texbase/tfm
+setenv TEXPKS :$texbase/pk
+setenv MFINPUTS :$texbase/mf
+unset texbase
+
+Note that leading and trailing colon tells TeX to append the system path
+at that point. If you have an older version of TeX (before version 3),
+you may need to explicitly specify them in the environment variables. If
+you use xtex, you will need to explicitly list your system directories in
+the TEXFONTS variable, since it doesn't understand the leading/trailing
+colon convention.
+
+
+After this setup you are ready to use this package. You can use example
+file bani.gm and eg.gm to see if everything is alright. A typical set of
+commands can be given as follows. This information is in greater detail
+in manual.ps
+
+gurmukhi bani
+tex bani
+dvips bani.dvi
+
+You can view the generated files using any one of following
+
+xdvi bani
+gs bani
+ghostview bani
+
+and can send .ps file generated by dvips to your laser printer.
+
+There are programs equivalent to dvips for some non-laser printers
+and are available at tex-archive sites.
+
+
+------------------------------------------------------------------------
+Amarjit Singh
+E-mail Address: asingh@evovling.com
+Postal Address: 8405 E. Hampden Ave #11N Denver CO 80231 USA (Current)
+ A-3 Mansarover Garden, New Delhi 110015 India(Permanent)
+------------------------------------------------------------------------
diff --git a/language/gurmukhi/singh/known.prob b/language/gurmukhi/singh/known.prob
new file mode 100644
index 0000000000..8aa7b616fa
--- /dev/null
+++ b/language/gurmukhi/singh/known.prob
@@ -0,0 +1,9 @@
+These are known issues and I am working on them. Any help or
+suggestion on these, will be more than welcome. Thanks for
+your patience.
+
+1. Matra of u and U does not fit properly will some charaters.
+
+2. Somehow, first digit after {\gm is not printed, even though
+ it appears in 'intermediate' .tex file. Let me know if you
+ don't see this problem on your system.
diff --git a/language/gurmukhi/singh/manual.gm b/language/gurmukhi/singh/manual.gm
new file mode 100644
index 0000000000..ebbee2a41a
--- /dev/null
+++ b/language/gurmukhi/singh/manual.gm
@@ -0,0 +1,329 @@
+@punjabi
+%________________________________________________________________________
+%
+% 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.
+%________________________________________________________________________
+\input gmmacs
+\nopagenumbers
+\hsize=6in
+
+\font\title=cmr9 scaled\magstep5
+\relax
+\font\subtitle=cmr9 scaled\magstep2
+\relax
+\font\pal=cmr9
+
+\bigskip\vbox{
+
+
+
+
+
+
+}\bigbreak
+\centerline{{\title Gurmukhi for \TeX}\footnote*{\TeX\ is a trademark of the
+American Mathematical Society}}
+\smallskip
+\centerline{\title User Manual}
+\smallskip
+\centerline{\subtitle Version 1.0}
+\centerline{\subtitle October 1995}
+\bigskip
+\bigskip
+\centerline{\title Amarjit Singh}
+\bigskip
+\eject
+{\subtitle Introduction}
+\bigskip
+
+The purpose of the ``Gurmukhi for \TeX'' software package is to convert the
+characters in a document from English Alphabet to Gurmukhi
+(script for the Punjabi language), utilizing the \TeX [1][2] and
+METAFONT\footnote*{METAFONT is a trademark of Adddison Wesley Publishing Company}[3]
+software packages. \TeX\ is a typesetting system developed by the American
+Mathematical Society, used widely on Unix systems, and occassionally on
+other operating environments. METAFONT is a font generation tool supported
+by \TeX . Both \TeX\ and METAFONT are free software packages which can be
+downloaded from \TeX\ archive sites[4]. A working knowledge of \TeX\ will
+greatly help in using the 'Gurmukhi for \TeX ' package.
+
+This document provides information for preparing input text files and use of
+the 'Gurmukhi for \TeX ' software. This is the first version of the software
+and it may undergo changes in the near future, so keep an eye out for
+enhanced future releases.
+
+\bigskip
+{\subtitle Acknowledgement}
+\bigskip
+The Gurmukhi package was inspired by the Devanagari script generation
+package ``Devanagari for \TeX \footnote\dag{``Devanagari for \TeX '' is a copyright
+of Frans J. Vethuis}'' which is developed by Frans J. Velthuis
+and has been brought to you with his permission to support Gurmukhi script.
+I would also like to thank my mother for repeatedly prompting me to write
+a letter to her in Gurmukhi. Last, but not least, I would like to thank
+everyone who might use this software package.
+
+\bigskip
+If you have comments or suggestion, feel free to send them to me at
+the following address:
+\smallskip
+\leftline{ E-mail: asingh@evolving.com }
+
+\leftline{ Postal Mail: Amarjit Singh }
+\leftline{ 8405 E. Hampden Ave \#11N Denver CO 80231 USA }
+\leftline{ A-3 Mansarover Garden, New Delhi 110015 India }
+\bigskip
+\bigskip
+{\subtitle Preparing a Document for Trans-literation }
+\bigskip
+
+A document is initially created using regular ASCII text. The text is
+then converted into Gurmukhi using simple transliteration rules, and
+most of \TeX\ features from the initial document are passed to an
+`intermediate' \TeX\ file. The generated output can be sent to a printer or
+to the screen
+
+This section describes what ASCII characters can be used to produce
+Gurmukhi characters, and the delimiters which are required to put
+together these characters to pass to \TeX . Some control commands are
+presented which you might use to modify the behaviour of this
+tool to transform ASCII input text into Gurmukhi text. There is a macro
+file for \TeX\ which should be included in your text file.
+\bigskip
+{\bf Characters}
+
+Table 1 presents the ASCII to Gurmukhi character set translation.
+
+To maintain the simplicity of transliteration, more than one
+character may be used, for example; 'kh' would be used to produce
+the Gurmukhi character {\gm kh}. Depending upon the context of
+a vowel, between the word or beginning of a word, a sign
+(like '{\gm \char69}') or a character (like '{\gm i}') will appear.
+An exception to this rule will be two vowels appearing together.
+There is a very limited number of half-characters in Gurmukhi and
+they are for h, v and r.
+
+There are more than one ASCII character sets which can be used in
+input text, for representation of some Gurmukhi characters, like
+'kh' and 'K' can be used for '{\gm K}' and it
+is totally your choice to use any of them.
+
+In Gurmukhi text mode digits will appear as :
+
+{\gm 0 0 1 2 3 4 5 6 7 8 9 }
+\bigskip
+\eject
+\centerline{\bf Table 1: ASCII Character sets for Gurmukhi characters}
+\smallskip
+\settabs 8 \columns
+\+u&{\gm u}&k&{\gm k}&t&{\gm t}&sh, S or "s&{\gm "s}\cr
+\+uu&{\gm uu} or {\gm \char1}&kh or K&{\gm K}&th or T&{\gm T}&.kh or .K&{\gm .K}\cr
+\+U&{\gm U} or {\gm \char1}&g&{\gm g}&d&{\gm d}&.g&{\gm .g}\cr
+\+a&{\gm a} or&gh or G&{\gm G}&dh or D&{\gm D}&z&{\gm z}\cr
+\+aa or A&{\gm A} or {\gm \char65}&"n&{\gm "n}&n&{\gm n}&f&{\gm f}\cr
+\+i&{\gm i} or {\gm \char69}&c&{\gm c}&p&{\gm p}&N&{\gm N .ti~apI}\cr
+\+ii&{\gm ii} or {\gm \char70}&ch or C&{\gm C}&ph or P&{\gm P}&.m or M&{\gm M biNdI}\cr
+\+I&{\gm I} or {\gm \char70}&j&{\gm j}&b&{\gm b}&/&{\gm / caNdrabiNdU}\cr
+\+e&{\gm e} or {\gm \char3}&jh or J&{\gm J}&bh or B&{\gm B}&\~\relax a&{\gm ~a aD~ak}\cr
+\+ai or E&{\gm E} or {\gm \char123}&\~\relax n&{\gm ~n}&m&{\gm m}&@&{\gm @ (tOR)}\cr
+\+o&{\gm o} or {\gm \char111}&.t&{\gm .t}&y&{\gm y}& {\tt |} &{\gm | (.dN.dA)}\cr
+\+oo&{\gm oo} or {\gm \char79}&.th or .T&{\gm .T}&r&{\gm r}& {\tt ||}&{\gm ||}\cr
+\+O&{\gm O} or {\gm \char79}&.d&{\gm .d}&l&{\gm l}&.o&{\gm .o}\cr
+\+s&{\gm s} &.dh or .D&{\gm .D}&v&{\gm v}\cr
+\+h&{\gm h} &.n&{\gm .n}&R&{\gm R}\cr
+
+\bigskip
+{\bf Delimiters}
+
+All text appearing after \% up to the end of the line, will be
+considered comments and will not generate any output.
+
+All the text between '$\{ \backslash gm$' and '$\}$' will be converted to
+Gurmukhi according to the character set shown in Table 1.
+
+All the text between \$ signs will be converted to Gurmukhi when the @dollars
+preprocessor command is given.
+
+The following characters are allowed but do not change representation inside
+Gurmukhi delimiters:
+
+ ! ` ' ( ) * - : ; = ? , [ ] +
+
+The following characters are not allowed inside Gurmukhi delimiters:
+
+ {\tt <} {\tt >} F L Q V W X Y Z \^ \_ q w x
+
+Obviously, characters outside Gurmukhi delimiters will not be changed to
+Gurmukhi and will be printed in English Alphabet or will follow the
+rules which you specify.
+
+To change the pointsize of characters within '$\{ \backslash gm$' and '$\}$'
+the following delimiters can be used, in incremental sizes, :
+\smallskip
+
+\bigskip
+\settabs 2 \columns
+\+ $\backslash gmsmall$ & 8 point font \cr
+
+\+ $\backslash gmnine$ & 9 point font \cr
+
+\+ $\backslash gmnormal$ & 10 point font \cr
+
+\+ $\backslash gmbig$ & 10 point font, magnified at 1 step \cr
+
+\+ $\backslash gmlarge$ & 10 point font, magnified at 2 steps \cr
+
+\+ $\backslash gmhuge$ & 10 point font, magnified at 3 steps \cr
+
+\bigskip
+{\bf Examples}
+
+Different character sets, following above mentioned rules, within Gurmukhi
+delimilters can produce desired output, like $\{ \backslash gm$ paNjaab$\}$
+and $\{ \backslash gm$ pNjAb$\}$ will print {\gm pNjAb}.
+
+Sometimes, you may have to type an extra `a' to complete a syllable, even
+though it may not appear in the Gurmukhi representation of that word.
+
+There are additional gm files other than the source of this document, which
+can be referred to for examples.
+\bigskip
+{\bf Control commands}
+
+At the start of input text, the following preprocessor commands
+can be used, to control the functionality of the preprocessor:
+
+@obeylines
+ To follow the line breaks which you type.
+
+@dollars
+ To activate \$ as a special symbol such that text delimited by \$
+ is converted to Gurmukhi.
+
+@punjabi
+ Does not do anything right now, but may be used when the tool
+ supports other languages.
+
+After the above preprocessor commands, insert the following command
+to include a macro file. This ia a very important step because
+without the macro file, \TeX\ will not recognize the translated
+text generated by the preprocessor.
+
+\input gmmacs
+
+\bigskip
+{\subtitle Transforming a Document}
+\bigskip
+
+The ``Gurmukhi for \TeX'' package consists of a preprocessor, font files
+and a macro file. See the file ``readme'' and ``install.unix'' for
+installation steps. Installation should be fairly easy, as there is
+no system dependent code. Wherever you can find \TeX\ and metafont,
+you can very possibly install and use this package.
+\bigskip
+{\bf The Preprocessor}
+
+The job of the preprocessor is to find the correct representation of a
+character according to its context. When a vowel appears in a word,
+a syllable completes, and context changes to what it was at the
+beginning of a new word. It also finds possible half representation of
+characters. Output of this preprocessor is a \TeX\ document.
+\bigskip
+{\bf Example session of commands}
+
+Lets assume that during installation you have prepared the preprocessor
+with name "gurmukhi" and have set paths in your environment to locate font and
+macro files. Lets also assume that you have an input file with the name "text.gm".
+
+You would start the preprocessor on the file 'text.gm' as follows:
+\bigskip
+\settabs 2 \columns
+\+ gurmukhi text & (to get a \TeX\ file)\cr
+\bigskip
+
+The \TeX\ file produced here, text.tex, can be used as any other input
+file for \TeX . After this a typical sequence of commands may be
+\bigskip
+\settabs 2 \columns
+\+ tex text & (to get dvi file) \cr
+\smallskip
+\+ xdvi text & (to view dvi file) \cr
+\bigskip
+
+
+Another sequence after this may be
+\bigskip
+\settabs 2 \columns
+\+ dvips text & ( to get postscript file text.ps from text.dvi ) \cr
+\smallskip
+\+ gs text.ps & ( to view postscript file ) \cr
+\smallskip
+\+ ghostview text.ps & ( another way to view postscript file ) \cr
+\bigskip
+
+
+Now it is time to send the postscript file to a postscript printer, and
+a command command for this may be:
+
+ lp text.ps
+
+
+\bigskip
+{\subtitle Devanagari}
+\bigskip
+
+This section is presented for those who have used the Devanagari package
+or would also like to use the Devanagari package. There are not many
+differences between the two. In Devanagari, you create a text file
+in the same manner as with Gurmukhi, but you have slightly different
+character sets for representation and you will use a similar sequence of
+commands.
+
+The differences in character sets in Gurmukhi and Devanagari are as
+follows:
+
+In Gurmukhi, S and sh can also be used in addition to "s to produce {\gm S}
+and N is used in Gurmukhi to print {\gm N (.ti~apI)}, ii produces {\gm ii}
+ and not {\gm I}, \~\relax a produces {\gm ~a}.
+
+The Devanagari software package allows many character sets such as .s,
+.h, H, q which are not valid in Gurmukhi.
+
+\bigskip
+{\subtitle What may be next:}
+\bigskip
+
+Support for LaTeX
+
+Porting to different systems and platforms
+
+Combination of Devanagari and Gurmukhi.
+
+\bigskip
+{\subtitle Biblography}
+\bigskip
+[1] Norman Walsh {\it Making \TeX Work} O'Reilly \& Associates, Inc. July 1994.
+
+[2] Donald E. Knuth {\it The \TeX book} Addison Wesley Publishing Co. Sep 1993
+
+[3] Donald E. Knuth {it The METAFONT Book} Addison Wesley,
+
+[4] FTP Site for \TeX\ and related softwares, including METAFONT, and Devanagri
+
+\indent { \indent{ftp.shsu.edu/tex-archive}}
+
+[5] Frans J. Velthuis {\it Devanagari for \TeX} Version 1.2
+
+\bye
diff --git a/language/gurmukhi/singh/manual.ps b/language/gurmukhi/singh/manual.ps
new file mode 100644
index 0000000000..c42d06d55a
--- /dev/null
+++ b/language/gurmukhi/singh/manual.ps
@@ -0,0 +1,887 @@
+%!PS-Adobe-2.0
+%%Creator: dvipsk 5.58a Copyright 1986, 1994 Radical Eye Software
+%%Title: manual.dvi
+%%Pages: 5
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentPaperSizes: a4
+%%EndComments
+%DVIPSCommandLine: dvips manual
+%DVIPSParameters: dpi=300, compressed, comments removed
+%DVIPSSource: TeX output 1995.10.22:1605
+%%BeginProcSet: texc.pro
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
+/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
+mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
+ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
+isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
+hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
+TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
+forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
+/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
+/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
+/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
+string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
+end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
+/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
+N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
+length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
+128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
+get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
+dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
+/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
+/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
+0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
+setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
+.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N
+/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id
+gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp
+add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add
+/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
+dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
+adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2
+idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
+putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
+adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
+{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
+adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
+chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
+}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
+length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
+cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
+0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
+add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
+/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
+known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
+/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
+65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
+0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
+{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
+getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
+ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
+RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
+false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
+round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
+rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
+{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
+B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
+4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
+p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
+a}B /bos{/SS save N}B /eos{SS restore}B end
+%%EndProcSet
+TeXDict begin 39158280 55380996 1000 300 300 (manual.dvi)
+@start /Fa 18 119 df<48B5FC39003C03C090383800E0A21570A24913781538A21578
+5BA4484813F0A315E03803800115C0140315803907000700140E5C5C000E13E0B512801D
+1C7E9B1F>68 D<48B512F038003C00013813301520A35BA214081500495AA21430EBFFF0
+3801C020A439038040801400A2EC0100EA07005C14021406000E133CB512FC1C1C7E9B1C
+>I<D801FEEB01FED8003E14E0012EEB03C01505A21509014EEB0B801513152313470187
+EB4700A21587EC0107D80107130E14021404A20002495AEB0388149014A000045C14C0A2
+000C1380001CEB007839FF8307FF271C7E9B25>77 D<001FB512C0381C070138300E0000
+201480126012405B1280A2000014005BA45BA45BA4485AA41203EA7FFE1A1C799B1E>84
+D<3AFF83FF07F03A3C007001C00038158002F01300A290380170025D13025D13045D1308
+5D131001305B1320D81C405BA2D98071C7FCA2381D0072A2001E1374A2001C1338A20018
+133014201210241D779B29>87 D<3901FF81FE39003E0078011C136015C0011E13809038
+0E0100EB0F026D5A5C1490EB03A014E06D5AA28013021304497EEB10701320EB603813C0
+EB803C3801001C12020006131E121EB4EB7FC01F1C7E9B1F>I<EA01E3EA0717EA0C0F12
+18EA380E12301270A2EAE01CA41339A3EA6079EA319AEA1E0C10127C9115>97
+D<123F1207A2120EA45AA4EA39E0EA3A18EA3C0C12381270130EA3EAE01CA31318133813
+301360EA60C0EA3180EA1E000F1D7C9C13>I<13F8EA0704120CEA1802EA38041230EA70
+08EA7FF0EAE000A5EA60041308EA30101360EA0F800F127C9113>101
+D<EB03C0EB0670130CEB1C601400A25BA53803FF8038007000A55BA5485AA5485AA390C7
+FCA25A12C612E65A12781425819C0D>I<EB78C0EA01C5EA03031206000E1380120C121C
+A238380700A4130EA3EA181EEA0C7CEA079CEA001CA25BA2EAC030EAE070EAC1C0007FC7
+FC121A7E9113>I<EA0FC01201A2485AA448C7FCA4EA0E3E13C3380F0380120E121E121C
+A338380700A3130E00701340A2131C1480EAE00C38600700121D7E9C15>I<EA01801203
+EA0100C7FCA7121C12261247A2128EA2120E5AA35AA21271A31272A2123C091C7C9B0D>
+I<EA0FC01201A2485AA448C7FCA4380E07801308EB11C01321381C4180EB8000001DC7FC
+121EEA3FC0EA38E01370A2EA7071A31372EAE032EA601C121D7E9C13>107
+D<EA383EEA4CC3384D0380124E129E129C121CA238380700A3130E00701340A2131C1480
+EAE00C3860070012127C9117>110 D<13F8EA030CEA0E06487E1218123000701380A238
+E00700A3130EA25BEA60185BEA30E0EA0F8011127C9115>I<EA1C3CEA2642EA4687EA47
+07EA8E061300120EA25AA45AA45A123010127C9112>114 D<EA1C06EA2E0EEA4E06A2EA
+8E02A2121CA2EA3804A313081230A21310EA3820EA1840EA0F800F127C9113>118
+D E /Fb 13 118 df<EA01E3EA0717EA0C0F1218EA380E12301270A2485AA4EB3880A3EA
+607838319900EA1E0E11127E9116>97 D<123F1207A2120EA45AA4EA39E0EA3A30EA3C18
+12381270131CA3EAE038A313301370136013C01261EA2300121E0E1D7E9C12>I<EA01F0
+EA0708120CEA1804EA38081230EA7030EA7FC0EAE000A51304EA60081310EA3060EA0F80
+0E127E9113>101 D<EB38C013C5EA0183EA0303000713801206120EA2381C0700A4130E
+A3EA0C1EEA047CEA039CEA001CA25B1260EAF0301370EAE0C0007FC7FC121A809114>
+103 D<EA0FC01201A2485AA448C7FCA4EA0E3E13C3380F0380120E121E121CA338380700
+A3130E00701320A2131C144038E00C8038600700131D7E9C18>I<EA01C01203A2EA0180
+C7FCA6121C12271247A21287A2120EA25AA35A1380A21270EA71001232121C0A1C7E9B0E
+>I<EA1F801203A2EA0700A4120EA45AA45AA45AA412E2A312E412641238091D7F9C0C>
+108 D<39381F81F0394E20C618394640E81CEB80F0EA8F00008E13E0120EA2391C01C038
+A315703938038071A215E115E23970070064D83003133820127E9124>I<EA3C1F384E61
+80384681C0EA4701128F128E120EA2381C0380A3EB070000381310A2130E142038700640
+3830038014127E9119>I<13F8EA030CEA0E06487E1218123000701380A238E00700A313
+0EA25BEA60185BEA30E0EA0F8011127E9114>I<EA3C3CEA4E42EA4687EA470FEA8E1E13
+0CEA0E00A25AA45AA45A123010127E9113>114 D<EA01F0EA060CEA0C04130EEA180CEA
+1C00121FEA0FE013F0EA03F8EA0038EA201CEA701812F01310EA8030EA6060EA1F800F12
+7E9113>I<001C13C0EA27011247A238870380A2120EA2381C0700A438180E20A3EA1C1E
+380C26403807C38013127E9118>117 D E /Fc 3 125 df<EB01801307131FEB3E0013F8
+485AEA07C0485A003EC7FC12FC12F012FC123EEA0F806C7EEA01F06C7E133EEB1F801307
+130111157E9616>60 D<12C012F012FC123EEA0F806C7EEA01F06C7E133EEB1F80130713
+1FEB3E0013F8485AEA07C0485A003EC7FC12FC12F012C011157E9616>62
+D<12E0B3AE0320779C16>124 D E /Fd 69 128 df<EA8004EA401EEA3FFF7EEA0FFC10
+058A7E00>0 D<EA8004EA401EEA3FFF7EEA0FFCC7FCEA800CEA7FFEEA3FFFEA1FFE100A
+8A7E00>I<12F0127E6C7EEA03E0EA0070131813047F7FEB00801440120B81A51A>3
+D<B612FC6C14FE7E3906003800A212077EA31380A41273127B127F1277123F121FEA0F00
+C7FCA21308131C133EEB1C18EB08081F1B81991D>11 D<39F807FFFC6C6C13FEEA7E0139
+010038001380A213C0A212031207381FFFF8127F383F0038003C13781210001813F8EA08
+01EA0607EA03FF7E38007F381300A21308131CEB3E18EB1C080108C7FC1F1C81991D>I<
+B612E06C14F07E000EC8FCA5EA0FFE6C6C7E6C7FC7126080A21438A21478A214F8380F01
+F013C7EBFFE06C5B6C90C7FCEA01F8EA001CA4130C13041C1F81991A>26
+D<EB07E0EB3FF0EBFFF84890C7FCEA03F8EA07E0485A5B48C8FC121EA25AA3007FB512E0
+6C14F05A397800200014305A143814785A14F8495A13FF6D5A38603FC0EB0060807E1438
+12100018137812086C13F8380383F0EA01FF6C5BEB1F801C2882A719>I<5AEA8388EAC7
+CCEA438CEA610CEA201CEA183CEA0FF8EA03F00E0981A500>32 D<B612C06C14E07E3900
+01C000A4EA03FF121F5AD87F80C7FC007CC8FC12781270130F497E38303FC0EB7E60EA10
+7C38187870EA0870380430F0EA03B3EA21FF00705B38F81F800070C8FC12201B1C819919
+>39 D<B612FC6C14FE7EC7EA3800A61207EA0F8013C0EBFFF87E7E3801C038A713C8EA00
+DC137EEB1C18EB08081F1B81991D>41 D<1220127012F812701220050582A400>44
+D<128012C012E0B3A512601220031B709911>46 D<120FEA3FC0EA7FE0EA7E30EAF808EA
+F00CA2EAE00EEA601EA2EA203EEA18FC120FEA07F8EA01E00F0F809313>48
+D<12E012F012F812E412E6A21267A21227121F120F121F121E123E123C127C12F8127812
+70122012101218120812041206120E121F120F1206081D7D9911>I<EA3FC0EAFFF86C7E
+EA380EEA00011480A214C01303A21307EB0F80EA383F383FFF006C5AEA0FF8EA07C0EA00
+207F7F7F7F7FEB008014401219809718>I<EAFFC0EA7FF0EA3FF8EA000C130E131E133E
+EA3FFE13FCEA1FF8EA0008130CA2130EA2EA381EEA3E3EEA3FFEEA1FFCEA0FF8EA07E0EA
+00101308130413020F19809715>I<6C13080040131C6C133E6C137E381801FC380C03F8
+380607F038030FC03800BF80EB7F0013FEEA01F8A2EA03EC13C413C613861387EA018F13
+9F6CB4FC137E133C171780991D>I<1304EA1806EA0C0712061203A21387A21207120F12
+3FEAFF07EA7E0F1278EA201FEA187FEA0FFF7EEA01F7EA0007A613031301101B809919>
+I<13F0EA03F8120713E013801300A27EEA07F0EA3FF8EA7FFCEAFF7EEAF81EEAF0005A12
+60A212207EEA3FF8EA7FFCEAFFFEEAF8005A5AA21260EA3FFCEA1FFEEA07FF101E809D15
+>I<137C13FE487EEBF18013E13800C1C013411301A21303A3EB0780130FA2EB1F00133E
+137E485AEA07F8B45AEA7FC06CC7FC1217809818>I<126012F07EEAFFFC6C7E123F0038
+C7FCA21218A21208120C12047E6C7EEA00E0137E131FEB078011137D931A>I<137013F8
+12015B5B5B126012F0EAF870EAFFFC6C7E123F0038C7FCA21218A21208120C12047E6C7E
+EA00E0137E131FEB078011197D991A>I<14FE903803FF804913C090380FE060EC801049
+C7FC131EA2EA03FC120F121F1380003EC8FC123C387FFFE06C7F487F3878002014305A14
+3814785A14F8495A13FF6D5A38603FC0EB0060807E143812100018137812086C13F83803
+83F0EA01FF6C5BEB1F801C2882A719>I<EA8080EAC0C0EAE0E0B3A5EA6060EA20200B1B
+759914>I<EAFFFEEA7FFF7EEA1C00AD120C1204101281990E>65
+D<B612C06C14E07E390001C000A21303A3380FC780EA1FF713FFD81E0FC7FCEA1C1FEA0C
+3F5B3807FD80EA03F93801F1C0EA00011303EA4007EA600F38307F80D81FFFC7FC6C5AEA
+03F01B1A819919>I<B7FC6C15807EC70007C7FCA3EA03FE48B5FC5AEB807F90C9FC120E
+380601F8EB1FFC381FFFFE4813C3EBFC03D83C307F38180807130C0008130F26060E1FC7
+FC38038EFF6CB45A6C6C5AEB1FE0211A81991F>I<B612FC6C14FE7E39010038001380A2
+13C01203A21207EA1F80127FEA3F00003C13781210001813F8EA0801EA0607EA03FF7E38
+007F381300A4141814081F1B81991D>I<EA03E0EA07F8EA0FFEEB8780EB01C0380E0060
+14101400A5EAFFF06C7E123F000EC7FCB3A412061202142781A50B>I<EA0FC0EA3FF048
+7EEAFE0CEAF802487E00E07F130000607FC7FC1460A2903803FFF86D13FC7FEC7000B3A4
+143014101E278FA50E>I<00F890381FFFF06C6D13F8007E7F0001903800E0007FA213C1
+1480000313C01207121FEA7F81EA3F01123C12101218000813C1000413C3EA03813801FF
+C76C13FF131FEB001F1400A215601520251B819923>I<B612E06C14F07E390F807800EB
+00F8380E01F0EA0603EB0FE06CB45A00215B003F7F381FFC603807E030C7FC1438A21478
+A214F8381E01F0EA1F87EBFFE06C5B6C90C7FCEA03F8EA0038A21378A2133813101C1F81
+991A>74 D<39F807FFFC6C6C13FEEA7E0139010038001380A213C0A212031207381FFFF8
+127F383F0038003C13781210001813F8EA0801EA0607EA03FF7E38007F381300A4141814
+081F1B81991D>I<7E7E1260A27E121FEA0FF86C7E133E1303EB0180130014007E7E110F
+94A500>79 D<B612C06C14E07E390001C000A4EA03FF121F5AD87F80C7FC007CC8FC1278
+1270130F497E38303FC0EB7E60EA107C38187870EA0870380430F0EA03B3EA01FF6C5BEB
+1F801B1A819919>I<B612E06C14F07ED80807C7FC120412021201EA0FFF123F5AEA7E10
+0078C8FC1270A2EA3807381FFF806C7F91C7FC0006C8FCA21202EA01826CB4FC6D7E131F
+1C1981991A>82 D<B612FC15FE7E39010038001380A213C0A212031207381FFFF8127F38
+3F0038003C13781210001813F8EA0801EA0607EA03FF7E38007F381300A4141814081F1B
+81991D>84 D<B612E06C14F07ED80007C7FCA648B4FC120F5AEA3FC0007EC8FC127C1278
+1270A21230A2001013F0380E07F8EA07FF6C13E0C66CC7FC1C1981991A>86
+D<B612E06C14F07E3900038000A6EA01FF120F5A383FC040387E0020007C133012780070
+1338A20030137814F8EA1001380E07F06CB45A6C5BC66CC7FC1C1981991A>I<B612C06C
+14E07EC7EAC000A2497EA21303495AEA07FF6C5B6C90C7FCEA000613021303A26D7EEA3F
+81EA7FF9EBFFC0EA781FEA30031307EA183F380FFF806C90C7FCEA01F81B1B819919>I<
+B612E06C14F07EC7EA7000A31206120F1380EBFFF07E7E0180C7FCA2EB8780EB8FC03801
+9FE0143013BE3800FC38A2EB7878EB38F8131F6D5AEB03E01C1A81991A>I<B612E06C14
+F07E0001C8FCEA00C013601338130EEB07F080147891C7FCA2133FEA07FF121FEA3FF848
+C8FC127C127812301460381C03F0380FFFF86C5BC613801C1A81991A>I<123E127FEAFF
+80EAF840EAF060EA6020EA20100C0786A300>92 D<EA8008EAC00C12401260EA201CEA18
+3CEA0FF8EA03F00E0881A400>95 D<6C90383FFFE000406D13F06C7F6C903803C0006C13
+0F3804F81F3807FE3FEBFF7F380FE1FD381F80F9EB81F1383F83E1003D13F113C3EA39C7
+A21219000F13711207000313F1EA000FA214E11307EB03C190C7FC1540241B809923>97
+D<B612FC6C14FEA2397C00380012781230A21210120EEA07F8EA0FFCEA1FFE1380381E00
+78000C13F81303EA060FEA03FF6C13B838007E381300A5141814081F1B81991D>I<B612
+E06C14F07EC7EA7000A31206120F1380EBFFF07E7EEB8038A400011378A33800C070A2EB
+40F01330131F6D5A13031C1A81991A>I<B612E06C14F07EC7EA7000A31206120F1380EB
+FFF07E7E0180C7FCA21201A212007F13407F1318130EEB07E0EB01F0EB00781C1981991A
+>I<B612FC6C14FE7E390E003800AAB512F8A338EE0038127E123E121EC7FCA21308131C
+133EEB1C18EB08081F1B81991D>102 D<B612FC6C14FE7E3906003800A212077EA31380
+A41273127B127F1277123F121FEA0F00C7FCA5141814081F1B81991D>I<007FB5FC6C14
+807ED80007C7FCAB127012F812FC12F012E01260A21220EA180FEA0E1F6CB4FCEA01FEEA
+007C191B829916>I<B612E06C14F0A2D83C07C7FC121C120E1207EA038713C76CB4FC12
+0F5AEA3FC0007EC8FC127C12781270A21230A2001013F0380E07F8EA07FF6C13E0C66CC7
+FC1C1981991A>I<B612FC6C14FE7EC7EA3800A61207EA0F8013C0EBFFF87E7E3801C038
+A812001340EB001814081F1B81991D>I<B612806C14C07EC7EAE000A31301A3380F03C0
+EA1FC313C7381EE780EA1CFFD80C7FC7FCA2EA07FE6C5A6C7EEA000E7F8013036D7E8013
+001A1A819918>I<B612F86C14FC7E390F01E00000075B138300035B13C7000190C7FCEA
+07EE381FEF8048B47E387F7C60387C381038F80018487FA25A140EA20060131EA2002013
+3E6C133C7EC712181E1A81991C>I<39E007FFFCD8780313FE6C7E39060038007EA21380
+A7383FFFF8A3383B8038121F120F1207C7FCA5141814081F1B81991D>I<B612F86C14FC
+7ED80038C7FCA5EA01F8487E487E13C1380F8180EB00C0A2120E001E1360A3001C1370A5
+000C1330000413101E1A81991C>I<7E7E1260A27E121FEA0FF8EA03FCEA003E1303EB01
+801300110C94A500>I<39080FFFF86C6C13FCEA060339020070001203A213801207A212
+0FEA3F00B4FC127E007813F01220EA3001EA1003EA0C0FEA07FF7E3800FE701300A41430
+14101E1B80991D>I<007FB5FC6C14807ED80007C7FCAAEA03E7EA7FFFB5FC1387EAF007
+12E01260A2122012106C5AEA061F6CB4FC6C5AEA007C191C829916>114
+D<B612FC6C14FE7E390E003800AAB512F8A338EE0038127E123E121EC7FCA5141814081F
+1B81991D>I<B612C06C14E07EC7EA40001460A2147014F0A21301495AEA01FF6C5B6D5A
+EB00C01460A21470A214F01220EA3801381F07E0EA07FF00015BD8003FC7FC1B1A819919
+>I<13F8EA03FE487E380FE180EB80C0381F0060121EA2481370A3003813F0007FB512E0
+6C14F05A397800200014305A143814785A14F8495A13FF6D5A38603FC0EB0060807E1438
+12100018137812086C13F8380383F0EA01FF6C5BEB1F801C2682A519>I<B612E06C14F0
+7ED80007C7FCA4EA0FFF123F5A007EC8FC12781270A2EA3807381FFF806C7F91C7FC0006
+C8FCA21202EA01826CB4FC6D7E131F1C1981991A>I<B612C06C14E07EC7EAC000A2497E
+A21303495AEA07FF6C5B6C7FC71260A21470A214F0A21301381C03E0EA1F0FEBFFC06C5B
+6C48C7FCEA03F6EA00721373A2EB718013300110C7FC1B1F819919>I<B712F016F87E00
+01C7EAE0007FA27FA212031207381FC1FFEA7F81EA3F01003C13C01210121812081204EA
+0381EA01FF7E131F90C7FCA315601520251B819923>121 D<121E6C7EEA07E0EA007013
+18EAF804EA7FC2EA3FFBEA01FF38000F801301EB0040120C81A61A>123
+D<127EB4FCEAE0C0EAC0601310EA4008EA3004EA1F02EA0781380001801300110B888200
+>125 D<123FEA7F80EAF040EAE020EAC030A3EA4070EA20F0EA1FE0EA0FC00C0B79961A>
+127 D E /Fe 30 121 df<1360EA01E0120F12FF12F31203B3A2387FFF80A2111B7D9A18
+>49 D<127812FCA412781200A6127812FCA4127806127D910D>58
+D<EB0380A2497EA3497EA2497E131BEB3BF81331A2EB60FCA2EBE0FEEBC07EA248487E90
+B5FC481480EB001F4814C00006130FA248EB07E0A239FF803FFEA21F1C7E9B24>65
+D<90381FE0209038FFF8E03803F80F3807C003380F800148C7FC123E1560127E127C00FC
+1400A8007C1460127E123E15C07E390F8001803907C003003803F80E3800FFFCEB1FE01B
+1C7D9B22>67 D<B512F814FF390FC01FC0EC07E0EC01F015F8140015FC157CA2157EA815
+7CA315F8A2EC01F0EC07E0EC1FC0B6120014F81F1C7E9B25>I<B6FCA2380FC01F140780
+1580A214C1A39038C1C00013C313FFA213C313C113C01560A2EC00E015C0A21401A21403
+EC0F80B6FCA21B1C7E9B1F>I<90380FF00890387FFE383901FC07F83807E001390F8000
+7848C7FC481438123E007E1418127C00FC1400A6EC7FFFA2007CEB01F8127E123E123F7E
+EA0F80EA07E03801FC0739007FFE7890380FF818201C7D9B26>71
+D<EAFFFCA2EA0FC0B3A6EAFFFCA20E1C7E9B12>73 D<B512F814FE390FC03F80140FEC07
+C015E0A515C0A2EC0F80EC3F00EBFFFC01C0C7FCABEAFFFCA21B1C7E9B21>80
+D<3807F820381FFEE0EA3C07EA7801EA700012F01460A26C130012FEEAFFE0EA7FFE6C7E
+1480000F13C06C13E0EA007FEB03F01301130012C0A214E07E38F001C0EAFC0338EFFF00
+EA83FC141C7D9B1B>83 D<007FB512E0A238781F81007013800060146000E0147000C014
+30A400001400B03807FFFEA21C1C7E9B21>I<EA0FF8EA1C1E383E0F80130714C0121C12
+00137FEA07E7EA1F07123C127C12F8A3EA780B383E13F8EA0FE115127F9117>97
+D<B4FCA2121FA9EB3F80EBE1E0EB8070EB0078143CA2143EA6143CA21478EB8070381EC1
+E0381C3F00171D7F9C1B>I<EA03FCEA0E0EEA1C1F123C1278130E00F8C7FCA61278EB01
+80123C381C0300EA0E0EEA03F811127E9115>I<EB0FF0A21301A9EA01F9EA0F07EA1C03
+EA3C011278A212F8A61278A2123CEA1C03380F0FFEEA03F9171D7E9C1B>I<EA03FCEA0F
+07381C0380383C01C0127814E012F8A2B5FC00F8C7FCA3127814607E6C13C0380F038038
+01FC0013127F9116>I<137F3801E3803803C7C0EA0787120FEB8380EB8000A5EAFFF8A2
+EA0F80AEEA7FF0A2121D809C0F>I<B4FCA2121FA9EB0FC0EB31E0EB40F0EB80F8A21300
+AB38FFE7FFA2181D7F9C1B>104 D<121E123FA4121EC7FCA6127FA2121FAEEAFFC0A20A
+1E7F9D0E>I<B4FCA2121FA9EB03FCA2EB01C0EB0300130E5B5B137813FC13BE131F7F14
+80EB07C0EB03E0130138FFE7FEA2171D7F9C19>107 D<B4FCA2121FB3A7EAFFE0A20B1D
+7F9C0E>I<39FF0FC07E903831E18F3A1F40F20780D980FC13C0A2EB00F8AB3AFFE7FF3F
+F8A225127F9128>I<38FF0FC0EB31E0381F40F0EB80F8A21300AB38FFE7FFA218127F91
+1B>I<EA01FC380F0780381C01C0003C13E0387800F0A200F813F8A6007813F0A2383C01
+E0381E03C0380F07803801FC0015127F9118>I<38FF3F80EBE1E0381F80F0EB0078147C
+143C143EA6143C147C1478EB80F0EBC1E0EB3F0090C7FCA6EAFFE0A2171A7F911B>I<EA
+FE3E1347381E8F80A3381F070090C7FCAAEAFFE0A211127F9114>114
+D<EA1FD8EA3078EA601812E0A2EAF000EAFF80EA7FE013F0EA1FF8EA07FCEA007CEAC01C
+A212E01318EAF830EACFC00E127E9113>I<1203A45AA25AA2EA3FFC12FFEA1F00A9130C
+A4EA0F08EA0798EA03F00E1A7F9913>I<38FF07F8A2EA1F00AC1301120F380786FFEA01
+F818127F911B>I<38FFC7FCA2381F81C0380F83803807C700EA03EEEA01FC5B1200137C
+13FEEA01DF38039F80EA070F380607C0380C03E038FF07FCA216127F9119>120
+D E /Ff 4 122 df<133C13E0EA01C013801203AD13005A121C12F0121C12077E1380AD
+120113C0EA00E0133C0E297D9E15>102 D<12F0121C12077E1380AD120113C0EA00E013
+3C13E0EA01C013801203AD13005A121C12F00E297D9E15>I<12C0A21260A37EA37EA37E
+A37EA27EA3EA0180A3EA00C0A31360A21330A31318A3130CA31306A31303130110297E9E
+15>110 D<12021207A61202A3EA7270EAFFF8EA7270EA0200A21207B11202A60D267E9C
+12>121 D E /Fg 39 122 df<EAFFF8A30D037F8C12>45 D<127812FCA4127806067C85
+0F>I<13FE38038380380701C0380E00E0481370003C1378A2003813380078133CA300F8
+133EAF0078133CA3007C137C003C1378A2001C13706C13E0380701C0380383803800FE00
+17257EA31C>48 D<136013E0120312FF12FD1201B3AA487EB512C0A212247BA31C>I<00
+101320381E01C0381FFF8014005BEA13F80010C7FCA713FCEA1307381C0380381801C000
+1013E01200EB00F0A214F8A3127012F8A314F01280EA400114E0382003C038300780381C
+0F00EA07FEEA03F015257DA31C>53 D<13FE3803FF80380783C0380E00E04813F0003C13
+70481378A200F8133CA4143EA41278147E7E121C14BE380E013EEA03823800FC3C1300A2
+147C1478A2001C1370003E13F014E0383C01C038180380381C0F00EA0FFEEA03F017257E
+A31C>57 D<127812FCA412781200AB127812FCA4127806177C960F>I<1460A314F0A249
+7EA3EB02FC147CA2497EA3497EA201187FEB100FA201207F1407A2496C7EA2EB7FFF90B5
+7EEB800100018090C7FCA2000280157CA248801206001F147F3AFFC003FFF0A224267EA5
+29>65 D<B6FC15C03907C003F0EC00F8157C81151E151FA5151E153E5D5DEC03E090B512
+809038C003E0EC00F8153C153E81811680A6ED1F00A2153E5D4A5AB612E0158021257EA4
+27>I<B512FEECFFC03907C003F0EC00F8153C8181ED0780A2ED03C0A216E01501A216F0
+A916E0A2150316C0A215071680ED0F00151E5D5DEC03F0B612C092C7FC24257EA42A>68
+D<EAFFFEA2EA07C0B3AFEAFFFEA20F257EA414>73 D<EB03FC90381E078090387801E090
+38E0007048487F48487F48C77E48140F001EEC0780A248EC03C0A2007C15E000781401A2
+00F815F0A9007815E0007C1403A2003C15C0003E1407A2001E15806CEC0F006C6C131EA2
+6C6C5BC66C137090387801E090381E0780D903FCC7FC24277DA52B>79
+D<B512FCECFF803907C007E0EC01F0EC00F8157C153C153EA6153C157815F8EC01F0EC07
+C090B5120001C0C7FCB0EAFFFEA21F257DA426>I<007FB612C0A2397801F00300601400
+A20040154000C01560A200801520A400001500B3A4497E48B512F0A223257EA428>84
+D<D8FFFCEB0FFCA2D80FE0EB03E06C48EB01807F00031500A26C6C1302A27F00005CA201
+7C5BA36D5BA2013F13306D1320A26D6C5AA214C001075BA2D903E1C7FCA214F1EB01F2A2
+EB00FCA31478A31430A226267FA429>86 D<3CFFFC07FFE01FFCA23C0FC0007E0003E000
+07023EEB00C01880A26C6C013FEB0100A36C6C90384F8002A36C6C903887C004A3903A7C
+0103E008A3903A3E0201F010A36D486C6C5AA3D90F88EB7C40A3D907D8EB7E8002D0133E
+A2D903F0013FC7FC4A7FA20101141E4A130EA20100140C4A130436267FA439>I<EA07F8
+EA1C0F383E0380801301001C7F1200A3133FEA03F1EA0F81EA1E01123C127C00F81480A3
+1303A2387C05F1393E08FF003807F03C19177E961C>97 D<120FB4FCA2121F7EAAEB0FC0
+EB3070EB4038EB801EEB000E140FEC0780A215C0A71580140F1500140E6D5A380E403838
+0C20F038081F801A257EA41F>I<EBFF80380380E0380701F0121E121C383C00E0007C13
+00127812F8A71278127C003C1310121C001E132000071340380381803800FE0014177E96
+19>I<143CEB03FCA2EB007C143CAA137EEA03C1380700BC000E137C48133C123C127C12
+7812F8A71278A27E121C001E137C000713BE3903833FC0EA00FC1A257EA41F>I<13FF38
+0383C0380700E0000E1370481378003C133848133CA212F8B512FC00F8C7FCA51278127C
+003C1304121C6C13086C13103803C0E038007F0016177F9619>I<131FEB70C03801E1E0
+13C31203380781C0EB8000A8EAFFFEA2EA0780B3EA7FFCA2132580A411>I<141E3801F8
+6338070E87EA1E07381C0380003C13C0007C13E0A5003C13C0001C1380EA1E0738170E00
+EA11F80030C7FCA41238381FFF806C13F014F83838007C48131C0060130E12E0A3007013
+1CA2001C1370380F01E03801FF0018237E971C>I<120FB4FCA2121F7EAAEB0FC0EB1070
+EB2078EB4038EB803CA21300AF39FFF1FFC0A21A257EA41F>I<120E121F5AA27E120EC7
+FCA8120FB4FCA2121F7EB1EAFFE0A20B257FA40F>I<120FB4FCA2121F7EAAECFF80A2EC
+7C00143014405C0103C7FC1304130C131E133E13DFEB0F806D7E1303806D7E130080147C
+147E39FFF1FFC0A21A257FA41D>107 D<120FB4FCA2121F7EB3ADEAFFF0A20C257FA40F>
+I<3A0F07E00FC03AFF187830F09039203C40783A1F401C80383A0F801F003CA2EB001EAF
+3BFFF1FFE3FFC0A22A177E962F>I<380F0FC038FF1070EB2078381F4038380F803CA213
+00AF39FFF1FFC0A21A177E961F>I<13FE38038380380E00E0001E13F0481378A248133C
+A200F8133EA70078133CA26C1378A26C13F0380F01E0380383803800FE0017177E961C>
+I<380F0FC038FF3070EB4038380F801E1300801580140715C0A7EC0F80A21500141EEB80
+1CEB4038EB20F0EB1F8090C8FCA8EAFFF0A21A217E961F>I<380F0F8038FF31C0EB23E0
+EA1F43EA0F83EB81C0EB800090C7FCAEEAFFF8A213177F9616>114
+D<EA07F1EA180BEA3007487EEAE001A300F8C7FC127F13F0EA3FFCEA0FFEEA03FFEA001F
+38800780A2EAC003A300E01300EAF006EACC0CEA83F011177E9616>I<7FA41201A31203
+1207120F48B4FCB5FCEA0780AB1480A61203EBC100EA01E2EA007C11217FA016>I<000F
+133C38FF03FCA2381F007C6C133CAE147C7E14BE3903C33FC0EA00FC1A177E961F>I<39
+FFE03FC0A2390F800E00EB000C38078008A2EBC01800031310A26C6C5AA26C6C5AA2EBF8
+C0EB7880A2013DC7FCA27FA3130CA21A177F961D>I<3AFFE3FF07F8A23A1F007801E06C
+9038380080143CD80780EB0100145C145E3903C0DE02148E9038E08F063901E107041584
+D800F11388EBF20315C8017E13D0EB7C0115F090383800E0A201185B0110134025177F96
+28>I<39FFE0FFC0A2390F803C00000713303803C0206D5A00015BD800F1C7FC137B133E
+133C7F131FEB3780EB67C01343EB81E048C67E487F00061378001F137C39FF80FFC0A21A
+177F961D>I<39FFE03FC0A2390F800E00EB000C38078008A2EBC01800031310A26C6C5A
+A26C6C5AA2EBF8C0EB7880A2013DC7FCA27FA3130CA21308A25BA212F85B1360EAB840EA
+6180001EC8FC1A217F961D>I E /Fh 88 127 df<EB7E1F3901C1B180390303E3C00007
+13C3000EEBC180903801C000A6B512FC380E01C0B0387F87FC1A1D809C18>11
+D<137E3801C180EA0301380703C0120EEB018090C7FCA5B512C0EA0E01B0387F87F8151D
+809C17>I<126012F0A71260AD1200A5126012F0A21260041E7C9D0C>33
+D<EA6060EAF0F0EAF8F8EA6868EA0808A3EA1010A2EA2020EA4040EA80800D0C7F9C15>
+I<9038030180A39038060300A5EB0C06A4495A007FB512F8B612FC3900301800A4495AA4
+B612FC6C14F83900C0600048485AA438030180A4D80603C7FCA31E257E9C23>I<1380A2
+EA07E0EA1898EA3084EA6082EA4081EAC087138FA21386EAE0801270127EEA3FC0EA1FF0
+EA0FF8EA03FCEA00BE138E13871260EAF083A212E0EA808212401384EA2088EA1890EA07
+E0EA0080A210217E9E15>I<000F14C0EA188039306003803970380700386027FB38E010
+065CA25CA25C5CEA602000705B38304180EA1881390F0303C03900060620EC0C1090380C
+1C08EB1818EC380413301360A213C0A2EA01803903001808141C0006EB0C1048EB062000
+04EB03C01E217E9E23>I<13E0EA0310EA0608A2120EA45BA25B6C5AEC3FE09038800F80
+EC06000003130412073809C00800115BEA30E03820F020EA607038E03840EB3C80131C90
+380F00207F0070EB8040383009C0391830E180390FC03F001B1F7E9D20>I<126012F012
+F812681208A31210A2122012401280050C7C9C0C>I<1380EA0100120212065AA25AA25A
+A35AA412E0AC1260A47EA37EA27EA27E12027EEA0080092A7C9E10>I<7E12407E12307E
+A27EA27EA37EA41380AC1300A41206A35AA25AA25A12205A5A092A7E9E10>I<1203A4EA
+C30CEAE31CEA7338EA1FE0EA0780A2EA1FE0EA7338EAE31CEAC30CEA0300A40E127D9E15
+>I<1306ADB612E0A2D80006C7FCAD1B1C7E9720>I<126012F0A212701210A41220A21240
+1280040C7C830C>I<EAFFE0A20B0280890E>I<126012F0A2126004047C830C>I<130113
+031306A3130CA31318A31330A31360A213C0A3EA0180A3EA0300A31206A25AA35AA35AA3
+5AA35AA210297E9E15>I<EA03C0EA0C30EA1818EA300CA2EA700EEA6006A2EAE007ADEA
+6006A2EA700EEA300CA2EA1818EA0C30EA07E0101D7E9B15>I<5A1207123F12C71207B3
+A5EAFFF80D1C7C9B15>I<EA07C0EA1830EA201CEA400C130EEAF00F12F81307A21270EA
+000F130EA2131CA213381370136013C0EA0180EA0300EA0601120C1218EA1002EA3FFE12
+7F12FF101C7E9B15>I<EA07E0EA1830EA201CA2EA781E130E131E1238EA001CA2131813
+301360EA07C0EA0030131CA2130E130FA2127012F8A3EAF00EEA401C1220EA1830EA07C0
+101D7E9B15>I<130CA2131C133CA2135C13DC139CEA011C120312021204120C12081210
+12301220124012C0B512C038001C00A73801FFC0121C7F9B15>I<EA300CEA3FF813F013
+C0EA2000A6EA23E0EA2C30EA3018131CEA200E1200130FA3126012F0A3EA800EEA401E13
+1CEA2038EA1870EA07C0101D7E9B15>I<EA03E0EA0C30EA1008EA200C13061260A21270
+A2EA7C0CEA3E18EA3FB0EA1FE0EA07F013F8EA18FCEA307EEA601E130FEAC0071303A4EA
+60021304EA300CEA1C10EA07E0101D7E9B15>56 D<EA03C0EA0C30EA1818EA300C1270EA
+600EEAE006A21307A51260EA700F1230EA1817EA0C27EA07C7EA0006A2130EEA300C1278
+13181270EA2030EA10C0EA0F80101D7E9B15>I<126012F0A212601200AA126012F0A212
+6004127C910C>I<126012F0A212601200AA126012F0A212701210A41220A21240128004
+1A7C910C>I<007FB512C0B612E0C9FCA8B612E06C14C01B0C7E8F20>61
+D<EA0FE0EA3038EA401CEAE00E12F0A3EA000C131C1330136013C0138012011300A6C7FC
+A51203EA0780A2EA03000F1D7E9C14>63 D<EB3F80EBC0603803001800041304487F487F
+39201F0080EB70803940E04040EBC0381241D8818013201283A51281EA41C000401440EB
+E078392070988090381F0F006CC8FC7E7E0003EB01E03900C01F8090383FF0001B1D7E9C
+20>I<1306A3130FA3EB1780A2EB37C01323A2EB43E01341A2EB80F0A338010078A2EBFF
+F83802003CA3487FA2000C131F80001E5BB4EBFFF01C1D7F9C1F>I<B512C0380F007880
+80140E140FA4140E141E5C14F8EBFFF0EB003C8080801580A5EC0F00A2141E1478B512E0
+191C7F9B1D>I<90381F8080EBE0613801801938070007000E13035A14015A00781300A2
+127000F01400A8007014801278A212386CEB0100A26C13026C5B380180083800E030EB1F
+C0191E7E9C1E>I<B512C0380F00F0143C140E80A2EC038015C01401A215E0A815C0A214
+03158014071500140E5C1470B512C01B1C7E9B20>I<B512FC380F003C140C1404A21406
+1402A213011400A35B13FF13037FA3140113001402A31406A2140C143CB512FC181C7E9B
+1C>I<B512F8380F007814181408A2140C1404A213011400A35B13FF13037FA490C7FCA8
+EAFFF8161C7E9B1B>I<90381F8080EBE0613801801938070007000E13035A14015A0078
+1300A2127000F01400A6ECFFF0EC0F80007013071278A212387EA27E6C130B3801801138
+00E06090381F80001C1E7E9C21>I<39FFF0FFF0390F000F00AC90B5FCEB000FAD39FFF0
+FFF01C1C7F9B1F>I<EAFFF0EA0F00B3A8EAFFF00C1C7F9B0F>I<3807FF8038007C00133C
+B3127012F8A21338EA7078EA4070EA30E0EA0F80111D7F9B15>I<39FFF01FE0390F0007
+80EC060014045C5C5C5C5C49C7FC13021306130FEB17801327EB43C0EB81E013016D7E14
+78A280143E141E80158015C039FFF03FF01C1C7F9B20>I<EAFFF8EA0F8090C7FCB01408
+A31418A2141014301470EB01F0B5FC151C7E9B1A>I<B46CEBFF80000FECF800A2390BC0
+0178A33809E002A23808F004A3EB7808A3EB3C10A3EB1E20A3EB0F40A2EB0780A3EB0300
+121C3AFF8307FF80211C7E9B26>I<B4EB1FF0390F8003809038C00100120BEA09E0EA08
+F0A21378133C133E131E130F14811307EB03C1EB01E114F113001479147D143D141FA280
+8080121CB46C7E1C1C7F9B1F>I<EB3F80EBE0E03803803848487E000E7F487F003C1480
+00381303007814C0A20070130100F014E0A8007014C000781303A200381480003C130700
+1C14006C130E6C5B6C6C5A3800E0E0EB3F801B1E7E9C20>I<B51280380F00E01478143C
+141C141EA5141C143C147814E0EBFF8090C7FCACEAFFF0171C7E9B1C>I<EB3F80EBE0E0
+3803803848487E000E7F487F003C148000381303007814C0A20070130100F014E0A80070
+14C000781303A200381480383C0E07D81C111300380E208E0007135C3803A0783900F0E0
+20133FEB0060EC3060EC38E0EC3FC0A2EC1F80EC0F001B257E9C20>I<B5FC380F01E0EB
+007880141C141EA4141C143C5CEB01E001FFC7FCEB01E0EB0070147880A61510A2141CA2
+39FFF00E20C7EA03C01C1D7E9B1F>I<3807E080EA1C19EA30051303EA600112E01300A3
+6C13007E127CEA7FC0EA3FF8EA1FFEEA07FFC61380130FEB07C0130313011280A300C013
+80A238E00300EAD002EACC0CEA83F8121E7E9C17>I<007FB512C038700F010060130000
+401440A200C014201280A300001400B1497E3803FFFC1B1C7F9B1E>I<39FFF01FF0390F
+000380EC0100B3A26C1302138000035BEA01C03800E018EB7060EB0F801C1D7F9B1F>I<
+39FFE00FF0391F0003C0EC01806C1400A238078002A213C000035BA2EBE00C00011308A2
+6C6C5AA213F8EB7820A26D5AA36D5AA2131F6DC7FCA21306A31C1D7F9B1F>I<3AFFE1FF
+C0FF3A1F003E003C001E013C13186C6D1310A32607801F1320A33A03C0278040A33A01E0
+43C080A33A00F081E100A39038F900F3017913F2A2017E137E013E137CA2013C133C011C
+1338A20118131801081310281D7F9B2B>I<39FFF07FC0390FC01E003807800CEBC00800
+035B6C6C5A13F000005BEB7880137C013DC7FC133E7F7F80A2EB13C0EB23E01321EB40F0
+497E14783801007C00027F141E0006131F001F148039FF807FF01C1C7F9B1F>I<39FFF0
+03FC390F8001E00007EB00C06D13800003EB01006D5A000113026C6C5A13F8EB7808EB7C
+18EB3C10EB3E20131F6D5A14C06D5AABEB7FF81E1C809B1F>I<387FFFF0EA7C01007013
+E0386003C0A238400780130F1400131E12005B137C13785BA2485A1203EBC010EA0780A2
+EA0F00481330001E13205A14604813E0EAF803B5FC141C7E9B19>I<12FEA212C0B3B312
+FEA207297C9E0C>I<EA0808EA1010EA2020EA4040A2EA8080A3EAB0B0EAF8F8EA7878EA
+30300D0C7A9C15>I<12FEA21206B3B312FEA20729809E0C>I<120C12121221EA4080EA80
+400A057B9B15>I<1208121012201240A21280A312B012F812781230050C7D9C0C>96
+D<EA1FC0EA3070EA78387F12301200A2EA01FCEA0F1C12381270126000E01340A3EA603C
+38304E80381F870012127E9115>I<12FC121CAA137CEA1D87381E0180381C00C014E014
+601470A6146014E014C0381E018038190700EA10FC141D7F9C17>I<EA03F8EA0C0CEA18
+1E1230EA700CEA600012E0A61260EA70021230EA1804EA0C18EA03E00F127F9112>I<EB
+1F801303AAEA03F3EA0E0BEA1807EA30031270126012E0A6126012701230EA1807EA0E1B
+3803E3F0141D7F9C17>I<EA07E0EA0C30EA1818EA300CEA700EEA600612E0EAFFFEEAE0
+00A41260EA70021230EA1804EA0C18EA03E00F127F9112>I<13F8EA018CEA071E1206EA
+0E0C1300A6EAFFE0EA0E00B0EA7FE00F1D809C0D>I<EB03803807C4C0EA1C7838383880
+38301800EA701CA4EA3018EA38386C5AEA27C00020C7FCA21230EA3FF86CB4FC1480EA20
+03386001C0EAC000A33860018038300300EA1C0EEA07F8121C7F9215>I<12FC121CAA13
+7C1387EA1D03001E1380121CAD38FF9FF0141D7F9C17>I<1218123CA21218C7FCA712FC
+121CB0EAFF80091D7F9C0C>I<13C0EA01E0A2EA00C01300A7EA07E01200B3A21260EAF0
+C012F1EA6180EA3E000B25839C0D>I<12FC121CAAEB0FE0EB0780EB06005B13105B5B13
+E0121DEA1E70EA1C781338133C131C7F130F148038FF9FE0131D7F9C16>I<12FC121CB3
+A9EAFF80091D7F9C0C>I<39FC7E07E0391C838838391D019018001EEBE01C001C13C0AD
+3AFF8FF8FF8021127F9124>I<EAFC7CEA1C87EA1D03001E1380121CAD38FF9FF014127F
+9117>I<EA03F0EA0E1CEA1806487E00701380EA600100E013C0A600601380EA70030030
+1300EA1806EA0E1CEA03F012127F9115>I<EAFC7CEA1D87381E0180001C13C0EB00E0A2
+1470A614E0A2EB01C0001E1380381D0700EA1CFC90C7FCA7B47E141A7F9117>I<3803E0
+80EA0E19EA1805EA3807EA7003A212E0A61270A2EA38071218EA0E1BEA03E3EA0003A7EB
+1FF0141A7F9116>I<EAFCE0EA1D38EA1E78A2EA1C301300ACEAFFC00D127F9110>I<EA1F
+90EA2070EA4030EAC010A212E0EAF800EA7F80EA3FE0EA0FF0EA00F8EA8038131812C0A2
+EAE010EAD060EA8FC00D127F9110>I<1204A4120CA2121C123CEAFFE0EA1C00A91310A5
+120CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD1307120CEA0E1B3803E3F01412
+7F9117>I<38FF07E0383C0380381C0100A2EA0E02A2EA0F06EA0704A2EA0388A213C8EA
+01D0A2EA00E0A3134013127F9116>I<39FF3FC7E0393C0703C0001CEB01801500130B00
+0E1382A21311000713C4A213203803A0E8A2EBC06800011370A2EB8030000013201B127F
+911E>I<38FF0FE0381E0700EA1C06EA0E046C5AEA039013B0EA01E012007F12011338EA
+021C1204EA0C0E487E003C138038FE1FF014127F9116>I<38FF07E0383C0380381C0100
+A2EA0E02A2EA0F06EA0704A2EA0388A213C8EA01D0A2EA00E0A31340A25BA212F000F1C7
+FC12F312661238131A7F9116>I<EA7FFCEA70381260EA407013F013E0EA41C012031380
+EA0700EA0F04120E121CEA3C0CEA380812701338EAFFF80E127F9112>I<EA1C04EA3F08
+EA43F0EA80E00E047D9B15>126 D E /Fi 24 118 df<ED01C04B7EA34B7EA34B7EA24B
+7EA34B7E1539A2ED79FF1570A24B6C7EA34A486C7EA2020380ED801FA2020780ED000FA2
+4A80020E1307A24A6D7EA34A6D7EA202788002707FA202F0814A147F91B7FC4982A202C0
+C7123F49486E7EA349C86C7EA24982010E1507A2011E82011C1503A2496F7EA2137801FC
+6F7E486C5D260FFF80020713C0B500F091B61280A341427DC148>65
+D<B912F0A3000101C0C7FC6C6C48EC0FF8170717011700A218781838183CA2181CA5041C
+7FA395C7FCA3163CA2167C16FC150391B5FCA3EC80031500167C163CA2161CA3F00380A3
+93C7EA0700A560180EA2181EA2183EA26018FC17011703170F48486C14FFB95AA339407C
+BF41>69 D<DB1FFC14C04AB5EA8001020714E0913A1FF803F803913A7F80003C07D901FE
+C7120FD903F8EC078FD90FF0EC01DFD91FC0EC00FF4948157F49C9FC01FE163F0001171F
+5B4848160F1207491607120F48481603A3485A1801127FA34993C8FC12FFAC007F0303B6
+12807FA293C7EBE000003F715A183F6C7EA36C7E12077F12036C7E7F1200137F6D7ED91F
+E0157F6D6C15FFD903FCEC01EF6D6CEC03C79026007FC0EB0F87DA1FFCEBFF030207B5EA
+FC010201ECE0009126001FFEC9FC41427BC04B>71 D<B500C0933807FFFEA300016D4C13
+00D8007F18FCD977F0161DA3D973F81639A2D971FC1671A3D970FE16E1A2027FED01C1A3
+6E6CEC0381A26E6CEC0701A36E6C140EA26E6C141CA36E6C1438A26E6C1470A36E6C14E0
+A2037FEB01C0A392393F800380A292391FC00700A392380FE00EA26F6C5AA36F6C5AA26F
+6C5AA36F6C5AA2EE7FC0A213F8705A487E260FFF806DC7EA07FFB500F80303B512FEA216
+0E4F407CBF58>77 D<D903FE130690391FFFE00E017F13F89039FE01FC1E3A03F0003E3E
+D807C0130F4848EB03FE90C71201481400003E157EA248153EA2161E12FCA3160E7EA27E
+6C92C7FC7F7FEA3FF013FC381FFFC06C13FC6CEBFFC06C14F86C14FF6C816D14E0011F80
+010180D9001F7F14019138001FFEED07FF15016F1380167F163F17C0161F126000E0150F
+A56C1680A36CED1F007E163E7E6C5D01C05CD8F9E0495AD8F8FC495A3AF07FC01FC0D8E0
+1FB55A010349C7FC39C0003FF02A427BC035>83 D<003FB912F0A3903BF0003FF0003F01
+806D48130748C7ED03F8007E1701007C170000781878A300701838A548181CA5C81600B3
+B34B7E4B7E0103B7FCA33E3F7DBE45>I<B600C090383FFFFEA3000101E0C7000313E026
+007F809138007F00183EA2181CB3B3A4013F5EA280131F606D7E6013076D6C4A5A6E4A5A
+01014BC7FCD900FE140E023F143CDA1FC013F891390FF807F00203B512C0020091C8FCED
+0FF83F417CBF48>I<003FB500E090387FFFFEA3C66C48C7000F13C0D91FF8DA07FCC7FC
+010F6F5A18E06D6C5D6D7E4D5A6D6C92C8FC6D6D5B171E6E6C5B6E6C133817786E6C5B6E
+6C5B16016E6C485ADA03FE5B16076E6C48C9FC6E138EED7FDE16FC6F5A6F5AA26F7E6F7E
+A282825D031E7F92381C7FC0153C4B6C7E4B6C7E15E002016D7E4A486C7E4B6C7E14074A
+486C7E020E6D7F141E4A6E7E02386E7E14784A6E7E49486E7E5C01036F7E49486E7EA201
+0F6F7E013F6F7F496C4A7F2607FFF002077FB500FC023FEBFFE0A343407EBF48>88
+D<EB1FF890B5FC3903F00FC039078003E0390E0001F0391F8000F86D7F486C137E157FA2
+6F7E6C5A6C5A0002C7FCC8FCA4EC7FFF0107B5FC90383FE03FEBFF00EA01FCEA07F0485A
+485A485A90C7FC5AEE81C012FEA3157FA3007F14DFEC019F3B3F80038FC3803A1FC0070F
+E73B07F01C07FF003A01FFF803FE3A003FE000F82A2B7CA930>97
+D<49B4FC010F13C090381F03F090387C00F849133C4848133E48487F0007EC0F80484814
+C0121F491307003F15E0A2127F90C713F01503A25AA290B6FCA290C9FCA57EA36C7EA216
+706C7E000F15E0A26C6CEB01C06C7E0001EC0380D800FCEB0700013E131E90381F80F890
+3807FFF001001380242B7DA92B>101 D<EC1FC0ECFFF0903803F03C903807C07E90380F
+80FE90381F01FF133F137EA29038FE00FE49137C000114101500AEB6FCA3D801FCC7FCB3
+AF48B4FCB512FEA320427DC11D>I<D903FC133F903A1FFF81FFC0903A3E07C7C7E09039
+F801FE073901F000FC0003ED03C0484890387E018093C7FC48487FA2001F81A7000F92C7
+FCA26C6C137EA26C6C5B00015C6D485A39033E07C06DB45A260703FCC8FC0006CAFCA212
+0E120FA36C7E13E090B512F06C14FF6C15C06C15F06D800003B67E3A07C0000FFE48C8FC
+001E153F4881007C168048150FA6007CED1F00003C151E6C5D6C5DD807C0495AD803F0EB
+07E0D800FEEB3F8090261FFFFCC7FC010113C02B3D7DA830>I<EA01FC12FFA312071203
+1201B215FF020713E091380F03F891383800FC4A137E14C0D9FD80137F8201FFC71380A2
+5BA25BB3A7486CEC7FC0B5D8F81FB5FCA330417DC035>I<EA01E0487E487E487EA46C5A
+6C5A6C5AC8FCACEA01FC12FFA3120712031201B3AD487EB512F0A3143F7DBE1A>I<143C
+147E14FF491380A46D1300147E143C91C7FCACEC3F80EB3FFFA31300147F143FB3B3A612
+3E127FD8FF8013005C147EA2495A007E5B383C01F0381F03E0380FFF80D801FEC7FC1952
+85BE1D>I<EA01FC12FFA3120712031201B392383FFFE0A392381FFE00ED0FF816E01680
+93C7FC151E153815F04A5A4A5A4A5A4AC8FC5C4A7EECFFC013FD9038FFCFE0EC87F0EC03
+F813FC496C7E6E7EA2157F6F7E6F7EA26F7E6F7EA26F7E8282486CECFF80B5D8F01F13F8
+A32D417EC032>I<EA01FC12FFA3120712031201B3B3B3487EB512F8A315417DC01A>I<27
+03F801FFEC7FC000FF01079039C001FFF0913B1E03F00780FC913B3801F80E007E000790
+276000FC187F0003495C2601F9806D4880047E141F01FBC7D87FC08001FE5DA34992C7FC
+B3A7486C4A6C497EB5D8F83FD9FE0FB51280A349297CA850>I<D803F813FF00FF010713
+E091380F03F891383800FC000749137E000313C02601F980137F8201FBC71380A213FEA2
+5BB3A7486CEC7FC0B5D8F81FB5FCA330297DA835>I<ECFF80010713F090381F80FC9038
+7E003F01F8EB0F8048486D7E48486D7E00078148486D7EA248486D7EA2003F8190C8127E
+48157FA3481680AA6C1600A26D5C003F5DA2001F5D6D1301000F5D6C6C495A00035D6C6C
+495A6C6C495A017E013FC7FC90381F80FC903807FFF001001380292B7DA930>I<3901F8
+03F000FFEB0FF8EC3C3CEC707E0007EBC0FF12033801F980EBFB00157E151801FE1300A4
+5BB3A548B4FCB512FEA320297EA825>114 D<90383FF0183901FFFC383907E01F78390F
+0003F8001E1301481300481478A300F81438A37E7E6C1400EA7FE013FF6C13F06C13FE6C
+EBFF806C14C0000114E06C6C13F0010313F89038001FFC14030060130100E0EB00FE157E
+7E153EA37E153C7E15787E6C14F039F38001E039F1F00F8039E07FFF0038C00FF81F2B7D
+A926>I<131CA6133CA4137CA213FCA2120112031207001FB512E0B6FCA2D801FCC7FCB3
+A21538AA000014707F137E6D13E06D13C090380FC380903807FF00EB00FE1D3A7EB825>
+I<D801FCEC3F8000FFEC1FFFA3000714000003157F0001153FB3A6167FA316FF1200ED01
+BF017E15C0013E9038033FE06D010E13FF90380FC03C903803FFF09026007FC01380302A
+7DA835>I E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+%%PaperSize: a4
+%%BeginPaperSize: a4
+a4
+%%EndPaperSize
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 500 519 a Fi(Gurm)l(ukhi)33 b(for)f(T)1155 539
+y(E)1208 519 y(X)p Fh(*)632 710 y Fi(Us)r(er)g(Man)l(ual)766
+862 y Fg(V)-5 b(ers)q(ion)18 b(1.0)739 912 y(Oct)o(ob)q(er)e(1995)604
+1799 y Fi(Am)n(arjit)32 b(Sin)o(gh)p 0 2624 600 2 v 42
+2670 a Fh(*)20 b(T)106 2679 y(E)129 2670 y(X)14 b(i)q(s)f(a)h(trad)o
+(em)o(ar)o(k)g(of)f(t)n(h)o(e)i(Am)o(er)q(ican)d(Ma)o(t)n(h)o(em)o(a)o
+(t)o(ical)g(So)q(ciet)o(y)p eop
+%%Page: 2 2
+2 1 bop 83 42 a Fg(In)n(tro)r(d)n(u)n(ct)n(ion)83 135
+y Fh(Th)o(e)13 b(purp)q(os)q(e)h(of)e(t)n(h)o(e)i(\\Gurm)n(ukhi)d(for)h
+(T)739 144 y(E)762 135 y(X")h(soft)o(w)o(are)g(pac)o(kage)f(i)q(s)g(t)o
+(o)h(con)o(v)o(ert)h(t)n(h)o(e)g(c)o(h)o(aract)o(ers)g(in)e(a)h(do)q
+(c-)0 185 y(u)o(m)o(en)o(t)f(f)q(rom)f(En)o(gli)q(sh)h(Alph)o(a)o(b)q
+(et)h(t)o(o)g(Gurm)n(ukhi)e(\(scr)q(ipt)i(for)g(t)n(h)o(e)h(Pu)o(nja)o
+(bi)e(lan)o(guage\),)g(u)o(t)o(ilizin)o(g)g(t)n(h)o(e)i(T)1658
+194 y(E)1681 185 y(X[1][2])0 235 y(an)o(d)i(MET)m(AF)o(ONT*[3])f(soft)o
+(w)o(are)i(pac)o(kage)q(s.)26 b(T)793 243 y(E)816 235
+y(X)16 b(i)q(s)g(a)g(t)o(yp)q(e)q(s)q(et)n(t)o(in)o(g)i(syst)o(em)e(d)o
+(ev)o(elo)o(p)q(e)q(d)h(b)o(y)f(t)n(h)o(e)h(Am)o(er)q(ican)0
+284 y(Ma)o(t)n(h)o(em)o(a)o(t)o(ical)c(So)q(ciet)o(y)m(,)j(us)q(e)q(d)g
+(wid)o(ely)g(on)f(Unix)g(syst)o(ems,)h(an)o(d)f(o)q(ccass)q(ion)o(ally)
+g(on)h(ot)n(h)o(er)g(o)o(p)q(era)o(t)o(in)o(g)f(en)o(viron-)0
+334 y(m)o(en)o(t)o(s.)22 b(MET)m(AF)o(ONT)16 b(i)q(s)e(a)h(fon)o(t)g
+(gen)o(era)o(t)o(ion)g(t)o(o)q(ol)g(sup)o(p)q(ort)o(e)q(d)h(b)o(y)f(T)
+1128 343 y(E)1152 334 y(X.)g(Bot)n(h)g(T)1335 343 y(E)1359
+334 y(X)g(an)o(d)g(MET)m(AF)o(ONT)h(are)0 384 y(f)q(ree)d(soft)o(w)o
+(are)g(pac)o(kage)q(s)g(whic)o(h)f(can)h(b)q(e)f(do)o(wnload)o(e)q(d)h
+(f)q(rom)d(T)1007 393 y(E)1031 384 y(X)i(arc)o(hiv)o(e)h(s)q(it)o(e)q
+(s[4].)k(A)12 b(w)o(or)o(kin)o(g)h(kno)o(wle)q(dge)g(of)0
+434 y(T)23 443 y(E)46 434 y(X)h(will)f(grea)o(t)n(ly)h(h)o(elp)g(in)f
+(us)q(in)o(g)h(t)n(h)o(e)g('Gurm)n(ukhi)e(for)i(T)918
+443 y(E)941 434 y(X')f(pac)o(kage.)83 484 y(Thi)q(s)g(do)q(cu)o(m)o(en)
+o(t)f(pro)o(vid)o(e)q(s)i(inform)o(a)o(t)o(ion)c(for)i(prepar)q(in)o(g)
+i(inpu)o(t)f(t)o(ext)g(\014le)q(s)h(an)o(d)f(us)q(e)g(of)g(t)n(h)o(e)g
+('Gurm)n(ukhi)e(for)0 533 y(T)23 542 y(E)46 533 y(X')g(soft)o(w)o(are.)
+17 b(Thi)q(s)11 b(i)q(s)g(t)n(h)o(e)h(\014rst)g(v)o(ers)q(ion)g(of)e(t)
+n(h)o(e)j(soft)o(w)o(are)e(an)o(d)g(it)g(m)o(ay)f(u)o(n)o(d)o(ergo)i(c)
+o(h)o(an)o(ge)q(s)g(in)f(t)n(h)o(e)h(n)o(ear)h(fu)o(t)o(ure,)0
+583 y(so)h(k)o(eep)h(an)e(ey)o(e)i(ou)o(t)f(for)f(enh)o(ance)q(d)j(fu)o
+(t)o(ure)e(releas)q(e)q(s.)83 677 y Fg(Ac)n(kno)n(wle)r(dgem)n(en)n(t)
+83 770 y Fh(Th)o(e)g(Gurm)n(ukhi)e(pac)o(kage)i(w)o(as)g(inspire)q(d)g
+(b)o(y)g(t)n(h)o(e)g(Dev)n(an)o(agar)q(i)e(scr)q(ipt)i(gen)o(era)o(t)o
+(ion)g(pac)o(kage)g(\\Dev)n(an)o(agar)q(i)0 820 y(for)f(T)86
+829 y(E)109 820 y(X)p Ff(y)q Fh(")g(whic)o(h)g(i)q(s)g(d)o(ev)o(elo)o
+(p)q(e)q(d)g(b)o(y)g(F)m(rans)h(J.)f(V)m(el)o(t)n(h)n(ui)q(s)h(an)o(d)f
+(h)o(as)g(b)q(een)h(brough)o(t)f(t)o(o)h(y)o(ou)f(wit)n(h)g(hi)q(s)g(p)
+q(ermi)q(ss)q(ion)0 870 y(t)o(o)i(sup)o(p)q(ort)g(Gurm)n(ukhi)e(scr)q
+(ipt.)21 b(I)14 b(w)o(ould)g(also)g(lik)o(e)g(t)o(o)h(t)n(h)o(ank)f(m)o
+(y)f(mot)n(h)o(er)h(for)h(rep)q(ea)o(t)o(e)q(dly)g(prompt)o(in)o(g)e(m)
+o(e)h(t)o(o)0 919 y(wr)q(it)o(e)e(a)h(let)n(t)o(er)h(t)o(o)f(h)o(er)g
+(in)g(Gurm)n(ukhi.)j(Last,)c(bu)o(t)i(not)e(least,)h(I)g(w)o(ould)f
+(lik)o(e)g(t)o(o)h(t)n(h)o(ank)g(ev)o(ery)o(on)o(e)g(wh)o(o)g(migh)o(t)
+d(us)q(e)0 969 y(t)n(hi)q(s)k(soft)o(w)o(are)g(pac)o(kage.)83
+1063 y(If)g(y)o(ou)f(h)o(a)o(v)o(e)g(comm)o(en)o(t)o(s)g(or)h(sugge)q
+(st)o(ion,)f(feel)h(f)q(ree)h(t)o(o)f(s)q(en)o(d)g(t)n(h)o(em)g(t)o(o)g
+(m)o(e)e(a)o(t)i(t)n(h)o(e)h(follo)o(win)o(g)c(addre)q(ss:)14
+1123 y(E-m)o(ail:)k(as)q(in)o(gh@ev)o(olvin)o(g.com)14
+1173 y(P)o(ost)o(al)f(Mail:)j(Am)o(arjit)12 b(Sin)o(gh)14
+1223 y(8405)h(E.)g(Hamp)q(d)o(en)h(Av)o(e)g(#11N)f(Den)o(v)o(er)i(CO)f
+(80231)e(USA)14 1273 y(A-3)h(Mansaro)o(v)o(er)i(Gard)o(en,)f(New)g
+(Delhi)f(110015)f(In)o(dia)83 1410 y Fg(Prepar)q(in)o(g)k(a)i(Do)r(cu)o
+(m)n(en)n(t)e(for)i(T)-5 b(rans-lit)n(era)o(t)n(ion)83
+1503 y Fh(A)20 b(do)q(cu)o(m)o(en)o(t)g(i)q(s)g(init)o(ially)e(crea)o
+(t)o(e)q(d)k(us)q(in)o(g)e(regular)g(ASCI)q(I)g(t)o(ext.)38
+b(Th)o(e)20 b(t)o(ext)h(i)q(s)f(t)n(h)o(en)h(con)o(v)o(ert)o(e)q(d)g
+(in)o(t)o(o)0 1553 y(Gurm)n(ukhi)10 b(us)q(in)o(g)i(s)q(imple)e
+(translit)o(era)o(t)o(ion)h(rule)q(s,)i(an)o(d)f(most)f(of)h(T)1056
+1562 y(E)1079 1553 y(X)g(fea)o(t)o(ure)q(s)i(f)q(rom)c(t)n(h)o(e)j
+(init)o(ial)d(do)q(cu)o(m)o(en)o(t)i(are)0 1603 y(pass)q(e)q(d)j(t)o(o)
+f(an)f(`in)o(t)o(erm)o(e)q(dia)o(t)o(e')f(T)525 1612
+y(E)548 1603 y(X)i(\014le.)k(Th)o(e)c(gen)o(era)o(t)o(e)q(d)h(ou)o(t)o
+(pu)o(t)f(can)g(b)q(e)g(s)q(en)o(t)g(t)o(o)g(a)f(pr)q(in)o(t)o(er)h(or)
+g(t)o(o)g(t)n(h)o(e)g(screen)83 1652 y(Thi)q(s)k(s)q(ect)o(ion)g(d)o(e)
+q(scr)q(ib)q(e)q(s)i(wh)o(a)o(t)e(ASCI)q(I)h(c)o(h)o(aract)o(ers)h(can)
+e(b)q(e)g(us)q(e)q(d)i(t)o(o)e(pro)q(d)o(u)o(ce)h(Gurm)n(ukhi)e(c)o(h)o
+(aract)o(ers,)0 1702 y(an)o(d)c(t)n(h)o(e)h(d)o(elimit)o(ers)f(whic)o
+(h)g(are)h(require)q(d)h(t)o(o)f(pu)o(t)g(t)o(oget)n(h)o(er)h(t)n(h)o
+(e)q(s)q(e)g(c)o(h)o(aract)o(ers)g(t)o(o)f(pass)h(t)o(o)e(T)1486
+1711 y(E)1509 1702 y(X.)h(Som)o(e)e(con)o(trol)0 1752
+y(comm)o(an)o(ds)k(are)i(pre)q(s)q(en)o(t)o(e)q(d)j(whic)o(h)c(y)o(ou)h
+(migh)o(t)e(us)q(e)j(t)o(o)g(mo)q(dify)d(t)n(h)o(e)j(b)q(e)o(h)o(a)o
+(viour)e(of)h(t)n(hi)q(s)g(t)o(o)q(ol)g(t)o(o)g(transform)0
+1802 y(ASCI)q(I)f(inpu)o(t)f(t)o(ext)h(in)o(t)o(o)e(Gurm)n(ukhi)g(t)o
+(ext.)26 b(Th)o(ere)17 b(i)q(s)f(a)g(m)o(acro)f(\014le)h(for)g(T)1214
+1811 y(E)1237 1802 y(X)g(whic)o(h)g(sh)o(ould)g(b)q(e)h(includ)o(e)q(d)
+f(in)0 1852 y(y)o(our)e(t)o(ext)g(\014le.)83 1945 y Fe(Ch)o(aract)o
+(ers)83 1995 y Fh(T)m(a)o(ble)f(1)g(pre)q(s)q(en)o(t)o(s)j(t)n(h)o(e)f
+(ASCI)q(I)f(t)o(o)g(Gurm)n(ukhi)e(c)o(h)o(aract)o(er)j(s)q(et)g
+(transla)o(t)o(ion.)83 2045 y(T)m(o)c(m)o(ain)o(t)o(ain)d(t)n(h)o(e)13
+b(s)q(impli)o(cit)o(y)c(of)i(translit)o(era)o(t)o(ion,)g(more)f(t)n(h)o
+(an)i(on)o(e)f(c)o(h)o(aract)o(er)i(m)o(ay)d(b)q(e)i(us)q(e)q(d,)g(for)
+f(example;)0 2095 y('kh')j(w)o(ould)g(b)q(e)i(us)q(e)q(d)g(t)o(o)f(pro)
+q(d)o(u)o(ce)h(t)n(h)o(e)g(Gurm)n(ukhi)d(c)o(h)o(aract)o(er)k
+Fd(K)p Fh(.)d(Dep)q(en)o(din)o(g)h(up)q(on)h(t)n(h)o(e)f(con)o(t)o(ext)
+h(of)e(a)h(v)o(o)o(w)o(el,)0 2144 y(b)q(et)o(w)o(een)h(t)n(h)o(e)h(w)o
+(ord)e(or)g(b)q(eginnin)o(g)g(of)g(a)g(w)o(ord,)h(a)f(s)q(ign)g(\(lik)o
+(e)g(')p Fd(E)p Fh('\))g(or)g(a)g(c)o(h)o(aract)o(er)i(\(lik)o(e)e(')p
+Fd(i)p Fh('\))g(will)f(ap)o(p)q(ear.)23 b(An)0 2194 y(except)o(ion)c(t)
+o(o)g(t)n(hi)q(s)f(rule)h(will)e(b)q(e)h(t)o(w)o(o)g(v)o(o)o(w)o(els)g
+(ap)o(p)q(ear)q(in)o(g)g(t)o(oget)n(h)o(er.)34 b(Th)o(ere)19
+b(i)q(s)f(a)g(v)o(ery)h(limit)o(e)q(d)d(n)n(u)o(m)n(b)q(er)j(of)0
+2244 y(h)o(alf-c)o(h)o(aract)o(ers)14 b(in)g(Gurm)n(ukhi)e(an)o(d)h(t)n
+(h)o(ey)i(are)f(for)g(h,)f(v)h(an)o(d)g(r.)83 2294 y(Th)o(ere)e(are)e
+(more)g(t)n(h)o(an)g(on)o(e)g(ASCI)q(I)h(c)o(h)o(aract)o(er)h(s)q(et)o
+(s)f(whic)o(h)f(can)h(b)q(e)f(us)q(e)q(d)i(in)d(inpu)o(t)i(t)o(ext,)g
+(for)f(repre)q(s)q(en)o(t)o(a)o(t)o(ion)0 2344 y(of)15
+b(som)o(e)g(Gurm)n(ukhi)e(c)o(h)o(aract)o(ers,)18 b(lik)o(e)c('kh')h
+(an)o(d)g('K')g(can)h(b)q(e)f(us)q(e)q(d)i(for)e(')p
+Fd(K)p Fh(')f(an)o(d)i(it)f(i)q(s)g(t)o(ot)o(ally)f(y)o(our)i(c)o(h)o
+(oice)g(t)o(o)0 2393 y(us)q(e)f(an)o(y)e(of)g(t)n(h)o(em.)83
+2443 y(In)h(Gurm)n(ukhi)e(t)o(ext)i(mo)q(d)o(e)f(digit)o(s)h(will)f(ap)
+o(p)q(ear)h(as)g(:)83 2493 y Fd(0)20 b(1)g(2)f(3)h(4)g(5)h(6)f(7)f(8)h
+(9)p 0 2574 600 2 v 42 2620 a Fh(*)g(MET)m(AF)o(ONT)14
+b(i)q(s)f(a)h(trad)o(em)o(ar)o(k)g(of)f(Adddi)q(son)h(W)m(e)q(sley)g
+(Pu)n(bli)q(shin)o(g)e(Compan)o(y)44 2670 y Ff(y)21 b
+Fh(\\Dev)n(an)o(agar)q(i)12 b(for)h(T)407 2679 y(E)431
+2670 y(X")g(i)q(s)h(a)f(co)o(p)o(yr)q(igh)o(t)g(of)h(F)m(rans)f(J.)h(V)
+m(et)n(h)n(ui)q(s)p eop
+%%Page: 3 3
+3 2 bop 317 42 a Fe(T)l(a)o(b)o(le)15 b(1:)21 b(ASCI)q(I)c(Ch)o(aract)o
+(er)e(s)q(et)o(s)g(for)g(Gurm)n(ukhi)e(c)o(h)o(aract)o(ers)0
+104 y Fh(u)202 b Fd(u)e Fh(k)j Fd(k)e Fh(t)209 b Fd(t)200
+b Fh(sh,)14 b(S)g(or)g("s)35 b Fd(f)0 154 y Fh(uu)179
+b Fd(u)250 159 y(\000)264 154 y Fh(or)13 b Fd(\001)136
+b Fh(kh)14 b(or)g(K)83 b Fd(K)196 b Fh(t)n(h)14 b(or)g(T)93
+b Fd(T)196 b Fh(.kh)13 b(or)h(.K)60 b Fd(\014)0 204 y
+Fh(U)194 b Fd(u)250 209 y(\001)264 204 y Fh(or)13 b Fd(\001)136
+b Fh(g)204 b Fd(g)196 b Fh(d)202 b Fd(d)d Fh(.g)192 b
+Fd(\013)0 254 y Fh(a)204 b Fd(a)13 b Fh(or)140 b(gh)14
+b(or)g(G)83 b Fd(G)190 b Fh(dh)14 b(or)g(D)82 b Fd(D)196
+b Fh(z)207 b Fd(\))0 303 y Fh(aa)13 b(or)h(A)88 b Fd(aA)14
+b Fh(or)f Fd(A)98 b Fh("n)181 b Fd(R)199 b Fh(n)j Fd(n)197
+b Fh(f)212 b Fd(')0 353 y Fh(i)h Fd(i)14 b Fh(or)g Fd(E)123
+b Fh(c)207 b Fd(c)199 b Fh(p)j Fd(p)196 b Fh(N)e Fd(\\)20
+b(EV_pF)0 403 y Fh(ii)201 b Fd(Ei)14 b Fh(or)g Fd(F)109
+b Fh(c)o(h)14 b(or)g(C)90 b Fd(C)194 b Fh(ph)14 b(or)g(P)86
+b Fd(P)200 b Fh(.m)12 b(or)i(M)76 b Fd(,)20 b(Eb\\dF)0
+453 y Fh(I)210 b Fd(iF)14 b Fh(or)g Fd(F)106 b Fh(j)212
+b Fd(j)196 b Fh(b)202 b Fd(b)196 b Fh(/)204 b Fd( )20
+b(c\\d}Eb\\d)1698 458 y(\001)0 503 y Fh(e)207 b Fd(a)-26
+b(\003)13 b Fh(or)h Fd(\003)100 b Fh(jh)14 b(or)f(J)104
+b Fd(J)199 b Fh(bh)14 b(or)g(B)85 b Fd(B)200 b Fh(~a)183
+b Fd(_)20 b(aD_k)0 552 y Fh(ai)13 b(or)h(E)100 b Fd(a)-26
+b({)13 b Fh(or)h Fd({)100 b Fh(~n)181 b Fd(\032)199 b
+Fh(m)189 b Fd(m)196 b Fh(@)d Fd(\177)27 b Fh(\()7 b Fd(tOw)f
+Fh(\))0 602 y(o)204 b Fd(\033)14 b Fh(or)f Fd(o)136 b
+Fh(.t)197 b Fd(V)i Fh(y)k Fd(y)190 b Fc(|)203 b Fd(.)26
+b Fh(\()7 b Fd(X\\XA)g Fh(\))0 652 y(o)q(o)182 b Fd(ao)13
+b Fh(or)h Fd(O)126 b Fh(.t)n(h)14 b(or)g(.T)69 b Fd(W)199
+b Fh(r)209 b Fd(r)203 b Fc(||)181 b Fd(;)0 702 y Fh(O)193
+b Fd(aO)13 b Fh(or)h Fd(O)126 b Fh(.d)190 b Fd(X)200
+b Fh(l)213 b Fd(l)197 b Fh(.o)192 b Fd(:)0 752 y Fh(s)209
+b Fd(s)196 b Fh(.dh)13 b(or)h(.D)59 b Fd(Y)199 b Fh(v)k
+Fd(v)0 802 y Fh(h)f Fd(h)h Fh(.n)190 b Fd(Z)199 b Fh(R)194
+b Fd(w)83 903 y Fe(Delimit)n(ers)83 953 y Fh(All)14 b(t)o(ext)h(ap)o(p)
+q(ear)q(in)o(g)f(aft)o(er)h(\045)g(up)g(t)o(o)g(t)n(h)o(e)g(en)o(d)g
+(of)f(t)n(h)o(e)i(lin)o(e,)e(will)f(b)q(e)i(cons)q(id)o(ere)q(d)h(comm)
+o(en)o(t)o(s)d(an)o(d)i(will)e(not)0 1003 y(gen)o(era)o(t)o(e)i(an)o(y)
+e(ou)o(t)o(pu)o(t.)83 1053 y(All)h(t)n(h)o(e)i(t)o(ext)g(b)q(et)o(w)o
+(een)g(')p Ff(fn)p Fb(g)q(m)p Fh(')f(an)o(d)g(')p Ff(g)p
+Fh(')f(will)g(b)q(e)h(con)o(v)o(ert)o(e)q(d)h(t)o(o)g(Gurm)n(ukhi)d
+(accordin)o(g)j(t)o(o)g(t)n(h)o(e)g(c)o(h)o(aract)o(er)0
+1103 y(s)q(et)f(sh)o(o)o(wn)f(in)f(T)m(a)o(ble)g(1.)83
+1153 y(All)k(t)n(h)o(e)i(t)o(ext)f(b)q(et)o(w)o(een)h($)f(s)q(igns)g
+(will)e(b)q(e)i(con)o(v)o(ert)o(e)q(d)i(t)o(o)e(Gurm)n(ukhi)e(wh)o(en)j
+(t)n(h)o(e)g(@dollars)e(prepro)q(ce)q(ssor)0 1203 y(comm)o(an)o(d)11
+b(i)q(s)i(giv)o(en.)83 1253 y(Th)o(e)i(follo)o(win)o(g)c(c)o(h)o(aract)
+o(ers)16 b(are)f(allo)o(w)o(e)q(d)e(bu)o(t)i(do)f(not)g(c)o(h)o(an)o
+(ge)h(repre)q(s)q(en)o(t)o(a)o(t)o(ion)g(ins)q(id)o(e)f(Gurm)n(ukhi)f
+(d)o(elim-)0 1303 y(it)o(ers:)83 1353 y(!)18 b(`)13 b(')h(\()g(\))g(*)f
+(-)h(:)k(;)13 b(=)h(?)k(,)c([)f(])h(+)83 1403 y(Th)o(e)g(follo)o(win)o
+(g)d(c)o(h)o(aract)o(ers)16 b(are)e(not)g(allo)o(w)o(e)q(d)f(ins)q(id)o
+(e)h(Gurm)n(ukhi)e(d)o(elimit)o(ers:)83 1454 y Fc(<)i(>)f
+Fh(F)h(L)g(Q)g(V)g(W)g(X)g(Y)g(Z)g(^)p 535 1454 13 2
+v 28 w(q)g(w)g(x)83 1504 y(Ob)o(viously)m(,)h(c)o(h)o(aract)o(ers)j(ou)
+o(t)o(s)q(id)o(e)f(Gurm)n(ukhi)e(d)o(elimit)o(ers)g(will)g(not)h(b)q(e)
+g(c)o(h)o(an)o(ge)q(d)h(t)o(o)f(Gurm)n(ukhi)f(an)o(d)g(will)0
+1554 y(b)q(e)f(pr)q(in)o(t)o(e)q(d)g(in)f(En)o(gli)q(sh)h(Alph)o(a)o(b)
+q(et)f(or)h(will)e(follo)o(w)g(t)n(h)o(e)i(rule)q(s)h(whic)o(h)e(y)o
+(ou)h(sp)q(ecify)m(.)83 1604 y(T)m(o)e(c)o(h)o(an)o(ge)g(t)n(h)o(e)h(p)
+q(oin)o(t)o(s)q(ize)g(of)e(c)o(h)o(aract)o(ers)j(wit)n(hin)e(')p
+Ff(fn)p Fb(g)q(m)p Fh(')g(an)o(d)g(')p Ff(g)p Fh(')f(t)n(h)o(e)i(follo)
+o(win)o(g)c(d)o(elimit)o(ers)j(can)g(b)q(e)h(us)q(e)q(d,)0
+1654 y(in)g(increm)o(en)o(t)o(al)g(s)q(ize)q(s,)h(:)0
+1768 y Ff(n)p Fb(g)q(msmal)q(l)720 b Fh(8)14 b(p)q(oin)o(t)f(fon)o(t)0
+1817 y Ff(n)p Fb(g)q(mnine)739 b Fh(9)14 b(p)q(oin)o(t)f(fon)o(t)0
+1867 y Ff(n)p Fb(g)q(mnor)q(mal)687 b Fh(10)13 b(p)q(oin)o(t)h(fon)o(t)
+0 1917 y Ff(n)p Fb(g)q(mbig)770 b Fh(10)13 b(p)q(oin)o(t)h(fon)o(t,)e
+(m)o(agni\014e)q(d)h(a)o(t)g(1)h(st)o(ep)0 1967 y Ff(n)p
+Fb(g)q(ml)q(ar)q(g)q(e)727 b Fh(10)13 b(p)q(oin)o(t)h(fon)o(t,)e(m)o
+(agni\014e)q(d)h(a)o(t)g(2)h(st)o(eps)0 2017 y Ff(n)p
+Fb(g)q(mhug)q(e)734 b Fh(10)13 b(p)q(oin)o(t)h(fon)o(t,)e(m)o
+(agni\014e)q(d)h(a)o(t)g(3)h(st)o(eps)83 2118 y Fe(Examp)o(le)q(s)83
+2168 y Fh(Di\013eren)o(t)g(c)o(h)o(aract)o(er)g(s)q(et)o(s,)h(follo)o
+(win)o(g)c(a)o(b)q(o)o(v)o(e)h(m)o(en)o(t)o(ion)o(e)q(d)g(rule)q(s,)i
+(wit)n(hin)f(Gurm)n(ukhi)e(d)o(elimil)o(t)o(ers)i(can)g(pro-)0
+2218 y(d)o(u)o(ce)i(d)o(e)q(s)q(ire)q(d)g(ou)o(t)o(pu)o(t,)f(lik)o(e)f
+Ff(fn)p Fb(g)q(m)i Fh(paNjaa)o(b)p Ff(g)d Fh(an)o(d)i
+Ff(fn)p Fb(g)q(m)g Fh(pNjA)n(b)p Ff(g)f Fh(will)g(pr)q(in)o(t)g
+Fd(p\\jAb)p Fh(.)83 2268 y(Som)o(et)o(im)o(e)q(s,)g(y)o(ou)i(m)o(ay)f
+(h)o(a)o(v)o(e)h(t)o(o)h(t)o(yp)q(e)g(an)f(extra)h(`a')f(t)o(o)g
+(complet)o(e)g(a)g(sylla)o(ble,)f(ev)o(en)i(t)n(h)o(ough)g(it)f(m)o(ay)
+f(not)0 2318 y(ap)o(p)q(ear)g(in)f(t)n(h)o(e)i(Gurm)n(ukhi)d(repre)q(s)
+q(en)o(t)o(a)o(t)o(ion)j(of)e(t)n(h)o(a)o(t)h(w)o(ord.)83
+2368 y(Th)o(ere)i(are)f(addit)o(ion)o(al)e(gm)g(\014le)q(s)j(ot)n(h)o
+(er)f(t)n(h)o(an)g(t)n(h)o(e)h(source)g(of)e(t)n(hi)q(s)h(do)q(cu)o(m)o
+(en)o(t,)f(whic)o(h)h(can)g(b)q(e)g(referre)q(d)i(t)o(o)0
+2418 y(for)d(example)q(s.)83 2520 y Fe(Con)o(tro)o(l)g(comm)o(an)o(ds)
+83 2570 y Fh(A)o(t)k(t)n(h)o(e)h(st)o(art)f(of)g(inpu)o(t)g(t)o(ext,)h
+(t)n(h)o(e)g(follo)o(win)o(g)c(prepro)q(ce)q(ss)q(or)20
+b(comm)o(an)o(ds)c(can)i(b)q(e)g(us)q(e)q(d,)i(t)o(o)e(con)o(trol)f(t)n
+(h)o(e)0 2620 y(fu)o(nct)o(ion)o(alit)o(y)c(of)g(t)n(h)o(e)h(prepro)q
+(ce)q(ss)q(or:)83 2670 y(@ob)q(eylin)o(e)q(s)g(T)m(o)f(follo)o(w)e(t)n
+(h)o(e)k(lin)o(e)e(breaks)i(whic)o(h)f(y)o(ou)f(t)o(yp)q(e.)p
+eop
+%%Page: 4 4
+4 3 bop 83 42 a Fh(@dollars)9 b(T)m(o)g(act)o(iv)n(a)o(t)o(e)g($)g(as)h
+(a)f(sp)q(ecial)h(sym)n(b)q(ol)d(su)o(c)o(h)j(t)n(h)o(a)o(t)g(t)o(ext)g
+(d)o(elimit)o(e)q(d)e(b)o(y)i($)f(i)q(s)g(con)o(v)o(ert)o(e)q(d)i(t)o
+(o)f(Gurm)n(ukhi.)83 91 y(@pu)o(nja)o(bi)20 b(Do)q(e)q(s)g(not)g(do)f
+(an)o(yt)n(hin)o(g)h(r)q(igh)o(t)g(no)o(w,)g(bu)o(t)h(m)o(ay)d(b)q(e)i
+(us)q(e)q(d)h(wh)o(en)f(t)n(h)o(e)h(t)o(o)q(ol)e(sup)o(p)q(ort)o(s)j
+(ot)n(h)o(er)0 141 y(lan)o(guage)q(s.)83 191 y(Aft)o(er)15
+b(t)n(h)o(e)g(a)o(b)q(o)o(v)o(e)f(prepro)q(ce)q(ssor)k(comm)o(an)o(ds,)
+11 b(ins)q(ert)k(t)n(h)o(e)g(follo)o(win)o(g)d(comm)o(an)o(d)g(t)o(o)i
+(includ)o(e)h(a)f(m)o(acro)f(\014le.)0 241 y(Thi)q(s)h(ia)f(a)h(v)o
+(ery)g(imp)q(ort)o(an)o(t)e(st)o(ep)j(b)q(eca)n(us)q(e)h(wit)n(h)o(ou)o
+(t)e(t)n(h)o(e)h(m)o(acro)e(\014le,)h(T)1149 250 y(E)1172
+241 y(X)g(will)f(not)h(recognize)h(t)n(h)o(e)g(transla)o(t)o(e)q(d)0
+291 y(t)o(ext)f(gen)o(era)o(t)o(e)q(d)h(b)o(y)f(t)n(h)o(e)h(prepro)q
+(ce)q(ssor.)83 390 y Fg(T)-5 b(ransformin)o(g)16 b(a)i(Do)r(cu)o(m)n
+(en)n(t)83 490 y Fh(Th)o(e)13 b(\\Gurm)n(ukhi)d(for)i(T)468
+499 y(E)491 490 y(X")g(pac)o(kage)g(cons)q(i)q(st)o(s)h(of)e(a)h
+(prepro)q(ce)q(ssor)q(,)j(fon)o(t)c(\014le)q(s)i(an)o(d)f(a)g(m)o(acro)
+f(\014le.)17 b(See)c(t)n(h)o(e)0 540 y(\014le)i(\\readm)o(e")f(an)o(d)h
+(\\inst)o(all.u)o(nix")e(for)i(inst)o(alla)o(t)o(ion)e(st)o(eps.)23
+b(Inst)o(alla)o(t)o(ion)13 b(sh)o(ould)i(b)q(e)g(f)q(airly)e(easy)m(,)j
+(as)f(t)n(h)o(ere)i(i)q(s)0 590 y(no)d(syst)o(em)f(d)o(ep)q(en)o(d)o
+(en)o(t)j(co)q(d)o(e.)j(Wh)o(erev)o(er)d(y)o(ou)e(can)g(\014n)o(d)g(T)
+951 599 y(E)974 590 y(X)g(an)o(d)g(m)o(et)o(afon)o(t,)d(y)o(ou)j(can)g
+(v)o(ery)g(p)q(oss)q(ibly)g(inst)o(all)0 639 y(an)o(d)g(us)q(e)g(t)n
+(hi)q(s)g(pac)o(kage.)83 739 y Fe(Th)o(e)h(Prepro)q(ce)q(s)q(sor)83
+789 y Fh(Th)o(e)g(job)f(of)g(t)n(h)o(e)i(prepro)q(ce)q(ssor)i(i)q(s)c
+(t)o(o)h(\014n)o(d)f(t)n(h)o(e)i(correct)g(repre)q(s)q(en)o(t)o(a)o(t)o
+(ion)g(of)e(a)g(c)o(h)o(aract)o(er)i(accordin)o(g)f(t)o(o)g(it)o(s)0
+839 y(con)o(t)o(ext.)j(Wh)o(en)c(a)g(v)o(o)o(w)o(el)e(ap)o(p)q(ears)j
+(in)e(a)h(w)o(ord,)f(a)g(sylla)o(ble)f(complet)o(e)q(s,)h(an)o(d)g(con)
+o(t)o(ext)h(c)o(h)o(an)o(ge)q(s)h(t)o(o)f(wh)o(a)o(t)g(it)f(w)o(as)0
+889 y(a)o(t)i(t)n(h)o(e)i(b)q(eginnin)o(g)e(of)g(a)g(n)o(ew)h(w)o(ord.)
+23 b(It)16 b(also)f(\014n)o(ds)h(p)q(oss)q(ible)g(h)o(alf)e(repre)q(s)q
+(en)o(t)o(a)o(t)o(ion)j(of)e(c)o(h)o(aract)o(ers.)25
+b(Ou)o(t)o(pu)o(t)18 b(of)0 938 y(t)n(hi)q(s)c(prepro)q(ce)q(ssor)j(i)q
+(s)c(a)h(T)421 947 y(E)444 938 y(X)g(do)q(cu)o(m)o(en)o(t.)83
+1038 y Fe(Examp)o(le)i(s)q(e)q(s)q(s)q(ion)d(of)i(comm)o(an)o(ds)83
+1088 y Fh(Let)o(s)f(assu)o(m)o(e)e(t)n(h)o(a)o(t)h(d)o(ur)q(in)o(g)f
+(inst)o(alla)o(t)o(ion)e(y)o(ou)i(h)o(a)o(v)o(e)g(prepare)q(d)i(t)n(h)o
+(e)f(prepro)q(ce)q(ssor)j(wit)n(h)c(n)o(am)o(e)f("gurm)n(ukhi")0
+1138 y(an)o(d)16 b(h)o(a)o(v)o(e)g(s)q(et)h(pa)o(t)n(hs)g(in)e(y)o(our)
+h(en)o(vironm)o(en)o(t)f(t)o(o)i(lo)q(ca)o(t)o(e)f(fon)o(t)g(an)o(d)g
+(m)o(acro)f(\014le)q(s.)25 b(Let)o(s)18 b(also)e(assu)o(m)o(e)g(t)n(h)o
+(a)o(t)g(y)o(ou)0 1188 y(h)o(a)o(v)o(e)e(an)f(inpu)o(t)h(\014le)g(wit)n
+(h)g(t)n(h)o(e)h(n)o(am)o(e)d("t)o(ext.gm".)83 1237 y(Y)m(ou)h(w)o
+(ould)g(st)o(art)i(t)n(h)o(e)g(prepro)q(ce)q(ssor)i(on)c(t)n(h)o(e)i
+(\014le)f('t)o(ext.gm')d(as)j(follo)o(ws:)0 1337 y(gurm)n(ukhi)e(t)o
+(ext)643 b(\(t)o(o)14 b(get)g(a)g(T)1093 1346 y(E)1116
+1337 y(X)g(\014le\))83 1437 y(Th)o(e)h(T)191 1446 y(E)214
+1437 y(X)g(\014le)g(pro)q(d)o(u)o(ce)q(d)h(h)o(ere,)f(t)o(ext.t)o(ex,)g
+(can)g(b)q(e)g(us)q(e)q(d)g(as)g(an)o(y)f(ot)n(h)o(er)i(inpu)o(t)f
+(\014le)f(for)h(T)1510 1446 y(E)1533 1437 y(X.)f(Aft)o(er)i(t)n(hi)q(s)
+e(a)0 1487 y(t)o(ypical)f(s)q(equence)j(of)d(comm)o(an)o(ds)e(m)o(ay)h
+(b)q(e)0 1586 y(t)o(ex)i(t)o(ext)760 b(\(t)o(o)14 b(get)g(dvi)g
+(\014le\))0 1648 y(xdvi)f(t)o(ext)737 b(\(t)o(o)14 b(view)g(dvi)f
+(\014le\))83 1748 y(Anot)n(h)o(er)i(s)q(equence)h(aft)o(er)e(t)n(hi)q
+(s)g(m)o(ay)e(b)q(e)0 1848 y(dvips)i(t)o(ext)719 b(\()14
+b(t)o(o)g(get)g(p)q(ost)o(scr)q(ipt)i(\014le)e(t)o(ext.ps)h(f)q(rom)c
+(t)o(ext.dvi)j(\))0 1910 y(gs)g(t)o(ext.ps)727 b(\()14
+b(t)o(o)g(view)g(p)q(ost)o(scr)q(ipt)i(\014le)d(\))0
+1972 y(gh)o(ostview)h(t)o(ext.ps)586 b(\()14 b(anot)n(h)o(er)h(w)o(ay)e
+(t)o(o)h(view)g(p)q(ost)o(scr)q(ipt)i(\014le)d(\))83
+2072 y(No)o(w)h(it)g(i)q(s)g(t)o(im)o(e)e(t)o(o)j(s)q(en)o(d)g(t)n(h)o
+(e)g(p)q(ost)o(scr)q(ipt)h(\014le)f(t)o(o)f(a)g(p)q(ost)o(scr)q(ipt)i
+(pr)q(in)o(t)o(er,)e(an)o(d)g(a)g(comm)o(an)o(d)e(comm)o(an)o(d)f(for)0
+2122 y(t)n(hi)q(s)j(m)o(ay)e(b)q(e:)83 2172 y(lp)h(t)o(ext.ps)83
+2271 y Fg(Dev)m(an)o(agar)q(i)83 2371 y Fh(Thi)q(s)g(s)q(ect)o(ion)h(i)
+q(s)f(pre)q(s)q(en)o(t)o(e)q(d)i(for)f(t)n(h)o(os)q(e)g(wh)o(o)g(h)o(a)
+o(v)o(e)f(us)q(e)q(d)h(t)n(h)o(e)h(Dev)n(an)o(agar)q(i)c(pac)o(kage)j
+(or)f(w)o(ould)g(also)g(lik)o(e)g(t)o(o)0 2421 y(us)q(e)j(t)n(h)o(e)g
+(Dev)n(an)o(agar)q(i)d(pac)o(kage.)22 b(Th)o(ere)16 b(are)g(not)f(m)o
+(an)o(y)e(di\013erence)q(s)18 b(b)q(et)o(w)o(een)e(t)n(h)o(e)g(t)o(w)o
+(o.)21 b(In)15 b(Dev)n(an)o(agar)q(i,)e(y)o(ou)0 2471
+y(crea)o(t)o(e)h(a)d(t)o(ext)i(\014le)f(in)f(t)n(h)o(e)i(sam)o(e)e(m)o
+(ann)o(er)g(as)h(wit)n(h)g(Gurm)n(ukhi,)e(bu)o(t)j(y)o(ou)f(h)o(a)o(v)o
+(e)f(sligh)o(t)n(ly)g(di\013eren)o(t)i(c)o(h)o(aract)o(er)g(s)q(et)o(s)
+0 2521 y(for)h(repre)q(s)q(en)o(t)o(a)o(t)o(ion)g(an)o(d)g(y)o(ou)f
+(will)g(us)q(e)h(a)g(s)q(imilar)d(s)q(equence)16 b(of)d(comm)o(an)o
+(ds.)83 2570 y(Th)o(e)h(di\013erence)q(s)j(in)c(c)o(h)o(aract)o(er)i(s)
+q(et)o(s)h(in)d(Gurm)n(ukhi)f(an)o(d)i(Dev)n(an)o(agar)q(i)e(are)i(as)g
+(follo)o(ws:)83 2620 y(In)20 b(Gurm)n(ukhi,)e(S)i(an)o(d)f(sh)h(can)g
+(also)f(b)q(e)g(us)q(e)q(d)i(in)e(addit)o(ion)f(t)o(o)i("s)g(t)o(o)f
+(pro)q(d)o(u)o(ce)i Fd(f)e Fh(an)o(d)g(N)h(i)q(s)f(us)q(e)q(d)h(in)0
+2670 y(Gurm)n(ukhi)12 b(t)o(o)i(pr)q(in)o(t)g Fd(\\)26
+b Fh(\()7 b Fd(EV_pF)h Fh(\))f(,)13 b(ii)g(pro)q(d)o(u)o(ce)q(s)i
+Fd(Ei)g Fh(an)o(d)e(not)h Fd(iF)p Fh(,)g(~a)f(pro)q(d)o(u)o(ce)q(s)i
+Fd(_)p Fh(.)p eop
+%%Page: 5 5
+5 4 bop 83 42 a Fh(Th)o(e)14 b(Dev)n(an)o(agar)q(i)f(soft)o(w)o(are)h
+(pac)o(kage)g(allo)o(ws)e(m)o(an)o(y)h(c)o(h)o(aract)o(er)i(s)q(et)o(s)
+h(su)o(c)o(h)e(as)g(.s,)g(.h,)f(H,)h(q)g(whic)o(h)g(are)g(not)0
+91 y(v)n(alid)e(in)i(Gurm)n(ukhi.)83 191 y Fg(Wh)n(a)o(t)j(m)o(ay)g(b)q
+(e)h(n)n(ext:)83 291 y Fh(Sup)o(p)q(ort)c(for)g(LaT)m(eX)83
+340 y(P)o(ort)o(in)o(g)g(t)o(o)g(di\013eren)o(t)h(syst)o(ems)f(an)o(d)f
+(pla)o(tforms)83 390 y(Com)n(bin)o(a)o(t)o(ion)e(of)i(Dev)n(an)o(agar)q
+(i)f(an)o(d)i(Gurm)n(ukhi.)83 490 y Fg(Bib)o(lograph)n(y)83
+589 y Fh([1])f(Norm)o(an)f(W)m(alsh)h Fa(Making)i(T)595
+598 y(E)618 589 y(XWork)f Fh(O'Re)q(illy)e(&)i(Asso)q(cia)o(t)o(e)q(s,)
+i(Inc.)i(July)c(1994.)83 639 y([2])f(Don)o(ald)f(E.)i(Kn)n(u)o(t)n(h)h
+Fa(The)g(T)573 648 y(E)596 639 y(Xb)n(o)n(ok)f Fh(Addi)q(son)f(W)m(e)q
+(sley)h(Pu)n(bli)q(shin)o(g)f(Co.)18 b(Sep)c(1993)83
+689 y([3])f(Don)o(ald)f(E.)i(Kn)n(u)o(t)n(h)h(it)f(Th)o(e)g(MET)m(AF)o
+(ONT)g(Bo)q(ok)g(Addi)q(son)f(W)m(e)q(sley)m(,)83 739
+y([4])g(FTP)h(Sit)o(e)g(for)f(T)408 748 y(E)431 739 y(X)h(an)o(d)g
+(rela)o(t)o(e)q(d)g(soft)o(w)o(are)q(s,)g(includin)o(g)g(MET)m(AF)o
+(ONT,)f(an)o(d)h(Dev)n(an)o(agr)q(i)83 789 y(ft)o(p.shsu.e)q(d)o(u/t)o
+(ex-arc)o(hiv)o(e)83 839 y([5])f(F)m(rans)h(J.)f(V)m(el)o(t)n(h)n(ui)q
+(s)i Fa(Devanagari)g(for)g(T)770 847 y(E)792 839 y(X)f
+Fh(V)m(ers)q(ion)f(1.2)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF