[LON-CAPA-cvs] cvs: loncom /cgi/mimeTeX gfuntype.c gifsave.c mimetex.c mimetex.h mimetex.html texfonts.h

albertel lon-capa-cvs@mail.lon-capa.org
Fri, 24 Mar 2006 23:08:42 -0000


This is a MIME encoded message

--albertel1143241722
Content-Type: text/plain

albertel		Fri Mar 24 18:08:42 2006 EDT

  Modified files:              
    /loncom/cgi/mimeTeX	gfuntype.c gifsave.c mimetex.c mimetex.h 
                       	mimetex.html texfonts.h 
  Log:
  -latest versions of mimtex
  
  
--albertel1143241722
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20060324180842.txt"

Index: loncom/cgi/mimeTeX/gfuntype.c
diff -u loncom/cgi/mimeTeX/gfuntype.c:1.1 loncom/cgi/mimeTeX/gfuntype.c:1.2
--- loncom/cgi/mimeTeX/gfuntype.c:1.1	Mon Feb 28 14:08:11 2005
+++ loncom/cgi/mimeTeX/gfuntype.c	Fri Mar 24 18:08:33 2006
@@ -17,7 +17,8 @@
  * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * --------------------------------------------------------------------------
  *
- * Program:	gfuntype  [-n fontname]  [-m msglevel]  [infile [outfile]]
+ * Program:	gfuntype  [-g gformat]  [-u isnoname] [-m msglevel]
+ *		[-n fontname]  [infile [outfile]]
  *
  * Purpose:	Parses output from  gftype -i
  *		and writes pixel bitmap data of the characters
@@ -31,6 +32,13 @@
  *				(defaults to stdin if no filenames given)
  *		outfile		name of output file
  *				(defaults to stdout if <2 filenames given)
+ *		-g gformat	gformat=1(default) for bitmap representation,
+ *				or 2,3 for 8-bit,4-bit .gf-like compression,
+ *				or 0 to choose smallest format.
+ *				Add 10 (gformat=10,12,13,14) to embed scan
+ *				line repeat counts in format.
+ *		-u isnoname	isnoname=1(default) to output symbols not
+ *				defined/named in mimetex.h, or 0 to omit them
  *		-m msglevel	verbose if msglevel>=9 (vv if >=99)
  *		-n fontname	string used for fontname
  *				(defaults to noname)
@@ -46,6 +54,7 @@
  * --------------------------------------------------------------------------
  * Revision History:
  * 09/22/02	J.Forkosh	Installation.
+ * 10/11/05	J.Forkosh	.gf-style format options added.
  *
  ****************************************************************************/
 
@@ -62,13 +71,26 @@
 #include "mimetex.h"
 /* --- parameters either -D defined on cc line, or defaulted here --- */
 #ifndef	MSGLEVEL
-#define	MSGLEVEL 0
+  #define MSGLEVEL 0
+#endif
+#ifndef	GFORMAT
+  #define GFORMAT 1
+#endif
+#ifndef ISREPEAT
+  #define ISREPEAT 1
 #endif
 /* --- message level (verbose test) --- */
 static	int msglevel = MSGLEVEL;	/* verbose if msglevel >= 9 */
 static	FILE *msgfp;			/* verbose output goes here */
+/* --- output file format --- */
+static	int isnoname = 1;		/* true to output unnamed symbols */
+static	char *noname = "(noname)";	/* char name used if lookup fails */
+static	int gformat = GFORMAT;		/* 1=bitmap, 2=.gf-like */
+static	int isrepeat = ISREPEAT;	/* true to store line repeat counts*/
+/* extern int imageformat; */		/* as per gformat, 1=bitmap,2=.gf */
 /* --- miscellaneous other data --- */
 #define	CORNER_STUB ".<--"		/* start of upper,lower-left line */
+#define	BLANKCHAR_STUB "character is entirely blank" /* signals blank char */
 #define	TYPECAST    "(pixbyte *)"	/* typecast for pixmap string */
 
 /* ==========================================================================
@@ -120,7 +142,11 @@
 	/* --- no usage for clueless users yet --- */
 	default:  exit(iserror); /* exit quietly for unrecognized input */
 	/* --- adjustable program parameters (not checking input) --- */
-	case 'm': msglevel   = atoi(argv[argnum]); break;
+	case 'g': gformat  = atoi(argv[argnum]);
+		  isrepeat = (gformat>=10?1:0);
+		  gformat  = gformat%10;         break;
+	case 'u': isnoname = atoi(argv[argnum]); break;
+	case 'm': msglevel = atoi(argv[argnum]); break;
 	case 'n': strcpy(fontname,argv[argnum]); break;
 	} /* --- end-of-switch() --- */
       } /* --- end-of-if(*argv[]=='-') --- */
@@ -136,8 +162,9 @@
 fprintf(msgfp,"%s\n",copyright); /* display copyright, gnu/gpl info */
 /* --- display input args if verbose output --- */
 if ( msglevel >= 9 )		/* verbose output requested */
-  fprintf(msgfp,"gfuntype> infile=%s, outfile=%s, fontname=%s\n",
-  (inarg>0?argv[inarg]:"stdin"), (outarg>0?argv[outarg]:"stdout"), fontname);
+  fprintf(msgfp,"gfuntype> infile=%s outfile=%s, fontname=%s format=%d.%d\n",
+  (inarg>0?argv[inarg]:"stdin"), (outarg>0?argv[outarg]:"stdout"),
+  fontname, gformat,isrepeat);
 /* --------------------------------------------------------------------------
 initialization
 -------------------------------------------------------------------------- */
@@ -149,6 +176,10 @@
   if ( (infp = fopen(argv[inarg],"r")) == NULL ) /*try to open input file*/
     { fprintf(msgfp,"gfuntype> can't open %s for read\n",argv[inarg]);
       goto end_of_job; }	/* report error and quit */
+/* --- set format for mimetex.c functions --- */
+if ( gformat<0 || gformat>3 ) gformat=1; /* sanity check */
+/* if ( gformat == 1 ) imageformat = 1;	*/ /* force bitmap format */
+/* else gformat = imageformat = 2; */	/* or force .gf format */
 /* --------------------------------------------------------------------------
 process input file
 -------------------------------------------------------------------------- */
@@ -180,18 +211,23 @@
 fprintf(outfp,"static\tchardef %c%s[] =\n   {\n", ' ',fontname);
 /* --- write characters comprising font --- */
 for ( charnum=0; charnum<256; charnum++ ) /*for each possible char in font*/
-  if ( fontdef[charnum] != (chardef *)NULL ) /*check if char exists in font*/
-    { if ( ++nchars > 1 )		/* bump count */
-	fprintf(outfp,",\n");		/* and terminate preceding chardef */
-      fprintf(outfp,"      /%c --- pixel bitmap for %s char#%d %s --- %c/\n",
-	'*',fontname,charnum,getcharname(fontname,charnum),'*');
-      cstruct_chardef(fontdef[charnum],outfp,6); } /*emit chardef as struct*/
-  else
-      if(0)fprintf(outfp,"NULL");	/* no character in this position */
+ if ( fontdef[charnum] != (chardef *)NULL ) /*check if char exists in font*/
+  { char *charname = getcharname(fontname,charnum);
+    if ( charname!=NULL || isnoname ) {	/* char defined or want undefined */
+     if ( ++nchars > 1 )		/* bump count */
+      fprintf(outfp,",\n");		/* and terminate preceding chardef */
+     fprintf(outfp,"      /%c --- pixel bitmap for %s char#%d %s --- %c/\n",
+      '*',fontname,charnum,(charname==NULL?noname:charname),'*');
+     cstruct_chardef(fontdef[charnum],outfp,6); } /*emit chardef struct*/
+    else
+     if(0)fprintf(outfp,"NULL");	/* no character in this position */
+  } /* --- end-of-if(fontdef[]!=NULL) --- */
+ else
+  if(0)fprintf(outfp,"NULL");		/* no character in this position */
 /* --- write trailer chardef and closing brace --- */
 fprintf(outfp,",\n");			/* finish up last map from loop */
 fprintf(outfp,"      /%c --- trailer  --- %c/\n",'*','*'); /* trailer... */
-fprintf(outfp,"      { -99, -999,  0,0,0,0, { 0,0,0, %s\"\\0\" }  }\n",
+fprintf(outfp,"      { -99, -999,  0,0,0,0, { 0,0,0,0, %s\"\\0\" }  }\n",
      TYPECAST);
 fprintf(outfp,"   } ;\n");		/* terminating }; for fontdef */
 /* --------------------------------------------------------------------------
@@ -230,23 +266,26 @@
 int	delete_chardef();		/* free allocated memory if error */
 int	findnextchar(), charnum,location; /* get header line for next char */
 int	rasterizechar();		/* ascii image --> raster pixmap */
-int	parsecorner();			/* get col,row from ".<--" line */
+int	parsestat=(-999), parsecorner(); /* get col,row from ".<--" line */
 char	*readaline();			/* read next line from fp */
 /* --------------------------------------------------------------------------
 initialization
 -------------------------------------------------------------------------- */
-/* --- find and interpret header line for next character --- */
-charnum = findnextchar(fp,&location);	/* read and parse header line */
-if ( charnum < 0 ) goto error;		/* eof or error, no more chars */
-/* --- allocate a new chardef struct and begin populating it --- */
-if ( (nextchar=new_chardef())		/* allocate a new chardef */
-==   (chardef *)NULL ) goto error;	/* and quit if we failed */
-nextchar->charnum = charnum;		/* store charnum in struct */
-nextchar->location = location;		/* and location */
-/* --- get upper-left corner line --- */
-if ( !parsecorner(readaline(fp),	/* parse corner line */
-&(nextchar->toprow),&(nextchar->topleftcol)) ) /* row and col from line */
-  goto error;				/* and quit if failed */
+while ( parsestat == (-999) ) {		/* flush entirely blank characters */
+  /* --- find and interpret header line for next character --- */
+  charnum = findnextchar(fp,&location);	/* read and parse header line */
+  if ( charnum < 0 ) goto error;	/* eof or error, no more chars */
+  /* --- allocate a new chardef struct and begin populating it --- */
+  if ( nextchar == (chardef *)NULL )	/* haven't allocated chardef yet */
+    if ( (nextchar=new_chardef())	/* allocate a new chardef */
+    ==   (chardef *)NULL ) goto error;	/* and quit if we failed */
+  nextchar->charnum = charnum;		/* store charnum in struct */
+  nextchar->location = location;	/* and location */
+  /* --- get upper-left corner line --- */
+  parsestat = parsecorner(readaline(fp), /* parse corner line */
+    &(nextchar->toprow),&(nextchar->topleftcol)); /* row and col from line */
+  } /* --- end-of-while(parsestat)  --- */
+if ( !parsestat ) goto error;		/* quit if parsecorner() failed */
 /* --------------------------------------------------------------------------
 interpret character image (and parse terminating corner line)
 -------------------------------------------------------------------------- */
@@ -276,6 +315,7 @@
  *		and returns the corresponding charname.
  * --------------------------------------------------------------------------
  * Arguments:	fontname (I)	char * containing fontname for font family
+ *				(from -n switch on command line)
  *		charnum (I)	int containing the character number
  *				whose corresponding name is wanted.
  * Returns:	( char * )	ptr to character name
@@ -290,14 +330,18 @@
 Allocations and Declarations
 -------------------------------------------------------------------------- */
 /* --- recognized font family names and our corresponding numbers --- */
-static	char *fnames[] = { "cmr","cmmi","cmsy","cmex",NULL };
-static	int    fnums[] = { CMR10,CMMI10,CMSY10,CMEX10,  -1 };
-static	char *noname = "(noname)";  /* char name returned if lookup fails */
+static	char *fnames[] =	/*font name from -n switch on command line*/
+	{ "cmr","cmmib","cmmi","cmsy","cmex","bbold","rsfs","stmary", NULL };
+static	int    fnums[] =	/* corresponding mimetex fontfamily number*/
+	{ CMR10,CMMIB10,CMMI10,CMSY10,CMEX10,BBOLD10,RSFS10,STMARY10,  -1 };
+static	int    offsets[] =	/* symtable[ichar].charnum = charnum-offset*/
+	{     0,      0,     0,     0,     0,      0,    65,       0,  -1 };
 /* --- other local declarations --- */
-char	*charname = noname;	/* character name returned to caller */
+char	*charname = NULL;	/* character name returned to caller */
 char	flower[99] = "noname";	/* lowercase caller's fontname */
-int	ifamily = 0,		/* fnames[] (and fnums[]) index */
-	ichar = 0;
+int	ifamily = 0,		/* fnames[] (and fnums[],offsets[]) index */
+	offset = 0,		/* offsets[ifamily] */
+	ichar = 0;		/* loop index */
 /* --------------------------------------------------------------------------
 lowercase caller's fontname and look it up in fnames[]
 -------------------------------------------------------------------------- */
@@ -310,6 +354,7 @@
 for ( ifamily=0; ;ifamily++ )	/* check fnames[] for flower */
   if ( fnames[ifamily] == NULL ) goto end_of_job; /* quit at end-of-table */
   else if ( strstr(flower,fnames[ifamily]) != NULL ) break; /* found it */
+offset = offsets[ifamily];	/* symtable[ichar].charnum = charnum-offset*/
 ifamily = fnums[ifamily];	/* xlate index to font family number */
 /* --------------------------------------------------------------------------
 now look up name for caller's charnum in ifamily, and return it to caller
@@ -320,10 +365,12 @@
   else
     if ( symtable[ichar].family == ifamily /* found desired family */
     &&   symtable[ichar].handler == NULL ) /* and char isn't a "dummy" */
-      if ( symtable[ichar].charnum == charnum ) break; /* found charnum */
+      if ( symtable[ichar].charnum == charnum-offset ) break; /*got charnum*/
 /* --- return corresponding charname to caller --- */
 charname = symtable[ichar].symbol; /* pointer to symbol name in table */
 end_of_job:
+  if ( charname==NULL && isnoname ) /* want unnamed/undefined chars */
+    charname = noname;		/* so replace null return with noname */
   return ( charname );
 } /* --- end-of-function getcharname() --- */
 
@@ -406,16 +453,22 @@
 Allocations and Declarations
 -------------------------------------------------------------------------- */
 char	*readaline(), *line;	/* read next scan line for char from fp */
-unsigned char bitvec[512][64];	/* scan lines parsed (up to 512x512 bits) */
+unsigned char bitvec[1024][128]; /* scan lines parsed up to 1024x1024 bits */
+int	bitcmp();		/* compare bit strings */
 int	height = 0,		/* #scan lines in fp comprising char */
-	width = 0,		/* #chars on longest scan line */
-	pixsz = 1;		/* default #bits per pixel, 1=bitmap */
-int	iscan, ipixel=0,	/* bitvec[] index, raster pixel map index */
+	width = 0;		/* #chars on longest scan line */
+int	iscan,			/* bitvec[] index */
 	ibit;			/* bit along scan (i.e., 0...width-1) */
 int	isokay = 0;		/* returned status, init for failure */
+/* --- bitmap and .gf-formatted image info (we'll choose smallest) --- */
+int	iformat = gformat;	/*0=best, 1=bitmap, 2=8-bit.gf, 3=4-bit.gf*/
+unsigned char gfpixcount[2][65536]; /* .gf black/white flips (max=64K) */
+int	npixcounts[2] = {9999999,9999999}; /* #counts for 8-bit,4-bit .gf */
+int	nbytes1=9999999,nbytes2=9999999,nbytes3=9999999;/*#bytes for format*/
 /* --------------------------------------------------------------------------
 read lines till ".<--" terminator, and construct one vector[] int per line
 -------------------------------------------------------------------------- */
+memset(bitvec,0,128*1024);	/* zero-fill bitvec[] */
 while ( (line=readaline(fp)) != NULL ) /* read lines until eof */
   {
   /* --- allocations and declarations --- */
@@ -424,7 +477,7 @@
   if ( memcmp(line,CORNER_STUB,strlen(CORNER_STUB)) == 0 ) /* corner line */
     break;			/* so done with loop */
   /* --- parse line (encode asterisks comprising character image) --- */
-  memset(bitvec[height],0,64);	/* first zero out all bits */
+  memset(bitvec[height],0,128);	/* first zero out all bits */
   for ( icol=0; icol<ncols; icol++ ) /* now check line[] for asterisks */
     if ( line[icol] == '*' )	/* we want to set this bit */
       {	setlongbit(bitvec[height],icol); /* set bit */
@@ -434,20 +487,131 @@
 if ( height<1 || width<1 )	/* some problem parsing character */
   goto end_of_job;		/* so quit */
 /* --------------------------------------------------------------------------
-allocate image raster pixmap for character
+init image values
 -------------------------------------------------------------------------- */
 if ( image->pixmap != NULL )	/* hmm, somebody already allocated memory */
-  free((void *)image->pixmap);	/* just free it */
+  free((void *)image->pixmap);	/* so just free it */
 image->width = width;		/* set image width within raster struct */
 image->height = height;		/* and height */
-image->pixsz = pixsz;		/* #bits per pixel, 1=bitmap or 8=bytemap */
-if ( (image->pixmap = (unsigned char *)malloc(pixmapsz(image)))
-== NULL ) goto end_of_job;	/* quit if failed to allocate pixmap */
+image->format = gformat;	/* set format (will be reset below) */
+image->pixsz = 1;		/* #bits per pixel (or #counts in .gf fmt) */
+if ( gformat==0 || gformat==1 )	/* bitmap representation allowed */
+  { nbytes1 = pixmapsz(image);	/* #bytes needed for bitmap */
+    iformat = 1; }		/* default to bitmap format */
+/* --------------------------------------------------------------------------
+perform .gf-like compression on image in bitvec
+-------------------------------------------------------------------------- */
+if ( gformat == 0		/* choose optimal/smallest respresentation */
+||   gformat==2 || gformat==3 )	/* .gf-like compressed representation */
+ {
+ /* --- try both 8-bits/count and 4-bits/count for best compression --- */
+ int	maxbitcount[2] = {254,14}; /* don't count too much in one byte */
+ int	repeatcmds[2]  = {255,15}; /* opcode for repeat/duplicate count */
+ int	minbytes = 0;		/* #bytes needed for smallest format */
+ for ( iformat=2; iformat<=3; iformat++ ) { /* 2=8-bit packing, 3=4-bit */
+  int	gfbitcount = 0,		/* count of consecutive gfbitval's */
+	gfbitval = 0,		/* begin with count of leading 0's */
+	pixcount = 0;		/* #packed bytes (#black/white flips) */
+  unsigned char *gfcount = gfpixcount[iformat-2]; /*counts for this format*/
+  if ( gformat!=0 && gformat!=iformat ) /* this format not allowed */
+    continue;			/* so just skip it */
+  for ( iscan=0; iscan<height; iscan++ ) /* for each integer in bitvec[] */
+   {
+   int	bitval = 0;		/* current actual pixel value */
+   int	nrepeats=0, nextreps=0;	/* #duplicate lines below current,next line*/
+   /* --- check for repeated/duplicate scan lines --- */
+   if ( isrepeat		/* we're storing scan line repeat counts */
+   &&   iscan < height-1 ) {	/* current scan line isn't the last line */
+    /* --- count repeats --- */
+    int jscan = iscan;		/* compare current scan with lines below it*/
+    while ( ++jscan < height ) { /* until last scan line */
+     if (nrepeats == jscan-iscan-1) /*no intervening non-identical lines*/
+      if ( bitcmp(bitvec[iscan],bitvec[jscan],width) == 0 ) /* identical */
+       nrepeats++;		/* so bump repeat count */
+     if ( jscan > iscan+1 )	/* we're below next line */
+      if (nextreps == jscan-iscan-2) /*no intervening non-identical lines*/
+       if ( bitcmp(bitvec[iscan+1],bitvec[jscan],width) == 0 )/*identical*/
+	nextreps++; }		/* so bump next lline repeat count */
+    /* --- set repeat command and count --- */
+    if ( nrepeats > 0 ) {	/* found repeated lines below current */
+     int maxrepeats = maxbitcount[iformat-2]; /*max count/repeats per byte*/
+     if ( nrepeats > maxrepeats ) nrepeats=maxrepeats; /* don't exceed max */
+     {setbyfmt(iformat,gfcount,pixcount,repeatcmds[iformat-2]);} /*set cmd*/
+     {setbyfmt(iformat,gfcount,pixcount+1,nrepeats);} /* set #repeats */
+     pixcount += 2; }		/* don't bump pixcount within macros */
+    } /* --- end-of-if(isrepeat) --- */
+   /* --- set bit counts for current scan line --- */
+   for ( ibit=0; ibit<width; ibit++ )	/* for all bits in this scanline */
+    {
+    bitval = getlongbit(bitvec[iscan],ibit); /* check actual pixel value */
+    if ( bitval != gfbitval ) {	/* black-to-white edge (or vice versa) */
+      {setbyfmt(iformat,gfcount,pixcount,gfbitcount);} /*set byte or nibble*/
+      pixcount++;		/* don't bump pixcount within macro */
+      gfbitcount = 0;		/* reset consecutive bit count */
+      gfbitval = 1-gfbitval; }	/* flip bit to be counted */
+    else			/* check count if continuing with same val */
+     if ( gfbitcount >= maxbitcount[iformat-2] ) { /* max count per byte */
+      {setbyfmt(iformat,gfcount,pixcount,gfbitcount);} /*set byte or nibble*/
+      clearbyfmt(iformat,gfcount,pixcount+1); /*followed by dummy 0 count*/
+      pixcount += 2;		/* don't bump pixcount within macros */
+      gfbitcount = 0; }		/* reset consecutive bit count */
+    if ( bitval == gfbitval )	/* same bit val as preceding, or first new */
+      gfbitcount++;		/* so just count another pixel */
+    } /* --- end-of-for(ibit) --- */
+   /* --- adjust for repeated scan lines --- */
+   iscan += nrepeats;		/* skip repeated/duplicate scan lines */
+   if ( nrepeats>0 || nextreps>0 ) /* emit count to align on full scan */
+    if ( iscan < height-1 )	/* have another scan line below this one */
+     if ( gfbitcount > 0 ) {	/* should always have some final count */
+      {setbyfmt(iformat,gfcount,pixcount,gfbitcount);} /*set byte or nibble*/
+      pixcount++;		/* don't bump pixcount within macro */
+      gfbitcount = 0;		/* reset consecutive bit count */
+      if ( bitval == getlongbit(bitvec[iscan+1],0) ) { /* same bit value */
+       clearbyfmt(iformat,gfcount,pixcount); /*so we need a dummy 0 count*/
+       pixcount++; }		/* don't bump pixcount within macros */
+      else			/* bitval flips at start of next line */
+       gfbitval = 1-gfbitval;	/* so flip bit to be counted */
+      } /* --- end-of-if(nrepeats...gfbitcount>0) --- */
+   } /* --- end-of-for(iscan) --- */
+   /* --- store final count --- */
+   if ( gfbitcount > 0 ) {	/* have a final count */
+     {setbyfmt(iformat,gfcount,pixcount,gfbitcount);} /*set byte or nibble*/
+     pixcount++; }		/* don't bump pixcount within macro */
+   else				/* ended exactly after maxbitcount? */
+    if ( getbyfmt(iformat,gfcount,pixcount-1) == 0 )/*have dummy 0 trailer?*/
+     pixcount--;		/* remove unneeded dummy trailer */
+   /* --- save count to choose smallest --- */
+   npixcounts[iformat-2] = pixcount; /* save count */
+   } /* --- end-of-for(iformat) --- */
+ /* --- check for optimal/smallest format --- */
+ nbytes2=npixcounts[0];  nbytes3=(1+npixcounts[1])/2; /* #bytes for count */
+ iformat = (nbytes2<nbytes3? 2:3); /* choose smallest format */
+ minbytes = (iformat==2?nbytes2:nbytes3); /* #bytes for smallest format */
+ if ( gformat == 0 )		/* bitmap representation also permitted */
+  if ( nbytes1 <= minbytes )	/* and it's the optimal/smallest format */
+   iformat = 1;			/* so flip format */
+ /* --- move results to returned image --- */
+ if ( iformat != 1 ) {		/* using a .gf format */
+  if ( (image->pixmap = (unsigned char *)malloc(minbytes)) /* alloc pixmap */
+  == NULL ) goto end_of_job;	/* quit if failed to allocate pixmap */
+  memcpy(image->pixmap,gfpixcount[iformat-2],minbytes); /*copy local counts*/
+  image->format = iformat;	/* signal byte counts or nibble counts */
+  image->pixsz = npixcounts[iformat-2]; /*#counts in pixmap for gformat=2,3*/
+  } /* --- end-of-if(iformat!=1) --- */
+ } /* --- end-of-if(gformat==2) --- */
 /* --------------------------------------------------------------------------
 copy each integer in bitvec[] to raster pixmap, bit by bit
 -------------------------------------------------------------------------- */
-for ( iscan=0; iscan<height; iscan++ )	/* for each integer in vector[] */
-  for ( ibit=0; ibit<width; ibit++ )	/* for all bits in this scan */
+if ( iformat == 1 )		/* bit-by-bit representation of image */
+ {
+ int	ipixel = 0;		/* pixmap index */
+ /* --- first allocate image raster pixmap for character --- */
+ if ( (image->pixmap = (unsigned char *)malloc(pixmapsz(image)))
+ == NULL ) goto end_of_job;	/* quit if failed to allocate pixmap */
+ image->format = iformat;	/* reset format */
+ /* --- now store bit image in allocated raster --- */
+ for ( iscan=0; iscan<height; iscan++ )	/* for each integer in bitvec[] */
+  for ( ibit=0; ibit<width; ibit++ )	/* for all bits in this scanline */
     {
     if ( getlongbit(bitvec[iscan],ibit) != 0 ) /* check current scan pixel */
       { setlongbit(image->pixmap,ipixel); }
@@ -455,6 +619,7 @@
       { unsetlongbit(image->pixmap,ipixel); }
     ipixel++;				/* bump image raster pixel */
     } /* --- end-of-for(iscan,ibit) --- */
+ } /* --- end-of-if(gformat==1) --- */
 /* --------------------------------------------------------------------------
 done
 -------------------------------------------------------------------------- */
@@ -490,6 +655,10 @@
 -------------------------------------------------------------------------- */
 /* --- first, check beginning of line --- */
 if ( line == (char *)NULL ) goto end_of_job; /* no line supplied by caller */
+/* --- check for blank line --- */
+if ( strstr(line,BLANKCHAR_STUB) != NULL ) /* got entirely blank character */
+  return ( -999 );			/* so return special -999 signal */
+/* --- check for corner --- */
 if ( memcmp(line,CORNER_STUB,strlen(CORNER_STUB)) != 0 ) /*not valid corner*/
   goto end_of_job;			/* so quit */
 /* --- extract  col,row  field from line --- */
@@ -532,14 +701,14 @@
 /* --------------------------------------------------------------------------
 Allocations and Declarations
 -------------------------------------------------------------------------- */
-static	char buffer[1024];	/* static buffer if caller supplies none */
+static	char buffer[2048];	/* static buffer returned to caller */
 char	*fgets(), *bufptr=buffer; /* read line from fp */
 char	*strchr(), *delim;	/* remove terminating newline */
 /* --------------------------------------------------------------------------
 Read line and strip trailing newline
 -------------------------------------------------------------------------- */
 if ( fp != NULL )			/*if null, return previous line read*/
-  if ( (bufptr=fgets(buffer,1023,fp))	/* read next line from fp */
+  if ( (bufptr=fgets(buffer,2047,fp))	/* read next line from fp */
   != NULL )				/* and check that we succeeded */
     {
     if ( (delim=strchr(bufptr,'\n'))	/* look for terminating newline */
@@ -548,5 +717,40 @@
     } /* --- end-of-if(fgets()!=NULL) --- */
 return ( bufptr );			/*back to caller with buffer or null*/
 } /* --- end-of-function readaline() --- */
+
+
+/* ==========================================================================
+ * Function:	bitcmp ( bs1, bs2, n )
+ * Purpose:	compares the first n bits of two strings
+ * --------------------------------------------------------------------------
+ * Arguments:	bs1 (I)		unsigned char * to first bit string
+ *		bs2 (I)		unsigned char * to second bit string
+ *		n (I)		int containing #bits to compare
+ * Returns:	( int )		0 if first n bits are identical
+ *				-1 if first unmatching bit of bs1 is 0
+ *				+1 if first unmatching bit of bs2 id 0
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+int	bitcmp ( unsigned char *bs1, unsigned char *bs2, int n )
+{
+/* --------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+int	icmp = 0;		/* returned to caller */
+int	nbytes = n/8,		/* #full bytes we can compare with memcmp()*/
+	nbits  = n%8,  ibit=0;	/* #trailing bits in last byte, index */
+/* --------------------------------------------------------------------------
+compare leading bytes, then trailing bits
+-------------------------------------------------------------------------- */
+if ( nbytes > 0 ) icmp = memcmp(bs1,bs2,nbytes); /* compare leading bytes */
+if ( icmp == 0 )		/* leading bytes identical */
+ if ( nbits > 0 )		/* and we have trailing bits */
+  for ( ibit=0; ibit<nbits; ibit++ ) /* check each bit */
+   { icmp = (int)get1bit(bs1[nbytes],ibit) - (int)get1bit(bs2[nbytes],ibit);
+     if ( icmp != 0 ) break; }	/* done at first unmatched bit */
+return ( icmp );		/* back to caller with -1,0,+1 */
+} /* --- end-of-function bitcmp() --- */
 /* --- end-of-file gfuntype.c --- */
 
Index: loncom/cgi/mimeTeX/gifsave.c
diff -u loncom/cgi/mimeTeX/gifsave.c:1.1 loncom/cgi/mimeTeX/gifsave.c:1.2
--- loncom/cgi/mimeTeX/gifsave.c:1.1	Mon Feb 28 14:08:11 2005
+++ loncom/cgi/mimeTeX/gifsave.c	Fri Mar 24 18:08:33 2006
@@ -1,4 +1,4 @@
-/* $Id: gifsave.c,v 1.1 2005/02/28 19:08:11 albertel Exp $ */
+/* $Id: gifsave.c,v 1.2 2006/03/24 23:08:33 albertel Exp $ */
 /**************************************************************************
  *
  *  FILE            gifsave.c
@@ -20,7 +20,9 @@
 #include <string.h>		/* " */
 /* --- windows-specific header info --- */
 #ifndef WINDOWS			/* -DWINDOWS not supplied by user */
-  #if defined(_WIN32)		/* try to recognize windows environments */
+  #if defined(_WINDOWS) || defined(_WIN32) || defined(WIN32) \
+  ||  defined(DJGPP)		/* try to recognize windows compilers */ \
+  ||  defined(_USRDLL)		/* must be WINDOWS if compiling for DLL */
     #define WINDOWS		/* signal windows */
   #endif
 #endif
@@ -67,7 +69,10 @@
 
 /* used by IO-routines */
 static FILE *OutFile = NULL;    /* file to write to */
-static int isCloseOutFile = 0;	/* (added by j.forkosh) */
+static Byte *OutBuffer = NULL;	/* (added by j.forkosh) */
+static int isCloseOutFile = 0;	/* " */
+int gifSize = 0;		/* " #bytes comprising gif */
+int maxgifSize = 64000;		/* " max #bytes written to OutBuffer */
 
 /* used when writing to a file bitwise */
 static Byte Buffer[256];        /* there must be one more than `needed' */
@@ -154,7 +159,10 @@
  *                rewrite file IO.
  *
  *  INPUT         filename
- *                        name of file to create
+ *                        name of file to create,
+ *                        or NULL for stdout,
+ *                        or if *filename='\000' then it's the address of
+ *                           a memory buffer to which gif will be written
  *
  *  RETURNS       GIF_OK       - OK
  *                GIF_ERRWRITE - Error opening the file
@@ -162,7 +170,10 @@
 static int
 Create(const char *filename)
 {
-    if ( filename == NULL )			/* (added by j.forkosh) */
+    OutBuffer = NULL;				/* (added by j.forkosh) */
+    isCloseOutFile = 0;				/* " */
+    gifSize = 0;				/* " */
+    if ( filename == NULL )			/* " */
       {	OutFile = stdout;			/* " */
 	/*OutFile = fdopen(STDOUT_FILENO,"wb");*/ /* " doesn't work, */
 	#ifdef WINDOWS				/* "   so instead... */
@@ -179,9 +190,12 @@
 	#endif					/* " */
       }						/* " */
     else					/* " */
-      {	if ((OutFile = fopen(filename, "wb")) == NULL)
-	  return GIF_ERRCREATE;
-	isCloseOutFile = 1; }			/* (added by j.forkosh) */
+      if ( *filename != '\000' )		/* " */
+	{ if ((OutFile = fopen(filename, "wb")) == NULL)
+	    return GIF_ERRCREATE;
+	  isCloseOutFile = 1; }			/* (added by j.forkosh) */
+      else					/* " */
+	OutBuffer = (Byte *)filename;		/* " */
     return GIF_OK;
 }
 
@@ -202,8 +216,13 @@
 static int
 Write(const void *buf, unsigned len)
 {
-    if (fwrite(buf, sizeof(Byte), len, OutFile) < len)
-        return GIF_ERRWRITE;
+    if ( OutBuffer == NULL )			/* (added by j.forkosh) */
+      {	if (fwrite(buf, sizeof(Byte), len, OutFile) < len)
+	  return GIF_ERRWRITE; }
+    else					/* (added by j.forkosh) */
+      {	if ( gifSize+len <= maxgifSize )	/* " */
+	  memcpy(OutBuffer+gifSize,buf,len); }	/* " */
+    gifSize += len;				/* " */
     return GIF_OK;
 }
 
@@ -223,8 +242,13 @@
 static int
 WriteByte(Byte b)
 {
-    if (putc(b, OutFile) == EOF)
-        return GIF_ERRWRITE;
+    if ( OutBuffer == NULL )			/* (added by j.forkosh) */
+      {	if (putc(b, OutFile) == EOF)
+	  return GIF_ERRWRITE; }
+    else					/* (added by j.forkosh) */
+      {	if ( gifSize < maxgifSize )		/* " */
+	  OutBuffer[gifSize] = b; }		/* " */
+    gifSize++;					/* " */
     return GIF_OK;
 }
 
@@ -245,10 +269,16 @@
 static int
 WriteWord(Word w)
 {
-    if (putc(w & 0xFF, OutFile) == EOF)
-        return GIF_ERRWRITE;
-    if (putc((w >> 8), OutFile) == EOF)
-        return GIF_ERRWRITE;
+    if ( OutBuffer == NULL )			/* (added by j.forkosh) */
+      {	if (putc(w & 0xFF, OutFile) == EOF)
+	  return GIF_ERRWRITE;
+	if (putc((w >> 8), OutFile) == EOF)
+	  return GIF_ERRWRITE; }
+    else					/* (added by j.forkosh) */
+      if ( gifSize+1 < maxgifSize )		/* " */
+	{ OutBuffer[gifSize] = (Byte)(w & 0xFF);  /* " */
+	  OutBuffer[gifSize+1] = (Byte)(w >> 8); }  /* " */
+    gifSize += 2;				/* " */
     return GIF_OK;
 }
 
@@ -265,6 +295,8 @@
 {
     if ( isCloseOutFile )			/* (added by j.forkosh) */
       fclose(OutFile);
+    OutBuffer = NULL;				/* (added by j.forkosh) */
+    isCloseOutFile = 0;				/* " */
 }
 
 
Index: loncom/cgi/mimeTeX/mimetex.c
diff -u loncom/cgi/mimeTeX/mimetex.c:1.1 loncom/cgi/mimeTeX/mimetex.c:1.2
--- loncom/cgi/mimeTeX/mimetex.c:1.1	Mon Feb 28 14:08:11 2005
+++ loncom/cgi/mimeTeX/mimetex.c	Fri Mar 24 18:08:33 2006
@@ -1,6 +1,6 @@
 /****************************************************************************
  *
- * Copyright(c) 2002-2005, John Forkosh Associates, Inc. All rights reserved.
+ * Copyright(c) 2002-2006, John Forkosh Associates, Inc. All rights reserved.
  * --------------------------------------------------------------------------
  * This file is part of mimeTeX, which is free software. You may redistribute
  * and/or modify it under the terms of the GNU General Public License,
@@ -58,7 +58,7 @@
  *		rastcat(sp1,sp2,isfree)                  concatanate sp1||sp2
  *		rastack(sp1,sp2,base,space,iscenter,isfree)stack sp2 atop sp1
  *		rastile(tiles,ntiles)      create composite raster from tiles
- *		rastsquash(sp1,sp2,xmin,ymin)    calc #squash pixels sp1||sp2
+ *		rastsmash(sp1,sp2,xmin,ymin)      calc #smash pixels sp1||sp2
  *		--- raster "drawing" functions ---
  *		accent_subraster(accent,width,height)       draw \hat\vec\etc
  *		arrow_subraster(width,height,drctn,isBig)    left/right arrow
@@ -74,16 +74,19 @@
  *		type_raster(rp,fp)       emit ascii dump of rp on file ptr fp
  *		type_bytemap(bp,grayscale,width,height,fp) dump bytemap on fp
  *		xbitmap_raster(rp,fp)           emit mime xbitmap of rp on fp
+ *		type_pbmpgm(rp,ptype,file)     pbm or pgm image of rp to file
  *		cstruct_chardef(cp,fp,col1)         emit C struct of cp on fp
  *		cstruct_raster(rp,fp,col1)          emit C struct of rp on fp
  *		hex_bitmap(rp,fp,col1,isstr)emit hex dump of rp->pixmap on fp
  *		--- ancillary output functions ---
  *		emit_string(fp,col1,string,comment) emit string and C comment
+ *		gftobitmap(rp)        convert .gf-like pixmap to bitmap image
  *		====================== Font Functions =======================
  *		--- font lookup functions ---
  *		get_symdef(symbol)             returns mathchardef for symbol
  *		get_chardef(symdef,size)      returns chardef for symdef,size
  *		get_charsubraster(symdef,size)  wrap subraster around chardef
+ *		get_symsubraster(symbol,size)    returns subraster for symbol
  *		--- ancillary font functions ---
  *		get_baseline(gfdata)       determine baseline (in our coords)
  *		get_delim(symbol,height,family) delim just larger than height
@@ -91,6 +94,7 @@
  *		================= Tokenize/Parse Functions ==================
  *		texchar(expression,chartoken)  retruns next char or \sequence
  *		texsubexpr(expr,subexpr,maxsubsz,left,right,isescape,isdelim)
+ *		texleft(expr,subexpr,maxsubsz,ldelim,rdelim)   \left...\right
  *		texscripts(expression,subscript,superscript,which)get scripts
  *		--- ancillary parse functions ---
  *		isbrace(expression,braces,isescape)   check for leading brace
@@ -110,6 +114,8 @@
  *		rastdispmath(expression,size,sp)      scripts for displaymath
  *		--- table-driven handlers that rasterize... ---
  *		rastleft(expression,size,basesp,ildelim,arg2,arg3)\left\right
+ *		rastright(expression,size,basesp,ildelim,arg2,arg3) ...\right
+ *		rastmiddle(expression,size,basesp,arg1,arg2,arg3)     \middle
  *		rastflags(expression,size,basesp,flag,value,arg3)    set flag
  *		rastspace(expression,size,basesp,width,isfill,isheight)\,\:\;
  *		rastnewline(expression,size,basesp,arg1,arg2,arg3)         \\
@@ -133,13 +139,19 @@
  *		rastfbox(expression,size,basesp,arg1,arg2,arg3)         \fbox
  *		rastinput(expression,size,basesp,arg1,arg2,arg3)       \input
  *		rastcounter(expression,size,basesp,arg1,arg2,arg3)   \counter
+ *		rasttoday(expression,size,basesp,arg1,arg2,arg3)       \today
+ *		rastcalendar(expression,size,basesp,arg1,arg2,arg3) \calendar
  *		rastnoop(expression,size,basesp,arg1,arg2,arg3) flush \escape
  *		--- helper functions for handlers ---
  *		rastopenfile(filename,mode)      opens filename[.tex] in mode
- *		rastreadfile(filename,tag,value)  read between <tag>...</tag>
+ *		rasteditfilename(filename)       edit filename (for security)
+ *		rastreadfile(filename,islock,tag,value)   read <tag>...</tag>
  *		rastwritefile(filename,tag,value,isstrict)write<tag>...</tag>
- *		timestamp( )   formats timestamp string (used by rastcounter)
- *		dtoa(d,npts)                  double to comma-separated ascii
+ *		calendar(year,month,day)    formats one-month calendar string
+ *		timestamp(tzdelta,ifmt)              formats timestamp string
+ *		tzadjust(tzdelta,year,month,day,hour)        adjust date/time
+ *		daynumber(year,month,day)     #days since Monday, Jan 1, 1973
+ *		dbltoa(d,npts)                double to comma-separated ascii
  *		=== Anti-alias completed raster (lowpass) or symbols (ss) ===
  *		aalowpass(rp,bytemap,grayscale)     lowpass grayscale bytemap
  *		aapnm(rp,bytemap,grayscale)       lowpass based on pnmalias.c
@@ -149,11 +161,13 @@
  *		aawtpixel(image,ipixel,weights,rotate) weight image at ipixel
  *	PART1	========================== Driver ===========================
  *		main(argc,argv) parses math expression and emits mime xbitmap
+ *		CreateGifFromEq(expression,gifFileName)  entry pt for win dll
  *		isstrstr(string,snippets,iscase)  are any snippets in string?
  *		ismonth(month)          is month current month ("jan"-"dec")?
  *		unescape_url(url,isescape), x2c(what)   xlate %xx url-encoded
  *		logger(fp,msglevel,logvars)        logs environment variables
- *		emitcache(cachefile)  read cachefile and emit bytes to stdout
+ *		emitcache(cachefile,maxage,isbuffer) emit cachefile to stdout
+ *		readcachefile(cachefile,buffer)    read cachefile into buffer
  *		md5str(instr)                      md5 hash library functions
  *		GetPixel(x,y)           callback function for gifsave library
  *
@@ -311,8 +325,9 @@
 
 /* --- windows-specific header info --- */
 #ifndef WINDOWS			/* -DWINDOWS not supplied by user */
-  #if defined(_WIN32) || defined(WIN32) \
-  ||  defined(DJGPP)		/* try to recognize windows */
+  #if defined(_WINDOWS) || defined(_WIN32) || defined(WIN32) \
+  ||  defined(DJGPP)		/* try to recognize windows compilers */ \
+  ||  defined(_USRDLL)		/* must be WINDOWS if compiling for DLL */
     #define WINDOWS		/* signal windows */
   #endif
 #endif
@@ -328,6 +343,11 @@
   #if defined(_O_BINARY) || defined(O_BINARY)  /* setmode() now available */
     #define HAVE_SETMODE	/* so we'll use setmode() */
   #endif
+  #if defined(_MSC_VER) && defined(_DEBUG) /* MS VC++ in debug mode */
+    /* to show source file and line numbers where memory leaks occur... */
+    #define _CRTDBG_MAP_ALLOC	/* ...include this debug macro */
+    #include <crtdbg.h>		/* and this debug library */
+  #endif
   #define ISWINDOWS 1
 #else
   #define ISWINDOWS 0
@@ -396,20 +416,26 @@
   #define TEXFONTS			/* to include texfonts.h */
 #endif
 #include "mimetex.h"
+/* --- info needed when gif image returned in memory buffer --- */
+#ifdef GIF				/* compiling along with gifsave.c */
+  extern int gifSize;
+  extern int maxgifSize;
+#else					/* or just set dummy values */
+  static int gifSize=0, maxgifSize=0;
+#endif
 
 /* -------------------------------------------------------------------------
 adjustable default values
 -------------------------------------------------------------------------- */
 /* --- anti-aliasing parameters --- */
 #ifndef	CENTERWT
+  /*#define CENTERWT 32*/		/* anti-aliasing centerwt default */
   /*#define CENTERWT 10*/		/* anti-aliasing centerwt default */
-  /*#define CENTERWT 6*/		/* anti-aliasing centerwt default */
-  #define CENTERWT 32			/* anti-aliasing centerwt default */
+  #define CENTERWT 8			/* anti-aliasing centerwt default */
 #endif
 #ifndef	ADJACENTWT
   /*#define ADJACENTWT 3*/		/* anti-aliasing adjacentwt default*/
-  /*#define ADJACENTWT 2*/		/* anti-aliasing adjacentwt default*/
-  #define ADJACENTWT 3			/* anti-aliasing adjacentwt default*/
+  #define ADJACENTWT 2			/* anti-aliasing adjacentwt default*/
 #endif
 #ifndef	CORNERWT
   #define CORNERWT 1			/* anti-aliasing cornerwt default*/
@@ -473,12 +499,12 @@
 #ifndef	FGBLUE
   #define FGBLUE  (ISBLACKONWHITE?0:255)
 #endif
-/* --- "squash" margin (0 means no squashing) --- */
-#ifndef SQUASHMARGIN
-  #ifdef NOSQUASH
-    #define SQUASHMARGIN 0
+/* --- "smash" margin (0 means no smashing) --- */
+#ifndef SMASHMARGIN
+  #ifdef NOSMASH
+    #define SMASHMARGIN 0
   #else
-    #define SQUASHMARGIN 3
+    #define SMASHMARGIN 3
   #endif
 #endif
 /* --- textwidth --- */
@@ -486,7 +512,7 @@
   #define TEXTWIDTH (400)
 #endif
 /* --- font "combinations" --- */
-#define	CMSYEX (107)			/* select CMSY10 _or_ CMEX10 */
+#define	CMSYEX (109)			/*select CMSY10, CMEX10 or STMARY10*/
 /* --- prefix prepended to all expressions --- */
 #ifndef	PREFIX
   #define PREFIX "\000"			/* default no prepended prefix */
@@ -522,6 +548,10 @@
 #ifndef PATHPREFIX
   #define PATHPREFIX "\000"		/* paths relative mimetex.cgi */
 #endif
+/* --- time zone delta t (in hours) --- */
+#ifndef TZDELTA
+  #define TZDELTA 0
+#endif
 
 /* -------------------------------------------------------------------------
 debugging and logging / error reporting
@@ -555,17 +585,20 @@
 -------------------------------------------------------------------------- */
 GLOBAL(int,recurlevel,0);		/* inc/decremented in rasterize() */
 GLOBAL(int,scriptlevel,0);		/* inc/decremented in rastlimits() */
-GLOBAL(int,istext,0);			/* textmode if true,italics=2,bb=3 */
-GLOBAL(int,isstring ,0);		/*pixmap is ascii string, not raster*/
+GLOBAL(int,isstring,0);			/*pixmap is ascii string, not raster*/
+/*SHARED(int,imageformat,1);*/		/* image is 1=bitmap, 2=.gf-like */
 GLOBAL(int,isdisplaystyle,1);		/* displaystyle mode (forced if 2) */
 GLOBAL(int,ispreambledollars,0);	/* displaystyle mode set by $$...$$ */
+GLOBAL(int,fontnum,0);			/* cal=1,scr=2,rm=3,it=4,bb=5,bf=6 */
 GLOBAL(int,fontsize,NORMALSIZE);	/* current size */
 GLOBAL(int,displaysize,DISPLAYSIZE);	/* use \displaystyle when fontsize>=*/
 GLOBAL(int,shrinkfactor,3);		/* shrinkfactors[fontsize] */
 GLOBAL(double,unitlength,1.0);		/* #pixels per unit (may be <1.0) */
 /*GLOBAL(int,textwidth,TEXTWIDTH);*/	/* #pixels across line */
-GLOBAL(int,squashmargin,SQUASHMARGIN);	/* minimum "squash" margin */
-GLOBAL(int,issquashdelta,1);		/* true if squashmargin is a delta */
+GLOBAL(int,iscatspace,1);		/* true to add space in rastcat() */
+GLOBAL(int,smashmargin,SMASHMARGIN);	/* minimum "smash" margin */
+GLOBAL(int,issmashdelta,1);		/* true if smashmargin is a delta */
+GLOBAL(int,blanksignal,(-991234));	/*rastsmash signal right-hand blank*/
 GLOBAL(int,istransparent,1);		/*true to set background transparent*/
 GLOBAL(int,fgred,FGRED);
   GLOBAL(int,fggreen,FGGREEN);
@@ -655,6 +688,7 @@
   goto end_of_job;			/* return error to caller */
 rp->width = width;			/* store width in raster struct */
 rp->height = height;			/* and store height */
+rp->format = 1;				/* initialize as bitmap format */
 rp->pixsz = pixsz;			/* store #bits per pixel */
 rp->pixmap = (pixbyte *)NULL;		/* init bitmap as null ptr */
 /* --- allocate and initialize bitmap array --- */
@@ -775,6 +809,7 @@
 cp->toprow = cp->topleftcol = 0;	/* init upper-left corner */
 cp->botrow = cp->botleftcol = 0;	/* init lower-left corner */
 cp->image.width = cp->image.height = 0;	/* init raster dimensions */
+cp->image.format = 0;			/* init raster format */
 cp->image.pixsz = 0;			/* and #bits per pixel */
 cp->image.pixmap = NULL;		/* init raster pixmap as null */
 /* -------------------------------------------------------------------------
@@ -1190,11 +1225,10 @@
 	pixsz2  = (sp2->image)->pixsz,	/* pixsz for right-hand subraster */
 	type2   = sp2->type;		/* image type for right-hand */
 int	height=0, width=0, pixsz=0, base=0; /*concatted sp1||sp2 composite*/
-int	issquash = (squashmargin!=0?1:0), /* true to "squash" sp1||sp2 */
-	isopaque = (issquash?0:1),	/* not oppaque if squashing */
-	rastsquash(), isblank=0, nsquash=0, /* #cols to squash */
-	oldsquashmargin = squashmargin;	/* save original squashmargin */
-int	blanksignal = (-991234);	/*rastsquash signal right-hand blank*/
+int	issmash = (smashmargin!=0?1:0),	/* true to "squash" sp1||sp2 */
+	isopaque = (issmash?0:1),	/* not oppaque if smashing */
+	rastsmash(), isblank=0, nsmash=0, /* #cols to smash */
+	oldsmashmargin = smashmargin;	/* save original smashmargin */
 mathchardef *symdef1 = sp1->symdef,	/*mathchardef of last left-hand char*/
 	*symdef2 = sp2->symdef;		/* mathchardef of right-hand char */
 int	class1 = (symdef1==NULL?ORDINARY:symdef1->class), /* symdef->class */
@@ -1211,36 +1245,37 @@
 if ( !isstring )
   space = max2(2,(symspace[class1][class2] + fontsize-3)); /* space */
 else space = 1;				/* space for ascii string */
-/* --- determine squash --- */
-if ( !isstring )			/* don't squash strings */
- if ( issquash ) {			/* raster squash wanted */
-   int	maxsquash = rastsquash(sp1,sp2), /* calculate max squash space */
-	margin = squashmargin;		/* init margin without delta */
+if ( !iscatspace ) space=0;		/* spacing explicitly turned off */
+/* --- determine smash --- */
+if ( !isstring )			/* don't smash strings */
+ if ( issmash ) {			/* raster smash wanted */
+   int	maxsmash = rastsmash(sp1,sp2),	/* calculate max smash space */
+	margin = smashmargin;		/* init margin without delta */
    if ( (1 && smash1 && smash2)		/* concatanating two chars */
    ||   (1 && type1!=IMAGERASTER && type2!=IMAGERASTER) )
-     /*maxsquash = 0;*/			/* turn off squash */
-     margin = max2(space-1,0);		/* force small squashmargin */
+     /*maxsmash = 0;*/			/* turn off smash */
+     margin = max2(space-1,0);		/* force small smashmargin */
    else					/* adjust for delta if images */
-     if ( issquashdelta )		/* squashmargin is a delta value */
+     if ( issmashdelta )		/* smashmargin is a delta value */
        margin += fontsize;		/* add displaystyle base to margin */
-   if ( maxsquash == blanksignal )	/* sp2 is intentional blank */
+   if ( maxsmash == blanksignal )	/* sp2 is intentional blank */
      isblank = 1;			/* set blank flag signal */
    else					/* see how much extra space we have*/
-     if ( maxsquash > margin )		/* enough space for adjustment */
-       nsquash = maxsquash-margin;	/* make adjustment */
-   if ( msgfp!=NULL && msglevel>=99 )	/* display squash results */
-     { fprintf(msgfp,"rastcat> maxsquash=%d, margin=%d, nsquash=%d\n",
-       maxsquash,margin,nsquash);
+     if ( maxsmash > margin )		/* enough space for adjustment */
+       nsmash = maxsmash-margin;	/* make adjustment */
+   if ( msgfp!=NULL && msglevel>=99 )	/* display smash results */
+     { fprintf(msgfp,"rastcat> maxsmash=%d, margin=%d, nsmash=%d\n",
+       maxsmash,margin,nsmash);
        fprintf(msgfp,"rastcat> type1=%d,2=%d, class1=%d,2=%d\n", type1,type2,
        (symdef1==NULL?-999:class1),(symdef2==NULL?-999:class2));
        fflush(msgfp); }
-   } /* --- end-of-if(issquash) --- */
+   } /* --- end-of-if(issmash) --- */
 /* --- determine height, width and baseline of composite raster --- */
 if ( !isstring )
  { height = max2(base1+1,base2+1)	/* max height above baseline */
           + max2(height1-base1-1,height2-base2-1); /*+ max descending below*/
-   width  = width1+width2 + space-nsquash; /*add widths and space-squash*/
-   width  = max3(width,width1,width2); } /* don't "over-squash" composite */
+   width  = width1+width2 + space-nsmash; /*add widths and space-smash*/
+   width  = max3(width,width1,width2); } /* don't "over-smash" composite */
 else					/* ascii string */
  { height = 1;				/* default */
    width  = width1 + width2 + space - 1; } /* no need for two nulls */
@@ -1254,8 +1289,8 @@
     height2,width2,pixsz2,base2);
     type_raster(sp2->image,msgfp);	/* display right-hand raster */
     fprintf(msgfp,
-    "rastcat> Composite ht,width,squash,pixsz,base = %d,%d,%d,%d,%d\n",
-    height,width,nsquash,pixsz,base);
+    "rastcat> Composite ht,width,smash,pixsz,base = %d,%d,%d,%d,%d\n",
+    height,width,nsmash,pixsz,base);
     fflush(msgfp); }			/* flush msgfp buffer */
 /* -------------------------------------------------------------------------
 allocate concatted composite subraster
@@ -1273,7 +1308,8 @@
 /* --- initialize subraster parameters --- */
 /* sp->type = (!isstring?STRINGRASTER:ASCIISTRING); */  /*concatted string*/
 if ( !isstring )
-  sp->type = type2;/*(type1==type2?type2:IMAGERASTER);*/ /*string or image*/
+  sp->type = /*type2;*//*(type1==type2?type2:IMAGERASTER);*/
+	(type2!=CHARASTER? type2 : (type1!=CHARASTER?type1:STRINGRASTER));
 else
   sp->type = ASCIISTRING;		/* concatted ascii string */
 sp->symdef = symdef2;			/* rightmost char is sp2 */
@@ -1291,7 +1327,7 @@
     fflush(msgfp); }			/* flush msgfp buffer */
 if ( !isstring )
  rastput (rp, sp1->image, base-base1,	/* overlay left-hand */
- max2(0,nsquash-width1), 1);		/* plus any residual squash space */
+ max2(0,nsmash-width1), 1);		/* plus any residual smash space */
 else
  memcpy(rp->pixmap,(sp1->image)->pixmap,width1-1);  /*init left string*/
 if ( msgfp!=NULL && msglevel>=9999 )
@@ -1299,7 +1335,7 @@
     fflush(msgfp); }			/* flush msgfp buffer */
 if ( !isstring )
  rastput (rp, sp2->image, base-base2,	/* overlay right-hand */
- max2(0,width1+space-nsquash), isopaque); /* minus any squashed space */
+ max2(0,width1+space-nsmash), isopaque); /* minus any smashed space */
 else
  { strcpy((char *)(rp->pixmap)+width1-1+space,(char *)((sp2->image)->pixmap));
    ((char *)(rp->pixmap))[width1+width2+space-2] = '\000'; } /*null-term*/
@@ -1316,7 +1352,7 @@
 Back to caller with pointer to concatted subraster or with null for error
 -------------------------------------------------------------------------- */
 end_of_job:
-  squashmargin = oldsquashmargin;	/* reset original squashmargin */
+  smashmargin = oldsmashmargin;		/* reset original smashmargin */
   return ( sp );			/* back with subraster or null ptr */
 } /* --- end-of-function rastcat() --- */
 
@@ -1487,26 +1523,26 @@
 
 
 /* ==========================================================================
- * Function:	rastsquash ( sp1, sp2 )
+ * Function:	rastsmash ( sp1, sp2 )
  * Purpose:	When concatanating sp1||sp2, calculate #pixels
- *		we can "squash sp2 left"
+ *		we can "smash sp2 left"
  * --------------------------------------------------------------------------
  * Arguments:	sp1 (I)		subraster *  to left-hand raster
  *		sp2 (I)		subraster *  to right-hand raster
  * --------------------------------------------------------------------------
- * Returns:	( int )		max #pixels we can squash sp1||sp2,
+ * Returns:	( int )		max #pixels we can smash sp1||sp2,
  *				or "blanksignal" if sp2 intentionally blank,
  *				or 0 for any error.
  * --------------------------------------------------------------------------
  * Notes:     o
  * ======================================================================= */
 /* --- entry point --- */
-int	rastsquash ( subraster *sp1, subraster *sp2 )
+int	rastsmash ( subraster *sp1, subraster *sp2 )
 {
 /* -------------------------------------------------------------------------
 Allocations and Declarations
 -------------------------------------------------------------------------- */
-int	nsquash = 0;			/* #pixels to squash sp1||sp2 */
+int	nsmash = 0;			/* #pixels to smash sp1||sp2 */
 int	base1   = sp1->baseline,	/*baseline for left-hand subraster*/
 	height1 = (sp1->image)->height,	/* height for left-hand subraster */
 	width1  = (sp1->image)->width,	/* width for left-hand subraster */
@@ -1520,7 +1556,6 @@
 int	irow1=0,irow2=0, icol=0;	/* row,col indexes */
 int	firstcol1[1025], nfirst1=0,	/* 1st sp1 col containing set pixel*/
 	firstcol2[1025], nfirst2=0;	/* 1st sp2 col containing set pixel*/
-int	blanksignal = (-991234);	/*rastsquash signal right-hand blank*/
 int	smin=9999, xmin=9999,ymin=9999;	/* min separation (s=x+y) */
 int	type_raster();			/* display debugging output */
 /* -------------------------------------------------------------------------
@@ -1528,9 +1563,10 @@
 -------------------------------------------------------------------------- */
 /* --- check args --- */
 if ( isstring ) goto end_of_job;	/* ignore string rasters */
-if ( height > 1023 ) goto end_of_job;	/* don't try to squash huge image */
+if ( 0 && istextmode ) goto end_of_job;	/* don't smash in text mode */
+if ( height > 1023 ) goto end_of_job;	/* don't try to smash huge image */
 if ( sp2->type == blanksignal )		/*blanksignal was propagated to us*/
-  goto end_of_job;			/* don't squash intentional blank */
+  goto end_of_job;			/* don't smash intentional blank */
 /* --- init firstcol1[], firstcol2[] --- */
 for ( irow1=0; irow1<height; irow1++ )	/* for each row */
   firstcol1[irow1] = firstcol2[irow1] = blanksignal; /* signal empty rows */
@@ -1542,11 +1578,11 @@
 	nfirst2++;			/* bump #rows containing set pixels*/
 	break; }			/* and go on to next row */
 if ( nfirst2 < 1 )			/*right-hand sp2 is completely blank*/
-  { nsquash = blanksignal;		/* signal intentional blanks */
-    goto end_of_job; }			/* don't squash intentional blanks */
+  { nsmash = blanksignal;		/* signal intentional blanks */
+    goto end_of_job; }			/* don't smash intentional blanks */
 /* --- now check if preceding image in sp1 was an intentional blank --- */
 if ( sp1->type == blanksignal )		/*blanksignal was propagated to us*/
-  goto end_of_job;			/* don't squash intentional blank */
+  goto end_of_job;			/* don't smash intentional blank */
 /* --- set firstcol1[] indicating right edge of sp1 --- */
 for ( irow1=top1; irow1<=bot1; irow1++ ) /* for each row inside sp1 */
   for ( icol=width1-1; icol>=0; icol-- ) /* find last non-empty col in row */
@@ -1555,7 +1591,7 @@
 	nfirst1++;			/* bump #rows containing set pixels*/
 	break; }			/* and go on to next row */
 if ( nfirst1 < 1 )			/*left-hand sp1 is completely blank*/
-  goto end_of_job;			/* don't squash intentional blanks */
+  goto end_of_job;			/* don't smash intentional blanks */
 /* -------------------------------------------------------------------------
 find minimum separation
 -------------------------------------------------------------------------- */
@@ -1568,29 +1604,29 @@
     if ( (margin1=firstcol1[irow1]) != blanksignal ) { /*have non-blank row*/
      int dx=(margin1+margin2), dy=absval(irow2-irow1), ds=dx+dy; /* deltas */
      if ( ds >= smin ) continue;	/* min unchanged */
-     if ( dy>squashmargin && dx<xmin && smin<9999 ) continue; /* dy alone */
+     if ( dy>smashmargin && dx<xmin && smin<9999 ) continue; /* dy alone */
      smin=ds; xmin=dx; ymin=dy;		/* set new min */
      } /* --- end-of-if(margin1!=blanksignal) --- */
- if ( smin<2 ) goto end_of_job;		/* can't squash */
+ if ( smin<2 ) goto end_of_job;		/* can't smash */
  } /* --- end-of-for(irow2) --- */
-/*nsquash = min2(xmin,width2);*/	/* permissible squash */
-nsquash = xmin;				/* permissible squash */
+/*nsmash = min2(xmin,width2);*/		/* permissible smash */
+nsmash = xmin;				/* permissible smash */
 /* -------------------------------------------------------------------------
-Back to caller with #pixels to squash sp1||sp2
+Back to caller with #pixels to smash sp1||sp2
 -------------------------------------------------------------------------- */
 end_of_job:
   /* --- debugging output --- */
   if ( msgfp!=NULL && msglevel >= 99 )	/* display for debugging */
-    { fprintf(msgfp,"rastsquash> nsquash=%d, squashmargin=%d\n",
-      nsquash,squashmargin);
+    { fprintf(msgfp,"rastsmash> nsmash=%d, smashmargin=%d\n",
+      nsmash,smashmargin);
       if ( msglevel >= 999 )		/* also display rasters */
-	{ fprintf(msgfp,"rastsquash>left-hand image...\n");
+	{ fprintf(msgfp,"rastsmash>left-hand image...\n");
 	  if(sp1!=NULL) type_raster(sp1->image,msgfp); /* left image */
-	  fprintf(msgfp,"rastsquash>right-hand image...\n");
+	  fprintf(msgfp,"rastsmash>right-hand image...\n");
 	  if(sp2!=NULL) type_raster(sp2->image,msgfp); } /* right image */
       fflush(msgfp); }
-  return ( nsquash );			/* back with #squash pixels */
-} /* --- end-of-function rastsquash() --- */
+  return ( nsmash );			/* back with #smash pixels */
+} /* --- end-of-function rastsmash() --- */
 
 
 /* ==========================================================================
@@ -1622,6 +1658,7 @@
 subraster *new_subraster(), *sp=NULL;	/* subraster returning accent */
 int	delete_raster(), delete_subraster(); /*free allocated raster on err*/
 int	line_raster(),			/* draws lines */
+	rule_raster(),			/* draw solid boxes */
 	thickness = 1;			/* line thickness */
 /*int	pixval = (pixsz==1? 1 : (pixsz==8?255:(-1)));*/ /*black pixel value*/
 /* --- other working info --- */
@@ -1653,28 +1690,38 @@
     /* --- bar request --- */
     case UNDERBARACCENT:
     case BARACCENT:
-	thickness = height-1;		/* adjust thickness */
+	thickness = 1; /*height-1;*/	/* adjust thickness */
 	if ( accent == BARACCENT )	/* bar is above expression */
-	  line_raster(rp,0,0,0,width-1,thickness); /*leave blank line at bot*/
+	 { row0 = row1 = max2(height-3,0); /* row numbers for overbar */
+	   line_raster(rp,row0,0,row1,width-1,thickness); } /*blanks at bot*/
 	else				/* underbar is below expression */
-	  line_raster(rp,1,0,1,width-1,thickness); /*leave blank line at top*/
+	 { row0 = row1 = min2(2,height-1); /* row numbers for underbar */
+	   line_raster(rp,row0,0,row1,width-1,thickness); } /*blanks at top*/
 	break;
     /* --- dot request --- */
     case DOTACCENT:
 	thickness = height-1;		/* adjust thickness */
-	line_raster(rp,0,width/2,1,(width/2)+1,thickness); /* centered dot */
+	/*line_raster(rp,0,width/2,1,(width/2)+1,thickness);*//*centered dot*/
+	rule_raster(rp,0,(width+1-thickness)/2,thickness,thickness,3); /*box*/
 	break;
     /* --- ddot request --- */
     case DDOTACCENT:
 	thickness = height-1;		/* adjust thickness */
-	col0 = max2(width/3-(thickness-1),0);	/* one-third of width */
-	col1 = min2((2*width)/3+(thickness-1),width-thickness); /*two thirds*/
-	line_raster(rp,0,col0,1,col0+1,thickness); /* set a dot at 1st third*/
-	line_raster(rp,0,col1,1,col1+1,thickness); /* and another at 2nd */
+	col0 = max2((width+1)/3-(thickness/2)-1,0); /* one-third of width */
+	col1 = min2((2*width+1)/3-(thickness/2)+1,width-thickness); /*2/3rds*/
+	if ( col0+thickness >= col1 )	/* dots overlap */
+	  { col0 = max2(col0-1,0);	/* try moving left dot more left */
+	    col1 = min2(col1+1,width-thickness); } /* and right dot right */
+	if ( col0+thickness >= col1 )	/* dots _still_ overlap */
+	  thickness = max2(thickness-1,1); /* so try reducing thickness */
+	/*line_raster(rp,0,col0,1,col0+1,thickness);*//*set dot at 1st third*/
+	/*line_raster(rp,0,col1,1,col1+1,thickness);*//*and another at 2nd*/
+	rule_raster(rp,0,col0,thickness,thickness,3); /*box at 1st third*/
+	rule_raster(rp,0,col1,thickness,thickness,3); /*box at 2nd third*/
 	break;
     /* --- hat request --- */
     case HATACCENT:
-	thickness = (width<=12? 2 : 3);	/* adjust thickness */
+	thickness = 1; /*(width<=12? 2 : 3);*/	/* adjust thickness */
 	line_raster(rp,height-1,0,0,width/2,thickness);    /* / part of hat*/
 	line_raster(rp,0,(width-1)/2,height-1,width-1,thickness); /* \ part*/
 	break;
@@ -1724,7 +1771,8 @@
       if ( (sp=rastack(new_subraster(1,1,pixsz),accsp,1,0,1,3))/*space below*/
       !=  NULL )			/* have tilde with space below it */
 	{ rp = sp->image;		/* "extract" raster with bitmap */
-	  free((void *)sp); }		/* and free subraster "envelope" */
+	  free((void *)sp);		/* and free subraster "envelope" */
+	  leftsymdef = NULL; }		/* so \tilde{x}^2 works properly */
     break;
  } /* --- end-of-outer-switch(accent) --- */
 /* -------------------------------------------------------------------------
@@ -1774,7 +1822,7 @@
 subraster *new_subraster(), *arrowsp=NULL; /* allocate arrow subraster */
 int	rule_raster();			/* draw arrow line */
 int	irow, midrow=height/2;		/* index, midrow is arrowhead apex */
-int	icol, thickness=(height>15?2:1); /* arrowhead thickness and index */
+int	icol, thickness=(height>15?2:2); /* arrowhead thickness and index */
 int	pixval = (pixsz==1? 1 : (pixsz==8?255:(-1))); /* black pixel value */
 int	ipix,				/* raster pixmap[] index */
 	npix = width*height;		/* #pixels malloced in pixmap[] */
@@ -1850,7 +1898,7 @@
 subraster *new_subraster(), *arrowsp=NULL; /* allocate arrow subraster */
 int	rule_raster();			/* draw arrow line */
 int	icol, midcol=width/2;		/* index, midcol is arrowhead apex */
-int	irow, thickness=(width>15?2:1);	/* arrowhead thickness and index */
+int	irow, thickness=(width>15?2:2);	/* arrowhead thickness and index */
 int	pixval = (pixsz==1? 1 : (pixsz==8?255:(-1))); /* black pixel value */
 int	ipix,				/* raster pixmap[] index */
 	npix = width*height;		/* #pixels malloced in pixmap[] */
@@ -1892,7 +1940,7 @@
 	else					/* should have a bytemap */
 	 if ( pixsz == 8 )			/* check pixsz for bytemap */
 	  ((arrowsp->image)->pixmap)[ipix] = pixval; } /*set arrowhead byte*/
-  } /* --- end-of-for(irow) --- */
+  } /* --- end-of-for(icol) --- */
 end_of_job:
   return ( arrowsp );			/*back to caller with arrow or NULL*/
 } /* --- end-of-function uparrow_subraster() --- */
@@ -1913,6 +1961,7 @@
  *		height (I)	int containing number of rows for rule
  *		type (I)	int containing 0 for solid rule,
  *				1 for horizontal dashes, 2 for vertical
+ *				3 for solid rule with corners removed
  * --------------------------------------------------------------------------
  * Returns:	( int )		1 if rule drawn okay,
  *				or 0 for any error.
@@ -1928,8 +1977,8 @@
 /* -------------------------------------------------------------------------
 Allocations and Declarations
 -------------------------------------------------------------------------- */
-int	irow, icol;		/* indexes over rp raster */
-int	ipix,			/* raster pixmap[] index */
+int	irow=0, icol=0;		/* indexes over rp raster */
+int	ipix = 0,		/* raster pixmap[] index */
 	npix = rp->width * rp->height; /* #pixels malloced in rp->pixmap[] */
 int	isfatal = 0;		/* true to abend on out-of-bounds error */
 int	hdash=1, vdash=2;	/* type for horizontal, vertical dashes */
@@ -1942,6 +1991,8 @@
   if ( workingbox != (subraster *)NULL )  /* see if we have a workingbox */
     rp = workingbox->image;	/* use workingbox if possible */
   else return ( 0 );		/* otherwise signal error to caller */
+if ( type == 3 )		/* remove corners of solid box */
+  if ( width<3 || height<3 ) type=0; /* too small to remove corners */
 /* -------------------------------------------------------------------------
 Fill line/box
 -------------------------------------------------------------------------- */
@@ -1952,6 +2003,12 @@
   ipix = irow*rp->width + left - 1;		/*first pixel preceding icol*/
   for ( icol=left; icol<left+width; icol++ )	/* each pixel in scan line */
     {
+    if ( type == 3 )				/* remove corners of box */
+      if ( (irow==top && icol==left)		/* top-left corner */
+      ||   (irow==top && icol>=left+width-1)	/* top-right corner */
+      ||   (irow>=top+height-1 && icol==left)	/* bottom-left corner */
+      ||   (irow>=top+height-1 && icol>=left+width-1) ) /* bottom-right */
+	isdraw = 0;  else isdraw = 1;		/*set isdraw to skip corner*/
     if ( type == hdash )			/*set isdraw for horiz dash*/
       isdraw = (((icol-left)%(dashlen+spacelen)) < dashlen);
     if ( ++ipix >= npix )			/* bounds check failed */
@@ -2008,17 +2065,18 @@
 /* -------------------------------------------------------------------------
 Allocations and Declarations
 -------------------------------------------------------------------------- */
-int	irow, icol,		/* indexes over rp raster */
+int	irow=0, icol=0,		/* indexes over rp raster */
 	locol=col0, hicol=col1,	/* col limits at irow */
 	lorow=row0, hirow=row1;	/* row limits at icol */
-int	ipix,			/* raster pixmap[] index */
-	npix = rp->width * rp->height; /* #pixels malloced in rp->pixmap[] */
+int	width=rp->width, height=rp->height; /* dimensions of input raster */
+int	ipix = 0,		/* raster pixmap[] index */
+	npix = width*height;	/* #pixels malloced in rp->pixmap[] */
 int	isfatal = 0;		/* true to abend on out-of-bounds error */
 int	isline=(row1==row0), isbar=(col1==col0); /*true if slope a=0,\infty*/
 double	dy = row1-row0 /* + (row1>=row0? +1.0 : -1.0) */, /* delta-x */
 	dx = col1-col0 /* + (col1>=col0? +1.0 : -1.0) */, /* delta-y */
 	a= (isbar||isline? 0.0 : dy/dx), /* slope = tan(theta) = dy/dx */
-	xcol, xrow;		/* calculated col at irow, or row at icol */
+	xcol=0, xrow=0;		/* calculated col at irow, or row at icol */
 double	ar = ASPECTRATIO,	/* aspect ratio width/height of one pixel */
 	xwidth= (isline? 0.0 :	/*#pixels per row to get sloped line thcknss*/
 		((double)thickness)*sqrt((dx*dx)+(dy*dy*ar*ar))/fabs(dy*ar)),
@@ -2039,10 +2097,16 @@
    "\t dy,dx=%3.1f,%3.1f, a=%4.3f, xwidth=%4.3f\n",
    row0,col0, row1,col1, thickness,  dy,dx, a, xwidth);
 /* --- check for recursive line drawing --- */
-if ( isrecurse )		/* drawing lines recursively */
-  { line_recurse(rp,(double)row0,(double)col0,
-    (double)row1,(double)col1,thickness);
-    return ( 1 ); }
+if ( isrecurse ) {		/* drawing lines recursively */
+ for ( irow=0; irow<thickness; irow++ )		/* each line 1 pixel thick */
+  { double xrow0=(double)row0, xcol0=(double)col0,
+	xrow1=(double)row1, xcol1=(double)col1;
+    if ( isline ) xrow0 = xrow1 = (double)(row0+irow);
+    else if ( isbar ) xcol0 = xcol1 = (double)(col0+irow);
+    if( xrow0>(-0.001) && xcol0>(-0.001)	/*check line inside raster*/
+    &&  xrow1<((double)(height-1)+0.001) && xcol1<((double)(width-1)+0.001) )
+      line_recurse(rp,xrow0,xcol0,xrow1,xcol1,thickness); }
+ return ( 1 ); }
 /* --- set params for horizontal line or vertical bar --- */
 if ( isline )					/*interpret row as top row*/
   row1 = row0 + (thickness-1);			/* set bottom row for line */
@@ -2588,6 +2652,8 @@
 char	scanline[133];			/* ascii image for one scan line */
 int	scan_width;			/* #chars in scan (<=display_width)*/
 int	irow, locol,hicol=(-1);		/* height index, width indexes */
+raster	*gftobitmap(), *bitmaprp=rp;	/* convert .gf to bitmap if needed */
+int	delete_raster();		/*free bitmap converted for display*/
 /* --------------------------------------------------------------------------
 initialization
 -------------------------------------------------------------------------- */
@@ -2595,7 +2661,7 @@
 if ( fp == (FILE *)NULL ) fp = stdout;	/* default fp to stdout if null */
 /* --- check for ascii string --- */
 if ( isstring				/* pixmap has string, not raster */
-||   (1 && rp->height==1) )		/* infer input rp is a string */
+||   (0 && rp->height==1) )		/* infer input rp is a string */
  {
  char *string = (char *)(rp->pixmap);	/*interpret pixmap as ascii string*/
  int width = strlen(string);		/* #chars in ascii string */
@@ -2609,7 +2675,11 @@
 /* --------------------------------------------------------------------------
 display ascii dump of bitmap image (in segments if display_width < rp->width)
 -------------------------------------------------------------------------- */
-while ( (locol=hicol+1) < rp->width )	/*start where prev segment left off*/
+if ( rp->format == 2			/* input is .gf-formatted */
+||   rp->format == 3 )
+  bitmaprp = gftobitmap(rp);		/* so convert it for display */
+if ( bitmaprp != NULL )			/* if we have image for display */
+ while ( (locol=hicol+1) < rp->width )	/*start where prev segment left off*/
   {
   /* --- set hicol for this pass (locol set above) --- */
   hicol += display_width;		/* show as much as display allows */
@@ -2626,11 +2696,11 @@
 	lopix = irow*rp->width + locol;	/*first pixmap[] pixel in this scan*/
     /* --- set chars in scanline[] based on pixels in rp->pixmap[] --- */
     for ( ipix=0; ipix<scan_width; ipix++ ) /* set each char */
-      if ( rp->pixsz == 1 )		/*' '=0 or '*'=1 to display bitmap*/
-	scanline[ipix] = (getlongbit(rp->pixmap,lopix+ipix)==1? '*':'.');
+      if ( bitmaprp->pixsz == 1 )	/*' '=0 or '*'=1 to display bitmap*/
+	scanline[ipix]=(getlongbit(bitmaprp->pixmap,lopix+ipix)==1? '*':'.');
       else				/* should have a bytemap */
-       if ( rp->pixsz == 8 )		/* double-check pixsz for bytemap */
-	{ int pixval = (int)((rp->pixmap)[lopix+ipix]), /*pixel's byte value*/
+       if ( bitmaprp->pixsz == 8 )	/* double-check pixsz for bytemap */
+	{ int pixval = (int)((bitmaprp->pixmap)[lopix+ipix]), /*byte value*/
 	  ichar = min2(15,pixval/16);	/* index for ' ', '1'...'e', '*' */
 	  scanline[ipix] = display_chars[ichar]; } /*set ' ' for 0-15, etc*/
     /* --- display completed scan line --- */
@@ -2640,6 +2710,10 @@
 /* -------------------------------------------------------------------------
 Back to caller with 1=okay, 0=failed.
 -------------------------------------------------------------------------- */
+if ( rp->format == 2			/* input was .gf-format */
+||   rp->format == 3 )
+  if ( bitmaprp != NULL )		/* and we converted it for display */
+    delete_raster(bitmaprp);		/* no longer needed, so free it */
 return ( 1 );
 } /* --- end-of-function type_raster() --- */
 
@@ -2782,6 +2856,141 @@
 
 
 /* ==========================================================================
+ * Function:	type_pbmpgm ( rp, ptype, file )
+ * Purpose:	Write pbm or pgm image of rp to file
+ * --------------------------------------------------------------------------
+ * Arguments:	rp (I)		ptr to raster struct for which
+ *				a pbm/pgm file is to be written.
+ *		ptype (I)	int containing 1 for pbm, 2 for pgm, or
+ *				0 to determine ptype from values in rp
+ *		file (I)	ptr to null-terminated char string
+ *				containing name of fuke to be written
+ *				(see notes below).
+ * --------------------------------------------------------------------------
+ * Returns:	( int )		total #bytes written,
+ *				or 0 for any error.
+ * --------------------------------------------------------------------------
+ * Notes:     o	(a) If file==NULL, output is written to stdout;
+ *		(b) if *file=='\000' then file is taken as the
+ *		    address of an output buffer to which output
+ *		    is written (and is followed by a terminating
+ *		    '\0' which is not counted in #bytes returned);
+ *		(c) otherwise file is the filename (opened and
+ *		    closed internally) to which output is written,
+ *		    except that any final .ext extension is replaced
+ *		    by .pbm or .pgm depending on ptype.
+ * ======================================================================= */
+/* --- entry point --- */
+int	type_pbmpgm ( raster *rp, int ptype, char *file )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+int	isokay=0, nbytes=0;	/* completion flag, total #bytes written */
+int	irow=0, jcol=0;		/*height(row), width(col) indexes in raster*/
+int	pixmin=9999, pixmax=(-9999), /* min, max pixel value in raster */
+	ngray = 0;		/* #gray scale values */
+FILE	/* *fopen(), */ *fp=NULL; /* pointer to output file (or NULL) */
+char	outline[1024], outfield[256], /* output line, field */
+	cr[16] = "\n\000";	/* cr at end-of-line */
+int	maxlinelen = 70;	/* maximum allowed line length */
+int	pixfrac=6;		/* use (pixmax-pixmin)/pixfrac as step */
+static	char
+	*suffix[] = { NULL, ".pbm", ".pgm" },	/* file.suffix[ptype] */
+	*magic[] = { NULL, "P1", "P2" },	/*identifying "magic number"*/
+	*mode[] = { NULL, "w", "w" };		/* fopen() mode[ptype] */
+/* -------------------------------------------------------------------------
+check input, determine grayscale,  and set up output file if necessary
+-------------------------------------------------------------------------- */
+/* --- check input args --- */
+if ( rp == NULL ) goto end_of_job;	/* no input raster provided */
+if ( ptype != 0 )			/* we'll determine ptype below */
+ if ( ptype<1 || ptype>2 ) goto end_of_job; /*invalid output graphic format*/
+/* --- determine largest (and smallest) value in pixmap --- */
+for ( irow=0; irow<rp->height; irow++ )	/* for each row, top-to-bottom */
+ for ( jcol=0; jcol<rp->width; jcol++ )	/* for each col, left-to-right */
+  { int	pixval = getpixel(rp,irow,jcol);  /* value of pixel at irow,jcol */
+    pixmin = min2(pixmin,pixval);	/* new minimum */
+    pixmax = max2(pixmax,pixval); }	/* new maximum */
+ngray = 1 + (pixmax-pixmin);		/* should be 2 for b/w bitmap */
+if ( ptype == 0 )			/* caller wants us to set ptype */
+  ptype = (ngray>=3?2:1);		/* use grayscale if >2 shades */
+/* --- open output file if necessary --- */
+if ( file == NULL ) fp = stdout;	/*null ptr signals output to stdout*/
+else if ( *file != '\000' ) {		/* explicit filename provided, so...*/
+  char	fname[512], *pdot=NULL;		/* file.ext, ptr to last . in fname*/
+  strncpy(fname,file,255);		/* local copy of file name */
+  fname[255] = '\000';			/* make sure it's null terminated */
+  if ( (pdot=strrchr(fname,'.')) == NULL ) /*no extension on original name*/
+    strcat(fname,suffix[ptype]);	/* so add extension */
+  else					/* we already have an extension */
+    strcpy(pdot,suffix[ptype]);		/* so replace original extension */
+  if ( (fp = fopen(fname,mode[ptype]))	/* open output file */
+  ==   (FILE *)NULL ) goto end_of_job;	/* quit if failed to open */
+  } /* --- ens-of-if(*file!='\0') --- */
+/* -------------------------------------------------------------------------
+format and write header
+-------------------------------------------------------------------------- */
+/* --- format header info --- */
+*outline = '\000';			/* initialize line buffer */
+strcat(outline,magic[ptype]);		/* begin file with "magic number" */
+strcat(outline,cr);			/* followed by cr to end line */
+sprintf(outfield,"%d %d",rp->width,rp->height); /* format width and height */
+strcat(outline,outfield);		/* add width and height to header */
+strcat(outline,cr);			/* followed by cr to end line */
+if ( ptype == 2 )			/* need max grayscale value */
+  { sprintf(outfield,"%d",pixmax);	/* format maximum pixel value */
+    strcat(outline,outfield);		/* add max value to header */
+    strcat(outline,cr); }		/* followed by cr to end line */
+/* --- write header to file or memory buffer --- */
+if ( fp == NULL )			/* if we have no open file... */
+  strcat(file,outline);			/* add header to caller's buffer */
+else					/* or if we have an open file... */
+  if ( fputs(outline,fp)		/* try writing header to open file */
+  ==   EOF ) goto end_of_job;		/* return with error if failed */
+nbytes += strlen(outline);		/* bump output byte count */
+/* -------------------------------------------------------------------------
+format and write pixels
+-------------------------------------------------------------------------- */
+*outline = '\000';			/* initialize line buffer */
+for ( irow=0; irow<=rp->height; irow++ ) /* for each row, top-to-bottom */
+ for ( jcol=0; jcol<rp->width; jcol++ )	{ /* for each col, left-to-right */
+  /* --- format value at irow,jcol--- */
+  *outfield = '\000';			/* init empty field */
+  if ( irow < rp->height ) {		/* check row index */
+    int	pixval = getpixel(rp,irow,jcol);  /* value of pixel at irow,jcol */
+    if ( ptype == 1 )			/* pixval must be 1 or 0 */
+      pixval = (pixval>pixmin+((pixmax-pixmin)/pixfrac)?1:0);
+    sprintf(outfield,"%d ",pixval); }	/* format pixel value */
+  /* --- write line if this value won't fit on it (or last line) --- */
+  if ( strlen(outline)+strlen(outfield)+strlen(cr) >= maxlinelen /*won't fit*/
+  ||   irow >= rp->height ) {		/* force writing last line */
+    strcat(outline,cr);			/* add cr to end current line */
+    if ( fp == NULL )			/* if we have no open file... */
+      strcat(file,outline);		/* add header to caller's buffer */
+    else				/* or if we have an open file... */
+      if ( fputs(outline,fp)		/* try writing header to open file */
+      ==   EOF ) goto end_of_job;	/* return with error if failed */
+    nbytes += strlen(outline);		/* bump output byte count */
+    *outline = '\000';			/* re-initialize line buffer */
+    } /* --- end-of-if(strlen>=maxlinelen) --- */
+  if ( irow >= rp->height ) break;	/* done after writing last line */
+  /* --- concatanate value to line -- */
+  strcat(outline,outfield);		/* concatanate value to line */
+  } /* --- end-of-for(jcol,irow) --- */
+isokay = 1;				/* signal successful completion */
+/* -------------------------------------------------------------------------
+Back to caller with total #bytes written, or 0=failed.
+-------------------------------------------------------------------------- */
+end_of_job:
+  if ( fp != NULL			/* output written to an open file */
+  &&   fp != stdout )			/* and it's not just stdout */
+    fclose(fp);				/* so close file before returning */
+  return ( (isokay?nbytes:0) );		/*back to caller with #bytes written*/
+} /* --- end-of-function type_pbmpgm() --- */
+
+
+/* ==========================================================================
  * Function:	cstruct_chardef ( cp, fp, col1 )
  * Purpose:	Emit a C struct of cp on fp, starting in col1.
  * --------------------------------------------------------------------------
@@ -2813,7 +3022,7 @@
 sprintf(field,"{ %3d,%5d,\n", cp->charnum,cp->location);  /*char#,location*/
 emit_string ( fp, col1, field, "character number, location");
 /* --- toprow, topleftcol,   botrow, botleftcol  --- */
-sprintf(field,"  %3d,%2d,   %3d,%2d,\n",	/* format... */
+sprintf(field,"  %3d,%2d,  %3d,%2d,\n",		/* format... */
   cp->toprow,cp->topleftcol,			/* toprow, topleftcol, */
   cp->botrow,cp->botleftcol);			/* and botrow, botleftcol */
 emit_string ( fp, col1, field, "topleft row,col, and botleft row,col");
@@ -2855,9 +3064,9 @@
 /* -------------------------------------------------------------------------
 emit width and height
 -------------------------------------------------------------------------- */
-sprintf(field,"{ %2d,   %3d,%2d,   %s\n", /* format width,height,pixsz */
-	rp->width,rp->height,rp->pixsz,typecast);
-emit_string ( fp, col1, field, "widthxheight, pixsz,map...");
+sprintf(field,"{ %2d,  %3d,%2d,%2d, %s\n", /* format width,height,pixsz */
+	rp->width,rp->height,rp->format,rp->pixsz,typecast);
+emit_string ( fp, col1, field, "width,ht, fmt,pixsz,map...");
 /* -------------------------------------------------------------------------
 emit bitmap and closing brace, and return to caller
 -------------------------------------------------------------------------- */
@@ -2894,7 +3103,8 @@
 /* -------------------------------------------------------------------------
 Allocations and Declarations
 -------------------------------------------------------------------------- */
-int	ibyte, nbytes=pixmapsz(rp);	/* #bytes in raster */
+int	ibyte,				/* pixmap[ibyte] index */
+	nbytes = pixbytes(rp);		/*#bytes in bitmap or .gf-formatted*/
 char	stub[64]="                                ";/* col1 leading blanks */
 int	linewidth = 64,			/* (roughly) rightmost column */
 	colwidth = (isstr? 4:5);	/* #cols required for each byte */
@@ -3000,6 +3210,85 @@
 
 
 /* ==========================================================================
+ * Function:	gftobitmap ( gf )
+ * Purpose:	convert .gf-like pixmap to bitmap image
+ * --------------------------------------------------------------------------
+ * Arguments:	gf (I)		raster * to struct in .gf-format
+ * --------------------------------------------------------------------------
+ * Returns:	( raster * )	image-format raster * if successful,
+ *				or NULL for any error.
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+raster	*gftobitmap ( raster *gf )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+raster	*new_raster(), *rp=NULL;	/* image raster retuned to caller */
+int	width=0, height=0, totbits=0;	/* gf->width, gf->height, #bits */
+int	format=0, icount=0, ncounts=0,	/*.gf format, count index, #counts*/
+	ibit=0, bitval=0;		/* bitmap index, bit value */
+int	isrepeat = 1,			/* true to process repeat counts */
+	repeatcmds[2] = {255,15},	/*opcode for repeat/duplicate count*/
+	nrepeats=0, irepeat=0,		/* scan line repeat count,index */
+	wbits = 0;			/* count bits to width of scan line*/
+/* -------------------------------------------------------------------------
+initialization
+-------------------------------------------------------------------------- */
+/* --- check args --- */
+if ( gf == NULL ) goto end_of_job;	/* input raster not provided */
+format = gf->format;			/* 2 or 3 */
+if ( format!=2 && format!=3 ) goto end_of_job; /* invalid raster format */
+ncounts = gf->pixsz;			/*pixsz is really #counts in pixmap*/
+/* --- allocate output raster with proper dimensions for bitmap --- */
+width=gf->width;  height=gf->height;	/* dimensions of raster */
+if ( (rp = new_raster(width,height,1))	/* allocate new raster and bitmap */
+==   NULL ) goto end_of_job;		/* quit if failed to allocate */
+totbits = width*height;			/* total #bits in image */
+/* -------------------------------------------------------------------------
+fill bitmap
+-------------------------------------------------------------------------- */
+for ( icount=0,bitval=0; icount<ncounts; icount++ )
+  {
+  int	nbits = (int)(getbyfmt(format,gf->pixmap,icount)); /*#bits to set*/
+  if ( isrepeat				/* we're proxessing repeat counts */
+  &&   nbits == repeatcmds[format-2] )	/* and repeat opcode found */
+   if ( nrepeats == 0 )			/* recursive repeat is error */
+    { nrepeats = (int)(getbyfmt(format,gf->pixmap,icount+1));/*repeat count*/
+      nbits = (int)(getbyfmt(format,gf->pixmap,icount+2)); /*#bits to set*/
+      icount += 2; }			/* bump byte/nibble count */
+   else					/* some internal error occurred */
+    if ( msgfp!=NULL && msglevel>=1 )	/* report error */
+     fprintf(msgfp,"gftobitmap> found embedded repeat command\n");
+  if ( 0 )
+    fprintf(stdout,
+    "gftobitmap> icount=%d bitval=%d nbits=%d ibit=%d totbits=%d\n",
+    icount,bitval,nbits,ibit,totbits);
+  for ( ; nbits>0; nbits-- )		/* count down */
+    { if ( ibit >= totbits ) goto end_of_job; /* overflow check */
+      for ( irepeat=0; irepeat<=nrepeats; irepeat++ )
+       if ( bitval == 1 )		/* set pixel */
+	{ setlongbit(rp->pixmap,(ibit+irepeat*width)); }
+       else				/* clear pixel */
+	{ unsetlongbit(rp->pixmap,(ibit+irepeat*width)); }
+      if ( nrepeats > 0 ) wbits++;	/* count another repeated bit */
+      ibit++; }				/* bump bit index */
+  bitval = 1-bitval;			/* flip bit value */
+  if ( wbits >= width ) {		/* completed repeats */
+   ibit += nrepeats*width;		/*bump bit count past repeated scans*/
+   if ( wbits > width )			/* out-of alignment error */
+    if ( msgfp!=NULL && msglevel>=1 )	/* report error */
+     fprintf(msgfp,"gftobitmap> width=%d wbits=%d\n",width,wbits);
+   wbits = nrepeats = 0; }		/* reset repeat counts */
+  } /* --- end-of-for(icount) --- */
+end_of_job:
+  return ( rp );			/* back to caller with image */
+} /* --- end-of-function gftobitmap() --- */
+
+
+/* ==========================================================================
  * Function:	get_symdef ( symbol )
  * Purpose:	returns mathchardef struct for symbol
  * --------------------------------------------------------------------------
@@ -3030,22 +3319,27 @@
 	deflen, minlen=9999;		/*length of shortest matching symdef*/
 int	/*alnumsym = (symlen==1 && isalnum(*symbol)),*/ /*alphanumeric sym*/
 	alphasym = (symlen==1 && isalpha(*symbol)); /* or alpha symbol */
+int	family = fontinfo[fontnum].family; /* current font family */
 static	char *displaysyms[][2] = {	/*xlate to Big sym for \displaystyle*/
+	/* --- see table on page 536 in TLC2 --- */
 	{"\\int",	"\\Bigint"},
 	{"\\oint",	"\\Bigoint"},
 	{"\\sum",	"\\Bigsum"},
 	{"\\prod",	"\\Bigprod"},
 	{"\\coprod",	"\\Bigcoprod"},
-	{"\\cup",	"\\Bigcup"},
-	{"\\sqcup",	"\\Bigsqcup"},
-	{"\\cap",	"\\Bigcap"},
-	{"\\sqcap",	"\\sqcap"},	/* don't have \Bigsqcap */
-	{"\\odot",	"\\Bigodot"},
-	{"\\oplus",	"\\Bigoplus"},
-	{"\\otimes",	"\\Bigotimes"},
-	{"\\uplus",	"\\Biguplus"},
-	{"\\wedge",	"\\Bigwedge"},
-	{"\\vee",	"\\Bigvee"},
+	/* --- must be 'big' when related to similar binary operators --- */
+	{"\\bigcup",	"\\Bigcup"},
+	{"\\bigsqcup",	"\\Bigsqcup"},
+	{"\\bigcap",	"\\Bigcap"},
+	/*{"\\bigsqcap", "\\sqcap"},*/	/* don't have \Bigsqcap */
+	{"\\bigodot",	"\\Bigodot"},
+	{"\\bigoplus",	"\\Bigoplus"},
+	{"\\bigominus",	"\\ominus"},
+	{"\\bigotimes",	"\\Bigotimes"},
+	{"\\bigoslash",	"\\oslash"},
+	{"\\biguplus",	"\\Biguplus"},
+	{"\\bigwedge",	"\\Bigwedge"},
+	{"\\bigvee",	"\\Bigvee"},
 	{NULL, NULL} };
 /* -------------------------------------------------------------------------
 If in \displaystyle mode, first xlate int to Bigint, etc.
@@ -3070,26 +3364,33 @@
   if ( symdefs[idef].symbol == NULL ) break; /* reached end-of-table */
   else					/* check against caller's symbol */
     if ( strncmp(symbol,symdefs[idef].symbol,symlen) == 0 ) /* found match */
-     if ( symdefs[idef].handler != NULL	/* mode irrelevant for directives */
-     ||  istext==0			/* mathmode, so use first match */
-     || (istext==1 && symdefs[idef].family==CMR10)   /*textmode && rm text*/
-     || (istext==2 && symdefs[idef].family==CMMI10)  /*textmode && it text*/
-     || (istext==3 && symdefs[idef].family==BBOLD10) /*textmode && bb text*/
-     || (istext!=3 && !alphasym) )	/* not bb and not alpha */
+     if (fontnum==0			/* mathmode, so check every match */
+     || (0 && istextmode && (!alphasym	/* text mode and not alpha symbol */
+	|| symdefs[idef].handler!=NULL))   /* or text mode and directive */
+     || (symdefs[idef].family==family	/* have correct family */
+	&& symdefs[idef].handler==NULL) )  /* and not a handler collision */
+#if 0
+     || (fontnum==1 && symdefs[idef].family==CMR10)   /*textmode && rm text*/
+     || (fontnum==2 && symdefs[idef].family==CMMI10)  /*textmode && it text*/
+     || (fontnum==3 && symdefs[idef].family==BBOLD10  /*textmode && bb text*/
+	&& symdefs[idef].handler==NULL)
+     || (fontnum==4 && symdefs[idef].family==CMMIB10  /*textmode && bf text*/
+	&& symdefs[idef].handler==NULL) )
+#endif
       if ( (deflen=strlen(symdefs[idef].symbol)) < minlen ) /*new best match*/
 	{ bestdef = idef;		/* save index of new best match */
 	  if ( (minlen = deflen)	/* and save its len for next test */
 	  ==  symlen ) break; }		/*perfect match, so return with it*/
 if ( bestdef < 0 )			/* failed to look up symbol */
-  if ( istext != 0 )			/* we're in a restricted font mode */
-    { int wastext = istext;		/* save current mode */
-      mathchardef *symdef = NULL;	/* lookup result with istext=0 */
-      istext = 0;			/*try to look up symbol in any font*/
-      symdef = get_symdef(symbol);	/* repeat lookup with istext=0 */
-      istext = wastext;			/* reset font mode */
-      return symdef; }			/* caller gets istext=0 lookup */
+  if ( fontnum != 0 )			/* we're in a restricted font mode */
+    { int oldfontnum = fontnum;		/* save current font family */
+      mathchardef *symdef = NULL;	/* lookup result with fontnum=0 */
+      fontnum = 0;			/*try to look up symbol in any font*/
+      symdef = get_symdef(symbol);	/* repeat lookup with fontnum=0 */
+      fontnum = oldfontnum;		/* reset font family */
+      return symdef; }			/* caller gets fontnum=0 lookup */
 if ( msgfp!=NULL && msglevel>=999 )	/* debugging output */
-  { fprintf(msgfp,"get_symdefs> symbol=%s matches symtable[%d]=%s\n",
+  { fprintf(msgfp,"get_symdef> symbol=%s matches symtable[%d]=%s\n",
     symbol,bestdef,(bestdef<0?"NotFound":symdefs[bestdef].symbol));
     fflush(msgfp); }
 return ( (bestdef<0? NULL : &(symdefs[bestdef])) ); /*NULL or best symdef[]*/
@@ -3102,7 +3403,7 @@
  * --------------------------------------------------------------------------
  * Arguments:	symdef (I)	mathchardef *  corresponding to symbol
  *				whose corresponding chardef is wanted
- *		size (I)	int containing 0-4 for desired size
+ *		size (I)	int containing 0-5 for desired size
  * --------------------------------------------------------------------------
  * Returns:	( chardef * )	pointer to struct defining symbol at size,
  *				or NULL for any error
@@ -3197,9 +3498,9 @@
  * Purpose:	returns new subraster ptr containing
  *		data for symdef at given size
  * --------------------------------------------------------------------------
- * Arguments:	symdef (I)	mathchardef *  corresponding to symbol
- *				whose corresponding chardef is wanted
- *		size (I)	int containing 0-4 for desired size
+ * Arguments:	symdef (I)	mathchardef *  corresponding to symbol whose
+ *				corresponding chardef subraster is wanted
+ *		size (I)	int containing 0-5 for desired size
  * --------------------------------------------------------------------------
  * Returns:	( subraster * )	pointer to struct defining symbol at size,
  *				or NULL for any error
@@ -3215,6 +3516,8 @@
 chardef	*get_chardef(), *gfdata=NULL;	/* chardef struct for symdef,size */
 int	get_baseline();			/* baseline of gfdata */
 subraster *new_subraster(), *sp=NULL;	/* subraster containing gfdata */
+raster	*bitmaprp=NULL, *gftobitmap();	/* convert .gf-format to bitmap */
+int	delete_subraster();		/* in case gftobitmap() fails */
 int	aasupsamp(),			/*antialias char with supersampling*/
 	grayscale=256;			/* aasupersamp() parameters */
 /* -------------------------------------------------------------------------
@@ -3225,11 +3528,23 @@
  if ( (sp=new_subraster(0,0,0))		/* allocate subraster "envelope" */
  !=   NULL )				/* and check that we succeeded */
   {
-  sp->type = CHARASTER;			/* static character raster */
+  raster *image = &(gfdata->image);	/* ptr to chardef's bitmap or .gf */
+  int format = image->format;		/* 1=bitmap, else .gf */
   sp->symdef = symdef;			/* replace NULL with caller's arg */
   sp->size = size;			/*replace default with caller's size*/
   sp->baseline = get_baseline(gfdata);	/* get baseline of character */
-  sp->image    = &(gfdata->image);	/* store ptr to its bitmap */
+  if ( format == 1 )			/* already a bitmap */
+   { sp->type = CHARASTER;		/* static char raster */
+     sp->image = image; }		/* store ptr to its bitmap */
+  else					/* need to convert .gf-to-bitmap */
+   if ( (bitmaprp = gftobitmap(image))	/* convert */
+   !=   (raster *)NULL )		/* successful */
+    { sp->type = IMAGERASTER;		/* allocated raster will be freed */
+      sp->image = bitmaprp; }		/* store ptr to converted bitmap */
+   else					/* conversion failed */
+    { delete_subraster(sp);		/* free unneeded subraster */
+      sp = (subraster *)NULL;		/* signal error to caller */
+      goto end_of_job; }		/* quit */
   if ( issupersampling )		/* antialias character right here */
     {
     raster *aa = NULL;			/* antialiased char raster */
@@ -3245,7 +3560,8 @@
 	sp->type = IMAGERASTER; }	/* character is an image raster */
     } /* --- end-of-if(issupersampling) --- */
   } /* --- end-of-if(sp!=NULL) --- */
-if ( msgfp!=NULL && msglevel>=999 )
+end_of_job:
+ if ( msgfp!=NULL && msglevel>=999 )
   { fprintf(msgfp,"get_charsubraster> requested symbol=\"%s\" baseline=%d\n",
     symdef->symbol, (sp==NULL?0:sp->baseline)); fflush(msgfp); }
 return ( sp );				/* back to caller */
@@ -3253,6 +3569,42 @@
 
 
 /* ==========================================================================
+ * Function:	get_symsubraster ( symbol, size )
+ * Purpose:	returns new subraster ptr containing
+ *		data for symbol at given size
+ * --------------------------------------------------------------------------
+ * Arguments:	symbol (I)	char *  corresponding to symbol
+ *				whose corresponding subraster is wanted
+ *		size (I)	int containing 0-5 for desired size
+ * --------------------------------------------------------------------------
+ * Returns:	( subraster * )	pointer to struct defining symbol at size,
+ *				or NULL for any error
+ * --------------------------------------------------------------------------
+ * Notes:     o	just combines get_symdef() and get_charsubraster()
+ * ======================================================================= */
+/* --- entry point --- */
+subraster *get_symsubraster ( char *symbol, int size )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+subraster *sp=NULL, *get_charsubraster(); /* subraster containing gfdata */
+mathchardef *symdef=NULL, *get_symdef(); /* mathchardef lookup for symbol */
+/* -------------------------------------------------------------------------
+look up mathchardef for symbol
+-------------------------------------------------------------------------- */
+if ( symbol != NULL )			/* user supplied input symbol */
+  symdef = get_symdef(symbol);		/*look up corresponding mathchardef*/
+/* -------------------------------------------------------------------------
+look up chardef for mathchardef and wrap a subraster structure around data
+-------------------------------------------------------------------------- */
+if ( symdef != NULL )			/* lookup succeeded */
+  sp = get_charsubraster(symdef,size);	/* so get symbol data in subraster */
+return ( sp );				/* back to caller with sp or NULL */
+} /* --- end-of-function get_symsubraster() --- */
+
+
+/* ==========================================================================
  * Function:	get_baseline ( gfdata )
  * Purpose:	returns baseline for a chardef struct
  * --------------------------------------------------------------------------
@@ -3367,7 +3719,7 @@
  if ( defsym == NULL ) break;		/* reached end-of-table */
  else					/* check against caller's symbol */
   if ( family<0 || deffam == family	/* if explicitly in caller's family*/
-  ||  (family==CMSYEX && (deffam==CMSY10||deffam==CMEX10)) )
+  ||  (family==CMSYEX && (deffam==CMSY10||deffam==CMEX10||deffam==STMARY10)) )
     {
     strcpy(lcsymbol,defsym);		/* local copy of symdefs[] symbol */
     if ( isunesc && *lcsymbol=='\\' )	/* ignored leading \ in symbol */
@@ -3404,10 +3756,14 @@
 -------------------------------------------------------------------------- */
 if ( bestdef >= 0 )			/* found a best fit for caller */
   sp = get_charsubraster(&(symdefs[bestdef]),bestsize); /* best subraster */
-if ( sp==NULL && height-bigheight>5 )	/* try to construct delim */
+if ( (sp==NULL && height-bigheight>5)	/* try to construct delim */
+||   bigdef < 0 )			/* delim not in font tables */
   sp = make_delim(symbol,(iswidth?-height:height)); /* try to build delim */
 if ( sp==NULL && bigdef>=0 )		/* just give biggest to caller */
   sp = get_charsubraster(&(symdefs[bigdef]),bigsize); /* biggest subraster */
+if ( msgfp!=NULL && msglevel>=99 )
+    fprintf(msgfp,"get_delim> symbol=%.50s, height=%d family=%d isokay=%s\n",
+    (symbol==NULL?"null":symbol),height,family,(sp==NULL?"fail":"success"));
 return ( sp );
 } /* --- end-of-function get_delim() --- */
 
@@ -3436,18 +3792,30 @@
 -------------------------------------------------------------------------- */
 subraster *sp = (subraster *)NULL,	/* subraster returned to caller */
 	*new_subraster();		/* allocate subraster */
+subraster *get_symsubraster(),		/* look up delim pieces in cmex10 */
+	*symtop=NULL, *symbot=NULL, *symmid=NULL, *symbar=NULL,	/* pieces */
+	*topsym=NULL, *botsym=NULL, *midsym=NULL, *barsym=NULL,	/* +filler */
+	*rastack(), *rastcat();		/* stack pieces, concat filler */
+int	isdrawparen = 0;		/*1=draw paren, 0=build from pieces*/
 raster	*rasp = (raster *)NULL;		/* sp->image */
 int	isokay=0, delete_subraster();	/* set true if delimiter drawn ok */
-int	pixsz = 1;			/* pixels are one bit each */
+int	pixsz = 1,			/* pixels are one bit each */
+	symsize = 0;			/* size arg for get_symsubraster() */
 int	thickness = 1;			/* drawn lines are one pixel thick */
 int	aspectratio = 8;		/* default height/width for parens */
 int	iswidth = 0,			/*true if width specified by height*/
 	width = height;			/* #pixels width (e.g., of ellipse)*/
-char	*lp=NULL,  *rp=NULL, *strchr(),	/* check symbol for left or right */
-	*lp2=NULL, *rp2=NULL;		/* synonym for lp,rp */
+char	*lp=NULL,  *rp=NULL,		/* check symbol for left or right */
+	*lp2=NULL, *rp2=NULL,		/* synonym for lp,rp */
+	*lp3=NULL, *rp3=NULL,		/* synonym for lp,rp */
+	*lp4=NULL, *rp4=NULL;		/* synonym for lp,rp */
 int	circle_raster(),		/* ellipse for ()'s in sp->image */
 	rule_rsater(),			/* horizontal or vertical lines */
 	line_raster();			/* line between two points */
+subraster *uparrow_subraster();		/* up/down arrows */
+int	isprealloc = 1;			/*pre-alloc subraster, except arrow*/
+int	oldsmashmargin = smashmargin,	/* save original smashmargin */
+	wascatspace = iscatspace;	/* save original iscatspace */
 /* -------------------------------------------------------------------------
 initialization
 -------------------------------------------------------------------------- */
@@ -3460,51 +3828,196 @@
 if ( iswidth ) height =  (width+(aspectratio+1)/2)/aspectratio;
 else            width = (height+(aspectratio+1)/2)/aspectratio;
 if ( strchr(symbol,'=') != NULL		/* left or right || bracket wanted */
-||   strstr(symbol,"\\|") != NULL )	/* same || in standard tex notation*/
-  width = max2(width,5);		/* need space between two |'s */
+||   strstr(symbol,"\\|") != NULL	/* same || in standard tex notation*/
+||   strstr(symbol,"dbl") != NULL )	/* semantic bracket with ||'s */
+  width = max2(width,6);		/* need space between two |'s */
 if ( width < 2 ) width=2;		/* set min width */
 if ( strchr(symbol,'(') != NULL		/* if left ( */
 ||   strchr(symbol,')') != NULL )	/* or right ) paren wanted */
-  width = (3*width)/2;			/* adjust width */
+  { width = (3*width)/2;		/* adjust width */
+    if ( !isdrawparen ) isprealloc=0; }	/* don't prealloc if building */
+if ( strchr(symbol,'/') != NULL		/* left / */
+||   strstr(symbol,"\\\\") != NULL	/* or \\ for right \ */
+||   strstr(symbol,"backsl") != NULL )	/* or \backslash for \ */
+  width = max2(height/3,5);
+if ( strstr(symbol,"arrow") != NULL )	/* arrow wanted */
+  { width = min2(height/3,20);		/* adjust width */
+    isprealloc = 0; }			/* don't preallocate subraster */
+if ( strchr(symbol,'{') != NULL		/* if left { */
+||   strchr(symbol,'}') != NULL )	/* or right } brace wanted */
+  { isprealloc = 0; }			/* don't preallocate */
 /* --- allocate and initialize subraster for constructed delimiter --- */
-if ( (sp=new_subraster(width,height,pixsz)) /* allocate new subraster */
-==   NULL )  goto end_of_job;		/* quit if failed */
-/* --- initialize delimiter subraster parameters --- */
-sp->type = IMAGERASTER;			/* image */
-sp->symdef = NULL;			/* not applicable for image */
-sp->baseline = height/2 + 2;		/* is a little above center good? */
-sp->size = NORMALSIZE;			/* size (probably unneeded) */
-rasp = sp->image;			/* pointer to image in subraster */
+if ( isprealloc )			/* pre-allocation wanted */
+ { if ( (sp=new_subraster(width,height,pixsz)) /* allocate new subraster */
+   ==   NULL )  goto end_of_job;	/* quit if failed */
+   /* --- initialize delimiter subraster parameters --- */
+   sp->type = IMAGERASTER;		/* image */
+   sp->symdef = NULL;			/* not applicable for image */
+   sp->baseline = height/2 + 2;		/* is a little above center good? */
+   sp->size = NORMALSIZE;		/* size (probably unneeded) */
+   rasp = sp->image; }			/* pointer to image in subraster */
 /* -------------------------------------------------------------------------
 ( ) parens
 -------------------------------------------------------------------------- */
 if ( (lp=strchr(symbol,'(')) != NULL	/* left ( paren wanted */
 ||   (rp=strchr(symbol,')')) != NULL )	/* right ) paren wanted */
   {
-  int	mywidth = min2(width,20);	/* max width for ()'s */
-  circle_raster ( rasp,			/* embedded raster image */
+  if ( isdrawparen ) {			/* draw the paren */
+   int	mywidth = min2(width,20);	/* max width for ()'s */
+   circle_raster ( rasp,		/* embedded raster image */
 	0, 0,				/* row0,col0 are upper-left corner */
 	height-1, mywidth-1,		/* row1,col1 are lower-right */
 	thickness,			/* line thickness is 1 pixel */
 	(rp==NULL?"23":"41") );		/* "1234" quadrants to be drawn */
-  isokay = 1;				/* set flag */
+   isokay = 1; }			/* set flag */
+  else {
+   int	isleft = (lp!=NULL?1:0);	/* true for left, false for right */
+   char	*parentop = (isleft?"\\leftparentop":"\\rightparentop"),
+	*parenbot = (isleft?"\\leftparenbot":"\\rightparenbot"),
+	*parenbar = (isleft?"\\leftparenbar":"\\rightparenbar");
+   int	baseht=0, barht=0,		/* height of base=top+bot, bar */
+	ibar=0, nbars=0;		/* bar index, #bars between top&bot*/
+   int	largestsize = min2(2,LARGESTSIZE), /* largest size for parens */
+	topfill=(isleft?0:0), botfill=(isleft?0:0),
+	barfill=(isleft?0:7);		/* alignment fillers */
+   /* --- get pieces at largest size smaller than total height --- */
+   for ( symsize=largestsize; symsize>=0; symsize-- ) /*largest to smallest*/
+    {
+    /* --- get pieces at current test size --- */
+    isokay = 1;				/* check for all pieces */
+    if ( (symtop=get_symsubraster(parentop,symsize)) == NULL ) isokay=0;
+    if ( (symbot=get_symsubraster(parenbot,symsize)) == NULL ) isokay=0;
+    if ( (symbar=get_symsubraster(parenbar,symsize)) == NULL ) isokay=0;
+    /* --- check sum of pieces against total desired height --- */
+    if ( isokay ) {			/* all pieces retrieved */
+      baseht = (symtop->image)->height + (symbot->image)->height; /*top+bot*/
+      barht  = (symbar->image)->height;	/* bar height */
+      if ( baseht < height+5 ) break;	/* largest base that's not too big */
+      if ( symsize < 1 ) break;		/* or smallest available base */
+      } /* --- end-of-if(isokay) --- */
+    /* --- free test pieces that were too big --- */
+    if ( symtop != NULL ) delete_subraster(symtop); /* free top */
+    if ( symbot != NULL ) delete_subraster(symbot); /* free bot */
+    if ( symbar != NULL ) delete_subraster(symbar); /* free bar */
+    isokay = 0;				/* nothing available */
+    if ( symsize < 1 ) break;		/* leave isokay=0 after smallest */
+    } /* --- end-of-for(symsize) --- */
+   /* --- construct brace from pieces --- */
+   if ( isokay ) {			/* we have the pieces */
+    /* --- add alignment fillers --- */
+    smashmargin = iscatspace = 0;	/*turn off rastcat smashing,space*/
+    topsym = (topfill>0?rastcat(new_subraster(topfill,1,1),symtop,3):symtop);
+    botsym = (botfill>0?rastcat(new_subraster(botfill,1,1),symbot,3):symbot);
+    barsym = (barfill>0?rastcat(new_subraster(barfill,1,1),symbar,3):symbar);
+    smashmargin = oldsmashmargin;	/* reset smashmargin */
+    iscatspace = wascatspace;		/* reset iscatspace */
+    /* --- #bars needed between top and bot --- */
+    nbars = (barht<1?0:max2(0,1+(height-baseht)/barht)); /* #bars needed */
+    /* --- stack pieces --- */
+    sp = topsym;			/* start with top piece */
+    if ( nbars > 0 )			/* need nbars between top and bot */
+      for ( ibar=1; ibar<=nbars; ibar++ ) sp = rastack(barsym,sp,1,0,0,2);
+    sp = rastack(botsym,sp,1,0,0,3);	/* bottom below bars or middle */
+    delete_subraster(barsym);		/* barsym no longer needed */
+    } /* --- end-of-if(isokay) --- */
+   } /* --- end-of-if/else(isdrawparen) --- */
   } /* --- end-of-if(left- or right-() paren wanted) --- */
 /* -------------------------------------------------------------------------
+{ } braces
+-------------------------------------------------------------------------- */
+else
+ if ( (lp=strchr(symbol,'{')) != NULL	/* left { brace wanted */
+ ||   (rp=strchr(symbol,'}')) != NULL )	/* right } brace wanted */
+  {
+  int	isleft = (lp!=NULL?1:0);	/* true for left, false for right */
+  char	*bracetop = (isleft?"\\leftbracetop":"\\rightbracetop"),
+	*bracebot = (isleft?"\\leftbracebot":"\\rightbracebot"),
+	*bracemid = (isleft?"\\leftbracemid":"\\rightbracemid"),
+	*bracebar = (isleft?"\\leftbracebar":"\\rightbracebar");
+  int	baseht=0, barht=0,		/* height of base=top+bot+mid, bar */
+	ibar=0, nbars=0;		/* bar index, #bars above,below mid*/
+  int	largestsize = min2(2,LARGESTSIZE), /* largest size for braces */
+	topfill=(isleft?4:0), botfill=(isleft?4:0),
+	midfill=(isleft?0:4), barfill=(isleft?4:4); /* alignment fillers */
+  /* --- get pieces at largest size smaller than total height --- */
+  for ( symsize=largestsize; symsize>=0; symsize-- ) /*largest to smallest*/
+    {
+    /* --- get pieces at current test size --- */
+    isokay = 1;				/* check for all pieces */
+    if ( (symtop=get_symsubraster(bracetop,symsize)) == NULL ) isokay=0;
+    if ( (symbot=get_symsubraster(bracebot,symsize)) == NULL ) isokay=0;
+    if ( (symmid=get_symsubraster(bracemid,symsize)) == NULL ) isokay=0;
+    if ( (symbar=get_symsubraster(bracebar,symsize)) == NULL ) isokay=0;
+    /* --- check sum of pieces against total desired height --- */
+    if ( isokay ) {			/* all pieces retrieved */
+      baseht = (symtop->image)->height + (symbot->image)->height
+	+ (symmid->image)->height;	/* top+bot+mid height */
+      barht = (symbar->image)->height;	/* bar height */
+      if ( baseht < height+5 ) break;	/* largest base that's not too big */
+      if ( symsize < 1 ) break;		/* or smallest available base */
+      } /* --- end-of-if(isokay) --- */
+    /* --- free test pieces that were too big --- */
+    if ( symtop != NULL ) delete_subraster(symtop); /* free top */
+    if ( symbot != NULL ) delete_subraster(symbot); /* free bot */
+    if ( symmid != NULL ) delete_subraster(symmid); /* free mid */
+    if ( symbar != NULL ) delete_subraster(symbar); /* free bar */
+    isokay = 0;				/* nothing available */
+    if ( symsize < 1 ) break;		/* leave isokay=0 after smallest */
+    } /* --- end-of-for(symsize) --- */
+  /* --- construct brace from pieces --- */
+  if ( isokay ) {			/* we have the pieces */
+    /* --- add alignment fillers --- */
+    smashmargin = iscatspace = 0;	/*turn off rastcat smashing,space*/
+    topsym = (topfill>0?rastcat(new_subraster(topfill,1,1),symtop,3):symtop);
+    botsym = (botfill>0?rastcat(new_subraster(botfill,1,1),symbot,3):symbot);
+    midsym = (midfill>0?rastcat(new_subraster(midfill,1,1),symmid,3):symmid);
+    barsym = (barfill>0?rastcat(new_subraster(barfill,1,1),symbar,3):symbar);
+    smashmargin = oldsmashmargin;	/* reset smashmargin */
+    iscatspace = wascatspace;		/* reset iscatspace */
+    /* --- #bars needed on each side of mid piece --- */
+    nbars = (barht<1?0:max2(0,1+(height-baseht)/barht/2)); /*#bars per side*/
+    /* --- stack pieces --- */
+    sp = topsym;			/* start with top piece */
+    if ( nbars > 0 )			/* need nbars above middle */
+      for ( ibar=1; ibar<=nbars; ibar++ ) sp = rastack(barsym,sp,1,0,0,2);
+    sp = rastack(midsym,sp,1,0,0,3);	/*mid after top or bars*/
+    if ( nbars > 0 )			/* need nbars below middle */
+      for ( ibar=1; ibar<=nbars; ibar++ ) sp = rastack(barsym,sp,1,0,0,2);
+    sp = rastack(botsym,sp,1,0,0,3);	/* bottom below bars or middle */
+    delete_subraster(barsym);		/* barsym no longer needed */
+    } /* --- end-of-if(isokay) --- */
+  } /* --- end-of-if(left- or right-{} brace wanted) --- */
+/* -------------------------------------------------------------------------
 [ ] brackets
 -------------------------------------------------------------------------- */
 else
  if ( (lp=strchr(symbol,'[')) != NULL	/* left [ bracket wanted */
- ||   (rp=strchr(symbol,']')) != NULL )	/* right ] bracket wanted */
-  {
-  /* --- rule_raster ( rasp, top, left, width, height, type=0 ) --- */
-  int	mywidth = min2(width,12);	/* max width for horizontal bars */
-  thickness = 1;			/* set lines 1 or 2 pixels thick */
-  rule_raster(rasp, 0,0, mywidth,thickness, 0); /* top horizontal bar */
-  rule_raster(rasp, height-thickness,0, mywidth,thickness, 0); /* bottom */
-  if ( lp != NULL )			/* left [ bracket wanted */
+ ||   (rp=strchr(symbol,']')) != NULL	/* right ] bracket wanted */
+ ||   (lp2=strstr(symbol,"lceil")) != NULL /* left ceiling wanted */
+ ||   (rp2=strstr(symbol,"rceil")) != NULL /* right ceiling wanted */
+ ||   (lp3=strstr(symbol,"lfloor")) != NULL /* left floor wanted */
+ ||   (rp3=strstr(symbol,"rfloor")) != NULL /* right floor wanted */
+ ||   (lp4=strstr(symbol,"llbrack")) != NULL /* left semantic bracket */
+ ||   (rp4=strstr(symbol,"rrbrack")) != NULL ) /* right semantic bracket */
+  {
+  /* --- use rule_raster ( rasp, top, left, width, height, type=0 ) --- */
+  int	mywidth = min2(width,12),	/* max width for horizontal bars */
+	wthick = 1;			/* thickness of top.bottom bars */
+  thickness = (height<25?1:2);		/* set lines 1 or 2 pixels thick */
+  if ( lp2!=NULL || rp2!=NULL || lp3!=NULL || rp3 !=NULL ) /*ceil or floor*/
+    wthick = thickness;			/* same thickness for top/bot bar */
+  if ( lp3==NULL && rp3==NULL )		/* set top bar if floor not wanted */
+    rule_raster(rasp, 0,0, mywidth,wthick, 0); /* top horizontal bar */
+  if ( lp2==NULL && rp2==NULL )		/* set bot bar if ceil not wanted */
+    rule_raster(rasp, height-wthick,0, mywidth,thickness, 0); /* bottom */
+  if ( lp!=NULL || lp2!=NULL || lp3!=NULL || lp4!=NULL ) /* left bracket */
    rule_raster(rasp, 0,0, thickness,height, 0); /* left vertical bar */
-  if ( rp != NULL )			/* right ] bracket wanted */
+  if ( lp4 != NULL )			/* 2nd left vertical bar needed */
+   rule_raster(rasp, 0,thickness+1, 1,height, 0); /* 2nd left vertical bar */
+  if ( rp!=NULL || rp2!=NULL || rp3!=NULL || rp4!=NULL ) /* right bracket */
    rule_raster(rasp, 0,mywidth-thickness, thickness,height, 0); /* right */
+  if ( rp4 != NULL )			/* 2nd right vertical bar needed */
+   rule_raster(rasp, 0,mywidth-thickness-2, 1,height, 0); /*2nd right vert*/
   isokay = 1;				/* set flag */
   } /* --- end-of-if(left- or right-[] bracket wanted) --- */
 /* -------------------------------------------------------------------------
@@ -3514,18 +4027,69 @@
  if ( (lp=strchr(symbol,'<')) != NULL	/* left < bracket wanted */
  ||   (rp=strchr(symbol,'>')) != NULL )	/* right > bracket wanted */
   {
-  /* --- line_raster ( rasp,  row0, col0,  row1, col1,  thickness ) --- */
-  int	mywidth = min2(width,12);	/* max width for brackets */
-  thickness = 1;			/* set line pixel thickness */
+  /* --- use line_raster( rasp,  row0, col0,  row1, col1,  thickness ) --- */
+  int	mywidth = min2(width,12),	/* max width for brackets */
+	mythick = 1;			/* all lines one pixel thick */
+  thickness = (height<25?1:2);		/* set line pixel thickness */
   if ( lp != NULL )			/* left < bracket wanted */
-    { line_raster(rasp,height/2,0,0,mywidth-1,thickness);
-      line_raster(rasp,height/2,0,height-1,mywidth-1,thickness); }
+    { line_raster(rasp,height/2,0,0,mywidth-1,mythick);
+      if ( thickness>1 )
+	line_raster(rasp,height/2,1,0,mywidth-1,mythick);
+      line_raster(rasp,height/2,0,height-1,mywidth-1,mythick);
+      if ( thickness>1 )
+	line_raster(rasp,height/2,1,height-1,mywidth-1,mythick); }
   if ( rp != NULL )			/* right > bracket wanted */
-    { line_raster(rasp,height/2,mywidth-1,0,0,thickness);
-      line_raster(rasp,height/2,mywidth-1,height-1,0,thickness); }
+    { line_raster(rasp,height/2,mywidth-1,0,0,mythick);
+      if ( thickness>1 )
+	line_raster(rasp,height/2,mywidth-2,0,0,mythick);
+      line_raster(rasp,height/2,mywidth-1,height-1,0,mythick);
+      if ( thickness>1 )
+	line_raster(rasp,height/2,mywidth-2,height-1,0,mythick); }
   isokay = 1;				/* set flag */
   } /* --- end-of-if(left- or right-<> bracket wanted) --- */
 /* -------------------------------------------------------------------------
+/ \ delimiters
+-------------------------------------------------------------------------- */
+else
+ if ( (lp=strchr(symbol,'/')) != NULL	/* left /  wanted */
+ ||   (rp=strstr(symbol,"\\\\")) != NULL /* right \ wanted */
+ ||   (rp2=strstr(symbol,"backsl")) != NULL ) /* right \ wanted */
+  {
+  /* --- use line_raster( rasp,  row0, col0,  row1, col1,  thickness ) --- */
+  int	mywidth = width;		/* max width for / \ */
+  thickness = 1;			/* set line pixel thickness */
+  if ( lp != NULL )			/* left / wanted */
+    line_raster(rasp,0,mywidth-1,height-1,0,thickness);
+  if ( rp!=NULL || rp2!=NULL )		/* right \ wanted */
+    line_raster(rasp,0,0,height-1,mywidth-1,thickness);
+  isokay = 1;				/* set flag */
+  } /* --- end-of-if(left- or right-/\ delimiter wanted) --- */
+/* -------------------------------------------------------------------------
+arrow delimiters
+-------------------------------------------------------------------------- */
+else
+ if ( strstr(symbol,"arrow") != NULL )	/* arrow delimiter wanted */
+  {
+  /* --- use uparrow_subraster(width,height,pixsz,drctn,isBig) --- */
+  int	mywidth = width;		/* max width for / \ */
+  int	isBig = (strstr(symbol,"Up")!=NULL /* isBig if we have an Up */
+		|| strstr(symbol,"Down")!=NULL); /* or a Down */
+  int	drctn = +1;			/* init for uparrow */
+  if ( strstr(symbol,"down")!=NULL	/* down if we have down */
+  ||   strstr(symbol,"Down")!=NULL )	/* or Down */
+   { drctn = (-1);			/* reset direction to down */
+     if ( strstr(symbol,"up")!=NULL	/* updown if we have up or Up */
+     ||   strstr(symbol,"Up")!=NULL )	/* and down or Down */
+      drctn = 0; }			/* reset direction to updown */
+  sp = uparrow_subraster(mywidth,height,pixsz,drctn,isBig);
+  if ( sp != NULL )
+   { sp->type = IMAGERASTER;		/* image */
+     sp->symdef = NULL;			/* not applicable for image */
+     sp->baseline = height/2 + 2;	/* is a little above center good? */
+     sp->size = NORMALSIZE;		/* size (probably unneeded) */
+     isokay = 1; }			/* set flag */
+  } /* --- end-of-if(arrow delimiter wanted) --- */
+/* -------------------------------------------------------------------------
 \- for | | brackets or \= for || || brackets
 -------------------------------------------------------------------------- */
 else
@@ -3538,13 +4102,13 @@
   int	midcol = width/2;		/* middle col, left of mid if even */
   if ( rp  != NULL			/* left or right || bracket wanted */
   ||   rp2 != NULL )			/* or || in standard tex notation */
-   { thickness = 1;			/* each | of || one pixel thick */
+   { thickness = (height<75?1:2);	/* each | of || 1 or 2 pixels thick*/
      rule_raster(rasp, 0,max2(0,midcol-2), thickness,height, 0); /* left */
      rule_raster(rasp, 0,min2(width,midcol+2), thickness,height, 0); }
   else					/*nb, lp2 spuriously set if rp2 set*/
    if ( lp  != NULL			/* left or right | bracket wanted */
    ||   lp2 != NULL )			/* ditto for synomym */
-    { thickness = 1;			/* set | two pixels thick */
+    { thickness = (height<75?1:2);	/* set | 1 or 2 pixels thick */
       rule_raster(rasp, 0,midcol, thickness,height, 0); } /*mid vertical bar*/
   isokay = 1;				/* set flag */
   } /* --- end-of-if(left- or right-[] bracket wanted) --- */
@@ -3552,8 +4116,11 @@
 back to caller
 -------------------------------------------------------------------------- */
 end_of_job:
+  if ( msgfp!=NULL && msglevel>=99 )
+    fprintf(msgfp,"make_delim> symbol=%.50s, isokay=%d\n",
+    (symbol==NULL?"null":symbol),isokay);
   if ( !isokay )			/* don't have requested delimiter */
-    { delete_subraster(sp);		/* so free unneeded structure */
+    { if (sp!=NULL) delete_subraster(sp); /* so free unneeded structure */
       sp = NULL; }			/* and signal error to caller */
   return ( sp );			/*back to caller with delim or NULL*/
 } /* --- end-of-function make_delim() --- */
@@ -3639,10 +4206,9 @@
   *ptoken++ = *expression++;			/*copy non-alpha, bump ptrs*/
 else {						/* normal alpha \sequence */
   /* --- respect spaces in text mode, except first space after \escape --- */
-  if ( istext > 0 )				/* in \rm or \it text mode */
-   if ( istext != 3 )				/* but not \mathbb */
-    if ( isthischar(*expression,WHITEDELIM) )	/* delim follows \sequence */
-     expression++; }				/* so flush delim */
+  if ( istextmode )				/* in \rm or \it text mode */
+   if ( isthischar(*expression,WHITEDELIM) )	/* delim follows \sequence */
+    expression++; }				/* so flush delim */
 *ptoken = '\000';				/* null-terminate token */
 /* --- back to caller --- */
 end_of_job:
@@ -3708,9 +4274,10 @@
 Allocations and Declarations
 -------------------------------------------------------------------------- */
 char	*texchar();		/*next char (or \sequence) from expression*/
-char	*leftptr, leftdelim[32] = "(\000", /* left( found in expression */
-	rightdelim[32] = ")\000"; /* and matching right) */
+char	*leftptr, leftdelim[256] = "(\000", /* left( found in expression */
+	rightdelim[256] = ")\000"; /* and matching right) */
 char	*origexpression=expression, *origsubexpr=subexpr; /*original inputs*/
+char	*strtexchr(), *texleft(); /* check for \left, and get it */
 int	gotescape = 0,		/* true if leading char of expression is \ */
 	prevescape = 0;		/* while parsing, true if preceding char \ */
 int	isbrace();		/* check for left,right braces */
@@ -3731,6 +4298,16 @@
 /* --- check for escape --- */
 if ( isthischar(*expression,ESCAPE) )		/* expression is escaped */
   gotescape = 1;				/* so set flag accordingly */
+/* --- check for \left...\right --- */
+if ( gotescape )				/* begins with \ */
+ if ( memcmp(expression+1,"left",4) )		/* and followed by left */
+  if ( strchr(left,'l') != NULL )		/* caller wants \left's */
+   if ( strtexchr(expression,"\\left") == expression ) /*expression=\left...*/
+    { char *pright = texleft(expression,subexpr,maxsubsz, /* find ...\right*/
+	(isdelim?NULL:leftdelim),rightdelim);
+      if ( isdelim ) strcat(subexpr,rightdelim); /* caller wants delims */
+      return ( pright );			/*back to caller past \right*/
+    } /* --- end-of-if(expression=="\\left") --- */
 /* --- if first char isn't left{ or script, just return it to caller --- */
 if ( !isbrace(expression,left,isescape) )	/* not a left{ */
   if ( !isthischar(*expression,SCRIPTS) )	/* and not a script */
@@ -3811,6 +4388,112 @@
 
 
 /* ==========================================================================
+ * Function:	texleft (expression,subexpr,maxsubsz,ldelim,rdelim)
+ * Purpose:	scans expression, starting after opening \left,
+ *		and returning ptr after matching closing \right.
+ *		Everything between is returned in subexpr, if given.
+ *		Likewise, if given, ldelim returns delimiter after \left
+ *		and rdelim returns delimiter after \right.
+ *		If ldelim is given, the returned subexpr doesn't include it.
+ *		If rdelim is given, the returned pointer is after that delim.
+ * --------------------------------------------------------------------------
+ * Arguments:	expression (I)	char * to first char of null-terminated
+ *				string immediately following opening \left
+ *		subexpr (O)	char * to null-terminated string returning
+ *				either everything between balanced
+ *				\left ... \right.  If leftdelim given,
+ *				subexpr does _not_ contain that delimiter.
+ *		maxsubsz (I)	int containing max #bytes returned
+ *				in subexpr buffer (0 means unlimited)
+ *		ldelim (O)	char * returning delimiter following
+ *				opening \left
+ *		rdelim (O)	char * returning delimiter following
+ *				closing \right
+ * --------------------------------------------------------------------------
+ * Returns:	( char * )	ptr to the first char of expression
+ *				past closing \right, or past closing
+ *				right delimiter if rdelim!=NULL,
+ *				or NULL for any error.
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+char	*texleft ( char *expression, char *subexpr, int maxsubsz,
+	char *ldelim, char *rdelim )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+char	*texchar(),			/* get delims after \left,\right */
+	*strtexchr(), *pright=expression; /* locate matching \right */
+static	char left[16]="\\left", right[16]="\\right"; /* tex delimiters */
+int	sublen = 0;			/* #chars between \left...\right */
+/* -------------------------------------------------------------------------
+initialization
+-------------------------------------------------------------------------- */
+/* --- init output --- */
+if ( subexpr != NULL ) *subexpr = '\000'; /* init subexpr, if given */
+if ( ldelim  != NULL ) *ldelim  = '\000'; /* init ldelim,  if given */
+if ( rdelim  != NULL ) *rdelim  = '\000'; /* init rdelim,  if given */
+/* --- check args --- */
+if ( expression == NULL ) goto end_of_job; /* no input supplied */
+if ( *expression == '\000' ) goto end_of_job; /* nothing after \left */
+/* --- determine left delimiter  --- */
+if ( ldelim != NULL )			/* caller wants left delim */
+ { skipwhite(expression);		/* interpret \left ( as \left( */
+   expression = texchar(expression,ldelim); } /*delim from expression*/
+/* -------------------------------------------------------------------------
+locate \right balancing opening \left
+-------------------------------------------------------------------------- */
+/* --- first \right following \left --- */
+if ( (pright=strtexchr(expression,right)) /* look for \right after \left */
+!=   NULL ) {				/* found it */
+ /* --- find matching \right by pushing past any nested \left's --- */
+ char *pleft = expression;		/* start after first \left( */
+ while ( 1 ) {				/*break when matching \right found*/
+  /* -- locate next nested \left if there is one --- */
+  if ( (pleft=strtexchr(pleft,left))	/* find next \left */
+  ==   NULL ) break;			/*no more, so matching \right found*/
+  pleft += strlen(left);		/* push ptr past \left token */
+  if ( pleft >= pright ) break;		/* not nested if \left after \right*/
+  /* --- have nested \left, so push forward to next \right --- */
+  if ( (pright=strtexchr(pright+strlen(right),right)) /* find next \right */
+  ==   NULL ) break;			/* ran out of \right's */
+  } /* --- end-of-while(1) --- */
+ } /* --- end-of-if(pright!=NULL) --- */
+/* --- set subexpression length, push pright past \right --- */
+if ( pright != (char *)NULL )		/* found matching \right */
+ { sublen = (int)(pright-expression);	/* #chars between \left...\right */
+   pright += strlen(right); }		/* so push pright past \right */
+/* -------------------------------------------------------------------------
+get rightdelim and subexpr between \left...\right
+-------------------------------------------------------------------------- */
+/* --- get delimiter following \right --- */
+if ( rdelim != NULL )			/* caller wants right delim */
+ if ( pright == (char *)NULL )		/* assume \right. at end of exprssn*/
+  { strcpy(rdelim,".");			/* set default \right. */
+    sublen = strlen(expression);	/* use entire remaining expression */
+    pright = expression + sublen; }	/* and push pright to end-of-string*/
+ else					/* have explicit matching \right */
+  { skipwhite(pright);			/* interpret \right ) as \right) */
+    pright = texchar(pright,rdelim);	/* pull delim from expression */
+    if ( *rdelim == '\000' ) strcpy(rdelim,"."); } /* or set \right. */
+/* --- get subexpression between \left...\right --- */
+if ( sublen > 0 )			/* have subexpr */
+ if ( subexpr != NULL ) {		/* and caller wants it */
+  if ( maxsubsz > 0 ) sublen = min2(sublen,maxsubsz-1); /* max buffer size */
+  memcpy(subexpr,expression,sublen);	/* stuff between \left...\right */
+  subexpr[sublen] = '\000'; }		/* null-terminate subexpr */
+end_of_job:
+  if ( msglevel>=99 && msgfp!=NULL )
+    { fprintf(msgfp,"texleft> ldelim=%s, rdelim=%s, subexpr=%.128s\n",
+      (ldelim==NULL?"none":ldelim),(rdelim==NULL?"none":rdelim),
+      (subexpr==NULL?"none":subexpr)); fflush(msgfp); }
+  return ( pright );
+} /* --- end-of-function texleft --- */
+
+
+/* ==========================================================================
  * Function:	texscripts ( expression, subscript, superscript, which )
  * Purpose:	scans expression, returning subscript and/or superscript
  *		if expression is of the form _x^y or ^{x}_{y},
@@ -3846,16 +4529,16 @@
 char	*texsubexpr();		/* next subexpression from expression */
 int	gotsub=0, gotsup=0;	/* check that we don't eat, e.g., x_1_2 */
 /* -------------------------------------------------------------------------
-init "scripts" and skip leading whitespace
+init "scripts"
 -------------------------------------------------------------------------- */
-/* --- skip leading whitespace and check for end-of-string --- */
-*subscript = *superscript = '\000';		/* init in case no scripts */
-skipwhite(expression);				/* leading whitespace gone */
-if ( *expression == '\000' ) return(expression); /* nothing left to scan */
+if ( subscript != NULL ) *subscript = '\000';	/*init in case no subscript*/
+if ( superscript!=NULL ) *superscript = '\000';	/*init in case no super*/
 /* -------------------------------------------------------------------------
 get subscript and/or superscript from expression
 -------------------------------------------------------------------------- */
-while ( expression != NULL )
+while ( expression != NULL ) {
+  skipwhite(expression);			/* leading whitespace gone */
+  if ( *expression == '\000' ) return(expression); /* nothing left to scan */
   if ( isthischar(*expression,SUBSCRIPT)	/* found _ */
   &&   (which==1 || which>2 ) )			/* and caller wants it */
     { if ( gotsub				/* found 2nd subscript */
@@ -3871,6 +4554,7 @@
 	expression = texsubexpr(expression+1,superscript,0,"{","}",0,0); }
     else					/* neither _ nor ^ */
       return ( expression );			/*return ptr past "scripts"*/
+  } /* --- end-of-while(expression!=NULL) --- */
 return ( expression );
 } /* --- end-of-function texscripts() --- */
 
@@ -4140,10 +4824,14 @@
    LaTeX Macro  #args,default   template...
    ------------------------------------------ */
    { "\\lvec",	"2n",	"{#2_1,\\cdots,#2_{#1}}" },
+   { "\\grave", "1",	"{\\stackrel{\\Huge\\gravesym}{#1}}" }, /* \grave */
+   { "\\acute", "1",	"{\\stackrel{\\Huge\\acutesym}{#1}}" }, /* \acute */
+   { "\\check", "1",	"{\\stackrel{\\Huge\\checksym}{#1}}" }, /* \check */
+   { "\\breve", "1",	"{\\stackrel{\\Huge\\brevesym}{#1}}" }, /* \breve */
    { "\\overset", NULL,	"\\stackrel" },		/* just an alias */
    { "\\underset", "2",	"\\relstack{#2}{#1}" },	/* reverse args */
    /* ---------------------------------------
-     html    termchar   LaTeX equivalent...
+    html char termchar  LaTeX equivalent...
    --------------------------------------- */
    { "&quot",	";",	"\"" },		/* &quot; is first, &#034; */
    { "&amp",	";",	"&" },
@@ -4168,30 +4856,52 @@
    { "&atilde",	";",	"{\\rm~\\tilde~a}" },
    { "&yuml",	";",	"{\\rm~\\ddot~y}" },  /* &yuml; is last, &#255; */
    /* ---------------------------------------
+    html tag  termchar  LaTeX equivalent...
+   --------------------------------------- */
+   { "<br>",	NULL,	"\\\\" },
+   { "<br/>",	NULL,	"\\\\" },
+   { "<Br>",	NULL,	"\\\\" },
+   { "<Br/>",	NULL,	"\\\\" },
+   { "<BR>",	NULL,	"\\\\" },
+   { "<BR/>",	NULL,	"\\\\" },
+   /* ---------------------------------------
      LaTeX   termchar   mimeTeX equivalent...
    --------------------------------------- */
    { "\\AA",	NULL,	"{\\rm~A\\limits^{-1$o}}" },
    { "\\aa",	NULL,	"{\\rm~a\\limits^{-1$o}}" },
    { "\\bmod",	NULL,	"{\\hspace2{\\rm~mod}\\hspace2}" },
    { "\\vdots",	NULL,	"{\\raisebox3{\\rotatebox{90}{\\ldots}}}" },
+   { "\\dots",	NULL,	"{\\cdots}" },
    { "\\cdots",	NULL,	"{\\raisebox3{\\ldots}}" },
    { "\\ldots",	NULL,	"{\\fs4.\\hspace1.\\hspace1.}" },
    { "\\ddots",	NULL,	"{\\fs4\\raisebox8.\\hspace1\\raisebox4.\\hspace1.}"},
    { "\\notin",	NULL,	"{\\not\\in}" },
    { "\\neq",	NULL,	"{\\not=}" },
+   { "\\ne",	NULL,	"{\\not=}" },
    { "\\hbar",	NULL,	"{\\compose~h{{\\fs{-1}-\\atop\\vspace3}}}" },
    { "\\angle",	NULL, "{\\compose{\\hspace{3}\\lt}{\\circle(10,15;-80,80)}}"},
+   { "\\textcelsius", NULL, "{\\textdegree C}"},
+   { "\\textdegree", NULL, "{\\Large^{^{\\tiny\\mathbf o}}}"},
    { "\\cr",	NULL,	"\\\\" },
+   { "\\iiint",	NULL,	"{\\int\\int\\int}\\limits" },
    { "\\iint",	NULL,	"{\\int\\int}\\limits" },
    { "\\Bigiint", NULL,	"{\\Bigint\\Bigint}\\limits" },
+   { "\\bigsqcap",NULL,	"{\\fs{+4}\\sqcap}" },
    { "!`",	NULL,	"{\\raisebox{-2}{\\rotatebox{180}{!}}}" },
    { "?`",	NULL,	"{\\raisebox{-2}{\\rotatebox{180}{?}}}" },
+   { "^\'",	"embed","\'" }, /* avoid ^^ when re-xlating \' below */
+   { "\'\'\'\'","embed","^{\\fs{-1}\\prime\\prime\\prime\\prime}" },
+   { "\'\'\'",	"embed","^{\\fs{-1}\\prime\\prime\\prime}" },
+   { "\'\'",	"embed","^{\\fs{-1}\\prime\\prime}" },
+   { "\'",	"embed","^{\\fs{-1}\\prime}" },
    { "\\rightleftharpoons",NULL,"{\\rightharpoonup\\atop\\leftharpoondown}" },
+   { "\\therefore",NULL,"{\\Huge\\raisebox{-4}{.\\atop.\\,.}}" },
    { "\\LaTeX",	NULL,	"{\\rm~L\\raisebox{3}{\\fs{-1}A}\\TeX}" },
    { "\\TeX",	NULL,	"{\\rm~T\\raisebox{-3}{E}X}" },
    { "\\cyan",	NULL,	"{\\reverse\\red\\reversebg}" },
    { "\\magenta",NULL,	"{\\reverse\\green\\reversebg}" },
    { "\\yellow",NULL,	"{\\reverse\\blue\\reversebg}" },
+   { "\\cancel",NULL,	"\\Not" },
    { "\\hhline",NULL,	"\\Hline" },
    { "\\Hline", NULL,	"\\hline\\,\\\\\\hline" },
    /* ---------------------------------------------------------
@@ -4202,7 +4912,7 @@
    { "cos",	"1",	"{\\cos{#1}}" },
    { "asin",	"1",	"{\\sin^{-1}{#1}}" },
    { "acos",	"1",	"{\\cos^{-1}{#1}}" },
-   { "exp",	"1",	"{e^{#1}}" },
+   { "exp",	"1",	"{{\\rm~e}^{#1}}" },
    { "det",	"1",	"{\\left|{#1}\\right|}" },
    /* ---------------------------------------
    LaTeX Constant    termchar   value...
@@ -4277,6 +4987,7 @@
   {
   int	htmllen = strlen(htmlsym);	/* length of escape, _without_ ; */
   int	isalgebra = isalpha((int)(*htmlsym)); /* leading char alphabetic */
+  int	isembedded = 0;			/* true to xlate even if embedded */
   char	*aleft="{([<|", *aright="})]>|"; /*left,right delims for alg syntax*/
   char	*args = symbols[isymbol].args,	/* number {}-args, optional []-arg */
 	*htmlterm = args,		/*if *args nonumeric, then html term*/
@@ -4288,9 +4999,13 @@
      { htmlterm = NULL;			/* if so, then we have no htmlterm */
        *abuff = *args;  abuff[1] = '\000'; /* #args char in ascii buffer */
        nargs = atoi(abuff); }		/* interpret #args to numeric */
+    else if ( strncmp(args,"embed",5) == 0 ) /* xlate even if embedded */
+     { htmlterm = NULL;			/* if so, then we have no htmlterm */
+       isembedded = 1 ; }		/* turn on embedded flag */
   expptr = expression;			/* re-start search at beginning */
   while ( (tokptr=strstr(expptr,htmlsym)) != NULL ) /* found another sym */
-    { char termchar = *(tokptr+htmllen); /* char terminating html sequence */
+    { char termchar = *(tokptr+htmllen), /* char terminating html sequence */
+           prevchar = (tokptr==expptr?' ':*(tokptr-1)); /*char preceding html*/
       int escapelen = htmllen;		/* total length of escape sequence */
       *abuff = '\000';			/* default to empty string */
       if ( latexsym != NULL )		/* table has .latex xlation */
@@ -4298,10 +5013,16 @@
 	strcpy(abuff,latexsym);		/* so get local copy */
       if ( htmlterm != NULL )		/* sequence may have terminator */
 	escapelen += (isthischar(termchar,htmlterm)?1:0); /*add terminator*/
-      if ( isalpha((int)termchar) )	/*we just have prefix of longer sym*/
+      if ( !isembedded )		/* don't xlate embedded sequence */
+       if ( isalpha((int)termchar) )	/*we just have prefix of longer sym*/
 	{ expptr = tokptr+htmllen;	/* just resume search after prefix */
 	  continue; }			/* but don't replace it */
+      if ( isembedded )			/* for embedded sequence */
+	if ( isthischar(prevchar,ESCAPE) ) /* don't xlate escaped char */
+	  { expptr = tokptr+htmllen;	/*just resume search after literal*/
+	    continue; }			/* but don't replace it */
       if ( !isthischar(*htmlsym,ESCAPE)	/* our symbol isn't escaped */
+      &&   isalpha(*htmlsym)		/* and our symbol starts with alpha*/
       &&   !isthischar(*htmlsym,"&") )	/* and not an &html; special char */
        if ( tokptr != expression )	/* then if we're past beginning */
 	if ( isthischar(*(tokptr-1),ESCAPE) /*and if inline symbol escaped*/
@@ -4527,7 +5248,7 @@
 /* -------------------------------------------------------------------------
 Allocations and Declarations
 -------------------------------------------------------------------------- */
-char	*strstr(), delim, *ptexchr=(char *)NULL;  /* ptr returned to caller*/
+char	delim, *ptexchr=(char *)NULL;	/* ptr returned to caller*/
 char	*pstring = string;		/* start or continue up search here*/
 int	texchrlen = (texchr==NULL?0:strlen(texchr)); /* #chars in texchr */
 /* -------------------------------------------------------------------------
@@ -4660,14 +5381,14 @@
 int	delete_subraster();		/* free everything before returning*/
 /*int	pixsz = 1;*/			/*default #bits per pixel, 1=bitmap*/
 /* --- global values saved/restored at each recursive iteration --- */
-int	wastext = istext,		/* initial istext mode flag */
-	wasstring = isstring,		/* initial isstring mode flag */
+int	wasstring = isstring,		/* initial isstring mode flag */
 	wasdisplaystyle = isdisplaystyle, /*initial displaystyle mode flag*/
+	oldfontnum = fontnum,		/* initial font family */
 	oldfontsize = fontsize,		/* initial fontsize */
 	olddisplaysize = displaysize,	/* initial \displaystyle size */
 	oldshrinkfactor = shrinkfactor,	/* initial shrinkfactor */
-	oldsquashmargin = squashmargin,	/* initial squashmargin */
-	oldissquashdelta = issquashdelta, /* initial issquashdelta */
+	oldsmashmargin = smashmargin,	/* initial smashmargin */
+	oldissmashdelta = issmashdelta, /* initial issmashdelta */
 	*oldworkingparam = workingparam; /* initial working parameter */
 subraster *oldworkingbox = workingbox,	/* initial working box */
 	*oldleftexpression = leftexpression; /*left half rasterized so far*/
@@ -4724,20 +5445,20 @@
     if ( (leftsymdef=symdef=get_symdef(chartoken)) /*mathchardef for token*/
     ==  NULL )				/* lookup failed */
      { char literal[512] = "[?]";	/*display for unrecognized literal*/
-       int  wastext = istext;		/* error display in default mode */
+       int  oldfontnum = fontnum;	/* error display in default mode */
        if ( msgfp!=NULL && msglevel >= 29 ) /* display unrecognized symbol */
 	 { fprintf(msgfp,"rasterize> get_symdef() failed for \"%s\"\n",
 	   chartoken); fflush(msgfp); }
        sp = (subraster *)NULL;		/* init to signal failure */
        if ( warninglevel < 1 ) continue; /* warnings not wanted */
-       istext = 0;			/* reset from \mathbb, etc */
+       fontnum = 0;			/* reset from \mathbb, etc */
        if ( isthischar(*chartoken,ESCAPE) ) /* we got unrecognized \escape */
 	{ /* --- so display literal {\rm~[\backslash~chartoken?]} ---  */
 	  strcpy(literal,"{\\rm~[\\backslash~"); /* init token */
 	  strcat(literal,chartoken+1);	/* add chars following leading \ */
 	  strcat(literal,"?]}"); }	/* add closing brace */
        sp = rasterize(literal,size-1);	/* rasterize literal token */
-       istext = wastext;		/* reset text mode */
+       fontnum = oldfontnum;		/* reset font family */
        if ( sp == (subraster *)NULL ) continue; } /*flush if rasterize fails*/
     else /* --- check if we have special handler to process this token --- */
      if ( symdef->handler != NULL )	/* have a handler for this token */
@@ -4773,7 +5494,9 @@
   if ( natoms < 1			/* nothing previous to concat */
   ||   expraster == NULL		/* or previous was complete error */
   ||   isreplaceleft )			/* or we're replacing previous */
-    { expraster = subrastcpy(sp);	/* so just copy static CHARASTER */
+    { if ( 1 && expraster!=NULL )	/* probably replacing left */
+	delete_subraster(expraster);	/* so first free original left */
+      expraster = subrastcpy(sp);	/* copy static CHARASTER or left */
       isreplaceleft = 0; }		/* reset replacement flag */
   else					/*we've already built up atoms so...*/
    if ( sp != NULL )			/* ...if we have a new component */
@@ -4796,15 +5519,21 @@
       if ( expraster != (subraster *)NULL ) /* i.e., if natoms>0 */
 	type_raster(expraster->image,msgfp); /* display completed raster */
       fflush(msgfp); }			/* flush msgfp buffer */
+  /* --- set final raster buffer --- */
+  if ( 1 && expraster != (subraster *)NULL ) /* have an expression */
+    { expraster->type = IMAGERASTER;	/* set type to constructed image */
+      if ( istextmode )			/* but in text mode */
+        expraster->type = blanksignal;	/* set type to avoid smash */
+      expraster->size = fontsize; }	/* set original input font size */
   /* --- restore flags/values to original saved values --- */
-  istext = wastext;			/* text mode reset */
   isstring = wasstring;			/* string mode reset */
   isdisplaystyle = wasdisplaystyle;	/* displaystyle mode reset */
+  fontnum = oldfontnum;			/* font family reset */
   fontsize = oldfontsize;		/* fontsize reset */
   displaysize = olddisplaysize;		/* \displaystyle size reset */
   shrinkfactor = oldshrinkfactor;	/* shrinkfactor reset */
-  squashmargin = oldsquashmargin;	/* squashmargin reset */
-  issquashdelta = oldissquashdelta;	/* issquashdelta reset */
+  smashmargin = oldsmashmargin;		/* smashmargin reset */
+  issmashdelta = oldissmashdelta;	/* issmashdelta reset */
   workingparam = oldworkingparam;	/* working parameter reset */
   workingbox = oldworkingbox;		/* working box reset */
   leftexpression = oldleftexpression;	/* leftexpression reset */
@@ -4812,9 +5541,6 @@
   unitlength = oldunitlength;		/* unitlength reset */
   recurlevel--;				/* unwind one recursion level */
   /* --- return final subraster to caller --- */
-  if ( 1 && expraster != (subraster *)NULL ) /* have an expression */
-    { expraster->type = IMAGERASTER;	/* set type to constructed image */
-      expraster->size = fontsize; }	/* set original input font size */
   return ( expraster );
 } /* --- end-of-function rasterize() --- */
 
@@ -4858,7 +5584,7 @@
 int	isheight = 1;			/*true=full height, false=baseline*/
 int	height,				/* height of rasterized noparens[] */
 	baseline;			/* and its baseline */
-int	family = CMEX10;		/* family for paren chars */
+int	family = /*CMSYEX*/ CMEX10;	/* family for paren chars */
 subraster *get_delim(), *lp=NULL, *rp=NULL; /* left and right paren chars */
 subraster *rastcat();			/* concatanate subrasters */
 int	delete_subraster();		/*in case of error after allocation*/
@@ -4952,7 +5678,7 @@
 	*rastcat(),			/* may need to concat scripts */
 	*scriptsp = basesp;		/* and this will become the result */
 int	isdisplay = (-1);		/* set 1 for displaystyle, else 0 */
-int	oldsquashmargin = squashmargin;	/* save original squashmargin */
+int	oldsmashmargin = smashmargin;	/* save original smashmargin */
 int	type_raster();			/* display debugging output */
 /* --- to check for \limits or \nolimits preceding scripts --- */
 char	*texchar(), *exprptr=*expression, limtoken[255]; /*check for \limits*/
@@ -5013,12 +5739,13 @@
     scriptsp = basesp;			/* so just return unscripted symbol*/
   else					/* symbols followed by scripts */
     if ( basesp != NULL )		/* have base symbol */
-     { squashmargin = 0;		/* don't squash script */
-       scriptsp = rastcat(basesp,scriptsp,2); /*concat scripts to base sym*/
+     { smashmargin = 0;			/* don't smash script */
+       /*scriptsp = rastcat(basesp,scriptsp,2);*//*concat scripts to base sym*/
+       scriptsp = rastcat(basesp,scriptsp,3); /*concat scripts to base sym*/
        scriptsp->type = IMAGERASTER;	/* flip type of composite object */
        scriptsp->size = size; }		/* and set font size */
 end_of_job:
-  squashmargin = oldsquashmargin;	/* reset original squashmargin */
+  smashmargin = oldsmashmargin;		/* reset original smashmargin */
   if ( msgfp!=NULL && msglevel>=99 )
     { fprintf(msgfp,"rastlimits> scriptlevel#%d returning %s\n",
 	scriptlevel,(scriptsp==NULL?"null":"..."));
@@ -5259,7 +5986,7 @@
  *		basesp (I)	subraster *  to character (or subexpression)
  *				immediately preceding leading left{
  *				(unused, but passed for consistency)
- *		ildelim (I)	int containing ldelims index of
+ *		ildelim (I)	int containing ldelims[] index of
  *				left delimiter
  *		arg2 (I)	int unused
  *		arg3 (I)	int unused
@@ -5284,15 +6011,17 @@
 	height=0, rheight=0,		/* subexpr, right delim height */
 	margin=(size+1),		/* delim height margin over subexpr*/
 	opmargin=(5);			/* extra margin for \int,\sum,\etc */
-char	subexpr[8192];			/* chars between \left...\right */
+char	/* *texleft(),*/ subexpr[8192];	/* chars between \left...\right */
 char	*texchar(),			/* get delims after \left,\right */
 	ldelim[256]=".", rdelim[256]="."; /* delims following \left,\right */
 char	*strtexchr(), *pleft, *pright;	/*locate \right matching our \left*/
 int	isleftdot=0, isrightdot=0;	/* true if \left. or \right. */
 int	sublen=0;			/* strlen(subexpr) */
 int	idelim=0;			/* 1=left,2=right */
+/* int	gotldelim = 0; */		/* true if ildelim given by caller */
 int	delete_subraster();		/* free subraster if rastleft fails*/
 int	wasdisplaystyle = isdisplaystyle; /* save current displaystyle */
+int	istextleft=0, istextright=0;	/* true for non-displaystyle delims*/
 /* --- recognized delimiters --- */
 static	char left[16]="\\left", right[16]="\\right"; /* tex delimiters */
 static	char *ldelims[] = {
@@ -5329,6 +6058,15 @@
      "<",				/* \langle to < */
      ">",				/* \rangle to > */
      NULL } ; /* --- end-of-xto[] --- */
+/* --- non-displaystyle delimiters --- */
+static	char *textdelims[] =		/* these delims _aren't_ display */
+   { "|", "=",
+     "(", ")",
+     "[", "]",
+     "<", ">",
+     "{", "}",
+     "dbl",				/* \lbrackdbl and \rbrackdbl */
+     NULL } ; /* --- end-of-textdelims[] --- */
 /* -------------------------------------------------------------------------
 initialization
 -------------------------------------------------------------------------- */
@@ -5336,10 +6074,15 @@
 if ( *(*expression) == '\000' ) goto end_of_job; /* nothing after \left */
 /* --- determine left delimiter, and set default \right. delimiter --- */
 if ( ildelim!=NOVALUE && ildelim>=1 )	/* called with explicit left delim */
-  strcpy(ldelim,ldelims[ildelim]);	/* so just get a local copy */
+ { strcpy(ldelim,ldelims[ildelim]);	/* so just get a local copy */
+   /* gotldelim = 1; */ }		/* and set flag that we got it */
 else					/* trapped \left without delim */
  { skipwhite(*expression);		/* interpret \left ( as \left( */
-   *expression = texchar(*expression,ldelim); } /*pull delim from expression*/
+   if ( *(*expression) == '\000' )	/* end-of-string after \left */
+      goto end_of_job;			/* so return NULL */
+   *expression = texchar(*expression,ldelim); /*pull delim from expression*/
+   if ( *expression == NULL		/* probably invalid end-of-string */
+   ||   *ldelim == '\000' ) goto end_of_job; } /* no delimiter */
 strcpy(rdelim,".");			/* init default \right. delim */
 /* -------------------------------------------------------------------------
 locate \right balancing our opening \left
@@ -5364,7 +6107,10 @@
 push past \left(_a^b sub/superscripts, if present
 -------------------------------------------------------------------------- */
 pleft = *expression;			/*reset pleft after opening \left( */
-/*lp=*/ rastlimits(expression,size,lp);	/*dummy call push expression past b*/
+if ( (lp=rastlimits(expression,size,lp)) /*dummy call push expression past b*/
+!=   NULL )				/* found actual _a^b scripts, too */
+  { delete_subraster(lp);		/* but we don't need them */
+    lp = NULL; }			/* reset pointer, too */
 /* -------------------------------------------------------------------------
 get \right delimiter and subexpression between \left...\right, xlate delims
 -------------------------------------------------------------------------- */
@@ -5384,6 +6130,9 @@
 /* --- get subexpression between \left...\right --- */
 if ( sublen < 1 ) goto end_of_job;	/* nothing between delimiters */
 subexpr[sublen] = '\000';		/* and null-terminate it */
+/* --- adjust margin for expressions containing \middle's --- */
+if ( strtexchr(subexpr,"\\middle") != NULL ) /* have enclosed \middle's */
+  margin = 1;				/* so don't "overwhelm" them */
 /* --- check for operator delimiter --- */
 for ( idelim=0; opdelims[idelim]!=NULL; idelim++ )
   if ( strstr(ldelim,opdelims[idelim]) != NULL ) /* found operator */
@@ -5391,7 +6140,7 @@
       if ( *ldelim == '\\' )		/* have leading escape */
 	strcpy(ldelim,ldelim+1);	/* squeeze it out */
       break; }				/* no need to check rest of table */
-/* --- xlate delimiters --- */
+/* --- xlate delimiters and check for textstyle --- */
 for ( idelim=1; idelim<=2; idelim++ ) {	/* 1=left, 2=right */
   char	*lrdelim  = (idelim==1? ldelim:rdelim); /* ldelim or rdelim */
   int	ix;  char *xdelim;		/* xfrom[] and xto[] index, delim */
@@ -5399,6 +6148,12 @@
     if ( strcmp(lrdelim,xdelim) == 0 )	/* found delim to xlate */
       {	strcpy(lrdelim,xto[ix]);	/* replace with corresponding xto[]*/
 	break; }			/* no need to check further */
+  for( ix=0; (xdelim=textdelims[ix]) != NULL; ix++ )
+    if ( strstr(lrdelim,xdelim) != 0 )	/* found textstyle delim */
+      {	if ( idelim == 1 )		/* if it's the \left one */
+	  istextleft = 1;		/* set left textstyle flag */
+	else istextright = 1;		/* else set right textstyle flag */
+	break; }			/* no need to check further */
   } /* --- end-of-for(idelim) --- */
 /* --- debugging --- */
 if ( msgfp!=NULL && msglevel>=99 )
@@ -5419,7 +6174,7 @@
 isleftdot  = (strchr(ldelim,'.')!=NULL); /* true if \left. */
 isrightdot = (strchr(rdelim,'.')!=NULL); /* true if \right. */
 /* --- get rasters for best-fit delim characters, add sub/superscripts --- */
-isdisplaystyle = 9;			/* force \displaystyle */
+isdisplaystyle = (istextleft?0:9);	/* force \displaystyle */
 if ( !isleftdot )			/* if not \left. */
  { /* --- first get requested \left delimiter --- */
    lp = get_delim(ldelim,rheight,family); /* get \left delim char */
@@ -5431,7 +6186,7 @@
 	rheight = lheight-1; }		/* make sure right delim matches */
    /* --- then add on any sub/superscripts attached to \left( --- */
    lp = rastlimits(&pleft,size,lp); }	/*\left(_a^b and push pleft past b*/
-isdisplaystyle = 9;			/* force \displaystyle */
+isdisplaystyle = (istextright?0:9);	/* force \displaystyle */
 if ( !isrightdot )			/* and if not \right. */
  { /* --- first get requested \right delimiter --- */
    rp = get_delim(rdelim,rheight,family); /* get \right delim char */
@@ -5466,6 +6221,162 @@
 
 
 /* ==========================================================================
+ * Function:	rastright ( expression, size, basesp, ildelim, arg2, arg3 )
+ * Purpose:	...\right handler, intercepts an unexpected/unbalanced \right
+ * --------------------------------------------------------------------------
+ * Arguments:	expression (I)	char **  to first char of null-terminated
+ *				string beginning with a \right
+ *				to be rasterized
+ *		size (I)	int containing 0-5 default font size
+ *		basesp (I)	subraster *  to character (or subexpression)
+ *				immediately preceding leading left{
+ *				(unused, but passed for consistency)
+ *		ildelim (I)	int containing rdelims[] index of
+ *				right delimiter
+ *		arg2 (I)	int unused
+ *		arg3 (I)	int unused
+ * --------------------------------------------------------------------------
+ * Returns:	( subraster * )	ptr to subraster corresponding to subexpr,
+ *				or NULL for any parsing error
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+subraster *rastright ( char **expression, int size, subraster *basesp,
+			int ildelim, int arg2, int arg3 )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+subraster /* *rasterize(),*/ *sp=NULL;	/*rasterize \right subexpr's*/
+  if ( sp != NULL )			/* returning entire expression */
+    {
+      isreplaceleft = 1;		/* set flag to replace left half*/
+    }
+return ( sp );
+} /* --- end-of-function rastright() --- */
+
+
+/* ==========================================================================
+ * Function:	rastmiddle ( expression, size, basesp,  arg1, arg2, arg3 )
+ * Purpose:	\middle handler, returns subraster corresponding to
+ *		entire expression with \middle delimiter(s) sized to fit.
+ * --------------------------------------------------------------------------
+ * Arguments:	expression (I/O) char **  to first char of null-terminated
+ *				string immediately following \middle to be
+ *				rasterized, and returning ptr immediately
+ *				to terminating null.
+ *		size (I)	int containing 0-5 default font size
+ *		basesp (I)	subraster *  to character (or subexpression)
+ *				immediately preceding \middle
+ *				(unused, but passed for consistency)
+ *		arg1 (I)	int unused
+ *		arg2 (I)	int unused
+ *		arg3 (I)	int unused
+ * --------------------------------------------------------------------------
+ * Returns:	( subraster * )	ptr to subraster corresponding to expression,
+ *				or NULL for any parsing error
+ *				(expression ptr unchanged if error occurs)
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+subraster *rastmiddle ( char **expression, int size, subraster *basesp,
+			int arg1, int arg2, int arg3 )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+subraster *rasterize(), *sp=NULL, *subsp[32]; /*rasterize \middle subexpr's*/
+char	*exprptr = *expression,		/* local copy of ptr to expression */
+	*texchar(), delim[32][132],	/* delimiters following \middle's */
+	*strtexchr(),			/* locate \middle's */
+	subexpr[8193], *subptr=NULL;	/* subexpression between \middle's */
+int	height=0, habove=0, hbelow=0;	/* height, above & below baseline */
+int	idelim, ndelims=0,		/* \middle count (max 32) */
+	family = CMSYEX;		/* delims from CMSY10 or CMEX10 */
+subraster *subrastcpy(),		/* copy subraster */
+	*rastcat(),			/* concatanate subraster */
+	*get_delim();			/* get rasterized delimiter */
+int	delete_subraster();		/* free work area subsp[]'s at eoj */
+/* -------------------------------------------------------------------------
+initialization
+-------------------------------------------------------------------------- */
+subsp[0] = leftexpression;		/* expressn preceding 1st \middle */
+subsp[1] = NULL;			/* set first null */
+/* -------------------------------------------------------------------------
+accumulate subrasters between consecutive \middle\delim...\middle\delim...'s
+-------------------------------------------------------------------------- */
+while ( ndelims < 30 )			/* max of 31 \middle's */
+  {
+  /* --- maintain max height above,below baseline --- */
+  if ( subsp[ndelims] != NULL )		/*exprssn preceding current \middle*/
+   { int baseline = (subsp[ndelims])->baseline;  /* #rows above baseline */
+     height = ((subsp[ndelims])->image)->height; /* tot #rows (height) */
+     habove = max2(habove,baseline);	/* max #rows above baseline */
+     hbelow = max2(hbelow,height-baseline); } /* max #rows below baseline */
+  /* --- get delimter after \middle --- */
+  skipwhite(exprptr);			/*skip space betwn \middle & \delim*/
+  exprptr = texchar(exprptr,delim[ndelims]); /* \delim after \middle */
+  if ( *(delim[ndelims]) == '\000' )	/* \middle at end-of-expression */
+    break;				/* ignore it and consider job done */
+  ndelims++;				/* count another \middle\delim */
+  /* --- get subexpression between \delim and next \middle --- */
+  subsp[ndelims] = NULL;		/* no subexpresion yet */
+  if ( *exprptr == '\000' )		/* end-of-expression after \delim */
+    break;				/* so we have all subexpressions */
+  if ( (subptr = strtexchr(exprptr,"\\middle")) /* find next \middle */
+  ==   NULL )				/* no more \middle's */
+   { strncpy(subexpr,exprptr,8192);	/* get entire remaining expression */
+     subexpr[8192] = '\000';		/* make sure it's null-terminated */
+     exprptr += strlen(exprptr); }	/* push exprptr to terminating '\0'*/
+  else					/* have another \middle */
+   { int sublen = (int)(subptr-exprptr); /* #chars between \delim...\middle*/
+     memcpy(subexpr,exprptr,min2(sublen,8192)); /* get subexpression */
+     subexpr[min2(sublen,8192)] = '\000'; /* and null-terminate it */
+     exprptr += (sublen+strlen("\\middle")); } /* push exprptr past \middle*/
+  /* --- rasterize subexpression --- */
+  subsp[ndelims] = rasterize(subexpr,size); /* rasterize subexpresion */
+  } /* --- end-of-while(1) --- */
+/* -------------------------------------------------------------------------
+construct \middle\delim's and concatanate them between subexpressions
+-------------------------------------------------------------------------- */
+if ( ndelims < 1			/* no delims */
+||   (height=habove+hbelow) < 1 )	/* or no subexpressions? */
+  goto end_of_job;			/* just flush \middle directive */
+for ( idelim=0; idelim<=ndelims; idelim++ )
+  {
+  /* --- first add on subexpression preceding delim --- */
+  if ( subsp[idelim] != NULL )		/* have subexpr preceding delim */
+    if ( sp == NULL )			/* this is first piece */
+     { sp = subsp[idelim];		/* so just use it */
+       if ( idelim == 0 ) sp = subrastcpy(sp); } /* or copy leftexpression */
+    else sp = rastcat(sp,subsp[idelim],(idelim>0?3:1)); /* or concat it */
+  /* --- now construct delimiter --- */
+  if ( *(delim[idelim]) != '\000' )	/* have delimter */
+   { subraster *delimsp = get_delim(delim[idelim],height,family);
+     if ( delimsp != NULL )		/* rasterized delim */
+      {	delimsp->baseline = habove;	/* set baseline */
+	if ( sp == NULL )		/* this is first piece */
+	  sp = delimsp;			/* so just use it */
+	else sp = rastcat(sp,delimsp,3); } } /*or concat to existing pieces*/
+  } /* --- end-of-for(idelim) --- */
+/* --- back to caller --- */
+end_of_job:
+  if ( 0 ) /* now handled above */
+    for ( idelim=1; idelim<=ndelims; idelim++ ) /* free subsp[]'s (not 0) */
+     if ( subsp[idelim] != NULL )	/* have allocated subraster */
+      delete_subraster(subsp[idelim]);	/* so free it */
+  if ( sp != NULL )			/* returning entire expression */
+    { int newht = (sp->image)->height;	/* height of returned subraster */
+      sp->baseline = min2(newht-1,newht/2+5); /* guess new baseline */
+      isreplaceleft = 1;		/* set flag to replace left half*/
+      *expression += strlen(*expression); } /* and push to terminating null*/
+  return ( sp );
+} /* --- end-of-function rastmiddle() --- */
+
+
+/* ==========================================================================
  * Function:	rastflags ( expression, size, basesp,  flag, value, arg3 )
  * Purpose:	sets an internal flag, e.g., for \rm, or sets an internal
  *		value, e.g., for \unitlength=<value>, and returns NULL
@@ -5476,8 +6387,8 @@
  *		size (I)	int containing base font size (not used,
  *				just stored in subraster)
  *		basesp (I)	subraster *  to character (or subexpression)
- *				immediately preceding space, whose baseline
- *				and height params are transferred to space
+ *				immediately preceding "flags" directive
+ *				(unused but passed for consistency)
  *		flag (I)	int containing #define'd symbol specifying
  *				internal flag to be set
  *		value (I)	int containing new value of flag
@@ -5507,10 +6418,10 @@
 switch ( flag )
   {
   default: break;			/* unrecognized flag */
-  case ISTEXT:
+  case ISFONTFAM:
     if ( isthischar((*(*expression)),WHITEMATH) ) /* \rm followed by white */
       (*expression)++;			/* skip leading ~ after \rm */
-    istext=value;			/* set text mode */
+    fontnum = value;			/* set font family */
     break;
   case ISSTRING: isstring=value; break;	/* set string/image mode */
   case ISDISPLAYSTYLE:			/* set \displaystyle mode */
@@ -5541,7 +6452,7 @@
   case ISADJACENTWT:			/* set lowpass adjacent weight */
   case ISCORNERWT:			/* set lowpass corner weight */
   case ISCOLOR:				/* set red(1),green(2),blue(3) */
-  case ISSQUASH:			/* set (minimum) "squash" margin */
+  case ISSMASH:				/* set (minimum) "smash" margin */
     if ( value != NOVALUE )		/* passed a fixed value to be set */
       argvalue = value;			/* set given fixed value */
     else				/* get value from expression */
@@ -5578,10 +6489,14 @@
 	    fontsize = (isdelta? fontsize+argvalue : argvalue);
 	    fontsize = max2(0,min2(fontsize,largestsize));
 	    shrinkfactor = shrinkfactors[fontsize];
-	    if ( isdisplaystyle == 1 )	/* displaystyle enabled but not set*/
+	    if ( isdisplaystyle == 1	/* displaystyle enabled but not set*/
+	    ||  (1 && isdisplaystyle==2) /* displaystyle enabled and set */
+	    ||  (0 && isdisplaystyle==0) )/*\textstyle disabled displaystyle*/
 	     if ( displaystylelevel != recurlevel ) /*respect \displaystyle*/
 	      if ( !ispreambledollars )	/* respect $$...$$'s */
-	       isdisplaystyle = (fontsize>=displaysize? 2:1); /* forced */
+	       if ( fontsize >= displaysize )
+		isdisplaystyle = 2;	/* forced */
+	       else isdisplaystyle = 1;
 	    /*displaystylelevel = (-99);*/ } /* reset \displaystyle level */
 	else				/* embed font size in expression */
 	  { sprintf(valuearg,"%d",fontsize); /* convert size */
@@ -5594,12 +6509,12 @@
 	if ( argvalue != NOVALUE )	/* got a value */
 	    displaysize = (isdelta? displaysize+argvalue : argvalue);
 	break;
-      case ISSQUASH:			/* set (minimum) "squash" margin */
+      case ISSMASH:			/* set (minimum) "smash" margin */
 	if ( argvalue != NOVALUE )	/* got a value */
-	  { squashmargin = argvalue;	/* set value */
+	  { smashmargin = argvalue;	/* set value */
 	    if ( arg3 != NOVALUE ) isdelta=arg3; /* hard-coded isdelta */
-	    issquashdelta = (isdelta?1:0); } /* and set delta flag */
-	squashmargin = max2((isdelta?-5:0),min2(squashmargin,32)); /*sanity*/
+	    issmashdelta = (isdelta?1:0); } /* and set delta flag */
+	smashmargin = max2((isdelta?-5:0),min2(smashmargin,32)); /*sanity*/
 	break;
       case ISSHRINK:			/* set shrinkfactor */
 	if ( argvalue != NOVALUE )	/* got a value */
@@ -5701,7 +6616,6 @@
 char	*texsubexpr(), widtharg[256];	/* parse for optional {width} */
 subraster *rasterize(), *rightsp=NULL;	/*rasterize right half of expression*/
 subraster *rastcat();			/* cat rightsp after \hfill */
-int	blanksignal = (-991234);	/*rastsquash signal right-hand blank*/
 /* -------------------------------------------------------------------------
 initialization
 -------------------------------------------------------------------------- */
@@ -5767,9 +6681,9 @@
  *				string immediately following \\ to be
  *				rasterized, and returning ptr immediately
  *				to terminating null.
- *		size (I)	int containing 0-4 default font size
+ *		size (I)	int containing 0-5 default font size
  *		basesp (I)	subraster *  to character (or subexpression)
- *				immediately preceding \accent
+ *				immediately preceding \\
  *				(unused, but passed for consistency)
  *		arg1 (I)	int unused
  *		arg2 (I)	int unused
@@ -5812,7 +6726,8 @@
 if ( (rightsp=rasterize(*expression,size)) /* rasterize right half */
 == NULL ) goto end_of_job;		/* quit if failed */
 /* --- stack left half above it --- */
-newlsp = rastack(rightsp,leftexpression,1,vspace,0,3); /*right under left*/
+/*newlsp = rastack(rightsp,leftexpression,1,vspace,0,3);*//*right under left*/
+newlsp = rastack(rightsp,leftexpression,1,vspace,0,1); /*right under left*/
 /* --- back to caller --- */
 end_of_job:
   if ( newlsp != NULL )			/* returning entire expression */
@@ -6166,7 +7081,7 @@
 /*int	istweak = 1;*/			/*true to tweak baseline alignment*/
 int	rule_raster(),			/* draw horizontal line for frac */
 	lineheight = 1;			/* thickness of fraction line */
-int	vspace = 1;			/*vertical space between components*/
+int	vspace = (size>2?2:1);		/*vertical space between components*/
 int	delete_subraster();		/*free work areas in case of error*/
 int	type_raster();			/* display debugging output */
 /* -------------------------------------------------------------------------
@@ -6588,13 +7503,15 @@
 pixsz     = (subsp->image)->pixsz;	/* original pixsz remains constant */
 /* --- determine desired width, height of accent --- */
 accwidth = subwidth;			/* same width as subexpr */
-accheight = 3;				/* default for bars */
+accheight = 4;				/* default for bars */
 switch ( accent )
   { default: break;			/* default okay */
   case DOTACCENT: case DDOTACCENT:
-    accheight = (size<3? 3:4);		/* default for dots */
+    accheight = (size<4? 3:4);		/* default for dots */
     break;
-  case HATACCENT: case VECACCENT:
+  case VECACCENT:
+    vspace = 1;				/* set 1-pixel vertical space */
+  case HATACCENT:
     accheight = 7;			/* default */
     if ( subwidth < 10 ) accheight = 5;	/* unless small width */
       else if ( subwidth > 25 ) accheight = 9; /* or large */
@@ -6640,7 +7557,7 @@
 
 
 /* ==========================================================================
- * Function:	rastfont (expression,size,basesp,font,arg2,arg3)
+ * Function:	rastfont (expression,size,basesp,ifontnum,arg2,arg3)
  * Purpose:	\cal{}, \scr{}, \etc handler, returns subraster corresponding
  *		to char(s) within {}'s rendered at size
  * --------------------------------------------------------------------------
@@ -6652,7 +7569,7 @@
  *		basesp (I)	subraster *  to character (or subexpression)
  *				immediately preceding \accent
  *				(unused, but passed for consistency)
- *		font (I)	int containing 1 for \cal{}, 2 for \scr{}
+ *		ifontnum (I)	int containing 1 for \cal{}, 2 for \scr{}
  *		arg2 (I)	int unused
  *		arg3 (I)	int unused
  * --------------------------------------------------------------------------
@@ -6663,7 +7580,7 @@
  * ======================================================================= */
 /* --- entry point --- */
 subraster *rastfont ( char **expression, int size, subraster *basesp,
-			int font, int arg2, int arg3 )
+			int ifontnum, int arg2, int arg3 )
 {
 /* -------------------------------------------------------------------------
 Allocations and Declarations
@@ -6671,39 +7588,43 @@
 char	*texsubexpr(), fontchars[8192],	/*parse chars to be rendered in font*/
 	subexpr[8192];			/* turn \cal{AB} into \calA\calB */
 char	*pfchars=fontchars, fchar='\0';	/* run thru fontchars one at a time*/
-char	*name = NULL;			/* fonts[font].name */
-int	class = 0,			/* fonts[font].class */
-	istext = 0;			/* set true for text type */
+char	*name = NULL;			/* fontinfo[ifontnum].name */
+int	family = 0,			/* fontinfo[ifontnum].family */
+	istext = 0,			/* fontinfo[ifontnum].istext */
+	class = 0;			/* fontinfo[ifontnum].class */
 subraster *rasterize(), *fontsp=NULL,	/* rasterize chars in font */
 	*rastflags();			/* or just set flag to switch font */
-int	oldsquashmargin = squashmargin;	/* turn off squash in text mode */
-int	blanksignal = (-991234);	/*rastsquash signal right-hand blank*/
+int	oldsmashmargin = smashmargin;	/* turn off smash in text mode */
+#if 0
 /* --- fonts recognized by rastfont --- */
-static	int  nfonts = 5;		/* legal font #'s are 1...nfonts */
+static	int  nfonts = 6;		/* legal font #'s are 1...nfonts */
 static	struct {char *name; int class;}
   fonts[] =
     { /* --- name  class 1=upper,2=alpha,3=alnum,4=lower,5=digit,9=all --- */
-	{ "\\badfont",	0 },
-	{ "\\cal",	1 },		/*(1) calligraphic, uppercase */
-	{ "\\scr",	1 },		/*(2) rsfs/script, uppercase */
-	{ "\\rm",	-1 },		/*(3) \rm,\text{abc} --> {\rm~abc} */
-	{ "\\it",	-1 },		/*(4) \it,\textit{abc}-->{\it~abc} */
-	{ "\\bb",	-1 },		/*(5) \bb,\mathbb{abc}-->{\bb~abc} */
+	{ "\\math",	0 },
+	{ "\\mathcal",	1 },		/*(1) calligraphic, uppercase */
+	{ "\\mathscr",	1 },		/*(2) rsfs/script, uppercase */
+	{ "\\textrm",	-1 },		/*(3) \rm,\text{abc} --> {\rm~abc} */
+	{ "\\textit",	-1 },		/*(4) \it,\textit{abc}-->{\it~abc} */
+	{ "\\mathbb",	-1 },		/*(5) \bb,\mathbb{abc}-->{\bb~abc} */
+	{ "\\mathbf",	-1 },		/*(6) \bf,\mathbf{abc}-->{\bf~abc} */
 	{ NULL,		0 }
     } ; /* --- end-of-fonts[] --- */
+#endif
 /* -------------------------------------------------------------------------
 first get font name and class to determine type of conversion desired
 -------------------------------------------------------------------------- */
-if ( font<=0 || font>nfonts ) font=0;	/* set error if out-of-bounds */
-name  = fonts[font].name;		/* font name */
-class = fonts[font].class;		/* font class */
-if ( font==3 || font==4 )		/* text (respect blanks) */
- { istext = 1;				/* signal text mode */
-   squashmargin = 0; }			/* don't squash internal blanks */
+if (ifontnum<=0 || ifontnum>nfontinfo) ifontnum=0; /*math if out-of-bounds*/
+name   = fontinfo[ifontnum].name;	/* font name */
+family = fontinfo[ifontnum].family;	/* font family */
+istext = fontinfo[ifontnum].istext;	/*true in text mode (respect space)*/
+class  = fontinfo[ifontnum].class;	/* font class */
+if ( istext )				/* text (respect blanks) */
+  smashmargin = 0;			/* don't smash internal blanks */
 /* -------------------------------------------------------------------------
 now convert \font{abc} --> {\font~abc}, or convert ABC to \calA\calB\calC
 -------------------------------------------------------------------------- */
-if ( class < 0 )			/* not character-by-character */
+if ( 1 || class<0 )			/* not character-by-character */
  { 
  /* ---
  if \font not immediately followed by { then it has no arg, so just set flag
@@ -6711,15 +7632,8 @@
  if ( *(*expression) != '{' )		/* no \font arg, so just set flag */
     {
     if ( msgfp!=NULL && msglevel>=99 )
-      fprintf(msgfp,"rastfont> \\%s rastflags() for font#%d\n",name,font);
-    switch ( font )			/* set flag by our internal font# */
-      {	case 3:				/* \rm, \text sets flag istext=1 */
-	  fontsp = rastflags(expression,size,basesp,ISTEXT,1,arg3); break;
-	case 4:				/* \it, \text sets flag istext=2 */
-	  fontsp = rastflags(expression,size,basesp,ISTEXT,2,arg3); break;
-	case 5:				/* \bb, \mathbb sets flag istext=3 */
-	  fontsp = rastflags(expression,size,basesp,ISTEXT,3,arg3); break;
-	default: break; }		/* unrecognized, set no flags */
+     fprintf(msgfp,"rastfont> \\%s rastflags() for font#%d\n",name,ifontnum);
+    fontsp = rastflags(expression,size,basesp,ISFONTFAM,ifontnum,arg3);
     goto end_of_job;
     } /* --- end-of-if(*(*expression)!='{') --- */
  /* ---
@@ -6752,11 +7666,12 @@
  for ( pfchars=fontchars; (fchar= *pfchars)!='\000'; pfchars++ )
   {
   if ( isthischar(fchar,WHITEMATH) )	/* some whitespace */
-    { if ( 0 || istext )		/* and we're in a text mode */
+    { if ( 0 || istext )		/* and we're in a text mode font */
 	strcat(subexpr,"\\;"); }	/* so respect whitespace */
   else					/* char to be displayed in font */
     { int exprlen = 0;			/* #chars in subexpr before fchar */
       int isinclass = 0;		/* set true if fchar in font class */
+      /* --- class: 1=upper, 2=alpha, 3=alnum, 4=lower, 5=digit, 9=all --- */
       switch ( class )			/* check if fchar is in font class */
 	{ default: break;		/* no chars in unrecognized class */
 	  case 1: if ( isupper((int)fchar) ) isinclass=1; break;
@@ -6790,9 +7705,9 @@
 back to caller with chars rendered in font
 -------------------------------------------------------------------------- */
 end_of_job:
-  squashmargin = oldsquashmargin;	/* restore squash */
-  if ( istext && fontsp!=NULL )		/* raster contains text */
-    fontsp->type = blanksignal;		/* signal nosquash */
+  smashmargin = oldsmashmargin;		/* restore smash */
+  if ( istext && fontsp!=NULL )		/* raster contains text mode font */
+    fontsp->type = blanksignal;		/* signal nosmash */
   return ( fontsp );			/* chars rendered in font */
 } /* --- end-of-function rastfont() --- */
 
@@ -7328,7 +8243,8 @@
 	{ skipwhite(tokptr);		/* flush whitespace after \hline */
 	  if ( *tokptr == '\000'	/* end-of-expression after \hline */
 	  ||   isthischar(*tokptr,coldelim) ) /* or unescaped coldelim */
-	    istokwhite = ishonly = 1;	/* so token contains \hline only */
+	    { istokwhite = 1;		/* so token contains \hline only */
+	      if ( iseox ) ishonly = 1; } /* ignore entire row at eox */
 	  else				/* token contains more than \hline */
 	    strcpy(token,tokptr); }	/* so flush \hline from token */
       } /* --- end-of-if(ncols[nrows]==0) --- */
@@ -7452,6 +8368,9 @@
   for ( icol=0; icol<ncols[irow]; icol++ ) /* go through cells in this row */
     {
     subraster *tsp = toksp[itoken];	/* token that belongs in this cell */
+    /* --- first adjust leftcol for vline to left of icol, if present ---- */
+    leftcol += vlinespace(icol);	/* space for vline to left of col */
+    /* --- now rasterize cell ---- */
     if ( tsp != NULL )			/* have a rasterized cell token */
       {
       /* --- local parameters --- */
@@ -7461,7 +8380,7 @@
 	  tokencol = 0,			/*H offset (init for left justify)*/
 	  tokenrow = baseline - tsp->baseline;/*V offset (init for baseline)*/
       /* --- adjust leftcol for vline to left of icol, if present ---- */
-      leftcol += vlinespace(icol);	/* space for vline to left of col */
+      /*leftcol += vlinespace(icol);*/	/* space for vline to left of col */
       /* --- reset justification (if not left-justified) --- */
       if ( justify[icol] == 0 )		/* but user wants it centered */
 	  tokencol = (cwidth-twidth+1)/2; /* so split margin left/right */
@@ -7761,10 +8680,12 @@
 subraster *new_subraster(), *linesp=NULL; /* subraster for line */
 /*char	*origexpression = *expression;*/ /*original expression after \line*/
 int	pixsz = 1;			/* pixels are one bit each */
+int	thickness = 1;			/* line thickness */
 double	strtod(),			/* convert ascii params to doubles */
 	xinc=0.0, yinc=0.0,		/* x,y-increments for line, */
 	xlen=0.0, ylen=0.0;		/* x,y lengths for line */
-int	width=0,  height=0;		/* #pixels width,height of line */
+int	width=0,  height=0,		/* #pixels width,height of line */
+	rwidth=0, rheight=0;		/*alloc width,height plus thickness*/
 int	istop=0,  isright=0,		/* origin at bot-left if x,yinc>=0 */
 	origin = 0;			/* x,yinc: ++=00 +-=01 -+=10 --=11 */
 int	line_raster();			/* draw line in linesp->image */
@@ -7774,7 +8695,10 @@
 /* --- parse for (xinc,yinc) arguments, and bump expression past it --- */
 *expression = texsubexpr(*expression,linexpr,253,"(",")",0,0);
 if ( *linexpr == '\000' ) goto end_of_job; /* couldn't get (xinc,yinc) */
-/* --- now interpret xinc,yinc returned in linexpr --- */
+/* --- now interpret xinc,yinc;thickness returned in linexpr --- */
+if ( (xptr=strchr(linexpr,';')) != NULL ) /* look for ';' after xinc,yinc */
+  { *xptr = '\000';			/* terminate linexpr at ; */
+    thickness = (int)strtol(xptr+1,NULL,10); } /* get int thickness */
 if ( (xptr=strchr(linexpr,',')) != NULL ) /* look for ',' in xinc,yinc */
   *xptr = '\000';			/* found it, so replace ',' by '\0'*/
 if ( *linexpr != '\000' )		/* check against missing 1st arg */
@@ -7803,8 +8727,10 @@
 xlen = absval(xlen);			/* force xlen positive */
 ylen = absval(ylen);			/* force ylen positive */
 /* --- calculate corresponding lengths in pixels --- */
-width  = max2(1,iround(unitlength*xlen)); /*scale by unitlength and round,*/
-height = max2(1,iround(unitlength*ylen)); /* and must be at least 1 pixel */
+width   = max2(1,iround(unitlength*xlen)); /*scale by unitlength and round,*/
+height  = max2(1,iround(unitlength*ylen)); /* and must be at least 1 pixel */
+rwidth  = width  + (ylen<0.001?0:max2(0,thickness-1));
+rheight = height + (xlen<0.001?0:max2(0,thickness-1));
 /* --- set origin corner, x,yinc's: ++=0=(0,0) +-=1=(0,1) -+=10=(1,0) --- */
 if ( xinc < 0.0 ) isright = 1;		/*negative xinc, so corner is (1,?)*/
 if ( yinc < 0.0 ) istop = 1;		/*negative yinc, so corner is (?,1)*/
@@ -7815,16 +8741,18 @@
 /* -------------------------------------------------------------------------
 allocate subraster and raster for complete picture
 -------------------------------------------------------------------------- */
-/* --- sanity check on width,height args --- */
+/* --- sanity check on width,height,thickness args --- */
 if ( width < 1 ||  width > 600
-||  height < 1 || height > 600 ) goto end_of_job;
+||  height < 1 || height > 600
+||  thickness<1||thickness>25 ) goto end_of_job;
 /* --- allocate and initialize subraster for constructed line --- */
-if ( (linesp=new_subraster(width,height,pixsz)) /* allocate new subraster */
+if ( (linesp=new_subraster(rwidth,rheight,pixsz)) /* alloc new subraster */
 ==   NULL )  goto end_of_job;		/* quit if failed */
 /* --- initialize line subraster parameters --- */
 linesp->type = IMAGERASTER;		/* image */
 linesp->symdef = NULL;			/* not applicable for image */
-linesp->baseline = height/2 + 2;	/* is a little above center good? */
+linesp->baseline = height/2 + 2		/* is a little above center good? */
+	+ (rheight-height)/2;		/* account for line thickness too */
 linesp->size = size;			/* size (probably unneeded) */
 /* -------------------------------------------------------------------------
 draw the line
@@ -7834,7 +8762,7 @@
 	(isright?  width-1 : 0),	/* col0, from left or right */
 	(istop?   height-1 : 0),	/* row1, to top or bottom */
 	(isright? 0 :  width-1),	/* col1, to right or left */
-	1 );				/* line thickness is 1 pixel */
+	thickness );			/* line thickness (usually 1 pixel)*/
 /* -------------------------------------------------------------------------
 return constructed line to caller
 -------------------------------------------------------------------------- */
@@ -8381,9 +9309,9 @@
 subraster *rasterize(), *inputsp=NULL; /* rasterized input image */
 int	status, rastreadfile();	/* read input file */
 int	format=0, npts=0;	/* don't reformat (numerical) input */
-char	subexpr[8192],		/* concatanated lines from input file */
+char	subexpr[8192] = "\000",	/* concatanated lines from input file */
 	*mimeprep(),		/* preprocess inputted data */
-	*dtoa(), *reformat=NULL; /* reformat numerical input */
+	*dbltoa(), *reformat=NULL; /* reformat numerical input */
 /* -------------------------------------------------------------------------
 obtain [tag]{filename} argument
 -------------------------------------------------------------------------- */
@@ -8391,8 +9319,8 @@
 if ( *(*expression) == '[' )		/* check for []-enclosed value */
   { char argfld[2048];			/* optional argument field */
     *expression = texsubexpr(*expression,argfld,2047,"[","]",0,0);
-    if ( (reformat=strstr(argfld,"dtoa")) != NULL ) /* dtoa requested */
-      {	format = 1;			/* signal dtoa() format */
+    if ( (reformat=strstr(argfld,"dtoa")) != NULL ) /*dtoa/dbltoa requested*/
+      {	format = 1;			/* signal dtoa()/dbltoa() format */
 	if ( (reformat=strchr(reformat,'=')) != NULL ) /* have dtoa= */
 	  npts = (int)strtol(reformat+1,NULL,0); } /* so set npts */
     if ( format == 0 )			/* reformat not requested */
@@ -8409,14 +9337,14 @@
 /* --------------------------------------------------------------------------
 Read file and rasterize constructed subexpression
 -------------------------------------------------------------------------- */
-status = rastreadfile(filename,tag,subexpr); /* read file */
+status = rastreadfile(filename,0,tag,subexpr); /* read file */
 if ( *subexpr == '\000' ) goto end_of_job;   /* quit if problem */
 /* --- rasterize input subexpression  --- */
 mimeprep(subexpr);			/* preprocess subexpression */
-if ( format == 1 )			/* dtoa() */
+if ( format == 1 )			/* dtoa()/dbltoa() */
  { double d = strtod(subexpr,NULL);	/* interpret subexpr as double */
    if ( d != 0.0 )			/* conversion to double successful */
-    if ( (reformat=dtoa(d,npts)) != NULL ) /* reformat successful */
+    if ( (reformat=dbltoa(d,npts)) != NULL ) /* reformat successful */
      strcpy(subexpr,reformat); }	/*replace subexpr with reformatted*/
 inputsp = rasterize(subexpr,size);	/* rasterize subexpression */
 /* --- return input image to caller --- */
@@ -8447,8 +9375,8 @@
  *				requested, or NULL for any parsing error
  * --------------------------------------------------------------------------
  * Notes:     o	Summary of syntax...
- *		  \counter[value][logfile]{filename}
- *	      o
+ *		  \counter[value][logfile]{filename:tag}
+ *	      o	:tag is optional
  * ======================================================================= */
 /* --- entry point --- */
 subraster *rastcounter ( char **expression, int size, subraster *basesp,
@@ -8458,18 +9386,22 @@
 Allocations and Declarations
 -------------------------------------------------------------------------- */
 char	*texsubexpr(), filename[1024]="\000", /* counter file */
-	logfile[1024]="\000", tag[512]="\000"; /* log file and tag */
+	logfile[1024]="\000", tag[512]="\000"; /*optional log file and tag*/
 subraster *rasterize(), *countersp=NULL; /* rasterized counter image */
 FILE	/* *fp=NULL,*/ *logfp=NULL; /* counter and log file pointers */
-int	rastreadfile(), rastwritefile(); /* to read and write counter file */
-char	text[2048] = "1_",	/* first (and only) line in counter file */
+int	status=0,rastreadfile(),rastwritefile(), /*read,write counter file*/
+	isstrict = 1;		/* true to only write to existing files */
+char	text[8192] = "1_",	/* only line in counter file without tags */
 	*delim = NULL,		/* delimiter in text */
-	utext[32] = "1_",	/* default delimiter */
+	utext[128] = "1_",	/* default delimiter */
 	*udelim = utext+1;	/* underscore delimiter */
-char	*timestamp(),		/* timestamp for logging */
-	*dtoa();		/* double to comma-separated */
+char	*rasteditfilename(),	/* edit log file name */
+	*timestamp(),		/* timestamp for logging */
+	*dbltoa();		/* double to comma-separated ascii */
 int	counter = 1,		/* atoi(text) (after _ removed, if present) */
-	gotcount = 0,		/* set true once counter value determined */
+	value = 1,		/* optional [value] argument */
+	gotvalue = 0,		/* set true if [value] supplied */
+	isdelta = 0,		/* set true if [+value] or [-value] is delta*/
 	ordindex = (-1);	/* ordinal[] index to append ordinal suffix */
 /*--- ordinal suffixes based on units digit of counter ---*/
 static	char *ordinal[]={"th","st","nd","rd","th","th","th","th","th","th"};
@@ -8480,28 +9412,34 @@
 -------------------------------------------------------------------------- */
 /* --- first check for optional \counter[value] --- */
 if ( *(*expression) == '[' )		/* check for []-enclosed value */
-  { *expression = texsubexpr(*expression,text,2047,"[","]",0,0);
-    if ( *text != '\000' )		/* got counter value */
+  { *expression = texsubexpr(*expression,text,1023,"[","]",0,0);
+    if ( *text != '\000' )		/* got counter value (or logfile) */
      if ( strlen(text) >= 1 )		/* and it's not an empty string */
-      if ( isdigit((int)(*text)) )	/* leading 0-9 digit signals value */
-       { counter = (int)(strtod(text,&udelim)+0.1); /* value and delim */
-	 gotcount = 1; }		/* signal we got counter value */
-      else				/* not a digit, so must be logfile */
-	 strcpy(logfile,text);		/* so just copy it */
+      if ( isthischar(*text,"+-0123456789") ) /* check for leading +-digit */
+	gotvalue = 1;			/* signal we got optional value */
+      else				/* not +-digit, so must be logfile */
+	strcpy(logfile,text);		/* so just copy it */
   } /* --- end-of-if(**expression=='[') --- */
 /* --- next check for optional \counter[][logfile] --- */
 if ( *(*expression) == '[' )		/* check for []-enclosed logfile */
   { *expression = texsubexpr(*expression,filename,1023,"[","]",0,0);
-    if ( *text != '\000' )		/* got logfile value */
+    if ( *filename != '\000' )		/* got logfile (or counter value) */
      if ( strlen(filename) >= 1 )	/* and it's not an empty string */
-      if ( !(isdigit((int)(*filename)))	/*leading non-digit signals logfile*/
-      ||   gotcount )			/* or we already got counter value */
-	 strcpy(logfile,filename);	/* so just copy it */
-      else				/* 0-9 digit, so must be value */
-       { strcpy(text,filename);		/* copy value to text line */
-	 counter = (int)(strtod(text,&udelim)+0.1); /* value and delim */
-	 gotcount = 1; }		/* signal we got counter value */
+      if ( !(isthischar(*text,"+-0123456789")) /* not a leading +-digit */
+      ||   gotvalue )			/* or we already got counter value */
+	strcpy(logfile,filename);	/* so just copy it */
+      else				/* leading +-digit must be value */
+	{ strcpy(text,filename);	/* copy value to text line */
+	  gotvalue = 1; }		/* and signal we got optional value*/
   } /* --- end-of-if(**expression=='[') --- */
+/* --- evaluate [value] if present --- */
+if ( gotvalue ) {			/*leading +-digit should be in text*/
+ if ( *text == '+' ) isdelta = (+1);	/* signal adding */
+ if ( *text == '-' ) isdelta = (-1);	/* signal subtracting */
+ value = (int)(strtod((isdelta==0?text:text+1),&udelim)+0.1); /*abs(value)*/
+ if ( isdelta == (-1) ) value = (-value); /* set negative value if needed */
+ counter = value;			/* re-init counter */
+ } /* --- end-of-if(gotvalue) --- */
 /* -------------------------------------------------------------------------
 obtain counter {filename} argument
 -------------------------------------------------------------------------- */
@@ -8519,22 +9457,27 @@
 if ( strlen(filename) > 1 )		/* make sure we got {filename} arg */
   {
   /* --- read and interpret first (and only) line from counter file --- */
-  if ( !gotcount )			/* if no [count] argument supplied */
-   if ( rastreadfile(filename,tag,text) != 0 ) /* try reading it from file */
-    { counter= 1 + (int)(strtod(text,&udelim)+0.1); /*counter val and delim*/
-      gotcount = 1; }			/* signal we got counter value */
+  if ( !gotvalue || (isdelta!=0) )	/*if no [count] arg or if delta arg*/
+   if ( (status=rastreadfile(filename,1,tag,text)) > 0 ) /*try reading file*/
+    { char *vdelim = NULL;		/* underscore delim from file */
+      double fileval  = strtod(text,&vdelim); /* value and delim from file */
+      counter = (int)(fileval<0.0?fileval-0.1:fileval+0.1); /* integerized */
+      counter += value;			/* bump count by 1 or add/sub delta*/
+      if ( !gotvalue ) udelim=vdelim; }	/* default to file's current delim */
   /* --- check for ordinal suffix --- */
   if ( udelim != (char *)NULL )		/* have some delim after value */
    if ( *udelim == '_' )		/* underscore signals ordinal */
-    { ordindex = counter%10;		/* least significant digit */
-      if ( counter >= 10 )		/* counter is 10 or greater */
-       if ( (counter/10)%10 == 1 )	/* and the last two are 10-19 */
+    { int abscount = (counter>=0?counter:(-counter)); /* abs(counter) */
+      ordindex = abscount%10;		/* least significant digit */
+      if ( abscount >= 10 )		/* counter is 10 or greater */
+       if ( (abscount/10)%10 == 1 )	/* and the last two are 10-19 */
 	ordindex = 0; }		/* use th for 11,12,13 rather than st,nd,rd */
   /* --- rewrite counter file --- */
-  sprintf(text,"%d",counter);		/*build image of incremented counter*/
-  if ( ordindex >= 0 ) strcat(text,"_"); /* tack on _ */
-  if ( *tag == '\000' ) strcat(text,"\n"); /* and newline */
-  rastwritefile(filename,tag,text,1);	/* rewrite incremented counter */
+  if ( status >= 0 )			/* file was read okay */
+   { sprintf(text,"%d",counter);	/*build image of incremented counter*/
+     if ( ordindex >= 0 ) strcat(text,"_"); /* tack on _ */
+     if ( *tag == '\000' ) strcat(text,"\n"); /* and newline */
+     status = rastwritefile(filename,tag,text,isstrict); } /*rewrite counter*/
   } /* --- end-of-if(strlen(filename)>1) --- */
 /* --------------------------------------------------------------------------
 log counter request
@@ -8543,35 +9486,44 @@
  {
  char	comment[1024] = "\000",		/* embedded comment, logfile:comment*/
 	*commptr = strchr(logfile,':');	/* check for : signalling comment */
+ int	islogokay = 1;			/* logfile must exist if isstrict */
  if ( commptr != NULL )			/* have embedded comment */
   { strcpy(comment,commptr+1);		/* comment follows : */
     *commptr = '\000'; }		/* null-terminate actual logfile */
- if ( (logfp = fopen(logfile,"a"))	/* open logfile */
- != (FILE *)NULL )			/* opened successfully */
-  {
-  int	ilog=0;				/* logvars[] index */
-  fprintf(logfp,"%s  ",timestamp());	/* first emit timestamp */
-  if (*tag=='\000') fprintf(logfp,"%s",filename); /* emit counter filename */
-  else fprintf(logfp,"<%s>",tag);	/* or tag if we have one */
-  fprintf(logfp,"=%d",counter);		/* emit counter value */
-  for ( ilog=0; logvars[ilog] != NULL; ilog++ ) /* log till end-of-table */
-   if ( ilog == commentvar		/* replace with comment... */
-   &&   commptr != NULL )		/* ...if available */  
-    fprintf(logfp,"  %.256s",comment); /* log embedded comment */
-   else
-    { char *logval = getenv(logvars[ilog]); /* getenv(variable) to be logged*/
-      fprintf(logfp,"  %.64s",	/* log variable */
+ strcpy(logfile,rasteditfilename(logfile)); /* edit log file name */
+ if ( *logfile == '\000' ) islogokay = 0; /* given an invalid file name */
+ else if ( isstrict ) {			/*okay, but only write if it exists*/
+  if ( (logfp=fopen(logfile,"r")) == (FILE *)NULL ) /*doesn't already exist*/
+    islogokay = 0;			/* so don't write log file */
+  else fclose(logfp); }			/* close file opened for test read */
+ if ( islogokay )			/* okay to write logfile */
+  if ( (logfp = fopen(logfile,"a"))	/* open logfile */
+  != (FILE *)NULL ) {			/* opened successfully for append */
+   int	ilog=0;				/* logvars[] index */
+   fprintf(logfp,"%s  ",timestamp(TZDELTA,0)); /* first emit timestamp */
+   if (*tag=='\000') fprintf(logfp,"%s",filename); /* emit counter filename */
+   else fprintf(logfp,"<%s>",tag);	/* or tag if we have one */
+   fprintf(logfp,"=%d",counter);	/* emit counter value */
+   if ( status < 1 )			/* read or re-write failed */
+    fprintf(logfp,"(%s %d)","error status",status); /* emit error */
+   for ( ilog=0; logvars[ilog] != NULL; ilog++ ) /* log till end-of-table */
+    if ( ilog == commentvar		/* replace with comment... */
+    &&   commptr != NULL )		/* ...if available */  
+     fprintf(logfp,"  %.256s",comment); /* log embedded comment */
+    else
+     { char *logval = getenv(logvars[ilog]); /*getenv(variable) to be logged*/
+       fprintf(logfp,"  %.64s",		/* log variable */
 	(logval!=NULL?logval:"<unknown>")); } /* emit value or <unknown> */
-  fprintf(logfp,"\n");			/* terminating newline */
-  fclose(logfp);			/* close logfile */
-  } /* --- end-of-if(logfp!=NULL) --- */
+   fprintf(logfp,"\n");			/* terminating newline */
+   fclose(logfp);			/* close logfile */
+   } /* --- end-of-if(islogokay&&logfp!=NULL) --- */
  } /* --- end-of-if(strlen(logfile)>1) --- */
 /* --------------------------------------------------------------------------
 construct counter expression and rasterize it
 -------------------------------------------------------------------------- */
 /* --- construct expression --- */
 /*sprintf(text,"%d",counter);*/		/* start with counter */
-strcpy(text,dtoa(((double)counter),0));	/* comma-separated counter value */
+strcpy(text,dbltoa(((double)counter),0)); /* comma-separated counter value */
 if ( ordindex >= 0 )			/* need to tack on ordinal suffix */
   { strcat(text,"^{\\underline{\\rm~");	/* start with ^ and {\underline{\rm */
     strcat(text,ordinal[ordindex]);	/* then st,nd,rd, or th */
@@ -8585,6 +9537,135 @@
 
 
 /* ==========================================================================
+ * Function:	rasttoday ( expression, size, basesp, arg1, arg2, arg3 )
+ * Purpose:	handle \today
+ * --------------------------------------------------------------------------
+ * Arguments:	expression (I/O) char **  to first char of null-terminated
+ *				string immediately following \today,
+ *				and returning ptr immediately
+ *				following last character processed.
+ *		size (I)	int containing 0-5 default font size
+ *		basesp (I)	subraster *  to character (or subexpression)
+ *				immediately preceding \today
+ *				(unused, but passed for consistency)
+ *		arg1 (I)	int unused
+ *		arg2 (I)	int unused
+ *		arg3 (I)	int unused
+ * --------------------------------------------------------------------------
+ * Returns:	( subraster * )	subraster ptr to date stamp
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+subraster *rasttoday ( char **expression, int size, subraster *basesp,
+			int arg1, int arg2, int arg3 )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+char	*texsubexpr(), optarg[2050];	/* optional [+/-tzdelta,ifmt] args */
+char	*timestamp(), *today=optarg;	/* timestamp to be rasterized */
+subraster *rasterize(), *todaysp=NULL;	/* rasterize timestamp */
+int	ifmt=1, tzdelta=0;		/* default timestamp() args */
+/* -------------------------------------------------------------------------
+Get optional args \today[+/-tzdelta,ifmt]
+-------------------------------------------------------------------------- */
+/* --- check for optional \today[+/-tzdelta,ifmt] --- */
+if ( *(*expression) == '[' )		/* check for []-enclosed value */
+  { *expression = texsubexpr(*expression,optarg,2047,"[","]",0,0);
+    if ( *optarg != '\000' )		/* got optional arg */
+     { char *comma = strchr(optarg,','); /* comma between +/-tzdelta,ifmt */
+       int iarg, nargs=(comma==NULL?1:2); /* #optional args between []'s */
+       if ( comma != NULL ) *comma = '\000'; /* null-terminate first arg */
+       for ( iarg=1; iarg<=nargs; iarg++ ) /* process one or both args */
+	{ char *arg = (iarg==1?optarg:comma+1); /* choose 1st or 2nd arg */
+	  if ( isthischar(*arg,"+-") )	/* leading +/- signals tzdelta */
+	    tzdelta = atoi(arg);	/* so interpret arg as tzdelta */
+	  else ifmt = atoi(arg); }	/* else interpret args as ifmt */
+     } /* --- end-of-if(*optarg!='\0') --- */
+  } /* --- end-of-if(**expression=='[') --- */
+/* -------------------------------------------------------------------------
+Get timestamp and rasterize it
+-------------------------------------------------------------------------- */
+strcpy(today,"\\text{");		/* rasterize timestamp as text */
+strcat(today,timestamp(tzdelta,ifmt));	/* get timestamp */
+strcat(today,"}");			/* terminate \text{} braces */
+todaysp = rasterize(today,size);	/* rasterize timestamp */
+/* --- return timestamp raster to caller --- */
+/*end_of_job:*/
+  return ( todaysp );			/* return timestamp to caller */
+} /* --- end-of-function rasttoday() --- */
+
+
+/* ==========================================================================
+ * Function:	rastcalendar ( expression, size, basesp, arg1, arg2, arg3 )
+ * Purpose:	handle \calendar
+ * --------------------------------------------------------------------------
+ * Arguments:	expression (I/O) char **  to first char of null-terminated
+ *				string immediately following \calendar
+ *				and returning ptr immediately
+ *				following last character processed.
+ *		size (I)	int containing 0-5 default font size
+ *		basesp (I)	subraster *  to character (or subexpression)
+ *				immediately preceding \calendar
+ *				(unused, but passed for consistency)
+ *		arg1 (I)	int unused
+ *		arg2 (I)	int unused
+ *		arg3 (I)	int unused
+ * --------------------------------------------------------------------------
+ * Returns:	( subraster * )	subraster ptr to rendered one-month calendar
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+subraster *rastcalendar ( char **expression, int size, subraster *basesp,
+			int arg1, int arg2, int arg3 )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+char	*texsubexpr(), optarg[2050];	/* optional [year,month] args */
+char	*calendar(), *calstr=NULL;	/* calendar to be rasterized */
+subraster *rasterize(), *calendarsp=NULL; /* rasterize calendar string */
+int	year=0,month=0,day=0, argval=0;	/* default calendar() args */
+/* -------------------------------------------------------------------------
+Get optional args \today[+/-tzdelta,ifmt]
+-------------------------------------------------------------------------- */
+/* --- check for optional \calendar[year,month] --- */
+if ( *(*expression) == '[' )		/* check for []-enclosed value */
+  { *expression = texsubexpr(*expression,optarg,2047,"[","]",0,0);
+    if ( *optarg != '\000' )		/* got optional arg */
+     { char *comma = strchr(optarg,','), /* comma between year,month */
+       *comma2 = NULL;			/* second comma before day */
+       int iarg, nargs=(comma==NULL?1:2); /* #optional args between []'s */
+       if ( comma != NULL ) { *comma = '\000'; /*null-terminate first arg*/
+	if ( (comma2=strchr(comma+1,',')) != NULL ) /* have third arg */
+	 { *comma2 = '\000'; nargs++; } } /* null-term 2nd arg, bump count */
+       for ( iarg=1; iarg<=nargs; iarg++ ) /* process one or both args */
+	{ char *arg= (iarg==1?optarg:(iarg==2?comma+1:comma2+1)); /*get arg*/
+	  argval = atoi(arg);		/* interpret arg as integer */
+	  if ( iarg < 3 )		/* first two args are month,year */
+	   {if ( argval>1972 && argval<2100 ) year = argval; /* year value */
+	    else if ( argval>=1 && argval<=12 ) month = argval;} /*or month*/
+	  else				/* only 3rd arg can be day */
+	   if ( argval>=1 && argval<=31 ) day = argval; } /* day value */
+     } /* --- end-of-if(*optarg!='\0') --- */
+  } /* --- end-of-if(**expression=='[') --- */
+/* -------------------------------------------------------------------------
+Get calendar string and rasterize it
+-------------------------------------------------------------------------- */
+if ( msgfp!= NULL && msglevel>=9 )
+  fprintf(msgfp,"rastcalendar> year=%d, month=%d, day=%d\n",
+  year,month,day);
+calstr = calendar(year,month,day);		/* get calendar string */
+calendarsp = rasterize(calstr,size);	/* rasterize calendar string */
+/* --- return calendar raster to caller --- */
+/*end_of_job:*/
+  return ( calendarsp );		/* return calendar to caller */
+} /* --- end-of-function rastcalendar() --- */
+
+
+/* ==========================================================================
  * Function:	rastnoop ( expression, size, basesp, nargs, arg2, arg3 )
  * Purpose:	no op -- flush \escape without error
  * --------------------------------------------------------------------------
@@ -8594,7 +9675,7 @@
  *				following last character processed.
  *		size (I)	int containing 0-5 default font size
  *		basesp (I)	subraster *  to character (or subexpression)
- *				immediately preceding \fbox
+ *				immediately preceding \escape
  *				(unused, but passed for consistency)
  *		nargs (I)	int containing number of {}-args after
  *				\escape to be flushed along with it
@@ -8648,27 +9729,15 @@
 Allocations and Declarations
 -------------------------------------------------------------------------- */
 FILE	*fp = (FILE *)NULL /*,*fopen()*/; /*file pointer to opened filename*/
-char	texfile[2048] = "\000",		/* local copy of input filename */
+char	texfile[2048] = "\000",		/* local, edited copy of filename */
+	*rasteditfilename(),		/* prepend pathprefix if necessary */
 	amode[128] = "r";		/* test open mode if arg mode=NULL */
-int	ismode = 0,			/* true of mode!=NULL */
-	isprefix = (*pathprefix=='\000'?0:1); /* true if paths have prefix */
+int	ismode = 0;			/* true of mode!=NULL */
 /* --------------------------------------------------------------------------
 Check mode and open file
 -------------------------------------------------------------------------- */
-/* --- check filename --- */
-if ( filename != (char *)NULL )		/* caller passed filename arg */
- if ( strlen(filename) >= 1 )		/* make sure we got actual filename*/
-  { char *pfilename = filename;		/* ptr to 1st char of filename */
-    *texfile = '\000';			/* init filename as null string */
-    while ( isthischar(*pfilename," /\\") ) /* absolute paths invalid */
-      pfilename++;			/* so flush leading / or \ (or ' ')*/
-    if ( isprefix && *pfilename!='\000' ) /* paths preceded by prefix */
-      {	strcat(texfile,pathprefix);	/* init filename with path */
-	while (	memcmp(pfilename,"../",3)==0 /* have leading ../ */
-	  || memcmp(pfilename,"..\\",3)==0 ) /* or ..\ with prefix */
-	    pfilename += 3; }		/* flush leading ../ or ..\ */
-    strcat(texfile,pfilename);		/* local copy of given filename */
-    compress(texfile,' '); }		/* remove embedded blanks */
+/* --- edit filename --- */
+strcpy(texfile,rasteditfilename(filename)); /*edited copy of input filename*/
 /* --- check mode --- */
 if ( mode != (char *)NULL )		/* caller passed mode arg */
  if ( *mode != '\000' )			/* and it's not an empty string */
@@ -8697,13 +9766,67 @@
 
 
 /* ==========================================================================
- * Function:	rastreadfile ( filename, tag, value )
+ * Function:	rasteditfilename ( filename )
+ * Purpose:	edits filename to remove security problems,
+ *		e.g., removes all ../'s and ..\'s.
+ * --------------------------------------------------------------------------
+ * Arguments:	filename (I)	char * to null-terminated string containing
+ *				name of file to be edited
+ * --------------------------------------------------------------------------
+ * Returns:	( char * )	pointer to edited filename,
+ *				or empty string "\000" if any problem
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+char	*rasteditfilename ( char *filename )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+static	char editname[2048];		/*edited filename returned to caller*/
+char	*strchange();			/* prepend pathprefix if necessary */
+int	strreplace(),			/* remove ../'s and ..\'s */
+	isprefix = (*pathprefix=='\000'?0:1); /* true if paths have prefix */
+/* --------------------------------------------------------------------------
+edit filename
+-------------------------------------------------------------------------- */
+/* --- first check filename arg --- */
+*editname = '\000';			/* init edited name as empty string*/
+if ( filename == (char *)NULL ) goto end_of_job; /* no filename arg */
+if ( *filename == '\000' ) goto end_of_job; /* filename is an empty string */
+/* --- init edited filename --- */
+strcpy(editname,filename);		/* init edited name as input name */
+compress(editname,' ');			/* remove embedded blanks */
+/* --- remove leading or embedded ....'s --- */
+while ( strreplace(editname,"....",NULL,0) > 0 ) ;  /* squeeze out ....'s */
+/* --- remove leading / and \ and dots (and blanks) --- */
+if ( *editname != '\000' )		/* still have chars in filename */
+ while ( isthischar(*editname," ./\\") ) /* absolute paths invalid */
+   strcpy(editname,editname+1);		/* so flush leading / or \ (or ' ')*/
+if ( *editname == '\000' ) goto end_of_job; /* no chars left in filename */
+/* --- remove leading or embedded ../'s and ..\'s --- */
+while ( strreplace(editname,"../",NULL,0) > 0 ) ;  /* squeeze out ../'s */
+while ( strreplace(editname,"..\\",NULL,0) > 0 ) ; /* and ..\'s */
+while ( strreplace(editname,"../",NULL,0) > 0 ) ;  /* and ../'s again */
+/* --- prepend path prefix (if compiled with -DPATHPREFIX) --- */
+if ( isprefix && *editname!='\000' )	/* filename is preceded by prefix */
+  strchange(0,editname,pathprefix);	/* so prepend prefix */
+end_of_job:
+  return ( editname );			/* back with edited filename */
+} /* --- end-of-function rasteditfilename() --- */
+
+
+/* ==========================================================================
+ * Function:	rastreadfile ( filename, islock, tag, value )
  * Purpose:	Read filename, returning value as string
  *		between <tag>...</tag> or entire file if tag=NULL passed.
  * --------------------------------------------------------------------------
  * Arguments:	filename (I)	char * to null-terminated string containing
  *				name of file to read (preceded by path
  *				relative to mimetex executable)
+ *		islock (I)	int containing 1 to lock file while reading
+ *				(hopefully done by opening in "r+" mode)
  *		tag (I)		char * to null-terminated string containing
  *				html-like tagname.  File contents between
  *				<tag> and </tag> will be returned, or
@@ -8716,7 +9839,7 @@
  * Notes:     o
  * ======================================================================= */
 /* --- entry point --- */
-int	rastreadfile ( char *filename, char *tag, char *value )
+int	rastreadfile ( char *filename, int islock, char *tag, char *value )
 {
 /* -------------------------------------------------------------------------
 Allocations and Declarations
@@ -8726,8 +9849,9 @@
 	text[4096];			/* line from input file */
 char	*tagp, tag1[512], tag2[512];	/* left <tag> and right <tag/> */
 int	vallen=0, maxvallen=8000;	/* #chars in value, max allowed */
-int	status = 0;			/* status returned, 1=okay */
+int	status = (-1);			/* status returned, 1=okay */
 int	tagnum = 0;			/* tag we're looking for */
+/*int	islock = 1;*/			/* true to lock file */
 /* --------------------------------------------------------------------------
 Open file
 -------------------------------------------------------------------------- */
@@ -8737,11 +9861,13 @@
 /* --- open filename or filename.tex --- */
 if ( filename != (char *)NULL )		/* make sure we got filename arg */
   { strcpy(texfile,filename);		/* local copy of filename */
-    fp = rastopenfile(texfile,"r"); }	/* try opening it */
+    fp = rastopenfile(texfile,(islock?"r+":"r")); } /* try opening it */
 /* --- check that file opened --- */
 if ( fp == (FILE *)NULL )		/* failed to open file */
   { sprintf(value,"{\\normalsize\\rm[file %s?]}",texfile);
     goto end_of_job; }			/* return error message to caller */
+status = 0;				/* file opened successfully */
+if ( islock ) rewind(fp);		/* start at beginning of file */
 /* --------------------------------------------------------------------------
 construct <tag>'s
 -------------------------------------------------------------------------- */
@@ -8757,7 +9883,7 @@
 -------------------------------------------------------------------------- */
 while ( fgets(text,4090,fp) != (char *)NULL ) { /* read input till eof */
   switch ( tagnum ) {			/* look for left- or right-tag */
-    case 0: break;			/* no tag to look for */
+    case 0: status = 1; break;		/* no tag to look for */
     case 1:				/* looking for opening left <tag> */
       if ( (tagp=strstr(text,tag1)) == NULL ) break; /*haven't found it yet*/
       strcpy(text,tagp+strlen(tag1));	/* shift out preceding text */
@@ -8766,6 +9892,7 @@
       if ( (tagp=strstr(text,tag2)) == NULL ) break; /*haven't found it yet*/
       *tagp = '\000';			/* terminate line at tag */
       tagnum = 3;			/* done after this line */
+      status = 1;			/* successfully read tag */
       break;
     } /* ---end-of-switch(tagnum) --- */
   if ( tagnum != 1 ) {			/* no tag or left tag already found*/
@@ -8821,6 +9948,7 @@
 	/*isstrict = (seclevel>5? 1:0),*/ /*true only writes existing files*/
 	isnewfile = 0,			/* true if writing new file */
 	status = 0;			/* status returned, 1=okay */
+int	istimestamp = 0;		/* true to update <timestamp> tag */
 /* --------------------------------------------------------------------------
 check args
 -------------------------------------------------------------------------- */
@@ -8850,8 +9978,8 @@
 *filebuff = '\000';			/* init as empty file */
 if ( !isnewfile )			/* if file already exists */
  if ( istag )				/* and just rewriting one tag */
-  if ( rastreadfile(texfile,NULL,filebuff) /* read entire existing file */
-  ==   0 ) goto end_of_job;		/* signal error if failed to read */
+  if ( rastreadfile(texfile,1,NULL,filebuff) /* read entire existing file */
+  <=   0 ) goto end_of_job;		/* signal error if failed to read */
 /* --------------------------------------------------------------------------
 construct new file data if needed (entire file replaced by value if no tag)
 -------------------------------------------------------------------------- */
@@ -8908,13 +10036,15 @@
 !=  EOF ) status = 1;			/* signal success if succeeded */
 fclose ( fp );				/* close output file after writing */
 /* --- modify timestamp --- */
-if ( istag )				/* log mod time in tagged file */
- if ( strstr(tag,"timestamp") == (char *)NULL ) /* but avoid recursion */
-  { char fbuff[2048];			/* field buff <timestamp> value */
-    strcpy(fbuff,tag);			/* tag modified */
-    strcat(fbuff," modified at ");	/* spacer */
-    strcat(fbuff,timestamp());		/* start with timestamp */
-    rastwritefile(filename,"timestamp",fbuff,1); }
+if ( status > 0 )			/*forget timestamp if write failed*/
+ if ( istimestamp )			/* if we're updating timestamp */
+  if ( istag )				/* only log time in tagged file */
+   if ( strstr(tag,"timestamp") == (char *)NULL ) /* but avoid recursion */
+    { char fbuff[2048];			/* field buff <timestamp> value */
+      strcpy(fbuff,tag);		/* tag modified */
+      strcat(fbuff," modified at ");	/* spacer */
+      strcat(fbuff,timestamp(TZDELTA,0)); /* start with timestamp */
+      status = rastwritefile(filename,"timestamp",fbuff,1); }
 /* --- return status to caller --- */
 end_of_job:
   return ( status );			/* return status to caller */
@@ -8922,11 +10052,117 @@
 
 
 /* ==========================================================================
- * Function:	timestamp ( )
+ * Function:	calendar ( year, month, day )
+ * Purpose:	returns null-terminated character string containing
+ *		\begin{array}...\end{array} for the one-month calendar
+ *		specified by year=1973...2099 and month=1...12.
+ *		If either arg out-of-range, today's value is used.
+ * --------------------------------------------------------------------------
+ * Arguments:	year (I)	int containing 1973...2099 or 0 for current
+ *				year
+ *		month (I)	int containing 1...12 or 0 for current month
+ *		day (I)		int containing day to emphasize or 0
+ * --------------------------------------------------------------------------
+ * Returns:	( char * )	char ptr to null-terminated buffer
+ *				containing \begin{array}...\end{array}
+ *				string that will render calendar for
+ *				requested month, or NULL for any error.
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+char	*calendar( int year, int month, int day )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+static char calbuff[4096];		/* calendar returned to caller */
+time_t	time_val = (time_t)(0);		/* binary value returned by time() */
+struct tm *tmstruct=(struct tm *)NULL, *localtime(); /* interpret time_val */
+int	yy=0, mm=0, dd=0;		/* today (emphasize today's dd) */
+int	idd=1, iday=0, daynumber();	/* day-of-week for idd=1...31 */
+char	aval[64];			/* ascii day or 4-digit year */
+/* --- calendar data --- */
+static	char *monthnames[] = { "?", "January", "February", "March", "April",
+	 "May", "June", "July", "August", "September", "October",
+	"November", "December", "?" } ;
+static	int modays[] =
+	{ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0 };
+/* -------------------------------------------------------------------------
+initialization
+-------------------------------------------------------------------------- */
+/* --- get current date/time --- */
+time((time_t *)(&time_val));		/* get date and time */
+tmstruct = localtime((time_t *)(&time_val)); /* interpret time_val */
+yy  =  1900 + (int)(tmstruct->tm_year);	/* current four-digit year */
+mm  =  1 + (int)(tmstruct->tm_mon);	/* current month, 1-12 */
+dd  =  (int)(tmstruct->tm_mday);	/* current day, 1-31 */
+/* --- check args --- */
+if ( year<1973 || year>2099 ) year  = yy; /* current year if out-of-bounds */
+if ( month<1 || month>12 ) month = mm;	/* current month if out-of-bounds */
+if ( month==mm && year==yy && day==0 )	/* current month and default day */
+  day = dd;				/* emphasize current day */
+modays[2] = (year%4==0?29:28);		/* Feb has 29 days in leap years */
+/* --- initialize calendar string --- */
+strcpy(calbuff,"{\\begin{gather}");	/* center `month year` above cal */
+strcat(calbuff,"\\small\\text{");	/* month set in roman */
+strcat(calbuff,monthnames[month]);	/* insert month name */
+strcat(calbuff," }");			/* add a space */
+sprintf(aval,"%d",year);		/* convert year to ascii */
+strcat(calbuff,aval);			/* add year */
+strcat(calbuff,"\\\\");			/* end top row */
+strcat(calbuff,				/* now begin calendar arrayr */
+	"\\begin{array}{|c|c|c|c|c|c|c|CCCCCC} \\hline"
+	"\\tiny\\text{Sun} & \\tiny\\text{Mon} & \\tiny\\text{Tue} &"
+	"\\tiny\\text{Wed} & \\tiny\\text{Thu} & \\tiny\\text{Fri} &"
+	"\\tiny\\text{Sat} \\\\ \\hline " );
+/* -------------------------------------------------------------------------
+generate calendar
+-------------------------------------------------------------------------- */
+for ( idd=1; idd<=modays[month]; idd++ ) /* run through days of month */
+  {
+  /* --- get day-of-week for this day --- */
+  iday = 1 + (daynumber(year,month,idd)%7); /* 1=Monday...7=Sunday */
+  if ( iday == 7 ) iday = 0;		/* now 0=Sunday...6=Saturday */
+  /* --- may need empty cells at beginning of month --- */
+  if ( idd == 1 )			/* first day of month */
+   if ( iday > 0 )			/* need to skip cells */
+    { strcpy(aval,"\\ &\\ &\\ &\\ &\\ &\\ &\\ &\\ &\\ &\\"); /*cells to skip*/
+      aval[3*iday] = '\000';		/*skip cells preceding 1st of month*/
+      strcat(calbuff,aval); }		/* add skip string to buffer */
+  /* --- add idd to current cell --- */
+  sprintf(aval,"%d",idd);		/* convert idd to ascii */
+  if ( idd == day			/* emphasize today's date */
+  /*&&   month==mm && year==yy*/ )	/* only if this month's calendar */
+   { strcat(calbuff,"{\\fs{-1}\\left\\langle "); /*emphasize, 1 size smaller*/
+     strcat(calbuff,aval);		/* put in idd */
+     strcat(calbuff,"\\right\\rangle}"); } /* finish emphasis */
+  else					/* not today's date */
+    strcat(calbuff,aval);		/* so just put in idd */
+  /* --- terminate cell --- */
+  if ( idd < modays[month] )		/* not yet end-of-month */
+   if ( iday < 6 )			/* still have days left in week */
+    strcat(calbuff,"&");		/* new cell in same week */
+   else					/* reached end-of-week */
+    strcat(calbuff,"\\\\ \\hline");	/* so start new week */
+  } /* --- end-of-for(idd) --- */
+strcat(calbuff,"\\\\ \\hline");		/* final underline at end-of-month */
+/* --- return calendar to caller --- */
+strcat(calbuff,"\\end{array}\\end{gather}}"); /* terminate array */
+return ( calbuff );			/* back to caller with calendar */
+} /* --- end-of-function calendar() --- */
+
+
+/* ==========================================================================
+ * Function:	timestamp ( tzdelta, ifmt )
  * Purpose:	returns null-terminated character string containing
  *		current date:time stamp as ccyy-mm-dd:hh:mm:ss{am,pm}
  * --------------------------------------------------------------------------
- * Arguments:	( none )
+ * Arguments:	tzdelta (I)	integer, positive or negative, containing
+ *				containing number of hours to be added or
+ *				subtracted from system time (to accommodate
+ *				your desired time zone).
+ *		ifmt (I)	integer containing 0 for default format
  * --------------------------------------------------------------------------
  * Returns:	( char * )	ptr to null-terminated buffer
  *				containing current date:time stamp
@@ -8934,40 +10170,209 @@
  * Notes:     o
  * ======================================================================= */
 /* --- entry point --- */
-char	*timestamp( )
+char	*timestamp( int tzdelta, int ifmt )
 {
 /* -------------------------------------------------------------------------
 Allocations and Declarations
 -------------------------------------------------------------------------- */
-static	char timebuff[64];		/* date:time buffer back to caller */
+static	char timebuff[256];		/* date:time buffer back to caller */
 /*long	time_val = 0L;*/		/* binary value returned by time() */
 time_t	time_val = (time_t)(0);		/* binary value returned by time() */
 struct tm *tmstruct=(struct tm *)NULL, *localtime(); /* interpret time_val */
-int	year=0, hour=0,ispm=1;		/* adjust year, and set am/pm hour */
+int	year=0, hour=0,ispm=1,		/* adjust year, and set am/pm hour */
+	month=0, day=0;			/* adjust day and month for delta  */
+int	tzadjust();			/* time zone adjustment function */
+int	daynumber();			/* #days since Jan 1, 1973 */
+static	char *daynames[] = { "Monday", "Tuesday", "Wednesday",
+	 "Thursday", "Friday", "Saturday", "Sunday" } ;
+static	char *monthnames[] = { "?", "January", "February", "March", "April",
+	 "May", "June", "July", "August", "September", "October",
+	"November", "December", "?" } ;
 /* -------------------------------------------------------------------------
 get current date:time, adjust values, and and format stamp
 -------------------------------------------------------------------------- */
+/* --- first init returned timebuff in case of any error --- */
+*timebuff = '\000';
 /* --- get current date:time --- */
 time((time_t *)(&time_val));		/* get date and time */
 tmstruct = localtime((time_t *)(&time_val)); /* interpret time_val */
-/* --- adjust year and hour as necessary --- */
-year = (int)(tmstruct->tm_year);	/* local copy of year */
-hour = (int)(tmstruct->tm_hour);	/* local copy of hour */
+/* --- extract fields --- */
+year  = (int)(tmstruct->tm_year);	/* local copy of year,  0=1900 */
+month = (int)(tmstruct->tm_mon) + 1;	/* local copy of month, 1-12 */
+day   = (int)(tmstruct->tm_mday);	/* local copy of day,   1-31 */
+hour  = (int)(tmstruct->tm_hour);	/* local copy of hour,  0-23 */
+/* --- adjust year --- */
 year += 1900;				/* set century in year */
-if ( hour < 12 )			/* am check */
-  { ispm=0;				/* reset pm flag */
-    if ( hour == 0 ) hour = 12; }	/* set 00hrs = 12am */
-if ( hour > 12 ) hour -= 12;		/* pm check sets 13hrs to 1pm, etc */
+/* --- adjust for timezone --- */
+tzadjust(tzdelta,&year,&month,&day,&hour);
+/* --- check params --- */
+if ( hour<0  || hour>23
+||   day<1   || day>31
+||   month<1 || month>12
+||   year<1973 ) goto end_of_job;
+/* --- adjust hour for am/pm --- */
+switch ( ifmt )
+  {
+  default:
+  case 0:
+    if ( hour < 12 )			/* am check */
+     { ispm=0;				/* reset pm flag */
+       if ( hour == 0 ) hour = 12; }	/* set 00hrs = 12am */
+    if ( hour > 12 ) hour -= 12;	/* pm check sets 13hrs to 1pm, etc */
+    break;
+  } /* --- end-of-switch(ifmt) --- */
 /* --- format date:time stamp --- */
-sprintf(timebuff,"%04d-%02d-%02d:%02d:%02d:%02d%s",
-  year,(int)((tmstruct->tm_mon)+1),(int)(tmstruct->tm_mday),
-  hour,(int)(tmstruct->tm_min),(int)(tmstruct->tm_sec),((ispm)?"pm":"am"));
-return ( timebuff );			/* return stamp to caller */
+switch ( ifmt )
+  {
+  default:
+  case 0:  /* --- 2005-03-05:11:49:59am --- */
+    sprintf(timebuff,"%04d-%02d-%02d:%02d:%02d:%02d%s", year,month,day,
+    hour,(int)(tmstruct->tm_min),(int)(tmstruct->tm_sec),((ispm)?"pm":"am"));
+    break;
+  case 1:  /* --- Saturday, March 5, 2005 --- */
+    sprintf(timebuff,"%s, %s %d, %d",
+    daynames[daynumber(year,month,day)%7],monthnames[month],day,year);
+    break;
+  case 2: /* --- Saturday, March 5, 2005, 11:49:59am --- */
+    sprintf(timebuff,"%s, %s %d, %d, %d:%02d:%02d%s",
+    daynames[daynumber(year,month,day)%7],monthnames[month],day,year,
+    hour,(int)(tmstruct->tm_min),(int)(tmstruct->tm_sec),((ispm)?"pm":"am"));
+    break;
+  case 3: /* --- 11:49:59am --- */
+    sprintf(timebuff,"%d:%02d:%02d%s",
+    hour,(int)(tmstruct->tm_min),(int)(tmstruct->tm_sec),((ispm)?"pm":"am"));
+    break;
+  } /* --- end-of-switch(ifmt) --- */
+end_of_job:
+  return ( timebuff );			/* return stamp to caller */
 } /* --- end-of-function timestamp() --- */
 
 
 /* ==========================================================================
- * Function:	dtoa ( dblval, npts )
+ * Function:	tzadjust ( tzdelta, year, month, day, hour )
+ * Purpose:	Adjusts hour, and day,month,year if necessary,
+ *		by delta increment to accommodate your time zone.
+ * --------------------------------------------------------------------------
+ * Arguments:	tzdelta (I)	integer, positive or negative, containing
+ *				containing number of hours to be added or
+ *				subtracted from given time (to accommodate
+ *				your desired time zone).
+ *		year (I)	addr of int containing        4-digit year
+ *		month (I)	addr of int containing month  1=Jan - 12=Dec.
+ *		day (I)		addr of int containing day    1-31 for Jan.
+ *		hour (I)	addr of int containing hour   0-23
+ * Returns:	( int )		1 for success, or 0 for error
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+int	tzadjust ( int tzdelta, int *year, int *month, int *day, int *hour )
+{
+/* --------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+int	yy = *year, mm = *month, dd = *day, hh = *hour; /*dereference args*/
+/* --- calendar data --- */
+static	int modays[] =
+	{ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0 };
+/* --------------------------------------------------------------------------
+check args
+-------------------------------------------------------------------------- */
+if ( mm<1 || mm>12 ) return(-1);	/* bad month */
+if ( dd<1 || dd>modays[mm] ) return(-1); /* bad day */
+if ( hh<0 || hh>23 ) return(-1);	/* bad hour */
+if ( tzdelta>23 || tzdelta<(-23) ) return(-1); /* bad tzdelta */
+/* --------------------------------------------------------------------------
+make adjustments
+-------------------------------------------------------------------------- */
+/* --- adjust hour --- */
+hh += tzdelta;				/* apply caller's delta */
+/* --- adjust for feb 29 --- */
+modays[2] = (yy%4==0?29:28);		/* Feb has 29 days in leap years */
+/* --- adjust day --- */
+if ( hh < 0 )				/* went to preceding day */
+  { dd--;  hh += 24; }
+if ( hh > 23 )				/* went to next day */
+  { dd++;  hh -= 24; }
+/* --- adjust month --- */
+if ( dd < 1 )				/* went to preceding month */
+  { mm--;  dd = modays[mm]; }
+if ( dd > modays[mm] )			/* went to next month */
+  { mm++;  dd = 1; }
+/* --- adjust year --- */
+if ( mm < 1 )				/* went to preceding year */
+  { yy--;  mm = 12;  dd = modays[mm]; }
+if ( mm > 12 )				/* went to next year */
+  { yy++;  mm = 1;   dd = 1; }
+/* --- back to caller --- */
+*year=yy; *month=mm; *day=dd; *hour=hh;	/* reset adjusted args */
+return ( 1 );
+} /* --- end-of-function tzadjust() --- */
+
+
+/* ==========================================================================
+ * Function:	daynumber ( year, month, day )
+ * Purpose:	Returns number of actual calendar days from Jan 1, 1973
+ *		to the given date (e.g., bvdaynumber(1974,1,1)=365).
+ * --------------------------------------------------------------------------
+ * Arguments:	year (I)	int containing year -- may be either 1995 or
+ *				95, or may be either 2010 or 110 for those
+ *				years.
+ *		month (I)	int containing month, 1=Jan thru 12=Dec.
+ *		day (I)		int containing day of month, 1-31 for Jan, etc.
+ * Returns:	( int )		Number of days from Jan 1, 1973 to given date,
+ *				or -1 for error (e.g., year<1973).
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+int	daynumber ( int year, int month, int day )
+{
+/* --------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+/* --- returned value (note: returned as a default "int") --- */
+int	ndays;				/* #days since jan 1, year0 */
+/* --- initial conditions --- */
+static	int year0 = 73, 		/* jan 1 was a monday, 72 was a leap */
+	days4yrs = 1461,		/* #days in 4 yrs = 365*4 + 1 */
+	days1yr  = 365;
+/* --- table of accumulated days per month (last index not used) --- */
+static	int modays[] =
+	{ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
+/* --- variables for #days since day0 --- */
+int	nyears, nfouryrs;		/*#years, #4-yr periods since year0*/
+/* --------------------------------------------------------------------------
+Check input
+-------------------------------------------------------------------------- */
+if ( month < 1 || month > 12 )		/*month used as index, so must be ok*/
+	return ( -1 );			/* otherwise, forget it */
+if ( year >= 1900 ) year -= 1900;	/*use two-digit years (3 after 2000)*/
+/* --------------------------------------------------------------------------
+Find #days since jan 1, 1973
+-------------------------------------------------------------------------- */
+/* --- figure #complete 4-year periods and #remaining yrs till current --- */
+nyears = year - year0;			/* #years since year0 */
+if ( nyears < 0 ) return ( -1 );	/* we're not working backwards */
+nfouryrs = nyears/4;			/* #complete four-year periods */
+nyears -= (4*nfouryrs); 		/* remainder excluding current year*/
+/* --- #days from jan 1, year0 till jan 1, this year --- */
+ndays = (days4yrs*nfouryrs)		/* #days in 4-yr periods */
+      +  (days1yr*nyears);		/* +remaining days */
+/*if ( year > 100 ) ndays--;*/		/* subtract leap year for 2000AD */
+/* --- add #days within current year --- */
+ndays += (modays[month-1] + (day-1));
+/* --- may need an extra day if current year is a leap year --- */
+if ( nyears == 3 )			/*three preceding yrs so this is 4th*/
+    { if ( month > 2 )			/* past feb so need an extra day */
+	/*if ( year != 100 )*/		/* unless it's 2000AD */
+	  ndays++; }			/* so add it in */
+return ( (int)(ndays) );		/* #days back to caller */
+} /* --- end-of-function daynumber() --- */
+
+
+/* ==========================================================================
+ * Function:	dbltoa ( dblval, npts )
  * Purpose:	Converts double to ascii, in financial format
  *		(e.g., comma-separated and negatives enclosed in ()'s).
  * -------------------------------------------------------------------------
@@ -8980,9 +10385,9 @@
  * Notes:     o
  * ======================================================================= */
 /* --- entry point --- */
-char	*dtoa ( dblval, npts )
-double	dblval;
-int	npts;
+char	*dbltoa ( double dblval, int npts )
+/* double dblval;
+   int	npts; */
 {
 /* -------------------------------------------------------------------------
 Allocations and Declarations
@@ -9048,7 +10453,7 @@
 if ( isneg ) *finptr++ = ')';		/*trailing paren for negative value*/
 *finptr = '\000';			/* null-terminate converted double */
 return ( finval );			/* converted double back to caller */
-} /* --- end-of-function dtoa() --- */
+} /* --- end-of-function dbltoa() --- */
 
 
 /* ==========================================================================
@@ -9279,6 +10684,39 @@
 	(eebitval==fgbitval && ssbitval==fgbitval) ||	/*lower-right edge*/
 	(ssbitval==fgbitval && wwbitval==fgbitval) ||	/*lower-left  edge*/
 	(wwbitval==fgbitval && nnbitval==fgbitval) ;	/*upper-left  edge*/
+  /* ---check top/bot left/right edges for corners (added by j.forkosh)--- */
+  if ( 1 ) {				/* true to perform test */
+    int	isbghorz=0, isfghorz=0, isbgvert=0, isfgvert=0; /* horz/vert edges */
+    isbghorz =				/* top or bottom edge is all bg */
+	(nwbitval+nnbitval+nebitval == 3*bgbitval) ||	/* top edge bg */
+	(swbitval+ssbitval+sebitval == 3*bgbitval) ;	/* bottom edge bg */
+    isfghorz =				/* top or bottom edge is all fg */
+	(nwbitval+nnbitval+nebitval == 3*fgbitval) ||	/* top edge fg */
+	(swbitval+ssbitval+sebitval == 3*fgbitval) ;	/* bottom edge fg */
+    isbgvert =				/* left or right edge is all bg */
+	(nwbitval+wwbitval+swbitval == 3*bgbitval) ||	/* left edge bg */
+	(nebitval+eebitval+sebitval == 3*bgbitval) ;	/* right edge bg */
+    isfgvert =				/* left or right edge is all bg */
+	(nwbitval+wwbitval+swbitval == 3*fgbitval) ||	/* left edge fg */
+	(nebitval+eebitval+sebitval == 3*fgbitval) ;	/* right edge fg */
+    if ( (isbghorz && isbgvert && (bitval==fgbitval))	/* we're at an...*/
+    ||   (isfghorz && isfgvert && (bitval==bgbitval)) )	/*...inside corner */
+	continue;					/* don't antialias */
+    } /* --- end-of-if(1) --- */
+  /* --- check #gaps for checkerboard (added by j.forkosh) --- */
+  if ( 0 ) {				/* true to perform test */
+    int	ngaps=0, mingaps=1,maxgaps=2;	/* count #fg/bg flips (max=4 noop) */
+    if ( nwbitval!=nnbitval ) ngaps++;	/* upper-left =? upper */
+    if ( nnbitval!=nebitval ) ngaps++;	/* upper =? upper-right */
+    if ( nebitval!=eebitval ) ngaps++;	/* upper-right =? right */
+    if ( eebitval!=sebitval ) ngaps++;	/* right =? lower-right */
+    if ( sebitval!=ssbitval ) ngaps++;	/* lower-right =? lower */
+    if ( ssbitval!=swbitval ) ngaps++;	/* lower =? lower-left */
+    if ( swbitval!=wwbitval ) ngaps++;	/* lower-left =? left */
+    if ( wwbitval!=nwbitval ) ngaps++;	/* left =? upper-left */
+    if ( ngaps > 0 ) ngaps /= 2;	/* each gap has 2 bg/fg flips */
+    if ( ngaps<mingaps || ngaps>maxgaps ) continue;
+    } /* --- end-of-if(1) --- */
   /* --- antialias if necessary --- */
   if ( (isbgalias && isbgedge)		/* alias pixel surrounding bg */
   ||   (isfgalias && isfgedge)		/* alias pixel surrounding fg */
@@ -9849,7 +11287,7 @@
 -------------------------------------------------------------------------- */
 static	char *copyright =		/* copyright, gnu/gpl notice */
  "+-----------------------------------------------------------------------+\n"
- "|mimeTeX vers 1.61, Copyright(c) 2002-2005, John Forkosh Associates, Inc|\n"
+ "|mimeTeX vers 1.63, Copyright(c) 2002-2006, John Forkosh Associates, Inc|\n"
  "+-----------------------------------------------------------------------+\n"
  "| mimeTeX is free software, licensed to you under terms of the GNU/GPL, |\n"
  "|           and comes with absolutely no warranty whatsoever.           |\n"
@@ -9890,12 +11328,16 @@
 int	emitcache();			/* emit cached image if it exists */
 int	isquery = 0,			/* true if input from QUERY_STRING */
 	isqempty = 0,			/* true if query string empty */
+	isqforce = 0,			/* true to force query emulation */
 	isqlogging = 0,			/* true if logging in query mode */
 	isformdata = 0,			/* true if input from html form */
-	isdumpimage = 0;		/* true to dump image on stdout */
+	isinmemory = 1,			/* true to generate image in memory*/
+	isdumpimage = 0,		/* true to dump image on stdout */
+	isdumpbuffer = 0;		/* true to dump to memory buffer */
 /* --- rasterization --- */
-subraster *rasterize(), *sp;		/* rasterize expression */
-raster	*border_raster(), *bp;		/* put a border around raster */
+subraster *rasterize(), *sp=NULL;	/* rasterize expression */
+raster	*border_raster(), *bp=NULL;	/* put a border around raster */
+int	delete_subraster();		/* for clean-up at end-of-job */
 int	type_raster(), type_bytemap(),	/* screen dump function prototypes */
 	xbitmap_raster();		/* mime xbitmap output function */
 /* --- http_referer --- */
@@ -9918,9 +11360,14 @@
   void	GIF_SetColor(),GIF_SetTransparent(); /* ...gifsave enntry points */
 #endif
 char	*gif_outfile = (char *)NULL,	/* gif output defaults to stdout */
+	gif_buffer[64000] = "\000",	/* or gif written in memory buffer */
 	cachefile[256] = "\000",	/* full path and name to cache file*/
 	*md5str();			/* md5 has of expression */
 int	maxage = 7200;			/* max-age is two hours */
+/* --- pbm/pgm (-g switch) --- */
+int	ispbmpgm = 0;			/* true to write pbm/pgm file */
+int	type_pbmpgm(), ptype=0;		/* entry point, graphic format */
+char	*pbm_outfile = (char *)NULL;	/* output file defaults to stdout */
 /* --- anti-aliasing --- */
 intbyte	*bytemap_raster = NULL,		/* anti-aliased bitmap */
 	colors[256];			/* grayscale vals in bytemap */
@@ -9948,6 +11395,7 @@
 /* --- set global variables --- */
 msgfp = stdout;				/* for comamnd-line mode output */
 isss = issupersampling;			/* set supersampling flag */
+gifSize = 0;				/* signal that image not in memory */
 shrinkfactor = shrinkfactors[NORMALSIZE]; /* set shrinkfactor */
 /* ---
  * check QUERY_STRING query for expression overriding command-line arg
@@ -9962,7 +11410,7 @@
     *name = getenv("SERVER_NAME"), *addr = getenv("SERVER_ADDR");
     if ( host!=NULL || name!=NULL || addr!=NULL ) /* assume http query */
       {	isquery = 1;			/* set flag to signal query */
-	strcpy(expression,"\\red\\small\\rm~missing~query~string"); }
+	strcpy(expression,"\\red\\small\\fbox{\\rm~no~query~string}"); }
     isqempty = 1;			/* signal empty query string */
   } /* --- end-of-if(!isquery) --- */
 /* ---
@@ -9997,22 +11445,30 @@
     if ( !isstopsignal			/* haven't seen stopsignal switch */
     &&   *argv[argnum] == '-' )		/* and have some '-' switch */
       {
-      char flag = tolower(*(argv[argnum]+1)); /* single char following '-' */
-      int  arglen = strlen(argv[argnum]) - 1; /* #chars following - */
+      char *field = argv[argnum] + 1;	/* ptr to char(s) following - */
+      char flag = tolower(*field);	/* single char following '-' */
+      int  arglen = strlen(field);	/* #chars following - */
       argnum++;		/* arg following flag/switch is usually its value */
       nswitches++;			/* another switch on command line */
-      if ( isstrict && arglen!=1 )	/* only single-char switch allowed */
+      if ( isstrict &&			/* if strict checking then... */
+      !isthischar(flag,"g") && arglen!=1 ) /*must be single-char switch*/
 	{ nbadargs++; argnum--; }	/* so ignore longer -xxx switch */
       else				/* process single-char -x switch */
        switch ( flag ) {		/* see what user wants to tell us */
 	/* --- ignore uninterpreted flag --- */
 	default:  nbadargs++;                              argnum--;  break;
 	/* --- adjustable program parameters (not checking input) --- */
+	case 'b': isdumpimage++; isdumpbuffer++;           argnum--;  break;
 	case 'd': isdumpimage++;                           argnum--;  break;
 	case 'e': isdumpimage++;           gif_outfile=argv[argnum];  break;
 	case 'f': isdumpimage++;                   infilearg=argnum;  break;
+	case 'g': ispbmpgm++;
+	     if ( arglen > 1 ) ptype = atoi(field+1);	/* -g2 ==> ptype=2 */
+	     if ( 1 || *argv[argnum]=='-' ) argnum--; /*next arg is -switch*/
+	     else pbm_outfile = argv[argnum]; break; /*next arg is filename*/
 	case 'm': msglevel = atoi(argv[argnum]);                      break;
 	case 'o': istransparent = 0;                       argnum--;  break;
+	case 'q': isqforce = 1;                            argnum--;  break;
 	case 's': size = atoi(argv[argnum]);                          break;
 	} /* --- end-of-switch(flag) --- */
       } /* --- end-of-if(*argv[argnum]=='-') --- */
@@ -10024,8 +11480,10 @@
       else nbadargs++;			/* infile and expression invalid */
     } /* --- end-of-while(argc>++argnum) --- */
  if ( msglevel>=999 && msgfp!=NULL )	/* display command-line info */
-  fprintf(msgfp,"argc=%d, progname=%s, #args=%d, #badargs=%d\n",
-  argc,progname,nargs,nbadargs);
+  { fprintf(msgfp,"argc=%d, progname=%s, #args=%d, #badargs=%d\n",
+    argc,progname,nargs,nbadargs);
+    fprintf(msgfp,"cachepath=\"%.50s\" pathprefix=\"%.50s\"\n",
+    cachepath,pathprefix); }
  /* ---
   * decide whether command-line input overrides query_string
   * -------------------------------------------------------- */
@@ -10057,6 +11515,19 @@
       strcat(expression,instring);	/* concat line to end of expression*/
      fclose ( infile ); }	/*close input file after reading expression*/
   } /* --- end-of-if(infilearg>0) --- */
+ /* ---
+  * check if emulating query (for testing)
+  * -------------------------------------- */
+ if ( isqforce ) isquery = 1;		/* emulate query string processing */
+ /* ---
+  * check if emitting pbm/pgm graphic
+  * --------------------------------- */
+ if ( isgoodargs && ispbmpgm > 0 )	/* have a good -g arg */
+  if ( 1 && gif_outfile != NULL )	/* had an -e switch with file */
+   if ( *gif_outfile != '\000' )	/* make sure string isn't empty */
+     { pbm_outfile = gif_outfile;	/* use -e switch file for pbm/pgm */
+       gif_outfile = (char *)NULL;	/* reset gif output file */
+       /*isdumpimage--;*/ }		/* and decrement -e count */
  } /* --- end-of-if(!isquery) --- */
 /* ---
  * check for <form> input
@@ -10221,11 +11692,14 @@
 /* ---
  * check for image caching
  * ----------------------- */
-if ( strstr(expression,"\\counter") != NULL /* can't cache \counter{} */
-||   strstr(expression,"\\input")   != NULL /* can't cache \input{} */
-||   strstr(expression,"\\nocach")  != NULL /* no caching requested */
+if ( strstr(expression,"\\counter")  != NULL /* can't cache \counter{} */
+||   strstr(expression,"\\input")    != NULL /* can't cache \input{} */
+||   strstr(expression,"\\today")    != NULL /* can't cache \today */
+||   strstr(expression,"\\calendar") != NULL /* can't cache \calendar */
+||   strstr(expression,"\\nocach")   != NULL /* no caching requested */
+||   isformdata				/* don't cache user form input */
  ) { iscaching = 0;			/* so turn caching off */
-     maxage = 2; }			/* and set max-age to two seconds */
+     maxage = 5; }			/* and set max-age to 5 seconds */
 if ( isquery )				/* don't cache command-line images */
  if ( iscaching )			/* image caching enabled */
   {
@@ -10239,11 +11713,12 @@
    strcat(cachefile,md5hash);		/* add md5 hash of expression */
    strcat(cachefile,".gif");		/* finish with .gif extension */
    gif_outfile = cachefile;		/* signal GIF_Create() to cache */
-   /* --- (always) emit mime content-type line --- */
-   fprintf( stdout, "Cache-Control: max-age=%d\n",maxage );
-   fprintf( stdout, "Content-type: image/gif\n\n" );
+   /* --- emit mime content-type line --- */
+   if ( 0 )				/* now done in emitcache() */
+    { fprintf( stdout, "Cache-Control: max-age=%d\n",maxage );
+      fprintf( stdout, "Content-type: image/gif\n\n" ); }
    /* --- emit cached image if it already exists --- */
-   if ( emitcache(cachefile) > 0 )	/* cached image emitted */
+   if ( emitcache(cachefile,maxage,0) > 0 ) /* cached image emitted */
     goto end_of_job;			/* so nothing else to do */
    /* --- log caching request --- */
    if ( msglevel >= 1			/* check if logging */
@@ -10258,7 +11733,7 @@
         !=   NULL )			/* ignore logging if can't open */
 	 { int isreflogged = 0;		/* set true if http_referer logged */
 	   fprintf(filefp,"%s                 %s\n", /* timestamp, md5 file */
-	    timestamp(),cachefile+strlen(cachepath)); /* (path not shown) */
+	    timestamp(TZDELTA,0),cachefile+strlen(cachepath)); /*skip path*/
 	   fprintf(filefp,"%s\n",expression); /* expression in filename */
 	   if ( http_referer != NULL )	/* show referer if we have one */
 	    if ( *http_referer != '\000' )    /* and if not an empty string*/
@@ -10305,6 +11780,8 @@
 else					/* for mime xbitmaps must have... */
   bp = border_raster(sp->image,0,0,0,1); /* image width multiple of 8 bits */
 sp->image = bitmap_raster = bp;		/* global copy for gif,png output */
+if ( ispbmpgm && ptype<2 )		/* -g switch or -g1 switch */
+  type_pbmpgm(bp,ptype,pbm_outfile);	/* emit b/w pbm file */
 /* -------------------------------------------------------------------------
 generate anti-aliased bytemap from (bordered) bitmap
 -------------------------------------------------------------------------- */
@@ -10351,6 +11828,11 @@
 	{ isaa = 0;			/* so turn off anti-aliasing */
 	  ncolors = 2; }		/* and reset for black&white */
       } /* --- end-of-if(isaa) --- */
+     if ( isaa && ispbmpgm && ptype>1 ) { /* -g2 switch  */
+      raster pbm_raster;		/*construct arg for write_pbmpgm()*/
+      pbm_raster.width  = bp->width;  pbm_raster.height = bp->height;
+      pbm_raster.pixsz  = 8;  pbm_raster.pixmap = (pixbyte *)bytemap_raster;
+      type_pbmpgm(&pbm_raster,ptype,pbm_outfile); } /*write grayscale file*/
     } /* --- end-of-if(isaa) --- */
   } /* --- end-of-if(isaa) --- */
 /* -------------------------------------------------------------------------
@@ -10392,7 +11874,7 @@
 emit xbitmap or gif image, and exit
 -------------------------------------------------------------------------- */
 if (  isquery				/* called from browser (usual) */
-||    isdumpimage			/* or to emit dump of image */
+||    (isdumpimage && !ispbmpgm)	/* or to emit gif dump of image */
 ||    msglevel >= 99 )			/* or for debugging */
  {
  int  igray = 0;			/* grayscale index */
@@ -10400,23 +11882,44 @@
  /* ------------------------------------------------------------------------
  emit GIF image
  ------------------------------------------------------------------------- */
+  /* --- don't use memory buffer if outout file given --- */
+  if ( gif_outfile != NULL ) isinmemory = 0; /* reset memory buffer flag */
   /* --- emit mime content-type line --- */
   if ( !isdumpimage			/* don't mix ascii with image dump */
-  &&   !iscaching )			/* already emitted if caching */
+  &&   !isinmemory			/* done below if in memory */
+  &&   !iscaching )			/* done by emitcache() if caching */
     { fprintf( stdout, "Cache-Control: max-age=%d\n",maxage );
       /*fprintf( stdout, "Expires: Fri, 31 Oct 2003 23:59:59 GMT\n" );*/
       /*fprintf( stdout, "Last-Modified: Wed, 15 Oct 2003 01:01:01 GMT\n" );*/
       fprintf( stdout, "Content-type: image/gif\n\n" ); }
+  /* --- write output to memory buffer, possibly for testing --- */
+  if ( isinmemory			/* want gif written to memory */
+  ||   isdumpbuffer )			/*or dump memory buffer for testing*/
+   if ( gif_outfile == NULL )		/* and don't already have a file */
+    { *gif_buffer = '\000';		/* init buffer as empty string */
+      memset(gif_buffer,0,4096);	/* zero out buffer */
+      gif_outfile = gif_buffer;		/* and point outfile to buffer */
+      if ( isdumpbuffer )		/* buffer dump test requested */
+	isdumpbuffer = 999; }		/* so signal dumping to buffer */
   /* --- initialize gifsave library and colors --- */
   if ( msgfp!=NULL && msglevel>=999 )
-    fprintf(msgfp,"main> calling GIF_Create(*,%d,%d,%d,8)\n",
-    bp->width,bp->height,ncolors);
+    { fprintf(msgfp,"main> calling GIF_Create(*,%d,%d,%d,8)\n",
+      bp->width,bp->height,ncolors); fflush(msgfp); }
   while ( 1 )		/* init gifsave lib, and retry if caching fails */
     { int status = GIF_Create(gif_outfile, bp->width,bp->height, ncolors, 8);
       if ( status == 0 ) break;		/* continue if succeeded */
       if ( iscaching == 0 ) goto end_of_job; /* quit if failed */
       iscaching = 0;			/* retry without cache file */
-      gif_outfile = (char *)NULL; }	/* emit images to stdout */
+      isdumpbuffer = 0;			/* reset isdumpbuffer signal */
+      if ( isquery ) isinmemory = 1;	/* force in-memory image generation*/
+      if ( isinmemory ) {		/* using memory buffer */
+	gif_outfile = gif_buffer;	/* emit images to memory buffer */
+	*gif_outfile = '\000'; }	/* empty string signals buffer */
+      else {				/* or */
+	gif_outfile = (char *)NULL;	/* emit images to stdout */
+	fprintf( stdout, "Cache-Control: max-age=%d\n",maxage );
+	fprintf( stdout, "Content-type: image/gif\n\n" ); }
+    } /* --- end-of-while(1) --- */
   GIF_SetColor(0,bgred,bggreen,bgblue);	/* background white if all 255 */
   if ( !isaa )				/* just b&w if not anti-aliased */
     { GIF_SetColor(1,fgred,fggreen,fgblue); /* foreground black if all 0 */
@@ -10441,9 +11944,26 @@
   /* --- emit compressed gif image (to stdout or cache file) --- */
   GIF_CompressImage(0, 0, -1, -1, GetPixel); /* emit gif */
   GIF_Close();				/* close file */
-  /* --- may need to emit image from cached file --- */
-  if ( isquery && iscaching )		/* caching enabled */
-    emitcache(cachefile);		/* cached image (hopefully) emitted*/
+  if ( msgfp!=NULL && msglevel>=9 )
+    { fprintf(msgfp,"main> created gifSize=%d\n", gifSize);
+      fflush(msgfp); }
+  /* --- may need to emit image from cached file or from memory --- */
+  if ( isquery				/* have an actual query string */
+  ||   isdumpimage			/* or dumping image */
+  ||   msglevel >= 99 ) {		/* or debugging */
+  int maxage2 = (isdumpimage?(-1):maxage); /* no headers if dumping image */
+   if ( iscaching )			/* caching enabled */
+     emitcache(cachefile,maxage2,0);	/* cached image (hopefully) emitted*/
+   else if ( isinmemory )		/* or emit image from memory buffer*/
+     emitcache(gif_buffer,maxage2,1); }	/* emitted from memory buffer */
+  /* --- for testing, may need to write image buffer to file --- */
+  if ( isdumpbuffer > 99 )		/* gif image in memory buffer */
+   if ( gifSize > 0 )			/* and it's not an empty buffer */
+    { FILE *dumpfp = fopen("mimetex.gif","wb"); /* dump to mimetex.gif */
+      if ( dumpfp != NULL )		/* file opened successfully */
+	{ fwrite(gif_buffer,sizeof(unsigned char),gifSize,dumpfp); /*write*/
+	  fclose(dumpfp); }		/* and close file */
+    } /* --- end-of-if(isdumpbuffer>99) --- */
  #else
  /* ------------------------------------------------------------------------
  emit mime XBITMAP image
@@ -10453,17 +11973,79 @@
  } /* --- end-of-if(isquery) --- */
 /* --- exit --- */
 end_of_job:
-  if ( bytemap_raster != NULL ) free(bytemap_raster); /*free bytemap_raster*/
+  if ( !isss )				/*bytemap raster in sp for supersamp*/
+   if ( bytemap_raster != NULL ) free(bytemap_raster);/*free bytemap_raster*/
   if (colormap_raster != NULL )free(colormap_raster); /*and colormap_raster*/
+  if ( 0 && gif_buffer != NULL ) free(gif_buffer); /* free malloced buffer */
+  if ( 1 && sp != NULL ) delete_subraster(sp);	/* and free expression */
   if ( msgfp != NULL			/* have message/log file open */
   &&   msgfp != stdout )		/* and it's not stdout */
-   { fprintf(msgfp,"mimeTeX> successful end-of-job at %s\n",timestamp());
+   { fprintf(msgfp,"mimeTeX> successful end-of-job at %s\n",
+       timestamp(TZDELTA,0));
      fprintf(msgfp,"%s\n",dashes);	/* so log separator line */
      fclose(msgfp); }			/* and close logfile */
-  exit ( 0 );
+  /* --- dump memory leaks in debug window if in MS VC++ debug mode --- */
+  #if defined(_CRTDBG_MAP_ALLOC)
+    _CrtDumpMemoryLeaks();
+  #endif
+  /* --- exit() if not running as Windows DLL (see CreateGifFromEq()) --- */
+  #if !defined(_USRDLL)
+    exit ( 0 );
+  #endif
 } /* --- end-of-function main() --- */
 
 /* ==========================================================================
+ * Function:	CreateGifFromEq ( expression, gifFileName )
+ * Purpose:	shortcut method to create GIF file for expression,
+ *		with antialising and all other capabilities
+ * --------------------------------------------------------------------------
+ * Arguments:	expression (I)	char *ptr to null-terminated string
+ *				containing LaTeX expression to be rendred
+ *		gifFileName (I)	char *ptr to null-terminated string
+ *				containing name of output gif file
+ * --------------------------------------------------------------------------
+ * Returns:	( int )		exit value from main (0 if successful)
+ * --------------------------------------------------------------------------
+ * Notes:     o	This function is the entry point when mimeTeX is built
+ *		as a Win32 DLL rather then a standalone app or CGI
+ *	      o	Contributed to mimeTeX by Shital Shah.  See his homepage
+ *		  http://www.shitalshah.com
+ *	      o	Shital discusses the mimeTeX Win32 DLL project at
+ *		  http://www.codeproject.com/dotnet/Eq2Img.asp
+ *		and you can download his latest code from
+ *		  http://www.shitalshah.com/dev/eq2img_all.zip
+ * ======================================================================= */
+/* --- include function to expose Win32 DLL to outside world --- */
+#if defined(_USRDLL)
+  extern _declspec(dllexport)int _cdecl
+	CreateGifFromEq ( char *expression, char *gifFileName );
+#endif
+/* --- entry point --- */
+int	CreateGifFromEq ( char *expression, char *gifFileName )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+int	main();			/* main() akways returns an int */
+/* --- set constants --- */
+int	argc = 4;		/* count of args supplied to main() */
+char	*argv[5] =		/* command line args to run with -e option */
+	  { "MimeTeXWin32DLL", "-e", /* constant args */
+	    /*gifFileName, expression,*/ NULL, NULL, NULL };
+/* --- set argv[]'s not computable at load time --- */
+argv[2] = gifFileName;		/* args are -e gifFileName */
+argv[3] = expression;		/* and now  -e gifFileName expression */
+/* -------------------------------------------------------------------------
+Run mimeTeX in command-line mode with -e (export) option, and then return
+-------------------------------------------------------------------------- */
+return	main ( argc, argv
+	  #ifdef DUMPENVP
+	    , NULL
+	  #endif
+	) ;
+} /* --- end-of-function CreateGifFromEq() --- */
+
+/* ==========================================================================
  * Function:	isstrstr ( char *string, char *snippets, int iscase )
  * Purpose:	determine whether any substring of 'string'
  *		matches any of the comma-separated list of 'snippets',
@@ -10669,7 +12251,7 @@
 /* -------------------------------------------------------------------------
 Log each variable
 -------------------------------------------------------------------------- */
-fprintf(fp,"%s\n",timestamp());		/* emit timestamp before first var */
+fprintf(fp,"%s\n",timestamp(TZDELTA,0)); /*emit timestamp before first var*/
 if ( message != NULL )			/* optional message supplied */
  fprintf(fp,"  MESSAGE = %s\n",message); /* emit caller-supplied message */
 if ( logvars != (logdata *)NULL )	/* have logvars */
@@ -10686,36 +12268,52 @@
 } /* --- end-of-function logger() --- */
 
 /* ==========================================================================
- * Function:	emitcache ( cachefile )
+ * Function:	emitcache ( cachefile, maxage, isbuffer )
  * Purpose:	dumps bytes from cachefile to stdout
  * --------------------------------------------------------------------------
  * Arguments:	cachefile (I)	pointer to null-terminated char string
- *				containing full path to file to be dumped
+ *				containing full path to file to be dumped,
+ *				or contains buffer of bytes to be dumped
+ *		maxage (I)	int containing maxage. in seconds, for
+ *				http header, or -1 to not emit headers
+ *		isbuffer (I)	1 if cachefile is buffer of bytes to be
+ *				dumped
  * --------------------------------------------------------------------------
  * Returns:	( int )		#bytes dumped (0 signals error)
  * --------------------------------------------------------------------------
  * Notes:     o
  * ======================================================================= */
 /* --- entry point --- */
-int	emitcache ( char *cachefile )
+int	emitcache ( char *cachefile, int maxage, int isbuffer )
 {
 /* -------------------------------------------------------------------------
 Allocations and Declarations
 -------------------------------------------------------------------------- */
-FILE	*cacheptr = fopen(cachefile,"rb"), /*open cachefile for binary read*/
-	*emitptr = stdout;		/* emit cachefile to stdout */
-unsigned char buffer[64];		/* characters from cachefile */
-int	buflen = 32,			/* #bytes we try to read from cache*/
-	nread = 0,			/* #bytes actually read */
-	nbytes = 0;			/* total #bytes emitted */
+int	nbytes=gifSize, readcachefile(); /* read cache file */
+FILE	*emitptr = stdout;		/* emit cachefile to stdout */
+unsigned char buffer[64000];		/* bytes from cachefile */
+unsigned char *buffptr = buffer;	/* ptr to buffer */
 /* -------------------------------------------------------------------------
 initialization
 -------------------------------------------------------------------------- */
 /* --- check that files opened okay --- */
-if ( cacheptr == (FILE *)NULL		/* failed to open cachefile */
-||   emitptr == (FILE *)NULL )		/* or failed to open emit file */
+if ( emitptr == (FILE *)NULL )		/* failed to open emit file */
   goto end_of_job;			/* so return 0 bytes to caller */
-/* --- set stdout to binary mode (for Windows) --- */
+/* --- read the file if necessary --- */
+if ( isbuffer )				/* cachefile is buffer */
+ buffptr = (unsigned char *)cachefile;	/* so reset buffer pointer */
+else					/* cachefile is file name */
+ if ( (nbytes = readcachefile(cachefile,buffer)) /* read the file */
+ < 1 ) goto end_of_job;			/* quit if file not read */
+/* --- first emit http headers if requested --- */
+if ( maxage >= 0 )			/* caller wants http headers */
+ { /* --- emit mime content-type line --- */
+   fprintf( emitptr, "Cache-Control: max-age=%d\n",maxage );
+   fprintf( emitptr, "Content-Length: %d\n",nbytes );
+   fprintf( emitptr, "Content-type: image/gif\n\n" ); }
+/* -------------------------------------------------------------------------
+set stdout to binary mode (for Windows)
+-------------------------------------------------------------------------- */
 /* emitptr = fdopen(STDOUT_FILENO,"wb"); */  /* doesn't work portably, */
 #ifdef WINDOWS				/* so instead... */
   #ifdef HAVE_SETMODE			/* prefer (non-portable) setmode() */
@@ -10732,23 +12330,68 @@
 /* -------------------------------------------------------------------------
 emit bytes from cachefile
 -------------------------------------------------------------------------- */
+/* --- write bytes to stdout --- */
+if ( fwrite(buffptr,sizeof(unsigned char),nbytes,emitptr) /* write buffer */
+<    nbytes )				/* failed to write all bytes */
+  nbytes = 0;				/* reset total count to 0 */
+end_of_job:
+  return ( nbytes );			/* back with #bytes emitted */
+} /* --- end-of-function emitcache() --- */
+
+/* ==========================================================================
+ * Function:	readcachefile ( cachefile, buffer )
+ * Purpose:	read cachefile into buffer
+ * --------------------------------------------------------------------------
+ * Arguments:	cachefile (I)	pointer to null-terminated char string
+ *				containing full path to file to be read
+ *		buffer (O)	pointer to unsigned char string
+ *				returning contents of cachefile
+ *				(max 64000 bytes)
+ * --------------------------------------------------------------------------
+ * Returns:	( int )		#bytes read (0 signals error)
+ * --------------------------------------------------------------------------
+ * Notes:     o
+ * ======================================================================= */
+/* --- entry point --- */
+int	readcachefile ( char *cachefile, unsigned char *buffer )
+{
+/* -------------------------------------------------------------------------
+Allocations and Declarations
+-------------------------------------------------------------------------- */
+FILE	*cacheptr = fopen(cachefile,"rb"); /*open cachefile for binary read*/
+unsigned char cachebuff[64];		/* bytes from cachefile */
+int	buflen = 32,			/* #bytes we try to read from file */
+	nread = 0,			/* #bytes actually read from file */
+	maxbytes = 64000,		/* max #bytes returned in buffer */
+	nbytes = 0;			/* total #bytes read */
+/* -------------------------------------------------------------------------
+initialization
+-------------------------------------------------------------------------- */
+/* --- check that files opened okay --- */
+if ( cacheptr == (FILE *)NULL ) goto end_of_job; /*failed to open cachefile*/
+/* --- check that output buffer provided --- */
+if ( buffer == (unsigned char *)NULL ) goto end_of_job; /* no buffer */
+/* -------------------------------------------------------------------------
+read bytes from cachefile
+-------------------------------------------------------------------------- */
 while ( 1 )
   {
   /* --- read bytes from cachefile --- */
-  nread = fread(buffer,sizeof(unsigned char),buflen,cacheptr); /* read */
+  nread = fread(cachebuff,sizeof(unsigned char),buflen,cacheptr); /* read */
+  if ( nbytes + nread > maxbytes )	/* block too big for buffer */
+    nread = maxbytes - nbytes;		/* so truncate it */
   if ( nread < 1 ) break;		/* no bytes left in cachefile */
-  /* --- write bytes to stdout --- */
-  if ( fwrite(buffer,sizeof(unsigned char),nread,emitptr) /* write buffer */
-  <    nread)				/* failed to write all bytes */
-    { nbytes = 0;			/* reset total count to 0 */
-      goto end_of_job; }		/* and signal error to caller */
+  /* --- store bytes in buffer --- */
+  memcpy(buffer+nbytes,cachebuff,nread); /* copy current block to buffer */
+  /* --- ready to read next block --- */
   nbytes += nread;			/* bump total #bytes emitted */
   if ( nread < buflen ) break;		/* no bytes left in cachefile */
+  if ( nbytes >= maxbytes ) break;	/* avoid buffer overflow */
   } /* --- end-of-while(1) --- */
 end_of_job:
   if ( cacheptr != NULL ) fclose(cacheptr); /* close file if opened */
   return ( nbytes );			/* back with #bytes emitted */
-} /* --- end-of-function emitcache() --- */
+} /* --- end-of-function readcachefile() --- */
 
 /* ==========================================================================
  * Function:	md5str ( instr )
Index: loncom/cgi/mimeTeX/mimetex.h
diff -u loncom/cgi/mimeTeX/mimetex.h:1.1 loncom/cgi/mimeTeX/mimetex.h:1.2
--- loncom/cgi/mimeTeX/mimetex.h:1.1	Mon Feb 28 14:08:11 2005
+++ loncom/cgi/mimeTeX/mimetex.h	Fri Mar 24 18:08:33 2006
@@ -51,20 +51,26 @@
 /* --- default STATIC=static, else set up static for parts --- */
 #if defined(PARTS)
   #if defined(PART1)
-    #define STATIC /* not static */
     #define INITVALS
+    #define STATIC /* not static */
   #else
     #define STATIC extern
   #endif
 #else
-  #define STATIC static
   #define INITVALS
+  #if defined(DRIVER)
+    #define STATIC static
+  #else
+    #define STATIC static /* not static (won't work) */
+  #endif
 #endif
 /* --- declare global symbol --- */
 #ifdef INITVALS
   #define GLOBAL(type,variable,value) STATIC type variable = (value)
+  /* #define SHARED(type,variable,value) type variable = (value) */
 #else
   #define GLOBAL(type,variable,value) STATIC type variable
+  /* #define SHARED(type,variable,value) STATIC type variable */
 #endif
 
 
@@ -83,6 +89,32 @@
 #define	bitmask(nbits)	((1<<(nbits))-1)	/* a mask of nbits 1's */
 #define getbitfld(x,bit1,nbits)	(((x)>>(bit1)) & (bitmask(nbits)))
 
+/* --------------------------------------------------------------------------
+macros to get/clear/set a single 4-bit nibble (in rasters)
+-------------------------------------------------------------------------- */
+#define	getnibble(x,i)				/* get i-th 4-bit nibble */ \
+	( (i)%2==0? ((x)[(i)/2] & 0xF0) >> 4:	/* left/high nibble */      \
+	(x)[(i)/2] & 0x0F )			/* right/low-order nibble */
+#define	clearnibble(x,i) ((x)[(i)/2] &= ((i)%2==0?0x0F:0xF0)) /*clear ith*/
+#define	setnibble(x,i,n)			/*set ith nibble of x to n*/\
+	if ( (i)%2 == 0 )			/* setting left nibble */   \
+	  { clearnibble(x,i);			/* first clear the nibble*/ \
+	    (x)[(i)/2] |= ((n)&0x0F)<<4; }	/* set high-order 4 bits */ \
+	else					/* setting right nibble */  \
+	 if ( 1 )				/* dummy -- always true */  \
+	  { clearnibble(x,i);			/* first clear the nibble*/ \
+	    (x)[(i)/2] |= (n)&0x0F; }		/* set low-order 4 bits */  \
+	 else					/* let user supply final ;*/
+/* --- macros to get/set/clear byte (format=2) or nibble (format=3) --- */
+#define	getbyfmt(fmt,x,i)			/*byte(fmt=2) or nibble(3)*/\
+	( ((fmt)==2? ((int)((x)[(i)])) :	/* get full 8-bit byte */   \
+	   ((fmt)==3? getnibble(x,i) : 0)) )	/* or 4-bit nibble (err=0)*/
+#define	clearbyfmt(fmt,x,i)			/*byte(fmt=2) or nibble(3)*/\
+	if((fmt)==2) (x)[(i)] = ((unsigned char)0); /* clear 8-bit byte */  \
+	else if((fmt)==3) clearnibble(x,i)	/* or clear 4-bit nibble */
+#define	setbyfmt(fmt,x,i,n)			/*byte(fmt=2) or nibble(3)*/\
+	if((fmt)==2) (x)[(i)] = ((unsigned char)n); /*set full 8-bit byte*/ \
+	else if((fmt)==3) setnibble(x,i,n); else /* or set 4-bit nibble */
 
 /* -------------------------------------------------------------------------
 Raster structure (bitmap or bytemap, along with its width and height in bits)
@@ -107,6 +139,7 @@
   ------------------------------------------------------------------------ */
   int	width;				/* #pixels wide */
   int	height;				/* #pixels high */
+  int	format;				/* 1=bitmap, 2=gf/8bits,3=gf/4bits */
   int	pixsz;				/* #bits per pixel, 1 or 8 */
   /* -----------------------------------------------------------------------
   memory for raster
@@ -121,6 +154,9 @@
 /* --- #bytes in pixmap raster needed to contain width x height pixels --- */
 #define	bitmapsz(width,height) (((width)*(height)+7)/8) /*#bytes if a bitmap*/
 #define	pixmapsz(rp) (((rp)->pixsz)*bitmapsz((rp)->width,(rp)->height))
+/* --- #bytes in raster struct, by its format --- */
+#define	pixbytes(rp) ((rp)->format==1? pixmapsz(rp) : /*#bytes in bitmap*/  \
+	((rp)->format==2? (rp)->pixsz : (1+(rp)->pixsz)/2) ) /*gf-formatted*/
 /* --- pixel index calculation used by getpixel() and setpixel() below --- */
 #define	PIXDEX(rp,irow,icol) (((irow)*((rp)->width))+(icol))/*irow,icol indx*/
 /* --- get value of pixel, either one bit or one byte, at (irow,icol) --- */
@@ -137,16 +173,17 @@
 	else				/* set 8-bit bytemap pixel value */ \
 	  if ( (rp)->pixsz == 8 )	/* check pixsz=8 for bytemap */	    \
 	     ((rp)->pixmap)[PIXDEX(rp,(irow),(icol))]=(pixbyte)(value);     \
-	  else				/* user supplies final ; */
+	  else				/* let user supply final ; */
 
 /* --------------------------------------------------------------------------
 some char classes tokenizer needs to recognize, and macros to check for them
 -------------------------------------------------------------------------- */
 /* --- some character classes --- */
+#define	istextmode	(fontinfo[fontnum].istext==1) /* true for text font*/
 #define	WHITEMATH	"~ \t\n\r\f\v"	/* white chars in display/math mode*/
 #define	WHITETEXT	"\t\n\r\f\v"	/* white chars in text mode */
 #define	WHITEDELIM	"~ "		/*always ignored following \sequence*/
-#define	WHITESPACE	(istext>0&&istext!=3?WHITETEXT:WHITEMATH) /* white */
+#define	WHITESPACE	(istextmode?WHITETEXT:WHITEMATH) /*whitespace chars*/
 #define	LEFTBRACES	"{([<|-="	/* opening delims are left{([< |,|| */
 #define	RIGHTBRACES	"})]>|-="	/* corresponding closing delims */
 #define	ESCAPE		"\\"		/* introduce escape sequence */
@@ -229,28 +266,61 @@
 /* --- class aliases --- */
 #define	ARROW		RELATION
 /* --- families for mathchardef (TeXbook, top of pg.431) --- */
-#define	CMR10		(0)		/* normal roman */
-#define	CMMI10		(1)		/* math italic */
-#define	CMMIB10		(2)		/* math italic bold */
-#define	CMSY10		(3)		/* math symbol */
-#define	CMEX10		(4)		/* math extension */
-#define	RSFS10		(5)		/* rsfs \scrA ... \scrZ */
-#define	BBOLD10		(6)		/* blackboard bold \mathbb A ... */
+#define	CMR10		(1)		/* normal roman */
+#define	CMMI10		(2)		/* math italic */
+#define	CMMIB10		(3)		/* math italic bold */
+#define	CMSY10		(4)		/* math symbol */
+#define	CMEX10		(5)		/* math extension */
+#define	RSFS10		(6)		/* rsfs \scrA ... \scrZ */
+#define	BBOLD10		(7)		/* blackboard bold \mathbb A ... */
+#define	STMARY10	(8)		/* stmaryrd math symbols */
 #define	NOTACHAR	(99)		/* e.g., \frac */
 /* --- dummy argument value for handlers --- */
 #define	NOVALUE		(-989898)	/*charnum,family,class used as args*/
 
 /* ---
+ * font family information
+ * ----------------------- */
+STATIC	int  nfontinfo			/* legal font#'s are 1...nfontinfo */
+#ifdef INITVALS
+  = 7
+#endif
+  ;
+STATIC	struct {char *name; int family; int istext; int class;}
+  /* note: class(1=upper,2=alpha,3=alnum,4=lower,5=digit,9=all) now unused */
+  fontinfo[]
+#ifdef INITVALS
+  = {/* --- name family istext class --- */
+    { "\\math",	   0,       0,  0 }, /*(0) default math mode */
+    { "\\mathcal", CMSY10,  0,  1 }, /*(1) calligraphic, uppercase */
+    { "\\mathscr", RSFS10,  0,  1 }, /*(2) rsfs/script, uppercase */
+    { "\\textrm",  CMR10,   1, -1 }, /*(3) \rm,\text{abc} --> {\textrm~abc}*/
+    { "\\textit",  CMMI10,  1, -1 }, /*(4) \it,\textit{abc}-->{\textit~abc}*/
+    { "\\mathbb",  BBOLD10, 0, -1 }, /*(5) \bb,\mathbb{abc}-->{\mathbb~abc}*/
+    { "\\mathbf",  CMMIB10, 0, -1 }, /*(6) \bf,\mathbf{abc}-->{\mathbf~abc}*/
+    { "\\mathrm",  CMR10,   0, -1 }, /*(7) \mathrm */
+    {  NULL,	   0,       0,  0 } }
+#endif
+  ; /* --- end-of-fonts[] --- */
+
+/* ---
  * additional font attributes (only size is implemented)
  * ----------------------------------------------------- */
-/* --- font sizes 0-5 = tiny,small,normal,large,Large,LARGE (roughly) --- */
-#define	LARGESTSIZE	(5)
+/* --- font sizes 0-7 = tiny,small,normal,large,Large,LARGE,huge,Huge --- */
+#define	LARGESTSIZE	(7)
+#ifdef DEFAULTSIZE
+  #ifndef NORMALSIZE
+    #define NORMALSIZE (DEFAULTSIZE)
+  #endif
+#endif
 #ifndef	NORMALSIZE
-  #define NORMALSIZE	(2)
+  /*#define NORMALSIZE	(2)*/
+  #define NORMALSIZE	(3)
 #endif
 #ifndef	DISPLAYSIZE
   /* --- automatically sets scripts in \displaystyle when fontsize>= --- */
-  #define DISPLAYSIZE	(3) /*(NORMALSIZE+1)*/
+  /*#define DISPLAYSIZE	(NORMALSIZE+1)*/
+  #define DISPLAYSIZE	(3)
 #endif
 
 /* ---
@@ -321,7 +391,7 @@
 fontfamily
   {
   /* -----------------------------------------------------------------------
-  several sizes, fontdef[0...4] = footnote, small, normal, large, Large  
+  several sizes, fontdef[0-7]=tiny,small,normal,large,Large,LARGE,huge,HUGE
   ------------------------------------------------------------------------ */
   int	family;				/* font family e.g., 2=math symbol */
   chardef *fontdef[LARGESTSIZE+2];	/*small=(fontdef[1])[charnum].image*/
@@ -329,7 +399,7 @@
 /* --- dummy font table (for contexts requiring const) --- */
 #define dummyfonttable \
   { \
-   {   -999,{   NULL,    NULL,    NULL,    NULL,    NULL,    NULL}} \
+   {   -999, {  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL  } } \
   }
 
 
@@ -351,16 +421,18 @@
 STATIC	fontfamily aafonttable[]
 #ifdef INITVALS
  =
- {/* ------------------------------------------------------------------------
-    family   size=0,       1,       2,       3,       4,      5
-  ------------------------------------------------------------------------ */
-  {  CMR10,{  cmr83,  cmr100,  cmr118,  cmr131,  cmr160,  cmr180}},
-  { CMMI10,{ cmmi83, cmmi100, cmmi118, cmmi131, cmmi160, cmmi180}},
-  { CMSY10,{ cmsy83, cmsy100, cmsy118, cmsy131, cmsy160, cmsy180}},
-  { CMEX10,{ cmex83, cmex100, cmex118, cmex131, cmex160, cmex180}},
-  { RSFS10,{ rsfs83, rsfs100, rsfs118, rsfs131, rsfs160, rsfs180}},
-  {BBOLD10,{bbold83,bbold100,bbold118,bbold131,bbold160,bbold180}},
-  {   -999,{   NULL,    NULL,    NULL,    NULL,    NULL,    NULL}}
+ {/* -----------------------------------------------------------------------------------------
+    family     size=0,        1,        2,        3,        4,        5,        6,        7
+  ----------------------------------------------------------------------------------------- */
+  {   CMR10,{   cmr83,   cmr100,   cmr118,   cmr131,   cmr160,   cmr180,   cmr210,   cmr250}},
+  {  CMMI10,{  cmmi83,  cmmi100,  cmmi118,  cmmi131,  cmmi160,  cmmi180,  cmmi210,  cmmi250}},
+  { CMMIB10,{ cmmib83, cmmib100, cmmib118, cmmib131, cmmib160, cmmib180, cmmib210, cmmib250}},
+  {  CMSY10,{  cmsy83,  cmsy100,  cmsy118,  cmsy131,  cmsy160,  cmsy180,  cmsy210,  cmsy250}},
+  {  CMEX10,{  cmex83,  cmex100,  cmex118,  cmex131,  cmex160,  cmex180,  cmex210,  cmex250}},
+  {  RSFS10,{  rsfs83,  rsfs100,  rsfs118,  rsfs131,  rsfs160,  rsfs180,  rsfs210,  rsfs250}},
+  { BBOLD10,{ bbold83, bbold100, bbold118, bbold131, bbold160, bbold180, bbold210, bbold250}},
+  {STMARY10,{stmary83,stmary100,stmary118,stmary131,stmary160,stmary180,stmary210,stmary250}},
+  {    -999,{    NULL,     NULL,     NULL,     NULL,     NULL,     NULL,     NULL,     NULL}}
  }
 #endif
  ; /* --- end-of-aafonttable[] --- */
@@ -370,16 +442,18 @@
  STATIC fontfamily ssfonttable[]
  #ifdef INITVALS
   =
-  {/* -----------------------------------------------------------------------
-     family   size=0,       1,       2,       3,       4,      5
-   ----------------------------------------------------------------------- */
-   {  CMR10,{ cmr180, cmr1200, cmr1200, cmr1200, cmr1200, cmr1200}},
-   { CMMI10,{cmmi180, cmmi100, cmmi118, cmmi131, cmmi160, cmmi180}},
-   { CMSY10,{cmsy180, cmsy100, cmsy118, cmsy131, cmsy160, cmsy180}},
-   { CMEX10,{cmex180, cmex100, cmex118, cmex131, cmex160, cmex180}},
-   { RSFS10,{rsfs180, rsfs100, rsfs118, rsfs131, rsfs160, rsfs180}},
-   {BBOLD10,{bbold180,bbold100,bbold118,bbold131,bbold160,bbold180}},
-   {   -999,{   NULL,    NULL,    NULL,    NULL,    NULL,    NULL}}
+  {/* -----------------------------------------------------------------------------------------
+    family     size=0,        1,        2,        3,        4,        5,        6,        7
+   ----------------------------------------------------------------------------------------- */
+   {  CMR10,{  cmr250,  cmr1200,  cmr1200,  cmr1200,  cmr1200,  cmr1200,  cmr1200,  cmr1200}},
+   { CMMI10,{ cmmi250,  cmmi100,  cmmi118,  cmmi131,  cmmi160,  cmmi180,  cmmi210,  cmmi250}},
+   {CMMIB10,{cmmib250, cmmib100, cmmib118, cmmib131, cmmib160, cmmib180, cmmib210, cmmib250}},
+   { CMSY10,{ cmsy250,  cmsy100,  cmsy118,  cmsy131,  cmsy160,  cmsy180,  cmsy210,  cmsy250}},
+   { CMEX10,{ cmex250,  cmex100,  cmex118,  cmex131,  cmex160,  cmex180,  cmex210,  cmex250}},
+   { RSFS10,{ rsfs250,  rsfs100,  rsfs118,  rsfs131,  rsfs160,  rsfs180,  rsfs210,  rsfs250}},
+  { BBOLD10,{bbold250, bbold100, bbold118, bbold131, bbold160, bbold180, bbold210, bbold250}},
+ {STMARY10,{stmary250,stmary100,stmary118,stmary131,stmary160,stmary180,stmary210,stmary250}},
+   {   -999,{    NULL,     NULL,     NULL,     NULL,     NULL,     NULL,     NULL,     NULL}}
   }
  #endif
   ; /* --- end-of-ssfonttable[] --- */
@@ -417,7 +491,7 @@
 STATIC	int shrinkfactors[]		/*supersampling shrinkfactor by size*/
 #ifdef INITVALS
  =
-    {  3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
+    {  3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
   /*{ 15,13,11, 9, 7, 5, 3, 1 }*/
 #endif
  ;
@@ -438,7 +512,8 @@
 subraster *rastaccent();		/* handle \hat \vec \braces, etc */
 subraster *rastfont();			/* handle \cal{} \scr{}, etc */
 subraster *rastbegin();			/* handle \begin{}...\end{} */
-subraster *rastleft();			/* handle \left{}...\right{} */
+subraster *rastleft();			/* handle \left...\right */
+subraster *rastmiddle();		/* handle \left...\middle...\right */
 subraster *rastarray();			/* handle \array{...} */
 subraster *rastpicture();		/* handle \picture(,){...} */
 subraster *rastline();			/* handle \line(xinc,yinc){xlen} */
@@ -449,6 +524,8 @@
 subraster *rastfbox();			/* handle \fbox{expr} */
 subraster *rastinput();			/* handle \input{filename} */
 subraster *rastcounter();		/* handle \counter{filename} */
+subraster *rasttoday();			/* handle \today[+/-tzdelta,ifmt] */
+subraster *rastcalendar();		/* handle \calendar[yaer,month] */
 subraster *rastnoop();			/* handle \escape's to be flushed */
 
 /* --- sqrt --- */
@@ -464,7 +541,7 @@
 #define	OVERBRACE	(18)		/* \overbrace */
 #define	UNDERBRACE	(19)		/* \underbrace */
 /* --- flags/modes --- */
-#define	ISTEXT		(1)		/* set istext */
+#define	ISFONTFAM	(1)		/* set font family */
 #define	ISDISPLAYSTYLE	(2)		/* set isdisplaystyle */
 #define	ISDISPLAYSIZE	(21)		/* set displaysize */
 #define	ISFONTSIZE	(3)		/* set fontsize */
@@ -481,7 +558,7 @@
 #define	ISCOLOR		(9)		/* set color */
 #define	ISREVERSE	(10)		/* set reverse video colors */
 #define	ISSTRING	(11)		/* set ascii string mode */
-#define	ISSQUASH	(12)		/* set (minimum) "squash" margin */
+#define	ISSMASH		(12)		/* set (minimum) "smash" margin */
 
 /* ---
  * mathchardefs for symbols recognized by mimetex
@@ -495,6 +572,7 @@
     -------------------------------------------------------- */
     /* --- commands --- */
     { "\\left", NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rastleft) },
+    { "\\middle",NOVALUE,NOVALUE,NOVALUE, (HANDLER)(rastmiddle) },
     { "\\frac",   1,	NOVALUE,NOVALUE,  (HANDLER)(rastfrac) },
     { "\\over",   1,	NOVALUE,NOVALUE,  (HANDLER)(rastfrac) },
     { "\\atop",   0,	NOVALUE,NOVALUE,  (HANDLER)(rastfrac) },
@@ -525,6 +603,8 @@
     { "\\rotatebox",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastrotate) },
     { "\\fbox", NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rastfbox) },
     { "\\input",NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rastinput) },
+    { "\\today",NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rasttoday) },
+    { "\\calendar",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastcalendar) },
     { "\\counter",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastcounter) },
     /* --- spaces --- */
     { "\\/",	1,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
@@ -568,8 +648,9 @@
     { "\\rm",		  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
     { "\\text",		  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
     { "\\textrm",	  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
-    { "\\mathrm",	  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
-    { "\\mathbf",	  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
+    { "\\mathrm",	  7,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
+    { "\\mathbf",	  6,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
+    { "\\bf",		  6,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
     { "\\mathtt",	  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
     { "\\mathsf",	  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
     { "\\mbox",		  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
@@ -577,13 +658,13 @@
     { "\\it",		  4,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
     { "\\textit",	  4,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
     { "\\mathit",	  4,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
-    { "\\rm",	     ISTEXT,           1,NOVALUE, (HANDLER)(rastflags) },
-    { "\\it",	     ISTEXT,           2,NOVALUE, (HANDLER)(rastflags) },
-    { "\\sl",	     ISTEXT,           2,NOVALUE, (HANDLER)(rastflags) },
-    { "\\bb",	     ISTEXT,           3,NOVALUE, (HANDLER)(rastflags) },
-    { "\\bf",	     ISTEXT,           1,NOVALUE, (HANDLER)(rastflags) },
-    { "\\text",	     ISTEXT,           1,NOVALUE, (HANDLER)(rastflags) },
-    { "\\norm",	     ISTEXT,           0,NOVALUE, (HANDLER)(rastflags) },
+    { "\\rm",	  ISFONTFAM,           3,NOVALUE, (HANDLER)(rastflags) },
+    { "\\it",	  ISFONTFAM,           4,NOVALUE, (HANDLER)(rastflags) },
+    { "\\sl",	  ISFONTFAM,           4,NOVALUE, (HANDLER)(rastflags) },
+    { "\\bb",	  ISFONTFAM,           5,NOVALUE, (HANDLER)(rastflags) },
+    { "\\bf",	  ISFONTFAM,           6,NOVALUE, (HANDLER)(rastflags) },
+    { "\\text",	  ISFONTFAM,           3,NOVALUE, (HANDLER)(rastflags) },
+    { "\\math",	  ISFONTFAM,           0,NOVALUE, (HANDLER)(rastflags) },
     { "\\ascii",     ISSTRING,         1,NOVALUE, (HANDLER)(rastflags) },
     { "\\image",     ISSTRING,         0,NOVALUE, (HANDLER)(rastflags) },
     { "\\limits",    ISDISPLAYSTYLE,   2,NOVALUE, (HANDLER)(rastflags) },
@@ -599,9 +680,9 @@
     { "\\large",     ISFONTSIZE,       3,NOVALUE, (HANDLER)(rastflags) },
     { "\\Large",     ISFONTSIZE,       4,NOVALUE, (HANDLER)(rastflags) },
     { "\\LARGE",     ISFONTSIZE,       5,NOVALUE, (HANDLER)(rastflags) },
-    { "\\huge",      ISFONTSIZE,       5,NOVALUE, (HANDLER)(rastflags) },
-    { "\\Huge",      ISFONTSIZE,       5,NOVALUE, (HANDLER)(rastflags) },
-    { "\\HUGE",      ISFONTSIZE,       5,NOVALUE, (HANDLER)(rastflags) },
+    { "\\huge",      ISFONTSIZE,       6,NOVALUE, (HANDLER)(rastflags) },
+    { "\\Huge",      ISFONTSIZE,       7,NOVALUE, (HANDLER)(rastflags) },
+    { "\\HUGE",      ISFONTSIZE,       7,NOVALUE, (HANDLER)(rastflags) },
     { "\\fontsize",  ISFONTSIZE, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
     { "\\fs",        ISFONTSIZE, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
     { "\\shrinkfactor",ISSHRINK, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
@@ -620,9 +701,12 @@
     { "\\aaalg",ISAAALGORITHM,   NOVALUE,NOVALUE, (HANDLER)(rastflags) },
     { "\\pnmparams",PNMPARAMS,   NOVALUE,NOVALUE, (HANDLER)(rastflags) },
     { "\\opaque",    ISOPAQUE,         0,NOVALUE, (HANDLER)(rastflags) },
-    { "\\squash",    ISSQUASH,         3,1,       (HANDLER)(rastflags) },
-    { "\\nosquash",  ISSQUASH,         0,NOVALUE, (HANDLER)(rastflags) },
-    { "\\squashmargin",ISSQUASH, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
+    { "\\squash",    ISSMASH,          3,1,       (HANDLER)(rastflags) },
+    { "\\smash",     ISSMASH,          3,1,       (HANDLER)(rastflags) },
+    { "\\nosquash",  ISSMASH,          0,NOVALUE, (HANDLER)(rastflags) },
+    { "\\nosmash",   ISSMASH,          0,NOVALUE, (HANDLER)(rastflags) },
+    { "\\squashmargin",ISSMASH,  NOVALUE,NOVALUE, (HANDLER)(rastflags) },
+    { "\\smashmargin", ISSMASH,  NOVALUE,NOVALUE, (HANDLER)(rastflags) },
     { "\\unitlength",UNITLENGTH, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
     { "\\reverse",   ISREVERSE,  NOVALUE,NOVALUE, (HANDLER)(rastflags) },
     { "\\reversefg", ISREVERSE,        1,NOVALUE, (HANDLER)(rastflags) },
@@ -835,7 +919,152 @@
     { "\\jmath",	124,	CMMI10,   ORDINARY,	NULL },
     { "\\wp",		125,	CMMI10,   ORDINARY,	NULL },
     { "\\vec",		126,	CMMI10,   ORDINARY,	NULL },
-    /* --------------------------------------------------------
+    /* --------------------- C M M I B ------------------------
+          symbol     charnum    family    class	    function
+    -------------------------------------------------------- */
+    /* --- uppercase greek letters --- */
+    { "\\Gamma",	0,	CMMIB10,  VARIABLE,	NULL },
+    { "\\Delta",	1,	CMMIB10,  VARIABLE,	NULL },
+    { "\\Theta",	2,	CMMIB10,  VARIABLE,	NULL },
+    { "\\Lambda",	3,	CMMIB10,  VARIABLE,	NULL },
+    { "\\Xi",		4,	CMMIB10,  VARIABLE,	NULL },
+    { "\\Pi",		5,	CMMIB10,  VARIABLE,	NULL },
+    { "\\Sigma",	6,	CMMIB10,  VARIABLE,	NULL },
+    { "\\smallsum",	6,	CMMIB10,  OPERATOR,	NULL },
+    { "\\Upsilon",	7,	CMMIB10,  VARIABLE,	NULL },
+    { "\\Phi",		8,	CMMIB10,  VARIABLE,	NULL },
+    { "\\Psi",		9,	CMMIB10,  VARIABLE,	NULL },
+    { "\\Omega",	10,	CMMIB10,  VARIABLE,	NULL },
+    /* --- lowercase greek letters --- */
+    { "\\alpha",	11,	CMMIB10,  VARIABLE,	NULL },
+    { "\\beta",		12,	CMMIB10,  VARIABLE,	NULL },
+    { "\\gamma",	13,	CMMIB10,  VARIABLE,	NULL },
+    { "\\delta",	14,	CMMIB10,  VARIABLE,	NULL },
+    { "\\epsilon",	15,	CMMIB10,  VARIABLE,	NULL },
+    { "\\zeta",		16,	CMMIB10,  VARIABLE,	NULL },
+    { "\\eta",		17,	CMMIB10,  VARIABLE,	NULL },
+    { "\\theta",	18,	CMMIB10,  VARIABLE,	NULL },
+    { "\\iota",		19,	CMMIB10,  VARIABLE,	NULL },
+    { "\\kappa",	20,	CMMIB10,  VARIABLE,	NULL },
+    { "\\lambda",	21,	CMMIB10,  VARIABLE,	NULL },
+    { "\\mu",		22,	CMMIB10,  VARIABLE,	NULL },
+    { "\\nu",		23,	CMMIB10,  VARIABLE,	NULL },
+    { "\\xi",		24,	CMMIB10,  VARIABLE,	NULL },
+    { "\\pi",		25,	CMMIB10,  VARIABLE,	NULL },
+    { "\\rho",		26,	CMMIB10,  VARIABLE,	NULL },
+    { "\\sigma",	27,	CMMIB10,  VARIABLE,	NULL },
+    { "\\tau",		28,	CMMIB10,  VARIABLE,	NULL },
+    { "\\upsilon",	29,	CMMIB10,  VARIABLE,	NULL },
+    { "\\phi",		30,	CMMIB10,  VARIABLE,	NULL },
+    { "\\chi",		31,	CMMIB10,  VARIABLE,	NULL },
+    { "\\psi",		32,	CMMIB10,  VARIABLE,	NULL },
+    { "\\omega",	33,	CMMIB10,  VARIABLE,	NULL },
+    { "\\varepsilon",	34,	CMMIB10,  VARIABLE,	NULL },
+    { "\\vartheta",	35,	CMMIB10,  VARIABLE,	NULL },
+    { "\\varpi",	36,	CMMIB10,  VARIABLE,	NULL },
+    { "\\varrho",	37,	CMMIB10,  VARIABLE,	NULL },
+    { "\\varsigma",	38,	CMMIB10,  VARIABLE,	NULL },
+    { "\\varphi",	39,	CMMIB10,  VARIABLE,	NULL },
+    /* --- arrow relations --- */
+    { "\\bfleftharpoonup",  40,	CMMIB10,  ARROW,	NULL },
+    { "\\bfleftharpoondown",41,	CMMIB10,  ARROW,	NULL },
+    { "\\bfrightharpoonup", 42,	CMMIB10,  ARROW,	NULL },
+    { "\\bfrightharpoondown",43,CMMIB10,  ARROW,	NULL },
+    /* --- punctuation --- */
+    { "`",		44,	CMMIB10,  PUNCTION,	NULL },
+    { "\'",		45,	CMMIB10,  PUNCTION,	NULL },
+    /* --- triangle binary relations --- */
+    { "\\triangleright",    46,	CMMIB10,  RELATION,	NULL },
+    { "\\triangleleft",     47,	CMMIB10,  RELATION,	NULL },
+    /* --- digits 0-9 --- */
+    { "\\0",		48,	CMMIB10,  ORDINARY,	NULL },
+    { "\\1",		49,	CMMIB10,  ORDINARY,	NULL },
+    { "\\2",		50,	CMMIB10,  ORDINARY,	NULL },
+    { "\\3",		51,	CMMIB10,  ORDINARY,	NULL },
+    { "\\4",		52,	CMMIB10,  ORDINARY,	NULL },
+    { "\\5",		53,	CMMIB10,  ORDINARY,	NULL },
+    { "\\6",		54,	CMMIB10,  ORDINARY,	NULL },
+    { "\\7",		55,	CMMIB10,  ORDINARY,	NULL },
+    { "\\8",		56,	CMMIB10,  ORDINARY,	NULL },
+    { "\\9",		57,	CMMIB10,  ORDINARY,	NULL },
+    /* --- punctuation --- */
+    { ".",		58,	CMMIB10,  PUNCTION,	NULL },
+    { ",",		59,	CMMIB10,  PUNCTION,	NULL },
+    /* --- operations (some ordinary) --- */
+    { "<",		60,	CMMIB10,  OPENING,	NULL },
+    { "\\lt",		60,	CMMIB10,  OPENING,	NULL },
+    { "/",		61,	CMMIB10,  BINARYOP,	NULL },
+    { ">",		62,	CMMIB10,  CLOSING,	NULL },
+    { "\\gt",		62,	CMMIB10,  CLOSING,	NULL },
+    { "\\star",		63,	CMMIB10,  BINARYOP,	NULL },
+    { "\\partial",	64,	CMMIB10,  VARIABLE,	NULL },
+    /* --- uppercase letters --- */
+    { "A",		65,	CMMIB10,  VARIABLE,	NULL },
+    { "B",		66,	CMMIB10,  VARIABLE,	NULL },
+    { "C",		67,	CMMIB10,  VARIABLE,	NULL },
+    { "D",		68,	CMMIB10,  VARIABLE,	NULL },
+    { "E",		69,	CMMIB10,  VARIABLE,	NULL },
+    { "F",		70,	CMMIB10,  VARIABLE,	NULL },
+    { "G",		71,	CMMIB10,  VARIABLE,	NULL },
+    { "H",		72,	CMMIB10,  VARIABLE,	NULL },
+    { "I",		73,	CMMIB10,  VARIABLE,	NULL },
+    { "J",		74,	CMMIB10,  VARIABLE,	NULL },
+    { "K",		75,	CMMIB10,  VARIABLE,	NULL },
+    { "L",		76,	CMMIB10,  VARIABLE,	NULL },
+    { "M",		77,	CMMIB10,  VARIABLE,	NULL },
+    { "N",		78,	CMMIB10,  VARIABLE,	NULL },
+    { "O",		79,	CMMIB10,  VARIABLE,	NULL },
+    { "P",		80,	CMMIB10,  VARIABLE,	NULL },
+    { "Q",		81,	CMMIB10,  VARIABLE,	NULL },
+    { "R",		82,	CMMIB10,  VARIABLE,	NULL },
+    { "S",		83,	CMMIB10,  VARIABLE,	NULL },
+    { "T",		84,	CMMIB10,  VARIABLE,	NULL },
+    { "U",		85,	CMMIB10,  VARIABLE,	NULL },
+    { "V",		86,	CMMIB10,  VARIABLE,	NULL },
+    { "W",		87,	CMMIB10,  VARIABLE,	NULL },
+    { "X",		88,	CMMIB10,  VARIABLE,	NULL },
+    { "Y",		89,	CMMIB10,  VARIABLE,	NULL },
+    { "Z",		90,	CMMIB10,  VARIABLE,	NULL },
+    /* --- miscellaneous symbols and relations --- */
+    { "\\flat",		91,	CMMIB10,  ORDINARY,	NULL },
+    { "\\natural",	92,	CMMIB10,  ORDINARY,	NULL },
+    { "\\sharp",	93,	CMMIB10,  ORDINARY,	NULL },
+    { "\\smile",	94,	CMMIB10,  RELATION,	NULL },
+    { "\\frown",	95,	CMMIB10,  RELATION,	NULL },
+    { "\\ell",		96,	CMMIB10,  ORDINARY,	NULL },
+    /* --- lowercase letters --- */
+    { "a",		97,	CMMIB10,  VARIABLE,	NULL },
+    { "b",		98,	CMMIB10,  VARIABLE,	NULL },
+    { "c",		99,	CMMIB10,  VARIABLE,	NULL },
+    { "d",		100,	CMMIB10,  VARIABLE,	NULL },
+    { "e",		101,	CMMIB10,  VARIABLE,	NULL },
+    { "f",		102,	CMMIB10,  VARIABLE,	NULL },
+    { "g",		103,	CMMIB10,  VARIABLE,	NULL },
+    { "h",		104,	CMMIB10,  VARIABLE,	NULL },
+    { "i",		105,	CMMIB10,  VARIABLE,	NULL },
+    { "j",		106,	CMMIB10,  VARIABLE,	NULL },
+    { "k",		107,	CMMIB10,  VARIABLE,	NULL },
+    { "l",		108,	CMMIB10,  VARIABLE,	NULL },
+    { "m",		109,	CMMIB10,  VARIABLE,	NULL },
+    { "n",		110,	CMMIB10,  VARIABLE,	NULL },
+    { "o",		111,	CMMIB10,  VARIABLE,	NULL },
+    { "p",		112,	CMMIB10,  VARIABLE,	NULL },
+    { "q",		113,	CMMIB10,  VARIABLE,	NULL },
+    { "r",		114,	CMMIB10,  VARIABLE,	NULL },
+    { "s",		115,	CMMIB10,  VARIABLE,	NULL },
+    { "t",		116,	CMMIB10,  VARIABLE,	NULL },
+    { "u",		117,	CMMIB10,  VARIABLE,	NULL },
+    { "v",		118,	CMMIB10,  VARIABLE,	NULL },
+    { "w",		119,	CMMIB10,  VARIABLE,	NULL },
+    { "x",		120,	CMMIB10,  VARIABLE,	NULL },
+    { "y",		121,	CMMIB10,  VARIABLE,	NULL },
+    { "z",		122,	CMMIB10,  VARIABLE,	NULL },
+    /* --- miscellaneous symbols and relations --- */
+    { "\\imath",	123,	CMMIB10,  ORDINARY,	NULL },
+    { "\\jmath",	124,	CMMIB10,  ORDINARY,	NULL },
+    { "\\wp",		125,	CMMIB10,  ORDINARY,	NULL },
+    { "\\bfvec",	126,	CMMIB10,  ORDINARY,	NULL },
+    /* --------------------- C M S Y --------------------------
           symbol     charnum    family    class	    function
     -------------------------------------------------------- */
     /* --- operations --- */
@@ -901,7 +1130,7 @@
     { "\\triangle",	    52,	CMSY10,   ORDINARY,	NULL },
     { "\\bigtriangleup",    52,	CMSY10,   ORDINARY,	NULL },
     { "\\bigtriangledown",  53,	CMSY10,   ORDINARY,	NULL },
-    { "/",		54,	CMSY10,   BINARYOP,	NULL },
+    { "\\boldslash",	54,	CMSY10,   BINARYOP,	NULL },
     { "\\'",		55,	CMSY10,   ORDINARY,	NULL },
     { "\\forall",	56,	CMSY10,   OPERATOR,	NULL },
     { "\\exists",	57,	CMSY10,   OPERATOR,	NULL },
@@ -940,6 +1169,32 @@
     { "\\calX",		88,	CMSY10,   VARIABLE,	NULL },
     { "\\calY",		89,	CMSY10,   VARIABLE,	NULL },
     { "\\calZ",		90,	CMSY10,   VARIABLE,	NULL },
+    { "A",		65,	CMSY10,   VARIABLE,	NULL },
+    { "B",		66,	CMSY10,   VARIABLE,	NULL },
+    { "C",		67,	CMSY10,   VARIABLE,	NULL },
+    { "D",		68,	CMSY10,   VARIABLE,	NULL },
+    { "E",		69,	CMSY10,   VARIABLE,	NULL },
+    { "F",		70,	CMSY10,   VARIABLE,	NULL },
+    { "G",		71,	CMSY10,   VARIABLE,	NULL },
+    { "H",		72,	CMSY10,   VARIABLE,	NULL },
+    { "I",		73,	CMSY10,   VARIABLE,	NULL },
+    { "J",		74,	CMSY10,   VARIABLE,	NULL },
+    { "K",		75,	CMSY10,   VARIABLE,	NULL },
+    { "L",		76,	CMSY10,   VARIABLE,	NULL },
+    { "M",		77,	CMSY10,   VARIABLE,	NULL },
+    { "N",		78,	CMSY10,   VARIABLE,	NULL },
+    { "O",		79,	CMSY10,   VARIABLE,	NULL },
+    { "P",		80,	CMSY10,   VARIABLE,	NULL },
+    { "Q",		81,	CMSY10,   VARIABLE,	NULL },
+    { "R",		82,	CMSY10,   VARIABLE,	NULL },
+    { "S",		83,	CMSY10,   VARIABLE,	NULL },
+    { "T",		84,	CMSY10,   VARIABLE,	NULL },
+    { "U",		85,	CMSY10,   VARIABLE,	NULL },
+    { "V",		86,	CMSY10,   VARIABLE,	NULL },
+    { "W",		87,	CMSY10,   VARIABLE,	NULL },
+    { "X",		88,	CMSY10,   VARIABLE,	NULL },
+    { "Y",		89,	CMSY10,   VARIABLE,	NULL },
+    { "Z",		90,	CMSY10,   VARIABLE,	NULL },
     /* --- operations and relations --- */
     { "\\cup",		91,	CMSY10,   OPERATOR,	NULL },
     { "\\cap",		92,	CMSY10,   OPERATOR,	NULL },
@@ -991,9 +1246,30 @@
     { "\\Diamond",	125,	CMSY10,   ORDINARY,	NULL },
     { "\\Heart",	126,	CMSY10,   ORDINARY,	NULL },
     { "\\spadesuit",	127,	CMSY10,   ORDINARY,	NULL },
-    /* --------------------------------------------------------
+    /* ---------------------- C M R ---------------------------
           symbol     charnum    family    class	    function
     -------------------------------------------------------- */
+    /* --- uppercase greek letters --- */
+    { "\\Gamma",	0,	CMR10,   VARIABLE,	NULL },
+    { "\\Delta",	1,	CMR10,   VARIABLE,	NULL },
+    { "\\Theta",	2,	CMR10,   VARIABLE,	NULL },
+    { "\\Lambda",	3,	CMR10,   VARIABLE,	NULL },
+    { "\\Xi",		4,	CMR10,   VARIABLE,	NULL },
+    { "\\Pi",		5,	CMR10,   VARIABLE,	NULL },
+    { "\\Sigma",	6,	CMR10,   VARIABLE,	NULL },
+    { "\\smallsum",	6,	CMR10,   OPERATOR,	NULL },
+    { "\\Upsilon",	7,	CMR10,   VARIABLE,	NULL },
+    { "\\Phi",		8,	CMR10,   VARIABLE,	NULL },
+    { "\\Psi",		9,	CMR10,   VARIABLE,	NULL },
+    { "\\Omega",	10,	CMR10,   VARIABLE,	NULL },
+    /* ---  --- */
+    { "\\ff",		11,	CMR10,   ORDINARY,	NULL },
+    { "\\fi",		12,	CMR10,   ORDINARY,	NULL },
+    { "\\fl",		13,	CMR10,   ORDINARY,	NULL },
+    { "\\ffi",		14,	CMR10,   ORDINARY,	NULL },
+    { "\\ffl",		15,	CMR10,   ORDINARY,	NULL },
+    { "\\imath",	16,	CMR10,   ORDINARY,	NULL },
+    { "\\jmath",	17,	CMR10,   ORDINARY,	NULL },
     /* --- foreign letters --- */
     { "\\ss",		25,	CMR10,   ORDINARY,	NULL },
     { "\\ae",		26,	CMR10,   ORDINARY,	NULL },
@@ -1012,6 +1288,10 @@
     { "8",		56,	CMR10,   ORDINARY,	NULL },
     { "9",		57,	CMR10,   ORDINARY,	NULL },
     /* --- symbols, relations, etc --- */
+    { "\\gravesym",	18,	CMR10,   ORDINARY,	NULL },
+    { "\\acutesym",	19,	CMR10,   ORDINARY,	NULL },
+    { "\\checksym",	20,	CMR10,   ORDINARY,	NULL },
+    { "\\brevesym",	21,	CMR10,   ORDINARY,	NULL },
     { "!",		33,	CMR10,   BINARYOP,	NULL },
     { "\"",		34,	CMR10,   ORDINARY,	NULL },
     { "\\quote",	34,	CMR10,   ORDINARY,	NULL },
@@ -1025,6 +1305,7 @@
     { "&",		38,	CMR10,   BINARYOP,	NULL },
     { "\\&",		38,	CMR10,   BINARYOP,	NULL },
     { "\'",		39,	CMR10,   BINARYOP,	NULL },
+    { "\\\'",		39,	CMR10,   BINARYOP,	NULL },
     { "\\apostrophe",	39,	CMR10,   ORDINARY,	NULL },
     { "(",		40,	CMR10,   OPENING,	NULL },
     { "\\(",		40,	CMR10,   OPENING,	NULL },
@@ -1098,7 +1379,7 @@
     { "x",		120,	CMR10,   VARIABLE,	NULL },
     { "y",		121,	CMR10,   VARIABLE,	NULL },
     { "z",		122,	CMR10,   VARIABLE,	NULL },
-    /* --------------------------------------------------------
+    /* --------------------- C M E X --------------------------
           symbol     charnum    family    class	    function
     -------------------------------------------------------- */
     /* --- parens ()'s --- */
@@ -1209,6 +1490,11 @@
     { "~",		101,	CMEX10,   OPERATOR,	NULL },
     { "~",		102,	CMEX10,   OPERATOR,	NULL },
     { "~",		103,	CMEX10,   OPERATOR,	NULL },
+    /* --- /'s --- */
+    { "/",		44,	CMEX10,   OPENING,	NULL },
+    { "/",		46,	CMEX10,   OPENING,	NULL },
+    { "\\",		45,	CMEX10,   OPENING,	NULL },
+    { "\\",		47,	CMEX10,   OPENING,	NULL },
     /* --- \sum, \int and other (displaymath) symbols --- */
     { "\\bigsqcup",	70,	CMEX10,   LOWERBIG,	NULL },
     { "\\Bigsqcup",	71,	CMEX10,   UPPERBIG,	NULL },
@@ -1251,10 +1537,52 @@
     { "\\coprod",	96,	CMEX10,   LOWERBIG,	NULL },
     { "\\bigcoprod",	96,	CMEX10,   LOWERBIG,	NULL },
     { "\\Bigcoprod",	97,	CMEX10,   UPPERBIG,	NULL },
-    /* --------------------------------------------------------
+    /* --- symbol pieces (see TeXbook page 432) --- */
+    { "\\leftbracetop",	56,	CMEX10,   OPENING,	NULL },
+    { "\\rightbracetop",57,	CMEX10,   CLOSING,	NULL },
+    { "\\leftbracebot",	58,	CMEX10,   OPENING,	NULL },
+    { "\\rightbracebot",59,	CMEX10,   CLOSING,	NULL },
+    { "\\leftbracemid",	60,	CMEX10,   OPENING,	NULL },
+    { "\\rightbracemid",61,	CMEX10,   CLOSING,	NULL },
+    { "\\leftbracebar",	62,	CMEX10,   OPENING,	NULL },
+    { "\\rightbracebar",62,	CMEX10,   CLOSING,	NULL },
+    { "\\leftparentop",	48,	CMEX10,   OPENING,	NULL },
+    { "\\rightparentop",49,	CMEX10,   CLOSING,	NULL },
+    { "\\leftparenbot",	64,	CMEX10,   OPENING,	NULL },
+    { "\\rightparenbot",65,	CMEX10,   CLOSING,	NULL },
+    { "\\leftparenbar",	66,	CMEX10,   OPENING,	NULL },
+    { "\\rightparenbar",67,	CMEX10,   CLOSING,	NULL },
+    /* --------------------- R S F S --------------------------
           symbol     charnum    family    class	    function
     -------------------------------------------------------- */
-    /* --- rsfs script letters (we use \\scrA...\\scrZ --- */
+    /* --- rsfs script letters (written as \scr{A...Z}) --- */
+    { "A",		 0,	RSFS10,   VARIABLE,	NULL },
+    { "B",		 1,	RSFS10,   VARIABLE,	NULL },
+    { "C",		 2,	RSFS10,   VARIABLE,	NULL },
+    { "D",		 3,	RSFS10,   VARIABLE,	NULL },
+    { "E",		 4,	RSFS10,   VARIABLE,	NULL },
+    { "F",		 5,	RSFS10,   VARIABLE,	NULL },
+    { "G",		 6,	RSFS10,   VARIABLE,	NULL },
+    { "H",		 7,	RSFS10,   VARIABLE,	NULL },
+    { "I",		 8,	RSFS10,   VARIABLE,	NULL },
+    { "J",		 9,	RSFS10,   VARIABLE,	NULL },
+    { "K",		10,	RSFS10,   VARIABLE,	NULL },
+    { "L",		11,	RSFS10,   VARIABLE,	NULL },
+    { "M",		12,	RSFS10,   VARIABLE,	NULL },
+    { "N",		13,	RSFS10,   VARIABLE,	NULL },
+    { "O",		14,	RSFS10,   VARIABLE,	NULL },
+    { "P",		15,	RSFS10,   VARIABLE,	NULL },
+    { "Q",		16,	RSFS10,   VARIABLE,	NULL },
+    { "R",		17,	RSFS10,   VARIABLE,	NULL },
+    { "S",		18,	RSFS10,   VARIABLE,	NULL },
+    { "T",		19,	RSFS10,   VARIABLE,	NULL },
+    { "U",		20,	RSFS10,   VARIABLE,	NULL },
+    { "V",		21,	RSFS10,   VARIABLE,	NULL },
+    { "W",		22,	RSFS10,   VARIABLE,	NULL },
+    { "X",		23,	RSFS10,   VARIABLE,	NULL },
+    { "Y",		24,	RSFS10,   VARIABLE,	NULL },
+    { "Z",		25,	RSFS10,   VARIABLE,	NULL },
+    /* --- rsfs script letters (written as \scrA...\scrZ) --- */
     { "\\scrA",		 0,	RSFS10,   VARIABLE,	NULL },
     { "\\scrB",		 1,	RSFS10,   VARIABLE,	NULL },
     { "\\scrC",		 2,	RSFS10,   VARIABLE,	NULL },
@@ -1436,6 +1764,116 @@
     { "\\]",		93,    BBOLD10,   CLOSING,	NULL },
     { "|",		124,   BBOLD10,   BINARYOP,	NULL },
     { "\\-",		123,   BBOLD10,   BINARYOP,	NULL },
+    /* ------------------- S T M A R Y ------------------------
+          symbol     charnum    family    class	    function
+    -------------------------------------------------------- */
+    /* --- stmaryrd symbols (see stmaryrd.sty for defs) --- */
+    { "\\shortleftarrow",   0, STMARY10,  ARROW,	NULL },
+    { "\\shortrightarrow",  1, STMARY10,  ARROW,	NULL },
+    { "\\shortuparrow",     2, STMARY10,  ARROW,	NULL },
+    { "\\shortdownarrow",   3, STMARY10,  ARROW,	NULL },
+    { "\\Yup",		    4, STMARY10,  BINARYOP,	NULL },
+    { "\\Ydown",	    5, STMARY10,  BINARYOP,	NULL },
+    { "\\Yleft",	    6, STMARY10,  BINARYOP,	NULL },
+    { "\\Yright",	    7, STMARY10,  BINARYOP,	NULL },
+    { "\\varcurlyvee",	    8, STMARY10,  BINARYOP,	NULL },
+    { "\\varcurlywedge",    9, STMARY10,  BINARYOP,	NULL },
+    { "\\minuso",	   10, STMARY10,  BINARYOP,	NULL },
+    { "\\baro",		   11, STMARY10,  BINARYOP,	NULL },
+    { "\\sslash",	   12, STMARY10,  BINARYOP,	NULL },
+    { "\\bblash",	   13, STMARY10,  BINARYOP,	NULL },
+    { "\\moo",		   14, STMARY10,  BINARYOP,	NULL },
+    { "\\varotimes",	   15, STMARY10,  BINARYOP,	NULL },
+    { "\\varoast",	   16, STMARY10,  BINARYOP,	NULL },
+    { "\\varobar",	   17, STMARY10,  BINARYOP,	NULL },
+    { "\\varodot",	   18, STMARY10,  BINARYOP,	NULL },
+    { "\\varoslash",	   19, STMARY10,  BINARYOP,	NULL },
+    { "\\varobslash",	   20, STMARY10,  BINARYOP,	NULL },
+    { "\\varocircle",	   21, STMARY10,  BINARYOP,	NULL },
+    { "\\varoplus",	   22, STMARY10,  BINARYOP,	NULL },
+    { "\\varominus",	   23, STMARY10,  BINARYOP,	NULL },
+    { "\\boxast",	   24, STMARY10,  BINARYOP,	NULL },
+    { "\\boxbar",	   25, STMARY10,  BINARYOP,	NULL },
+    { "\\boxdot",	   26, STMARY10,  BINARYOP,	NULL },
+    { "\\boxslash",	   27, STMARY10,  BINARYOP,	NULL },
+    { "\\boxbslash",	   28, STMARY10,  BINARYOP,	NULL },
+    { "\\boxcircle",	   29, STMARY10,  BINARYOP,	NULL },
+    { "\\boxbox",	   30, STMARY10,  BINARYOP,	NULL },
+    { "\\boxempty",	   31, STMARY10,  BINARYOP,	NULL },
+    { "\\lightning",	   32, STMARY10,  ORDINARY,	NULL },
+    { "\\merge",	   33, STMARY10,  BINARYOP,	NULL },
+    { "\\vartimes",	   34, STMARY10,  BINARYOP,	NULL },
+    { "\\fatsemi",	   35, STMARY10,  BINARYOP,	NULL },
+    { "\\sswarrow",	   36, STMARY10,  ARROW,	NULL },
+    { "\\ssearrow",	   37, STMARY10,  ARROW,	NULL },
+    { "\\curlywedgeuparrow",38,STMARY10,  ARROW,	NULL },
+    { "\\curlywedgedownarrow",39,STMARY10,ARROW,	NULL },
+    { "\\fatslash",	   40, STMARY10,  BINARYOP,	NULL },
+    { "\\fatbslash",	   41, STMARY10,  BINARYOP,	NULL },
+    { "\\lbag",		   42, STMARY10,  BINARYOP,	NULL },
+    { "\\rbag",		   43, STMARY10,  BINARYOP,	NULL },
+    { "\\varbigcirc",	   44, STMARY10,  BINARYOP,	NULL },
+    { "\\leftrightarroweq",45, STMARY10,  ARROW,	NULL },
+    { "\\curlyveedownarrow",46,STMARY10,  ARROW,	NULL },
+    { "\\curlyveeuparrow", 47, STMARY10,  ARROW,	NULL },
+    { "\\nnwarrow",	   48, STMARY10,  ARROW,	NULL },
+    { "\\nnearrow",	   49, STMARY10,  ARROW,	NULL },
+    { "\\leftslice",	   50, STMARY10,  BINARYOP,	NULL },
+    { "\\rightslice",	   51, STMARY10,  BINARYOP,	NULL },
+    { "\\varolessthan",	   52, STMARY10,  BINARYOP,	NULL },
+    { "\\varogreaterthan", 53, STMARY10,  BINARYOP,	NULL },
+    { "\\varovee",	   54, STMARY10,  BINARYOP,	NULL },
+    { "\\varowedge",	   55, STMARY10,  BINARYOP,	NULL },
+    { "\\talloblong",	   56, STMARY10,  BINARYOP,	NULL },
+    { "\\interleave",	   57, STMARY10,  BINARYOP,	NULL },
+    { "\\obar",		   58, STMARY10,  BINARYOP,	NULL },
+    { "\\oslash",	   59, STMARY10,  BINARYOP,	NULL },
+    { "\\olessthan",	   60, STMARY10,  BINARYOP,	NULL },
+    { "\\ogreaterthan",	   61, STMARY10,  BINARYOP,	NULL },
+    { "\\ovee",		   62, STMARY10,  BINARYOP,	NULL },
+    { "\\owedge",	   63, STMARY10,  BINARYOP,	NULL },
+    { "\\oblong",	   64, STMARY10,  BINARYOP,	NULL },
+    { "\\inplus",	   65, STMARY10,  RELATION,	NULL },
+    { "\\niplus",	   66, STMARY10,  RELATION,	NULL },
+    { "\\nplus",	   67, STMARY10,  BINARYOP,	NULL },
+    { "\\subsetplus",	   68, STMARY10,  RELATION,	NULL },
+    { "\\supsetplus",	   69, STMARY10,  RELATION,	NULL },
+    { "\\subsetpluseq",	   70, STMARY10,  RELATION,	NULL },
+    { "\\supsetpluseq",	   71, STMARY10,  RELATION,	NULL },
+    { "\\Lbag",		   72, STMARY10,  OPENING,	NULL },
+    { "\\Rbag",		   73, STMARY10,  CLOSING,	NULL },
+    { "\\llbracket",	   74, STMARY10,  OPENING,	NULL },
+    { "\\rrbracket",	   75, STMARY10,  CLOSING,	NULL },
+    { "\\llparenthesis",   76, STMARY10,  OPENING,	NULL },
+    { "\\rrparenthesis",   77, STMARY10,  CLOSING,	NULL },
+    { "\\binampersand",	   78, STMARY10,  OPENING,	NULL },
+    { "\\bindnasrepma",	   79, STMARY10,  CLOSING,	NULL },
+    { "\\trianglelefteqslant",80,STMARY10,RELATION,	NULL },
+    { "\\trianglerighteqslant",81,STMARY10,RELATION,	NULL },
+    { "\\ntrianglelefteqslant",82,STMARY10,RELATION,	NULL },
+    { "\\ntrianglerighteqslant",83,STMARY10,RELATION,	NULL },
+    { "\\llfloor",	   84, STMARY10,  OPENING,	NULL },
+    { "\\rrfloor",	   85, STMARY10,  CLOSING,	NULL },
+    { "\\llceil",	   86, STMARY10,  OPENING,	NULL },
+    { "\\rrceil",	   87, STMARY10,  CLOSING,	NULL },
+    { "\\arrownot",	   88, STMARY10,  RELATION,	NULL },
+    { "\\Arrownot",	   89, STMARY10,  RELATION,	NULL },
+    { "\\Mapstochar",	   90, STMARY10,  RELATION,	NULL },
+    { "\\mapsfromchar",	   91, STMARY10,  RELATION,	NULL },
+    { "\\Mapsfromchar",	   92, STMARY10,  RELATION,	NULL },
+    { "\\leftrightarrowtriangle",93,STMARY10,BINARYOP,	NULL },
+    { "\\leftarrowtriangle",94,STMARY10,  RELATION,	NULL },
+    { "\\rightarrowtriangle",95,STMARY10, RELATION,	NULL },
+    { "\\bigtriangledown", 96, STMARY10,  OPERATOR,	NULL },
+    { "\\bigtriangleup",   97, STMARY10,  OPERATOR,	NULL },
+    { "\\bigcurlyvee",	   98, STMARY10,  OPERATOR,	NULL },
+    { "\\bigcurlywedge",   99, STMARY10,  OPERATOR,	NULL },
+    { "\\bigsqcap",	  100, STMARY10,  OPERATOR,	NULL },
+    { "\\Bigsqcap",	  100, STMARY10,  OPERATOR,	NULL },
+    { "\\bigbox",	  101, STMARY10,  OPERATOR,	NULL },
+    { "\\bigparallel",	  102, STMARY10,  OPERATOR,	NULL },
+    { "\\biginterleave",  103, STMARY10,  OPERATOR,	NULL },
+    { "\\bignplus",	  112, STMARY10,  OPERATOR,	NULL },
     /* --- trailer record --- */
     { NULL,		-999,	-999,	-999,		NULL }
  }
Index: loncom/cgi/mimeTeX/mimetex.html
diff -u loncom/cgi/mimeTeX/mimetex.html:1.1 loncom/cgi/mimeTeX/mimetex.html:1.2
--- loncom/cgi/mimeTeX/mimetex.html:1.1	Mon Feb 28 14:08:11 2005
+++ loncom/cgi/mimeTeX/mimetex.html	Fri Mar 24 18:08:33 2006
@@ -70,6 +70,7 @@
       ul ul     { margin-left: -0.5em;  margin-right: 3.5em;
                   list-style-type: disc }
       pre       { margin-left: 3.0em; font-size: medium; font-weight: bold }
+      pre.nobold { margin-left:3.0em; font-size:medium; font-weight:normal }
       p         { margin-left: 2.0em;   margin-right: 1.5em }
       p:first-letter
                 { font-size: x-large;   font-weight: bold;
@@ -124,8 +125,8 @@
      LaTeX tutorial</a><br>
      <a href="http://www.forkosh.com/mimetex.html" target="_top">
      mimeTeX QuickStart</a><br>
-     <!-- jfa <a href="http://www.forkosh.com/mimetex.zip"> -->
-     <a href="ftp://ftp.tex.ac.uk/tex-archive/support/mimetex/mimetex.zip">
+     <a href="http://www.forkosh.com/mimetex.zip">
+     <!-- jfa <a href="ftp://ftp.tex.ac.uk/tex-archive/support/mimetex/mimetex.zip"> -->
      <font size=4>download&nbsp;mimeTeX</font></a></font>
     </font> </center> </td>
    <td align="center">
@@ -142,22 +143,26 @@
 Copyright <font size=5>&copy;</font> 2002-2005,
 <a href="http://www.forkosh.com">John Forkosh Associates, Inc.</a> <br>
 email: <a href="mailto:john&#64;forkosh&#46;com">john&#64;forkosh&#46;com</a>
-</font></b></center>
+</font></b> <br><br>
+<a href="#preview"><img id="timestamp1" onclick="eqntext('timestamp1')"
+src="../cgi-bin/mimetex.cgi?\normalsize\blue\begin{matrix}
+\large\today\\\normalsize\today[3]\end{matrix}"
+alt="" border=0 align=middle></a> </center>
 
 
 <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 Table of Contents
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<br><br>
-<center><b><font color="maroon" size=5>
- <u> &nbsp; &nbsp; &nbsp; C o n t e n t s &nbsp; &nbsp; &nbsp; </u></font></b>
-<br>
+<br> <center><b><font color="maroon" size=6>
+ <u> &nbsp; &nbsp; &nbsp; &nbsp; C o n t e n t s &nbsp; &nbsp; &nbsp; &nbsp;
+ </u></font></b> <br>
 <table cellspacing=0 class="medium">
  <tr>
   <td valign="top" align="center" width=150>
-   <b>- - - T u t o r i a l - - -</b> </td>
-  <td valign="top" align="center" colspan=3 width=450>
-- - - - - - - - - - - - - - R e f e r e n c e - - - - - - - - - - - - - -</td>
+   <font size=3><b>- - - T u t o r i a l - - -</b></font> </td>
+  <td valign="top" align="center" colspan=3 width=450><font size=3><b>
+  - - - - - - - - - - - - - - R e f e r e n c e - - - - - - - - - - - - - -
+ </b></font></td>
  </tr>
  <tr>
   <td valign="top" align="center" width=150> <font size=3>
@@ -167,11 +172,10 @@
     <a href="#gpl">        c. GPL License </a> </font> </td>
   <td valign="top" align="center" width=150> <font size=3>
    <a href="#build">&nbsp; (II) Building mimeTeX &nbsp;</a><br>
-    <a href="#download">   a. Download </a><br>
-    <a href="#compile">    b. Compile </a><br>
-    <a href="#install">    c. Install </a><br>
-    <a href="#options">    d. Compile Options </a><br>
-    <a href="#cmdline">    e. Command Line </a> </font> </td>
+    <a href="#compile">    a. Compile </a><br>
+    <a href="#install">    b. Install </a><br>
+    <a href="#options">    c. Compile Options </a><br>
+    <a href="#cmdline">    d. Command Line </a> </font> </td>
   <td valign="top" align="center" width=150> <font size=3>
    <a href="#reference">&nbsp; (III) Syntax Reference &nbsp;</a><br>
     <a href="#spaces">     a. Math & White Space </a><br>
@@ -189,7 +193,49 @@
     <a href="#gifsave">    c. gifsave.c </a>
     <br><a href="#remarks"> &nbsp; Remarks &nbsp; </a> </font> </td>
  </tr>
-</table></center>
+</table>
+
+<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++ Installation and Usage Summary
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+<br>
+<table border="0">
+<tr> <!-- banner -->
+ <td align="left">
+   <!-- <b><font color="maroon" size=4>
+   <u> &nbsp; &nbsp; &nbsp; &nbsp; I n s t a l l a t i o n &nbsp;
+   a n d &nbsp; U s a g e &nbsp; S u m m a r y &nbsp; &nbsp; &nbsp; &nbsp;
+   </u></font></b> -->
+   <font size=4 color="maroon"><b>- - - - - - I n s t a l l a t i o n &nbsp;
+   a n d &nbsp; U s a g e &nbsp; S u m m a r y - - - - - -</b></font>
+ </td> </tr>
+<tr>
+ <td valign="top"> <!-- summary -->
+  <table border="0" cellpadding="0" cellspacing="0" hspace="0" vspace="0">
+    <tr><td align="right" valign="top"> &nbsp; &nbsp; &nbsp;
+      <a href="#build">Installation</a>: &nbsp; &nbsp; </td>
+      <td><font size=4> Download <a href="http://www.forkosh.com/mimetex.zip">
+       mimetex.zip</a> and then type <br>
+       <b> &nbsp; &nbsp; unzip mimetex.zip</b> <br>
+       <b> &nbsp; &nbsp; cc -DAA mimetex.c gifsave.c -lm -o mimetex.cgi</b>
+       <br>Now just <b>mv</b> mimetex.cgi to your <b>cgi-bin/</b>
+       directory, <br> and you're all done. </font></td></tr>
+    <tr><td colspan="2"> <font size="2">&nbsp;</font> </td></tr>
+    <tr><td align="right" valign="top">
+      <a href="#introduction">Usage</a>: &nbsp; &nbsp; </td>
+      <td><font size=4> To see the image <br> &nbsp; &nbsp;
+       <a href="#preview"><img id="summary1" onclick="eqntext('summary1')"
+       src="../cgi-bin/mimetex.cgi?x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}"
+       alt="" border=0 align=middle></a> <br>
+       just write the tag <br>
+       <b> &nbsp; &nbsp; &lt;img&nbsp;src="/cgi-bin/mimetex.cgi?<br>
+       &nbsp; &nbsp; x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}"&gt;</b>
+       </font></td></tr>
+  </table>
+ </td>
+</tr>
+</table>
+</center>
 
 
 <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -213,20 +259,34 @@
    alt="" border=0 align=middle&gt;</pre> <p class="continue">immediately
     generates the corresponding gif image on-the-fly, displaying
     <a href="#preview"><img id="imageI1" onclick="eqntext('imageI1')"
-    src="../cgi-bin/mimetex.cgi?f(x)=\int\limits_{-\infty}^xe^{-t^2}dt"
+    src="../cgi-bin/mimetex.cgi?\normalsize
+    f(x)=\int\limits_{-\infty}^xe^{-t^2}dt"
     alt="" border=0 align=middle></a> wherever you put that &lt;img&gt tag.
     MimeTeX doesn't need intermediate dvi-to-gif conversion, and it doesn't
-    store separate gif files for each converted expression.
-    There's also no inherent need to repeatedly write the cumbersome
+    create separate gif files for each converted expression. </p>
+
+<p> There's also no inherent need to repeatedly write the cumbersome
     &lt;img&gt; tag illustrated above.  You can write your own custom
     tags, or write a wrapper script around mimeTeX to simplify the
     notation. For example,
     <a href="http://www.pmichaud.com/wiki/PmWiki/PmWiki" target="_top">
     PmWiki</a> already has a
     <a href="http://www.pmichaud.com/wiki/Cookbook/MimeTeX" target="_top">
-    mimeTeX&nbsp;plugin</a> that let's you just write
+    mimeTeX&nbsp;plugin</a> that lets you just write
     <b>{$&nbsp;f(x)=\int_{-\infty}^xe^{-t^2}dt&nbsp;$}</b>
-    to obtain the same image. </p>
+    to obtain the same image.  Or, if you're using
+    <a href="http://www.phpbb.com" target="_top">phpBB</a>, then
+    <a href="http://www.themathforum.com" target="_top">Jameson</a>
+    contributed the following one-line mod that lets you just write
+    <b>[tex]&nbsp;...&nbsp;[/tex]</b> to obtain mimeTeX images: </p>
+    <pre class="medium">   #--------[open]-----------------------------------------------------
+     /includes/bbcode.php
+   #--------[find]-----------------------------------------------------
+     // Remove our padding from the string..
+   #--------[before, add]----------------------------------------------
+     $text = preg_replace('/\[tex\](.*?)\[\/tex\]/ie',
+     "'&lt;img src=\"/cgi-bin/mimetex.cgi?'.rawurlencode('$1').'\" align=\"middle\" /&gt;'",
+     $text);</pre>
 
 <p> MimeTeX's benefit over similar math-on-the-web solutions is, as
     mentioned above, its easy installation.  But if that's not a
@@ -239,7 +299,8 @@
     which uses LaTeX to create higher quality images than mimeTeX
     produces.  For comparison,
     <a href="#preview"><img id="imageI2" onclick="eqntext('imageI2')"
-    src="../cgi-bin/mimetex.cgi?f(x)=\int\limits_{-\infty}^xe^{-t^2}dt"
+    src="../cgi-bin/mimetex.cgi?\normalsize
+    f(x)=\int\limits_{-\infty}^xe^{-t^2}dt"
     alt="" border=0 align=middle></a>, with arbitrary mean
     <a href="#preview"><img id="imageI3" onclick="eqntext('imageI3')"
     src="../cgi-bin/mimetex.cgi?\large\mu" alt="" border=0 align=middle></a>
@@ -277,7 +338,7 @@
     target="_top">www.tug.org/interest.html</a> and in the
     <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=LaTeX2HTML"
     target="_top">tex-faq</a>. </p>
-
+<!--
 <p> The remainder of this introductory mimeTeX tutorial section contains </p>
      <ul>
        <li> First, a concise <a href="#quickstart">Quickstart</a> providing
@@ -291,9 +352,10 @@
        <li> Finally, the <a href="#gpl">gpl</a> license, whose terms
             and conditions you must agree to before using mimeTeX.</li>
      </ul>
+-->
 <p> You may now want to browse the additional <a href="#examples">Examples</a>
     below before proceeding, to make sure mimeTeX suits your needs before you
-    invest more time learning to use it. </p>
+    spend more time learning to use it. </p>
 
 
 <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -312,23 +374,34 @@
      target="_top">Latex&nbsp;Math&nbsp;II</a>, or my own
      <a href="http://www.forkosh.com/mimetextutorial.html" target="_top">
      LaTeX&nbsp;math&nbsp;tutorial</a>.
-     Then, instead of continuing to read this page, you may prefer to
-     play with mimeTeX yourself.  In that case, just Submit any LaTeX
+     Then, instead of continuing to read this page, you can <!-- may prefer
+     to play with mimeTeX yourself.  In that case, --> just Submit any LaTeX
      math expression you like in the Query Box below.  I've started
-     you out with a little example already in the box, or, instead,
+     you out with a little example already in the box, or <!-- , instead, -->
      you can Click any of the <a href="#examples">Examples</a> below
      to place that corresponding expression in the Query Box. </p>
 
  <p> Meanwhile, here are just a few quickstart tips for Submitting
      your own mimeTeX expressions in the Query Box below: </p>
      <ul>
-      <li> MimeTeX currently has six font sizes selected by
-           one of the usual declarations
-           <b>\tiny</b> or <b>\small</b> or <b>\normalsize</b> (default),
-           or <b>\large</b> or <b>\Large</b> or <b>\LARGE</b>&nbsp;.
-           For example, &nbsp; <b>\Large&nbsp;\sqrt{x^2+y^2}</b> &nbsp;
-           renders &nbsp; <b>\sqrt{x^2+y^2}</b> &nbsp; two sizes above
-           <b>\normalsize</b>. </li>
+      <li> MimeTeX currently has eight font sizes selected by
+           one of the usual directives &nbsp; <b>\tiny</b>
+           or <b>\small</b> or <b>\normalsize</b>&nbsp;,
+           or <b>\large</b>&nbsp;(default) or <b>\Large</b>
+           or <b>\LARGE</b>&nbsp;, or <b>\huge</b> or <b>\Huge</b>&nbsp;.
+           &nbsp; &nbsp;  Unlike standard LaTeX, font size directives may
+           appear within math&nbsp;mode expressions.  They affect everything
+           to their right, except that their scope will be limited to any
+           <b>{&nbsp;}</b>-enclosed subexpression in which they occur.
+           For example, &nbsp; "<b>a+\small&nbsp;b+c</b>"
+           &nbsp; renders &nbsp;
+           <a href="#preview"> <img id="imageBu" onclick="eqntext('imageBu')"
+           src="../cgi-bin/mimetex.cgi?\large a+\small b+c"
+           alt="" border=0 align=bottom></a>, &nbsp; whereas &nbsp;
+           "<b>\small&nbsp;a+{\Large&nbsp;b+}c</b>" &nbsp; renders &nbsp;
+           <a href="#preview"> <img id="imageBv" onclick="eqntext('imageBv')"
+           src="../cgi-bin/mimetex.cgi?\small a+{\Large b+}c"
+           alt="" border=0 align=bottom></a>. </li>
 <!--  <li> At smaller font sizes, try preceding your expression with &nbsp;
            <b>\light</b> &nbsp; which adjusts mimeTeX's anti-aliasing
            parameters to produce thinner lines that you may feel are
@@ -373,7 +446,7 @@
            the default. </li>
      </ul>
  <p> <a name="forminput"> </a> <a name="preview"> </a>
-     Now enter your own expression, use the sample provided,
+     Now enter your own LaTeX expression, use the sample provided,
      or Click any of the <a href="#examples">Examples</a>.
      Then press the Submit button, and mimeTeX's rendering should be
      displayed in the little window immediately below it. </p>
@@ -383,10 +456,9 @@
          <form name="expression" action="../cgi-bin/mimetex.cgi"
          method="get" target="inlineframe">
            <table border="0" cellpadding="0" cellspacing="1">
-             <tr align="left"><td>
-               <!-- <font color="#000000" size="+1"><u><b>Enter your
-                Expression in Box below, or Click any Example ...
-                </b></u></font> <br> -->
+             <tr align="left"><td align="center">
+                <b>First enter your own LaTeX expression,
+                 or Click any example...</b> <br>
                <textarea name="formdata" rows="5" cols="72"
                 >\Large f(x)=\int_{-\infty}^x e^{-t^2}dt</textarea> <br>
              </td></tr>
@@ -396,7 +468,8 @@
                &nbsp; <input type="submit" value="Submit Expression"> </font>
              </td></tr>
            </table>
-         </form>
+         </form> </td></tr>  <tr align="left"><td align="center">
+         <b>Now click Submit to see it rendered below...</b> <br>
          <iframe name="inlineframe" align="middle" width="85%" height="110">
          &lt;p&gt;iframe's not supported if you see this.&lt;/p&gt; 
          </iframe>
@@ -405,7 +478,8 @@
      </center>
  <p> You should see &nbsp;
      <a href="#preview"><img id="imageIA3" onclick="eqntext('imageIA3')"
-     src="../cgi-bin/mimetex.cgi?f(x)=\int\limits_{-\infty}^x e^{-t^2}dt"
+     src="../cgi-bin/mimetex.cgi?\normalsize
+     f(x)=\int\limits_{-\infty}^x e^{-t^2}dt"
      alt="" border=0 align=middle></a> if you submit the sample expression
      already in the box. </p>
 
@@ -414,8 +488,8 @@
 <pre> &lt;img&nbsp;src="../cgi-bin/mimetex.cgi?\large f(x)=\int_{-\infty}^xe^{-t^2}dt"
   alt="" border=0 align=middle&gt;</pre>
 
- <p> You can see numerous additional examples illustrating html
-     &lt;img&gt; tags using mimeTeX by viewing this page's source.
+ <p> <!-- You can see numerous additional examples illustrating html
+     &lt;img&gt; tags using mimeTeX by viewing this page's source. -->
      The typical mimeTeX &lt;img&gt; tag has the form </p>
 <pre> &lt;img&nbsp;src="../cgi-bin/mimetex.cgi?any valid LaTeX/mimeTeX expression"
   alt="" border=0 align=middle&gt;</pre> <p class="continue">
@@ -423,12 +497,12 @@
      page containing these tags to your compiled mimetex.cgi program, and
      where <b>any&nbsp;valid&nbsp;LaTeX/mimeTeX&nbsp;expression</b>
      is pretty much any valid LaTeX math expression: </p> <ul>
-       <li> As discussed in the <a href="#introduction">Introduction</a>,
+     <!-- <li> As discussed in the <a href="#introduction">Introduction</a>,
             you can replace cumbersome &lt;img&gt; tags with your own custom
-            tags or wrapper scripts. </li>
-       <li> And there are occasional exceptions where I couldn't program
-            mimeTeX to precisely mimic all valid LaTeX syntax.
-            One particular "gotcha" to be aware of is that mimeTeX bindings
+            tags or wrapper scripts. </li> -->
+       <li> <!-- And --> There are occasional exceptions where I couldn't
+            program mimeTeX to recognize valid LaTeX syntax.
+            One particular "gotcha" is that mimeTeX bindings
             are pretty much left-to-right.  Thus, for example, although
             mimeTeX correctly interprets <b>\frac12</b> as well as
             <b>\frac1{x^2}</b>, etc, the legal LaTeX expression
@@ -437,18 +511,20 @@
             the same way <b>x^\alpha12</b> would be interpreted, which is
             nonsense for <b>\frac</b>.  The same "gotcha" also applies to
             other combinations of commands, e.g., you must write
-            <b>\sqrt{\frac\alpha\beta}</b>, etc.
+            <b>\sqrt{\frac\alpha\beta}</b>, or
+            <b>\frac\alpha{\sqrt\beta}</b>, etc.
             The <a href="#reference">Syntax&nbsp;Reference</a> section
-            contains much additional information.  Or you can just begin
+            contains much additional information.  <!-- Or you can just begin
             playing with mimeTeX for yourself to see if it might have
-            any potential usefulness for you. </li>
-       <li> Besides the occasional exceptions discussed above, mimeTeX
-            also provides various LaTeX extensions, i.e., LaTeX errors
-            permitted by mimetex.  For example, font size changing
+            any potential usefulness for you. --> </li>
+       <li> Besides such exceptions, mimeTeX
+            also provides various LaTeX extensions. <!-- , i.e., LaTeX errors
+            permitted by mimetex. -->  For example, font size
             directives like <b>\Large</b> are permitted within mimeTeX
-            math&nbsp;mode expressions.  But note well: if you take
-            advantage of mimeTeX extensions, your math&nbsp;mode expressions
-            will no longer be accepted by standard TeX engines. </li> </ul>
+            math&nbsp;mode expressions, but flagged as errors by LaTeX.
+            <!-- But note well: if you take advantage of mimeTeX extensions,
+            your math&nbsp;mode expressions will no longer be accepted by
+            standard TeX engines. --> </li> </ul>
 
 
 <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -472,27 +548,27 @@
   <td align="left" colspan=4>
     <a href="#preview">
       <img id="example1a" onclick="eqntext('example1a')"
-      src="../cgi-bin/mimetex.cgi?\red\small\displaystyle
+      src="../cgi-bin/mimetex.cgi?\red\normalsize\displaystyle
       e^x=\sum_{n=0}^\infty\frac{x^n}{n!}"
       alt="" border=0 align=middle></a> &nbsp &nbsp
     <a href="#preview">
       <img id="example1b" onclick="eqntext('example1b')"
-      src="../cgi-bin/mimetex.cgi?\green\normalsize\displaystyle
+      src="../cgi-bin/mimetex.cgi?\green\large\displaystyle
       e^x=\sum_{n=0}^\infty\frac{x^n}{n!}"
       alt="" border=0 align=middle></a> &nbsp &nbsp
     <a href="#preview">
       <img id="example1c" onclick="eqntext('example1c')"
-      src="../cgi-bin/mimetex.cgi?\blue\large
+      src="../cgi-bin/mimetex.cgi?\blue\Large
       e^x=\sum_{n=0}^\infty\frac{x^n}{n!}"
       alt="" border=0 align=middle></a> &nbsp &nbsp
     <a href="#preview">
       <img id="example1d" onclick="eqntext('example1d')"
       src="../cgi-bin/mimetex.cgi?\reverse\opaque\light
-      \Large e^x=\sum_{n=0}^\infty\frac{x^n}{n!}"
+      \LARGE e^x=\sum_{n=0}^\infty\frac{x^n}{n!}"
       alt="" border=0 align=middle></a> &nbsp &nbsp
     <a href="#preview">
       <img id="example1e" onclick="eqntext('example1e')"
-      src="../cgi-bin/mimetex.cgi?\Large
+      src="../cgi-bin/mimetex.cgi?\LARGE
       e^x=\lim_{n\to\infty} \left(1+\frac xn\right)^n"
       alt="" border=0 align=middle></a>
   </td>
@@ -579,7 +655,7 @@
     <a href="#preview">
     <img id="example6" onclick="eqntext('example6')"
     src="../cgi-bin/mimetex.cgi?\LARGE\tilde y=\left\{
-    {\ddot x\text{ if x odd}\atop\hat{\,\bar x+1}\text{ if even}}\right."
+    {\ddot x\text{ if \vec x odd}\atop\hat{\,\bar x+1}\text{ if even}}\right."
     alt="" border=0 align=middle></a> </td>
   <td>
     illustrating <b>\left\{...\right<font size=5>.</font></b>
@@ -597,7 +673,7 @@
     <img id="example7" onclick="eqntext('example7')"
     src="../cgi-bin/mimetex.cgi?\Large\overbrace{a,...,a}^{\text{k a^,s}},
     \underbrace{b,...,b}_{\text{l b^,s}}\hspace{10}
-    \normalsize\underbrace{\overbrace{a...a}^{\text{k a^,s}},
+    \large\underbrace{\overbrace{a...a}^{\text{k a^,s}},
     \overbrace{b...b}^{\text{l b^,s}}}_{\text{k+l elements}}"
     alt="" border=0 align=middle></a> </td>
   <td>
@@ -610,7 +686,7 @@
  <tr>
   <td>
     <font size=5>(8)</font> </td>
-  <td align="left" colspan=4>
+  <td align="left" colspan=3>
     <table>
       <tr>
         <td align="left" colspan=2>
@@ -628,8 +704,11 @@
          <a href="#preview">
          <img id="example8b" onclick="eqntext('example8b')"
          src="../cgi-bin/mimetex.cgi?\Large A\ =\ \large\left(
-         \begin{array}{c.ccc}&1&2&3\\\hdash1&a_{11}&a_{12}&a_{13}\\
-         2&a_{21}&a_{22}&a_{23}\\3&a_{31}&a_{32}&a_{33}\end{array}\right)"
+         \begin{array}{c.cccc}&1&2&\cdots&n\\
+         \hdash1&a_{11}&a_{12}&\cdots&a_{1n}\\
+         2&a_{21}&a_{22}&\cdots&a_{2n}\\
+         \vdots&\vdots&\vdots&\ddots&\vdots\\
+         n&a_{n1}&a_{n2}&\cdots&a_{nn}\end{array}\right)"
          alt="" border=0 align=middle></a> </td>
         <td>
          demonstrating <a href="#array">\begin{array}</a>'s dashed lines </td>
@@ -717,7 +796,7 @@
     (52,50){\line(125)} (50,52;115;2){\mid} (52,55){\longleftar[60]}
     (130,56){\longrightar[35]} (116,58){r} (c85,50;80;2){\bullet}
     (c85,36){\large-q} (c165,36){\large q}
-    (42,30){\underbrace{\line(32)}_{\small a^2/r\;\;\;}} }"
+    (42,29){\underbrace{\line(32)}_{\small a^2/r\;\;\;}} }"
     alt="" border=0 align=middle></a> </td>
   <td valign="middle">
     mimeTeX <a href="#picture">\picture(size){pic_elems}</a>
@@ -756,14 +835,16 @@
 
 <!-- font examples
 ++++++++++++++++++ -->
+<h3> Some font examples <font size=5>...</font></a> </h3>
  <p> Finally, illustrated below are some examples of fonts and symbols
-     available with mimeTeX.  All symbols and sizes from cmr, cmmi. cmsy,
-     cmex and rsfs should be available, but they're not all shown.
-     Mathbb symbols are also available but not shown.
+     available with mimeTeX.  All symbols and sizes from cmr, cmmi,
+     cmmib (use <b>\mathbf{&nbsp;}</b>), cmsy, cmex, bbold (use
+     <b>\mathbb{&nbsp;}</b>), rsfs (use <b>\mathscr{&nbsp;}</b>),
+     and stmary should be available, but they're not all shown.
      And also not shown are various "constructed symbols" like \sqrt,
      accents, etc.  The illustrated font sizes are numbered 4=\Large,
-     3=\large and 2=\normalsize (not shown are 5=\LARGE, 1=\small and
-     0=\tiny). </p>
+     3=\large and 2=\normalsize (not shown are 7=\Huge, 6=\huge,
+     5=\LARGE, 1=\small and 0=\tiny). </p>
 
 <h3>cmmi latin uppercase, and lowercase</h3>
 <p> <img src="../cgi-bin/mimetex.cgi?\array{r$
@@ -812,7 +893,9 @@
 2$\pi&2$\rho&2$\sigma&2$\tau&2$\upsilon&2$\phi&2$\chi&2$\psi&2$\omega}"
 alt="" border=0 align=middle> </p>
 
-<h3>cmsy symbols at mimeTeX font size 3</h3>
+<h3>cmsy symbols at mimeTeX font size 3<br>
+<font size="3">(operators shown large are automatically "promoted"<br>
+to the larger size in \displaystyle mode)</font> </h3>
 <p> <img src="../cgi-bin/mimetex.cgi?\array{3,r$1$\rm~chars~\\
 1$\rm~0-15:~&-&\cdot&\times&\ast&\div&\diamond&\pm&\mp&
 \oplus&\ominus&\otimes&\oslash&\odot&\bigcirc&\circ&\bullet\\
@@ -829,12 +912,15 @@
 1$\rm~117-127:~&\sqcap&\sqsubseteq&\sqsupseteq&\S&\dag&\ddag&\P&\clubsuit&
 \Diamond&\Heart&\spadesuit}" alt="" border=0 align=middle> </p>
 
-<h3>a few other cmmi and cmr symbols at mimeTeX font size 4</h3>
+<h3>a few other cmmi, cmr, and stmary symbols at mimeTeX font size 4</h3>
 <p> <img src="../cgi-bin/mimetex.cgi?\array{4,r$
 1$\rm~cmmi:~&\leftharpoonup&\leftharpoondo&\rightharpoonup&\rightharpoondo&
 \triangleright&\triangleleft&\star&\partial&
 \flat&\natural&\sharp&\smile&\frown&\ell&\imath&\jmath&\wp&\vec\\
-1$\rm~cmr:~&\ss&\ae&\oe&\AE&\OE}" alt="" border=0 align=middle> </p>
+1$\rm~cmr:~&\ss&\ae&\oe&\AE&\OE \\
+1$\rm~stmary:~&\moo&\Lbag&\Rbag&\lightning&\llbracket&\rrbracket&
+\subsetpluseq&\supsetpluseq&\Yup&\Ydown}"
+alt="" border=0 align=middle> </p>
 
 
 <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -888,8 +974,8 @@
 <!-- <center> -->
     <table border="0" cellpadding="0" cellspacing="0">
       <tr><td><center><hr size="2">Very quickly &nbsp; --- &nbsp; download
-        <!-- jfa <a href="http://www.forkosh.com/mimetex.zip"> -->
-        <a href="ftp://ftp.tex.ac.uk/tex-archive/support/mimetex/mimetex.zip">
+        <a href="http://www.forkosh.com/mimetex.zip">
+        <!-- jfa <a href="ftp://ftp.tex.ac.uk/tex-archive/support/mimetex/mimetex.zip"> -->
         mimetex.zip</a> and then type
           <table border="0" cellpadding="0" cellspacing="0">
            <tr align="left">
@@ -906,149 +992,102 @@
 <!-- </center> -->
 
 <p> I've built and run mimeTeX under Linux and NetBSD using gcc. The source
-    code is ansi-standard C, and should compile and execute under all
-    environments without any change whatsoever. Build instructions below
+    code is ansi-standard C, and should compile and run under all
+    environments without change.  Instructions below
     are for Unix.  Modify them as necessary for your particular situation
     (note the -DWINDOWS switch if applicable). </p>
 
-<p> A summary of the steps needed to build mimeTeX is </p>
+<h2> <a name="compile"> (IIa) Download and Compile &nbsp; </a> </h2>
+
+ <p> The steps needed to download and compile mimeTeX are </p>
   <ul>
    <li> Download and unzip 
-        <!-- jfa <a href="http://www.forkosh.com/mimetex.zip"> -->
-        <a href="ftp://ftp.tex.ac.uk/tex-archive/support/mimetex/mimetex.zip">
-        mimetex.zip</a> in any convenient working directory. </li>
+        <a href="http://www.forkosh.com/mimetex.zip">
+        <!-- jfa <a href="ftp://ftp.tex.ac.uk/tex-archive/support/mimetex/mimetex.zip"> -->
+        mimetex.zip</a> in any convenient working directory.
+        Your working directory should now contain <center>
+        <table cellpadding=0 cellspacing=0>
+         <tr><td width=100>README</td> <td>mimeTeX release notes</td></tr>
+         <tr><td>LICENSE</td>    <td>GPL license, under which you may use
+                                     mimeTeX</td></tr>
+         <tr><td>mimetex.c</td>  <td>mimeTeX source program and all required
+                                     functions</td></tr>
+         <tr><td>mimetex.h</td>  <td>header file for mimetex.c (and for
+                                     gfuntype.c)</td></tr>
+         <tr><td>gfuntype.c</td> <td>parses output from <b>gftype -i</b>
+                                     and writes bitmap data</td></tr>
+         <tr><td>texfonts.h</td> <td>output from several <b>gfuntype</b> runs,
+                                     needed by mimetex.c</td></tr>
+         <tr><td>gifsave.c</td>  <td>gif library by Sverre H. Huseby
+                                     <a href="http://shh.thathost.com"
+                                     target="_top">http://shh.thathost.com</a>
+                                     </td></tr>
+         <tr><td>mimetex.html</td> <td>this file, the mimeTeX
+                                     user's manual</td></tr>
+        </table></center>
+        &nbsp; &nbsp; &nbsp; &nbsp;
+          Note: all files use Unix line termination, i.e., linefeeds
+        (without carriage returns) signal line endings. Conversion for
+        Windows PC's, Macs, VMS, etc, can usually be accomplished by
+        unzip's&nbsp;-a option, i.e.,  unzip&nbsp;-a&nbsp;mimetex.zip
+        <br> <br> </li>
    <li> To compile an executable that emits anti-aliased gif images
-        (which is how the page you're viewing is displayed)<br>
-        &nbsp; <b>cc -DAA mimetex.c gifsave.c -lm -o mimetex.cgi</b> </li>
-   <li> or, to emit gif images without anti-aliasing<br>
-        &nbsp; <b>cc -DGIF mimetex.c gifsave.c -lm -o mimetex.cgi</b> </li>
+        (which is recommended for most uses), just type the following
+        command from the Unix shell <br>
+        &nbsp; &nbsp; &nbsp; &nbsp;
+          <b>cc -DAA mimetex.c gifsave.c -lm -o mimetex.cgi</b> </li>
+   <li> Or, to compile an executable that emit gif images
+        without anti-aliasing <br>
+        &nbsp; &nbsp; &nbsp; &nbsp;
+          <b>cc -DGIF mimetex.c gifsave.c -lm -o mimetex.cgi</b> </li>
    <li> Alternatively, to compile an executable that emits mime xbitmaps<br>
-        &nbsp; <b>cc -DXBITMAP mimetex.c -lm -o mimetex.cgi</b> </li>
+        &nbsp; &nbsp; &nbsp; &nbsp;
+          <b>cc -DXBITMAP mimetex.c -lm -o mimetex.cgi</b> </li>
    <li> Compile Notes: <ul>
         <li> If (and only if) you're compiling a Windows executable with
         the <b>-DAA</b> or <b>-DGIF</b> option (but not -DXBITMAP), then
         add <b>-DWINDOWS</b>&nbsp;.  For example, <br>
-             &nbsp; &nbsp; &nbsp; &nbsp; <b>cc -DAA -DWINDOWS
-             mimetex.c gifsave.c -lm -o mimetex.cgi</b> <br>
+             <nobr> &nbsp; &nbsp; &nbsp; &nbsp; <b>gcc -DAA -DWINDOWS
+             mimetex.c gifsave.c -lm -o mimetex.exe</b> </nobr> <br>
         The above Unix-like syntax works with
         <a href="http://www.mingw.org" target="_top">MinGW</a> and
         <a href="http://www.delorie.com/djgpp/" target="_top">djgpp</a>
         Windows compilers, but probably not with most others,
-        where it's only intended as a "template". </li>
+        where it's only intended as a "template". <br>
+        &nbsp; &nbsp; &nbsp; &nbsp;
+          Explanation: mimeTeX writes gif bytes directly to stdout, as usual
+        for cgi's.  But Windows treats stdout as a character stream,
+        interpreting any hex 0A byte as an &lt;lf&gt;, and automatically
+        preceding it with a spurious hex 0D &nbsp; &lt;cr&gt;  byte.  The
+        -DWINDOWS switch compiles in a non-portable, Windows-specific
+        _setmode() call that sets stdout to binary mode. </li>
+        <li> If you're compiling for Windows and would prefer
+        to install mimeTeX as a Win32 DLL, see the
+        <a href="http://www.codeproject.com/dotnet/Eq2Img.asp">
+        Code&nbsp;Project</a> developed by
+        <a href="http://www.shitalshah.com">Shital&nbsp;Shah</a>, and
+        download <a href="http://www.shitalshah.com/dev/eq2img_all.zip">
+        eq2img_all.zip</a> containing Shital's latest code. </li>
         <!-- <li> If you're compiling on Sun or VMS, and see about a zillion
         irritating warnings, try adding <b>-DSIGNEDCHAR</b>
         (for VMS, that's cc/define=(AA,SIGNEDCHAR)&nbsp;mimetex.c) </li> -->
-        </ul> </li>
-  </ul>
-<p> And a summary of the steps needed to install mimeTeX is </p>
-  <ul>
-   <li> Just &nbsp; mv mimetex.cgi &nbsp; to your server's <b>cgi-bin/</b>
-        directory, set permissions as necessary, and you're all done. </li>
-   <li> Now, to quickly test your mimetex.cgi, try typing a url into
-        your browser's locator window something like &nbsp;
-        <b>http://www.<i>yourdomain</i>.com/cgi-bin/mimetex.cgi?x^2+y^2</b>
-        &nbsp; which should display &nbsp;
-        <img src="../cgi-bin/mimetex.cgi?x^2+y^2" alt="" border=0
-        align=middle> &nbsp; in the upper-left corner of your window. </li>
-   <li> After the preceding test succeeds, you can optionally
-        &quot;regression&nbsp;test&quot; all mimeTeX features as follows:<ul>
-        <li> mv mimetex.html (this file) to your server's <b>htdocs/</b>
-        directory </li>
-        <li> If the relative path from htdocs to cgi-bin isn't
-        <b>../cgi-bin</b> then edit mimetex.html and change the
-        few dozen occurrences as necessary (globally changing
-        <b>../cgi-bin/mimetex.cgi</b> should work). </li>
-        <li> Now visit your page &nbsp;
-        <b>http://www.<i>yourdomain</i>.com/mimetex.html</b> </li>
-        <li> Once mimetex.html displays properly, you can assume
-        everything is working, and can begin authoring html documents
-        using mimetex.cgi to render your own math. </li> </ul>
+        </ul> <br> </li>
+   <li> The gfuntype program is only needed if you plan to change the
+        font information in texfonts.h, as explained in
+        <a href="#fonts">Appendix IVa</a> below.
+        In that case, compile gfuntype with the command <br>
+        &nbsp; &nbsp; &nbsp; &nbsp;
+          <b>cc gfuntype.c mimetex.c -lm -o gfuntype</b> </li>
   </ul>
-  <p> Any problems with the above?
-  Read the more detailed instructions below. </p>
-
-
-<h2> <a name="download"> (IIa) Download &nbsp; </a> </h2>
-
- <p> Download
-     <!-- jfa <a href="http://www.forkosh.com/mimetex.zip"> -->
-     <a href="ftp://ftp.tex.ac.uk/tex-archive/support/mimetex/mimetex.zip">
-     mimetex.zip</a> and unzip it in any convenient working directory.
-     Your working directory should now contain </p> <center>
-       <table cellpadding=0 cellspacing=0>
-         <tr><td width=100>README</td> <td>mimeTeX release notes</td></tr>
-         <tr><td>LICENSE</td>    <td>GPL license, under which you may use
-                                     mimeTeX</td></tr>
-         <tr><td>mimetex.c</td>  <td>mimeTeX source program and all required
-                                     functions</td></tr>
-         <tr><td>mimetex.h</td>  <td>header file for mimetex.c (and for
-                                     gfuntype.c)</td></tr>
-         <tr><td>gfuntype.c</td> <td>parses output from <b>gftype -i</b>
-                                     and writes bitmap data</td></tr>
-         <tr><td>texfonts.h</td> <td>output from several <b>gfuntype</b> runs,
-                                     needed by mimetex.c</td></tr>
-         <tr><td>gifsave.c</td>  <td>gif library by Sverre H. Huseby
-                                     <a href="http://shh.thathost.com">
-                                     http://shh.thathost.com</a></td></tr>
-         <tr><td>mimetex.html</td> <td>this file, mimeTeX tutorial and
-                                     user's manual</td></tr>
-       </table></center>
- <p> Note: all files use Unix line termination, i.e., linefeeds
-     (without carriage returns) signal line endings. Conversion for
-     Windows PC's, Macs, VMS, etc, can usually be accomplished by
-     unzip's&nbsp;-a option, i.e.,  unzip&nbsp;-a&nbsp;mimetex.zip </p>
-
-
-<h2> <a name="compile"> (IIb) Compile &nbsp; </a> </h2>
-
- <p> To compile a mimeTeX executable that emits anti-aliased gif images
-     (which is recommended for most uses) issue the command </p>
-     <center><b>cc -DAA mimetex.c gifsave.c -lm -o mimetex.cgi</b>
-     </center>
-
- <p> Or, for an executable that emits gif images without anti-aliasing,
-     issue the command </p>
-     <center><b>cc -DGIF mimetex.c gifsave.c -lm -o mimetex.cgi</b>
-     </center>
-
- <p> Alternatively, to compile a mimeTeX executable that emits
-     mime xbitmaps, just issue the command </p>
-     <center><b>cc -DXBITMAP mimetex.c -lm -o mimetex.cgi</b>
-     </center>
-
- <p> Compile Notes: </p> <ul>
-     <li> If (and only if) you're compiling a Windows executable with
-          the <b>-DAA</b> or <b>-DGIF</b> option (but not -DXBITMAP), then
-          add <b>-DWINDOWS</b>&nbsp;.  For example, <br>
-             &nbsp; &nbsp; &nbsp; &nbsp; <b>cc -DAA -DWINDOWS
-             mimetex.c gifsave.c -lm -o mimetex.cgi</b> <br>
-          The above Unix-like syntax works with
-          <a href="http://www.mingw.org" target="_top">MinGW</a> and
-          <a href="http://www.delorie.com/djgpp/" target="_top">djgpp</a>
-          Windows compilers, but probably not with most others,
-          where it's only intended as a "template". <br>
-          &nbsp; &nbsp; Explanation: mimeTeX writes gif bytes directly to
-          stdout, as usual for cgi's.  But Windows treats
-          stdout as a character stream, interpreting any hex 0A byte
-          as an &lt;lf&gt;, and automatically preceding it with
-          a spurious hex 0D &nbsp; &lt;cr&gt; byte.  The -DWINDOWS switch
-          compiles in a non-portable, Windows-specific _setmode()
-          call that sets stdout to binary mode. </li>
-     </ul>
-
- <p> Several other optional compile-line <a href="#options">options</a>
+ <p> That's all there is to compiling mimeTeX.
+     Several other optional compile-line <a href="#options">options</a>
      available for mimetex.c are discussed below. </p>
 
- <p> The gfuntype program is only needed if you plan to change the
-     font information in texfonts.h, as explained in
-     <a href="#fonts">Appendix IVa</a> below.
-     In that case, compile gfuntype with the command </p>
-     <center><b>cc gfuntype.c mimetex.c -lm -o gfuntype</b></center>
-
- <p> That's all there is to building mimeTeX.  You can now test your
-     mimetex.cgi executable from the Unix command line by typing, e.g.,
-     <b>./mimetex.cgi&nbsp;"x^2+y^2"</b> which should emit two ascii
-     rasters something like the following </p> <pre>
+ <p> Immediately after compiling mimeTeX, test your new executable
+     by typing &nbsp; <b>./mimetex.cgi&nbsp;"x^2+y^2"</b> &nbsp;
+     from the Unix shell (or &nbsp; <b>mimetex&nbsp;"x^2+y^2"</b>
+     &nbsp; from the Windows Command Prompt), which should emit
+     two "ascii&nbsp;rasters" something like the following </p> <pre>
 Ascii dump of bitmap image...           Hex dump of colormap indexes...
 ...........**....................**...  ..........1**1...................1**1..
 ..........*..*......*...........*..*..  ..........*23*......*............*23*..
@@ -1069,32 +1108,80 @@
     grayscale colormap indexes assigned to neighboring pixels, and with
     the rgb value for each index.<b>)</b>  Just typing <b>./mimetex.cgi</b>
     without an argument should produce ascii rasters for the default
-    expression <b>f(x)=x^2</b>.  If you see the two ascii rasters then your
-    binary's good, so mv it to your server's <b>cgi-bin/</b> directory and
-    set permissions as necessary. </p>
-
-<h2> <a name="install"> (IIc) Install &nbsp; </a> </h2>
-
- <p> Once mimetex.cgi is working, mv it to your server's <b>cgi-bin/</b>
-     directory (wherever cgi programs are expected), and chmod/chown it
-     if necessary.  Then mv mimetex.html to your server's <b>htdocs/</b>
-     directory.  Now point your browser to www.yourdomain.com/mimetex.html ,
-     and you should see a page identical to this one. </p>
-
- <p> Note: the two directories are typically of the form
-     somewhere/www/cgi-bin/ and somewhere/www/htdocs/ ,  so I set up
-     mimtex.html to get mimetex.cgi from the relative path <b>../cgi-bin/</b>.
-     If your directories are non-conforming, you may have to edit the
-     few dozen occurrences of <b>../cgi-bin/mimetex.cgi</b> in mimetex.html .
-     Sometimes a suitable symlink works; if not, you'll have to edit.
-     Globally changing <b>../cgi-bin/mimetex.cgi</b> often works. </p>
-
- <p> Either way, once mimetex.html displays properly, you can assume
-     everything is working, and can begin authoring html documents using
-     mimetex.cgi to render your own math. </p>
+    expression <b>f(x)=x^2</b>.  If you see these two ascii rasters then
+    your binary's good.  Otherwise, you must find and fix the problem
+    before proceeding. </p>
+
 
+<h2> <a name="install"> (IIb) Install &nbsp; </a> </h2>
 
-<h2> <a name="options"> (IId) Additional Compile-Line Options &nbsp; </a></h2>
+ <p> Once you've successfully tested mimetex.cgi from the Unix shell
+     (or mimetex.exe from the Windows Command Prompt),
+     the steps needed to install mimeTeX are </p>
+  <ul>
+   <li> <b>mv</b> mimetex.cgi &nbsp; (or <b>move</b> mimetex.exe) &nbsp;
+        to your server's <b>cgi-bin/</b> directory, wherever cgi
+        programs are expected. </li>
+   <li> Now you may need to <b>chmod&nbsp;755&nbsp;mimetex.cgi</b> &nbsp;
+        and/or <b>chown</b> it, too, depending on your server's
+        requirements.  Contact your system administrator or ISP
+        if you're not already familiar with this information. </li>
+   <li> Once mimetex.cgi is moved to your server's <b>cgi-bin/</b>
+        directory, with permissions and owner set as necessary,
+        you're all done. </li>
+  </ul>
+
+ <p> Immediately after installing mimeTeX, test your new mimetex.cgi
+     by typing a url into your browser's locator window something like <br>
+     &nbsp; &nbsp; &nbsp; &nbsp;
+      <b>http://www.<i>yourdomain</i>.com/cgi-bin/mimetex.cgi?x^2+y^2</b> <br>
+     which should display &nbsp;
+     <img src="../cgi-bin/mimetex.cgi?\normalsize x^2+y^2" alt="" border=0
+     align=middle> &nbsp; in the upper-left corner of your window,
+     just like clicking this link does, which tests my mimetex.cgi, <br>
+     &nbsp; &nbsp; &nbsp; &nbsp;
+      <a href="http://www.forkosh.com/cgi-bin/mimetex.cgi?x^2+y^2"
+      target="_top">http://www.forkosh.com/cgi-bin/mimetex.cgi?x^2+y^2</a><br>
+     If you see the same &nbsp; <img src="../cgi-bin/mimetex.cgi?
+     \normalsize x^2+y^2" alt="" border=0 align=middle> &nbsp; image
+     from the <b><i>yourdomain</i></b> link, then you've completed
+     a successful mimeTeX installation. </p>
+
+ <p> If you don't see the image, then your installation failed.
+     If your earlier post-compilation "ascii&nbsp;raster" test
+     succeeeded, then the problem is probably some server-specific
+     installation requirement.  First make sure you installed mimetex.cgi
+     in the correct <b>cgi-bin/</b> directory, set the correct <b>chmod</b>
+     permissions, and typed the correct url into your browser's locator
+     window.  Then contact your system administrator or ISP,
+     and ask how to install cgi programs on your server. </p>
+
+ <p> After you've successfully installed mimeTeX, and both preceeding tests
+     have succeeded, you can optionally &quot;regression&nbsp;test&quot;
+     all mimeTeX features as follows: </p>
+      <ul>
+        <li> <b>mv</b> mimetex.html (this file) to your server's
+             <b>htdocs/</b> directory </li>
+        <li> Paths to <b>cgi-bin/</b> and <b>htdocs/</b> directories
+             are typically <b><i>path</i>/www/cgi-bin/</b> and
+             <b><i>path</i>/www/htdocs/</b>,  so I set up mimtex.html
+             to access mimetex.cgi from the relative path <b>../cgi-bin/</b>.
+             If your directories are non-conforming, you may have to edit
+             the few dozen occurrences of <b>../cgi-bin/mimetex.cgi</b>
+             in your mimetex.html page.  Sometimes a suitable symlink works;
+             if not, you'll have to edit.  Globally changing
+             <b>../cgi-bin/mimetex.cgi</b> usually works. </li>
+        <li> Now visit your page &nbsp;
+             <b>http://www.<i>yourdomain</i>.com/mimetex.html</b> </li>
+        <li> Once your mimetex.html displays properly, you can assume
+             everything is working, and can begin authoring html documents
+             using mimetex.cgi to render your own math. </li>
+     </ul>
+
+  <p> That's all there is to installing mimeTeX. </p>.
+
+
+<h2> <a name="options"> (IIc) Additional Compile-Line Options &nbsp; </a></h2>
 
  <p> In addition to -DAA or -DGIF or -DXBITMAP (along with -DWINDOWS
      when necessary) on the mimetex.c compile line, as discussed above,
@@ -1125,9 +1212,9 @@
            algorithm for anti-aliasing, which is applied to the
            existing set of bitmap fonts.  This lowpass filter applies
            weights <img src="../cgi-bin/mimetex.cgi?
-           \tiny\begin{pmatrix}1&3&1\\3&\,32\,&3\\1&3&1\end{pmatrix}"
+           \tiny\begin{pmatrix}1&2&1\\2&\,8\,&2\\1&2&1\end{pmatrix}"
            alt="" border=0 align=middle> to neighboring pixels. The defaults
-           weights are CENTERWT=32, ADJACENTWT=3 and CORNERWT=1,
+           weights are CENTERWT=8, ADJACENTWT=2 and CORNERWT=1,
            which you can adjust to control anti-aliasing. </dd>
       <dt> <b>-DCACHEPATH=\"<i>path/</i>\"</b> </dt>
        <dd> This option saves each rendered image to a file in directory
@@ -1152,11 +1239,17 @@
 2004-08-07:09:00:53am            f8ccc8dd93c8eeb1d9c40b353ef781e0.gif
 \LARGE x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
 ---------------------------------------------------------------------</pre></dd>
+      <dt><b>-DDEFAULTSIZE=<i>n</i></b> </dt>
+       <dd> MimeTeX currently has eight font sizes numbered 0-7,
+           and always starts out in DEFAULTSIZE, whose default value is 3.
+           Specify -DDEFAULTSIZE=2 on the compile line if you prefer
+           mimeTeX to start in default size 2, etc. </dd>
       <dt><b>-DDISPLAYSIZE=<i>n</i></b> </dt>
        <dd> By default, operator limits like <b>\int_a^b</b> are rendered
            <b>\textstyle</b> <a href="#preview">
            <img id="displaysize1" onclick="eqntext('displaysize1')"
-           src="../cgi-bin/mimetex.cgi?\normalsize\int_a^b"
+           src="../cgi-bin/mimetex.cgi?
+           \normalsize\displaystyle\int\nolimits_a^b"
            alt="" border=0 align=middle></a> at font sizes <b>\normalsize</b>
            and smaller, and rendered <b>\displaystyle</b> <a href="#preview">
            <img id="displaysize2" onclick="eqntext('displaysize2')"
@@ -1169,12 +1262,13 @@
            <b>\textstyle</b>, <b>\displaystyle</b>, <b>\limits</b> or
            <b>\nolimits</b> directives in an expression always override
            the <b>DISPLAYSIZE</b> default. </dd>
-      <dt><b>-DNEWCOMMANDS=<i>newcommands.h</i></b> </dt>
+      <dt><b>-DNEWCOMMANDS=\"<i>newcommands.h</i>\"</b> </dt>
        <dd> LaTeX-like <b>\newcommand</b>'s are available in mimeTeX,
            via the following facility to help you define your
            own "new&nbsp;commands" during compilation.  Edit a file named
-           newcommands.h (or any filename you specify with the
-           <b>-DNEWCOMMANDS</b> switch).  For newcommands _without_
+           newcommands.h (or any filename you specify between 
+           <b>\"...\"</b>'s with the <b>-DNEWCOMMANDS=\"<i>filename</i>\"</b>
+           switch).  For newcommands _without_
            arguments, your file should contain one or more lines
            like the following examples:
 <pre>{ "\\iint",  NULL, "{\\int\\int}" },
@@ -1219,11 +1313,6 @@
            <br> &nbsp; &nbsp; To see many additional examples, search for the
            uppercase string NEWCOMMANDS in mimetex.c, and look below that.
            All the above examples are already there. </dd>
-      <dt><b>-DNORMALSIZE=<i>n</i></b> </dt>
-       <dd> MimeTeX currently has six font sizes numbered 0-5,
-           and always starts out in NORMALSIZE, whose default value is 2.
-           Specify -DNORMALSIZE=3 on the compile line if you prefer
-           mimeTeX to start in default size 3, etc. </dd>
       <dt> <b>-DPATHPREFIX=\"<i>path/</i>\"</b> </dt>
        <dd> The <a href="#input">\input{&nbsp;}</a> and
            <a href="#counter">\counter{&nbsp;}</a> commands discussed below
@@ -1266,24 +1355,24 @@
            could conceivably flood your file system by submitting
            zillions of <b>\counter{<i>filename</i>}</b> commands
            to mimeTeX, each with a different <b><i>filename</i></b>. </dd>
-      <dt><b>-DSQUASHMARGIN=<i>n</i> or <br>
-          -DNOSQUASH</b> </dt>
+      <dt><b>-DSMASHMARGIN=<i>n</i> or <br>
+          -DNOSMASH</b> </dt>
        <dd> TeX typically renders an expression like
            <b>\frac12\int_{a+b+c}^{d+e+f}g(x)dx</b> as <a href="#preview">
-           <img id="nosquash1" onclick="eqntext('nosquash1')"
-           src="../cgi-bin/mimetex.cgi?\displaystyle
-           \nosquash\frac12\int_{a+b+c}^{d+e+f}g(x)dx"
+           <img id="nosmash1" onclick="eqntext('nosmash1')"
+           src="../cgi-bin/mimetex.cgi?\normalsize\displaystyle
+           \nosmash\frac12\int_{a+b+c}^{d+e+f}g(x)dx"
            alt="" border=0 align=middle></a>.  MimeTeX tries to remove extra
            whitespace, rendering the same expression as <a href="#preview">
-           <img id="nosquash2" onclick="eqntext('nosquash2')"
-           src="../cgi-bin/mimetex.cgi?\displaystyle
-           \squash\frac12\int_{a+b+c}^{d+e+f}{g(x)}dx"
+           <img id="nosmash2" onclick="eqntext('nosmash2')"
+           src="../cgi-bin/mimetex.cgi?\normalsize\displaystyle
+           \smash\frac12\int_{a+b+c}^{d+e+f}{g(x)}dx"
            alt="" border=0 align=middle></a> instead.
-           Compile with <b>-DNOSQUASH</b> if you prefer the typical TeX
+           Compile with <b>-DNOSMASH</b> if you prefer the typical TeX
            behavior as mimeTeX's default.  Or, to adjust the minimum
-           number of pixels between squashed symbols (default is 3),
-           compile with <b>-DSQUASHMARGIN=<i>n</i></b>.
-           See <a href="#squash">Squash</a> for further discussion. </dd>
+           number of pixels between smashed symbols (default is 3),
+           compile with <b>-DSMASHMARGIN=<i>n</i></b>.
+           See <a href="#smash">Smash</a> for further discussion. </dd>
       <dt> <b>-DWARNINGS=<i>n</i>  or <br>
            -DNOWARNINGS</b> </dt>
        <dd> If an expression submitted to mimeTeX contains an
@@ -1302,7 +1391,7 @@
      </dl>
 
 
-<h2> <a name="cmdline"> (IIe) Command Line Features &nbsp; </a> </h2>
+<h2> <a name="cmdline"> (IId) Command Line Features &nbsp; </a> </h2>
 
  <p> MimeTeX usually runs from a browser, obtaining its input expression
      from a query_string.  But you can also run mimeTeX from your Unix
@@ -1322,6 +1411,10 @@
                [ -e export_file ]  or write gif image to export_file
                [ expression      expression, e.g., "x^2+y^2",
                | -f input_file ]   or read expression from input_file
+               [ -g1 -d ]        dump .pbm-formatted image on stdout
+               [ -g1 -e export_file ]  or write .pbm image to export_file
+               [ -g2 -d ]        dump anti-aliased .pgm image on stdout
+               [ -g2 -e export_file ]  or write .pgm image to export_file
                [ -m msglevel ]   verbosity of debugging output
                [ -o ]            render image with opaque background
                [ -s fontsize ]   default fontsize, 0-5
@@ -1331,24 +1424,42 @@
                ./mimetex  -d  "x^2+y^2"  >  expression.gif
           creates expression.gif containing an image of x^2+y^2
 
-     -e   Like -d but writes the actual gif (or xbitmap) directly
-          to export_file, e.g.,
+     -e export_file   Like -d but writes the actual gif
+          (or xbitmap) directly to export_file, e.g.,
                ./mimetex  -e expression.gif  "x^2+y^2"
-          also creates expression.gif containing an image of x^2+y^2
+          creates file expression.gif containing an image of x^2+y^2
 
      expression   Place LaTeX expression directly on command
           line, with no -switch preceding it, as in the example
-          immediately above, or...
+          immediately above, or.....
 
-     -f   Read expression from input_file (and automatically
-          assume -d switch).  The input_file may contain the
-          expression on one line or spread out over many lines.
-          MimeTeX will concatanate all lines from input_file
-          to construct one long expression.  Blanks, tabs, and
-          newlines are just ignored.
+     -f input_file   .....read expression from input_file
+          (and automatically assume -d switch).  The input_file
+          may contain the expression on one line or spread out
+          over many lines.  MimeTeX will concatanate all lines
+          from input_file to construct one long expression.
+          Blanks, tabs, and newlines are just ignored.
+
+     -g1 -d   dumps a .pbm-formatted portable bitmap image to stdout.
+          Note that this is the bitmap image _before_ anti-aliasing.
+
+     -g1 -e export_file   Like -g1 -d but writes the .pbm-formatted
+          portable bitmap directly to export_file, e.g.,
+               ./mimetex  -g1 -e expression.pbm  "x^2+y^2"
+          creates file expression.pbm containing a bitmap image
+          of x^2+y^2 before anti-aliasing.
+
+     -g2 -d   dumps a .pgm-formatted portable graphic image to stdout.
+          Note that this is the bytemap image _after_ anti-aliasing.
+
+     -g2 -e export_file   Like -g2 -d but writes the .pgm-formatted
+          portable graphic image directly to export_file, e.g.,
+               ./mimetex  -g3 -e expression.pgm  "x^2+y^2"
+          creates file expression.pgm containing a bytemap image
+          of x^2+y^2 after anti-aliasing.
 
-     -m   0-99, controls verbosity level for debugging output
-          (usually used only while testing code).
+     -m msglevel   0-99, controls verbosity/message level for
+          debugging output (usually used only while testing code).
 
      -o   Rather than the default transparent gif background,
           the rendered image will contain black symbols on an
@@ -1358,10 +1469,10 @@
                ./mimetex  -o -d  "x^2+y^2" | display &
           opens a small window containing the rendered expression.
 
-     -s   0-5, font size.  As usual, the font size can also
-          be specified within the expression by a directive,
-          e.g., \large f(x)=x^2 displays f(x)=x^2 at font size 3,
-          overriding -s.  Default font size is 2.
+     -s fontsize   0-7, font size.  Font size can also be specified
+          within the expression by a directive, e.g., \Large f(x)=x^2
+          displays f(x)=x^2 at font size 4, overriding -s.
+          Default font size is 3.
      </pre>
 
 
@@ -1372,10 +1483,12 @@
 <h1> <a name="reference"> (III) Syntax Reference &nbsp; </a> </h1>
 
 <p> Since mimeTeX's syntax is as TeX-like as possible, we'll mostly discuss
-    the occasional exceptions (which exist only to simplify my programming
-    task, not to impose any syntactic aesthetics of mine on you).  This
-    section contains short paragraphs that each discuss some aspect of
-    mimeTeX where your LaTeX experience might not be precisely relevant. </p>
+    the occasional differences.
+    <!-- (which exist only to simplify my programming
+    task, not to impose any syntactic aesthetics of mine on you). -->
+    This section contains short paragraphs that each discuss some aspect
+    of mimeTeX where your LaTeX experience might not be precisely
+    duplicated. </p>
 
 <p> Anything not discussed here that still doesn't behave like you expect
     is probably just not implemented.  That includes (La)TeX packages
@@ -1450,7 +1563,7 @@
 
  <p> Although some browsers occasionally misinterpret typed blank spaces
      inside html query_string's, mimeTeX also recognizes escaped blanks
-     <img src="../cgi-bin/mimetex.cgi?1$\backsl\raise{-5}{\rotate{-90}]}"
+     <img src="../cgi-bin/mimetex.cgi?\small\backsl\raise{-5}{\rotate{-90}]}"
      alt="" border=0 align=middle> (a <b>\</b> followed by a blank) as math
      spaces, just in case you can safely use them. </p>
 
@@ -1464,7 +1577,7 @@
         <b>{abc \hfill{50} def} \hfill{100} ghi</b>
         &nbsp; &nbsp; produces &nbsp; &nbsp;
         <a href="#preview"><img id="mathspace1" onclick="eqntext('mathspace1')"
-        src="../cgi-bin/mimetex.cgi?3${abc\hfill{50}def}\hfill{100}ghi"
+        src="../cgi-bin/mimetex.cgi?\large{abc\hfill{50}def}\hfill{100}ghi"
         alt="" border=0 align=middle></a> </center> <p class="continue">
      The first/inner <b>\hfill{50}</b> inserts exactly enough whitespace so
      that subexpression "<b><i>abc&nbsp;&nbsp;def</i></b>" spans 50 pixels.
@@ -1488,7 +1601,7 @@
         <b>y=a+b+c+d\\\hspace{50}+e+f+g+h</b>
         &nbsp; &nbsp; to produce &nbsp; &nbsp;
         <a href="#preview"><img id="mathspace2" onclick="eqntext('mathspace2')"
-        src="../cgi-bin/mimetex.cgi?3$y=a+b+c+d\\\hspace{50}+e+f+g+h"
+        src="../cgi-bin/mimetex.cgi?\large y=a+b+c+d\\\hspace{50}+e+f+g+h"
         alt="" border=0 align=middle></a> </center>
 
  <p> However, mimeTeX can't correctly handle automatically-sized delimiters
@@ -1496,12 +1609,13 @@
         <b>y=\left\{a+b+c+d\\\hspace{50}+e+f+g+h\right\}</b>
         &nbsp; &nbsp; produces &nbsp; &nbsp;
         <a href="#preview"><img id="mathspace3" onclick="eqntext('mathspace3')"
-        src="../cgi-bin/mimetex.cgi?3$y=\{a+b+c+d\\\hspace{50}+e+f+g+h\}"
-        alt="" border=0 align=middle></a> <br>
+        src="../cgi-bin/mimetex.cgi?\large y=\{a+b+c+d\\
+        \hspace{50}+e+f+g+h\}" alt="" border=0 align=middle></a> <br>
 	whereas you probably wanted &nbsp; &nbsp; &nbsp; &nbsp;
         <a href="#preview"><img id="mathspace4" onclick="eqntext('mathspace4')"
-        src="../cgi-bin/mimetex.cgi?3$y=\big{a+b+c+d\\\hspace{50}+e+f+g+h\big}"
-        alt="" border=0 align=middle></a> </center> <p class="continue">
+        src="../cgi-bin/mimetex.cgi?\large y=\big{a+b+c+d\\
+        \hspace{50}+e+f+g+h\big}" alt="" border=0 align=middle></a>
+        </center> <p class="continue">
      which I produced using <b>\big{...\\...\big}</b> instead
      of <b>\left\{...\\...\right\}</b>.  Expressions of the
      form <b>\left...\right&nbsp;\\&nbsp;\left...\right</b> should all be
@@ -1559,14 +1673,16 @@
      500-or-so lines of <b>mimetex.h</b>.  And several additional
      symbols like <b>\ldots</b> and <b>\AA</b> and <b>\hbar</b> are
      defined by the mimeTeX preprocessor, function <b>mimeprep(&nbsp;)</b>
-     in <b>mimetex.c</b> &nbsp; &nbsp; Generally speaking, I've tried
-     to encode the cmmi10, cmsy10, cmr10, cmex10, rsfs10 and bbold10
-     families with "names", e.g., <b>\alpha \beta \forall \sqcup</b>, etc,
-     identical to your LaTeX expectations.  For example, the
-     calligraphic symbols in cmsy10 are accessed by writing
-     <b>\mathcal{A} \mathcal{B} \mathcal{XYZ}</b>.  Similarly, write
-     <b>\mathscr{A}</b> for the rsfs10 fonts, and write <b>\mathbb{R}</b>
-     for bbold10. </p>
+     in <b>mimetex.c</b> &nbsp; &nbsp; Generally speaking, I've tried to
+     encode the cmr10, cmmi10, cmmib10, cmsy10, cmex10, bbold10, rsfs10,
+     and stmary10 families with "names", e.g., <b>\alpha \beta
+     \forall \sqcup</b>, etc, identical to your LaTeX expectations.
+     For example, the calligraphic symbols in cmsy10 are accessed by
+     writing <b>\mathcal{A} \mathcal{B} \mathcal{XYZ}</b>.  Similarly,
+     write <b>\mathbf{A}</b> for the cmmib fonts, write <b>\mathscr{A}</b>
+     for rsfs10, and write <b>\mathbb{R}</b> for bbold10.
+     And see stmaryrd.dvi or stmaryrd.sty, supplied with most LaTeX
+     distributions, for the names of the stmary10 symbols. </p>
      <!-- But there are various additions and omissions and exceptions
      vis-a-vis LaTeX.  For example, </p>
       <ul>
@@ -1594,45 +1710,76 @@
 
 <h3> <a name="sizes">Font Sizes<font size=5>...</font></a> </h3>
 
- <p> MimeTeX currently has six font sizes, numbered 0-5, with default 2.
-     This font size numbering corresponds to the usual LaTeX declarations
-     &nbsp; <b>\tiny</b>, &nbsp; <b>\small</b>, &nbsp; <b>\normalsize</b>
-     (default), &nbsp; <b>\large</b>, &nbsp; <b>\Large</b> and <b>\LARGE</b>.
-     These declarations can be placed anywhere in a mimeTeX expression,
+ <p> MimeTeX currently has eight font sizes, numbered 0-7, with default 3.
+     This font size numbering corresponds to the usual LaTeX directives
+     &nbsp; <b>\tiny</b>, &nbsp; <b>\small</b>, &nbsp; <b>\normalsize</b>,
+     &nbsp; <b>\large</b> (default), &nbsp; <b>\Large</b>, &nbsp;
+     <b>\LARGE</b>, &nbsp; <b>\huge</b> and <b>\Huge</b>.
+     These directives can be placed anywhere in a mimeTeX expression,
      and they change font size from that point forwards.  However, as usual,
      a font size change inside a <b>{&nbsp;}</b>-subexpression remains
      in effect only within that subexpression. </p>
 
- <p> In mimeTeX you may also write <b>\fontsize{0}...\fontsize{5}</b> or
-     the shorter <b>\fs{0},...,\fs{5}</b> for <b>\tiny,...,\LARGE</b>.
+ <p> In mimeTeX you may also write <b>\fontsize{0}...\fontsize{7}</b> or
+     the shorter <b>\fs{0},...,\fs{7}</b> for <b>\tiny,...,\Huge</b>.
      And since these arguments are all single digits, the even shorter
-     form <b>\fs0,...,\fs5</b> works equally well.  For example, </p>
+     form <b>\fs0,...,\fs7</b> works equally well.  For example, </p>
      <center> <table cellpadding=0>
       <tr align=center>
-        <td> &lt;img src="../cgi-bin/mimetex.cgi?<b></b>f(x)=x^2"&gt; </td>
-        <td> produces </td>
+        <td align="left"> <b>0</b>: &nbsp;
+         &lt;img src="../cgi-bin/mimetex.cgi?<b>\tiny</b> f(x)=x^2"&gt;
+         &nbsp; produces... </td>
+        <td> <a href="#preview"><img id="sizes0" onclick="eqntext('sizes0')"
+             src="../cgi-bin/mimetex.cgi?\tiny f(x)=x^2"
+             alt="" border=0 align=middle></a> </td> </tr>
+      <tr align=center>
+        <td align="left"> <b>1</b>: &nbsp;
+         &lt;img src="../cgi-bin/mimetex.cgi?<b>\fs1</b> f(x)=x^2"&gt; </td>
         <td> <a href="#preview"><img id="sizes1" onclick="eqntext('sizes1')"
-             src="../cgi-bin/mimetex.cgi?f(x)=x^2"
-             alt="" border=0 align=middle></a> </td>
-      </tr>
+             src="../cgi-bin/mimetex.cgi?\fs1 f(x)=x^2"
+             alt="" border=0 align=middle></a> </td> </tr>
       <tr align=center>
-        <td> &lt;img src="../cgi-bin/mimetex.cgi?<b>\large</b> f(x)=x^2"&gt; </td>
-        <td> &nbsp; </td>
-        <td> <a href="#preview"><img id="sizes2" onclick="eqntext('sizes2')"
-             src="../cgi-bin/mimetex.cgi?\large f(x)=x^2"
-             alt="" border=0 align=middle></a> </td>
-      </tr>
+        <td align="left"> <b>2</b>: &nbsp;
+         &lt;img src="../cgi-bin/mimetex.cgi?<b>\normalsize</b> f(x)=x^2"&gt; </td>
+        <td> <a href="#preview"><img id="sizes1" onclick="eqntext('sizes1')"
+             src="../cgi-bin/mimetex.cgi?\normalsize f(x)=x^2"
+             alt="" border=0 align=middle></a> </td> </tr>
       <tr align=center>
-        <td> &lt;img src="../cgi-bin/mimetex.cgi?<b>\fs4</b>f(x)=x^2"&gt; </td>
-        <td> &nbsp; </td>
+        <td align="left"> <b>3</b>: &nbsp;
+         &lt;img src="../cgi-bin/mimetex.cgi?<b></b>f(x)=x^2"&gt; </td>
         <td> <a href="#preview"><img id="sizes3" onclick="eqntext('sizes3')"
-             src="../cgi-bin/mimetex.cgi?\fs4f(x)=x^2"
-             alt="" border=0 align=middle></a> </td>
-      </tr>
+             src="../cgi-bin/mimetex.cgi?f(x)=x^2"
+             alt="" border=0 align=middle></a> </td> </tr>
+      <tr align=center>
+        <td align="left"> <b>4</b>: &nbsp;
+         &lt;img src="../cgi-bin/mimetex.cgi?<b>\Large</b> f(x)=x^2"&gt; </td>
+        <td> <a href="#preview"><img id="sizes4" onclick="eqntext('sizes4')"
+             src="../cgi-bin/mimetex.cgi?\Large f(x)=x^2"
+             alt="" border=0 align=middle></a> </td> </tr>
+      <tr align=center>
+        <td align="left"> <b>5</b>: &nbsp;
+         &lt;img src="../cgi-bin/mimetex.cgi?<b>\fs5</b> f(x)=x^2"&gt; </td>
+        <td> <a href="#preview"><img id="sizes5" onclick="eqntext('sizes5')"
+             src="../cgi-bin/mimetex.cgi?\fs5f(x)=x^2"
+             alt="" border=0 align=middle></a> </td> </tr>
+      <tr align=center>
+        <td align="left"> <b>6</b>: &nbsp;
+         &lt;img src="../cgi-bin/mimetex.cgi?<b>\huge</b> f(x)=x^2"&gt; </td>
+        <td> <a href="#preview"><img id="sizes6" onclick="eqntext('sizes6')"
+             src="../cgi-bin/mimetex.cgi?\huge f(x)=x^2"
+             alt="" border=0 align=middle></a> </td> </tr>
+      <tr align=center>
+        <td align="left"> <b>7</b>: &nbsp;
+         &lt;img src="../cgi-bin/mimetex.cgi?<b>\fs7</b> f(x)=x^2"&gt; </td>
+        <td> <a href="#preview"><img id="sizes7" onclick="eqntext('sizes7')"
+             src="../cgi-bin/mimetex.cgi?\fs7 f(x)=x^2"
+             alt="" border=0 align=middle></a> </td> </tr>
      </table> </center> <p class="continue">
-     rendering <b>f(x)=x^2</b> in mimeTeX font sizes &nbsp; <b>2</b>
-     (default \normalsize), &nbsp; <b>3</b> (\large or \fs3), and
-     &nbsp; <b>4</b> (\fs4 or \Large). </p>
+     rendering <b>f(x)=x^2</b> in mimeTeX font sizes &nbsp;
+     <b>0</b> (\tiny or \fs0), &nbsp; <b>1</b> (\small or \fs1), &nbsp;
+     <b>2</b> (\normalsize or \fs2), &nbsp; <b>3</b> (default \large), &nbsp;
+     <b>4</b> (\Large or \fs4), &nbsp; <b>5</b> (\LARGE or \fs5), &nbsp;
+     <b>6</b> (\huge or \fs6) &nbsp; and &nbsp; <b>7</b> (\Huge or \fs7). </p>
 
  <p> You'll soon notice that exponents and \frac's and \atop's
      are automatically rendered one size smaller than their base
@@ -1709,16 +1856,19 @@
      For example, </p> <center>
         <!-- <b>\Bigsum_{i=1}^ni=\frac{n(n+1)}2</b> &nbsp; produces &nbsp;
         <a href="#preview"><img id="modes1a" onclick="eqntext('modes1a')"
-        src="../cgi-bin/mimetex.cgi?\Bigsum_{i=1}^ni=\frac{n(n+1)}2"
+        src="../cgi-bin/mimetex.cgi?
+        \normalsize\Bigsum_{i=1}^ni=\frac{n(n+1)}2"
         alt="" border=0 align=middle></a>, <br> -->
-        <b>\sum_{i=1}^ni=\frac{n(n+1)}2</b>
+        <b>\normalsize \sum_{i=1}^ni=\frac{n(n+1)}2</b>
         &nbsp; &nbsp; produces &nbsp; &nbsp;
         <a href="#preview"><img id="modes2a" onclick="eqntext('modes2a')"
-        src="../cgi-bin/mimetex.cgi?\sum_{i=1}^ni=\frac{n(n+1)}2"
+        src="../cgi-bin/mimetex.cgi?\normalsize\sum_{i=1}^ni=\frac{n(n+1)}2"
         alt="" border=0 align=middle></a>, &nbsp; whereas <br>
-        <b>\displaystyle \sum_{i=1}^ni=\frac{n(n+1)}2</b> &nbsp;produces&nbsp;
+        <b>\displaystyle \normalsize \sum_{i=1}^ni=\frac{n(n+1)}2</b>
+        &nbsp;produces&nbsp;
         <a href="#preview"><img id="modes1b" onclick="eqntext('modes1b')"
-        src="../cgi-bin/mimetex.cgi?\displaystyle\sum_{i=1}^ni=\frac{n(n+1)}2"
+        src="../cgi-bin/mimetex.cgi?
+        \normalsize\displaystyle\sum_{i=1}^ni=\frac{n(n+1)}2"
         alt="" border=0 align=middle></a>, </center>
      <p class=continue> and <!-- replacing <b>\Bigsum</b> with the smaller
      <b>\sum</b> symbol, --> </p> <center>
@@ -1735,7 +1885,7 @@
 
  <p> As usual, <b>\nolimits</b> turns displaystyle off (or textstyle on)
      for the operator immediately preceding it.  For example, </p> <center>
-        <b>\large\sum\nolimits_{i=1}^ni=\frac{n(n+1)}2</b>
+        <b>\large \sum\nolimits_{i=1}^ni=\frac{n(n+1)}2</b>
         &nbsp; produces &nbsp;
         <a href="#preview"><img id="modes3" onclick="eqntext('modes3')"
         src="../cgi-bin/mimetex.cgi?
@@ -1743,16 +1893,18 @@
         alt="" border=0 align=middle></a></center> <p class="continue">
      and likewise, <b>\limits</b> turns displaystyle on for the operator
      immediately preceding it.  For example, </p> <center>
-        <b>\sum\limits_{i=1}^ni=\frac{n(n+1)}2</b> &nbsp; produces &nbsp;
+        <b>\normalsize \sum\limits_{i=1}^ni=\frac{n(n+1)}2</b>
+        &nbsp; produces &nbsp;
         <a href="#preview"><img id="modes4" onclick="eqntext('modes4')"
-        src="../cgi-bin/mimetex.cgi?\sum\limits_{i=1}^ni=\frac{n(n+1)}2"
+        src="../cgi-bin/mimetex.cgi?
+        \normalsize\sum\limits_{i=1}^ni=\frac{n(n+1)}2"
         alt="" border=0 align=middle></a> </center>
 
  <p> By the way, <b>\limits</b> affects <i><b>_any_</b></i> character
      or subexpression immediately preceding it.  For example, </p> <center>
         <b>A^i_j</b> &nbsp; produces &nbsp;
         <a href="#preview"><img id="modes5" onclick="eqntext('modes5')"
-        src="../cgi-bin/mimetex.cgi?3$A^i_j"
+        src="../cgi-bin/mimetex.cgi?\large A^i_j"
         alt="" border=0 align=middle></a> &nbsp; &nbsp; as usual, whereas <br>
         <b>A\limits^i_j</b> &nbsp; produces &nbsp;
         <a href="#preview"><img id="modes6" onclick="eqntext('modes6')"
@@ -1804,16 +1956,16 @@
      <b>{\it&nbsp;etc}</b> is still ignored.  For example, </p> <center>
         <b>anything&nbsp;at&nbsp;all</b> &nbsp; just produces &nbsp;
         <a href="#preview"><img id="textboxes1" onclick="eqntext('textboxes1')"
-        src="../cgi-bin/mimetex.cgi?anything at all"
+        src="../cgi-bin/mimetex.cgi?\normalsize anything at all"
         alt="" border=0 align=middle></a> &nbsp; &nbsp; whereas <br> <br>
         <b>\text{anything&nbsp;at&nbsp;all}</b> &nbsp; produces &nbsp;
         <a href="#preview"><img id="textboxes2" onclick="eqntext('textboxes2')"
-        src="../cgi-bin/mimetex.cgi?\text{anything at all}"
+        src="../cgi-bin/mimetex.cgi?\normalsize\text{anything at all}"
         alt="" border=0 align=middle></a> &nbsp; &nbsp; and <br> <br>
         <b>\textit{anything&nbsp;at&nbsp;all}</b> &nbsp; produces &nbsp;
         <a href="#preview"><img id="textboxes3" onclick="eqntext('textboxes3')"
-        src="../cgi-bin/mimetex.cgi?\textit{anything at all}" alt=""
-        border=0 align=middle></a> &nbsp; &nbsp; instead. </center>
+        src="../cgi-bin/mimetex.cgi?\normalsize\textit{anything at all}"
+        alt="" border=0 align=middle></a> &nbsp; &nbsp; instead. </center>
 
 
 <h2> <a name="delimiters"> (IIIc) Delimiters &nbsp; </a> </h2>
@@ -1821,7 +1973,10 @@
 <h3> <a name="parens">Parentheses and Braces
 (delimiters)<font size=5>...</font></a> </h3>
 
- <p> LaTeX's <b>\left(</b> and <b>\right)</b> may be written exactly
+ <p> LaTeX's <b>\left(&nbsp;...&nbsp;\right)</b> and the other 21
+     standard LaTeX delimiters are also recognized by mimeTeX.
+     And mimeTeX also recognizes an etex-like <b>\middle</b>. &nbsp;
+     <!-- may be written exactly
      like that, or may be abbreviated <b>\(</b> and <b>\)</b> in mimeTeX.
      Not all <b>\left</b> and <b>\right</b> LaTeX delimiters are currently
      available in mimeTeX, but those that are can be written in the usual
@@ -1829,25 +1984,26 @@
      that <b>\left\|...\right\|</b> must instead be abbreviated
      <b>\=...\=</b> or can be written in full <b>\left\|...\right\|</b>
      as usual.  Also, <b>\left\langle...\right\rangle</b> is abbreviated
-     <b>\&lt;...\&gt;</b>&nbsp;. </p>
- <p> Mixing abbreviated and unabbreviated delimiters within a matching
-     pair is not allowed, e.g., \left(...\) <b>_won't_</b> work.  But you
-     can mix nested pairs, e.g., <b>\left(...\(...\)...\right)</b> will
-     work as long as the matching delimiters comprising each pair are
+     <b>\&lt;...\&gt;</b>&nbsp;. </p> -->
+     <!-- <p> Mixing abbreviated and unabbreviated delimiters within
+     a matching pair is not allowed, e.g., \left(...\) <b>_won't_</b> work.
+     But you can mix nested pairs, e.g., <b>\left(...\(...\)...\right)</b>
+     will work as long as the matching delimiters comprising each pair are
      either both abbreviated or both unabbreviated. </p>
- <p> The complete list of automatically sized delimiters
-     available in mimeTeX is </p> <center>
+     <p> --> Several of the most common automatically sized delimiters
+     are illustrated below... </p> <center>
        <!-- <table cellpadding=3 cellspacing=0 border=1> -->
        <table cellspacing=0 cellpadding=2 border=1>
         <tr align=center>
-           <td> <b>LaTeX or <br> mimeTeX</b> </td>
-           <td> <b>or mimeTeX <br> abbreviation</b> </td>
+           <!-- <td> <b>LaTeX or <br> mimeTeX</b> </td> -->
+           <td> <b>Delimiter</b> </td>
+           <!-- <td> <b>or mimeTeX <br> abbreviation</b> </td> -->
            <td> <b>example...</b> </td>
            <td> <b>...renders</b> </td>
         </tr>
         <tr align=center>
            <td> \left(&nbsp;...&nbsp;\right) </td>
-           <td> \(&nbsp;...&nbsp;\) </td>
+           <!-- <td> \(&nbsp;...&nbsp;\) </td> -->
            <td> \left( \frac1{1-x^2} \right)^2 </td>
            <td> <a href="#preview"><img id="parens1" onclick="eqntext('parens1')"
                  src="../cgi-bin/mimetex.cgi?\Large\left(\frac1{1-x^2}\right)^2"
@@ -1855,15 +2011,16 @@
         </tr>
         <tr align=center>
            <td> \left[&nbsp;...&nbsp;\right] </td>
-           <td> \[&nbsp;...&nbsp;\] </td>
-           <td> \left[ 1+\frac xn \right]^n </td>
+           <!-- <td> \[&nbsp;...&nbsp;\] </td> -->
+           <td> \left[ \frac1{\sqrt2}x - y \right]^n </td>
            <td> <a href="#preview"><img id="parens2" onclick="eqntext('parens2')"
-                 src="../cgi-bin/mimetex.cgi?\Large\left[1+\frac xn\right]^n"
+                 src="../cgi-bin/mimetex.cgi?\Large
+                 \left[ \frac1{\sqrt2}x - y \right]^n"
                  alt="" border=0 align=middle></a> </td>
         </tr>
         <tr align=center>
            <td> \left\{&nbsp;...&nbsp;\right\} </td>
-           <td> \{&nbsp;...&nbsp;\} </td>
+           <!-- <td> \{&nbsp;...&nbsp;\} </td> -->
            <td> \left\{ 1^2,2^2,3^2,\ldots \right\} </td>
            <td> <a href="#preview"><img id="parens3" onclick="eqntext('parens3')"
                  src="../cgi-bin/mimetex.cgi?
@@ -1873,74 +2030,94 @@
         <tr align=center>
            <td> \left\langle &nbsp; ...<br>
                 &nbsp; &nbsp; &nbsp; &nbsp; ... &nbsp;\right\rangle </td>
-           <td> \<&nbsp;...&nbsp;\> </td>
-           <td> \left\langle \varphi |\hat H|<br>
-                &nbsp; &nbsp; &nbsp; &nbsp; \phi \right\rangle </td>
+           <!-- <td> \<&nbsp;...&nbsp;\> </td> -->
+           <td> \left\langle \varphi \middle| \hat H <br>
+                &nbsp; &nbsp; &nbsp; &nbsp; \middle| \phi \right\rangle </td>
            <td> <a href="#preview"><img id="parens4" onclick="eqntext('parens4')"
-                 src="../cgi-bin/mimetex.cgi?
-                 \Large\left\langle\varphi|\hat H|\phi\right\rangle"
+                 src="../cgi-bin/mimetex.cgi?\Large
+                 \left\langle\varphi\middle|\hat H\middle|\phi\right\rangle"
                  alt="" border=0 align=middle></a> </td>
         </tr>
         <tr align=center>
            <td> \left|&nbsp;...&nbsp;\right| </td>
-           <td> \|&nbsp;...&nbsp;\| </td>
-           <td> \det \left| \begin{array}{cc} 1&2\\<br>
-                &nbsp; &nbsp; &nbsp; &nbsp; 3&4 \end{array} \right|</td>
+           <!-- <td> \|&nbsp;...&nbsp;\| </td> -->
+           <td> \left| \begin{matrix} a_1 & a_2 \\<br>
+                &nbsp; &nbsp; &nbsp; a_3 & a_4 \end{matrix} \right|</td>
            <td> <a href="#preview"><img id="parens5" onclick="eqntext('parens5')"
-                 src="../cgi-bin/mimetex.cgi?
-                 \large\det\left|\begin{array}{cc}1&2\\3&4\end{array}\right|"
+                 src="../cgi-bin/mimetex.cgi?\large
+                 \left|\begin{matrix}a_1&a_2\\a_3&a_4\end{matrix}\right|"
                  alt="" border=0 align=middle></a> </td>
         </tr>
         <tr align=center>
            <td> \left\|&nbsp;...&nbsp;\right\| </td>
-           <td> \=&nbsp;...&nbsp;\= </td>
+           <!-- <td> \=&nbsp;...&nbsp;\= </td> -->
            <td> \left\|x^2-y^2\right\| </td>
            <td> <a href="#preview"><img id="parens6" onclick="eqntext('parens6')"
                  src="../cgi-bin/mimetex.cgi?\large\left\|x^2-y^2\right\|"
                  alt="" border=0 align=middle></a> </td>
         </tr>
         <tr align=center>
-           <td> \left\{&nbsp;...&nbsp;\right<b>.</b> </td>
-           <td> \{&nbsp;...&nbsp;\<b>.</b> </td>
-           <td> y=\left\{ \text{this\atop that} \right<b>.</b> </td>
+           <td> \left\{&nbsp;...&nbsp;
+                \right<font size="5"><b>.</b></font> </td>
+           <!-- <td> \{&nbsp;...&nbsp;\<b>.</b> </td> -->
+           <td> y=\left\{ \text{this\\that}
+                \right<font size="5"><b>.</b></font> </td>
            <td> <a href="#preview"><img id="parens7" onclick="eqntext('parens7')"
                  src="../cgi-bin/mimetex.cgi?
-                 \large y=\left\{\text{this\atop that}\right."
+                 \large y=\left\{\text{this\\that}\right."
                  alt="" border=0 align=middle></a> </td>
         </tr>
         <tr align=center>
-           <td> \left<b>.</b>&nbsp;...&nbsp;\right\} </td>
-           <td> \<b>.</b>&nbsp;...&nbsp;\} </td>
-           <td> \left<b>.</b> \text{this\atop that} \right\}=y </td>
+           <td> \left<font size="5"><b>.</b></font>
+                &nbsp;...&nbsp;\right\} </td>
+           <!-- <td> \<b>.</b>&nbsp;...&nbsp;\} </td> -->
+           <td> \left<font size="5"><b>.</b></font>
+                \text{this\\that} \right\}=y </td>
            <td> <a href="#preview"><img id="parens8" onclick="eqntext('parens8')"
                  src="../cgi-bin/mimetex.cgi?
-                 \large\left.\text{this\atop that}\right\}=y"
+                 \large\left.\text{this\\that}\right\}=y"
                  alt="" border=0 align=middle></a> </td>
         </tr>
        </table> </center>
  <p> <b><u>Notes...&nbsp;</u></b> </p>
      <ol compact type=1>
-       <li> The other LaTeX delimiters, i.e., floor's, ceil's,
-            arrows, etc, can't yet be sized to fit. </li>
+       <!-- <li> The other LaTeX delimiters, i.e., floor's, ceil's,
+            arrows, etc, can't yet be sized to fit. </li> -->
        <li> <a href="#sizes">Size&nbsp;declarations</a> inside any of the
             above delimiter pairs affect only the enclosed subexpression,
             e.g., <b>\Large w=\left(\small x+y\right)+z</b> produces
             <a href="#preview"><img id="parens9" onclick="eqntext('parens9')"
             src="../cgi-bin/mimetex.cgi?\Large w=\left(\small x+y\right)+z"
             alt="" border=0 align=middle></a> </li>
-       <li> An abbreviated left delimiter must be paired with the same
+       <li> An expression may contain as many etex-like <b>\middle</b>'s as
+            you like, and in mimeTeX the surrounding <b>\left...\right</b>
+            isn't required.  When omitted, the scope of <b>\middle</b> is
+            either the entire expression or the &nbsp; <b>{&nbsp;}</b>-enclosed
+            subexpression in which the <b>\middle</b>'s occur.  For example, &nbsp;
+            <b>\frac{a+1}b&nbsp;\middle/&nbsp;\middle(\frac{c+1}d&nbsp;\middle/&nbsp;\frac{e+1}f\middle)</b>
+            &nbsp; renders &nbsp;
+            <img src="../cgi-bin/mimetex.cgi?\large
+            \frac{a+1}b\middle/\middle(\frac{c+1}d\middle/\frac{e+1}f\middle)"
+            border=0 align=middle>. </li>
+       <li> In the last two examples, note that mimeTeX recognizes the
+            &nbsp; <b>\\</b> &nbsp; in &nbsp; <b>\text{this\\that}</b> &nbsp;
+            as a linebreak.  For example, <b>x=1\\y=2\\z=3</b> renders &nbsp;
+            <a href="#preview"><img id="parens9b" onclick="eqntext('parens9b')"
+            src="../cgi-bin/mimetex.cgi?\small x=1\\y=2\\z=3"
+            alt="" border=0 align=middle></a> </li>
+       <!-- <li> An abbreviated left delimiter must be paired with the same
             "type" of matching right delimiter, e.g., <b>\[...\]</b> works
             whereas <b>\[...\)</b> doesn't work.  To render an "unmatched"
             pair of delimiters you must use the unabbreviated form, e.g.,
-            <b>\left[...\right)</b> works fine. </li>
-       <li> Similarly, "unusual" delimiter abbreviations like <b>\)...\(</b>
-            also don't work in mimeTeX.  That is, &nbsp;
+            <b>\left[...\right)</b> works fine. </li> -->
+       <!-- <li> Similarly, "unusual" delimiter abbreviations like
+            <b>\)...\(</b> also don't work in mimeTeX.  That is, &nbsp;
             <b>(,&nbsp;[,&nbsp;&lt;,&nbsp;{,</b> etc, must always be "left"
             in mimeTeX, and &nbsp; <b>),&nbsp;],&nbsp;&gt;,&nbsp;},</b> etc,
             must always be "right".  To render "unusual" delimiter pairs you
             must use the unabbreviated form, e.g., <b>\left)...\right[</b>
-            works fine. </li>
-       <li> <b>\right.</b> may be paired with any of the automatically
+            works fine. </li> -->
+       <!-- <li> <b>\right.</b> may be paired with any of the automatically
             sized delimiters, and may optionally be abbreviated as <b>\.</b>
             &nbsp;&nbsp; The same <b>\.</b> also serves as an abbreviation
             for <b>\left.</b> &nbsp;&nbsp; MimeTeX correctly interprets your
@@ -1949,24 +2126,26 @@
             <b>y=\{{this\atop&nbsp;that}\.</b> renders the usual useful
             construction
             <a href="#preview"><img id="parens10" onclick="eqntext('parens10')"
-            src="../cgi-bin/mimetex.cgi?y=\{\text{this\atop that}\."
-            alt="" border=0 align=middle></a> illustrated above. </li>
-       <li> However, abbreviated <b>\.</b>'s cannot be nested in mimeTeX,
+            src="../cgi-bin/mimetex.cgi?
+            \normalsize y=\{\text{this\atop that}\."
+            alt="" border=0 align=middle></a> illustrated above. </li> -->
+       <!-- <li> However, abbreviated <b>\.</b>'s cannot be nested in mimeTeX,
             e.g., <b>\[\(...\.\.</b> doesn't work.  Instead, unabbreviated
             <b>\left.</b> and <b>\right.</b> may be nested, e.g.,
-            <b>\left[\left(...\right.\right.</b> works fine. </li>
-       <li> Simply nested abbreviations like <b>\[\(...\)\]</b> work fine in
-            mimeTeX.  But abbreviated delimiters like <b>\|...\|</b>
+            <b>\left[\left(...\right.\right.</b> works fine. </li> -->
+       <!-- <li> Simply nested abbreviations like <b>\[\(...\)\]</b> work
+            fine in mimeTeX.  But abbreviated delimiters like <b>\|...\|</b>
             and <b>\=...\=</b>, whose left and right forms are
             identical, cannot be nested.  To nest these delimiters you
             must use the corresponding unabbreviated <b>\left|..\right|</b>
-            and <b>\left\|...\right\|</b>. </li>
-       <li> All <b>\left(...\right)</b>'s (and abbreviated <b>\(...\)</b>'s),
-            etc, must be correctly balanced, which may include being matched
-            with <b>\left.</b> or <b>\right.</b> (or abbreviated <b>\.</b>).
+            and <b>\left\|...\right\|</b>. </li> -->
+       <!-- <li> All <b>\left(...\right)</b>'s (and abbreviated
+            <b>\(...\)</b>'s), etc, must be correctly balanced,
+            which may include being matched with <b>\left.</b>
+            or <b>\right.</b> (or abbreviated <b>\.</b>).
             &nbsp;&nbsp; And, to repeat, you may <b>_not_</b> mix
             abbreviated and unabbreviated \(...\right), etc, within a
-            matching pair. </li>
+            matching pair. </li> -->
      </ol>
 
  <p> Besides the <b>\left...\right</b> delimiters discussed above,
@@ -1976,22 +2155,22 @@
      and its matching <b>\right<b>.</b></b> &nbsp; delimiter.
      The <b>\right</b> delimiter needn't necessarily be
      the <b>\right<b>.</b></b> &nbsp; illustrated, e.g.,
-     <b>\left\int_a^b&nbsp;x^2dx&nbsp;=\frac{x^3}3\right|\nolimits_a^b</b>
+     <b>\left\int_a^b&nbsp;x^2dx&nbsp;=\frac{x^3}3\right|_a^b</b>
      produces
      <a href="#preview"><img id="parens11" onclick="eqntext('parens11')"
      src="../cgi-bin/mimetex.cgi?\large
-     \left\int_a^bx^2dx=\frac{x^3}3\right|\nolimits_a^b" border=0 alt=""
-     align=middle></a>.  Except for Opening (TeX class 4) and
+     \left\int_a^bx^2dx=\frac{x^3}3\right|_a^b" border=0 alt=""
+     align=middle></a>.  <!-- Except for Opening (TeX class 4) and
      Closing (class 5) delimiter characters like <b>(&nbsp;)</b> and
      <b>[&nbsp;]</b> and <b>\{&nbsp;\}</b>, limits are default-rendered
-     \displaystyle, which is why <b>\right|\nolimits_a^b</b> was required.
+     \displaystyle, which is why <b>\right|\nolimits_a^b</b> was required. -->
      You can also write <b>\left\sum</b>, <b>\left\prod</b>,
      <b>\left\cup</b>, etc, for many of the symbols in CMEX10.
      And any symbol that works with <b>\left</b> will also work
-     with <b>\right</b>&nbsp;.  But mimeTeX abbreviations like &nbsp;
+     with <b>\right</b>&nbsp;.  <!-- But mimeTeX abbreviations like &nbsp;
      <b>\(...\)</b> &nbsp; for &nbsp; <b>\left(...\right)</b> &nbsp;
      won't work with any of these CMEX10 symbols.  You'll have to write
-     the usual unabbreviated <b>\left...\right</b> form. </p>
+     the usual unabbreviated <b>\left...\right</b> form. --> </p>
 
  <p> Unescaped <b>(&nbsp;)</b>'s and <b>[&nbsp;]</b>'s and <b>|&nbsp;|</b>'s
      and <b>&lt;&nbsp;&gt;</b>'s don't need to be balanced since mimeTeX just
@@ -2017,11 +2196,24 @@
 <h3> Accents<font size=5>...</font> </h3>
   
  <p class="continue"> 
-     <b>\vec{&nbsp;} \hat{&nbsp;} \bar{&nbsp;} \tilde{&nbsp;} \dot{&nbsp;}</b>
-     and <b>\ddot{&nbsp;}</b> are the only accents currently supported,
-     and they're all "wide".  You can write <b>\widehat{&nbsp;}</b> if you
-     like, but there's absolutely no difference either way.
-     <b>\bar{&nbsp;}</b> and <b>\overline{&nbsp;}</b> are identical. <p>
+     <b>\vec{&nbsp;} \hat{&nbsp;} \bar{&nbsp;} \tilde{&nbsp;} \dot{&nbsp;}
+     \ddot{&nbsp}</b> &nbsp; and &nbsp; <b>\acute{&nbsp;} \grave{&nbsp;}
+     \breve{&nbsp;} \check{&nbsp}</b> are the only accents currently
+     supported.  The first four are all "wide".  For example, you can write
+     <b>\widehat{&nbsp;}</b> if you like, but there's absolutely no
+     difference either way (and <b>\bar{&nbsp;}</b> and
+     <b>\overline{&nbsp;}</b> are identical).  The last four accents
+     only take a single character argument. <p>
+
+ <p> Other accent-like directives available in mimeTeX are &nbsp;
+     <b>\underline{&nbsp;} \cancel{&nbsp;} \sout{&nbsp;}</b>, &nbsp;
+     as well as &nbsp;
+     <b>\overset{&nbsp;}{&nbsp;} &nbsp; \underset{&nbsp;}{&nbsp;}</b> &nbsp;
+     and the more ususal &nbsp;
+     <b>\overbrace{&nbsp;}^{&nbsp;} &nbsp; \underbrace{&nbsp;}_{&nbsp;}</b>.
+     &nbsp; And <b>\not</b> also works on the single character immediately
+     following it.  Some of these directives are discussed in more detail
+     below. </p>
 
 <h3> <a name="functions">Function names<font size=5>...</font></a> </h3>
 
@@ -2032,7 +2224,7 @@
      also behave as expected, e.g., </p> <center>
         <b>\lim_{n\to\infty}S_n=S</b> &nbsp; produces &nbsp;
         <a href="#preview"><img id="functions1" onclick="eqntext('functions1')"
-        src="../cgi-bin/mimetex.cgi?3$\lim_{n\to\infty}S_n=S"
+        src="../cgi-bin/mimetex.cgi?\large\lim_{n\to\infty}S_n=S"
         alt="" border=0 align=middle></a> </center>
 
 <h3> <a name="arrows">long Arrows<font size=5>...</font></a> </h3>
@@ -2057,7 +2249,7 @@
      any white space after the arrow, e.g., <b>f:x\longrightarrow~[0,1]</b>
      produces
      <a href="#preview"><img id="arrows3" onclick="eqntext('arrows3')"
-     src="../cgi-bin/mimetex.cgi?f:x\longrightarrow~[0,1]"
+     src="../cgi-bin/mimetex.cgi?\normalsize f:x\longrightarrow~[0,1]"
      alt="" border=0 align=middle></a>.  Without any intervening white space,
      mimeTeX would have "eaten" the [0,1]. </p>
 
@@ -2172,101 +2364,101 @@
       \Large\color{blue} e^x=\sum_{n=0}^\infty\frac{x^n}{n!}"
       alt="" border=0 align=middle></a> </center>
 
-<h3> <a name="squash">&quot;Squash&quot;<font size=5>...</font></a> </h3>
+<h3> <a name="smash">&quot;Smash&quot;<font size=5>...</font></a> </h3>
 
  <p> TeX represents characters by boxes, with no idea how ink will be
      distributed inside.  So an expression like
      <b>\frac12\int_{a+b+c}^{d+e+f}g(x)dx</b> is typically rendered as &nbsp;
-     <a href="#preview"><img id="squash1" onclick="eqntext('squash1')"
-     src="../cgi-bin/mimetex.cgi?\displaystyle
-     \nosquash\frac12\int_{a+b+c}^{d+e+f}{g(x)dx}"
+     <a href="#preview"><img id="smash1" onclick="eqntext('smash1')"
+     src="../cgi-bin/mimetex.cgi?\normalsize\displaystyle
+     \nosmash\frac12\int_{a+b+c}^{d+e+f}{g(x)dx}"
      alt="" border=0 align=middle></a>.
      But mimeTeX knows the character shapes of its fonts, and therefore tries
      to remove extra whitespace, rendering the same expression as &nbsp;
-     <a href="#preview"><img id="squash2" onclick="eqntext('squash2')"
-     src="../cgi-bin/mimetex.cgi?\displaystyle
-     \squash\frac12\int_{a+b+c}^{d+e+f}{g(x)}dx"
+     <a href="#preview"><img id="smash2" onclick="eqntext('smash2')"
+     src="../cgi-bin/mimetex.cgi?\normalsize\displaystyle
+     \smash\frac12\int_{a+b+c}^{d+e+f}{g(x)}dx"
      alt="" border=0 align=middle></a> &nbsp; instead. </p>
 
- <p> Precede any expression with the mimeTeX directive <b>\nosquash</b>
-     to render it without "squashing".  Or compile mimetex.c with the
-     <b>-DNOSQUASH</b> <a href="#options">option</a> if you prefer
+ <p> Precede any expression with the mimeTeX directive <b>\nosmash</b>
+     to render it without "smashing".  Or compile mimetex.c with the
+     <b>-DNOSMASH</b> <a href="#options">option</a> if you prefer
      the typical TeX behavior as mimeTeX's default.  In this case,
-     precede any expression with <b>\squash</b> to render it "squashed".
+     precede any expression with <b>\smash</b> to render it "smashed".
      And note that explicit space like <b>\hspace{10}</b>
-     or <b>\;</b>&nbsp;, etc, is never squashed. </p>
+     or <b>\;</b>&nbsp;, etc, is never smashed. </p>
 
- <p> The scope of <b>\squash</b> and <b>\nosquash</b> is the
+ <p> The scope of <b>\smash</b> and <b>\nosmash</b> is the
      <b>{&nbsp;}</b>-enclosed subexpression in which the directive occurs.
      For example, if you want the <b><i>g(x)</i></b>&nbsp;part of the
-     preceding example squashed, but not the <b>1/2</b>&nbsp;part,
+     preceding example smashed, but not the <b>1/2</b>&nbsp;part,
      then the expression
-     <b>\nosquash\frac12{\squash\int_{a+b+c}^{d+e+f}g(x)dx}</b>
+     <b>\nosmash\frac12{\smash\int_{a+b+c}^{d+e+f}g(x)dx}</b>
      renders as &nbsp;
-     <a href="#preview"><img id="squash3" onclick="eqntext('squash3')"
-     src="../cgi-bin/mimetex.cgi?\displaystyle
-     \nosquash\frac12{\squash\int_{a+b+c}^{d+e+f}{g(x)dx}}"
+     <a href="#preview"><img id="smash3" onclick="eqntext('smash3')"
+     src="../cgi-bin/mimetex.cgi?\normalsize\displaystyle
+     \nosmash\frac12{\smash\int_{a+b+c}^{d+e+f}{g(x)dx}}"
      alt="" border=0 align=middle></a>.
      <!-- Moreover, explicit space like
-     <b>\hspace{10}</b> or <b>\;</b>, etc, is never squashed.
+     <b>\hspace{10}</b> or <b>\;</b>, etc, is never smashed.
      So <b>{\frac12\;\;}\int_{a+b+c}^{d+e+f}g(x)dx</b> renders as &nbsp;
-     <a href="#preview"><img id="squash4" onclick="eqntext('squash4')"
-     src="../cgi-bin/mimetex.cgi?\displaystyle
+     <a href="#preview"><img id="smash4" onclick="eqntext('smash4')"
+     src="../cgi-bin/mimetex.cgi?\normalsize\displaystyle
      {\frac12\;\;}\int_{a+b+c}^{d+e+f}{g(x)dx}"
      alt="" border=0 align=middle></a>. --> </p>
 
- <p> For finer-grained control, note that <b>\squash</b> is shorthand
-     for the default <b>\squashmargin{+3}</b> (and <b>\nosquash</b> is
-     shorthand for <b>\squashmargin{0}</b>).  <b>\squashmargin</b>'s value
-     is the minimum number of pixels between squashed symbols.  The leading
-     <b>+</b> is optional.  If present, the font size (\tiny=0,...,\LARGE=5)
+ <p> For finer-grained control, note that <b>\smash</b> is shorthand
+     for the default <b>\smashmargin{+3}</b> (and <b>\nosmash</b> is
+     shorthand for <b>\smashmargin{0}</b>).  <b>\smashmargin</b>'s value
+     is the minimum number of pixels between smashed symbols.  The leading
+     <b>+</b> is optional.  If present, the font size (\tiny=0,...,\Huge=7)
      is added to the specified minimum.  Compile mimetex.c with the
-     <b>-DSQUASHMARGIN=<i>n</i></b> <a href="#options">option</a> to change
+     <b>-DSMASHMARGIN=<i>n</i></b> <a href="#options">option</a> to change
      the default from <b>3</b> to <b><i>n</i></b>.  Compare the preceding
-     example with the over-squashed <b>\squashmargin{1}</b> &nbsp;
-     <a href="#preview"><img id="squash5" onclick="eqntext('squash5')"
-     src="../cgi-bin/mimetex.cgi?\displaystyle
-     \squashmargin1\frac12\int_{a+b+c}^{d+e+f}{g(x)}dx"
+     example with the over-smashed <b>\smashmargin{1}</b> &nbsp;
+     <a href="#preview"><img id="smash5" onclick="eqntext('smash5')"
+     src="../cgi-bin/mimetex.cgi?\normalsize\displaystyle
+     \smashmargin1\frac12\int_{a+b+c}^{d+e+f}{g(x)}dx"
      alt="" border=0 align=middle></a> &nbsp; instead. </p>
 
- <p> Squashing is in "alpha testing" and some expressions still don't look
-     quite right when squashed, e.g., <b>1^2,2^2,3^2,\ldots</b> renders as
-     <a href="#preview"><img id="squash6" onclick="eqntext('squash6')"
+ <p> Smashing is in "beta testing" and some expressions still don't look
+     quite right when smashed, e.g., <b>1^2,2^2,3^2,\ldots</b> renders as
+     <a href="#preview"><img id="smash6" onclick="eqntext('smash6')"
      src="../cgi-bin/mimetex.cgi?\Large1^2,2^2,3^2,\ldots"
-     alt="" border=0 align=middle></a>.  Just compile with <b>-DNOSQUASH</b>
+     alt="" border=0 align=middle></a>.  Just compile with <b>-DNOSMASH</b>
      if you come across numerous annoying situations. </p>
 
-<h3> <a name="not">\not and \Not and \sout<font size=5>...</font></a> </h3>
+<h3> <a name="not">\not and \cancel and \sout<font size=5>...</font></a> </h3>
 
  <p> The usual LaTeX &nbsp; <b>\not</b> &nbsp; "slashes" the single symbol
      following it, e.g., &nbsp; <b>i\not\partial\equiv&nbsp;i\not\nabla</b>
      &nbsp; produces <a href="#preview">
      <img id="not1" onclick="eqntext('not1')"
-     src="../cgi-bin/mimetex.cgi?i\not\partial\equiv i\not\nabla"
+     src="../cgi-bin/mimetex.cgi?\normalsize i\not\partial\equiv i\not\nabla"
      alt="" border=0 align=middle></a>. </p>
 
- <p> For arbitrary expressions, mimeTeX provides &nbsp; <b>\Not</b> &nbsp;
+ <p> For arbitrary expressions, mimeTeX provides &nbsp; <b>\cancel</b> &nbsp;
      which draws a line from the upper-right to lower-left corner of its
-     argument, e.g., &nbsp; <b>a\Not{x^2}=bx^{\not3}</b> &nbsp; produces
+     argument, e.g., &nbsp; <b>a\cancel{x^2}=bx^{\not3}</b> &nbsp; produces
      &nbsp; <a href="#preview"><img id="not2" onclick="eqntext('not2')"
-     src="../cgi-bin/mimetex.cgi?\large a\Not{x^2}=bx^{\not3}"
+     src="../cgi-bin/mimetex.cgi?\large a\cancel{x^2}=bx^{\not3}"
      alt="" border=0 align=bottom></a>. </p>
 
  <p> Finally, similar to the <b>ulem.sty</b> package, &nbsp; <b>\sout</b>
      &nbsp; draws a horizontal strikeout line through its argument,
      e.g., &nbsp; <b>\sout{abcdefg}</b> &nbsp; produces <a href="#preview">
      <img id="not3" onclick="eqntext('not3')"
-     src="../cgi-bin/mimetex.cgi?\sout{abcdefg}"
+     src="../cgi-bin/mimetex.cgi?\normalsize\sout{abcdefg}"
      alt="" border=0 align=middle></a>.  MimeTeX's <b>\sout</b> also
      takes an optional argument that adjusts the vertical position of its
      strikeout line by the specified number of pixels, e.g., &nbsp;
      <b>\sout[+2]{abcdefg}</b> produces <a href="#preview">
      <img id="not4" onclick="eqntext('not4')"
-     src="../cgi-bin/mimetex.cgi?\sout[+2]{abcdefg}"
+     src="../cgi-bin/mimetex.cgi?\normalsize\sout[+2]{abcdefg}"
      alt="" border=0 align=middle></a> &nbsp; and &nbsp;
      <b>\sout[-2]{abcdefg}</b> produces
      <a href="#preview"><img id="not5" onclick="eqntext('not5')"
-     src="../cgi-bin/mimetex.cgi?\sout[-2]{abcdefg}"
+     src="../cgi-bin/mimetex.cgi?\normalsize\sout[-2]{abcdefg}"
      alt="" border=0 align=middle></a>. </p>
 
 
@@ -2348,8 +2540,8 @@
 
  <p> The default font size is unchanged by <b>\array{&nbsp;}</b>, but you
      can explicitly control it in the usual way, e.g.,
-     <b>{\large\begin{matrix}...\end{matrix}}</b> renders the entire array
-     in font size 3.  In addition, any <b>&...&</b> cell may contain font
+     <b>{\Large\begin{matrix}...\end{matrix}}</b> renders the entire array
+     in font size 4.  In addition, any <b>&...&</b> cell may contain font
      size declarations which are always local to that cell,
      e.g., <b>&\fs{-1}...&</b> renders that one cell one font size smaller
      than current. </p>
@@ -2536,7 +2728,7 @@
             (50,35){\circle(50,45;34)} %%lower lip%% &nbsp; }</b></font></p>
   <center>
    <a href="#preview"><img id="circleline2" onclick="eqntext('circleline2')"
-   src="../cgi-bin/mimetex.cgi?\unitlength{.6}\picture(100){
+   src="../cgi-bin/mimetex.cgi?\normalsize\unitlength{.6}\picture(100){
    (50,50){\circle(99)} (20,55;50,0;2){\fs{+1}\hat\bullet} (50,40){\bullet}
    (50,35){\circle(50,25;34)} (50,35){\circle(50,45;34)}}"
    alt="" border=0 align=middle></a><br>Have a nice day!</center>
@@ -2612,7 +2804,7 @@
      the usual <b>\fbox{<i>expression</i>}</b> command, e.g., </p> <center>
         <b>"\fbox{x=\frac12}"</b> &nbsp; produces &nbsp;
         <a href="#preview"><img id="fbox1" onclick="eqntext('fbox1')"
-        src="../cgi-bin/mimetex.cgi?4$\fbox{x=\frac12}"
+        src="../cgi-bin/mimetex.cgi?\Large\fbox{x=\frac12}"
         alt="" border=0 align=middle></a> </center>
 
  <p> You can also write <b>\fbox[<i>width</i>]{<i>expression</i>}</b>
@@ -2620,6 +2812,58 @@
      <b>\fbox[<i>width</i>][<i>height</i>]{<i>expression</i>}</b>
      to explicitly set both width and height. </p>
 
+<h3> <a name="today">\today and \calendar<font size=5>...</font></a> </h3>
+
+ <p class="continue"> <b>\today</b> &nbsp; renders &nbsp;
+        <a href="#preview"><img id="today1" onclick="eqntext('today1')"
+        src="../cgi-bin/mimetex.cgi?\normalsize\today"
+        border=0 align=middle></a> &nbsp;
+     in the usual LaTeX text&nbsp;mode way.
+     That's <b>\today</b>'s default format#1.  MimeTeX has
+     an optional format argument so that, for example, &nbsp;
+     <b>\blue\today[2]</b> &nbsp; renders &nbsp;
+        <a href="#preview"><img id="today2" onclick="eqntext('today2')"
+        src="../cgi-bin/mimetex.cgi?\normalsize\blue\today[2]"
+        border=0 align=middle></a>, &nbsp;
+     showing both date and time.  And &nbsp;
+     <b>\red\today[3]</b> &nbsp; renders &nbsp;
+        <a href="#preview"><img id="today3" onclick="eqntext('today3')"
+        src="../cgi-bin/mimetex.cgi?\normalsize\red\today[3]"
+        border=0 align=bottom></a>,
+     &nbsp; showing time only. </p>
+
+ <p> To accommodate time zones, you may also write, for example, &nbsp;
+     <b>\small\blue\today[2,+3]</b>, &nbsp; which renders &nbsp;
+        <a href="#preview"><img id="today4" onclick="eqntext('today4')"
+        src="../cgi-bin/mimetex.cgi?\small\blue\today[2,+3]"
+        border=0 align=middle></a>, &nbsp;
+     adding three hours to format#2.
+     The arguments may be in either order. The time zone increment
+     must always be preceded by either <b>+</b>&nbsp;or&nbsp;<b>-</b>,
+     and must be in the range <b>-</b>23&nbsp;to&nbsp;<b>+</b>23. </p>
+
+ <p class="continue"> <b>\calendar</b> &nbsp; renders a calendar for
+     the current month, as illustrated by the left-hand image below.
+     For a different month, the optional argument &nbsp
+     <b>\small\blue\calendar[2001,9]</b> &nbsp; renders the right-hand
+     image, for the requested year and month.  Years must be
+     1973<b>...</b>2099 and months must be 1<b>...</b>12. </p>
+     <center>
+        <a href="#preview"><img id="today5" onclick="eqntext('today5')"
+        src="../cgi-bin/mimetex.cgi?\normalsize\calendar"
+        border=0 align=middle> </a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+        <a href="#preview"><img id="today6" onclick="eqntext('today6')"
+        src="../cgi-bin/mimetex.cgi?\small\blue\calendar[2001,9]"
+        border=0 align=middle> </a> </center>
+
+ <p> The default calendar emphasizes the current day of the current month,
+     while any other month emphasizes no day.  Day emphasis is controlled
+     by an optional third argument.  &nbsp; <b>\calendar[0,0,1]</b> &nbsp;
+     emphasizes the first day of the current month, and
+     &nbsp; <b>\calendar[2001,9,11]</b> &nbsp; emphasizes the eleventh
+     day of that month.  &nbsp; <b>\calendar[0,0,99]</b> &nbsp;
+     renders the current month with no day emphasized. </p>
+
 <h3> <a name="input">\input{&nbsp;}<font size=5>...</font></a> </h3>
 
  <p class="continue">
@@ -2739,13 +2983,14 @@
   (supplied with your mimeTeX distribution). </p>
 
 <p> The final output from each such sequence of three runs
-  (metafont &gt; gftype -i &gt; gfuntype) gives mimeTeX the information
-  it needs to render one particular font family at one particular
-  size.  The file <b>texfonts.h</b> supplied with your mimeTeX
-  distribution collects the output from 36 such (sequences of)
-  runs, representing six font families at six sizes each. </p>
+  (metafont &gt; gftype -i &gt; gfuntype) gives mimeTeX the
+  bitmap information it needs to render one particular font
+  family at one particular size.  The file <b>texfonts.h</b>
+  supplied with your mimeTeX distribution collects the output
+  from 56 such (sequences of) runs, representing seven font
+  families at eight sizes each. </p>
 
-<p> This collection of information in  texfonts.h  is
+<p> This collection of information in &nbsp; texfonts.h &nbsp; is
   "wired" into mimeTeX through tables maintained in <b>mimetex.h</b>.
   To change mimeTeX's fonts, you'll have to first modify (or totally
   replace) texfonts.h using your own gfuntype output, and then
@@ -2762,7 +3007,8 @@
 <p> Running <b>metafont</b> to generate a <b>.gf</b> file from <b>.mf</b>
   source will usually be your very first step.  A typical such run
   might be </p>
- <center><b>mf '\mode=onetz; mag=magstep(.5); input cmmi10'</b></center>
+ <!-- <b>mf '\mode=onetz; mag=magstep(.5); input cmmi10'</b> --> <center>
+ <b>mf '\mode=preview; mag=magstep(-16.393225); input cmmi10'</b></center>
 <p class="continue"> which in this case generates output file
   <b>cmmi10.131gf</b> (which is mimeTeX's font size 3 for the
   cmmi family). </p>
@@ -2788,39 +3034,53 @@
   Then pull all the output files into one big <b>texfonts.h</b> file
   (or write a small texfonts.h which just #include's them all). </p>
 
-<p> For your information, the 36 sequences of runs represented
+<p> For your information, the 64 sequences of runs represented
   in the texfonts.h file supplied with your mimeTeX distribution
-  correspond to the following six inital metafont runs for cmr10 </p>
-  <pre>   size=0 (.83gf)   mf '\mode=eighthre; input cmr10'
+  correspond to the following eight inital metafont runs for cmr10 </p>
+<!-- 
         1 (.100gf)  mf '\mode=nextscrn; input cmr10'
         2 (.118gf)  mf '\mode=lview; input cmr10'
         3 (.131gf)  mf '\mode=onetz; mag=magstep(.5); input cmr10'
         4 (.160gf)  mf '\mode=itoh; input cmr10'
-        5 (.180gf)  mf '\mode=lqlores; input cmr10'</pre>
+        5 (.180gf)  mf '\mode=lqlores; input cmr10'
+-->
+  <pre>   size=0 (.83gf)   mf '\mode=eighthre; input cmr10'
+        1 (.100gf)  mf '\mode=preview; mag=magstep(-17.874274); input cmr10'
+        2 (.118gf)  mf '\mode=preview; mag=magstep(-16.966458); input cmr10'
+        3 (.131gf)  mf '\mode=preview; mag=magstep(-16.393225); input cmr10'
+        4 (.160gf)  mf '\mode=preview; mag=magstep(-15.296391); input cmr10'
+        5 (.180gf)  mf '\mode=preview; mag=magstep(-14.650373); input cmr10'
+        6 (.210gf)  mf '\mode=preview; mag=magstep(-13.804885); input cmr10'
+        7 (.250gf)  mf '\mode=preview; mag=magstep(-12.848589); input cmr10'</pre>
   <p class="continue">
-  Then ditto for the five other font families cmmi10, cmsy10, cmex10,
-  rsfs10, bbold10.  All the subsequent gftype and gfuntype runs just
-  follow the usual format described above. </p>
+  Then ditto for the seven other font families cmmi10, cmmib10, cmsy10,
+  cmex10, bbold10, rsfs10, stmary10.  And to generate other
+  <b>.</b><i>dpi</i><b>gf</b> font sizes, calculate magsteps &nbsp;
+  <img src="../cgi-bin/mimetex.cgi?\normalsize\frac{\log(dpi/2602)}{\log1.2}"
+  alt="" align=middle border=0>. &nbsp;  All the subsequent gftype and
+  gfuntype runs just follow the standard format described above. </p>
 
 <p> To incorporate all this font information you just generated into
   mimeTeX, edit your <b>mimetex.h</b> file and find the table that looks
-  something like </p><pre>    static fontfamily aafonttable[] =
-     { /* -------------------------------------------------------------
-          family   size=0,       1,       2,       3,       4,      5
-       ------------------------------------------------------------- */
-       {  CMR10, {  cmr83,  cmr100,  cmr118,  cmr131,  cmr160,  cmr180 } },
-       { CMMI10, { cmmi83, cmmi100, cmmi118, cmmi131, cmmi160, cmmi180 } },
-       { CMSY10, { cmsy83, cmsy100, cmsy118, cmsy131, cmsy160, cmsy180 } },
-       { CMEX10, { cmex83, cmex100, cmex118, cmex131, cmex160, cmex180 } },
-       { RSFS10, { rsfs83, rsfs100, rsfs118, rsfs131, rsfs160, rsfs180 } },
-       {BBOLD10, {bbold83,bbold100,bbold118,bbold131,bbold160,bbold180 } },
-       {   -999, {   NULL,    NULL,    NULL,    NULL,    NULL,    NULL } }
-     } ; /* --- end-of-fonttable[] --- */</pre><p class="continue">
-  Note the 36 names <b>cmr83...bbold180</b> in the table.  These must
+  something like </p><pre>static fontfamily aafonttable[] = {
+ /* ----------------------------------------------------------------------------------------
+    family    size=0,        1,        2,        3,        4,        5,        6,        7
+ ----------------------------------------------------------------------------------------- */
+ {   CMR10,{   cmr83,   cmr100,   cmr118,   cmr131,   cmr160,   cmr180,   cmr210,   cmr250}},
+ {  CMMI10,{  cmmi83,  cmmi100,  cmmi118,  cmmi131,  cmmi160,  cmmi180,  cmmi210,  cmmi250}},
+ { CMMIB10,{ cmmib83, cmmib100, cmmib118, cmmib131, cmmib160, cmmib180, cmmib210, cmmib250}},
+ {  CMSY10,{  cmsy83,  cmsy100,  cmsy118,  cmsy131,  cmsy160,  cmsy180,  cmsy210,  cmsy250}},
+ {  CMEX10,{  cmex83,  cmex100,  cmex118,  cmex131,  cmex160,  cmex180,  cmex210,  cmex250}},
+ {  RSFS10,{  rsfs83,  rsfs100,  rsfs118,  rsfs131,  rsfs160,  rsfs180,  rsfs210,  rsfs250}},
+ { BBOLD10,{ bbold83, bbold100, bbold118, bbold131, bbold160, bbold180, bbold210, bbold250}},
+ {STMARY10,{stmary83,stmary100,stmary118,stmary131,stmary160,stmary180,stmary210,stmary250}},
+ {    -999,{    NULL,     NULL,     NULL,     NULL,     NULL,     NULL,     NULL,     NULL}}
+} ; /* --- end-of-fonttable[] --- */</pre><p class="continue">
+  Note the 64 names <b>cmr83...stmary250</b> in the table.  These must
   correspond to (or must be changed to) the names following the <b>-n</b>
-  switch you specified for your  gfuntype  runs. </p>
+  switch you specified for your &nbsp; gfuntype &nbsp; runs. </p>
 
-<p> If you want more than six font sizes, first build up texfonts.h
+<p> If you want more than eight font sizes, first build up texfonts.h
   with all the necessary information.  Then change LARGESTSIZE (and
   probably NORMALSIZE) in mimetex.h, and finally edit the above aafonttable[]
   by extending the columns in each row up to your largest size. </p>
@@ -2831,6 +3091,39 @@
   after reviewing mimetex.h).  A new row would be required,
   for example, to make another font available in mimeTeX. </p>
 
+<p> One small problem with the above procedure is that the default
+  &nbsp; gftype &nbsp; program supplied with most TeX distributions
+  can't emit the long lines needed to display mimeTeX's larger font
+  sizes.  You'll need to compile your own version from source.
+  The following instructions are for Unix/Linux: <br> &nbsp; &nbsp;
+  &nbsp; &nbsp; First, download both 
+  <a href="http://www.ctan.org/tex-archive/systems/web2c/web-7.5.3.tar.gz"
+  target="_top">web-7.5.3.tar.gz</a> and
+  <a href="http://www.ctan.org/tex-archive/systems/web2c/web2c-7.5.3.tar.gz"
+  target="_top">web2c-7.5.3.tar.gz</a>,
+  or more recent versions.  Then &nbsp; untar &nbsp; them both,
+  &nbsp; cd&nbsp;web2c-7.5.3/ &nbsp; and run &nbsp; ./configure &nbsp;
+  and &nbsp; make &nbsp; in the usual way (make may fail before
+  completion if you don't have all needed fonts installed,
+  but it will create and compile gftype.c before failing).  Now edit
+  &nbsp; texk/web2c/gftype.c&nbsp; and notice two lines very near the top
+  that &nbsp; #define&nbsp;maxrow&nbsp;(79) &nbsp and similarly for maxcol.
+  Change both 79's to 1024, and then re-run make.  The new &nbsp;
+  texk/web2c/gftype &nbsp; executable image can emit the long
+  lines needed for mimeTeX's larger font sizes. </p>
+
+<p> Finally, the Unix/Linux bash shell script
+  <a href="http://www.forkosh.com/texfonts.sh"
+  target="_top">texfonts.sh</a> generates file &nbsp; texfonts.h &nbsp;
+  containing the information for all 64 mimeTeX fonts discussed above
+  (and, optionally, an extra 1200dpi cmr font used to test mimeTeX's
+  supersampling algorithm).  You'll need to understand and edit this
+  script to use it meaningfully.  But it helps automate mimeTeX's font
+  generation procedure in case you want to experiment with different
+  fonts.  (Note that metafont emits a complaint while generating the
+  83dpi rsfs font.  Just press &lt;CR&gt; and it completes
+  successfully.) </p>
+
 
 <h2> <a name="makeraster"> (IVb) mimeTeX's make_raster()
 function &nbsp; </a> </h2>
Index: loncom/cgi/mimeTeX/texfonts.h
diff -u loncom/cgi/mimeTeX/texfonts.h:1.1 loncom/cgi/mimeTeX/texfonts.h:1.2
--- loncom/cgi/mimeTeX/texfonts.h:1.1	Mon Feb 28 14:08:11 2005
+++ loncom/cgi/mimeTeX/texfonts.h	Fri Mar 24 18:08:33 2006
@@ -1,5 +1,5 @@
-#ifndef	_TEXFONTS
-#define	_TEXFONTS
+#ifndef _TEXFONTS
+#define _TEXFONTS
 /****************************************************************************
  *
  * Copyright(c) 2002-2003, John Forkosh Associates, Inc. All rights reserved.
@@ -59,34239 +59,48230 @@
  * 07/10/03	J.Forkosh	Added cmmi10 fonts (in addition to cmmib10),
  *				and rsfs fonts.
  * 07/12/03	J.Forkosh	Entirely new set of fonts generated.
+ * 10/21/05	J.Forkosh	Compressed fonts generated
  *
  ***************************************************************************/
 
 
-/* --------------------------------------------------------------------------
-font sizes 0-5 for cmr10
--------------------------------------------------------------------------- */
-
-/* --- size=0 ---
- * mf '\mode=eighthre; input cmr10'   gives .gf83
- * ---------------------------------------------- */
+/* ------------------------------------------------------------------------
+font sizes 0-7 for cmr10
+------------------------------------------------------------------------ */
+
+/* --- size=0 for .83gf ---
+ * mf '\mode=eighthre;  input cmr10'
+ * --------------------------------------------------------------------- */
 /* --- fontdef for cmr83 --- */
 static	chardef  cmr83[] =
    {
-      /* --- pixel bitmap for cmr83 char#0 (noname) --- */
+      /* --- pixel bitmap for cmr83 char#0 \Gamma --- */
       {   0, 1561,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xbf\x28\x0a\x82\x20\x1c" }  },
-      /* --- pixel bitmap for cmr83 char#1 (noname) --- */
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbf\x28\x0a\x82\x20\x1c" }  },
+      /* --- pixel bitmap for cmr83 char#1 \Delta --- */
       {   1, 1588,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x10\x28\x28\x6c\x44\x44\x82\xfe" }  },
-      /* --- pixel bitmap for cmr83 char#2 (noname) --- */
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x10\x28\x28\x6c\x44\x44\x82\xfe" }  },
+      /* --- pixel bitmap for cmr83 char#2 \Theta --- */
       {   2, 1623,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8c\x14\xb6\x61\x28\x31" }  },
-      /* --- pixel bitmap for cmr83 char#3 (noname) --- */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x14\xb6\x61\x28\x31" }  },
+      /* --- pixel bitmap for cmr83 char#3 \Lambda --- */
       {   3, 1660,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x08\x04\x85\x42\xa1\x88\xee" }  },
-      /* --- pixel bitmap for cmr83 char#4 (noname) --- */
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x04\x85\x42\xa1\x88\xee" }  },
+      /* --- pixel bitmap for cmr83 char#4 \Xi --- */
       {   4, 1695,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\xa0\xc8\x27\x02\x04\xff" }  },
-      /* --- pixel bitmap for cmr83 char#5 (noname) --- */
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\xa0\xc8\x27\x02\x04\xff" }  },
+      /* --- pixel bitmap for cmr83 char#5 \Pi --- */
       {   5, 1726,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x42\x42\x42\x42\x42\x42\xe7" }  },
-      /* --- pixel bitmap for cmr83 char#6 (noname) --- */
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\xf5\x11\x41\x13\x23" }  },
+      /* --- pixel bitmap for cmr83 char#6 \Sigma --- */
       {   6, 1763,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7f\x4a\x42\xac\xfc" }  },
-      /* --- pixel bitmap for cmr83 char#7 (noname) --- */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7f\x4a\x42\xac\xfc" }  },
+      /* --- pixel bitmap for cmr83 char#7 \Upsilon --- */
       {   7, 1794,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x77\x8a\x20\x08\x82\x70" }  },
-      /* --- pixel bitmap for cmr83 char#8 (noname) --- */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x77\x8a\x20\x08\x82\x70" }  },
+      /* --- pixel bitmap for cmr83 char#8 \Phi --- */
       {   8, 1823,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8e\xb8\x5a\x1d\x71" }  },
-      /* --- pixel bitmap for cmr83 char#9 (noname) --- */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8e\xb8\x5a\x1d\x71" }  },
+      /* --- pixel bitmap for cmr83 char#9 \Psi --- */
       {   9, 1854,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1c\x92\xa6\xab\x87\x70" }  },
-      /* --- pixel bitmap for cmr83 char#10 (noname) --- */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\x92\xa6\xab\x87\x70" }  },
+      /* --- pixel bitmap for cmr83 char#10 \Omega --- */
       {  10, 1889,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1c\x91\x48\x24\xa2\x54\xef" }  },
-      /* --- pixel bitmap for cmr83 char#11 (noname) --- */
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\x91\x48\x24\xa2\x54\xef" }  },
+      /* --- pixel bitmap for cmr83 char#11 \ff --- */
       {  11, 3214,                      /* character number, location */
-          8,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf8\x24\x24\x7f\x24\x24\x24\x66" }  },
-      /* --- pixel bitmap for cmr83 char#12 (noname) --- */
+          8,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x24\x24\x7f\x24\x24\x24\x66" }  },
+      /* --- pixel bitmap for cmr83 char#12 \fi --- */
       {  12, 3249,                      /* character number, location */
-          8,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x18\x41\x7c\x1c\x45\xd9" }  },
-      /* --- pixel bitmap for cmr83 char#13 (noname) --- */
+          8,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x18\x41\x7c\x1c\x45\xd9" }  },
+      /* --- pixel bitmap for cmr83 char#13 \fl --- */
       {  13, 3278,                      /* character number, location */
-          8,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x18\x45\x7d\x14\x45\xd9" }  },
-      /* --- pixel bitmap for cmr83 char#14 (noname) --- */
+          8,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x18\x45\x7d\x14\x45\xd9" }  },
+      /* --- pixel bitmap for cmr83 char#14 \ffi --- */
       {  14, 3313,                      /* character number, location */
-          8,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          { 10,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf8\x91\x40\xc2\x7f\xa4\x91\x44\x92\xdd" }  },
-      /* --- pixel bitmap for cmr83 char#15 (noname) --- */
+          8,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          { 10,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x91\x40\xc2\x7f\xa4\x91\x44\x92\xdd" }  },
+      /* --- pixel bitmap for cmr83 char#15 \ffl --- */
       {  15, 3356,                      /* character number, location */
-          8,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          { 10,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf8\x91\x44\xd2\x7f\x24\x91\x44\x92\xc9" }  },
-      /* --- pixel bitmap for cmr83 char#16 (noname) --- */
+          8,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          { 10,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x91\x44\xd2\x7f\x24\x91\x44\x92\xc9" }  },
+      /* --- pixel bitmap for cmr83 char#16 \imath --- */
       {  16, 2288,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x93\x74" }  },
-      /* --- pixel bitmap for cmr83 char#17 (noname) --- */
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  3,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x93\x74" }  },
+      /* --- pixel bitmap for cmr83 char#17 \jmath --- */
       {  17, 2305,                      /* character number, location */
-          5,-1,    -2,-1,     /* topleft row,col, and botleft row,col */
-          {  3,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x26\x49\x1e" }  },
-      /* --- pixel bitmap for cmr83 char#18 (noname) --- */
+          5,-1,   -2,-1,      /* topleft row,col, and botleft row,col */
+          {  3,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x26\x49\x1e" }  },
+      /* --- pixel bitmap for cmr83 char#18 \gravesym --- */
       {  18, 3052,                      /* character number, location */
-          8, 1,     6, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x09" }  },
-      /* --- pixel bitmap for cmr83 char#19 (noname) --- */
+          8, 1,    6, 1,      /* topleft row,col, and botleft row,col */
+          {  2,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09" }  },
+      /* --- pixel bitmap for cmr83 char#19 \acutesym --- */
       {  19, 3063,                      /* character number, location */
-          8, 2,     6, 2,     /* topleft row,col, and botleft row,col */
-          {  2,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x06" }  },
-      /* --- pixel bitmap for cmr83 char#20 (noname) --- */
+          8, 2,    6, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06" }  },
+      /* --- pixel bitmap for cmr83 char#20 \checksym --- */
       {  20, 3074,                      /* character number, location */
-          7, 1,     6, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x07" }  },
-      /* --- pixel bitmap for cmr83 char#21 (noname) --- */
+          7, 1,    6, 1,      /* topleft row,col, and botleft row,col */
+          {  3,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x07" }  },
+      /* --- pixel bitmap for cmr83 char#21 \brevesym --- */
       {  21, 3083,                      /* character number, location */
-          8, 1,     6, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3d" }  },
+          8, 1,    6, 1,      /* topleft row,col, and botleft row,col */
+          {  3,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3d" }  },
       /* --- pixel bitmap for cmr83 char#22 (noname) --- */
       {  22, 3096,                      /* character number, location */
-          7, 1,     6, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x07" }  },
+          7, 1,    6, 1,      /* topleft row,col, and botleft row,col */
+          {  3,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x07" }  },
       /* --- pixel bitmap for cmr83 char#23 (noname) --- */
       {  23, 3105,                      /* character number, location */
-          8, 3,     6, 3,     /* topleft row,col, and botleft row,col */
-          {  2,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
+          8, 3,    6, 3,      /* topleft row,col, and botleft row,col */
+          {  2,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
       /* --- pixel bitmap for cmr83 char#24 (noname) --- */
       {  24, 3116,                      /* character number, location */
-          0, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0e" }  },
+          0, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          {  2,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e" }  },
       /* --- pixel bitmap for cmr83 char#25 \ss --- */
       {  25, 2326,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x44\xa9\x25\xa5\x5c" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x44\xa9\x25\xa5\x5c" }  },
       /* --- pixel bitmap for cmr83 char#26 \ae --- */
       {  26, 2363,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x36\x7f\x22\x69\x03" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x36\x7f\x22\x69\x03" }  },
       /* --- pixel bitmap for cmr83 char#27 \oe --- */
       {  27, 2390,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x6e\xf1\x11\x91\x6e" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x6e\xf1\x11\x91\x6e" }  },
       /* --- pixel bitmap for cmr83 char#28 (noname) --- */
       {  28, 2419,                      /* character number, location */
-          6, 0,    -1, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xd0\xf5\x7a\x5d\x00" }  },
+          6, 0,   -1, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xd0\xf5\x7a\x5d\x00" }  },
       /* --- pixel bitmap for cmr83 char#29 \AE --- */
       {  29, 2448,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xfc\x30\x51\xa2\xc2\x97\xaa\xc4\xf9" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfc\x30\x51\xa2\xc2\x97\xaa\xc4\xf9" }  },
       /* --- pixel bitmap for cmr83 char#30 \OE --- */
       {  30, 2495,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xfc\xc9\x14\x5b\x38\xa1\xc6\x28\x23\xff" }  },
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfc\xc9\x14\x5b\x38\xa1\xc6\x28\x23\xff" }  },
       /* --- pixel bitmap for cmr83 char#31 (noname) --- */
       {  31, 2542,                      /* character number, location */
-          8, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9c\x96\xa6\x6d\x69\x39\x02" }  },
+          8, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9c\x96\xa6\x6d\x69\x39\x02" }  },
       /* --- pixel bitmap for cmr83 char#32 (noname) --- */
       {  32, 3146,                      /* character number, location */
-          4, 0,     3, 0,     /* topleft row,col, and botleft row,col */
-          {  2,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x03" }  },
+          4, 0,    3, 0,      /* topleft row,col, and botleft row,col */
+          {  2,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03" }  },
       /* --- pixel bitmap for cmr83 char#33 ! --- */
       {  33, 2587,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9f" }  },
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  1,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9f" }  },
       /* --- pixel bitmap for cmr83 char#34 " --- */
       {  34, 3403,                      /* character number, location */
-          8, 0,     5, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x6d\x01" }  },
+          8, 0,    5, 0,      /* topleft row,col, and botleft row,col */
+          {  3,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x6d\x01" }  },
       /* --- pixel bitmap for cmr83 char#35 # --- */
       {  35, 2629,                      /* character number, location */
-          8, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x28\x14\xea\x4f\xa1\x50\xfe\x0a\x05" }  },
+          8, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x28\x14\xea\x4f\xa1\x50\xfe\x0a\x05" }  },
       /* --- pixel bitmap for cmr83 char#36 $ --- */
       {  36, 2180,                      /* character number, location */
-          9, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          {  3,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xd2\x3f\xff\x12" }  },
+          9, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          {  3,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xd2\x3f\xff\x12" }  },
       /* --- pixel bitmap for cmr83 char#37 % --- */
       {  37, 2672,                      /* character number, location */
-          9, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xc2\x5e\xa9\xa2\x40\x51\xa5\xd2\x10" }  },
+          9, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xc2\x5e\xa9\xa2\x40\x51\xa5\xd2\x10" }  },
       /* --- pixel bitmap for cmr83 char#38 & --- */
       {  38, 2207,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x18\x0a\x87\xed\xca\x44\xdc" }  },
-      /* --- pixel bitmap for cmr83 char#39 (noname) --- */
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x18\x0a\x87\xed\xca\x44\xdc" }  },
+      /* --- pixel bitmap for cmr83 char#39 ' --- */
       {  39, 2729,                      /* character number, location */
-          8, 1,     5, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x07" }  },
+          8, 1,    5, 1,      /* topleft row,col, and botleft row,col */
+          {  1,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x07" }  },
       /* --- pixel bitmap for cmr83 char#40 ( --- */
       {  40, 2742,                      /* character number, location */
-          9, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          {  2,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5a\x55\x95\x02" }  },
+          9, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          {  2,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5a\x55\x95\x02" }  },
       /* --- pixel bitmap for cmr83 char#41 ) --- */
       {  41, 2775,                      /* character number, location */
-          9, 0,    -4, 0,     /* topleft row,col, and botleft row,col */
-          {  2,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xa5\xaa\x6a\x01" }  },
+          9, 0,   -4, 0,      /* topleft row,col, and botleft row,col */
+          {  2,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xa5\xaa\x6a\x01" }  },
       /* --- pixel bitmap for cmr83 char#42 * --- */
       {  42, 2808,                      /* character number, location */
-          9, 1,     4, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xba\x2e" }  },
+          9, 1,    4, 1,      /* topleft row,col, and botleft row,col */
+          {  3,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x2e" }  },
       /* --- pixel bitmap for cmr83 char#43 + --- */
       {  43, 2825,                      /* character number, location */
-          7, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x08\x82\x20\x3f\x82\x20\x08" }  },
+          7, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    9, 3,11, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf3\x31\x26\xf3\x31\x2f" }  },
       /* --- pixel bitmap for cmr83 char#44 (noname) --- */
       {  44, 2850,                      /* character number, location */
-          1, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x07" }  },
+          1, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          {  1,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x07" }  },
       /* --- pixel bitmap for cmr83 char#45 (noname) --- */
       {  45, 3422,                      /* character number, location */
-          3, 0,     2, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x07" }  },
+          3, 0,    2, 0,      /* topleft row,col, and botleft row,col */
+          {  3,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x07" }  },
       /* --- pixel bitmap for cmr83 char#46 (noname) --- */
       {  46, 2863,                      /* character number, location */
-          1, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x01" }  },
+          1, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  1,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x01" }  },
       /* --- pixel bitmap for cmr83 char#47 / --- */
       {  47, 2872,                      /* character number, location */
-          9, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  3,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x24\x25\x49\x4a\x02" }  },
+          9, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  3,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x24\x25\x49\x4a\x02" }  },
       /* --- pixel bitmap for cmr83 char#48 0 --- */
       {  48, 1930,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\xc6\x18\xa3\x03" }  },
+          7, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\xc6\x18\xa3\x03" }  },
       /* --- pixel bitmap for cmr83 char#49 1 --- */
       {  49, 1961,                      /* character number, location */
-          7, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9a\x24\x1d" }  },
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  3,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9a\x24\x1d" }  },
       /* --- pixel bitmap for cmr83 char#50 2 --- */
       {  50, 1982,                      /* character number, location */
-          7, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x96\x88\xa4\x0f" }  },
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  4,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x96\x88\xa4\x0f" }  },
       /* --- pixel bitmap for cmr83 char#51 3 --- */
       {  51, 2007,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x44\x21\x06\xa3\x03" }  },
+          7, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x44\x21\x06\xa3\x03" }  },
       /* --- pixel bitmap for cmr83 char#52 4 --- */
       {  52, 2032,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xcc\xad\x8f\x10\x07" }  },
+          7, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xcc\xad\x8f\x10\x07" }  },
       /* --- pixel bitmap for cmr83 char#53 5 --- */
       {  53, 2055,                      /* character number, location */
-          7, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x17\x71\x98\x06" }  },
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  4,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x17\x71\x98\x06" }  },
       /* --- pixel bitmap for cmr83 char#54 6 --- */
       {  54, 2078,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x4c\x84\x17\xa3\x03" }  },
+          7, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x4c\x84\x17\xa3\x03" }  },
       /* --- pixel bitmap for cmr83 char#55 7 --- */
       {  55, 2103,                      /* character number, location */
-          7, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9f\x24\x22\x02" }  },
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  4,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9f\x24\x22\x02" }  },
       /* --- pixel bitmap for cmr83 char#56 8 --- */
       {  56, 2126,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x44\x29\x17\xa3\x03" }  },
+          7, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x44\x29\x17\xa3\x03" }  },
       /* --- pixel bitmap for cmr83 char#57 9 --- */
       {  57, 2155,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\x46\x0f\x91\x01" }  },
+          7, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\x46\x0f\x91\x01" }  },
       /* --- pixel bitmap for cmr83 char#58 : --- */
       {  58, 2903,                      /* character number, location */
-          5, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x11" }  },
+          5, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  1,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x11" }  },
       /* --- pixel bitmap for cmr83 char#59 ; --- */
       {  59, 2916,                      /* character number, location */
-          5, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x71" }  },
+          5, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          {  1,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x71" }  },
       /* --- pixel bitmap for cmr83 char#60 (noname) --- */
       {  60, 2608,                      /* character number, location */
-          6, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf9" }  },
+          6, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          {  1,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf9" }  },
       /* --- pixel bitmap for cmr83 char#61 = --- */
       {  61, 2933,                      /* character number, location */
-          5, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f\x00\x00\x3f" }  },
+          5, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    5, 3, 6, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\xf2\x66" }  },
       /* --- pixel bitmap for cmr83 char#62 (noname) --- */
       {  62, 2265,                      /* character number, location */
-          6, 0,    -2, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x02\x20\x22\x79" }  },
-      /* --- pixel bitmap for cmr83 char#63 (noname) --- */
+          6, 0,   -2, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x02\x20\x22\x79" }  },
+      /* --- pixel bitmap for cmr83 char#63 ? --- */
       {  63, 2242,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x96\x24\x02\x20" }  },
-      /* --- pixel bitmap for cmr83 char#64 (noname) --- */
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x96\x24\x02\x20" }  },
+      /* --- pixel bitmap for cmr83 char#64 @ --- */
       {  64, 2946,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8c\x37\xcf\xf3\xec\xf3" }  },
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x37\xcf\xf3\xec\xf3" }  },
       /* --- pixel bitmap for cmr83 char#65 A --- */
       {  65,   35,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x18\x18\x18\x3c\x24\x3c\x24\xe7" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x18\x18\x18\x3c\x24\x3c\x24\xe7" }  },
       /* --- pixel bitmap for cmr83 char#66 B --- */
       {  66,   64,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9f\x28\xfa\xb2\x28\x7e" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9f\x28\xfa\xb2\x28\x7e" }  },
       /* --- pixel bitmap for cmr83 char#67 C --- */
       {  67,   97,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5c\xc6\x10\xa2\x64" }  },
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5c\xc6\x10\xa2\x64" }  },
       /* --- pixel bitmap for cmr83 char#68 D --- */
       {  68,  128,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f\x91\x50\x28\x14\x8a\x7e" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f\x91\x50\x28\x14\x8a\x7e" }  },
       /* --- pixel bitmap for cmr83 char#69 E --- */
       {  69,  163,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f\x91\xcc\x23\x15\x0a\xff" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f\x91\xcc\x23\x15\x0a\xff" }  },
       /* --- pixel bitmap for cmr83 char#70 F --- */
       {  70,  198,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xbf\xa8\x3a\x8a\x20\x1c" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbf\xa8\x3a\x8a\x20\x1c" }  },
       /* --- pixel bitmap for cmr83 char#71 G --- */
       {  71,  229,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3c\x51\x28\x10\x0f\x89\x78" }  },
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\x51\x28\x10\x0f\x89\x78" }  },
       /* --- pixel bitmap for cmr83 char#72 H --- */
       {  72,  262,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe7\x42\x42\x7e\x42\x42\x42\xe7" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe7\x42\x42\x7e\x42\x42\x42\xe7" }  },
       /* --- pixel bitmap for cmr83 char#73 I --- */
       {  73,  299,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x97\x24\xe9" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  3,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x97\x24\xe9" }  },
       /* --- pixel bitmap for cmr83 char#74 J --- */
       {  74,  322,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x4e\x44\x44\x75" }  },
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  4,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x4e\x44\x44\x75" }  },
       /* --- pixel bitmap for cmr83 char#75 K --- */
       {  75,  347,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf7\x32\x1a\x0e\x16\x12\x22\xe7" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf7\x32\x1a\x0e\x16\x12\x22\xe7" }  },
       /* --- pixel bitmap for cmr83 char#76 L --- */
       {  76,  384,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x87\x20\x08\xa2\x28\xfe" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x87\x20\x08\xa2\x28\xfe" }  },
       /* --- pixel bitmap for cmr83 char#77 M --- */
       {  77,  413,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 10,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x87\x1b\x66\x98\x52\x4a\xc9\x24\xd3\xed" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x87\x1b\x66\x98\x52\x4a\xc9\x24\xd3\xed" }  },
       /* --- pixel bitmap for cmr83 char#78 N --- */
       {  78,  466,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe3\x46\x4a\x4a\x52\x72\x62\x47" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe3\x46\x4a\x4a\x52\x72\x62\x47" }  },
       /* --- pixel bitmap for cmr83 char#79 O --- */
       {  79,  511,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8c\x14\x86\x61\x28\x31" }  },
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x14\x86\x61\x28\x31" }  },
       /* --- pixel bitmap for cmr83 char#80 P --- */
       {  80,  546,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9f\x28\x8a\x9e\x20\x1c" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9f\x28\x8a\x9e\x20\x1c" }  },
       /* --- pixel bitmap for cmr83 char#81 Q --- */
       {  81,  575,                      /* character number, location */
-          8, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8c\x14\x86\x61\xe8\x31\x00\x0c" }  },
+          8, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x14\x86\x61\xe8\x31\x00\x0c" }  },
       /* --- pixel bitmap for cmr83 char#82 R --- */
       {  82,  612,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1f\x91\xc8\x23\x12\x89\xce" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\x91\xc8\x23\x12\x89\xce" }  },
       /* --- pixel bitmap for cmr83 char#83 S --- */
       {  83,  647,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x56\x31\x8c\x79" }  },
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  4,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x56\x31\x8c\x79" }  },
       /* --- pixel bitmap for cmr83 char#84 T --- */
       {  84,  674,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x64\x12\x81\x40\x20\x38" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x64\x12\x81\x40\x20\x38" }  },
       /* --- pixel bitmap for cmr83 char#85 U --- */
       {  85,  705,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe7\x42\x42\x42\x42\x42\x42\x3c" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe7\x42\x42\x42\x42\x42\x42\x3c" }  },
       /* --- pixel bitmap for cmr83 char#86 V --- */
       {  86,  742,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe7\x42\x24\x24\x24\x18\x18\x18" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe7\x42\x24\x24\x24\x18\x18\x18" }  },
       /* --- pixel bitmap for cmr83 char#87 W --- */
       {  87,  775,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,     8, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x77\x17\x11\x55\xa8\x42\x15\xaa\x20\x02\x11" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 11,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x77\x17\x11\x55\xa8\x42\x15\xaa\x20\x02\x11" }  },
       /* --- pixel bitmap for cmr83 char#88 X --- */
       {  88,  834,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x67\x24\x18\x18\x18\x34\x24\xe7" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x67\x24\x18\x18\x18\x34\x24\xe7" }  },
       /* --- pixel bitmap for cmr83 char#89 Y --- */
       {  89,  867,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe7\x24\x28\x38\x10\x10\x10\x38" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe7\x24\x28\x38\x10\x10\x10\x38" }  },
       /* --- pixel bitmap for cmr83 char#90 Z --- */
       {  90,  896,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2f\x15\x22\x65\xfc" }  },
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2f\x15\x22\x65\xfc" }  },
       /* --- pixel bitmap for cmr83 char#91 [ --- */
       {  91, 2977,                      /* character number, location */
-          9, 0,    -3, 0,     /* topleft row,col, and botleft row,col */
-          {  2,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x57\x55\xd5" }  },
+          9, 0,   -3, 0,      /* topleft row,col, and botleft row,col */
+          {  2,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x57\x55\xd5" }  },
       /* --- pixel bitmap for cmr83 char#92 (noname) --- */
       {  92, 3431,                      /* character number, location */
-          8, 2,     5, 2,     /* topleft row,col, and botleft row,col */
-          {  3,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x6d\x01" }  },
+          8, 2,    5, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x6d\x01" }  },
       /* --- pixel bitmap for cmr83 char#93 ] --- */
       {  93, 3008,                      /* character number, location */
-          9, 0,    -3, 0,     /* topleft row,col, and botleft row,col */
-          {  2,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xab\xaa\xea" }  },
+          9, 0,   -3, 0,      /* topleft row,col, and botleft row,col */
+          {  2,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xab\xaa\xea" }  },
       /* --- pixel bitmap for cmr83 char#94 \^ --- */
       {  94, 3155,                      /* character number, location */
-          8, 1,     6, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2a" }  },
+          8, 1,    6, 1,      /* topleft row,col, and botleft row,col */
+          {  3,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2a" }  },
       /* --- pixel bitmap for cmr83 char#95 (noname) --- */
       {  95, 3168,                      /* character number, location */
-          9, 1,     8, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x01" }  },
+          9, 1,    8, 1,      /* topleft row,col, and botleft row,col */
+          {  1,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x01" }  },
       /* --- pixel bitmap for cmr83 char#96 (noname) --- */
       {  96, 3039,                      /* character number, location */
-          8, 1,     5, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x07" }  },
+          8, 1,    5, 1,      /* topleft row,col, and botleft row,col */
+          {  1,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x07" }  },
       /* --- pixel bitmap for cmr83 char#97 a --- */
       {  97,  929,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xc6\xa5\xec\x01" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xc6\xa5\xec\x01" }  },
       /* --- pixel bitmap for cmr83 char#98 b --- */
       {  98,  950,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x43\x08\x27\xa5\x74" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x43\x08\x27\xa5\x74" }  },
       /* --- pixel bitmap for cmr83 char#99 c --- */
       {  99,  979,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1e\x91\x06" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1e\x91\x06" }  },
       /* --- pixel bitmap for cmr83 char#100 d --- */
       { 100,  998,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0c\x21\x97\x52\xf2" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0c\x21\x97\x52\xf2" }  },
       /* --- pixel bitmap for cmr83 char#101 e --- */
       { 101, 1027,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf6\x91\x06" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf6\x91\x06" }  },
       /* --- pixel bitmap for cmr83 char#102 f --- */
       { 102, 1046,                      /* character number, location */
-          8,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x98\x90\x47\x08\x71" }  },
+          8,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          {  5,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x98\x90\x47\x08\x71" }  },
       /* --- pixel bitmap for cmr83 char#103 g --- */
       { 103, 1069,                      /* character number, location */
-          5, 0,    -3, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3e\xa5\xe3\x62\x74" }  },
+          5, 0,   -3, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3e\xa5\xe3\x62\x74" }  },
       /* --- pixel bitmap for cmr83 char#104 h --- */
       { 104, 1100,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x43\x08\xa7\x94\xfa" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x43\x08\xa7\x94\xfa" }  },
       /* --- pixel bitmap for cmr83 char#105 i --- */
       { 105, 1129,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x02\x30\x49\x07" }  },
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  3,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x02\x30\x49\x07" }  },
       /* --- pixel bitmap for cmr83 char#106 j --- */
       { 106, 1150,                      /* character number, location */
-          9,-1,    -2,-1,     /* topleft row,col, and botleft row,col */
-          {  3,    11, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x04\x60\x92\xe4\x01" }  },
+          9,-1,   -2,-1,      /* topleft row,col, and botleft row,col */
+          {  3,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x60\x92\xe4\x01" }  },
       /* --- pixel bitmap for cmr83 char#107 k --- */
       { 107, 1175,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x23\xe2\x66\xb6" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x23\xe2\x66\xb6" }  },
       /* --- pixel bitmap for cmr83 char#108 l --- */
       { 108, 1200,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x93\x24\xe9" }  },
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  3,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x93\x24\xe9" }  },
       /* --- pixel bitmap for cmr83 char#109 m --- */
       { 109, 1223,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x24\x49\x92\x74\x1b" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x24\x49\x92\x74\x1b" }  },
       /* --- pixel bitmap for cmr83 char#110 n --- */
       { 110, 1256,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x4f\x29\xf5\x01" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x4f\x29\xf5\x01" }  },
       /* --- pixel bitmap for cmr83 char#111 o --- */
       { 111, 1279,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\xc6\xe8\x00" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\xc6\xe8\x00" }  },
       /* --- pixel bitmap for cmr83 char#112 p --- */
       { 112, 1302,                      /* character number, location */
-          5, 0,    -2, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x4f\x4a\xe9\xc4\x01" }  },
+          5, 0,   -2, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x4f\x4a\xe9\xc4\x01" }  },
       /* --- pixel bitmap for cmr83 char#113 q --- */
       { 113, 1329,                      /* character number, location */
-          5, 0,    -2, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\xa5\xe4\x10\x07" }  },
+          5, 0,   -2, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\xa5\xe4\x10\x07" }  },
       /* --- pixel bitmap for cmr83 char#114 r --- */
       { 114, 1356,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x97\x74" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  3,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x97\x74" }  },
       /* --- pixel bitmap for cmr83 char#115 s --- */
       { 115, 1373,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x56\x96\x07" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x56\x96\x07" }  },
       /* --- pixel bitmap for cmr83 char#116 t --- */
       { 116, 1394,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xd2\x64\x1b" }  },
+          7, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  3,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xd2\x64\x1b" }  },
       /* --- pixel bitmap for cmr83 char#117 u --- */
       { 117, 1415,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x4f\x29\xe5\x01" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x4f\x29\xe5\x01" }  },
       /* --- pixel bitmap for cmr83 char#118 v --- */
       { 118, 1438,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5b\x29\x42\x00" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5b\x29\x42\x00" }  },
       /* --- pixel bitmap for cmr83 char#119 w --- */
       { 119, 1461,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x6b\x9b\xcd\x46\x01" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x6b\x9b\xcd\x46\x01" }  },
       /* --- pixel bitmap for cmr83 char#120 x --- */
       { 120, 1490,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xdb\x10\xb5\x01" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xdb\x10\xb5\x01" }  },
       /* --- pixel bitmap for cmr83 char#121 y --- */
       { 121, 1513,                      /* character number, location */
-          5, 0,    -2, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5b\x29\x42\xc8\x00" }  },
+          5, 0,   -2, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5b\x29\x42\xc8\x00" }  },
       /* --- pixel bitmap for cmr83 char#122 z --- */
       { 122, 1540,                      /* character number, location */
-          5, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5f\xaf\x0f" }  },
+          5, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5f\xaf\x0f" }  },
       /* --- pixel bitmap for cmr83 char#123 (noname) --- */
       { 123, 3450,                      /* character number, location */
-          4, 0,     3, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1f" }  },
+          4, 0,    3, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f" }  },
       /* --- pixel bitmap for cmr83 char#124 (noname) --- */
       { 124, 3459,                      /* character number, location */
-          4, 0,     3, 0,     /* topleft row,col, and botleft row,col */
-          { 10,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x03" }  },
+          4, 0,    3, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    1, 3, 2, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0a" }  },
       /* --- pixel bitmap for cmr83 char#125 (noname) --- */
       { 125, 3177,                      /* character number, location */
-          8, 1,     6, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2d" }  },
+          8, 1,    6, 1,      /* topleft row,col, and botleft row,col */
+          {  3,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2d" }  },
       /* --- pixel bitmap for cmr83 char#126 \~ --- */
       { 126, 3192,                      /* character number, location */
-          8, 1,     6, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0c" }  },
+          8, 1,    6, 1,      /* topleft row,col, and botleft row,col */
+          {  3,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0c" }  },
       /* --- pixel bitmap for cmr83 char#127 (noname) --- */
       { 127, 3203,                      /* character number, location */
-          9, 1,     8, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x05" }  },
+          9, 1,    8, 1,      /* topleft row,col, and botleft row,col */
+          {  3,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05" }  },
       /* --- trailer  --- */
-      { -99, -999,  0,0,0,0, { 0,0,0, (pixbyte *)"\0" }  }
+      { -99, -999,  0,0,0,0, { 0,0,0,0, (pixbyte *)"\0" }  }
    } ;
 
 
-/* --- size=1 ---
- * mf '\mode=nextscrn; input cmr10'   gives .gf100
- * ----------------------------------------------- */
+/* --- size=1 for .100gf ---
+ * mf '\mode=preview; mag=magstep(-17.87427405946994351363); input cmr10'
+ * --------------------------------------------------------------------- */
 /* --- fontdef for cmr100 --- */
 static	chardef  cmr100[] =
    {
-      /* --- pixel bitmap for cmr100 char#0 (noname) --- */
-      {   0, 1801,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xbf\x28\x8a\x82\x20\x08\x0f" }  },
-      /* --- pixel bitmap for cmr100 char#1 (noname) --- */
-      {   1, 1832,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,     9, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x10\x50\xa0\x20\x42\x44\x90\xa0\x80\xff\x01" }  },
-      /* --- pixel bitmap for cmr100 char#2 (noname) --- */
-      {   2, 1871,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3c\x42\x81\x81\x99\x81\x81\x42\x3c" }  },
-      /* --- pixel bitmap for cmr100 char#3 (noname) --- */
-      {   3, 1912,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,     9, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x10\x20\xa0\x40\x81\x82\x08\x11\x22\xef\x01" }  },
-      /* --- pixel bitmap for cmr100 char#4 (noname) --- */
-      {   4, 1951,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7e\x42\x00\x24\x3c\x24\x00\x81\xff" }  },
-      /* --- pixel bitmap for cmr100 char#5 (noname) --- */
-      {   5, 1984,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7f\x91\x48\x24\x12\x89\x44\x77" }  },
-      /* --- pixel bitmap for cmr100 char#6 (noname) --- */
-      {   6, 2025,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\xb1\x90\x88\x20\x12\x85\x7f" }  },
-      /* --- pixel bitmap for cmr100 char#7 (noname) --- */
-      {   7, 2062,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x66\x89\x10\x10\x10\x10\x10\x10\x7c" }  },
-      /* --- pixel bitmap for cmr100 char#8 (noname) --- */
-      {   8, 2093,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3e\x84\x2f\x99\x4c\xfa\x10\x3e" }  },
-      /* --- pixel bitmap for cmr100 char#9 (noname) --- */
-      {   9, 2130,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7c\x10\xd3\x52\x52\x56\x3c\x10\x7c" }  },
-      /* --- pixel bitmap for cmr100 char#10 (noname) --- */
-      {  10, 2171,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9c\x71\x30\x18\x14\x89\xaa\x77" }  },
-      /* --- pixel bitmap for cmr100 char#11 (noname) --- */
-      {  11, 3720,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  9,    10, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\xf8\x89\x10\x21\xf2\x8f\x08\x11\x22\x44\x8c\x01" }  },
-      /* --- pixel bitmap for cmr100 char#12 (noname) --- */
-      {  12, 3763,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  8,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x78\x04\x04\x04\x7f\x64\x44\x44\x44\xc6" }  },
-      /* --- pixel bitmap for cmr100 char#13 (noname) --- */
-      {  13, 3800,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  8,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x78\x44\x44\x44\x7f\x44\x44\x44\x44\xc6" }  },
-      /* --- pixel bitmap for cmr100 char#14 (noname) --- */
-      {  14, 3843,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          { 12,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf8\x47\x04\x44\x40\x04\xff\x47\x64\x44\x44\x44\x44"
-            "\x64\xc4" }  },
-      /* --- pixel bitmap for cmr100 char#15 (noname) --- */
-      {  15, 3896,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          { 12,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf8\x47\x44\x44\x44\x44\xff\x47\x44\x44\x44\x44\x44"
-            "\x64\xc4" }  },
-      /* --- pixel bitmap for cmr100 char#16 (noname) --- */
-      {  16, 2668,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x93\xa4\x03" }  },
-      /* --- pixel bitmap for cmr100 char#17 (noname) --- */
-      {  17, 2687,                      /* character number, location */
-          6,-1,    -3,-1,     /* topleft row,col, and botleft row,col */
-          {  3,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x26\x49\x92\x03" }  },
-      /* --- pixel bitmap for cmr100 char#18 (noname) --- */
-      {  18, 3536,                      /* character number, location */
-         10, 1,     7, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x11\x01" }  },
-      /* --- pixel bitmap for cmr100 char#19 (noname) --- */
-      {  19, 3549,                      /* character number, location */
-         10, 2,     7, 2,     /* topleft row,col, and botleft row,col */
-          {  3,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x54\x00" }  },
-      /* --- pixel bitmap for cmr100 char#20 (noname) --- */
-      {  20, 3562,                      /* character number, location */
-          9, 1,     8, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
-      /* --- pixel bitmap for cmr100 char#21 (noname) --- */
-      {  21, 3571,                      /* character number, location */
-         10, 1,     7, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x99\x06" }  },
+      /* --- pixel bitmap for cmr100 char#0 \Gamma --- */
+      {   0,51662,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 3,15, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\xf2\x21\x41\xf3\x21\x55\x36" }  },
+      /* --- pixel bitmap for cmr100 char#1 \Delta --- */
+      {   1,52527,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x30\xc0\x80\x04\x12\x84\x18\x26\xd0\xc0\xff\x03" }  },
+      /* --- pixel bitmap for cmr100 char#2 \Theta --- */
+      {   2,53612,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7c\x8c\x0d\x0e\x98\x33\xe0\x60\x63\x7c\x00" }  },
+      /* --- pixel bitmap for cmr100 char#3 \Lambda --- */
+      {   3,54508,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x30\xc0\x00\x03\x12\x48\x20\x41\x08\x21\xcf\x03" }  },
+      /* --- pixel bitmap for cmr100 char#4 \Xi --- */
+      {   4,55833,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x20\x40\xe4\x13\x01\x82\x7f" }  },
+      /* --- pixel bitmap for cmr100 char#5 \Pi --- */
+      {   5,56950,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\xf6\x11\x41\x13\x23" }  },
+      /* --- pixel bitmap for cmr100 char#6 \Sigma --- */
+      {   6,58027,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\xc3\x86\x8c\x08\x8c\x84\xc2\xff" }  },
+      /* --- pixel bitmap for cmr100 char#7 \Upsilon --- */
+      {   7,59081,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xc6\x52\x02\x80\x00\x01\x02\x04\x08\x7c\x00" }  },
+      /* --- pixel bitmap for cmr100 char#8 \Phi --- */
+      {   8,60071,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7c\x10\x3c\x91\x91\x91\x3c\x10\x7c" }  },
+      /* --- pixel bitmap for cmr100 char#9 \Psi --- */
+      {   9,61138,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7c\x20\x4c\x96\x24\xc9\x1a\x1f\x08\x7c\x00" }  },
+      /* --- pixel bitmap for cmr100 char#10 \Omega --- */
+      {  10,62247,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\x42\x81\x81\x81\x42\x42\xa5\xe7" }  },
+      /* --- pixel bitmap for cmr100 char#11 \ff --- */
+      {  11,105922,                     /* character number, location */
+         10,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          { 10,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x13\x41\x04\x11\xff\x11\x41\x04\x11\x44\x18\x03" }  },
+      /* --- pixel bitmap for cmr100 char#12 \fi --- */
+      {  12,107044,                     /* character number, location */
+         10,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          {  8,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x70\x08\x08\x08\x7f\x68\x48\x48\x48\xcc" }  },
+      /* --- pixel bitmap for cmr100 char#13 \fl --- */
+      {  13,108160,                     /* character number, location */
+         10,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          {  8,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x70\x48\x48\x48\x7f\x48\x48\x48\x48\xcc" }  },
+      /* --- pixel bitmap for cmr100 char#14 \ffi --- */
+      {  14,109727,                     /* character number, location */
+         10,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          { 12,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x87\x08\x88\x80\x08\xff\x87\x68\x88\x84\x48\x88"
+            "\xc4\xc8" }  },
+      /* --- pixel bitmap for cmr100 char#15 \ffl --- */
+      {  15,111304,                     /* character number, location */
+         10,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          { 12,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x87\x48\x88\x84\x48\xff\x87\x48\x88\x84\x48\x88"
+            "\xc4\xc8" }  },
+      /* --- pixel bitmap for cmr100 char#16 \imath --- */
+      {  16,75438,                      /* character number, location */
+          6, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  3,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x93\xa4\x03" }  },
+      /* --- pixel bitmap for cmr100 char#17 \jmath --- */
+      {  17,76102,                      /* character number, location */
+          6,-1,   -3,-1,      /* topleft row,col, and botleft row,col */
+          {  4,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x88\x88\x88\x07" }  },
+      /* --- pixel bitmap for cmr100 char#18 \gravesym --- */
+      {  18,97521,                      /* character number, location */
+         10, 2,    7, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x29" }  },
+      /* --- pixel bitmap for cmr100 char#19 \acutesym --- */
+      {  19,98064,                      /* character number, location */
+         10, 3,    7, 3,      /* topleft row,col, and botleft row,col */
+          {  2,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x16" }  },
+      /* --- pixel bitmap for cmr100 char#20 \checksym --- */
+      {  20,98663,                      /* character number, location */
+          9, 2,    7, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x15" }  },
+      /* --- pixel bitmap for cmr100 char#21 \brevesym --- */
+      {  21,99253,                      /* character number, location */
+         10, 1,    7, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x31\x3a" }  },
       /* --- pixel bitmap for cmr100 char#22 (noname) --- */
-      {  22, 3588,                      /* character number, location */
-          8, 1,     7, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
+      {  22,99807,                      /* character number, location */
+          8, 1,    7, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f" }  },
       /* --- pixel bitmap for cmr100 char#23 (noname) --- */
-      {  23, 3597,                      /* character number, location */
-         10, 3,     7, 3,     /* topleft row,col, and botleft row,col */
-          {  3,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xef\x01" }  },
+      {  23,100558,                     /* character number, location */
+         10, 3,    7, 3,      /* topleft row,col, and botleft row,col */
+          {  4,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x96\x06" }  },
       /* --- pixel bitmap for cmr100 char#24 (noname) --- */
-      {  24, 3612,                      /* character number, location */
-          0, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x76\x00" }  },
+      {  24,101220,                     /* character number, location */
+          0, 2,   -2, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3e" }  },
       /* --- pixel bitmap for cmr100 char#25 \ss --- */
-      {  25, 2712,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8c\x24\x49\x9b\x24\x8a\xe2\x06" }  },
+      {  25,77147,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\x91\x48\xb4\x11\x09\x85\xc2\x1d" }  },
       /* --- pixel bitmap for cmr100 char#26 \ae --- */
-      {  26, 2757,                      /* character number, location */
-          6, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x77\x88\xfe\x09\x99\x76" }  },
+      {  26,78442,                      /* character number, location */
+          6, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xef\x20\xfa\x8f\x10\xd3\x1d" }  },
       /* --- pixel bitmap for cmr100 char#27 \oe --- */
-      {  27, 2788,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 10,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xdc\x81\x18\x7e\x08\x73\x7a\x07" }  },
+      {  27,79514,                      /* character number, location */
+          6, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 11,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xdc\x03\x63\xf8\x43\x30\x47\xcf\x01" }  },
       /* --- pixel bitmap for cmr100 char#28 (noname) --- */
-      {  28, 2821,                      /* character number, location */
-          7, 0,    -1, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xa0\x97\xa7\xe5\xe9\x05" }  },
+      {  28,80280,                      /* character number, location */
+          7, 0,   -1, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x40\xde\x3c\xdb\x3c\x7b\x06" }  },
       /* --- pixel bitmap for cmr100 char#29 \AE --- */
-      {  29, 2856,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,     9, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xf8\x43\x11\xca\x50\x86\x1f\x92\x92\x94\x44\xf7\x03" }  },
-      /* --- pixel bitmap for cmr100 char#30 \OE --- */
-      {  30, 2911,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 12,     9, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xfc\x27\x46\x61\x16\x64\xc1\x13\xa4\x63\x6a\x46\xfc"
+      {  29,82006,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x87\x42\x28\x86\x62\xf8\x43\xa2\x24\x4a\x42\xe7"
             "\x07" }  },
+      /* --- pixel bitmap for cmr100 char#30 \OE --- */
+      {  30,83642,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfc\xcf\x08\x0d\xb1\x20\x16\x7c\x82\xe8\x10\x35\x42"
+            "\xfc\x0f" }  },
       /* --- pixel bitmap for cmr100 char#31 (noname) --- */
-      {  31, 2966,                      /* character number, location */
-         10, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    11, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x40\x3c\x62\x91\x91\x99\x89\x89\x46\x3c\x02" }  },
+      {  31,84560,                      /* character number, location */
+         10, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x80\xf8\x08\x0b\x19\x33\x62\xc6\x84\x86\xf8\x08\x00" }  },
       /* --- pixel bitmap for cmr100 char#32 (noname) --- */
-      {  32, 3644,                      /* character number, location */
-          5, 0,     4, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x07" }  },
+      {  32,101688,                     /* character number, location */
+          5, 0,    4, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
       /* --- pixel bitmap for cmr100 char#33 ! --- */
-      {  33, 3019,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  1,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f\x02" }  },
+      {  33,85153,                      /* character number, location */
+         10, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  1,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f\x02" }  },
       /* --- pixel bitmap for cmr100 char#34 " --- */
-      {  34, 3955,                      /* character number, location */
-         10, 0,     6, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x6d\x0b" }  },
+      {  34,112195,                     /* character number, location */
+         10, 0,    6, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x99\x99" }  },
       /* --- pixel bitmap for cmr100 char#35 # --- */
-      {  35, 3065,                      /* character number, location */
-         10, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x90\x20\x41\x82\xf4\x1f\x09\x09\x12\xff\x25\x48\x90"
-            "\x20\x01" }  },
+      {  35,86539,                      /* character number, location */
+         10, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   13, 3,29, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf3\x41\x31\x1a\x31\x31\x20\xf1\x21\x31\x3a\xf3\x11"
+            "\x31\x41" }  },
       /* --- pixel bitmap for cmr100 char#36 $ --- */
-      {  36, 2532,                      /* character number, location */
-         10, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          {  4,    11, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xd6\x5d\xc6\xdc\x6d\x04" }  },
+      {  36,71874,                      /* character number, location */
+         10, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          {  5,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xae\xd6\x62\x18\xad\xd5\x11" }  },
       /* --- pixel bitmap for cmr100 char#37 % --- */
-      {  37, 3120,                      /* character number, location */
-         10, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    11, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x82\xda\x54\x29\x21\x02\x12\x52\xa4\x44\x89\x0a\x02" }  },
+      {  37,87726,                      /* character number, location */
+         10, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\xe5\x93\x48\x12\x26\x40\x06\x25\x92\x44\x12\x29"
+            "\x18" }  },
       /* --- pixel bitmap for cmr100 char#38 & --- */
-      {  38, 2571,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0c\x12\x12\x1a\xee\x26\x27\x19\x91\xee" }  },
-      /* --- pixel bitmap for cmr100 char#39 (noname) --- */
-      {  39, 3187,                      /* character number, location */
-         10, 1,     6, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
+      {  38,73090,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0c\x24\x48\xd0\xe0\xde\xc8\x93\x14\x31\xdd\x01" }  },
+      /* --- pixel bitmap for cmr100 char#39 ' --- */
+      {  39,88316,                      /* character number, location */
+         10, 2,    6, 2,      /* topleft row,col, and botleft row,col */
+          {  1,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
       /* --- pixel bitmap for cmr100 char#40 ( --- */
-      {  40, 3202,                      /* character number, location */
-         10, 0,    -3, 0,     /* topleft row,col, and botleft row,col */
-          {  3,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x94\x92\x24\x89\x44" }  },
+      {  40,88860,                      /* character number, location */
+         10, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  3,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x94\x92\x24\x89\x44" }  },
       /* --- pixel bitmap for cmr100 char#41 ) --- */
-      {  41, 3235,                      /* character number, location */
-         10, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  3,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x91\x48\x92\xa4\x14" }  },
+      {  41,89423,                      /* character number, location */
+         10, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  3,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x91\x48\x92\xa4\x14" }  },
       /* --- pixel bitmap for cmr100 char#42 * --- */
-      {  42, 3268,                      /* character number, location */
-         10, 1,     4, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xd4\xff\x4d" }  },
+      {  42,90010,                      /* character number, location */
+         10, 1,    4, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xa4\x3a\x57\x09" }  },
       /* --- pixel bitmap for cmr100 char#43 + --- */
-      {  43, 3291,                      /* character number, location */
-          8, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x10\x10\x10\x10\xff\x10\x10\x10\x10" }  },
+      {  43,90660,                      /* character number, location */
+          8, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          {  9,    9, 3,11, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf3\x41\x49\xf3\x41\x43" }  },
       /* --- pixel bitmap for cmr100 char#44 (noname) --- */
-      {  44, 3316,                      /* character number, location */
-          1, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
+      {  44,91207,                      /* character number, location */
+          1, 2,   -3, 2,      /* topleft row,col, and botleft row,col */
+          {  1,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
       /* --- pixel bitmap for cmr100 char#45 (noname) --- */
-      {  45, 3978,                      /* character number, location */
-          4, 0,     3, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x07" }  },
+      {  45,112664,                     /* character number, location */
+          4, 0,    3, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
       /* --- pixel bitmap for cmr100 char#46 (noname) --- */
-      {  46, 3331,                      /* character number, location */
-          1, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x01" }  },
+      {  46,91642,                      /* character number, location */
+          1, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  1,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x01" }  },
       /* --- pixel bitmap for cmr100 char#47 / --- */
-      {  47, 3340,                      /* character number, location */
-         10, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  4,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x88\x48\x44\x22\x22\x11\x01" }  },
+      {  47,92120,                      /* character number, location */
+         10, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  5,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x10\x22\x84\x08\x21\x42\x88\x10\x00" }  },
       /* --- pixel bitmap for cmr100 char#48 0 --- */
-      {  48, 2216,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9e\x14\x86\x61\x18\x4a\x1e" }  },
+      {  48,62917,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\xc6\x18\x63\x8c\x0e" }  },
       /* --- pixel bitmap for cmr100 char#49 1 --- */
-      {  49, 2255,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x74\x44\x44\x44\x0e" }  },
+      {  49,63645,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe4\x10\x42\x08\x21\x1f" }  },
       /* --- pixel bitmap for cmr100 char#50 2 --- */
-      {  50, 2280,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x96\x89\x48\xa2\x0f" }  },
+      {  50,64578,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\x46\x08\x11\x91\x1f" }  },
       /* --- pixel bitmap for cmr100 char#51 3 --- */
-      {  51, 2311,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x26\x21\xe4\x60\x8c\x0e" }  },
+      {  51,65566,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\x42\xe8\x60\x8c\x0e" }  },
       /* --- pixel bitmap for cmr100 char#52 4 --- */
-      {  52, 2342,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x18\x46\x49\xd3\x0f\x41\x38" }  },
+      {  52,66442,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x18\x0c\x45\x32\xf9\x43\x20\x38" }  },
       /* --- pixel bitmap for cmr100 char#53 5 --- */
-      {  53, 2373,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1f\x71\x89\x99\x06" }  },
+      {  53,67430,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f\x84\x17\x61\x8c\x0e" }  },
       /* --- pixel bitmap for cmr100 char#54 6 --- */
-      {  54, 2404,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2c\x71\x99\x99\x06" }  },
+      {  54,68274,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5c\x84\x17\x63\x94\x0e" }  },
       /* --- pixel bitmap for cmr100 char#55 7 --- */
-      {  55, 2437,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f\x22\x42\x84\x10\x02" }  },
+      {  55,69122,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7f\x08\x21\x08\x41\x10\x04" }  },
       /* --- pixel bitmap for cmr100 char#56 8 --- */
-      {  56, 2464,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x96\x69\x96\x99\x06" }  },
+      {  56,69996,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\x46\xe5\x62\x8c\x0e" }  },
       /* --- pixel bitmap for cmr100 char#57 9 --- */
-      {  57, 2499,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x96\x99\xe9\x48\x03" }  },
+      {  57,70846,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\xc5\x18\x3d\x44\x07" }  },
       /* --- pixel bitmap for cmr100 char#58 : --- */
-      {  58, 3373,                      /* character number, location */
-          6, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x21" }  },
+      {  58,92666,                      /* character number, location */
+          6, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  1,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x21" }  },
       /* --- pixel bitmap for cmr100 char#59 ; --- */
-      {  59, 3386,                      /* character number, location */
-          6, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe1\x01" }  },
+      {  59,93299,                      /* character number, location */
+          6, 2,   -3, 2,      /* topleft row,col, and botleft row,col */
+          {  1,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe1\x01" }  },
       /* --- pixel bitmap for cmr100 char#60 (noname) --- */
-      {  60, 3042,                      /* character number, location */
-          7, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  1,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf1\x03" }  },
+      {  60,85729,                      /* character number, location */
+          7, 2,   -3, 2,      /* topleft row,col, and botleft row,col */
+          {  1,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x03" }  },
       /* --- pixel bitmap for cmr100 char#61 = --- */
-      {  61, 3405,                      /* character number, location */
-          6, 1,     1, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x00\x00\x00\xff" }  },
+      {  61,93943,                      /* character number, location */
+          6, 1,    1, 1,      /* topleft row,col, and botleft row,col */
+          {  9,    5, 3, 6, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09\xf2\x99" }  },
       /* --- pixel bitmap for cmr100 char#62 (noname) --- */
-      {  62, 2643,                      /* character number, location */
-          7, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  4,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x02\x00\x22\x12\x69" }  },
-      /* --- pixel bitmap for cmr100 char#63 (noname) --- */
-      {  63, 2618,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x96\x48\x22\x00\x20" }  },
-      /* --- pixel bitmap for cmr100 char#64 (noname) --- */
-      {  64, 3418,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3c\x42\x7e\xe7\xc3\xc3\xe7\xfe\x02\xfc" }  },
+      {  62,74897,                      /* character number, location */
+          7, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  5,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x00\x40\x88\x08\xd1\x01" }  },
+      /* --- pixel bitmap for cmr100 char#63 ? --- */
+      {  63,73999,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\x42\x44\x08\x00\x80\x00" }  },
+      /* --- pixel bitmap for cmr100 char#64 @ --- */
+      {  64,95087,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x38\x8c\xe9\x2a\x5a\xb4\x68\x51\x7d\x06\xf0\x03" }  },
       /* --- pixel bitmap for cmr100 char#65 A --- */
-      {  65,   35,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,     9, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x10\x20\xa0\x40\x81\x82\x0f\x11\x22\xef\x01" }  },
+      {  65, 1000,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x30\xc0\x00\x03\x12\x48\xe0\x41\x08\x21\xcf\x03" }  },
       /* --- pixel bitmap for cmr100 char#66 B --- */
-      {  66,   72,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f\xa1\x50\xec\x13\x0a\x85\x3f" }  },
+      {  66, 2276,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7f\xc2\x82\xc2\x7e\x82\x82\xc2\x7f" }  },
       /* --- pixel bitmap for cmr100 char#67 C --- */
-      {  67,  109,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7c\x61\x30\x10\x08\x04\x85\x3c" }  },
+      {  67, 3151,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbc\xc2\x82\x01\x01\x01\x82\x82\x7c" }  },
       /* --- pixel bitmap for cmr100 char#68 D --- */
-      {  68,  142,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f\x42\x82\x82\x82\x82\x82\x42\x3f" }  },
+      {  68, 4209,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    9, 3,21, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x41\x51\x10\xf4\x21\x61\x21\x51\x18\x21" }  },
       /* --- pixel bitmap for cmr100 char#69 E --- */
-      {  69,  181,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7f\x42\x62\x62\x3e\xa2\xa2\xc2\xff" }  },
+      {  69, 5552,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7f\x42\x52\x52\x1e\x92\x92\x42\x7f" }  },
       /* --- pixel bitmap for cmr100 char#70 F --- */
-      {  70,  222,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xbf\x28\xcb\x9e\x24\x09\x0f" }  },
+      {  70, 6759,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7f\xa1\x54\xea\x91\x48\x04\x0f" }  },
       /* --- pixel bitmap for cmr100 char#71 G --- */
-      {  71,  257,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,     9, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\xbc\x84\x09\x0a\x10\x3e\x90\x20\x41\xfc\x00" }  },
+      {  71, 7882,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbc\x84\x09\x0a\x10\x3e\x90\x20\x41\xfc\x00" }  },
       /* --- pixel bitmap for cmr100 char#72 H --- */
-      {  72,  296,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x77\x91\x48\xe4\x13\x89\x44\x77" }  },
+      {  72, 8999,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe7\x42\x42\x42\x7e\x42\x42\x42\xe7" }  },
       /* --- pixel bitmap for cmr100 char#73 I --- */
-      {  73,  337,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x97\x24\x49\x07" }  },
+      {  73, 9620,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    9, 3, 8, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05\xf6\x21\x25" }  },
       /* --- pixel bitmap for cmr100 char#74 J --- */
-      {  74,  362,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1e\x21\x84\x10\x4a\x07" }  },
+      {  74,10380,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1e\x21\x84\x10\x4a\x07" }  },
       /* --- pixel bitmap for cmr100 char#75 K --- */
-      {  75,  389,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,     9, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\xf7\x64\x48\x50\x60\xc1\x84\x08\x21\xc7\x01" }  },
+      {  75,11511,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xdf\x13\x43\x06\x0d\x3c\x30\x41\x04\x21\xdf\x03" }  },
       /* --- pixel bitmap for cmr100 char#76 L --- */
-      {  76,  432,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8f\x20\x08\x82\x28\xca\x3f" }  },
+      {  76,12404,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\x04\x04\x04\x04\x84\x84\xc4\xff" }  },
       /* --- pixel bitmap for cmr100 char#77 M --- */
-      {  77,  463,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,     9, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x87\x1b\x66\x98\x52\x4a\x29\x25\x93\x4c\xb7\x03" }  },
+      {  77,13636,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 13,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\x9e\xc1\x30\x18\x8a\x42\x51\x48\x09\x29\x21\x25"
+            "\x5f\x1f" }  },
       /* --- pixel bitmap for cmr100 char#78 N --- */
-      {  78,  524,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x73\x93\x49\xa5\x52\xc9\x64\x27" }  },
+      {  78,14698,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe3\x46\x46\x4a\x5a\x52\x62\x62\x47" }  },
       /* --- pixel bitmap for cmr100 char#79 O --- */
-      {  79,  573,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3c\x42\x81\x81\x81\x81\x81\x42\x3c" }  },
+      {  79,15501,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7c\x8c\x05\x0c\x18\x30\xe0\x60\x63\x7c\x00" }  },
       /* --- pixel bitmap for cmr100 char#80 P --- */
-      {  80,  612,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f\xa1\x50\xe8\x13\x08\x04\x07" }  },
+      {  80,16558,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f\xa1\x50\xe8\x13\x08\x04\x07" }  },
       /* --- pixel bitmap for cmr100 char#81 Q --- */
-      {  81,  643,                      /* character number, location */
-          9, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    12, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x3c\x42\x81\x81\x81\x81\x81\x5a\x3c\x00\x20\xc0" }  },
+      {  81,17531,                      /* character number, location */
+          9, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7c\x8c\x0d\x0e\x18\x30\xe0\x60\x6f\x7c\x00\x00\x01"
+            "\x04" }  },
       /* --- pixel bitmap for cmr100 char#82 R --- */
-      {  82,  690,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1f\x22\x22\x22\x1e\x22\x22\x22\xe7" }  },
+      {  82,18764,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f\x84\x08\x11\xe2\x43\x84\x08\x11\xe7\x01" }  },
       /* --- pixel bitmap for cmr100 char#83 S --- */
-      {  83,  729,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3e\x86\xe1\x20\x8c\x0f" }  },
+      {  83,19757,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7e\x18\x0c\x1c\x08\x86\x1f" }  },
       /* --- pixel bitmap for cmr100 char#84 T --- */
-      {  84,  758,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,     9, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\xff\x23\x46\x8c\x08\x01\x02\x04\x08\x7c\x00" }  },
+      {  84,20785,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    9, 3,19, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0a\x0f\x21\x41\x31\xf3\x51\x40\x35\x21" }  },
       /* --- pixel bitmap for cmr100 char#85 U --- */
-      {  85,  795,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x77\x91\x48\x24\x12\x89\x44\x1c" }  },
+      {  85,21725,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    9, 3,15, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03\x23\xf6\x11\x41\x10\x24\x20" }  },
       /* --- pixel bitmap for cmr100 char#86 V --- */
-      {  86,  836,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,     9, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\xc7\x89\x10\x21\x82\x02\x05\x0a\x08\x10\x00" }  },
+      {  86,22663,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xcf\x13\x42\x08\x12\x48\x20\x01\x03\x0c\x30\x00" }  },
       /* --- pixel bitmap for cmr100 char#87 W --- */
-      {  87,  875,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,     9, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe7\x9c\x88\x90\x12\x52\x42\x4a\x50\x05\xc6\xc0\x18"
-            "\x18\x03" }  },
+      {  87,24012,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 14,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xcf\x3d\x31\x42\x8c\x90\x24\x24\x09\x4a\x81\x61\x60"
+            "\x18\x10\x02" }  },
       /* --- pixel bitmap for cmr100 char#88 X --- */
-      {  88,  938,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,     9, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\xef\x48\xa0\xc0\x00\x01\x05\x0a\x22\xc7\x01" }  },
+      {  88,25057,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xcf\x31\x81\x06\x0c\x30\xc0\x80\x04\x21\xcf\x03" }  },
       /* --- pixel bitmap for cmr100 char#89 Y --- */
-      {  89,  977,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,     9, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\xc7\x89\x90\x41\x81\x01\x02\x04\x08\x38\x00" }  },
+      {  89,26149,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xcf\x13\x82\x0c\x14\x30\x80\x00\x02\x08\x70\x00" }  },
       /* --- pixel bitmap for cmr100 char#90 Z --- */
-      {  90, 1010,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7f\xa7\x46\xac\x9c\x1f" }  },
+      {  90,27142,                      /* character number, location */
+          9, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x14\x25\x0c\x29\xca\x3f" }  },
       /* --- pixel bitmap for cmr100 char#91 [ --- */
-      {  91, 3455,                      /* character number, location */
-         10, 0,    -3, 0,     /* topleft row,col, and botleft row,col */
-          {  3,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x4f\x92\x24\x49\x72" }  },
+      {  91,95760,                      /* character number, location */
+         10, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  3,   13, 3, 8, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03\x0f\xa1\x23" }  },
       /* --- pixel bitmap for cmr100 char#92 (noname) --- */
-      {  92, 3987,                      /* character number, location */
-         10, 3,     6, 3,     /* topleft row,col, and botleft row,col */
-          {  3,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x6d\x0b" }  },
+      {  92,113505,                     /* character number, location */
+         10, 3,    6, 3,      /* topleft row,col, and botleft row,col */
+          {  4,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x99\x99" }  },
       /* --- pixel bitmap for cmr100 char#93 ] --- */
-      {  93, 3488,                      /* character number, location */
-         10, 0,    -3, 0,     /* topleft row,col, and botleft row,col */
-          {  3,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x27\x49\x92\x24\x79" }  },
+      {  93,96408,                      /* character number, location */
+         10, 0,   -3, 0,      /* topleft row,col, and botleft row,col */
+          {  3,   13, 3, 8, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03\xfa\x21\x03" }  },
       /* --- pixel bitmap for cmr100 char#94 \^ --- */
-      {  94, 3653,                      /* character number, location */
-         10, 1,     8, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x96" }  },
+      {  94,102285,                     /* character number, location */
+         10, 2,    8, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2a" }  },
       /* --- pixel bitmap for cmr100 char#95 (noname) --- */
-      {  95, 3666,                      /* character number, location */
-         10, 1,     9, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x01" }  },
+      {  95,102722,                     /* character number, location */
+         10, 2,    9, 2,      /* topleft row,col, and botleft row,col */
+          {  1,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x01" }  },
       /* --- pixel bitmap for cmr100 char#96 (noname) --- */
-      {  96, 3521,                      /* character number, location */
-         10, 1,     6, 1,     /* topleft row,col, and botleft row,col */
-          {  1,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
+      {  96,96976,                      /* character number, location */
+         10, 2,    6, 2,      /* topleft row,col, and botleft row,col */
+          {  1,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
       /* --- pixel bitmap for cmr100 char#97 a --- */
-      {  97, 1047,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0e\xe4\x45\xb1\x0f" }  },
+      {  97,28238,                      /* character number, location */
+          6, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\xe4\x45\xb1\x0f" }  },
       /* --- pixel bitmap for cmr100 char#98 b --- */
-      {  98, 1070,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x03\x81\x40\xe0\x11\x09\x85\x22\x0f" }  },
+      {  98,29194,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x83\x20\x08\x9e\x28\x8a\xa2\x07" }  },
       /* --- pixel bitmap for cmr100 char#99 c --- */
-      {  99, 1105,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3e\x84\x10\x1d" }  },
+      {  99,29921,                      /* character number, location */
+          6, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\x84\x10\x1d" }  },
       /* --- pixel bitmap for cmr100 char#100 d --- */
-      { 100, 1126,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x30\x10\x08\xc4\x13\x85\x42\x22\x3e" }  },
+      { 100,30876,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x18\x04\x41\x5e\x14\x45\x91\x0f" }  },
       /* --- pixel bitmap for cmr100 char#101 e --- */
-      { 101, 1161,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\xfe\x10\x1d" }  },
+      { 101,31588,                      /* character number, location */
+          6, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5e\xf8\x07\x23\x07" }  },
       /* --- pixel bitmap for cmr100 char#102 f --- */
-      { 102, 1184,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x98\x10\xf2\x08\x21\xc4\x01" }  },
+      { 102,32397,                      /* character number, location */
+         10,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          {  6,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x38\x41\x10\x1f\x41\x10\x84\x03" }  },
       /* --- pixel bitmap for cmr100 char#103 g --- */
-      { 103, 1211,                      /* character number, location */
-          6, 0,    -4, 0,     /* topleft row,col, and botleft row,col */
-          {  6,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xbc\x24\x39\x82\x17\x86\xa1\x07" }  },
+      { 103,33592,                      /* character number, location */
+          6, 0,   -4, 0,      /* topleft row,col, and botleft row,col */
+          {  7,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7c\x89\xc4\x21\xf0\x05\x83\x63\x0e" }  },
       /* --- pixel bitmap for cmr100 char#104 h --- */
-      { 104, 1248,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x03\x81\x40\xe0\x11\x89\x44\xa2\x3b" }  },
+      { 104,34521,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x83\x20\x08\x8e\x24\x49\xd2\x0d" }  },
       /* --- pixel bitmap for cmr100 char#105 i --- */
-      { 105, 1285,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x02\x30\x49\x3a" }  },
+      { 105,35164,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  3,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x02\x30\x49\x3a" }  },
       /* --- pixel bitmap for cmr100 char#106 j --- */
-      { 106, 1308,                      /* character number, location */
-         10,-1,    -3,-1,     /* topleft row,col, and botleft row,col */
-          {  3,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x04\x60\x92\x24\x39" }  },
+      { 106,35922,                      /* character number, location */
+         10,-1,   -3,-1,      /* topleft row,col, and botleft row,col */
+          {  4,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x00\x8c\x88\x88\x88\x07" }  },
       /* --- pixel bitmap for cmr100 char#107 k --- */
-      { 107, 1337,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x83\x20\x08\xbe\x62\x28\xca\x0c" }  },
+      { 107,36998,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03\x81\x40\xa0\x57\x38\x14\x92\x3b" }  },
       /* --- pixel bitmap for cmr100 char#108 l --- */
-      { 108, 1372,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x93\x24\x49\x3a" }  },
+      { 108,37547,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  3,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x93\x24\x49\x3a" }  },
       /* --- pixel bitmap for cmr100 char#109 m --- */
-      { 109, 1399,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xdf\x11\x91\x88\x44\x24\xa2\xbb\x03" }  },
+      { 109,38846,                      /* character number, location */
+          6, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xdf\x11\x91\x88\x44\x24\xa2\x33\x03" }  },
       /* --- pixel bitmap for cmr100 char#110 n --- */
-      { 110, 1440,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1f\x91\x48\x24\xba\x03" }  },
+      { 110,39779,                      /* character number, location */
+          6, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8f\x24\x49\xd2\x0d" }  },
       /* --- pixel bitmap for cmr100 char#111 o --- */
-      { 111, 1469,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5e\x18\x86\xa1\x07" }  },
+      { 111,40432,                      /* character number, location */
+          6, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9c\x71\x30\x38\xe6\x00" }  },
       /* --- pixel bitmap for cmr100 char#112 p --- */
-      { 112, 1496,                      /* character number, location */
-          6, 0,    -3, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1f\x91\x50\x28\xf2\x08\x04\x07" }  },
+      { 112,41456,                      /* character number, location */
+          6, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9f\x28\x8a\xa2\x27\x08\x07" }  },
       /* --- pixel bitmap for cmr100 char#113 q --- */
-      { 113, 1529,                      /* character number, location */
-          6, 0,    -3, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5e\x14\x45\x91\x07\x41\x38" }  },
+      { 113,42438,                      /* character number, location */
+          6, 0,   -3, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\x51\x28\x24\xe3\x81\x40\x70" }  },
       /* --- pixel bitmap for cmr100 char#114 r --- */
-      { 114, 1562,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2f\x22\x72" }  },
+      { 114,43249,                      /* character number, location */
+          6, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5f\x08\x21\x0e" }  },
       /* --- pixel bitmap for cmr100 char#115 s --- */
-      { 115, 1581,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x56\xc7\x79" }  },
+      { 115,44144,                      /* character number, location */
+          6, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\x19\x1c\x1f" }  },
       /* --- pixel bitmap for cmr100 char#116 t --- */
-      { 116, 1604,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x92\x2e\xd9\x06" }  },
+      { 116,44927,                      /* character number, location */
+          9, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x22\xf2\x22\xaa\x04" }  },
       /* --- pixel bitmap for cmr100 char#117 u --- */
-      { 117, 1629,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x33\x91\x48\x24\xe2\x03" }  },
+      { 117,45812,                      /* character number, location */
+          6, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9b\x24\x49\x12\x0f" }  },
       /* --- pixel bitmap for cmr100 char#118 v --- */
-      { 118, 1658,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xb3\xc4\x30\x0c\x03" }  },
+      { 118,46660,                      /* character number, location */
+          6, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x77\x11\x85\x42\x41\x00" }  },
       /* --- pixel bitmap for cmr100 char#119 w --- */
-      { 119, 1681,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x93\x55\xa9\x62\xc3\x86\x08" }  },
+      { 119,47871,                      /* character number, location */
+          6, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x37\xcb\xc4\x0c\x33\xcc\x30\x03" }  },
       /* --- pixel bitmap for cmr100 char#120 x --- */
-      { 120, 1722,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x33\xc3\x30\xcc\x0c" }  },
+      { 120,48812,                      /* character number, location */
+          6, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x77\x0a\x02\x41\xb9\x03" }  },
       /* --- pixel bitmap for cmr100 char#121 y --- */
-      { 121, 1745,                      /* character number, location */
-          6, 0,    -3, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xb3\xc4\x30\x0c\x43\x10\x03" }  },
+      { 121,49861,                      /* character number, location */
+          6, 0,   -3, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x77\x19\x85\xc2\x41\x20\x08\x07" }  },
       /* --- pixel bitmap for cmr100 char#122 z --- */
-      { 122, 1774,                      /* character number, location */
-          6, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f\x35\x2b\x3f" }  },
+      { 122,50776,                      /* character number, location */
+          6, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5e\x39\x2b\x3f" }  },
       /* --- pixel bitmap for cmr100 char#123 (noname) --- */
-      { 123, 4010,                      /* character number, location */
-          4, 0,     3, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f" }  },
+      { 123,114079,                     /* character number, location */
+          4, 0,    3, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7f" }  },
       /* --- pixel bitmap for cmr100 char#124 (noname) --- */
-      { 124, 4019,                      /* character number, location */
-          4, 0,     3, 0,     /* topleft row,col, and botleft row,col */
-          { 13,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x1f" }  },
+      { 124,114873,                     /* character number, location */
+          4, 0,    3, 0,      /* topleft row,col, and botleft row,col */
+          { 14,    1, 3, 2, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e" }  },
       /* --- pixel bitmap for cmr100 char#125 (noname) --- */
-      { 125, 3675,                      /* character number, location */
-         10, 1,     7, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xaa\x05" }  },
+      { 125,103371,                     /* character number, location */
+         10, 2,    7, 2,      /* topleft row,col, and botleft row,col */
+          {  4,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5a\x05" }  },
       /* --- pixel bitmap for cmr100 char#126 \~ --- */
-      { 126, 3694,                      /* character number, location */
-          9, 1,     7, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5a" }  },
+      { 126,104025,                     /* character number, location */
+          9, 1,    7, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xb6\x01" }  },
       /* --- pixel bitmap for cmr100 char#127 (noname) --- */
-      { 127, 3709,                      /* character number, location */
-         10, 1,     9, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x09" }  },
+      { 127,104678,                     /* character number, location */
+         10, 2,    9, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05" }  },
       /* --- trailer  --- */
-      { -99, -999,  0,0,0,0, { 0,0,0, (pixbyte *)"\0" }  }
+      { -99, -999,  0,0,0,0, { 0,0,0,0, (pixbyte *)"\0" }  }
    } ;
 
 
-/* --- size=2 ---
- * mf '\mode=lview; input cmr10'      gives .gf118
- * ----------------------------------------------- */
+/* --- size=2 for .118gf ---
+ * mf '\mode=preview; mag=magstep(-16.96645799324018499600); input cmr10'
+ * --------------------------------------------------------------------- */
 /* --- fontdef for cmr118 --- */
 static	chardef  cmr118[] =
    {
-      /* --- pixel bitmap for cmr118 char#0 (noname) --- */
-      {   0, 2023,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x84\x84\x84\x04\x04\x04\x04\x04\x1f" }  },
-      /* --- pixel bitmap for cmr118 char#1 (noname) --- */
-      {   1, 2056,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x20\x80\x02\x14\x10\x81\x08\x82\x10\x44\x40\x03\xfe"
+      /* --- pixel bitmap for cmr118 char#0 \Gamma --- */
+      {   0,52128,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,   11, 3,19, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09\x21\x42\xf1\x21\x51\xf5\x21\x65\x41" }  },
+      /* --- pixel bitmap for cmr118 char#1 \Delta --- */
+      {   1,52997,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x60\x00\x06\x90\x00\x09\x08\x81\x10\x04\x42\x20\x02"
+            "\x34\xc0\xff\x0f" }  },
+      /* --- pixel bitmap for cmr118 char#2 \Theta --- */
+      {   2,54090,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x20\x88\x80\x02\x98\xc8\x7c\x26\x32\x80\x02\x22"
+            "\x08\x3e\x00" }  },
+      /* --- pixel bitmap for cmr118 char#3 \Lambda --- */
+      {   3,55002,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x20\x00\x01\x14\xa0\x00\x05\x44\x20\x02\x11\x04\x21"
+            "\xc8\xe3\x01" }  },
+      /* --- pixel bitmap for cmr118 char#4 \Xi --- */
+      {   4,56337,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x03\x02\x00\x20\xc8\x9f\x20\x00\x01\x03\xfe\x07" }  },
+      /* --- pixel bitmap for cmr118 char#5 \Pi --- */
+      {   5,57458,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0c\xf8\x21\x61\x25\x25" }  },
+      /* --- pixel bitmap for cmr118 char#6 \Sigma --- */
+      {   6,58543,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x0f\x6c\x20\x81\x08\x40\x80\x00\x83\x04\x0a\xfc"
             "\x3f" }  },
-      /* --- pixel bitmap for cmr118 char#2 (noname) --- */
-      {   2, 2099,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    10, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x78\x18\x26\x50\x80\x49\x26\x19\xa0\x40\x86\xe1\x01" }  },
-      /* --- pixel bitmap for cmr118 char#3 (noname) --- */
-      {   3, 2150,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 10,    10, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x30\xc0\x00\x03\x12\x48\x20\x81\x04\x21\x84\x3c\x0f" }  },
-      /* --- pixel bitmap for cmr118 char#4 (noname) --- */
-      {   4, 2191,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x81\x00\x42\x7e\x42\x00\x00\x81\xff" }  },
-      /* --- pixel bitmap for cmr118 char#5 (noname) --- */
-      {   5, 2224,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x27\x08\x41\x08\x42\x10\x82\x10\x84\x20\x04\xf9"
-            "\x3e" }  },
-      /* --- pixel bitmap for cmr118 char#6 (noname) --- */
-      {   6, 2269,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    10, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\xff\x07\x1b\x24\x88\x00\x01\x43\x82\x82\xff\x03" }  },
-      /* --- pixel bitmap for cmr118 char#7 (noname) --- */
-      {   7, 2308,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    10, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xce\x45\x08\x02\x08\x20\x80\x00\x02\x08\x20\xe0\x03" }  },
-      /* --- pixel bitmap for cmr118 char#8 (noname) --- */
-      {   8, 2341,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    10, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x7c\x20\xf0\x91\x14\x31\xa2\x24\x3e\x10\xf8\x00" }  },
-      /* --- pixel bitmap for cmr118 char#9 (noname) --- */
-      {   9, 2384,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    10, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xf8\x80\x30\xb2\x48\x22\x89\x44\x0a\x1e\x20\xe0\x03" }  },
-      /* --- pixel bitmap for cmr118 char#10 (noname) --- */
-      {  10, 2431,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    10, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x7c\x04\x05\x0c\x18\x30\xa0\x20\x41\x45\x8d\x01" }  },
-      /* --- pixel bitmap for cmr118 char#11 (noname) --- */
-      {  11, 4144,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x47\x04\x22\xfe\x87\x08\x44\x20\x02\x11\x88\x60"
+      /* --- pixel bitmap for cmr118 char#7 \Upsilon --- */
+      {   7,59601,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 3,25, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x13\x33\x11\x31\x11\x31\xf1\xb0\xf5\x51\x50\x35\x31" }  },
+      /* --- pixel bitmap for cmr118 char#8 \Phi --- */
+      {   8,60593,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x80\x00\x02\x3f\x23\x87\x38\x32\x3f\x20\x80\x80"
+            "\x0f" }  },
+      /* --- pixel bitmap for cmr118 char#9 \Psi --- */
+      {   9,61664,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x00\xc1\x88\x45\x24\x22\x11\x91\x04\x1f\x20\x00"
+            "\x01\x3e\x00" }  },
+      /* --- pixel bitmap for cmr118 char#10 \Omega --- */
+      {  10,62781,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfc\x08\x14\x60\x80\x01\x06\x28\x10\x21\x85\x2a\xe5"
             "\x1c" }  },
-      /* --- pixel bitmap for cmr118 char#12 (noname) --- */
-      {  12, 4187,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  9,    10, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\xf8\x08\x10\xf8\x47\x8c\x10\x21\x42\x84\x0c\x03" }  },
-      /* --- pixel bitmap for cmr118 char#13 (noname) --- */
-      {  13, 4226,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  9,    10, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\xf8\x08\x11\xfa\x47\x88\x10\x21\x42\x84\x9c\x03" }  },
-      /* --- pixel bitmap for cmr118 char#14 (noname) --- */
-      {  14, 4269,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          { 13,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x0f\x11\x20\x82\xff\x87\xc8\x10\x11\x22\x42\x44"
-            "\x88\x88\x11\x03" }  },
-      /* --- pixel bitmap for cmr118 char#15 (noname) --- */
-      {  15, 4324,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          { 13,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x0f\x11\x21\xa2\xff\x87\x88\x10\x11\x22\x42\x44"
-            "\x88\x88\x11\x03" }  },
-      /* --- pixel bitmap for cmr118 char#16 (noname) --- */
-      {  16, 2984,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x93\x24\x1d" }  },
-      /* --- pixel bitmap for cmr118 char#17 (noname) --- */
-      {  17, 3005,                      /* character number, location */
-          7,-1,    -3,-1,     /* topleft row,col, and botleft row,col */
-          {  4,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8c\x88\x88\x88\x78" }  },
-      /* --- pixel bitmap for cmr118 char#18 (noname) --- */
-      {  18, 3964,                      /* character number, location */
-         10, 2,     8, 2,     /* topleft row,col, and botleft row,col */
-          {  2,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x09" }  },
-      /* --- pixel bitmap for cmr118 char#19 (noname) --- */
-      {  19, 3975,                      /* character number, location */
-         10, 3,     8, 3,     /* topleft row,col, and botleft row,col */
-          {  2,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x06" }  },
-      /* --- pixel bitmap for cmr118 char#20 (noname) --- */
-      {  20, 3986,                      /* character number, location */
-         10, 2,     8, 2,     /* topleft row,col, and botleft row,col */
-          {  3,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x15" }  },
-      /* --- pixel bitmap for cmr118 char#21 (noname) --- */
-      {  21, 3999,                      /* character number, location */
-         10, 1,     8, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xd1\x01" }  },
+      /* --- pixel bitmap for cmr118 char#11 \ff --- */
+      {  11,107078,                     /* character number, location */
+         11,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 3,31, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x57\x32\x31\x30\xf1\x31\x41\x3b\x10\xf4\x31\x41\x30"
+            "\x22\x43\x11" }  },
+      /* --- pixel bitmap for cmr118 char#12 \fi --- */
+      {  12,108204,                     /* character number, location */
+         11,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          {  9,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x10\x20\x40\xf0\x0f\x19\x22\x44\x88\x10\x31\x06" }  },
+      /* --- pixel bitmap for cmr118 char#13 \fl --- */
+      {  13,109324,                     /* character number, location */
+         11,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          {  9,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x10\x21\x42\xf4\x0f\x11\x22\x44\x88\x10\x31\x06" }  },
+      /* --- pixel bitmap for cmr118 char#14 \ffi --- */
+      {  14,110895,                     /* character number, location */
+         11,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          { 14,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe0\x1f\x46\x80\x10\x20\x04\xff\x1f\x42\x86\x10\x21"
+            "\x44\x08\x11\x42\xc4\x10\x03" }  },
+      /* --- pixel bitmap for cmr118 char#15 \ffl --- */
+      {  15,112478,                     /* character number, location */
+         11,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          { 14,   11, 3,38, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x58\x42\x31\x31\x10\xf1\x31\x41\x31\x1d\x10\xf4\x31"
+            "\x41\x31\x10\x23\x23\x13" }  },
+      /* --- pixel bitmap for cmr118 char#16 \imath --- */
+      {  16,76126,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  3,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x93\x24\x1d" }  },
+      /* --- pixel bitmap for cmr118 char#17 \jmath --- */
+      {  17,76792,                      /* character number, location */
+          7,-1,   -3,-1,      /* topleft row,col, and botleft row,col */
+          {  4,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x88\x88\x88\x78" }  },
+      /* --- pixel bitmap for cmr118 char#18 \gravesym --- */
+      {  18,98621,                      /* character number, location */
+         11, 2,    8, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x11\x01" }  },
+      /* --- pixel bitmap for cmr118 char#19 \acutesym --- */
+      {  19,99164,                      /* character number, location */
+         11, 3,    8, 3,      /* topleft row,col, and botleft row,col */
+          {  3,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x54\x00" }  },
+      /* --- pixel bitmap for cmr118 char#20 \checksym --- */
+      {  20,99763,                      /* character number, location */
+         10, 2,    9, 2,      /* topleft row,col, and botleft row,col */
+          {  4,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
+      /* --- pixel bitmap for cmr118 char#21 \brevesym --- */
+      {  21,100349,                     /* character number, location */
+         11, 1,    8, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe1\xec\x01" }  },
       /* --- pixel bitmap for cmr118 char#22 (noname) --- */
-      {  22, 4012,                      /* character number, location */
-          9, 1,     8, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1f" }  },
+      {  22,100903,                     /* character number, location */
+          9, 1,    8, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f" }  },
       /* --- pixel bitmap for cmr118 char#23 (noname) --- */
-      {  23, 4021,                      /* character number, location */
-         10, 4,     8, 4,     /* topleft row,col, and botleft row,col */
-          {  3,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f" }  },
+      {  23,101654,                     /* character number, location */
+         11, 4,    8, 4,      /* topleft row,col, and botleft row,col */
+          {  4,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x96\x06" }  },
       /* --- pixel bitmap for cmr118 char#24 (noname) --- */
-      {  24, 4032,                      /* character number, location */
-          0, 2,    -3, 2,     /* topleft row,col, and botleft row,col */
-          {  3,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe2\x01" }  },
+      {  24,102316,                     /* character number, location */
+          0, 2,   -3, 2,      /* topleft row,col, and botleft row,col */
+          {  4,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x86\x0f" }  },
       /* --- pixel bitmap for cmr118 char#25 \ss --- */
-      {  25, 3032,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1c\x91\x68\x23\x12\x0a\x85\xc2\x1d" }  },
+      {  25,77839,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\x91\x48\xb4\x11\x09\x85\x42\xe1\x0e" }  },
       /* --- pixel bitmap for cmr118 char#26 \ae --- */
-      {  26, 3077,                      /* character number, location */
-          7, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xcf\xc1\xc8\xff\x04\x11\xc4\xe8\x1c" }  },
+      {  26,79138,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9f\x03\x23\xff\x45\x10\x82\x30\x7a\x0e" }  },
       /* --- pixel bitmap for cmr118 char#27 \oe --- */
-      {  27, 3112,                      /* character number, location */
-          7, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8c\x93\x62\xf8\x43\x10\x02\x29\x32\x0e" }  },
+      {  27,80214,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x27\xc5\xe1\x1f\x02\x21\x20\x85\x8c\x07" }  },
       /* --- pixel bitmap for cmr118 char#28 (noname) --- */
-      {  28, 3155,                      /* character number, location */
-          8, 0,    -1, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x40\x9e\x2c\x9a\x2c\x9a\x3c\x01" }  },
+      {  28,80990,                      /* character number, location */
+          9, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x20\xe4\x69\x69\x5b\x5a\x9e\x10\x00" }  },
       /* --- pixel bitmap for cmr118 char#29 \AE --- */
-      {  29, 3196,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 14,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x1f\x14\x06\x05\x41\x51\x48\x04\xfe\x81\x44\x12"
-            "\x91\x44\xd0\xfb\x07" }  },
+      {  29,82726,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 15,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x3f\x50\x18\x28\x08\x12\x05\x89\x80\x7f\x20\x22"
+            "\x11\x91\x88\x20\x42\xd0\xf3\x0f" }  },
       /* --- pixel bitmap for cmr118 char#30 \OE --- */
-      {  30, 3259,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 15,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf8\x3f\x42\x98\x20\x2a\x10\x15\xf8\x08\x44\x04\x22"
-            "\x05\x81\x86\x20\xfc\x1f" }  },
+      {  30,84376,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x7f\x84\x61\x82\x41\x81\x51\x01\x11\x01\x1f\x01"
+            "\x91\x83\x91\x82\x41\x8c\x41\xf8\x7f" }  },
       /* --- pixel bitmap for cmr118 char#31 (noname) --- */
-      {  31, 3322,                      /* character number, location */
-         11, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x00\xe1\x63\x9c\x50\x21\x86\x18\x61\x84\x0a\x39\xc6"
-            "\x87\x00" }  },
+      {  31,85308,                      /* character number, location */
+         12, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x00\xc2\x0f\x61\x04\x15\xc4\x20\x86\x30\x82\x11\x54"
+            "\x10\x43\xf8\x21\x00" }  },
       /* --- pixel bitmap for cmr118 char#32 (noname) --- */
-      {  32, 4064,                      /* character number, location */
-          6, 0,     4, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1e" }  },
+      {  32,102812,                     /* character number, location */
+          6, 0,    5, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f" }  },
       /* --- pixel bitmap for cmr118 char#33 ! --- */
-      {  33, 3381,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  2,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x03\x0f" }  },
+      {  33,85939,                      /* character number, location */
+         11, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  2,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x0f\x3c" }  },
       /* --- pixel bitmap for cmr118 char#34 " --- */
-      {  34, 4383,                      /* character number, location */
-         10, 0,     5, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7b\x4b\x99\x00" }  },
+      {  34,113375,                     /* character number, location */
+         11, 1,    6, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7b\x4b\x99\x00" }  },
       /* --- pixel bitmap for cmr118 char#35 # --- */
-      {  35, 3429,                      /* character number, location */
-         10, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x20\x01\x09\x48\x20\xf1\x7f\x24\x20\x01\x12\xff\x47"
-            "\x02\x09\x48\x40\x02" }  },
+      {  35,87355,                      /* character number, location */
+         11, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   14, 3,31, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf3\x51\x31\x2c\xf2\x41\x31\x3c\xf1\x31\x31\x40\xf2"
+            "\x21\x31\x51" }  },
       /* --- pixel bitmap for cmr118 char#36 $ --- */
-      {  36, 2830,                      /* character number, location */
-         11, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xc4\xd5\x5a\x0c\xa3\xb5\x3a\x02" }  },
+      {  36,72494,                      /* character number, location */
+         12, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x88\x97\xa6\x89\xc2\xa1\x69\x9a\x39\x08" }  },
       /* --- pixel bitmap for cmr118 char#37 % --- */
-      {  37, 3484,                      /* character number, location */
-         11, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x06\x4a\x4c\x7e\x12\x91\x04\x13\x80\x0c\x92\x88\x24"
-            "\x24\x21\x05\x06" }  },
+      {  37,88546,                      /* character number, location */
+         12, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\xa4\x31\xf1\x12\x11\x91\xa0\x04\x4e\x07\x52\x90"
+            "\x88\x88\x88\x48\x50\x02\x07" }  },
       /* --- pixel bitmap for cmr118 char#38 & --- */
-      {  38, 2881,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    10, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x18\x90\x40\x02\xf5\x8c\x30\xb2\x44\x0c\x31\x3a\x07" }  },
-      /* --- pixel bitmap for cmr118 char#39 (noname) --- */
-      {  39, 3553,                      /* character number, location */
-         10, 1,     5, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xaf\x01" }  },
+      {  38,73718,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x18\x20\x01\x09\x68\xc0\x79\x86\x38\x22\x12\x71\x18"
+            "\xa3\xe7\x00" }  },
+      /* --- pixel bitmap for cmr118 char#39 ' --- */
+      {  39,89180,                      /* character number, location */
+         11, 2,    6, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xaf\x01" }  },
       /* --- pixel bitmap for cmr118 char#40 ( --- */
-      {  40, 3570,                      /* character number, location */
-         11, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          {  3,    15, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x94\x92\x24\x49\x22\x11" }  },
+      {  40,89726,                      /* character number, location */
+         12, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  4,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x48\x22\x11\x11\x11\x21\x42\x08" }  },
       /* --- pixel bitmap for cmr118 char#41 ) --- */
-      {  41, 3607,                      /* character number, location */
-         11, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          {  3,    15, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x91\x48\x92\x24\x29\x05" }  },
+      {  41,90293,                      /* character number, location */
+         12, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  4,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x21\x44\x88\x88\x88\x48\x24\x01" }  },
       /* --- pixel bitmap for cmr118 char#42 * --- */
-      {  42, 3644,                      /* character number, location */
-         11, 1,     4, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x84\x7c\xf2\x09\x01" }  },
+      {  42,90884,                      /* character number, location */
+         12, 1,    5, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\xb2\x33\x3b\x82\x00" }  },
       /* --- pixel bitmap for cmr118 char#43 + --- */
-      {  43, 3665,                      /* character number, location */
-          9, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    11, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x20\x80\x00\x02\x08\x20\xfc\x0f\x02\x08\x20\x80\x00"
-            "\x02" }  },
+      {  43,91532,                      /* character number, location */
+         10, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 3,11, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf4\x51\x5b\xf4\x51\x52" }  },
       /* --- pixel bitmap for cmr118 char#44 (noname) --- */
-      {  44, 3694,                      /* character number, location */
-          2, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xaf\x01" }  },
+      {  44,92109,                      /* character number, location */
+          2, 2,   -3, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xaf\x01" }  },
       /* --- pixel bitmap for cmr118 char#45 (noname) --- */
-      {  45, 4410,                      /* character number, location */
-          4, 0,     3, 0,     /* topleft row,col, and botleft row,col */
-          {  3,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x07" }  },
+      {  45,113848,                     /* character number, location */
+          4, 0,    3, 0,      /* topleft row,col, and botleft row,col */
+          {  4,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
       /* --- pixel bitmap for cmr118 char#46 (noname) --- */
-      {  46, 3711,                      /* character number, location */
-          2, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
+      {  46,92572,                      /* character number, location */
+          2, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
       /* --- pixel bitmap for cmr118 char#47 / --- */
-      {  47, 3722,                      /* character number, location */
-         11, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    15, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x10\x22\x84\x10\x21\x44\x08\x21\x42\x00" }  },
+      {  47,93052,                      /* character number, location */
+         12, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   16, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x20\x08\x41\x10\x82\x20\x04\x41\x08\x82\x10\x04" }  },
       /* --- pixel bitmap for cmr118 char#48 0 --- */
-      {  48, 2480,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\xc6\x18\x63\x8c\xd1\x01" }  },
+      {  48,63463,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x14\x86\x61\x18\x86\xa1\xc4\x00" }  },
       /* --- pixel bitmap for cmr118 char#49 1 --- */
-      {  49, 2519,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe4\x10\x42\x08\x21\xe4\x03" }  },
+      {  49,64199,                      /* character number, location */
+         11, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  5,   11, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x21\x23\x20\xf7\x21\x25" }  },
       /* --- pixel bitmap for cmr118 char#50 2 --- */
-      {  50, 2546,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\x46\x08\x11\x23\xf2\x03" }  },
+      {  50,65136,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x4e\x14\x86\x20\x04\x21\xa4\xf8\x03" }  },
       /* --- pixel bitmap for cmr118 char#51 3 --- */
-      {  51, 2579,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\x46\xe8\x20\x8c\xd1\x01" }  },
+      {  51,66132,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5e\x18\x82\x10\x07\x81\x61\xe4\x00" }  },
       /* --- pixel bitmap for cmr118 char#52 4 --- */
-      {  52, 2614,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x18\x0c\x45\x32\xf9\x43\x20\x10\x1c" }  },
+      {  52,67014,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x30\x30\x28\x24\x22\x23\xff\x20\x20\x20\xf8" }  },
       /* --- pixel bitmap for cmr118 char#53 5 --- */
-      {  53, 2647,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf1\x85\xf0\x22\x8c\xd9\x01" }  },
+      {  53,68008,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe1\x17\x04\xcd\x04\x82\x61\xe4\x00" }  },
       /* --- pixel bitmap for cmr118 char#54 6 --- */
-      {  54, 2682,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x4c\xc6\xf0\x62\x8c\xd2\x01" }  },
+      {  54,68860,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9c\x28\x04\xcd\x14\x86\xa1\xc4\x00" }  },
       /* --- pixel bitmap for cmr118 char#55 7 --- */
-      {  55, 2721,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7f\x08\x21\x08\x41\x10\x04\x01" }  },
+      {  55,69718,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x81\x7f\x30\x04\x81\x20\x10\x04\x02\x81\x00" }  },
       /* --- pixel bitmap for cmr118 char#56 8 --- */
-      {  56, 2750,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\x46\xcd\x54\x8c\xd1\x01" }  },
+      {  56,70600,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5e\x18\x86\x9e\x33\x85\x61\xe8\x01" }  },
       /* --- pixel bitmap for cmr118 char#57 9 --- */
-      {  57, 2791,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\xc5\x18\x3d\x8c\xc9\x00" }  },
+      {  57,71456,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x14\x86\xa1\xcc\x82\x50\xe4\x00" }  },
       /* --- pixel bitmap for cmr118 char#58 : --- */
-      {  58, 3759,                      /* character number, location */
-          7, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\x3c" }  },
+      {  58,93630,                      /* character number, location */
+          7, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\x3c" }  },
       /* --- pixel bitmap for cmr118 char#59 ; --- */
-      {  59, 3776,                      /* character number, location */
-          7, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  2,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\xbc\x06" }  },
+      {  59,94293,                      /* character number, location */
+          7, 2,   -3, 2,      /* topleft row,col, and botleft row,col */
+          {  2,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\xbc\x06" }  },
       /* --- pixel bitmap for cmr118 char#60 (noname) --- */
-      {  60, 3404,                      /* character number, location */
-          8, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  2,    11, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\xfc\x3f" }  },
+      {  60,86543,                      /* character number, location */
+          8, 2,   -3, 2,      /* topleft row,col, and botleft row,col */
+          {  2,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\xfc\x3f" }  },
       /* --- pixel bitmap for cmr118 char#61 = --- */
-      {  61, 3799,                      /* character number, location */
-          6, 1,     1, 1,     /* topleft row,col, and botleft row,col */
-          { 10,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x03\x00\x00\x00\xff\x03" }  },
+      {  61,94941,                      /* character number, location */
+          7, 1,    2, 1,      /* topleft row,col, and botleft row,col */
+          { 11,    5, 3, 6, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0b\xf2\xbb" }  },
       /* --- pixel bitmap for cmr118 char#62 (noname) --- */
-      {  62, 2957,                      /* character number, location */
-          8, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    11, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xc6\x00\x00\x8c\x10\x21\x3a" }  },
-      /* --- pixel bitmap for cmr118 char#63 (noname) --- */
-      {  63, 2932,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\x22\x42\x00\x00\xc6\x00" }  },
-      /* --- pixel bitmap for cmr118 char#64 (noname) --- */
-      {  64, 3812,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    10, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x78\x10\x22\x53\xb3\x85\x16\xda\xac\x6c\x04\xe0\x0f" }  },
+      {  62,75531,                      /* character number, location */
+          8, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0c\x03\x00\x00\x43\x18\x41\xe8\x01" }  },
+      /* --- pixel bitmap for cmr118 char#63 ? --- */
+      {  63,74631,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5e\x08\x62\x08\x03\x00\x00\xc3\x00" }  },
+      /* --- pixel bitmap for cmr118 char#64 @ --- */
+      {  64,96085,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x20\x88\x9c\x12\x5b\xd0\x82\x16\x34\xb1\x72\x23"
+            "\x00\xfe\x01" }  },
       /* --- pixel bitmap for cmr118 char#65 A --- */
-      {  65,   35,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x20\x00\x01\x14\xa0\x00\x05\x44\xe0\x03\x11\x04\x79"
-            "\x3c" }  },
+      {  65, 1000,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 3,32, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf2\x52\x50\xf2\x41\x21\x40\x31\x41\x66\x61\x41\x51"
+            "\x61\x25\x25" }  },
       /* --- pixel bitmap for cmr118 char#66 B --- */
-      {  66,   76,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 10,    10, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xff\x10\x4c\x20\x81\xfc\x11\x44\x20\x81\x04\xff\x03" }  },
+      {  66, 2284,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x21\x10\x01\x09\x48\x30\xfe\x11\x98\x80\x04\x24"
+            "\xd0\x7f\x00" }  },
       /* --- pixel bitmap for cmr118 char#67 C --- */
-      {  67,  117,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    10, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x78\x09\x0b\x0c\x10\x20\x40\x00\x81\x84\xf1\x00" }  },
+      {  67, 3167,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x12\x2c\x60\x80\x01\x04\x10\x40\x80\x02\x12\x84"
+            "\x0f" }  },
       /* --- pixel bitmap for cmr118 char#68 D --- */
-      {  68,  154,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 10,    10, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xff\x10\x46\x10\x81\x04\x12\x48\x20\x41\x84\xfd\x03" }  },
+      {  68, 4233,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 3,29, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x51\x51\x41\x61\x10\xf4\x21\x71\x21\x61\x31\x52"
+            "\x18\x31" }  },
       /* --- pixel bitmap for cmr118 char#69 E --- */
-      {  69,  197,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 10,    10, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xff\x11\x46\x14\x51\x7c\x10\x41\x24\x81\x04\xfd\x07" }  },
+      {  69, 5584,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x23\x18\x81\x88\x44\x04\x3e\x10\x91\x88\x04\x22"
+            "\xd8\xff\x00" }  },
       /* --- pixel bitmap for cmr118 char#70 F --- */
-      {  70,  244,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,    10, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\xff\x09\x13\x25\xca\x87\x08\x11\x02\x04\x3e\x00" }  },
+      {  70, 6797,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x13\x4c\x20\xa1\x84\xf0\x43\x08\x21\x04\x10\xf0"
+            "\x01" }  },
       /* --- pixel bitmap for cmr118 char#71 G --- */
-      {  71,  285,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    10, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x78\x11\x26\x50\x00\x01\x04\x1f\x90\x40\x04\xe1\x07" }  },
+      {  71, 7924,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x22\x98\x80\x02\x14\x80\x00\x04\x3e\x40\x02\x22"
+            "\x10\xfe\x00" }  },
       /* --- pixel bitmap for cmr118 char#72 H --- */
-      {  72,  326,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xdf\x27\x08\x41\x08\xc2\x1f\x82\x10\x84\x20\x04\xf9"
-            "\x3e" }  },
+      {  72, 9047,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 3,26, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05\x25\xf3\x21\x61\x20\x28\x20\xf3\x21\x61\x25\x25" }  },
       /* --- pixel bitmap for cmr118 char#73 I --- */
-      {  73,  371,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9f\x10\x42\x08\x21\xe4\x03" }  },
+      {  73, 9702,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,   11, 3, 8, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05\xf8\x21\x25" }  },
       /* --- pixel bitmap for cmr118 char#74 J --- */
-      {  74,  398,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1e\x21\x84\x10\x42\xe9\x00" }  },
+      {  74,10466,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 3,13, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x24\xf7\x41\x11\x31\x23\x28" }  },
       /* --- pixel bitmap for cmr118 char#75 K --- */
-      {  75,  427,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x9f\x27\x04\x11\x48\x40\x03\x26\x10\x82\x10\x04\xf9"
-            "\x3c" }  },
+      {  75,11601,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9f\x4f\x10\x84\x40\x04\x24\x40\x05\x8c\x40\x08\x04"
+            "\x41\x20\x1f\x0f" }  },
       /* --- pixel bitmap for cmr118 char#76 L --- */
-      {  76,  474,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1f\x04\x04\x04\x04\x04\x84\x84\xc4\xff" }  },
+      {  76,12506,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,   11, 3,20, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05\x40\xf4\x21\x60\xf2\x21\x51\x21\x4b" }  },
       /* --- pixel bitmap for cmr118 char#77 M --- */
-      {  77,  507,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 14,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x0f\x3c\x03\xc3\xa1\x50\x28\x14\x0a\x49\x42\x92\x90"
-            "\x22\xc4\xc8\xb7\x0f" }  },
+      {  77,13744,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 15,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\x78\x06\x0c\x05\x85\x82\x42\x41\x21\x91\x90\x48"
+            "\x88\x22\x44\x11\xa2\xc8\x27\x1f" }  },
       /* --- pixel bitmap for cmr118 char#78 N --- */
-      {  78,  580,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xc7\x67\x08\x43\x28\x42\x12\x92\x10\x85\x20\x84\xf9"
-            "\x08" }  },
+      {  78,14826,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x87\xcf\x20\x14\x42\x21\x24\x42\x26\x44\x42\x28\x84"
+            "\x42\x30\x1f\x02" }  },
       /* --- pixel bitmap for cmr118 char#79 O --- */
-      {  79,  635,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    10, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x78\x18\x26\x50\x80\x01\x06\x18\xa0\x40\x86\xe1\x01" }  },
+      {  79,15645,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 3,27, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x35\x51\x51\x31\x71\x1f\x41\x91\x11\x71\x31\x51\x55"
+            "\x31" }  },
       /* --- pixel bitmap for cmr118 char#80 P --- */
-      {  80,  678,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,    10, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x7f\x08\x13\x24\x48\x98\x0f\x01\x02\x04\x3e\x00" }  },
+      {  80,16710,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x10\x44\x20\x81\x04\xf1\x43\x00\x01\x04\x10\xf0"
+            "\x01" }  },
       /* --- pixel bitmap for cmr118 char#81 Q --- */
-      {  81,  713,                      /* character number, location */
-         10, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x78\x18\x26\x50\x80\x01\x06\x18\xa0\x40\xbe\xe1\x01"
-            "\x00\x00\x80\x01" }  },
+      {  81,17689,                      /* character number, location */
+         11, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   14, 3,37, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x35\x51\x51\x31\x71\x1f\x41\x91\x11\x23\x21\x31\x11"
+            "\x31\x55\xa1\xd1\x82\x11" }  },
       /* --- pixel bitmap for cmr118 char#82 R --- */
-      {  82,  760,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x7f\x20\x08\x41\x08\xc2\x07\x62\x10\x82\x10\x84\xf8"
-            "\x38" }  },
+      {  82,18934,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x40\x10\x04\x42\x20\x04\xc1\x0f\x84\x41\x10\x04"
+            "\x41\x10\x1f\x0e" }  },
       /* --- pixel bitmap for cmr118 char#83 S --- */
-      {  83,  803,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7e\x18\x04\x0e\x04\x82\xe1\x07" }  },
+      {  83,19935,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfe\x60\x30\x60\xe0\x81\x81\xc1\xd0\x07" }  },
       /* --- pixel bitmap for cmr118 char#84 T --- */
-      {  84,  834,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    10, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\xff\x23\x46\x8c\x08\x01\x02\x04\x08\x10\xf8\x00" }  },
+      {  84,20971,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   11, 3,19, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0a\x0f\x21\x41\x31\xf5\x51\x40\x35\x22" }  },
       /* --- pixel bitmap for cmr118 char#85 U --- */
-      {  85,  873,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xdf\x27\x08\x41\x08\x42\x10\x82\x10\x84\x20\x88\x80"
-            "\x03" }  },
+      {  85,21915,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 3,19, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05\x25\xf7\x21\x61\x20\x31\x41\x74\x42" }  },
       /* --- pixel bitmap for cmr118 char#86 V --- */
-      {  86,  918,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x8f\x27\x08\x41\x10\x81\x08\x44\x40\x01\x0a\x50\x00"
-            "\x01" }  },
+      {  86,22861,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\x4f\x20\x04\x82\x10\x08\x01\x09\x90\x00\x09\x60"
+            "\x00\x06\x60\x00" }  },
       /* --- pixel bitmap for cmr118 char#87 W --- */
-      {  87,  963,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 16,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xcf\xf3\x84\x21\x84\x21\x44\x22\x48\x12\x48\x12\x28"
-            "\x14\x30\x0c\x30\x0c\x30\x0c" }  },
+      {  87,24218,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 17,   11, 3,37, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x34\x24\xf2\x21\x41\x11\x41\x20\xf2\x31\x21\x31"
+            "\x21\x30\xf3\x42\x52\x43" }  },
       /* --- pixel bitmap for cmr118 char#88 X --- */
-      {  88, 1032,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xcf\x43\x04\x12\xa0\x00\x02\x18\x40\x01\x11\x84\x79"
-            "\x3c" }  },
+      {  88,25279,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9f\x87\x10\x98\x00\x0d\x60\x00\x06\x70\x00\x09\x08"
+            "\xc1\x10\x0f\x0f" }  },
       /* --- pixel bitmap for cmr118 char#89 Y --- */
-      {  89, 1075,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    10, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x8f\x27\x08\x22\xb0\x01\x05\x10\x80\x00\x04\x20\xc0"
-            "\x07" }  },
+      {  89,26379,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\xcf\x20\x08\x01\x11\xa0\x00\x0e\x40\x00\x04\x40"
+            "\x00\x04\xf0\x01" }  },
       /* --- pixel bitmap for cmr118 char#90 Z --- */
-      {  90, 1112,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x51\x28\x82\x40\x12\x85\xe2\x3f" }  },
+      {  90,27378,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x43\x61\x21\x10\x18\x88\x84\x86\xc2\xff" }  },
       /* --- pixel bitmap for cmr118 char#91 [ --- */
-      {  91, 3873,                      /* character number, location */
-         11, 0,    -4, 0,     /* topleft row,col, and botleft row,col */
-          {  4,    15, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1f\x11\x11\x11\x11\x11\x11\x0f" }  },
+      {  91,96794,                      /* character number, location */
+         12, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          {  4,   16, 3, 8, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x0f\xd1\x34" }  },
       /* --- pixel bitmap for cmr118 char#92 (noname) --- */
-      {  92, 4419,                      /* character number, location */
-         10, 2,     5, 2,     /* topleft row,col, and botleft row,col */
-          {  5,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x32\xa5\xbd\x01" }  },
+      {  92,114689,                     /* character number, location */
+         11, 2,    6, 2,      /* topleft row,col, and botleft row,col */
+          {  5,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x32\xa5\xbd\x01" }  },
       /* --- pixel bitmap for cmr118 char#93 ] --- */
-      {  93, 3910,                      /* character number, location */
-         11, 0,    -4, 0,     /* topleft row,col, and botleft row,col */
-          {  4,    15, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8f\x88\x88\x88\x88\x88\x88\x0f" }  },
+      {  93,97474,                      /* character number, location */
+         12, 0,   -4, 0,      /* topleft row,col, and botleft row,col */
+          {  4,   16, 3, 8, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\xfd\x31\x04" }  },
       /* --- pixel bitmap for cmr118 char#94 \^ --- */
-      {  94, 4075,                      /* character number, location */
-         10, 2,     8, 2,     /* topleft row,col, and botleft row,col */
-          {  3,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2a" }  },
+      {  94,103409,                     /* character number, location */
+         11, 2,    9, 2,      /* topleft row,col, and botleft row,col */
+          {  4,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x96" }  },
       /* --- pixel bitmap for cmr118 char#95 (noname) --- */
-      {  95, 4088,                      /* character number, location */
-         11, 1,     9, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
+      {  95,103872,                     /* character number, location */
+         12, 2,   10, 2,      /* topleft row,col, and botleft row,col */
+          {  1,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03" }  },
       /* --- pixel bitmap for cmr118 char#96 (noname) --- */
-      {  96, 3947,                      /* character number, location */
-         10, 1,     5, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xd6\x03" }  },
+      {  96,98074,                      /* character number, location */
+         11, 2,    6, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xd6\x03" }  },
       /* --- pixel bitmap for cmr118 char#97 a --- */
-      {  97, 1153,                      /* character number, location */
-          7, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\x84\x59\x51\xec\x03" }  },
+      {  97,28480,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\x08\x47\x12\x89\xfa\x00" }  },
       /* --- pixel bitmap for cmr118 char#98 b --- */
-      {  98, 1180,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x03\x81\x40\x67\x12\x0a\x85\x26\x1d" }  },
+      {  98,29442,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03\x81\x40\xe0\x11\x09\x85\x42\x93\x07" }  },
       /* --- pixel bitmap for cmr118 char#99 c --- */
-      {  99, 1221,                      /* character number, location */
-          7, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x6e\x84\x10\xa6\x03" }  },
+      {  99,30173,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9c\x10\x04\x81\xc8\x01" }  },
       /* --- pixel bitmap for cmr118 char#100 d --- */
-      { 100, 1244,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x30\x10\xc8\x25\x0b\x85\x42\x32\x37" }  },
+      { 100,31130,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x30\x10\x08\xc4\x13\x85\x42\x21\x19\x1b" }  },
       /* --- pixel bitmap for cmr118 char#101 e --- */
-      { 101, 1285,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9c\xf8\x07\x81\xc8\x01" }  },
+      { 101,31848,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\xfe\x10\xa4\x03" }  },
       /* --- pixel bitmap for cmr118 char#102 f --- */
-      { 102, 1310,                      /* character number, location */
-         10,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  6,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x38\x41\x7c\x04\x41\x10\x84\x03" }  },
+      { 102,32659,                      /* character number, location */
+         11,-1,    0,-1,      /* topleft row,col, and botleft row,col */
+          {  7,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x70\x04\x02\xf1\x43\x20\x10\x08\x04\x0f" }  },
       /* --- pixel bitmap for cmr118 char#103 g --- */
-      { 103, 1337,                      /* character number, location */
-          7, 0,    -4, 0,     /* topleft row,col, and botleft row,col */
-          {  7,    11, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7c\x89\x44\xe2\x10\xf8\x82\xc1\x31\x07" }  },
+      { 103,33856,                      /* character number, location */
+          7, 0,   -4, 0,      /* topleft row,col, and botleft row,col */
+          {  8,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfc\x22\x22\x22\x1e\x02\x7e\x81\x81\xc3\x3c" }  },
       /* --- pixel bitmap for cmr118 char#104 h --- */
-      { 104, 1378,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x03\x02\x02\x3a\x46\x42\x42\x42\x42\xe7" }  },
+      { 104,34789,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03\x81\x40\xe0\x11\x89\x44\x22\xd1\x19" }  },
       /* --- pixel bitmap for cmr118 char#105 i --- */
-      { 105, 1419,                      /* character number, location */
-         11, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,    11, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1b\x30\x49\xd2\x01" }  },
+      { 105,35488,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  3,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1b\x80\x49\x92\x0e" }  },
       /* --- pixel bitmap for cmr118 char#106 j --- */
-      { 106, 1446,                      /* character number, location */
-         11,-1,    -3,-1,     /* topleft row,col, and botleft row,col */
-          {  4,    14, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xcc\x00\x8c\x88\x88\x88\x78" }  },
+      { 106,36250,                      /* character number, location */
+         12,-1,   -3,-1,      /* topleft row,col, and botleft row,col */
+          {  4,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xcc\x00\xc0\x88\x88\x88\x88\x07" }  },
       /* --- pixel bitmap for cmr118 char#107 k --- */
-      { 107, 1479,                      /* character number, location */
-         10, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x03\x81\x40\xaf\x51\x38\x34\x92\x3b" }  },
+      { 107,37330,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03\x02\x02\x02\xf2\x12\x0a\x1e\x12\x22\xe7" }  },
       /* --- pixel bitmap for cmr118 char#108 l --- */
-      { 108, 1518,                      /* character number, location */
-         10, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  3,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x93\x24\x49\x3a" }  },
+      { 108,37935,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  3,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x93\x24\x49\xd2\x01" }  },
       /* --- pixel bitmap for cmr118 char#109 m --- */
-      { 109, 1545,                      /* character number, location */
-          7, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xdf\x31\x93\x88\x44\x24\x22\x11\x9d\x19" }  },
+      { 109,39236,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3b\xc7\x18\x09\x21\x21\x24\x84\x84\xd0\x39\x07" }  },
       /* --- pixel bitmap for cmr118 char#110 n --- */
-      { 110, 1592,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3b\x46\x42\x42\x42\x42\xe7" }  },
+      { 110,40177,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\x91\x48\x24\x12\x9d\x01" }  },
       /* --- pixel bitmap for cmr118 char#111 o --- */
-      { 111, 1627,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1c\x51\x30\x18\x14\x71\x00" }  },
+      { 111,40834,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9e\x14\x86\xa1\xe4\x01" }  },
       /* --- pixel bitmap for cmr118 char#112 p --- */
-      { 112, 1658,                      /* character number, location */
-          7, 0,    -3, 0,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3b\x93\x50\x28\x34\xe9\x04\x82\x03" }  },
+      { 112,41862,                      /* character number, location */
+          7, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\x91\x50\x28\x34\x79\x04\x82\x03" }  },
       /* --- pixel bitmap for cmr118 char#113 q --- */
-      { 113, 1699,                      /* character number, location */
-          7, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\x59\x28\x14\x92\xb9\x40\x20\x38" }  },
+      { 113,42848,                      /* character number, location */
+          7, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\x51\x28\x14\x92\xb1\x40\x20\x38" }  },
       /* --- pixel bitmap for cmr118 char#114 r --- */
-      { 114, 1740,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xdf\x08\x21\xc4\x01" }  },
+      { 114,43665,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5f\x08\x21\xc4\x01" }  },
       /* --- pixel bitmap for cmr118 char#115 s --- */
-      { 115, 1761,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x2e\x05\x17\xe3\x03" }  },
+      { 115,44562,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  4,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9e\x61\x99\x07" }  },
       /* --- pixel bitmap for cmr118 char#116 t --- */
-      { 116, 1788,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x22\x2f\x22\xaa\x04" }  },
+      { 116,45349,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  5,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x84\x98\x4f\x08\xa1\x14\x01" }  },
       /* --- pixel bitmap for cmr118 char#117 u --- */
-      { 117, 1817,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x63\x42\x42\x42\x42\x42\xfc" }  },
+      { 117,46236,                      /* character number, location */
+          7, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x33\x91\x48\x24\x12\xf1\x01" }  },
       /* --- pixel bitmap for cmr118 char#118 v --- */
-      { 118, 1850,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe7\x24\x24\x24\x18\x18\x18" }  },
+      { 118,47088,                      /* character number, location */
+          7, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xef\x89\x10\x41\x81\x02\x05\x04" }  },
       /* --- pixel bitmap for cmr118 char#119 w --- */
-      { 119, 1879,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x77\x17\x11\x55\xa8\x42\x15\x44\x20\x02" }  },
+      { 119,48303,                      /* character number, location */
+          7, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe7\x4e\x26\x94\x42\x29\x94\x82\x19\x08\x01" }  },
       /* --- pixel bitmap for cmr118 char#120 x --- */
-      { 120, 1930,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe7\x24\x18\x18\x18\x24\xe7" }  },
+      { 120,49260,                      /* character number, location */
+          7, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe7\xc9\xa0\x80\x80\x82\xc8\x71" }  },
       /* --- pixel bitmap for cmr118 char#121 y --- */
-      { 121, 1959,                      /* character number, location */
-          7, 0,    -3, 0,     /* topleft row,col, and botleft row,col */
-          {  8,    10, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe7\x24\x24\x24\x18\x18\x18\x08\x08\x07" }  },
+      { 121,50315,                      /* character number, location */
+          7, 0,   -3, 0,      /* topleft row,col, and botleft row,col */
+          {  9,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xef\x89\x10\x41\x81\x02\x05\x04\x08\x08\x0e\x00" }  },
       /* --- pixel bitmap for cmr118 char#122 z --- */
-      { 122, 1994,                      /* character number, location */
-          7, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     7, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5e\x29\x22\xe5\x07" }  },
+      { 122,51236,                      /* character number, location */
+          7, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,    7, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbe\xa4\xb0\xa4\xf8\x03" }  },
       /* --- pixel bitmap for cmr118 char#123 (noname) --- */
-      { 123, 4446,                      /* character number, location */
-          5, 0,     4, 0,     /* topleft row,col, and botleft row,col */
-          {  7,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7f" }  },
+      { 123,115267,                     /* character number, location */
+          5, 0,    4, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff" }  },
       /* --- pixel bitmap for cmr118 char#124 (noname) --- */
-      { 124, 4455,                      /* character number, location */
-          5, 0,     4, 0,     /* topleft row,col, and botleft row,col */
-          { 15,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x7f" }  },
+      { 124,116061,                     /* character number, location */
+          5, 0,    4, 0,      /* topleft row,col, and botleft row,col */
+          { 16,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\xff" }  },
       /* --- pixel bitmap for cmr118 char#125 (noname) --- */
-      { 125, 4099,                      /* character number, location */
-         10, 2,     8, 2,     /* topleft row,col, and botleft row,col */
-          {  4,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5a" }  },
+      { 125,104523,                     /* character number, location */
+         11, 2,    8, 2,      /* topleft row,col, and botleft row,col */
+          {  5,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x32\x25" }  },
       /* --- pixel bitmap for cmr118 char#126 \~ --- */
-      { 126, 4114,                      /* character number, location */
-         10, 1,     8, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xb6\x01" }  },
+      { 126,105177,                     /* character number, location */
+         11, 1,    9, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x66\x06" }  },
       /* --- pixel bitmap for cmr118 char#127 (noname) --- */
-      { 127, 4129,                      /* character number, location */
-         11, 1,     9, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7b\x03" }  },
+      { 127,105830,                     /* character number, location */
+         12, 1,   10, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x52\x02" }  },
       /* --- trailer  --- */
-      { -99, -999,  0,0,0,0, { 0,0,0, (pixbyte *)"\0" }  }
+      { -99, -999,  0,0,0,0, { 0,0,0,0, (pixbyte *)"\0" }  }
    } ;
 
 
-/* --- size=3 ---
- * mf '\mode=onetz; mag=magstep(.5); input cmr10'   gives .gf131
- * ------------------------------------------------------------- */
+/* --- size=3 for .131gf ---
+ * mf '\mode=preview; mag=magstep(-16.39322518098640003469); input cmr10'
+ * --------------------------------------------------------------------- */
 /* --- fontdef for cmr131 --- */
 static	chardef  cmr131[] =
    {
-      /* --- pixel bitmap for cmr131 char#0 (noname) --- */
-      {   0, 2355,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x19\x33\x64\xc8\x90\x01\x03\x06\x0c\x18\x30\xf8"
-            "\x01" }  },
-      /* --- pixel bitmap for cmr131 char#1 (noname) --- */
-      {   1, 2394,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 12,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x60\x00\x06\xd0\x00\x0d\xc8\x81\x18\x84\x43\x30\x02"
-            "\x27\x60\xff\xff\xff" }  },
-      /* --- pixel bitmap for cmr131 char#2 (noname) --- */
-      {   2, 2441,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf8\x60\x8c\xc1\x04\x34\xe5\x39\xcf\x79\xca\x03\x36"
-            "\x18\x63\xf0\x01" }  },
-      /* --- pixel bitmap for cmr131 char#3 (noname) --- */
-      {   3, 2504,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x30\x80\x01\x0c\xd0\x80\x06\x34\xb0\x83\x18\xc4\x20"
-            "\x86\x60\xde\x0f" }  },
-      /* --- pixel bitmap for cmr131 char#4 (noname) --- */
-      {   4, 2553,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xff\x07\x0c\x28\xc8\x9f\x3f\x41\x01\x03\xfe\xff"
-            "\x0f" }  },
-      /* --- pixel bitmap for cmr131 char#5 (noname) --- */
-      {   5, 2596,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x9f\xc1\x30\x18\x06\xc3\x60\x18\x0c\x83\x61\x30"
-            "\x0c\x86\xc1\x30\x98\xdf\x0f" }  },
-      /* --- pixel bitmap for cmr131 char#6 (noname) --- */
-      {   6, 2649,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x1f\xec\x20\x83\x18\xe2\x00\x03\x84\x08\x12\x68"
-            "\xf0\xff" }  },
-      /* --- pixel bitmap for cmr131 char#7 (noname) --- */
-      {   7, 2696,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x8e\xdb\x36\x1c\xc0\x00\x06\x30\x80\x01\x0c\x60\x00"
-            "\x03\x18\xf0\x03" }  },
-      /* --- pixel bitmap for cmr131 char#8 (noname) --- */
-      {   8, 2735,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xfc\xc0\x00\x03\x3f\xb6\xcd\x3c\xb3\x6d\xfc\xc0\x00"
-            "\x03\x3f" }  },
-      /* --- pixel bitmap for cmr131 char#9 (noname) --- */
-      {   9, 2782,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf8\x01\xc3\xd9\xcd\x66\x36\xb3\x99\x8d\x3d\xf8\x00"
+      /* --- pixel bitmap for cmr131 char#0 \Gamma --- */
+      {   0,53384,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,   12, 3,19, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0a\x22\x42\xf2\x22\x51\xf5\x22\x66\x41" }  },
+      /* --- pixel bitmap for cmr131 char#1 \Delta --- */
+      {   1,54283,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x40\x00\x1c\x80\x03\xc8\x00\x19\x10\x06\xc2\x20\x30"
+            "\x04\x46\x80\xf9\xbf\xff\x0f" }  },
+      /* --- pixel bitmap for cmr131 char#2 \Theta --- */
+      {   2,55402,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\xc0\x30\x06\x26\x40\x93\x3c\xcf\xf3\x3c\xc9\x02"
+            "\x64\x60\x0c\x03\x0f" }  },
+      /* --- pixel bitmap for cmr131 char#3 \Lambda --- */
+      {   3,56346,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x20\x80\x03\x1c\xe0\x80\x0f\x64\x20\x83\x39\x84\x21"
+            "\x8c\xe1\x9e\x0f" }  },
+      /* --- pixel bitmap for cmr131 char#4 \Xi --- */
+      {   4,57705,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\xff\x1f\x60\x80\x84\xf0\xc3\x0f\x21\x01\x06\xf8"
+            "\xff\xff" }  },
+      /* --- pixel bitmap for cmr131 char#5 \Pi --- */
+      {   5,58858,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 14,   12, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\xf9\x22\x62\x26\x26" }  },
+      /* --- pixel bitmap for cmr131 char#6 \Sigma --- */
+      {   6,59973,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x3f\xb0\x03\x39\x88\x41\x18\xc0\x00\x82\x08\x64"
+            "\xa0\x81\xff\x0f" }  },
+      /* --- pixel bitmap for cmr131 char#7 \Upsilon --- */
+      {   7,61063,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   12, 3,25, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x13\x43\x12\x12\x22\x12\x44\x40\xf7\x52\x50\x36\x31" }  },
+      /* --- pixel bitmap for cmr131 char#8 \Phi --- */
+      {   8,62085,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x01\x03\x18\xf8\x63\xb6\x31\x8f\xd9\x6c\xfc\x01"
             "\x03\x18\xf0\x03" }  },
-      /* --- pixel bitmap for cmr131 char#10 (noname) --- */
-      {  10, 2835,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x78\x18\x36\xf0\xc0\x03\x0f\x2c\x90\x61\x85\x36\xeb"
-            "\x9c\x73" }  },
-      /* --- pixel bitmap for cmr131 char#11 (noname) --- */
-      {  11, 4886,                      /* character number, location */
-         13,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          { 12,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x0f\x11\x08\x81\x10\x08\xf1\x7f\x08\x81\x10\x08"
-            "\x81\x10\x08\x81\x10\x0c\x07" }  },
-      /* --- pixel bitmap for cmr131 char#12 (noname) --- */
-      {  12, 4941,                      /* character number, location */
-         13,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  9,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x20\x21\x40\x80\xe0\x1f\x32\x44\x88\x10\x21\x42"
-            "\xc4\x18" }  },
-      /* --- pixel bitmap for cmr131 char#13 (noname) --- */
-      {  13, 4990,                      /* character number, location */
-         13,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  9,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x20\x21\x42\x84\xe8\x1f\x22\x44\x88\x10\x21\x42"
-            "\xc4\x18" }  },
-      /* --- pixel bitmap for cmr131 char#14 (noname) --- */
-      {  14, 5045,                      /* character number, location */
-         13,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          { 14,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x1d\xc4\x84\x10\x20\x04\x08\xc1\xff\x87\x90\x21"
-            "\x44\x08\x11\x42\x84\x10\x21\x44\x0c\x31" }  },
-      /* --- pixel bitmap for cmr131 char#15 (noname) --- */
-      {  15, 5118,                      /* character number, location */
-         13,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          { 14,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x1d\x84\x84\x10\x21\x44\x08\xd1\xff\x87\x10\x21"
-            "\x44\x08\x11\x42\x84\x10\x21\x44\x9c\x3b" }  },
-      /* --- pixel bitmap for cmr131 char#16 (noname) --- */
-      {  16, 3506,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  3,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x93\x24\xe9" }  },
-      /* --- pixel bitmap for cmr131 char#17 (noname) --- */
-      {  17, 3529,                      /* character number, location */
-          8,-1,    -4,-1,     /* topleft row,col, and botleft row,col */
-          {  4,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8c\x88\x88\x88\x88\x78" }  },
-      /* --- pixel bitmap for cmr131 char#18 (noname) --- */
-      {  18, 4690,                      /* character number, location */
-         13, 2,    10, 2,     /* topleft row,col, and botleft row,col */
-          {  3,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x91\x01" }  },
-      /* --- pixel bitmap for cmr131 char#19 (noname) --- */
-      {  19, 4703,                      /* character number, location */
-         13, 3,    10, 3,     /* topleft row,col, and botleft row,col */
-          {  3,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xd4\x00" }  },
-      /* --- pixel bitmap for cmr131 char#20 (noname) --- */
-      {  20, 4716,                      /* character number, location */
-         11, 2,    10, 2,     /* topleft row,col, and botleft row,col */
-          {  4,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
-      /* --- pixel bitmap for cmr131 char#21 (noname) --- */
-      {  21, 4725,                      /* character number, location */
-         13, 1,     9, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x61\x28\x79" }  },
+      /* --- pixel bitmap for cmr131 char#9 \Psi --- */
+      {   9,63188,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x01\x06\x67\x6e\x66\x66\x66\x66\x66\xc6\x36\xf8"
+            "\x01\x06\x60\x80\x1f" }  },
+      /* --- pixel bitmap for cmr131 char#10 \Omega --- */
+      {  10,64337,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x30\xd8\x80\x07\x3c\xe0\x01\x0b\xc8\x60\x05\x6d"
+            "\xac\xe3\x1c\x07" }  },
+      /* --- pixel bitmap for cmr131 char#11 \ff --- */
+      {  11,109874,                     /* character number, location */
+         13, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   13, 3,31, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x48\x31\x31\x40\xf2\x21\x41\x4b\x10\xf5\x21\x41\x40"
+            "\x12\x43\x21" }  },
+      /* --- pixel bitmap for cmr131 char#12 \fi --- */
+      {  12,111034,                     /* character number, location */
+         13, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x10\x11\x20\x40\xe0\x1f\x31\x42\x84\x08\x11\x22"
+            "\x64\x18" }  },
+      /* --- pixel bitmap for cmr131 char#13 \fl --- */
+      {  13,112188,                     /* character number, location */
+         13, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x10\x11\x22\x44\xe8\x1f\x21\x42\x84\x08\x11\x22"
+            "\xe4\x1c" }  },
+      /* --- pixel bitmap for cmr131 char#14 \ffi --- */
+      {  14,113793,                     /* character number, location */
+         13, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 14,   13, 3,44, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x44\x14\x41\x32\x31\x10\xf2\x21\x41\x6d\x31\x41\x32"
+            "\x10\xf4\x21\x41\x41\x10\x12\x41\x42" }  },
+      /* --- pixel bitmap for cmr131 char#15 \ffl --- */
+      {  15,115416,                     /* character number, location */
+         13, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 14,   13, 3,40, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x44\x14\x41\x41\x31\x10\xf2\x21\x41\x41\x1d\x10\xf5"
+            "\x21\x41\x41\x10\x13\x23\x23" }  },
+      /* --- pixel bitmap for cmr131 char#16 \imath --- */
+      {  16,78056,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  3,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x93\x24\xe9" }  },
+      /* --- pixel bitmap for cmr131 char#17 \jmath --- */
+      {  17,78724,                      /* character number, location */
+          8,-1,   -4,-1,      /* topleft row,col, and botleft row,col */
+          {  5,   12, 3, 9, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x23\xf9\x41\x03\x23" }  },
+      /* --- pixel bitmap for cmr131 char#18 \gravesym --- */
+      {  18,101143,                     /* character number, location */
+         13, 2,   10, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x11\x01" }  },
+      /* --- pixel bitmap for cmr131 char#19 \acutesym --- */
+      {  19,101712,                     /* character number, location */
+         13, 3,   10, 3,      /* topleft row,col, and botleft row,col */
+          {  4,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x48\x02" }  },
+      /* --- pixel bitmap for cmr131 char#20 \checksym --- */
+      {  20,102337,                     /* character number, location */
+         11, 2,    9, 2,      /* topleft row,col, and botleft row,col */
+          {  5,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9b\x00" }  },
+      /* --- pixel bitmap for cmr131 char#21 \brevesym --- */
+      {  21,102953,                     /* character number, location */
+         13, 2,    9, 2,      /* topleft row,col, and botleft row,col */
+          {  5,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x31\x6e\x07" }  },
       /* --- pixel bitmap for cmr131 char#22 (noname) --- */
-      {  22, 4746,                      /* character number, location */
-         10, 1,     9, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f" }  },
+      {  22,103537,                     /* character number, location */
+         10, 1,    9, 1,      /* topleft row,col, and botleft row,col */
+          {  7,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7f" }  },
       /* --- pixel bitmap for cmr131 char#23 (noname) --- */
-      {  23, 4755,                      /* character number, location */
-         13, 5,    10, 5,     /* topleft row,col, and botleft row,col */
-          {  3,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xef\x01" }  },
+      {  23,104314,                     /* character number, location */
+         13, 5,   10, 5,      /* topleft row,col, and botleft row,col */
+          {  4,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x96\x06" }  },
       /* --- pixel bitmap for cmr131 char#24 (noname) --- */
-      {  24, 4770,                      /* character number, location */
-          0, 2,    -3, 2,     /* topleft row,col, and botleft row,col */
-          {  4,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x86\x0f" }  },
+      {  24,105002,                     /* character number, location */
+          0, 3,   -3, 3,      /* topleft row,col, and botleft row,col */
+          {  3,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe6\x01" }  },
       /* --- pixel bitmap for cmr131 char#25 \ss --- */
-      {  25, 3560,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    13, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x1c\x91\x48\x24\xda\x88\x84\x42\xa1\x50\x39\x03" }  },
+      {  25,79801,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\x42\x42\x42\x22\x1b\x62\x42\x82\x82\x82\x92\x63" }  },
       /* --- pixel bitmap for cmr131 char#26 \ae --- */
-      {  26, 3619,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,     8, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x9f\x03\x33\x08\xf9\x2f\x82\x10\x84\xd1\x73" }  },
+      {  26,81136,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9e\x07\x46\x20\xc8\xff\x22\x10\x02\x61\xe8\x79" }  },
       /* --- pixel bitmap for cmr131 char#27 \oe --- */
-      {  27, 3658,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 12,     8, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x8c\x27\x45\x21\x18\xfe\x21\x10\x02\x52\xc8\x78" }  },
+      {  27,82242,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\x4f\x14\x05\xc1\xe0\x1f\x04\x82\x80\x28\xe4\x78" }  },
       /* --- pixel bitmap for cmr131 char#28 (noname) --- */
-      {  28, 3707,                      /* character number, location */
-         10, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x20\xc4\x49\x69\x5a\x96\x96\x23\x04" }  },
+      {  28,83050,                      /* character number, location */
+         10, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x40\x10\x4f\x16\x4d\x26\x8b\x26\x8f\x20\x00" }  },
       /* --- pixel bitmap for cmr131 char#29 \AE --- */
-      {  29, 3758,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 15,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x3f\xd0\x18\x68\x08\x36\x04\x99\x82\x4c\xc0\x3f"
-            "\x10\x93\x88\x49\xc4\x10\x61\xe8\xf9\x07" }  },
+      {  29,84818,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x3f\x68\x18\x34\x08\x1b\x84\x8c\x42\x46\xe0\x3f"
+            "\x88\x91\xc4\x48\x62\x90\x30\xec\xfc\x07" }  },
       /* --- pixel bitmap for cmr131 char#30 \OE --- */
-      {  30, 3833,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf8\x7f\x8c\x63\x86\x43\x82\x53\x03\x53\x03\x1f\x03"
-            "\x13\x03\x93\x87\x83\x86\x43\x8c\x43\xf8\x7f" }  },
+      {  30,86500,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\xff\x18\x86\x19\x0c\x12\x18\x35\x30\x6a\xe0\xc7"
+            "\xc0\x88\x81\x91\x06\x03\x0d\x06\x31\x0c\x83\xff\x07" }  },
       /* --- pixel bitmap for cmr131 char#31 (noname) --- */
-      {  31, 3908,                      /* character number, location */
-         13, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x00\xc1\x0f\x63\x0c\x27\xa4\x21\x8f\x78\xc4\x13\x9e"
-            "\xb0\xc3\x18\xc3\x0f\x02\x00" }  },
+      {  31,87464,                      /* character number, location */
+         13, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x00\x02\x2f\x0c\x63\x78\x82\x34\xc4\x43\x3c\xc2\x23"
+            "\x2c\x41\x1e\xc6\x30\xf4\x40\x00" }  },
       /* --- pixel bitmap for cmr131 char#32 (noname) --- */
-      {  32, 4802,                      /* character number, location */
-          7, 0,     5, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3e" }  },
+      {  32,105498,                     /* character number, location */
+          7, 0,    5, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5c\x00" }  },
       /* --- pixel bitmap for cmr131 char#33 ! --- */
-      {  33, 3975,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  2,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\xff\xc0\x03" }  },
+      {  33,88101,                      /* character number, location */
+         13, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  2,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\xff\xc0\x03" }  },
       /* --- pixel bitmap for cmr131 char#34 " --- */
-      {  34, 5197,                      /* character number, location */
-         13, 1,     7, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7b\x4b\x29\x13" }  },
+      {  34,116353,                     /* character number, location */
+         13, 1,    7, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf3\x2c\x8a\x62\x04" }  },
       /* --- pixel bitmap for cmr131 char#35 # --- */
-      {  35, 4033,                      /* character number, location */
-         13, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          { 12,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x20\x02\x22\x20\x02\x11\x10\x01\x11\xff\x8f\x08\x88"
-            "\x00\x11\xff\x8f\x08\x88\x80\x08\x44\x40\x04\x44\x00" }  },
+      {  35,89551,                      /* character number, location */
+         13, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   17, 3,39, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf2\x61\x31\x20\xf2\x51\x31\x3d\xf2\x41\x31\x4d\xf2"
+            "\x31\x31\x50\xf2\x21\x31\x61" }  },
       /* --- pixel bitmap for cmr131 char#36 $ --- */
-      {  36, 3314,                      /* character number, location */
-         14, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    15, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x08\xa7\xa6\x69\xe2\x78\x38\x9a\xa6\x9a\x83\x00" }  },
+      {  36,74366,                      /* character number, location */
+         14, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x8e\x2a\x99\x5c\x38\x78\x78\x64\x32\xa9\xe2\x20"
+            "\x00" }  },
       /* --- pixel bitmap for cmr131 char#37 % --- */
-      {  37, 4104,                      /* character number, location */
-         14, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          { 12,    15, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x0e\xa4\x21\xf1\x13\x11\x91\x10\x09\x4a\xe0\x72\x20"
-            "\x05\x89\x90\x88\x88\x84\x48\x50\x02\x07" }  },
+      {  37,90780,                      /* character number, location */
+         14, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x48\x83\xc4\x9f\x08\x11\x11\x22\x82\x22\x70\x72"
+            "\x40\x0a\x24\x82\x44\x88\x88\x10\x11\x14\x81\x03" }  },
       /* --- pixel bitmap for cmr131 char#38 & --- */
-      {  38, 3377,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x18\x20\x01\x09\x48\x40\x01\xce\x33\xc4\x11\x93\x88"
-            "\x42\x18\xc6\xe8\x39" }  },
-      /* --- pixel bitmap for cmr131 char#39 (noname) --- */
-      {  39, 4195,                      /* character number, location */
-         13, 1,     7, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xaf\x06" }  },
+      {  38,75624,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x38\x40\x04\x44\x40\x04\x24\x40\xf1\x08\xc2\x10\x12"
+            "\x11\x0a\x61\x30\x8e\x1e\x07" }  },
+      /* --- pixel bitmap for cmr131 char#39 ' --- */
+      {  39,91424,                      /* character number, location */
+         13, 2,    7, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xaf\x06" }  },
       /* --- pixel bitmap for cmr131 char#40 ( --- */
-      {  40, 4214,                      /* character number, location */
-         14, 1,    -5, 1,     /* topleft row,col, and botleft row,col */
-          {  4,    19, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x48\x24\x12\x11\x11\x11\x11\x22\x44\x08" }  },
+      {  40,91998,                      /* character number, location */
+         14, 1,   -5, 1,      /* topleft row,col, and botleft row,col */
+          {  5,   19, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x10\x11\x21\x44\x08\x21\x84\x10\x84\x10\x04\x41" }  },
       /* --- pixel bitmap for cmr131 char#41 ) --- */
-      {  41, 4259,                      /* character number, location */
-         14, 1,    -5, 1,     /* topleft row,col, and botleft row,col */
-          {  4,    19, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x21\x42\x84\x88\x88\x88\x88\x44\x22\x01" }  },
+      {  41,92599,                      /* character number, location */
+         14, 1,   -5, 1,      /* topleft row,col, and botleft row,col */
+          {  5,   19, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x41\x10\x84\x10\x84\x10\x42\x08\x11\x42\x44\x04" }  },
       /* --- pixel bitmap for cmr131 char#42 * --- */
-      {  42, 4304,                      /* character number, location */
-         14, 1,     6, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x08\xb2\x7b\xde\x8e\x20" }  },
+      {  42,93224,                      /* character number, location */
+         14, 1,    6, 1,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\xc4\x9a\xc3\x59\x23\x10" }  },
       /* --- pixel bitmap for cmr131 char#43 + --- */
-      {  43, 4331,                      /* character number, location */
-         11, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x20\x00\x01\x08\x40\x00\x02\x10\xfc\x1f\x04\x20\x00"
-            "\x01\x08\x40\x00\x02" }  },
+      {  43,93904,                      /* character number, location */
+         11, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   13, 3,11, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf5\x61\x5c\xf5\x61\x51" }  },
       /* --- pixel bitmap for cmr131 char#44 (noname) --- */
-      {  44, 4364,                      /* character number, location */
-          2, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xaf\x06" }  },
+      {  44,94485,                      /* character number, location */
+          2, 2,   -4, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xaf\x06" }  },
       /* --- pixel bitmap for cmr131 char#45 (noname) --- */
-      {  45, 5228,                      /* character number, location */
-          5, 0,     4, 0,     /* topleft row,col, and botleft row,col */
-          {  4,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
+      {  45,116856,                     /* character number, location */
+          5, 0,    4, 0,      /* topleft row,col, and botleft row,col */
+          {  5,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f" }  },
       /* --- pixel bitmap for cmr131 char#46 (noname) --- */
-      {  46, 4383,                      /* character number, location */
-          2, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
+      {  46,94950,                      /* character number, location */
+          2, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
       /* --- pixel bitmap for cmr131 char#47 / --- */
-      {  47, 4394,                      /* character number, location */
-         14, 1,    -5, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    19, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x20\x08\x41\x10\x84\x20\x08\x41\x10\x84\x20\x08\x42"
-            "\x10\x00" }  },
+      {  47,95456,                      /* character number, location */
+         14, 1,   -5, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   19, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x40\x20\x08\x04\x82\x40\x20\x08\x04\x82\x40\x20\x08"
+            "\x04\x82\x40\x00" }  },
       /* --- pixel bitmap for cmr131 char#48 0 --- */
-      {  48, 2896,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8c\x14\x86\x61\x18\x86\x61\x28\x31" }  },
+      {  48,65049,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   12, 3,19, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x23\x31\x31\x1f\x71\x51\x11\x31\x33\x22" }  },
       /* --- pixel bitmap for cmr131 char#49 1 --- */
-      {  49, 2947,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe4\x10\x42\x08\x21\x84\x90\x0f" }  },
+      {  49,65815,                      /* character number, location */
+         12, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  5,   12, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x21\x23\x20\xf8\x21\x25" }  },
       /* --- pixel bitmap for cmr131 char#50 2 --- */
-      {  50, 2978,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x4e\x34\x8f\x30\x0c\x21\x0c\x29\xfe" }  },
+      {  50,66780,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\xd1\x78\x08\x06\x83\x20\x08\xa2\xf0\x0f" }  },
       /* --- pixel bitmap for cmr131 char#51 3 --- */
-      {  51, 3019,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5e\x1c\xc3\x10\x03\xc1\xf0\x1c\x39" }  },
+      {  51,67804,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9e\x70\x18\x0c\xe2\xc0\xc0\xe0\x71\xcc\x03" }  },
       /* --- pixel bitmap for cmr131 char#52 4 --- */
-      {  52, 3058,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,    12, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x30\x30\x28\x2c\x24\x22\x23\xff\x20\x20\x20\xf8" }  },
+      {  52,68714,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x30\x30\x28\x2c\x24\x22\x23\xff\x20\x20\x20\xf8" }  },
       /* --- pixel bitmap for cmr131 char#53 5 --- */
-      {  53, 3099,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe1\xd7\x04\xc1\x33\xc1\x70\x1c\x39" }  },
+      {  53,69738,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x22\x8f\x43\x20\xf0\x88\xc0\xe0\x70\xcc\x03" }  },
       /* --- pixel bitmap for cmr131 char#54 6 --- */
-      {  54, 3140,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9c\x28\x04\xcd\x14\x86\x61\x28\x31" }  },
+      {  54,70616,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x38\xa2\x20\xd0\x19\x05\x83\x41\xa1\x88\x03" }  },
       /* --- pixel bitmap for cmr131 char#55 7 --- */
-      {  55, 3187,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    13, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x81\x7f\x30\x04\x81\x20\x10\x08\x02\x81\x40\x00" }  },
+      {  55,71504,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x02\xfe\x82\x41\x20\x10\x10\x10\x08\x08\x08\x08\x08" }  },
       /* --- pixel bitmap for cmr131 char#56 8 --- */
-      {  56, 3224,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1c\x18\x8e\x97\xa3\xc5\x61\x28\x30" }  },
+      {  56,72414,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\x70\x70\xe8\xe2\xe8\xc2\xc1\xa0\x88\x03" }  },
       /* --- pixel bitmap for cmr131 char#57 9 --- */
-      {  57, 3269,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8c\x14\x86\xa1\xcc\x82\x20\x14\x39" }  },
+      {  57,73300,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\x51\x28\x18\x14\x73\x81\x40\x50\xc4\x01" }  },
       /* --- pixel bitmap for cmr131 char#58 : --- */
-      {  58, 4439,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\xf0" }  },
+      {  58,96040,                      /* character number, location */
+          8, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\xf0" }  },
       /* --- pixel bitmap for cmr131 char#59 ; --- */
-      {  59, 4456,                      /* character number, location */
-          8, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          {  2,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\xf0\x6a" }  },
+      {  59,96703,                      /* character number, location */
+          8, 2,   -4, 2,      /* topleft row,col, and botleft row,col */
+          {  2,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\xf0\x6a" }  },
       /* --- pixel bitmap for cmr131 char#60 (noname) --- */
-      {  60, 4004,                      /* character number, location */
-          9, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          {  2,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\xfc\xff\x03" }  },
+      {  60,88709,                      /* character number, location */
+          9, 2,   -4, 2,      /* topleft row,col, and botleft row,col */
+          {  2,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\xfc\xff\x03" }  },
       /* --- pixel bitmap for cmr131 char#61 = --- */
-      {  61, 4481,                      /* character number, location */
-          7, 1,     2, 1,     /* topleft row,col, and botleft row,col */
-          { 11,     5, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x07\x00\x00\x00\xf0\x7f" }  },
+      {  61,97379,                      /* character number, location */
+          7, 1,    2, 1,      /* topleft row,col, and botleft row,col */
+          { 12,    5, 3, 6, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0c\xf2\xcc" }  },
       /* --- pixel bitmap for cmr131 char#62 (noname) --- */
-      {  62, 3473,                      /* character number, location */
-          9, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0c\x03\x00\x00\x43\x10\x84\x10\x86\x1e" }  },
-      /* --- pixel bitmap for cmr131 char#63 (noname) --- */
-      {  63, 3440,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5e\x18\x42\x08\x82\x30\x00\x00\x30\x0c" }  },
-      /* --- pixel bitmap for cmr131 char#64 (noname) --- */
-      {  64, 4494,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x70\x60\x8c\x9c\x14\x55\xd0\x82\x16\xb4\xa0\x05\x55"
-            "\xac\xdc\x18\x0c\x1f" }  },
+      {  62,77455,                      /* character number, location */
+          9, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0c\x06\x00\x00\x60\x10\x08\x04\x41\x30\xe8\x03" }  },
+      /* --- pixel bitmap for cmr131 char#63 ? --- */
+      {  63,76549,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbe\x60\x10\x04\x41\x20\x18\x00\x00\x80\xc1\x00" }  },
+      /* --- pixel bitmap for cmr131 char#64 @ --- */
+      {  64,98549,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\xc0\x30\xf2\xa4\x50\x05\x5a\xa0\x05\x5a\xa0\x05"
+            "\xaa\xb0\xf2\xc6\xc0\xf0\x03" }  },
       /* --- pixel bitmap for cmr131 char#65 A --- */
-      {  65,   35,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 12,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x20\x00\x07\x70\x00\x07\xf8\x80\x0c\xc8\xc0\x1c\xfc"
-            "\x41\x18\x86\xf3\xfc" }  },
+      {  65, 1026,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x60\x00\x06\x60\x00\x0d\xd0\x80\x1d\x88\x81\x18\xfc"
+            "\x43\x30\x04\xf3\xf8" }  },
       /* --- pixel bitmap for cmr131 char#66 B --- */
-      {  66,   78,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x61\x18\x83\x19\xcc\x70\xfe\x31\x8c\xc1\x0c\x66"
-            "\x30\xc3\xfe\x03" }  },
+      {  66, 2314,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\xc1\x30\x0c\xc6\x60\x0c\xc6\x3f\x0c\xc6\xc0\x0c"
+            "\xcc\xc0\x0c\xf6\x3f" }  },
       /* --- pixel bitmap for cmr131 char#67 C --- */
-      {  67,  127,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x32\x6c\xa0\x80\x03\x0c\x30\xc0\x00\x02\x1a\xc8"
-            "\x10\x3c" }  },
+      {  67, 3227,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x65\xb0\x01\x05\x38\x80\x01\x0c\x60\x00\x02\x34"
+            "\x20\x83\xe0\x03" }  },
       /* --- pixel bitmap for cmr131 char#68 D --- */
-      {  68,  172,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 12,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xc1\x30\x0c\xc6\xc0\x0c\xcc\xc0\x0c\xcc\xc0\x0c"
-            "\xcc\x60\x0c\xf3\x1f" }  },
+      {  68, 4295,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 13,   12, 3,33, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0a\x52\x52\x42\x62\x32\x71\x10\xf4\x22\x72\x22\x62"
+            "\x32\x52\x2a\x31" }  },
       /* --- pixel bitmap for cmr131 char#69 E --- */
-      {  69,  223,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x63\x18\x83\x98\xc4\x24\x3e\x30\x81\x89\x0c\x64"
-            "\x10\xc3\xfe\x07" }  },
+      {  69, 5676,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\xc7\x60\x0c\xc4\x48\x8c\xc4\x0f\x8c\xc0\x88\x0c"
+            "\xc8\x40\x0c\xf6\x7f" }  },
       /* --- pixel bitmap for cmr131 char#70 F --- */
-      {  70,  278,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 10,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x33\xcc\x20\xa3\x8c\xf2\xc3\x08\x23\x0c\x30\xc0"
-            "\xc0\x0f" }  },
+      {  70, 6893,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 11,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x63\x18\x83\x18\xc9\x48\x7e\x30\x82\x11\x0c\x60"
+            "\x00\x03\x7e\x00" }  },
       /* --- pixel bitmap for cmr131 char#71 G --- */
-      {  71,  325,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x62\x98\x81\x04\x34\x80\x01\x0c\x7f\x60\x02\x33"
-            "\x18\xc3\xe0\x05" }  },
+      {  71, 8050,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\xc5\x60\x06\x24\x40\x03\x30\x00\x83\x3f\x60\x02"
+            "\x66\x60\x0c\x06\x5f" }  },
       /* --- pixel bitmap for cmr131 char#72 H --- */
-      {  72,  376,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xbf\x9f\xc1\x30\x18\x06\xc3\x60\xf8\x0f\x83\x61\x30"
-            "\x0c\x86\xc1\x30\x98\xdf\x0f" }  },
+      {  72, 9205,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 14,   12, 3,26, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\x26\xf3\x22\x62\x20\x2a\x20\xf4\x22\x62\x26\x26" }  },
       /* --- pixel bitmap for cmr131 char#73 I --- */
-      {  73,  429,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,    12, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3f\xc3\x30\x0c\xc3\x30\x0c\xc3\xfc" }  },
+      {  73, 9864,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   12, 3, 8, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\xf9\x22\x26" }  },
       /* --- pixel bitmap for cmr131 char#74 J --- */
-      {  74,  460,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,    12, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x7c\x18\x0c\x06\x83\xc1\x60\xb0\xd9\xcc\x03" }  },
+      {  74,10656,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   12, 3,17, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x25\xf7\x42\x1f\x12\x22\x10\x14\x24" }  },
       /* --- pixel bitmap for cmr131 char#75 K --- */
-      {  75,  495,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 12,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\xcf\x30\x8c\xc1\x0c\x4c\xc0\x06\xdc\xc0\x0c\x8c"
-            "\xc1\x38\x0c\xf3\xfb" }  },
+      {  75,11795,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 13,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f\x9f\x41\x30\x04\x46\xc0\x04\xd8\x01\x37\x60\x0c"
+            "\x8c\x83\x61\x30\x98\x9f\x0f" }  },
       /* --- pixel bitmap for cmr131 char#76 L --- */
-      {  76,  550,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\x18\x30\x60\xc0\x80\x01\x03\x86\x0c\x19\x32\xfe"
-            "\x0f" }  },
+      {  76,12728,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,   12, 3,20, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\x40\xf5\x22\x60\xf2\x22\x51\x22\x4c" }  },
       /* --- pixel bitmap for cmr131 char#77 M --- */
-      {  77,  589,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 16,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x1f\xf8\x1c\x38\x1c\x38\x34\x34\x34\x34\x64\x32\x64"
-            "\x32\x64\x32\xc4\x31\xc4\x31\xc4\x31\x9f\xfc" }  },
+      {  77,13994,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 17,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\xf0\x39\xe0\xd0\xa0\xa1\x41\x43\x83\x86\x8c\x0c"
+            "\x19\x19\x62\x31\xc4\x62\x88\xc5\x10\x86\xf9\xcc\x0f" }  },
       /* --- pixel bitmap for cmr131 char#78 N --- */
-      {  78,  672,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x1f\x9f\x83\xd0\x10\x3a\x42\x46\x88\x09\x71\x21\x2c"
-            "\x04\x87\xe0\x10\x98\x0f\x02" }  },
+      {  78,15108,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 14,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\x3e\x07\x42\x83\x90\x21\xe4\x08\x31\x42\x98\x10"
+            "\x2c\x04\x0f\x81\x43\xc0\x7c\x20" }  },
       /* --- pixel bitmap for cmr131 char#79 O --- */
-      {  79,  739,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf8\x60\x8c\xc1\x04\x34\xe0\x01\x0f\x78\xc0\x03\x36"
-            "\x18\x63\xf0\x01" }  },
+      {  79,15955,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\xc0\x30\x06\x26\x40\x03\x3c\xc0\x03\x3c\xc0\x02"
+            "\x64\x60\x0c\x03\x0f" }  },
       /* --- pixel bitmap for cmr131 char#80 P --- */
-      {  80,  790,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 10,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x30\xc6\x30\xc3\x0c\x33\xc6\x0f\x03\x0c\x30\xc0"
-            "\xc0\x0f" }  },
+      {  80,17050,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 11,   12, 3,29, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09\x42\x42\x10\xf2\x22\x52\x22\x42\x37\x20\xf3\x22"
+            "\x76\x52" }  },
       /* --- pixel bitmap for cmr131 char#81 Q --- */
-      {  81,  831,                      /* character number, location */
-         12, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf8\x60\x8c\xc1\x04\x34\xe0\x01\x0f\x78\xc0\x03\xb6"
-            "\x1b\x67\xf0\x01\x08\x40\x02\x1c\x60" }  },
+      {  81,18059,                      /* character number, location */
+         12, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   16, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\xc0\x30\x06\x26\x40\x03\x3c\xc0\x03\x3c\xc0\x02"
+            "\x64\x67\x9c\x03\x0f\x00\x00\x90\x00\x0f\x60" }  },
       /* --- pixel bitmap for cmr131 char#82 R --- */
-      {  82,  894,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 12,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xc0\x18\x0c\xc3\x30\x8c\xc1\x0f\x8c\xc1\x18\x8c"
-            "\xc1\x18\x8c\xf9\xf3" }  },
+      {  82,19336,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 13,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x81\x61\x30\x18\x06\xc3\x30\xf8\x03\x63\x60\x18"
+            "\x0c\x83\x61\x30\xcc\x1f\x0f" }  },
       /* --- pixel bitmap for cmr131 char#83 S --- */
-      {  83,  947,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    12, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x7c\xe1\x70\x70\xf0\xf1\xc0\xe0\x70\xe8\x03" }  },
+      {  83,20369,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbc\xc2\x83\x03\x07\x3e\x78\xc0\xc0\xc1\x41\x3f" }  },
       /* --- pixel bitmap for cmr131 char#84 T --- */
-      {  84,  986,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xcf\x1c\x63\x8c\x31\xc2\x00\x03\x0c\x30\xc0\x00"
-            "\x03\x3f" }  },
+      {  84,21435,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   12, 3,23, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0d\x32\x22\x0f\x21\x42\x31\xf5\x52\x40\x28\x11" }  },
       /* --- pixel bitmap for cmr131 char#85 U --- */
-      {  85, 1033,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\x9f\x81\x30\x10\x06\xc2\x40\x18\x08\x03\x61\x20"
-            "\x0c\x84\x81\x60\x08\xf8\x00" }  },
+      {  85,22411,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 14,   12, 3,19, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\x35\xf8\x22\x71\x20\x32\x51\x85\x40" }  },
       /* --- pixel bitmap for cmr131 char#86 V --- */
-      {  86, 1086,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\x9f\x81\x60\x08\x0c\x81\x21\x60\x02\x4c\x80\x09"
-            "\xe0\x00\x1c\x80\x03\x20\x00" }  },
+      {  86,23387,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 14,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f\x3e\x03\x82\x41\x60\x10\x30\x02\x8c\x00\x23\x80"
+            "\x05\x60\x01\x78\x00\x0c\x00\x03" }  },
       /* --- pixel bitmap for cmr131 char#87 W --- */
-      {  87, 1133,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 18,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x9f\xcf\x33\x1c\xc2\x70\x08\xc6\x11\x98\x4c\x60\x32"
-            "\x81\xc9\x04\x1c\x0e\x70\x38\xc0\xe1\x00\x86\x01\x08"
-            "\x04" }  },
+      {  87,24789,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 19,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbf\xcf\x67\x30\x08\x87\x61\x30\x1e\x81\xd1\x08\x9c"
+            "\x66\xc0\x76\x01\x16\x0b\xf0\x78\x00\xc7\x01\x18\x0c"
+            "\xc0\x60\x00" }  },
       /* --- pixel bitmap for cmr131 char#88 X --- */
-      {  88, 1208,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xbe\x0f\x23\xe0\x04\x58\x00\x0e\xc0\x00\x38\x00\x0f"
-            "\x90\x01\x63\x20\x8c\xcf\x0f" }  },
+      {  88,25878,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 14,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3e\x1f\x86\x00\x33\xc0\x05\xe0\x00\x30\x00\x1c\x80"
+            "\x06\x30\x03\xc4\x81\x60\x7c\xfc" }  },
       /* --- pixel bitmap for cmr131 char#89 Y --- */
-      {  89, 1255,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\x9e\x83\x60\x08\x18\x01\x17\xc0\x02\x30\x00\x06"
-            "\xc0\x00\x18\x00\x03\xf8\x01" }  },
+      {  89,27008,                      /* character number, location */
+         12, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 14,   12, 3,35, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\x35\x23\x52\x52\x51\x72\x31\x83\x12\x92\x11\x50"
+            "\xf4\x62\x60\x46\x41" }  },
       /* --- pixel bitmap for cmr131 char#90 Z --- */
-      {  90, 1298,                      /* character number, location */
-         12, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    12, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\xff\xe3\x61\x31\x31\x18\x18\x8c\x8c\x86\xc7\xff" }  },
+      {  90,28037,                      /* character number, location */
+         12, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x87\x05\x0b\x13\x07\x06\x06\x8e\x0c\x0d\x1a\xfe"
+            "\x0f" }  },
       /* --- pixel bitmap for cmr131 char#91 [ --- */
-      {  91, 4581,                      /* character number, location */
-         14, 1,    -5, 1,     /* topleft row,col, and botleft row,col */
-          {  3,    19, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x4f\x92\x24\x49\x92\x24\xc9\x01" }  },
+      {  91,99276,                      /* character number, location */
+         14, 1,   -5, 1,      /* topleft row,col, and botleft row,col */
+          {  4,   19, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x0f\xe1\x3f\x11\x34" }  },
       /* --- pixel bitmap for cmr131 char#92 (noname) --- */
-      {  92, 5237,                      /* character number, location */
-         13, 2,     7, 2,     /* topleft row,col, and botleft row,col */
-          {  5,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x32\xa5\xb4\x37" }  },
+      {  92,117723,                     /* character number, location */
+         13, 2,    7, 2,      /* topleft row,col, and botleft row,col */
+          {  6,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x62\x14\x45\xf3\x0c" }  },
       /* --- pixel bitmap for cmr131 char#93 ] --- */
-      {  93, 4626,                      /* character number, location */
-         14, 0,    -5, 0,     /* topleft row,col, and botleft row,col */
-          {  3,    19, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x27\x49\x92\x24\x49\x92\xe4\x01" }  },
+      {  93,99962,                      /* character number, location */
+         14, 0,   -5, 0,      /* topleft row,col, and botleft row,col */
+          {  4,   19, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\xfe\x31\xf1\x31\x04" }  },
       /* --- pixel bitmap for cmr131 char#94 \^ --- */
-      {  94, 4813,                      /* character number, location */
-         12, 2,    10, 2,     /* topleft row,col, and botleft row,col */
-          {  4,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x96" }  },
+      {  94,106123,                     /* character number, location */
+         13, 2,   10, 2,      /* topleft row,col, and botleft row,col */
+          {  5,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x44\x45" }  },
       /* --- pixel bitmap for cmr131 char#95 (noname) --- */
-      {  95, 4826,                      /* character number, location */
-         13, 1,    11, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
+      {  95,106590,                     /* character number, location */
+         13, 2,   11, 2,      /* topleft row,col, and botleft row,col */
+          {  1,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03" }  },
       /* --- pixel bitmap for cmr131 char#96 (noname) --- */
-      {  96, 4671,                      /* character number, location */
-         13, 1,     7, 1,     /* topleft row,col, and botleft row,col */
-          {  2,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x56\x0f" }  },
+      {  96,100568,                     /* character number, location */
+         13, 2,    7, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x56\x0f" }  },
       /* --- pixel bitmap for cmr131 char#97 a --- */
-      {  97, 1345,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\x08\xc4\x13\x89\x46\x7d" }  },
+      {  97,29169,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1e\x20\x20\x3e\x21\xa1\xa1\x7e" }  },
       /* --- pixel bitmap for cmr131 char#98 b --- */
-      {  98, 1378,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    13, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x03\x81\x40\x20\xd0\x98\x84\x42\xa1\xd0\xa4\x01" }  },
+      {  98,30161,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03\x02\x02\x02\x02\x3a\x46\x82\x82\x82\x82\x46\x3a" }  },
       /* --- pixel bitmap for cmr131 char#99 c --- */
-      {  99, 1427,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9c\x10\x04\x41\x20\x72" }  },
+      {  99,30928,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\x41\x20\x10\x08\x08\x79" }  },
       /* --- pixel bitmap for cmr131 char#100 d --- */
-      { 100, 1452,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    13, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x30\x10\x08\x04\xe2\x89\x42\xa1\x50\x48\xc6\x06" }  },
+      { 100,31913,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x60\x40\x40\x40\x40\x5c\x62\x41\x41\x41\x41\x62\xdc" }  },
       /* --- pixel bitmap for cmr131 char#101 e --- */
-      { 101, 1499,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x4e\xc6\x1f\x82\x64" }  },
+      { 101,32665,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9c\x18\xfe\x41\x20\x72" }  },
       /* --- pixel bitmap for cmr131 char#102 f --- */
-      { 102, 1528,                      /* character number, location */
-         13,-1,     0,-1,     /* topleft row,col, and botleft row,col */
-          {  7,    13, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x70\x04\x02\x81\xf8\x21\x10\x08\x04\x02\xc1\x03" }  },
+      { 102,33480,                      /* character number, location */
+         13, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  7,   13, 3,17, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x34\xf3\x21\x46\x10\xf5\x21\x45\x21" }  },
       /* --- pixel bitmap for cmr131 char#103 g --- */
-      { 103, 1561,                      /* character number, location */
-          8, 0,    -5, 0,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xfc\x22\x22\x22\x22\x1e\x02\x3e\xc1\x81\x81\x42\x3c" }  },
+      { 103,34707,                      /* character number, location */
+          8, 0,   -5, 0,      /* topleft row,col, and botleft row,col */
+          {  9,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfc\xcd\x08\x11\x42\x42\x83\x00\x3f\x81\x02\x06\x14"
+            "\xc4\x07" }  },
       /* --- pixel bitmap for cmr131 char#104 h --- */
-      { 104, 1610,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    13, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x03\x81\x40\x20\xd0\x98\x44\x22\x91\x48\x74\x06" }  },
+      { 104,35676,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03\x02\x02\x02\x02\x3a\x46\x42\x42\x42\x42\x42\xe7" }  },
       /* --- pixel bitmap for cmr131 char#105 i --- */
-      { 105, 1659,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  3,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1b\x80\x49\x92\x74" }  },
+      { 105,36383,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  3,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1b\x80\x49\x92\x74" }  },
       /* --- pixel bitmap for cmr131 char#106 j --- */
-      { 106, 1688,                      /* character number, location */
-         13,-1,    -4,-1,     /* topleft row,col, and botleft row,col */
-          {  4,    17, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xcc\x00\xc0\x88\x88\x88\x88\x88\x07" }  },
+      { 106,37147,                      /* character number, location */
+         13,-1,   -4,-1,      /* topleft row,col, and botleft row,col */
+          {  5,   17, 3,17, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x32\xf2\x50\x23\xf9\x41\x03\x23" }  },
       /* --- pixel bitmap for cmr131 char#107 k --- */
-      { 107, 1725,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x03\x02\x02\x02\x02\xf2\x32\x1a\x0e\x16\x12\x22\xe7" }  },
+      { 107,38231,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x03\x04\x08\x10\x20\x40\x9e\x0c\x0d\x1e\x2c\x88\x10"
+            "\x72\x1e" }  },
       /* --- pixel bitmap for cmr131 char#108 l --- */
-      { 108, 1772,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  3,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x93\x24\x49\x92\x74" }  },
+      { 108,38842,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  3,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x93\x24\x49\x92\x74" }  },
       /* --- pixel bitmap for cmr131 char#109 m --- */
-      { 109, 1805,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 13,     8, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x3b\xc7\x18\x09\x21\x21\x24\x84\x84\x90\x10\x3a\xe7" }  },
+      { 109,40147,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3b\xc7\x18\x09\x21\x21\x24\x84\x84\x90\x10\x3a\xe7" }  },
       /* --- pixel bitmap for cmr131 char#110 n --- */
-      { 110, 1860,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1b\x93\x48\x24\x12\x89\xce" }  },
+      { 110,41120,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3b\x46\x42\x42\x42\x42\x42\xe7" }  },
       /* --- pixel bitmap for cmr131 char#111 o --- */
-      { 111, 1899,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8c\x14\x86\x61\x28\x31" }  },
+      { 111,41809,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\x51\x30\x18\x0c\x8a\x38" }  },
       /* --- pixel bitmap for cmr131 char#112 p --- */
-      { 112, 1934,                      /* character number, location */
-          8, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    12, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x1b\x93\x50\x28\x14\x9a\x34\x02\x81\xe0\x00" }  },
+      { 112,42867,                      /* character number, location */
+          8, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3b\x46\x82\x82\x82\x82\x46\x3a\x02\x02\x02\x07" }  },
       /* --- pixel bitmap for cmr131 char#113 q --- */
-      { 113, 1981,                      /* character number, location */
-          8, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    12, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\x5c\x62\x41\x41\x41\x41\x62\x5c\x40\x40\x40\xe0" }  },
+      { 113,43863,                      /* character number, location */
+          8, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbc\x08\x13\x48\x20\x81\x04\x22\x0c\x2f\x80\x00\x02"
+            "\x08\xf8" }  },
       /* --- pixel bitmap for cmr131 char#114 r --- */
-      { 114, 2028,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x4f\x0b\x21\x84\x38" }  },
+      { 114,44714,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9b\x2d\x08\x82\x20\x3c" }  },
       /* --- pixel bitmap for cmr131 char#115 s --- */
-      { 115, 2053,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x9e\x69\x98\x79" }  },
+      { 115,45643,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  5,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3e\x46\x83\x63\x7c" }  },
       /* --- pixel bitmap for cmr131 char#116 t --- */
-      { 116, 2084,                      /* character number, location */
-         11, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  5,    11, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x84\x98\x4f\x08\x21\x94\x22" }  },
+      { 116,46460,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x61\xfc\x04\x41\x10\x24\x89\x01" }  },
       /* --- pixel bitmap for cmr131 char#117 u --- */
-      { 117, 2117,                      /* character number, location */
-          8, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x33\x91\x48\x24\x12\x89\xf8" }  },
+      { 117,47375,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x63\x42\x42\x42\x42\x42\x62\xdc" }  },
       /* --- pixel bitmap for cmr131 char#118 v --- */
-      { 118, 2154,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xef\x89\x10\x21\x82\x02\x05\x0a\x08" }  },
+      { 118,48233,                      /* character number, location */
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xcf\x13\x42\x08\x12\x48\xc0\x00\x03\x0c" }  },
       /* --- pixel bitmap for cmr131 char#119 w --- */
-      { 119, 2191,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 12,     8, 1,        /* width x height, pixsz,  bitmap... */
-     (pixbyte *)"\xe7\x0e\x26\x04\x42\x29\x94\x02\x09\x08\x81\x10" }  },
+      { 119,49489,                      /* character number, location */
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 13,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe7\x9e\x88\x90\x12\x52\x82\x2a\x50\x05\xc6\x80\x08" }  },
       /* --- pixel bitmap for cmr131 char#120 x --- */
-      { 120, 2240,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe7\x89\xa0\x80\x00\x01\x05\x91\xe3" }  },
+      { 120,50454,                      /* character number, location */
+          8, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xcf\x13\x81\x04\x0c\x30\x20\x41\xc8\xf3" }  },
       /* --- pixel bitmap for cmr131 char#121 y --- */
-      { 121, 2275,                      /* character number, location */
-          8, 0,    -4, 0,     /* topleft row,col, and botleft row,col */
-          {  9,    12, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xef\x89\x10\x21\x82\x02\x05\x0e\x08\x10\x30\x24\x38"
-            "\x00" }  },
+      { 121,51511,                      /* character number, location */
+          8, 0,   -4, 0,      /* topleft row,col, and botleft row,col */
+          { 10,   12, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xcf\x13\x42\x08\x12\x48\xe0\x01\x03\x0c\x10\x40\x90"
+            "\xc0\x03" }  },
       /* --- pixel bitmap for cmr131 char#122 z --- */
-      { 122, 2320,                      /* character number, location */
-          8, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xbe\xa4\x29\xa4\x29\xfe" }  },
+      { 122,52462,                      /* character number, location */
+          8, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7f\x94\x25\xa4\x29\xfe" }  },
       /* --- pixel bitmap for cmr131 char#123 (noname) --- */
-      { 123, 5268,                      /* character number, location */
-          5, 0,     4, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff" }  },
+      { 123,118331,                     /* character number, location */
+          5, 0,    4, 0,      /* topleft row,col, and botleft row,col */
+          {  9,    1, 3, 2, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09" }  },
       /* --- pixel bitmap for cmr131 char#124 (noname) --- */
-      { 124, 5277,                      /* character number, location */
-          5, 0,     4, 0,     /* topleft row,col, and botleft row,col */
-          { 17,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\xff\x01" }  },
+      { 124,119151,                     /* character number, location */
+          5, 0,    4, 0,      /* topleft row,col, and botleft row,col */
+          { 18,    1, 3, 4, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x04" }  },
       /* --- pixel bitmap for cmr131 char#125 (noname) --- */
-      { 125, 4837,                      /* character number, location */
-         13, 2,    10, 2,     /* topleft row,col, and botleft row,col */
-          {  5,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x52\x26" }  },
+      { 125,107267,                     /* character number, location */
+         13, 2,   10, 2,      /* topleft row,col, and botleft row,col */
+          {  6,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xa4\xb4\x01" }  },
       /* --- pixel bitmap for cmr131 char#126 \~ --- */
-      { 126, 4856,                      /* character number, location */
-         12, 1,    10, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x66\x06" }  },
+      { 126,107947,                     /* character number, location */
+         12, 2,   10, 2,      /* topleft row,col, and botleft row,col */
+          {  5,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xb6\x01" }  },
       /* --- pixel bitmap for cmr131 char#127 (noname) --- */
-      { 127, 4871,                      /* character number, location */
-         13, 1,    11, 1,     /* topleft row,col, and botleft row,col */
-          {  5,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x52\x02" }  },
+      { 127,108626,                     /* character number, location */
+         13, 2,   11, 2,      /* topleft row,col, and botleft row,col */
+          {  5,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7b\x03" }  },
       /* --- trailer  --- */
-      { -99, -999,  0,0,0,0, { 0,0,0, (pixbyte *)"\0" }  }
+      { -99, -999,  0,0,0,0, { 0,0,0,0, (pixbyte *)"\0" }  }
    } ;
 
 
-/* --- size=4 ---
- * mf '\mode=itoh; input cmr10'       gives .gf160
- * ----------------------------------------------- */
+/* --- size=4 for .160gf ---
+ * mf '\mode=preview; mag=magstep(-15.29639112828755784636); input cmr10'
+ * --------------------------------------------------------------------- */
 /* --- fontdef for cmr160 --- */
 static	chardef  cmr160[] =
    {
-      /* --- pixel bitmap for cmr160 char#0 (noname) --- */
-      {   0, 2667,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x63\x18\x83\x18\xc8\x40\x06\x30\x80\x01\x0c\x60"
-            "\x00\x03\x18\xc0\x80\x3f\x00" }  },
-      /* --- pixel bitmap for cmr160 char#1 (noname) --- */
-      {   1, 2710,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 15,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x80\x00\xe0\x00\x70\x00\x64\x00\x32\x80\x30\x40\x18"
-            "\x10\x18\x08\x0c\x02\x0c\x01\x46\x00\xe6\xff\xfb\xff"
-            "\x03" }  },
-      /* --- pixel bitmap for cmr160 char#2 (noname) --- */
-      {   2, 2763,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x03\x86\xc1\xc0\x18\x60\x03\xf0\x84\x3c\x3f\xcf"
-            "\xcf\x13\xf2\x00\x6c\x80\x31\x30\x18\x06\xfc\x00" }  },
-      /* --- pixel bitmap for cmr160 char#3 (noname) --- */
-      {   3, 2834,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 12,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x60\x00\x06\x60\x00\x0d\xd0\x00\x0d\xc8\x81\x18\x88"
-            "\x81\x18\x04\x43\x30\x04\xf3\xf8" }  },
-      /* --- pixel bitmap for cmr160 char#4 (noname) --- */
-      {   4, 2891,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 12,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xff\xff\x01\x18\x80\x00\x40\x20\xfc\xc3\x3f\x04"
-            "\x02\x00\x01\x18\x80\xff\xff\xff" }  },
-      /* --- pixel bitmap for cmr160 char#5 (noname) --- */
-      {   5, 2938,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x3f\x03\xc3\xc0\x30\x30\x0c\x0c\x03\xc3\xc0\x30"
-            "\x30\x0c\x0c\x03\xc3\xc0\x30\x30\x0c\xcc\xcf\x0f" }  },
-      /* --- pixel bitmap for cmr160 char#6 (noname) --- */
-      {   6, 2999,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 13,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xef\x80\x39\x20\x06\x88\x01\x71\x00\x1c\x00\x03"
-            "\x20\x00\x02\x22\x40\x02\x24\xc0\xfe\x1f" }  },
-      /* --- pixel bitmap for cmr160 char#7 (noname) --- */
-      {   7, 3050,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x1e\xde\xcc\x1c\x12\x02\x03\xc0\x00\x30\x00\x0c\x00"
-            "\x03\xc0\x00\x30\x00\x0c\x00\x03\xc0\x00\xfe\x01" }  },
-      /* --- pixel bitmap for cmr160 char#8 (noname) --- */
-      {   8, 3099,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 13,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf8\x07\x18\x00\x03\xfc\xe1\xec\x86\xf1\x30\x1e\xc6"
-            "\xc3\xd8\xd9\xe1\x0f\x60\x00\x0c\xf0\x0f" }  },
-      /* --- pixel bitmap for cmr160 char#9 (noname) --- */
-      {   9, 3158,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf8\x07\x30\x00\x0c\x1c\xe3\xc6\x98\x31\x66\x8c\x19"
-            "\x63\xcc\x0c\xb7\x03\x3f\x00\x03\xc0\x00\xfe\x01" }  },
-      /* --- pixel bitmap for cmr160 char#10 (noname) --- */
-      {  10, 3221,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 13,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x81\xc1\x18\xb0\x01\x3c\x80\x07\xf0\x00\x36\x60"
-            "\x06\x8c\xc1\x24\xc8\x04\xe9\xf1\x3c\x1e" }  },
-      /* --- pixel bitmap for cmr160 char#11 (noname) --- */
-      {  11, 5432,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x1d\xc6\xcc\x30\x30\x0c\x0c\xc3\xff\xc3\x30\x30"
-            "\x0c\x0c\x03\xc3\xc0\x30\x30\x0c\x0c\xc3\xc3\x03" }  },
-      /* --- pixel bitmap for cmr160 char#12 (noname) --- */
-      {  12, 5495,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\xc1\x08\x43\x18\xc0\x80\xff\xb0\x87\x31\x8c\x61"
-            "\x0c\x63\x18\xc3\x98\xc7\x03" }  },
-      /* --- pixel bitmap for cmr160 char#13 (noname) --- */
-      {  13, 5550,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\xc1\x0c\x63\x18\xc3\x98\xff\x30\x86\x31\x8c\x61"
-            "\x0c\x63\x18\xc3\x98\xc7\x03" }  },
-      /* --- pixel bitmap for cmr160 char#14 (noname) --- */
-      {  14, 5609,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 17,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x7d\x30\x8c\x30\x0c\x61\x18\xc0\x30\xe0\xff\x0f"
-            "\xc3\x1e\x86\x31\x0c\x63\x18\xc6\x30\x8c\x61\x18\xc3"
-            "\x30\xe6\x61\x3c" }  },
-      /* --- pixel bitmap for cmr160 char#15 (noname) --- */
-      {  15, 5690,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 17,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x7f\x30\xce\x30\x8c\x61\x18\xc3\x30\xe6\xff\x0f"
-            "\xc3\x18\x86\x31\x0c\x63\x18\xc6\x30\x8c\x61\x18\xc3"
-            "\x30\xe6\xf3\x3e" }  },
-      /* --- pixel bitmap for cmr160 char#16 (noname) --- */
-      {  16, 3956,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x67\x66\x66\x66\x0f" }  },
-      /* --- pixel bitmap for cmr160 char#17 (noname) --- */
-      {  17, 3981,                      /* character number, location */
-          9,-2,    -4,-2,     /* topleft row,col, and botleft row,col */
-          {  6,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3c\x0c\xc3\x30\x0c\xc3\x30\x0c\xcf\x0f" }  },
-      /* --- pixel bitmap for cmr160 char#18 (noname) --- */
-      {  18, 5228,                      /* character number, location */
-         14, 2,    11, 2,     /* topleft row,col, and botleft row,col */
-          {  4,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x73\x0c" }  },
-      /* --- pixel bitmap for cmr160 char#19 (noname) --- */
-      {  19, 5241,                      /* character number, location */
-         14, 4,    11, 4,     /* topleft row,col, and botleft row,col */
-          {  4,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xec\x03" }  },
-      /* --- pixel bitmap for cmr160 char#20 (noname) --- */
-      {  20, 5254,                      /* character number, location */
-         13, 3,    11, 3,     /* topleft row,col, and botleft row,col */
-          {  4,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x69" }  },
-      /* --- pixel bitmap for cmr160 char#21 (noname) --- */
-      {  21, 5267,                      /* character number, location */
-         14, 2,    10, 2,     /* topleft row,col, and botleft row,col */
-          {  6,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x61\x28\x79" }  },
+      /* --- pixel bitmap for cmr160 char#0 \Gamma --- */
+      {   0,53842,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   15, 3,25, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0b\x32\x52\x32\x61\x10\xf1\x22\x71\xf8\x22\x87\x51" }  },
+      /* --- pixel bitmap for cmr160 char#1 \Delta --- */
+      {   1,54747,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   15, 3,56, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x72\x70\xf1\x61\x12\x60\xf1\x51\x32\x50\xf1\x41"
+            "\x52\x40\xf1\x31\x72\x30\xf1\x21\x92\x20\x11\xb2\x2e"
+            "\x1e\x02" }  },
+      /* --- pixel bitmap for cmr160 char#2 \Theta --- */
+      {   2,55880,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe0\x03\x0c\x06\x03\xc6\x00\x66\x00\x9b\x20\xcf\x9f"
+            "\xe7\xcf\x13\xe4\x01\xb0\x01\xcc\x00\xc6\x80\xc1\x60"
+            "\x80\x0f\x00" }  },
+      /* --- pixel bitmap for cmr160 char#3 \Lambda --- */
+      {   3,56836,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   15, 3,38, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x61\x60\xf2\x53\x50\xf2\x41\x22\x40\xf2\x31\x42"
+            "\x30\xf2\x21\x62\x25\x26" }  },
+      /* --- pixel bitmap for cmr160 char#4 \Xi --- */
+      {   4,58207,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   15, 3,42, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x0d\x0f\x11\xb1\xe0\x11\x71\x20\xf1\x29\x20\x21"
+            "\x71\x20\xf1\xdf\x11\xb1\x0f\x1d" }  },
+      /* --- pixel bitmap for cmr160 char#5 \Pi --- */
+      {   5,59364,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 3,14, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x01\xfc\x22\x72\x26\x36" }  },
+      /* --- pixel bitmap for cmr160 char#6 \Sigma --- */
+      {   6,60491,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   15, 3,51, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0d\x13\x82\x23\x81\x32\x91\x32\x81\x33\xc3\x70\xf1"
+            "\x52\x70\x51\xc1\x81\x31\x91\x21\x91\x22\x82\x1d\x10" }  },
+      /* --- pixel bitmap for cmr160 char#7 \Upsilon --- */
+      {   7,61587,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 3,27, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x14\x54\x16\x37\x51\x21\x41\x63\x60\xf9\x72\x60\x48"
+            "\x32" }  },
+      /* --- pixel bitmap for cmr160 char#8 \Phi --- */
+      {   8,62617,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x07\x30\x00\x0c\xc0\x0f\xcc\x8c\x31\x36\x0c\x0f"
+            "\xc3\xc3\xb0\x31\xc6\xcc\xc0\x0f\xc0\x00\x30\x80\x7f"
+            "\x00" }  },
+      /* --- pixel bitmap for cmr160 char#9 \Psi --- */
+      {   9,63738,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 3,55, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x48\x30\xf1\x72\x63\x42\x33\x13\x32\x23\x10\xf3\x22"
+            "\x32\x22\x20\x32\x22\x12\x72\x15\x85\x50\xf1\x72\x60"
+            "\x48\x38" }  },
+      /* --- pixel bitmap for cmr160 char#10 \Omega --- */
+      {  10,64899,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x03\x03\x63\x80\x0d\xc0\x03\xf0\x00\x3c\x00\x0b"
+            "\x40\x06\x18\x01\xc2\xc0\x24\x90\x19\xa6\x87\xe7\xe1"
+            "\x01" }  },
+      /* --- pixel bitmap for cmr160 char#11 \ff --- */
+      {  11,110754,                     /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 3,31, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x45\x14\x42\x33\x22\xf2\x22\x42\x5d\x20\xf7\x22\x42"
+            "\x54\x44\x31" }  },
+      /* --- pixel bitmap for cmr160 char#12 \fi --- */
+      {  12,111926,                     /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   15, 3,34, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x45\x62\x41\x42\x51\x20\xf1\x22\x8a\x42\x24\x20\xf6"
+            "\x22\x42\x24\x44" }  },
+      /* --- pixel bitmap for cmr160 char#13 \fl --- */
+      {  13,113090,                     /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   15, 3,28, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x46\x52\x32\x20\xf2\x22\x42\x2a\x20\xf7\x22\x42\x25"
+            "\x25" }  },
+      /* --- pixel bitmap for cmr160 char#14 \ffi --- */
+      {  14,114703,                     /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 18,   15, 3,50, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x45\x15\x62\x42\x41\x42\x42\x51\x20\xf1\x22\x42\x8e"
+            "\x02\x42\x42\x24\x20\xf6\x22\x42\x42\x24\x42\x44" }  },
+      /* --- pixel bitmap for cmr160 char#15 \ffl --- */
+      {  15,116340,                     /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 18,   15, 3,38, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x4c\x52\x33\x32\x20\xf2\x22\x42\x42\x2e\x02\x20\xf7"
+            "\x22\x42\x42\x25\x24\x25" }  },
+      /* --- pixel bitmap for cmr160 char#16 \imath --- */
+      {  16,78730,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,   10, 3,10, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x20\xf7\x22\x26" }  },
+      /* --- pixel bitmap for cmr160 char#17 \jmath --- */
+      {  17,79402,                      /* character number, location */
+         10,-2,   -4,-2,      /* topleft row,col, and botleft row,col */
+          {  7,   14, 3,11, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x34\xfa\x52\x02\x28\x22" }  },
+      /* --- pixel bitmap for cmr160 char#18 \gravesym --- */
+      {  18,102013,                     /* character number, location */
+         15, 2,   12, 2,      /* topleft row,col, and botleft row,col */
+          {  4,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x73\x0c" }  },
+      /* --- pixel bitmap for cmr160 char#19 \acutesym --- */
+      {  19,102582,                     /* character number, location */
+         15, 4,   12, 4,      /* topleft row,col, and botleft row,col */
+          {  5,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x98\x1b" }  },
+      /* --- pixel bitmap for cmr160 char#20 \checksym --- */
+      {  20,103207,                     /* character number, location */
+         14, 3,   12, 3,      /* topleft row,col, and botleft row,col */
+          {  5,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xdb\x01" }  },
+      /* --- pixel bitmap for cmr160 char#21 \brevesym --- */
+      {  21,103823,                     /* character number, location */
+         15, 2,   11, 2,      /* topleft row,col, and botleft row,col */
+          {  7,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xc1\xa0\x88\x03" }  },
       /* --- pixel bitmap for cmr160 char#22 (noname) --- */
-      {  22, 5288,                      /* character number, location */
-         11, 1,    10, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff" }  },
+      {  22,104407,                     /* character number, location */
+         13, 2,   12, 2,      /* topleft row,col, and botleft row,col */
+          {  7,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7f" }  },
       /* --- pixel bitmap for cmr160 char#23 (noname) --- */
-      {  23, 5297,                      /* character number, location */
-         14, 6,    11, 6,     /* topleft row,col, and botleft row,col */
-          {  4,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x96\x06" }  },
+      {  23,105184,                     /* character number, location */
+         15, 6,   12, 6,      /* topleft row,col, and botleft row,col */
+          {  5,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\x3a" }  },
       /* --- pixel bitmap for cmr160 char#24 (noname) --- */
-      {  24, 5312,                      /* character number, location */
-          0, 2,    -4, 2,     /* topleft row,col, and botleft row,col */
-          {  6,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1c\xec\x07" }  },
+      {  24,105872,                     /* character number, location */
+          0, 3,   -4, 3,      /* topleft row,col, and botleft row,col */
+          {  5,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0c\xe3\x0f" }  },
       /* --- pixel bitmap for cmr160 char#25 \ss --- */
-      {  25, 4016,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x70\x10\x31\x66\xcc\xe8\x0d\x33\x46\x8c\x19\x33\x66"
-            "\xce\xfc\x19" }  },
+      {  25,80485,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 10,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x20\xc4\x30\xc3\x8c\xbd\xc3\x08\x63\x0c\x33\xcc"
+            "\x30\xc3\x4c\x33\xf7\x0c" }  },
       /* --- pixel bitmap for cmr160 char#26 \ae --- */
-      {  26, 4077,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 13,     9, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3e\x6f\x3c\x01\x63\xfc\xef\x0c\x86\xc1\x30\x18\x8f"
-            "\x3e\x0f" }  },
+      {  26,81828,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\x8f\x79\x06\x0c\x03\xc3\xf8\xbf\x31\x30\x0c\x0c"
+            "\x03\xc3\x21\x8f\x07" }  },
       /* --- pixel bitmap for cmr160 char#27 \oe --- */
-      {  27, 4122,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,     9, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x38\x9e\xf1\x24\x18\x0f\xfe\x83\xc1\x60\x20\x18\x18"
-            "\x8f\x38\x1e" }  },
+      {  27,82944,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x38\x1e\xe3\x99\x60\x78\x30\x3c\xf8\x1f\x0c\x0c\x06"
+            "\x04\x03\xc6\x43\x1c\x1e" }  },
       /* --- pixel bitmap for cmr160 char#28 (noname) --- */
-      {  28, 4171,                      /* character number, location */
-         11, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x40\x40\x3c\x66\xf3\xd3\xdb\xcb\xcf\x66\x3c\x02\x02" }  },
+      {  28,83758,                      /* character number, location */
+         12, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x80\x00\xe1\x31\x26\x6a\xf4\xe4\xc9\x8b\x15\x19\xe3"
+            "\x21\x40\x00" }  },
       /* --- pixel bitmap for cmr160 char#29 \AE --- */
-      {  29, 4224,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 17,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\xff\x80\x86\x81\x0c\x02\x19\x08\x32\x10\x62\x04"
-            "\xc4\x08\xf8\x1f\x08\x23\x11\x46\x22\x0c\x26\x18\x44"
-            "\x30\xec\xfb\x1f" }  },
+      {  29,85538,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 18,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\xff\x01\x0d\x06\x32\x10\xc8\x80\x20\x43\xc2\x0c"
+            "\x01\x31\x06\xfc\x1f\x10\x63\x20\x0c\x89\x30\x24\xc2"
+            "\xc0\x04\x03\x11\x0c\xf6\xfd\x1f" }  },
       /* --- pixel bitmap for cmr160 char#30 \OE --- */
-      {  30, 4309,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 19,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\xff\xc3\x70\x18\x83\x83\x0c\x1c\x38\xe0\xd0\x01"
-            "\x86\x0c\xf0\x67\x80\x21\x03\x0c\x3d\x70\xa0\x81\x83"
-            "\x19\x1c\x84\xe1\x30\xf0\xff\x01" }  },
+      {  30,87238,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 20,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe0\xff\x87\xe1\x60\x0c\x0c\x64\xc0\x80\x06\x0c\x39"
+            "\xc0\x10\x03\x8c\x31\xc0\x1f\x03\x8c\x31\xc0\x90\x06"
+            "\x0c\x69\xc0\xc0\x0c\x0c\x84\xe1\x60\xe0\xff\x07" }  },
       /* --- pixel bitmap for cmr160 char#31 (noname) --- */
-      {  31, 4394,                      /* character number, location */
-         15, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x00\x08\xfc\x83\x61\x10\x28\x06\xda\x40\x3c\x18\x0f"
-            "\xc2\x43\xf0\x18\x3c\x02\x5b\x60\x14\x08\x86\xc1\x3f"
-            "\x10\x00" }  },
+      {  31,88220,                      /* character number, location */
+         16, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   17, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x00\x10\xf0\x0d\x06\x83\x81\x63\x60\x13\x10\x0d\x84"
+            "\x07\xc2\x83\xe0\x21\xf0\x10\x58\x04\x64\x03\xe3\xc0"
+            "\x60\x30\xd8\x07\x04\x00" }  },
       /* --- pixel bitmap for cmr160 char#32 (noname) --- */
-      {  32, 5346,                      /* character number, location */
-          8, 0,     6, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf8\x00" }  },
+      {  32,106370,                     /* character number, location */
+          9, 0,    6, 0,      /* topleft row,col, and botleft row,col */
+          {  6,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xb0\x13\x00" }  },
       /* --- pixel bitmap for cmr160 char#33 ! --- */
-      {  33, 4477,                      /* character number, location */
-         14, 2,     0, 2,     /* topleft row,col, and botleft row,col */
-          {  2,    14, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\xff\x03\x0f" }  },
+      {  33,88875,                      /* character number, location */
+         15, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  2,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\xff\x03\x3c" }  },
       /* --- pixel bitmap for cmr160 char#34 " --- */
-      {  34, 5773,                      /* character number, location */
-         14, 1,     8, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf3\x2c\x8a\x73\x04" }  },
+      {  34,117287,                     /* character number, location */
+         15, 1,    9, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf3\x2c\x8a\x51\x04" }  },
       /* --- pixel bitmap for cmr160 char#35 # --- */
-      {  35, 4539,                      /* character number, location */
-         14, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          { 15,    18, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x80\x10\x40\x08\x20\x04\x10\x02\x84\x00\x42\xfc\xff"
-            "\x41\x08\x20\x04\x08\x01\x84\x00\x42\xf0\xff\x47\x08"
-            "\x20\x04\x08\x01\x84\x00\x42\x00" }  },
+      {  35,90329,                      /* character number, location */
+         15, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   19, 3,43, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf2\x71\x41\x30\xf2\x61\x41\x4e\x02\xf4\x51\x41\x5e"
+            "\x02\xf2\x41\x41\x60\xf2\x31\x41\x72" }  },
       /* --- pixel bitmap for cmr160 char#36 $ --- */
-      {  36, 3742,                      /* character number, location */
-         15, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x08\x3c\x4a\x89\xc9\x49\x0e\x3e\x78\xc8\x8b\x8b\x89"
-            "\x4a\x3c\x08" }  },
+      {  36,75008,                      /* character number, location */
+         17, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x10\x20\xf0\x91\x14\x31\x72\xe4\x09\x3e\xf8\x40\x83"
+            "\x3c\x71\x62\x44\x49\x3c\x20\x00" }  },
       /* --- pixel bitmap for cmr160 char#37 % --- */
-      {  37, 4614,                      /* character number, location */
-         15, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          { 15,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x0c\x10\x19\xc4\xf8\x63\x84\x30\x22\x18\x11\x8c\x04"
-            "\x2c\x01\x8c\x18\x20\x12\x88\x11\xc4\x08\x61\x44\x30"
-            "\x22\x90\x08\x30" }  },
+      {  37,91566,                      /* character number, location */
+         17, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0c\x20\x16\x10\x63\x1c\xa3\x0b\x23\x04\x23\x04\x23"
+            "\x02\x23\x01\x16\x01\x8c\x30\x80\x48\x40\x8c\x20\x8c"
+            "\x20\x8c\x10\x8c\x08\x8c\x08\x48\x04\x30" }  },
       /* --- pixel bitmap for cmr160 char#38 & --- */
-      {  38, 3815,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x38\x00\x12\xc0\x04\x30\x01\x2c\x00\x8f\xcf\xc1\x70"
-            "\x10\x3e\xc2\x9c\x30\x16\x0c\x03\xc6\x23\x8f\x07" }  },
-      /* --- pixel bitmap for cmr160 char#39 (noname) --- */
-      {  39, 4711,                      /* character number, location */
-         14, 2,     8, 2,     /* topleft row,col, and botleft row,col */
-          {  2,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xaf\x07" }  },
+      {  38,76282,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x70\x00\x44\x00\x23\x80\x11\xc0\x04\x60\xe3\xf3\x60"
+            "\x30\x10\x3c\x04\x1b\xc2\x98\x60\x5c\x30\x1c\x34\x1e"
+            "\xf3\xf8\x00" }  },
+      /* --- pixel bitmap for cmr160 char#39 ' --- */
+      {  39,92232,                      /* character number, location */
+         15, 2,    9, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xaf\x05" }  },
       /* --- pixel bitmap for cmr160 char#40 ( --- */
-      {  40, 4730,                      /* character number, location */
-         15, 2,    -6, 2,     /* topleft row,col, and botleft row,col */
-          {  5,    21, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x10\x11\x62\xc4\x18\x63\x8c\x31\xc6\x10\x86\x10\x04"
-            "\x01" }  },
+      {  40,92806,                      /* character number, location */
+         17, 2,   -6, 2,      /* topleft row,col, and botleft row,col */
+          {  6,   23, 3,34, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x51\x41\x41\x42\x41\x42\x41\x4f\x82\x40\x11\x52\x51"
+            "\x52\x51\x61\x61" }  },
       /* --- pixel bitmap for cmr160 char#41 ) --- */
-      {  41, 4779,                      /* character number, location */
-         15, 1,    -6, 1,     /* topleft row,col, and botleft row,col */
-          {  5,    21, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x41\x10\xc2\x10\xc6\x18\x63\x8c\x31\x46\x8c\x10\x11"
-            "\x00" }  },
+      {  41,93415,                      /* character number, location */
+         17, 1,   -6, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   23, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x81\x40\x30\x08\x06\xc1\x30\x0c\xc3\x30\x0c\xc3\x10"
+            "\x86\x30\x84\x10\x00" }  },
       /* --- pixel bitmap for cmr160 char#42 * --- */
-      {  42, 4828,                      /* character number, location */
-         15, 1,     6, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x18\x18\xdb\x7e\x18\x7e\xdb\x18\x18" }  },
+      {  42,94048,                      /* character number, location */
+         17, 1,    7, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x10\x20\x48\xba\xce\x87\xcf\x75\x49\x10\x20\x00" }  },
       /* --- pixel bitmap for cmr160 char#43 + --- */
-      {  43, 4861,                      /* character number, location */
-         12, 1,    -3, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    15, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x80\x00\x20\x00\x08\x00\x02\x80\x00\x20\x00\x08\xfc"
-            "\xff\x80\x00\x20\x00\x08\x00\x02\x80\x00\x20\x00\x08"
-            "\x00" }  },
+      {  43,94740,                      /* character number, location */
+         13, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 3,13, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf6\x71\x7e\x01\xf6\x71\x73" }  },
       /* --- pixel bitmap for cmr160 char#44 (noname) --- */
-      {  44, 4898,                      /* character number, location */
-          2, 2,    -4, 2,     /* topleft row,col, and botleft row,col */
-          {  2,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xad\x07" }  },
+      {  44,95325,                      /* character number, location */
+          2, 2,   -4, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xaf\x05" }  },
       /* --- pixel bitmap for cmr160 char#45 (noname) --- */
-      {  45, 5804,                      /* character number, location */
-          5, 0,     3, 0,     /* topleft row,col, and botleft row,col */
-          {  5,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x03" }  },
+      {  45,117790,                     /* character number, location */
+          6, 0,    4, 0,      /* topleft row,col, and botleft row,col */
+          {  6,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x0f" }  },
       /* --- pixel bitmap for cmr160 char#46 (noname) --- */
-      {  46, 4917,                      /* character number, location */
-          2, 2,     0, 2,     /* topleft row,col, and botleft row,col */
-          {  2,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f" }  },
+      {  46,95790,                      /* character number, location */
+          2, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
       /* --- pixel bitmap for cmr160 char#47 / --- */
-      {  47, 4928,                      /* character number, location */
-         15, 1,    -5, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    20, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x80\x80\x40\x40\x40\x20\x20\x10\x10\x10\x08\x08\x08"
-            "\x04\x04\x02\x02\x02\x01\x01" }  },
+      {  47,96296,                      /* character number, location */
+         17, 1,   -6, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   23, 3,49, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x81\xf2\x71\x10\xf1\x61\x20\xf2\x51\x30\xf2\x41"
+            "\x40\xf2\x31\x50\xf1\x21\x60\xf2\x11\x7f\x11\x81" }  },
       /* --- pixel bitmap for cmr160 char#48 0 --- */
-      {  48, 3290,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x3c\x66\x42\xc3\xc3\xc3\xc3\xc3\xc3\xc3\x42\x66\x3c" }  },
+      {  48,65623,                      /* character number, location */
+         14, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   14, 3,27, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x33\x42\x32\x21\x51\x1f\x72\x52\x11\x51\x22\x32\x35"
+            "\x21" }  },
       /* --- pixel bitmap for cmr160 char#49 1 --- */
-      {  49, 3345,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x10\x1f\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\xfe" }  },
+      {  49,66397,                      /* character number, location */
+         14, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  7,   14, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x41\x25\x20\xfa\x32\x27" }  },
       /* --- pixel bitmap for cmr160 char#50 2 --- */
-      {  50, 3378,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x3c\x62\xc1\xc3\xc0\xc0\x60\x30\x10\x88\x84\x7e\x7f" }  },
+      {  50,67366,                      /* character number, location */
+         14, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7c\x84\x05\x1e\x0c\x18\x30\x30\x20\x20\x20\x20\x24"
+            "\xe8\xef\x1f" }  },
       /* --- pixel bitmap for cmr160 char#51 3 --- */
-      {  51, 3421,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x3e\x43\xc3\xc0\x60\x3c\x60\xc0\xc0\xc3\xc3\x62\x3c" }  },
+      {  51,68394,                      /* character number, location */
+         14, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\x84\x18\x03\x06\x0c\x0c\x1e\x60\x80\x01\x0f\x1e"
+            "\x2c\x8c\x0f" }  },
       /* --- pixel bitmap for cmr160 char#52 4 --- */
-      {  52, 3464,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x60\x60\x70\x68\x68\x64\x62\x63\xff\x60\x60\x60\xf8" }  },
+      {  52,69310,                      /* character number, location */
+         14, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x60\xc0\xc0\x41\x83\x86\x8c\x98\x31\xff\xc1\x80\x01"
+            "\x03\x06\x3f" }  },
       /* --- pixel bitmap for cmr160 char#53 5 --- */
-      {  53, 3507,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x42\x3e\x1e\x02\x02\x3e\x62\xc0\xc0\xc3\xc3\x62\x3c" }  },
+      {  53,70338,                      /* character number, location */
+         14, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x82\xfc\xe8\x10\x20\x40\x8f\x31\xc1\x80\x01\x0f\x1e"
+            "\x24\x8c\x07" }  },
       /* --- pixel bitmap for cmr160 char#54 6 --- */
-      {  54, 3550,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x78\xcc\xc6\x02\x03\x3b\x67\xc3\xc3\xc3\xc2\x66\x3c" }  },
+      {  54,71228,                      /* character number, location */
+         14, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x18\x1b\x36\x30\x60\xcf\xb1\xc1\x83\x07\x0f\x16"
+            "\x44\x0c\x07" }  },
       /* --- pixel bitmap for cmr160 char#55 7 --- */
-      {  55, 3601,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x02\xfc\xfb\x0f\x14\x04\x04\x0c\x08\x18\x30\x30\x60"
-            "\xc0\x80\x01" }  },
+      {  55,72124,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x02\xf8\xef\x7f\x40\x81\x00\x01\x02\x08\x30\x40\x00"
+            "\x01\x06\x18\x60\x80\x01" }  },
       /* --- pixel bitmap for cmr160 char#56 8 --- */
-      {  56, 3640,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x3c\x66\xc3\xc3\x66\x3c\x3c\x66\xc3\xc3\xc3\x66\x3c" }  },
+      {  56,73038,                      /* character number, location */
+         14, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x38\x88\x18\x33\x66\x8c\x0f\x0e\x7a\xc2\x07\x0f\x1e"
+            "\x6c\x8c\x0f" }  },
       /* --- pixel bitmap for cmr160 char#57 9 --- */
-      {  57, 3691,                      /* character number, location */
-         13, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    13, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x3c\x66\x43\xc3\xc3\xc3\xe6\xdc\xc0\x40\x63\x23\x1e" }  },
+      {  57,73932,                      /* character number, location */
+         14, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x38\x8c\x08\x1a\x3c\x78\xf0\x60\xe3\xbc\x01\x03\x1a"
+            "\x36\xc6\x03" }  },
       /* --- pixel bitmap for cmr160 char#58 : --- */
-      {  58, 4975,                      /* character number, location */
-          9, 2,     0, 2,     /* topleft row,col, and botleft row,col */
-          {  2,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\xc0\x03" }  },
+      {  58,96888,                      /* character number, location */
+         10, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  2,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\x00\x0f" }  },
       /* --- pixel bitmap for cmr160 char#59 ; --- */
-      {  59, 4992,                      /* character number, location */
-          9, 2,    -4, 2,     /* topleft row,col, and botleft row,col */
-          {  2,    13, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\x40\xeb\x01" }  },
+      {  59,97551,                      /* character number, location */
+         10, 2,   -4, 2,      /* topleft row,col, and botleft row,col */
+          {  2,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\x00\xaf\x05" }  },
       /* --- pixel bitmap for cmr160 char#60 (noname) --- */
-      {  60, 4508,                      /* character number, location */
-         10, 2,    -4, 2,     /* topleft row,col, and botleft row,col */
-          {  2,    14, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\xfc\xff\x0f" }  },
+      {  60,89485,                      /* character number, location */
+         11, 2,   -4, 2,      /* topleft row,col, and botleft row,col */
+          {  2,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\xf0\xff\x3f" }  },
       /* --- pixel bitmap for cmr160 char#61 = --- */
-      {  61, 5017,                      /* character number, location */
-          8, 1,     1, 1,     /* topleft row,col, and botleft row,col */
-          { 14,     7, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\x03" }  },
+      {  61,98227,                      /* character number, location */
+          9, 1,    2, 1,      /* topleft row,col, and botleft row,col */
+          { 15,    7, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x01\xf4\xe0\x1e\x01" }  },
       /* --- pixel bitmap for cmr160 char#62 (noname) --- */
-      {  62, 3919,                      /* character number, location */
-         10, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    14, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x0c\x06\x00\x00\x60\x10\x08\x04\xc3\x68\x3c\xf6\x00" }  },
-      /* --- pixel bitmap for cmr160 char#63 (noname) --- */
-      {  63, 3882,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    14, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xbe\xf0\x58\x0c\x43\x20\x10\x0c\x00\x00\xc0\x60\x00" }  },
-      /* --- pixel bitmap for cmr160 char#64 (noname) --- */
-      {  64, 5030,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x01\x86\x41\x80\x88\x47\x33\x77\x86\x99\x61\x66"
-            "\x98\x19\xe6\xcc\x2d\xde\x11\x00\x18\x38\xf8\x03" }  },
+      {  62,78127,                      /* character number, location */
+         11, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x18\x18\x00\x00\x00\x00\x18\x08\x08\x0c\x06\x03\xc3"
+            "\xc3\x3c" }  },
+      /* --- pixel bitmap for cmr160 char#63 ? --- */
+      {  63,77219,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\xc3\xc3\xc0\x60\x30\x10\x10\x18\x00\x00\x00\x00"
+            "\x18\x18" }  },
+      /* --- pixel bitmap for cmr160 char#64 @ --- */
+      {  64,99397,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe0\x03\x0c\x06\x01\x44\x38\x24\x23\x8a\x60\x66\x30"
+            "\x33\x98\x19\xcc\x08\xa6\x8c\x4b\x38\x47\x00\xc0\x80"
+            "\x83\x3f\x00" }  },
       /* --- pixel bitmap for cmr160 char#65 A --- */
-      {  65,   35,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xc0\x00\x30\x00\x0c\x80\x06\xa0\x01\xec\x00\x31\x40"
-            "\x0c\x08\x06\xfe\x81\x60\x10\x30\x04\xcc\xc7\x0f" }  },
+      {  65, 1026,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 3,50, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x71\x70\xf2\x63\x60\xf2\x51\x22\x50\xf1\x41\x42\x40"
+            "\x47\x40\xf1\x31\x62\x30\x22\x63\x41\x82\x25\x46" }  },
       /* --- pixel bitmap for cmr160 char#66 B --- */
-      {  66,   90,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 13,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x83\xc1\x30\x30\x06\xc6\xc0\x18\x0c\xff\x60\x70"
-            "\x0c\x98\x01\x33\x60\x06\xcc\xc0\xfe\x0f" }  },
+      {  66, 2324,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   15, 3,49, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0a\x62\x62\x20\xf2\x22\x72\x10\x22\x63\x32\x53\x4a"
+            "\x42\x72\x10\xf2\x22\x82\x22\x73\x22\x63\x1b\x36" }  },
       /* --- pixel bitmap for cmr160 char#67 C --- */
-      {  67,  147,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 13,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x13\x83\x33\x60\x03\x28\x00\x07\xc0\x00\x18\x00"
-            "\x03\x40\x00\x1a\x40\x06\x84\x41\xc0\x07" }  },
+      {  67, 3249,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   15, 3,41, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x56\x21\x32\x63\x22\x82\xf1\x12\xa1\x0f\x42\xc0\xf1"
+            "\x12\xa1\x22\x81\x42\x61\x76\x33" }  },
       /* --- pixel bitmap for cmr160 char#68 D --- */
-      {  68,  200,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x03\x83\xc1\x80\x30\x60\x0c\x30\x03\xcc\x00\x33"
-            "\xc0\x0c\x30\x03\xcc\x80\x31\x20\x0c\xc6\xff\x00" }  },
+      {  68, 4327,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 3,45, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0a\x72\x62\x52\x72\x42\x82\x32\x91\x10\xf4\x22\x92"
+            "\x22\x91\x32\x82\x32\x72\x42\x62\x3a\x53" }  },
       /* --- pixel bitmap for cmr160 char#69 E --- */
-      {  69,  259,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 12,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xc7\x60\x0c\xc4\x80\x8c\xc8\x08\xfc\xc0\x08\x8c"
-            "\xc8\x80\x0c\xcc\x40\x0c\xf6\x7f" }  },
+      {  69, 5720,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x8f\x81\x31\x20\x06\xc8\x10\x19\x02\x63\xe0\x0f"
+            "\x8c\x81\x21\x32\x44\x06\xcc\x80\x18\xd8\xff\x03" }  },
       /* --- pixel bitmap for cmr160 char#70 F --- */
-      {  70,  320,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 12,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xc7\x60\x0c\xc4\x80\x0c\xc9\x10\xfc\xc1\x10\x0c"
-            "\xc1\x00\x0c\xc0\x00\x0c\xf0\x07" }  },
+      {  70, 6949,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\xc7\x60\x0c\xc4\x80\x0c\xc9\x10\x8c\xc1\x1f\x8c"
+            "\xc1\x10\x0c\xc1\x00\x0c\xc0\x00\x7f\x00" }  },
       /* --- pixel bitmap for cmr160 char#71 G --- */
-      {  71,  371,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x13\x06\xc7\x80\x19\x40\x02\xd0\x00\x30\x00\x0c"
-            "\x00\x03\xbf\x00\x66\x80\x31\x60\x18\x1c\xf8\x04" }  },
+      {  71, 8116,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   15, 3,53, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x56\x21\x52\x63\x42\x82\x20\xf1\x12\xa1\x2f\x22\xe2"
+            "\x79\xa2\x20\xf1\x12\x92\x20\x22\x82\x52\x63\x76\x21"
+            "\x22" }  },
       /* --- pixel bitmap for cmr160 char#72 H --- */
-      {  72,  428,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\x3f\x03\xc3\xc0\x30\x30\x0c\x0c\x03\xc3\xff\x30"
-            "\x30\x0c\x0c\x03\xc3\xc0\x30\x30\x0c\xcc\xcf\x0f" }  },
+      {  72, 9281,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 3,26, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\x36\xf5\x22\x72\x20\x2b\x20\xf5\x22\x72\x26\x36" }  },
       /* --- pixel bitmap for cmr160 char#73 I --- */
-      {  73,  489,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    14, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x3f\xc3\x30\x0c\xc3\x30\x0c\xc3\x30\xcc\x0f" }  },
+      {  73, 9952,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,   15, 3, 8, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\xfc\x32\x38" }  },
       /* --- pixel bitmap for cmr160 char#74 J --- */
-      {  74,  524,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xfc\xc1\x80\x01\x03\x06\x0c\x18\x30\x60\xc0\x80\x19"
-            "\x33\xc7\x03" }  },
+      {  74,10750,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   15, 3,17, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x37\xfa\x62\x22\x42\x22\x32\x45\x45" }  },
       /* --- pixel bitmap for cmr160 char#75 K --- */
-      {  75,  563,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\x1f\x83\xc1\x30\x30\x04\x8c\x00\x33\xc0\x0e\x70"
-            "\x06\x8c\x01\xc3\xc0\x60\x30\x18\x0c\xcc\x8f\x0f" }  },
+      {  75,11895,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f\x3e\x06\x06\x83\x81\x61\xc0\x18\x60\x04\x30\x03"
+            "\x58\x03\x1c\x03\x86\x01\x83\x81\x81\xc1\xc0\x60\xc0"
+            "\xfc\xf8\x01" }  },
       /* --- pixel bitmap for cmr160 char#76 L --- */
-      {  76,  626,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x7f\x60\x00\x03\x18\xc0\x00\x06\x30\x80\x01\x0c\x64"
-            "\x20\x03\x19\xc4\xb0\xff\x01" }  },
+      {  76,12842,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   15, 3,31, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x07\x50\xf7\x22\x80\xf1\x22\x71\x22\x62\x22\x61\x32"
+            "\x52\x1b\x11" }  },
       /* --- pixel bitmap for cmr160 char#77 M --- */
-      {  77,  671,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 17,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x1f\xf0\x39\xe0\x70\xc0\xa1\x41\x43\x83\x86\x06\x0d"
-            "\x19\x19\x32\x32\xc4\x62\x88\xc5\x10\x8b\x21\x0c\x43"
-            "\x18\xe6\x33\x3f" }  },
+      {  77,14116,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 18,   15, 3,62, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05\x85\xf1\x23\x83\x20\xf1\x21\x12\x61\x12\x20\xf2"
+            "\x21\x22\x41\x22\x20\xf2\x21\x32\x21\x32\x20\xf2\x21"
+            "\x43\x42\x25\x31\x36" }  },
       /* --- pixel bitmap for cmr160 char#78 N --- */
-      {  78,  772,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x0f\x3e\x07\x42\x83\xd0\x20\x64\x08\x31\x42\x8c\x10"
-            "\x26\x84\x0b\xc1\x42\xe0\x10\x38\x04\xcc\x07\x02" }  },
+      {  78,15246,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\x7c\x0e\x08\x0d\x84\x0e\x42\x06\x21\x86\x10\x47"
+            "\x08\x23\x04\x13\x82\x0b\x81\x85\x80\x43\xc0\x21\xc0"
+            "\x7c\x40\x00" }  },
       /* --- pixel bitmap for cmr160 char#79 O --- */
-      {  79,  851,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x03\x86\x41\x80\x18\x60\x03\xf0\x00\x3c\x00\x0f"
-            "\xc0\x03\xf0\x00\x6c\x80\x31\x30\x18\x06\xfc\x00" }  },
+      {  79,16111,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 3,43, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x55\x82\x52\x52\x72\x32\x92\x21\xb1\x1f\x42\xb2\xf1"
+            "\x12\x92\x10\x22\x72\x52\x52\x85\x51" }  },
       /* --- pixel bitmap for cmr160 char#80 P --- */
-      {  80,  910,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 12,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xc1\x60\x0c\xcc\xc0\x0c\xcc\xc0\x0c\xc6\x1f\x0c"
-            "\xc0\x00\x0c\xc0\x00\x0c\xf0\x03" }  },
+      {  80,17218,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   15, 3,29, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0a\x52\x62\x10\xf3\x22\x72\x22\x62\x38\x30\xf5\x22"
+            "\x96\x72" }  },
       /* --- pixel bitmap for cmr160 char#81 Q --- */
-      {  81,  957,                      /* character number, location */
-         14, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    18, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x03\x86\xc1\xc0\x18\x60\x03\xf0\x00\x3c\x00\x0f"
-            "\xc0\x03\xf0\x00\x6c\x80\xb1\x33\x38\x07\xfc\x00\x20"
-            "\x00\x88\x00\x3c\x00\x07" }  },
+      {  81,18235,                      /* character number, location */
+         15, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   19, 3,57, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x55\x82\x52\x52\x72\x20\xf1\x12\x92\x1f\x42\xb2\xf1"
+            "\x12\x92\x10\x22\x23\x22\x53\x33\x85\xe0\x11\xe1\x31"
+            "\xb4\xb3\x11" }  },
       /* --- pixel bitmap for cmr160 char#82 R --- */
-      {  82, 1028,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 15,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x03\x06\x03\x03\x83\x81\xc1\xc0\x60\x30\xf0\x0f"
-            "\x18\x06\x0c\x06\x06\x03\x83\x81\xc1\xc0\x60\xfc\xe1"
-            "\x01" }  },
+      {  82,19524,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 3,45, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09\x82\x52\x40\xf3\x22\x62\x30\x22\x52\x67\x82\x42"
+            "\x50\xf3\x22\x52\x40\x22\x52\x37\x44\x10" }  },
       /* --- pixel bitmap for cmr160 char#83 S --- */
-      {  83, 1089,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xbc\x8c\x0d\x1a\x34\xc0\x81\x1f\x7c\xc0\x01\x07\x0e"
-            "\x3c\xac\x0f" }  },
+      {  83,20569,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7c\x19\x36\xd0\x40\x03\x1c\xe0\x07\x3f\xc0\x01\x0c"
+            "\x70\xc0\x01\x0f\xd6\x0f" }  },
       /* --- pixel bitmap for cmr160 char#84 T --- */
-      {  84, 1140,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 13,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x7f\x18\x07\xc3\x60\x18\x0c\x81\x01\x30\x00\x06"
-            "\xc0\x00\x18\x00\x03\x60\x00\x0c\xf0\x0f" }  },
+      {  84,21647,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   15, 3,25, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x02\x42\x42\x0f\x21\x52\x51\xf8\x62\x60\x38\x30" }  },
       /* --- pixel bitmap for cmr160 char#85 U --- */
-      {  85, 1191,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\x3e\x03\xc2\x80\x30\x20\x0c\x08\x03\xc2\x80\x30"
-            "\x20\x0c\x08\x03\xc2\x80\x20\x10\x18\x06\x78\x00" }  },
+      {  85,22629,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   15, 3,23, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\x45\xfa\x22\x81\x20\x32\x61\x72\x41\x95\x58" }  },
       /* --- pixel bitmap for cmr160 char#86 V --- */
-      {  86, 1252,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 16,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\xf8\x18\x10\x18\x10\x18\x10\x30\x08\x30\x08\x60"
-            "\x04\x60\x04\x60\x04\xc0\x02\xc0\x02\xc0\x03\x80\x01"
-            "\x80\x01" }  },
+      {  86,23617,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 17,   15, 3,57, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x07\x46\xf1\x32\x81\x30\x33\x62\x30\xf1\x42\x61\x40"
+            "\xf1\x52\x41\x50\x53\x22\x50\xf1\x62\x21\x60\xf2\x73"
+            "\x70\x81\x81" }  },
       /* --- pixel bitmap for cmr160 char#87 W --- */
-      {  87, 1309,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 22,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\x3f\x3e\x03\x07\x82\xc1\x41\x60\x70\x10\x18\x32"
-            "\x04\x8c\x8c\x00\x23\x23\xc0\xcc\x09\x60\x61\x01\x58"
-            "\x58\x00\x16\x16\x00\x03\x03\xc0\xc0\x00\x30\x30\x00" }  },
+      {  87,25014,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 23,   15, 3,57, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\x36\x26\x22\x72\x62\x20\xf2\x32\x51\x12\x51\x30"
+            "\xf2\x42\x31\x32\x31\x40\xf3\x52\x11\x52\x11\x50\xf2"
+            "\x62\x72\x61" }  },
       /* --- pixel bitmap for cmr160 char#88 X --- */
-      {  88, 1408,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 16,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x7e\x7e\x38\x08\x30\x04\x60\x02\xe0\x02\xc0\x01\x80"
-            "\x01\x80\x03\x40\x03\x20\x06\x20\x0e\x10\x0c\x18\x18"
-            "\x3f\xfc" }  },
+      {  88,26135,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 17,   15, 3,58, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x16\x36\x43\x52\x82\x51\xa2\x31\xc2\x12\xc2\x11\xe2"
+            "\x80\xf1\x73\x70\x61\x22\xb2\x32\xa1\x42\x91\x62\x72"
+            "\x72\x36\x47" }  },
       /* --- pixel bitmap for cmr160 char#89 Y --- */
-      {  89, 1465,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 16,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\xf8\x18\x10\x38\x10\x30\x08\x60\x04\x60\x04\xc0"
-            "\x02\xc0\x03\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01"
-            "\xe0\x07" }  },
+      {  89,27277,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 17,   15, 3,43, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x07\x46\x32\x81\x72\x62\x73\x51\x92\x42\xa2\x31\xb3"
+            "\x11\xd2\x11\x60\xf5\x82\x70\x66\x51" }  },
       /* --- pixel bitmap for cmr160 char#90 Z --- */
-      {  90, 1514,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x3f\xd8\xe0\x02\x13\x0c\x70\x80\x01\x06\x38\xc4"
-            "\x20\x03\x1d\x6c\xf0\xff\x03" }  },
+      {  90,28316,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfe\xef\x60\x06\x27\x30\x82\x01\x1c\xc0\x00\x06\x30"
+            "\x80\x83\x18\xc8\x80\x0e\x6c\xe0\xff\x0f" }  },
       /* --- pixel bitmap for cmr160 char#91 [ --- */
-      {  91, 5115,                      /* character number, location */
-         15, 1,    -5, 1,     /* topleft row,col, and botleft row,col */
-          {  4,    20, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x1f\x11\x11\x11\x11\x11\x11\x11\x11\xf1" }  },
+      {  91,100130,                     /* character number, location */
+         17, 2,   -6, 2,      /* topleft row,col, and botleft row,col */
+          {  4,   23, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x0f\xe1\x3f\x51\x34" }  },
       /* --- pixel bitmap for cmr160 char#92 (noname) --- */
-      {  92, 5815,                      /* character number, location */
-         14, 3,     8, 3,     /* topleft row,col, and botleft row,col */
-          {  6,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe2\x1c\x45\xb3\x08" }  },
+      {  92,118659,                     /* character number, location */
+         15, 4,    9, 4,      /* topleft row,col, and botleft row,col */
+          {  6,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xa2\x18\x45\xf3\x0c" }  },
       /* --- pixel bitmap for cmr160 char#93 ] --- */
-      {  93, 5162,                      /* character number, location */
-         15, 0,    -5, 0,     /* topleft row,col, and botleft row,col */
-          {  4,    20, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x8f\x88\x88\x88\x88\x88\x88\x88\x88\xf8" }  },
+      {  93,100824,                     /* character number, location */
+         17, 0,   -6, 0,      /* topleft row,col, and botleft row,col */
+          {  5,   23, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05\xfe\x41\xf5\x41\x05" }  },
       /* --- pixel bitmap for cmr160 char#94 \^ --- */
-      {  94, 5357,                      /* character number, location */
-         13, 3,    11, 3,     /* topleft row,col, and botleft row,col */
-          {  4,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x96" }  },
+      {  94,106997,                     /* character number, location */
+         15, 3,   12, 3,      /* topleft row,col, and botleft row,col */
+          {  5,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x44\x45" }  },
       /* --- pixel bitmap for cmr160 char#95 (noname) --- */
-      {  95, 5370,                      /* character number, location */
-         14, 2,    12, 2,     /* topleft row,col, and botleft row,col */
-          {  1,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x03" }  },
+      {  95,107464,                     /* character number, location */
+         16, 2,   14, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f" }  },
       /* --- pixel bitmap for cmr160 char#96 (noname) --- */
-      {  96, 5209,                      /* character number, location */
-         14, 2,     8, 2,     /* topleft row,col, and botleft row,col */
-          {  2,     6, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5e\x0b" }  },
+      {  96,101438,                     /* character number, location */
+         15, 2,    9, 2,      /* topleft row,col, and botleft row,col */
+          {  2,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5a\x0f" }  },
       /* --- pixel bitmap for cmr160 char#97 a --- */
-      {  97, 1567,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,     9, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x1e\x46\x80\xc1\xe3\x66\xcc\xd8\xb1\xfe\x00" }  },
+      {  97,29456,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\x98\x01\x0c\x30\xfc\x18\x33\xcc\xb0\xe3\x72\x07" }  },
       /* --- pixel bitmap for cmr160 char#98 b --- */
-      {  98, 1606,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 10,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x0f\x30\xc0\x00\x03\x0c\xb0\xc3\x19\xc3\x0c\x33\xcc"
-            "\x30\xc3\x9c\xd1\x03" }  },
+      {  98,30458,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 11,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\x60\x00\x03\x18\xc0\x00\x76\x70\x8c\x41\x0c\x66"
+            "\x30\x83\x19\xcc\x20\x8e\x90\x03" }  },
       /* --- pixel bitmap for cmr160 char#99 c --- */
-      {  99, 1659,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3c\xf3\x60\x30\x18\x0c\x8c\x3c" }  },
+      {  99,31233,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x78\xc4\x02\x03\x03\x03\x03\x02\x84\x78" }  },
       /* --- pixel bitmap for cmr160 char#100 d --- */
-      { 100, 1688,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x00\x03\x0c\x30\xc0\xf0\x63\xcc\x30\xc3\x0c\x33"
-            "\xcc\x30\xe6\x70\x0f" }  },
+      { 100,32224,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe0\x01\x0c\x60\x00\x03\x18\xdc\x10\x47\x30\x83\x19"
+            "\xcc\x60\x06\x23\x18\xe3\xe0\x1e" }  },
       /* --- pixel bitmap for cmr160 char#101 e --- */
-      { 101, 1739,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3c\xd3\xf8\x3f\x18\x0c\x8c\x3c" }  },
+      { 101,32984,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3c\x66\xc2\xc3\xff\x03\x03\x02\x86\x78" }  },
       /* --- pixel bitmap for cmr160 char#102 f --- */
-      { 102, 1770,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x70\xc8\x0c\x0c\x0c\x3f\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
-            "\x3f" }  },
+      { 102,33805,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,   15, 3,21, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x44\x42\x22\xf2\x22\x57\x20\xf7\x22\x56\x32" }  },
       /* --- pixel bitmap for cmr160 char#103 g --- */
-      { 103, 1807,                      /* character number, location */
-          9, 0,    -5, 0,     /* topleft row,col, and botleft row,col */
-          { 10,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xb8\x13\x69\x8c\x31\x44\xf8\x60\x80\x3f\xfc\x09\x3e"
-            "\xf0\xc0\x86\xe1\x01" }  },
+      { 103,35038,                      /* character number, location */
+         10, 1,   -5, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbc\x9b\x39\xcc\x30\xc3\x98\xe1\xc3\x00\x7e\xf8\x33"
+            "\xd8\x60\x83\x19\xc3\x07" }  },
       /* --- pixel bitmap for cmr160 char#104 h --- */
-      { 104, 1862,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x0f\x60\x00\x03\x18\xc0\x00\x76\x70\x86\x31\x8c\x61"
-            "\x0c\x63\x18\xc3\x98\xdf\x03" }  },
+      { 104,36015,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   15, 3,30, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x80\xf3\x22\x80\x22\x14\x53\x32\x20\xf6\x22\x42"
+            "\x26\x15" }  },
       /* --- pixel bitmap for cmr160 char#105 i --- */
-      { 105, 1915,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,    14, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x66\x00\x70\x66\x66\x66\xf6" }  },
+      { 105,36730,                      /* character number, location */
+         16, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,   16, 3,18, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x22\x20\xf3\x64\x20\xf7\x22\x26" }  },
       /* --- pixel bitmap for cmr160 char#106 j --- */
-      { 106, 1946,                      /* character number, location */
-         14,-2,    -4,-2,     /* topleft row,col, and botleft row,col */
-          {  6,    18, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x30\x0c\x00\x00\x0f\xc3\x30\x0c\xc3\x30\x0c\xc3\xf3"
-            "\x03" }  },
+      { 106,37498,                      /* character number, location */
+         16,-2,   -4,-2,      /* topleft row,col, and botleft row,col */
+          {  7,   20, 3,19, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x52\xf3\x70\x34\xfa\x52\x02\x28\x20" }  },
       /* --- pixel bitmap for cmr160 char#107 k --- */
-      { 107, 1987,                      /* character number, location */
-         14, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    14, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x0f\x60\x00\x03\x18\xc0\x00\xf6\x31\x83\x0d\x3c\xe0"
-            "\x03\x3b\x98\xc1\x98\xcf\x03" }  },
+      { 107,38588,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\xc0\x00\x0c\xc0\x00\x0c\xc0\x7c\x8c\xc1\x04\x6c"
+            "\xc0\x07\xcc\xc0\x1c\x8c\xc1\x30\x9f\x0f" }  },
       /* --- pixel bitmap for cmr160 char#108 l --- */
-      { 108, 2036,                      /* character number, location */
-         14, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  4,    14, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x67\x66\x66\x66\x66\x66\xf6" }  },
+      { 108,39207,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,   15, 3,10, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x20\xfc\x22\x26" }  },
       /* --- pixel bitmap for cmr160 char#109 m --- */
-      { 109, 2071,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 18,     9, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xef\x79\x70\x1c\xc3\x30\x0c\xc3\x30\x0c\xc3\x30\x0c"
-            "\xc3\x30\x0c\xc3\x30\xbf\xef\x03" }  },
+      { 109,40516,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 18,   10, 3,28, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x14\x24\x53\x33\x32\x20\xf6\x22\x42\x42\x26\x15"
+            "\x15" }  },
       /* --- pixel bitmap for cmr160 char#110 n --- */
-      { 110, 2132,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,     9, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xef\xe0\x0c\x63\x18\xc3\x18\xc6\x30\x86\x31\xbf\x07" }  },
+      { 110,41501,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   10, 3,20, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x14\x53\x32\x20\xf6\x22\x42\x26\x15" }  },
       /* --- pixel bitmap for cmr160 char#111 o --- */
-      { 111, 2175,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x3c\x66\xc3\xc3\xc3\xc3\xc3\x66\x3c" }  },
+      { 111,42198,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x38\x8c\x09\x1a\x3c\x78\xf0\x60\x41\xc6\x70\x00" }  },
       /* --- pixel bitmap for cmr160 char#112 p --- */
-      { 112, 2214,                      /* character number, location */
-          9, 0,    -4, 0,     /* topleft row,col, and botleft row,col */
-          { 10,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xef\x70\xc6\x30\xc3\x0c\x33\xcc\x30\x67\xfc\x30\xc0"
-            "\x00\x03\x3f\x00" }  },
+      { 112,43264,                      /* character number, location */
+         10, 0,   -4, 0,      /* topleft row,col, and botleft row,col */
+          { 11,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xef\xe0\x18\x83\x18\xcc\x60\x06\x33\x98\x61\x1c\x61"
+            "\x07\x03\x18\xc0\x80\x1f\x00" }  },
       /* --- pixel bitmap for cmr160 char#113 q --- */
-      { 113, 2263,                      /* character number, location */
-          9, 1,    -4, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x38\x31\x8e\x60\x06\x33\x98\xc1\x08\xc6\x38\xbc\x01"
-            "\x0c\x60\x00\x03\x7e" }  },
+      { 113,44268,                      /* character number, location */
+         10, 1,   -4, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x78\x42\x38\x06\x33\x30\x03\x33\x30\x03\x63\x30\x84"
+            "\x83\x37\x00\x03\x30\x00\x03\xfc" }  },
       /* --- pixel bitmap for cmr160 char#114 r --- */
-      { 114, 2314,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7f\xdc\x0c\x0c\x0c\x0c\x0c\x0c\x3f" }  },
+      { 114,45127,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,   10, 3,19, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x13\x33\x22\x23\x40\xf5\x22\x56\x30" }  },
       /* --- pixel bitmap for cmr160 char#115 s --- */
-      { 115, 2341,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  6,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xfe\x38\x3e\x1e\x1c\xc7\x1f" }  },
+      { 115,46060,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  7,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfe\xe1\xf0\xe0\xe3\x87\xc3\xa3\x0e" }  },
       /* --- pixel bitmap for cmr160 char#116 t --- */
-      { 116, 2374,                      /* character number, location */
-         12, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  7,    12, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x08\x04\xe3\xcf\x60\x30\x18\x4c\x26\x13\x07" }  },
+      { 116,46885,                      /* character number, location */
+         14, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  8,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x08\x0c\x0c\x7f\x0c\x0c\x0c\x0c\x0c\x8c\x8c\x8c"
+            "\x78" }  },
       /* --- pixel bitmap for cmr160 char#117 u --- */
-      { 117, 2411,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,     9, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xef\x61\x0c\x63\x18\xc3\x18\xc6\x30\x86\x39\xf8\x07" }  },
+      { 117,47808,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   10, 3,22, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x24\x20\xf6\x22\x42\x20\x22\x33\x54\x14" }  },
       /* --- pixel bitmap for cmr160 char#118 v --- */
-      { 118, 2452,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,     9, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x9f\x67\x08\x67\x30\x81\x09\x38\xc0\x01\x0e\x20\x00" }  },
+      { 118,48674,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\xcf\x20\x18\x81\x11\x18\x01\x0b\xb0\x00\x06\x60"
+            "\x00\x06" }  },
       /* --- pixel bitmap for cmr160 char#119 w --- */
-      { 119, 2487,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 15,     9, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xcf\x7b\xc6\x08\x63\x04\x6b\x81\xb5\xc0\x5a\xc0\x18"
-            "\x60\x0c\x30\x06" }  },
+      { 119,49923,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 16,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9f\xf3\x8c\x23\x8c\x23\xd8\x13\x58\x16\x58\x16\x78"
+            "\x1e\x30\x0c\x30\x0c\x30\x0c" }  },
       /* --- pixel bitmap for cmr160 char#120 x --- */
-      { 120, 2548,                      /* character number, location */
-          9, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 11,     9, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xdf\x67\x04\x16\xe0\x00\x06\x38\x20\x83\x31\xcf\x07" }  },
+      { 120,50892,                      /* character number, location */
+         10, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9f\x8f\x11\x98\x00\x0f\x60\x00\x06\xd0\x80\x19\x88"
+            "\xf3\xf9" }  },
       /* --- pixel bitmap for cmr160 char#121 y --- */
-      { 121, 2585,                      /* character number, location */
-          9, 0,    -4, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    13, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x9f\x67\x08\x67\x30\x81\x09\x38\xc0\x01\x0e\x20\x00"
-            "\x01\x04\x26\xe0\x00" }  },
+      { 121,51955,                      /* character number, location */
+         10, 0,   -4, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   14, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\xcf\x20\x18\x81\x11\x18\x01\x0b\xb0\x00\x06\x60"
+            "\x00\x06\x20\x00\x02\x13\xe0\x00" }  },
       /* --- pixel bitmap for cmr160 char#122 z --- */
-      { 122, 2630,                      /* character number, location */
-          9, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,     9, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x59\x2c\xc3\x61\x1a\xcd\x7f" }  },
+      { 122,52914,                      /* character number, location */
+         10, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   10, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x63\x61\x31\x18\x98\x8c\x86\xc6\xff" }  },
       /* --- pixel bitmap for cmr160 char#123 (noname) --- */
-      { 123, 5846,                      /* character number, location */
-          6, 0,     5, 0,     /* topleft row,col, and botleft row,col */
-          { 10,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x03" }  },
+      { 123,119267,                     /* character number, location */
+          7, 0,    6, 0,      /* topleft row,col, and botleft row,col */
+          { 11,    1, 3, 2, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0b" }  },
       /* --- pixel bitmap for cmr160 char#124 (noname) --- */
-      { 124, 5855,                      /* character number, location */
-          6, 0,     5, 0,     /* topleft row,col, and botleft row,col */
-          { 21,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\xff\x1f" }  },
+      { 124,120087,                     /* character number, location */
+          7, 0,    6, 0,      /* topleft row,col, and botleft row,col */
+          { 22,    1, 3, 4, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x08" }  },
       /* --- pixel bitmap for cmr160 char#125 (noname) --- */
-      { 125, 5381,                      /* character number, location */
-         14, 2,    11, 2,     /* topleft row,col, and botleft row,col */
-          {  6,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xb6\x2d\x01" }  },
+      { 125,108141,                     /* character number, location */
+         15, 3,   11, 3,      /* topleft row,col, and botleft row,col */
+          {  6,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf3\x1c\x45" }  },
       /* --- pixel bitmap for cmr160 char#126 \~ --- */
-      { 126, 5400,                      /* character number, location */
-         13, 2,    10, 2,     /* topleft row,col, and botleft row,col */
-          {  6,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xa4\x97\x00" }  },
+      { 126,108825,                     /* character number, location */
+         15, 2,   12, 2,      /* topleft row,col, and botleft row,col */
+          {  7,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x44\x5f\x04" }  },
       /* --- pixel bitmap for cmr160 char#127 (noname) --- */
-      { 127, 5417,                      /* character number, location */
-         14, 2,    12, 2,     /* topleft row,col, and botleft row,col */
-          {  6,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf3\x0c" }  },
+      { 127,109506,                     /* character number, location */
+         16, 2,   14, 2,      /* topleft row,col, and botleft row,col */
+          {  7,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe3\x31" }  },
       /* --- trailer  --- */
-      { -99, -999,  0,0,0,0, { 0,0,0, (pixbyte *)"\0" }  }
+      { -99, -999,  0,0,0,0, { 0,0,0,0, (pixbyte *)"\0" }  }
    } ;
 
 
-/* --- size=5 ---
- * mf '\mode=lqlores; input cmr10'    gives .gf180
- * ----------------------------------------------- */
+/* --- size=5 for .180gf ---
+ * mf '\mode=preview; mag=magstep(-14.65037297372839890542); input cmr10'
+ * --------------------------------------------------------------------- */
 /* --- fontdef for cmr180 --- */
 static	chardef  cmr180[] =
    {
-      /* --- pixel bitmap for cmr180 char#0 (noname) --- */
-      {   0, 3225,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 14,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x1f\x06\x86\x01\x61\xc0\x18\x20\x06\x88\x01\x60"
-            "\x00\x18\x00\x06\x80\x01\x60\x00\x18\x00\x06\x80\x01"
-            "\x60\x00\xff\x00" }  },
-      /* --- pixel bitmap for cmr180 char#1 (noname) --- */
-      {   1, 3276,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 18,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x00\x03\x00\x0c\x00\x68\x00\xa0\x01\x40\x0c\x00\x31"
-            "\x00\x82\x01\x08\x06\x10\x30\x40\xc0\x80\x00\x06\x02"
-            "\x18\x04\xc0\x10\x00\x23\x00\x98\xff\x7f\xff\xff\x03" }  },
-      /* --- pixel bitmap for cmr180 char#2 (noname) --- */
-      {   2, 3343,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x07\x38\x1c\x0c\x30\x04\x20\x06\x60\x02\x40\x13"
-            "\xc8\xf3\xcf\xf3\xcf\x13\xc8\x03\xc0\x03\xc0\x06\x60"
-            "\x04\x20\x0c\x30\x38\x1c\xe0\x07" }  },
-      /* --- pixel bitmap for cmr180 char#3 (noname) --- */
-      {   3, 3426,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xc0\x00\x30\x00\x0c\x80\x07\xa0\x01\x68\x00\x1a\x40"
-            "\x0c\x10\x03\xc4\x80\x60\x20\x18\x08\x06\x81\x43\xc0"
-            "\x30\x30\x1f\x3f" }  },
-      /* --- pixel bitmap for cmr180 char#4 (noname) --- */
-      {   4, 3493,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xff\xff\x1f\x00\x06\x80\x00\x00\x00\x40\x80\xf0"
-            "\x3f\xfc\x0f\x01\x02\x00\x00\x00\x00\x40\x00\x18\x00"
-            "\xfe\xff\xff\x3f" }  },
-      /* --- pixel bitmap for cmr180 char#5 (noname) --- */
-      {   5, 3540,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 18,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xff\x63\x80\x81\x01\x06\x06\x18\x18\x60\x60\x80"
-            "\x81\x01\x06\x06\x18\x18\x60\x60\x80\x81\x01\x06\x06"
-            "\x18\x18\x60\x60\x80\x81\x01\x06\x06\x18\xff\xfc\x03" }  },
-      /* --- pixel bitmap for cmr180 char#6 (noname) --- */
-      {   6, 3613,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 15,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x3f\x03\x9c\x03\x88\x01\x8c\x01\xc4\x00\xc2\x00"
-            "\xc0\x00\x60\x00\x20\x00\x08\x00\x02\x88\x00\x24\x00"
-            "\x13\x80\x04\x70\xff\x3f" }  },
-      /* --- pixel bitmap for cmr180 char#7 (noname) --- */
-      {   7, 3674,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x1c\x38\x3e\x7c\x61\x86\x41\x82\x80\x01\x80\x01\x80"
-            "\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01"
-            "\x80\x01\x80\x01\x80\x01\xf0\x0f" }  },
-      /* --- pixel bitmap for cmr180 char#8 (noname) --- */
-      {   8, 3731,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 15,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x0f\xc0\x00\x60\x00\x30\x00\x7f\x60\xcc\x18\xc6"
-            "\x06\xc3\x83\xe1\xc1\xb0\x61\x8c\x31\x03\x7f\x00\x0c"
-            "\x00\x06\x00\x03\xf0\x0f" }  },
-      /* --- pixel bitmap for cmr180 char#9 (noname) --- */
-      {   9, 3800,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x0f\x80\x01\x80\x01\x87\xe1\x8c\x31\x8c\x31\x8c"
-            "\x31\x8c\x31\x8c\x31\x8c\x31\x98\x19\xb0\x0d\xe0\x07"
-            "\x80\x01\x80\x01\x80\x01\xf0\x0f" }  },
-      /* --- pixel bitmap for cmr180 char#10 (noname) --- */
-      {  10, 3877,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 15,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x07\x0c\x86\x01\xcc\x00\x36\x00\x1e\x00\x0f\x80"
-            "\x07\xc0\x02\x20\x03\x18\x01\x84\x01\x83\x80\x48\x40"
-            "\x46\x10\x3d\x78\x1e\x3c" }  },
-      /* --- pixel bitmap for cmr180 char#11 (noname) --- */
-      {  11, 6564,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x7b\x18\xce\x0c\x06\x0c\x06\x0c\x06\x0c\x06\xff"
-            "\x3f\x0c\x06\x0c\x06\x0c\x06\x0c\x06\x0c\x06\x0c\x06"
-            "\x0c\x06\x0c\x06\x0c\x06\x1f\x1f" }  },
-      /* --- pixel bitmap for cmr180 char#12 (noname) --- */
-      {  12, 6639,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x03\xc3\x30\x18\x06\xc0\x00\x18\xc0\xff\x61\x30"
-            "\x0c\x86\xc1\x30\x18\x06\xc3\x60\x18\x0c\x83\x61\x30"
-            "\x1f\x1f" }  },
-      /* --- pixel bitmap for cmr180 char#13 (noname) --- */
-      {  13, 6704,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x07\xc3\x30\x18\x06\xc3\x60\x18\xcc\xff\x61\x30"
-            "\x0c\x86\xc1\x30\x18\x06\xc3\x60\x18\x0c\x83\x61\x30"
-            "\xbf\x1f" }  },
-      /* --- pixel bitmap for cmr180 char#14 (noname) --- */
-      {  14, 6775,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 20,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\xf3\x81\xe1\x30\x0c\x06\xc3\x60\x00\x0c\x06\xc0"
-            "\x60\x00\xff\xff\xc3\x60\x30\x0c\x06\xc3\x60\x30\x0c"
-            "\x06\xc3\x60\x30\x0c\x06\xc3\x60\x30\x0c\x06\xc3\x60"
-            "\x30\x1f\x8f\x0f" }  },
-      /* --- pixel bitmap for cmr180 char#15 (noname) --- */
-      {  15, 6872,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 20,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\xf3\x83\xe1\x30\x0c\x06\xc3\x60\x30\x0c\x06\xc3"
-            "\x60\x30\xff\xff\xc3\x60\x30\x0c\x06\xc3\x60\x30\x0c"
-            "\x06\xc3\x60\x30\x0c\x06\xc3\x60\x30\x0c\x06\xc3\x60"
-            "\x30\xbf\xdf\x0f" }  },
-      /* --- pixel bitmap for cmr180 char#16 (noname) --- */
-      {  16, 4766,                      /* character number, location */
-         11, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,    11, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0f\xc3\x30\x0c\xc3\x30\x0c\xf3\x03" }  },
-      /* --- pixel bitmap for cmr180 char#17 (noname) --- */
-      {  17, 4795,                      /* character number, location */
-         11,-2,    -5,-2,     /* topleft row,col, and botleft row,col */
-          {  7,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x78\x30\x18\x0c\x06\x83\xc1\x60\x30\x18\x0c\x06\xcf"
-            "\x3c" }  },
-      /* --- pixel bitmap for cmr180 char#18 (noname) --- */
-      {  18, 6332,                      /* character number, location */
-         17, 2,    13, 2,     /* topleft row,col, and botleft row,col */
-          {  5,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe3\x38\x0c" }  },
-      /* --- pixel bitmap for cmr180 char#19 (noname) --- */
-      {  19, 6347,                      /* character number, location */
-         17, 4,    13, 4,     /* topleft row,col, and botleft row,col */
-          {  5,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x98\xbb\x01" }  },
-      /* --- pixel bitmap for cmr180 char#20 (noname) --- */
-      {  20, 6362,                      /* character number, location */
-         16, 3,    13, 3,     /* topleft row,col, and botleft row,col */
-          {  5,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xd1\x11" }  },
-      /* --- pixel bitmap for cmr180 char#21 (noname) --- */
-      {  21, 6377,                      /* character number, location */
-         17, 2,    13, 2,     /* topleft row,col, and botleft row,col */
-          {  7,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xc1\xa0\x88\x03" }  },
+      /* --- pixel bitmap for cmr180 char#0 \Gamma --- */
+      {   0,54233,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 15,   17, 3,27, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x42\x72\x42\x81\x42\x82\xf1\x32\x91\xf9\x32\xa8"
+            "\x71" }  },
+      /* --- pixel bitmap for cmr180 char#1 \Delta --- */
+      {   1,55144,                      /* character number, location */
+         18, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 19,   18, 3,70, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x91\x90\xf1\x83\x80\xf1\x71\x22\x70\xf1\x61\x42\x60"
+            "\xf1\x51\x62\x50\xf1\x41\x82\x40\xf1\x31\xa2\x30\x21"
+            "\xb3\x41\xc2\x31\xd3\x2e\x03\x1e\x05" }  },
+      /* --- pixel bitmap for cmr180 char#2 \Theta --- */
+      {   2,56287,                      /* character number, location */
+         18, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   19, 3,77, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\xa2\x52\x72\x72\x52\x92\x20\xf1\x12\xb2\x12\xd4"
+            "\x21\x71\x22\x0f\x12\x29\x22\x02\x21\x71\x22\x0f\x12"
+            "\xd2\xf1\x12\xb2\x10\x22\x92\x52\x72\x72\x52\xa5\x60" }  },
+      /* --- pixel bitmap for cmr180 char#3 \Lambda --- */
+      {   3,57259,                      /* character number, location */
+         18, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   18, 3,54, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x71\x70\xf2\x63\x60\xf2\x51\x22\x50\x41\x33\x40"
+            "\xf2\x41\x42\x40\xf2\x31\x62\x30\x21\x82\x42\x72\x25"
+            "\x46" }  },
+      /* --- pixel bitmap for cmr180 char#4 \Xi --- */
+      {   4,58642,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   17, 3,52, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x0e\x01\x0f\x11\xd1\xf1\xe0\x10\x31\x71\x30\xf1"
+            "\x39\x30\x31\x71\x30\xf2\xe0\x1f\x11\xd1\x0f\x1e\x01" }  },
+      /* --- pixel bitmap for cmr180 char#5 \Pi --- */
+      {   5,59799,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 19,   17, 3,14, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x05\xfe\x32\x92\x38\x38" }  },
+      /* --- pixel bitmap for cmr180 char#6 \Sigma --- */
+      {   6,60934,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   17, 3,63, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x01\x22\x93\x23\xa1\x32\xa2\x32\xa1\x33\x91\x42"
+            "\xe0\x12\xe0\x12\xe1\xe1\xe1\xa1\x31\xb1\x31\xa2\x21"
+            "\xb1\x21\xa3\x1e\x01\x12" }  },
+      /* --- pixel bitmap for cmr180 char#7 \Upsilon --- */
+      {   7,62038,                      /* character number, location */
+         18, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   18, 3,35, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x24\x54\x36\x36\x12\x42\x21\x43\x61\x12\x52\x63\x61"
+            "\xfb\x82\x70\x58\x41" }  },
+      /* --- pixel bitmap for cmr180 char#8 \Phi --- */
+      {   8,63084,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   17, 3,57, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x48\x40\xf2\x72\x70\x48\x62\x32\x32\x32\x42\x42\x1f"
+            "\x22\x52\x52\x12\x42\x42\x32\x32\x32\x68\x40\xf2\x72"
+            "\x70\x48\x43" }  },
+      /* --- pixel bitmap for cmr180 char#9 \Psi --- */
+      {   9,64209,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   17, 3,55, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x58\x40\xf1\x82\x73\x52\x43\xf4\x22\x42\x32\x20\x31"
+            "\x42\x32\x52\x32\x22\x72\x22\x12\xa6\x50\xf2\x82\x70"
+            "\x58\x48" }  },
+      /* --- pixel bitmap for cmr180 char#10 \Omega --- */
+      {  10,65380,                      /* character number, location */
+         18, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   18, 3,61, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x56\x82\x62\x52\x82\x32\xa2\x1f\x42\xc2\xf1\x12\xa2"
+            "\x10\x22\x82\x51\x81\x71\x61\x41\x31\x61\x32\x41\x41"
+            "\x41\xf1\x15\x45\x11" }  },
+      /* --- pixel bitmap for cmr180 char#11 \ff --- */
+      {  11,111599,                     /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 16,   17, 3,35, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\x13\x52\x43\x12\xf3\x32\x52\x4e\x01\x10\xf8\x32"
+            "\x52\x40\x15\x35\x21" }  },
+      /* --- pixel bitmap for cmr180 char#12 \fi --- */
+      {  12,112779,                     /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 13,   17, 3,32, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x55\x72\x32\x52\x42\x20\xf2\x32\x8b\x20\xf8\x32\x42"
+            "\x20\x15\x25" }  },
+      /* --- pixel bitmap for cmr180 char#13 \fl --- */
+      {  13,113949,                     /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 13,   17, 3,30, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x56\x62\x32\x20\xf3\x32\x42\x2b\x20\xf8\x32\x42\x20"
+            "\x15\x25" }  },
+      /* --- pixel bitmap for cmr180 char#14 \ffi --- */
+      {  14,115570,                     /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 20,   17, 3,46, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\x15\x72\x43\x32\x52\x52\x42\x20\xf2\x32\x52\x8e"
+            "\x04\x20\xf8\x32\x52\x42\x20\x15\x34\x25" }  },
+      /* --- pixel bitmap for cmr180 char#15 \ffl --- */
+      {  15,117217,                     /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 20,   17, 3,40, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\x16\x62\x43\x32\x20\xf3\x32\x52\x42\x2e\x04\x20"
+            "\xf8\x32\x52\x42\x20\x16\x1c" }  },
+      /* --- pixel bitmap for cmr180 char#16 \imath --- */
+      {  16,79369,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,   11, 3,10, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x20\xf8\x22\x26" }  },
+      /* --- pixel bitmap for cmr180 char#17 \jmath --- */
+      {  17,80043,                      /* character number, location */
+         11,-1,   -5,-1,      /* topleft row,col, and botleft row,col */
+          {  6,   16, 3,13, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x24\xfc\x42\x02\x21\x23\x23" }  },
+      /* --- pixel bitmap for cmr180 char#18 \gravesym --- */
+      {  18,102844,                     /* character number, location */
+         17, 3,   13, 3,      /* topleft row,col, and botleft row,col */
+          {  4,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x73\xc6" }  },
+      /* --- pixel bitmap for cmr180 char#19 \acutesym --- */
+      {  19,103415,                     /* character number, location */
+         17, 5,   13, 5,      /* topleft row,col, and botleft row,col */
+          {  4,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xec\x36" }  },
+      /* --- pixel bitmap for cmr180 char#20 \checksym --- */
+      {  20,104042,                     /* character number, location */
+         16, 3,   14, 3,      /* topleft row,col, and botleft row,col */
+          {  6,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xb3\x07" }  },
+      /* --- pixel bitmap for cmr180 char#21 \brevesym --- */
+      {  21,104658,                     /* character number, location */
+         17, 2,   14, 2,      /* topleft row,col, and botleft row,col */
+          {  8,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x81\xc3\x3c" }  },
       /* --- pixel bitmap for cmr180 char#22 (noname) --- */
-      {  22, 6398,                      /* character number, location */
-         14, 2,    13, 2,     /* topleft row,col, and botleft row,col */
-          {  7,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x7f" }  },
+      {  22,105238,                     /* character number, location */
+         15, 2,   14, 2,      /* topleft row,col, and botleft row,col */
+          {  8,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff" }  },
       /* --- pixel bitmap for cmr180 char#23 (noname) --- */
-      {  23, 6407,                      /* character number, location */
-         17, 6,    13, 6,     /* topleft row,col, and botleft row,col */
-          {  6,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x5e\x18\x7a" }  },
+      {  23,106015,                     /* character number, location */
+         18, 7,   14, 7,      /* topleft row,col, and botleft row,col */
+          {  5,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x2e\x46\x07" }  },
       /* --- pixel bitmap for cmr180 char#24 (noname) --- */
-      {  24, 6426,                      /* character number, location */
-          0, 3,    -4, 3,     /* topleft row,col, and botleft row,col */
-          {  5,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x0c\xe3\x0f" }  },
+      {  24,106707,                     /* character number, location */
+         -1, 3,   -6, 3,      /* topleft row,col, and botleft row,col */
+          {  6,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\x0c\xfb\x01" }  },
       /* --- pixel bitmap for cmr180 char#25 \ss --- */
-      {  25, 4836,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 10,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x60\xc6\x30\xc3\x0c\x33\xf6\x0e\x23\x8c\x31\xc4"
-            "\x30\xc3\x0c\x33\xcc\x34\x73\xcf\x00" }  },
+      {  25,81130,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 11,   17, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\xc1\x18\x83\x19\xcc\x60\x86\xbd\x83\x31\x0c\x63"
+            "\x18\x83\x19\xcc\x60\x06\x33\x99\x79\x8f\x01" }  },
       /* --- pixel bitmap for cmr180 char#26 \ae --- */
-      {  26, 4911,                      /* character number, location */
-         11, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 15,    11, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x7c\x1c\x63\x19\x60\x18\x30\x0c\xff\x67\x0c\x08\x06"
-            "\x06\x03\x83\x43\x61\x11\x1f\x07" }  },
+      {  26,82481,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7c\x3c\xc6\x62\x80\xc3\x80\xc1\xf0\xff\x8c\x01\x82"
+            "\x01\x83\x01\x83\x83\xc6\x46\x7c\x3c" }  },
       /* --- pixel bitmap for cmr180 char#27 \oe --- */
-      {  27, 4970,                      /* character number, location */
-         11, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    11, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x78\x38\x84\x64\x86\xc3\x03\xc3\x03\xff\x03\x03\x03"
-            "\x03\x03\x03\x86\x87\x84\x44\x78\x38" }  },
+      {  27,83607,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x78\x78\x08\x89\x19\x1e\x1e\x18\x3c\xf0\x7f\x60\xc0"
+            "\xc0\x80\x81\x01\x86\x07\x09\x19\xe1\xe1\x01" }  },
       /* --- pixel bitmap for cmr180 char#28 (noname) --- */
-      {  28, 5035,                      /* character number, location */
-         13, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    15, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x80\x00\xe1\x31\x26\x6a\xf4\xec\xc9\x9b\x17\x2b\x32"
-            "\xc6\x43\x80\x00" }  },
+      {  28,84431,                      /* character number, location */
+         13, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   15, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x00\x01\x84\x0f\x21\x42\x8d\x3d\xf2\xcc\x13\x2f\xac"
+            "\x10\x21\x7c\x08\x20\x00" }  },
       /* --- pixel bitmap for cmr180 char#29 \AE --- */
-      {  29, 5104,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 19,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\xff\x03\x34\x18\xa0\x81\x80\x0c\x0c\x64\x40\x20"
-            "\x43\x82\x18\x02\xc4\x18\xe0\xff\x80\x30\x06\x84\x21"
-            "\x21\x0c\x89\x60\x40\x04\x03\x31\x18\x88\xc1\x60\x9f"
-            "\xff\x03" }  },
+      {  29,86217,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 20,   17, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe0\xff\x07\x68\x60\x80\x06\x04\x64\xc0\x40\x06\x08"
+            "\x64\x88\x20\x86\x00\x62\x0c\xe0\xff\x00\x61\x0c\x10"
+            "\x86\x08\x61\x88\x08\x06\x88\x60\x40\x08\x06\xc4\x60"
+            "\x60\x9f\xff\x07" }  },
       /* --- pixel bitmap for cmr180 char#30 \OE --- */
-      {  30, 5209,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 22,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xc0\xff\x1f\x0c\x07\xc6\x80\x01\x31\x60\xc0\x06\x18"
-            "\xa0\x00\x06\x39\x80\x41\x0c\x60\x18\x03\xf8\xc7\x00"
-            "\x86\x31\x80\x41\x1a\x60\x90\x06\x18\x20\x03\x06\xc4"
-            "\x81\x01\xc1\x70\x60\xc0\xff\x1f" }  },
+      {  30,87929,                      /* character number, location */
+         18, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 23,   19, 3,103, (pixbyte *)/* width,ht, fmt,pixsz,map... */
+            "\x65\xe0\x22\x5b\x42\x63\x62\x32\x73\x71\x22\x83\x72"
+            "\x12\x83\x83\x93\x51\x23\xa2\x51\x32\xa2\x42\x32\xa8"
+            "\x32\xa2\x42\x32\xa2\x51\x23\x93\x51\x21\x12\x83\x81"
+            "\x12\x83\x71\x32\x73\x71\x42\x63\x62\x53\x4b\x75\xc1" }  },
       /* --- pixel bitmap for cmr180 char#31 (noname) --- */
-      {  31, 5314,                      /* character number, location */
-         18, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    19, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x00\x20\xe0\x37\x38\x1c\x0c\x38\x04\x28\x06\x64\x02"
-            "\x42\x03\xc2\x03\xc1\x83\xc1\x83\xc0\x43\xc0\x43\xc0"
-            "\x26\x60\x14\x20\x1c\x30\x38\x1c\xec\x07\x04\x00" }  },
+      {  31,88931,                      /* character number, location */
+         18, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   19, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xc0\x47\x60\xf0\x20\x80\x60\x80\x63\x80\xcd\x00\xd9"
+            "\x00\xe1\x01\xc1\x03\x82\x07\x02\x0f\x02\x1e\x04\x3c"
+            "\x04\xd8\x04\x98\x0d\x30\x0e\x30\x08\x20\x78\x30\x10"
+            "\x1f\x00" }  },
       /* --- pixel bitmap for cmr180 char#32 (noname) --- */
-      {  32, 6460,                      /* character number, location */
-         10, 0,     7, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x30\x33\x00" }  },
+      {  32,107207,                     /* character number, location */
+         10, 0,    7, 0,      /* topleft row,col, and botleft row,col */
+          {  6,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x20\x27\x00" }  },
       /* --- pixel bitmap for cmr180 char#33 ! --- */
-      {  33, 5415,                      /* character number, location */
-         17, 2,     0, 2,     /* topleft row,col, and botleft row,col */
-          {  3,    17, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xfa\xff\x4b\x92\x00\xe8\x02" }  },
+      {  33,89602,                      /* character number, location */
+         18, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  3,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfa\xff\x5b\x92\x04\x40\x17" }  },
       /* --- pixel bitmap for cmr180 char#34 " --- */
-      {  34, 6975,                      /* character number, location */
-         17, 1,     9, 1,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x42\xe7\xc6\x84\x84\x84\x42\x21" }  },
+      {  34,118176,                     /* character number, location */
+         17, 1,    9, 1,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x42\xe7\xc6\x84\x84\x84\x42\x21" }  },
       /* --- pixel bitmap for cmr180 char#35 # --- */
-      {  35, 5489,                      /* character number, location */
-         17, 1,    -5, 1,     /* topleft row,col, and botleft row,col */
-          { 18,    22, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x00\x41\x00\x04\x01\x10\x04\x40\x10\x80\x20\x00\x82"
-            "\x00\x08\xc2\xff\xff\x40\x10\x00\x41\x00\x82\x00\x08"
-            "\x02\x20\x08\xfc\xff\x0f\x41\x00\x04\x01\x10\x04\x40"
-            "\x10\x80\x20\x00\x82\x00\x08\x02\x20\x08\x00" }  },
+      {  35,91072,                      /* character number, location */
+         17, 1,   -5, 1,      /* topleft row,col, and botleft row,col */
+          { 19,   22, 3,59, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf3\x91\x51\x30\xf2\x81\x51\x4e\x05\xf1\x71\x51\x50"
+            "\xf2\x61\x51\x6e\x05\xf1\x51\x51\x70\xf3\x41\x51\x80"
+            "\xf1\x31\x51\x91" }  },
       /* --- pixel bitmap for cmr180 char#36 $ --- */
-      {  36, 4510,                      /* character number, location */
-         19, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    20, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x10\x20\xe0\x91\x04\x31\x62\xe4\x08\x16\x7c\xe0\x81"
-            "\x06\x19\xe2\xc4\x88\x11\xa4\xf1\x80\x00" }  },
+      {  36,75631,                      /* character number, location */
+         19, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   20, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x20\x80\x80\x87\x69\x20\x86\x18\x72\x08\x26\xf8\x80"
+            "\x0f\x78\x20\x83\x38\x62\x88\x22\x99\x82\x07\x08" }  },
       /* --- pixel bitmap for cmr180 char#37 % --- */
-      {  37, 5580,                      /* character number, location */
-         19, 1,    -1, 1,     /* topleft row,col, and botleft row,col */
-          { 18,    20, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x1c\x80\x98\x00\x21\x0e\xc7\xd0\x0b\x43\x10\x0c\x41"
-            "\x30\x84\xc0\x10\x01\x22\x04\x98\x08\xc0\x11\x0e\x20"
-            "\x4c\x80\x10\x02\x61\x08\x82\x21\x08\x86\x10\x18\x22"
-            "\x40\x88\x00\x13\x01\x38" }  },
+      {  37,92321,                      /* character number, location */
+         19, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 19,   20, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\x80\x30\x01\x82\x38\x18\x86\x7e\x30\x04\x81\x21"
+            "\x08\x0c\x21\x60\x08\x01\x22\x04\x30\x11\x00\x87\x70"
+            "\x00\xc2\x04\x08\x42\x40\x18\x02\xc1\x10\x08\x86\x20"
+            "\x30\x84\x00\x21\x04\x98\x10\x80\x03" }  },
       /* --- pixel bitmap for cmr180 char#38 & --- */
-      {  38, 4595,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x60\x00\x90\x00\x98\x00\x98\x00\x98\x00\x58\x00\x38"
-            "\xfc\x30\x30\x38\x10\x38\x10\x64\x08\xe2\x04\xc3\x04"
-            "\x83\x03\x03\x83\xc6\xc6\x3c\x3c" }  },
-      /* --- pixel bitmap for cmr180 char#39 (noname) --- */
-      {  39, 5705,                      /* character number, location */
-         17, 2,     9, 2,     /* topleft row,col, and botleft row,col */
-          {  3,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xba\x49\x2a" }  },
+      {  38,76909,                      /* character number, location */
+         18, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   19, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe0\x00\x20\x02\x60\x04\xc0\x08\x80\x11\x00\x13\x00"
+            "\x26\x00\x2c\xfc\x30\x60\x60\x40\xe0\x41\x20\x83\x20"
+            "\x8e\x60\x18\xc1\x60\x81\x81\x81\x03\x07\x0d\x19\xf1"
+            "\xe1\x01" }  },
+      /* --- pixel bitmap for cmr180 char#39 ' --- */
+      {  39,92997,                      /* character number, location */
+         17, 2,    9, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x49\x29" }  },
       /* --- pixel bitmap for cmr180 char#40 ( --- */
-      {  40, 5728,                      /* character number, location */
-         19, 2,    -6, 2,     /* topleft row,col, and botleft row,col */
-          {  6,    25, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x20\x84\x30\x84\x61\x08\xc3\x30\x0c\xc3\x30\x0c\x83"
+      {  40,93575,                      /* character number, location */
+         19, 3,   -6, 3,      /* topleft row,col, and botleft row,col */
+          {  6,   25, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x20\x84\x30\x84\x61\x08\xc3\x30\x0c\xc3\x30\x0c\x83"
             "\x60\x18\x04\x83\x40\x20" }  },
       /* --- pixel bitmap for cmr180 char#41 ) --- */
-      {  41, 5785,                      /* character number, location */
-         19, 1,    -6, 1,     /* topleft row,col, and botleft row,col */
-          {  6,    25, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x81\x40\x30\x08\x86\x41\x30\x0c\xc3\x30\x0c\xc3\x30"
+      {  41,94188,                      /* character number, location */
+         19, 1,   -6, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   25, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x81\x40\x30\x08\x86\x41\x30\x0c\xc3\x30\x0c\xc3\x30"
             "\x84\x61\x08\x43\x08\x01" }  },
       /* --- pixel bitmap for cmr180 char#42 * --- */
-      {  42, 5842,                      /* character number, location */
-         19, 1,     8, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    11, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x10\x20\x48\xba\xee\x0f\x87\xbf\xeb\x92\x20\x40\x00" }  },
+      {  42,94825,                      /* character number, location */
+         19, 1,    8, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x30\x60\xc8\xb4\xcd\x0f\x06\x3f\xdb\x32\x61\xc0\x00" }  },
       /* --- pixel bitmap for cmr180 char#43 + --- */
-      {  43, 5887,                      /* character number, location */
-         15, 1,    -2, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00"
-            "\x01\x00\x01\xff\xff\x00\x01\x00\x01\x00\x01\x00\x01"
-            "\x00\x01\x00\x01\x00\x01\x00\x01" }  },
+      {  43,95519,                      /* character number, location */
+         15, 1,   -2, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   17, 3,13, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf7\x81\x8e\x03\xf7\x81\x82" }  },
       /* --- pixel bitmap for cmr180 char#44 (noname) --- */
-      {  44, 5928,                      /* character number, location */
-          3, 2,    -5, 2,     /* topleft row,col, and botleft row,col */
-          {  3,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xba\x49\x2a" }  },
+      {  44,96108,                      /* character number, location */
+          3, 2,   -5, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x49\x29" }  },
       /* --- pixel bitmap for cmr180 char#45 (noname) --- */
-      {  45, 7014,                      /* character number, location */
-          6, 0,     4, 0,     /* topleft row,col, and botleft row,col */
-          {  6,     2, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x0f" }  },
+      {  45,118687,                     /* character number, location */
+          6, 0,    4, 0,      /* topleft row,col, and botleft row,col */
+          {  7,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x3f" }  },
       /* --- pixel bitmap for cmr180 char#46 (noname) --- */
-      {  46, 5951,                      /* character number, location */
-          3, 2,     0, 2,     /* topleft row,col, and botleft row,col */
-          {  3,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xba\x00" }  },
+      {  46,96577,                      /* character number, location */
+          3, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x00" }  },
       /* --- pixel bitmap for cmr180 char#47 / --- */
-      {  47, 5964,                      /* character number, location */
-         19, 1,    -6, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    25, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x00\x01\x02\x02\x04\x08\x08\x10\x20\x20\x40\x80\x80"
-            "\x00\x01\x02\x02\x04\x08\x08\x10\x20\x20\x40\x80\x80"
-            "\x00\x01\x00" }  },
+      {  47,97085,                      /* character number, location */
+         19, 1,   -6, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   25, 3,55, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x91\xf2\x81\x10\xf1\x71\x20\xf2\x61\x30\xf1\x51"
+            "\x40\xf2\x41\x50\xf2\x31\x60\xf1\x21\x70\xf2\x11\x8f"
+            "\x11\x91" }  },
       /* --- pixel bitmap for cmr180 char#48 0 --- */
-      {  48, 3958,                      /* character number, location */
-         16, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x38\x8c\x09\x12\x34\x78\xf0\xe0\xc1\x83\x07\x0f\x1e"
-            "\x3c\x58\x90\x31\x1c" }  },
+      {  48,66116,                      /* character number, location */
+         17, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   18, 3,35, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x34\x52\x22\x32\x42\x21\x61\x1f\x92\x62\x11\x61\x22"
+            "\x42\x32\x22\x54\x31" }  },
       /* --- pixel bitmap for cmr180 char#49 1 --- */
-      {  49, 4025,                      /* character number, location */
-         16, 2,     0, 2,     /* topleft row,col, and botleft row,col */
-          {  7,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x10\x4f\x06\x83\xc1\x60\x30\x18\x0c\x06\x83\xc1\x60"
-            "\xfe" }  },
+      {  49,66906,                      /* character number, location */
+         17, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  8,   17, 3,16, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x32\x44\x31\x22\x30\xfc\x32\x38" }  },
       /* --- pixel bitmap for cmr180 char#50 2 --- */
-      {  50, 4066,                      /* character number, location */
-         16, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3c\x84\x05\x0a\x3c\x18\x30\x60\x60\x40\x40\xc0\xc0"
-            "\x80\x90\xa0\xbf\x7f" }  },
+      {  50,67883,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   17, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x78\x10\x22\x58\xc0\x01\x0f\x0c\x30\xc0\x80\x01\x02"
+            "\x04\x08\x10\x20\x48\xa0\x7f\xff\x01" }  },
       /* --- pixel bitmap for cmr180 char#51 3 --- */
-      {  51, 4117,                      /* character number, location */
-         16, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x38\x88\x18\x33\x06\x0c\x18\x18\x1c\xc0\x00\x01\x1e"
-            "\x3c\x38\x90\x30\x1e" }  },
+      {  51,68921,                      /* character number, location */
+         17, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x78\x10\x23\x98\x61\x86\x01\x06\x08\x10\x78\x00\x02"
+            "\x18\xc0\x03\x0f\x1c\xb0\x60\x84\xe0\x01" }  },
       /* --- pixel bitmap for cmr180 char#52 4 --- */
-      {  52, 4170,                      /* character number, location */
-         16, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x40\xc0\xc0\x81\x83\x06\x0d\x19\x33\x62\xc2\xfc\x07"
-            "\x03\x06\x0c\x18\xfc" }  },
+      {  52,69853,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   17, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x80\x00\x03\x0e\x38\xd0\x60\x83\x0c\x31\xc4\x08\x13"
+            "\xcc\xff\xc0\x00\x03\x0c\x30\xf0\x03" }  },
       /* --- pixel bitmap for cmr180 char#53 5 --- */
-      {  53, 4221,                      /* character number, location */
-         16, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x82\xfc\xe8\x10\x20\x40\x80\x0e\x63\x82\x00\x03\x06"
-            "\x3c\x38\x90\x10\x1e" }  },
+      {  53,70891,                      /* character number, location */
+         17, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\xf9\xa3\x83\x00\x02\x08\x20\x87\x22\x86\x09\x0c"
+            "\x30\xc0\x00\x0f\x1c\x90\x60\xc6\xe0\x01" }  },
       /* --- pixel bitmap for cmr180 char#54 6 --- */
-      {  54, 4276,                      /* character number, location */
-         16, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x10\x12\x36\x2c\x60\xc0\x8e\x63\x83\x06\x0f\x1e"
-            "\x2c\xd8\x10\x31\x1c" }  },
+      {  54,71795,                      /* character number, location */
+         17, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x60\xc4\x98\x61\x06\x08\xb0\xc7\x21\x87\x0d\x3c"
+            "\xf0\xc0\x03\x0f\x2c\xb0\x61\x8c\xe0\x01" }  },
       /* --- pixel bitmap for cmr180 char#55 7 --- */
-      {  55, 4339,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x02\xf8\xef\x5f\x40\x81\x00\x01\x04\x08\x20\x40\x00"
-            "\x01\x04\x18\x60\x80\x01\x06\x18\x00" }  },
+      {  55,72707,                      /* character number, location */
+         17, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   18, 3,45, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x11\xaa\x19\x11\x81\x11\x71\x20\xf1\x71\x30\x61\x92"
+            "\x91\x50\xf1\x42\x50\x41\x60\xf4\x32\x62" }  },
       /* --- pixel bitmap for cmr180 char#56 8 --- */
-      {  56, 4384,                      /* character number, location */
-         16, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x38\x88\x18\x33\x66\xcc\x09\x1f\x1c\x64\x8c\x0d\x1e"
-            "\x3c\x78\x90\x31\x1e" }  },
+      {  56,73627,                      /* character number, location */
+         17, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x78\x30\x63\x98\x61\x86\x19\xc6\x0c\x17\x70\xb0\x63"
+            "\xd8\xe0\x03\x0f\x3c\xb0\x41\x84\xe0\x01" }  },
       /* --- pixel bitmap for cmr180 char#57 9 --- */
-      {  57, 4447,                      /* character number, location */
-         16, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x38\x88\x08\x1b\x34\x78\xf0\x60\xc1\xc6\x71\x03\x06"
-            "\x34\x6c\xc8\x18\x0e" }  },
+      {  57,74539,                      /* character number, location */
+         17, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x78\x10\x62\xd8\x40\x03\x0f\x3c\xf0\xc0\x03\x1b\x4e"
+            "\x38\xde\x00\x03\x66\x98\x21\x42\xf0\x00" }  },
       /* --- pixel bitmap for cmr180 char#58 : --- */
-      {  58, 6021,                      /* character number, location */
-         11, 2,     0, 2,     /* topleft row,col, and botleft row,col */
-          {  3,    11, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xba\x00\x00\xba\x00" }  },
+      {  58,97681,                      /* character number, location */
+         11, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          {  3,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x00\x00\xba\x00" }  },
       /* --- pixel bitmap for cmr180 char#59 ; --- */
-      {  59, 6042,                      /* character number, location */
-         11, 2,    -5, 2,     /* topleft row,col, and botleft row,col */
-          {  3,    16, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xba\x00\x00\xba\x49\x2a" }  },
+      {  59,98348,                      /* character number, location */
+         11, 2,   -5, 2,      /* topleft row,col, and botleft row,col */
+          {  3,   16, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x00\x00\xba\x49\x29" }  },
       /* --- pixel bitmap for cmr180 char#60 (noname) --- */
-      {  60, 5452,                      /* character number, location */
-         12, 2,    -5, 2,     /* topleft row,col, and botleft row,col */
-          {  3,    17, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xba\x00\x48\x92\xfe\xff\x02" }  },
+      {  60,90220,                      /* character number, location */
+         12, 2,   -6, 2,      /* topleft row,col, and botleft row,col */
+          {  3,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x00\x48\x92\xfc\xff\x17" }  },
       /* --- pixel bitmap for cmr180 char#61 = --- */
-      {  61, 6073,                      /* character number, location */
-         10, 1,     3, 1,     /* topleft row,col, and botleft row,col */
-          { 16,     7, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff"
-            "\xff" }  },
+      {  61,99030,                      /* character number, location */
+         10, 1,    3, 1,      /* topleft row,col, and botleft row,col */
+          { 17,    7, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x03\xf4\xe0\x3e\x03" }  },
       /* --- pixel bitmap for cmr180 char#62 (noname) --- */
-      {  62, 4723,                      /* character number, location */
-         12, 1,    -5, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x10\x70\x40\x00\x00\x00\x00\x04\x08\x10\x20\x20\x20"
-            "\x20\x60\xf0\x60\x41\x7c\x00" }  },
-      /* --- pixel bitmap for cmr180 char#63 (noname) --- */
-      {  63, 4680,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x7c\x04\x0d\x1e\x0c\x08\x08\x08\x08\x10\x20\x40\x00"
-            "\x00\x00\x00\x04\x1c\x10\x00" }  },
-      /* --- pixel bitmap for cmr180 char#64 (noname) --- */
-      {  64, 6086,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x07\x10\x08\x08\x10\xc4\x23\x22\x44\x32\x58\x19"
-            "\x98\x19\x98\x19\x98\x19\x98\x19\x98\x32\x98\x22\x9c"
-            "\xc4\x73\x08\x00\x10\xe0\xe0\x1f" }  },
+      {  62,78784,                      /* character number, location */
+         12, 1,   -5, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   17, 3,37, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x41\x83\x81\x50\xf2\xa0\xf3\x41\x50\x31\x81\x81\x8f"
+            "\x12\x62\x11\x61\x36\x21" }  },
+      /* --- pixel bitmap for cmr180 char#63 ? --- */
+      {  63,77868,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   17, 3,39, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x26\x31\x52\x1f\x12\x62\x72\x72\x71\x82\x40\xf2\x41"
+            "\x50\xf2\xa0\x41\x83\x81\x54" }  },
+      /* --- pixel bitmap for cmr180 char#64 @ --- */
+      {  64,100200,                     /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   17, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xc0\x07\x60\x30\x20\x80\x20\x1c\x22\x44\x48\x0c\x53"
+            "\x0c\xc6\x18\x8c\x31\x18\x63\x30\xc6\x60\x14\xc3\x28"
+            "\xc4\x89\x70\x0e\x02\x00\x18\xe0\xc0\x3f\x00" }  },
       /* --- pixel bitmap for cmr180 char#65 A --- */
-      {  65,   35,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x80\x01\x80\x01\x80\x01\x40\x03\x40\x03\x40\x03\x20"
-            "\x06\x20\x06\x20\x06\x10\x0c\x10\x0c\xf0\x0f\x08\x18"
-            "\x08\x18\x08\x18\x0c\x30\x1f\xfc" }  },
+      {  65, 1026,                      /* character number, location */
+         18, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   18, 3,60, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x81\x80\xf2\x73\x70\x62\x12\x60\xf1\x61\x22\x60\xf2"
+            "\x51\x42\x50\x41\x62\x89\x81\x62\x40\xf2\x31\x82\x30"
+            "\x22\x83\x26\x47" }  },
       /* --- pixel bitmap for cmr180 char#66 B --- */
-      {  66,  102,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x0f\x18\x38\x18\x20\x18\x60\x18\x60\x18\x60\x18"
-            "\x30\x18\x1c\xf8\x3f\x18\x60\x18\xc0\x18\xc0\x18\xc0"
-            "\x18\xc0\x18\x60\x18\x30\xff\x1f" }  },
+      {  66, 2336,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 17,   17, 3,55, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0d\x72\x73\x52\x82\x20\xf2\x32\x92\x10\x32\x82\x52"
+            "\x63\x6b\x62\x83\x42\x93\xf2\x32\xa2\x32\x92\x42\x82"
+            "\x2e\x33" }  },
       /* --- pixel bitmap for cmr180 char#67 C --- */
-      {  67,  171,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 15,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xc0\x47\x18\x3c\x02\x98\x00\x6c\x00\x14\x00\x0e\x00"
-            "\x06\x00\x03\x80\x01\xc0\x00\x40\x00\x68\x00\x24\x00"
-            "\x22\x80\x60\x30\xc0\x07" }  },
+      {  67, 3269,                      /* character number, location */
+         18, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   19, 3,57, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\x41\x42\x52\x12\x32\x83\x22\xa2\x12\xb2\x12\xc3"
+            "\xd1\x0f\x42\xe2\xd1\xf1\x12\xc1\x22\xa1\x42\x81\x62"
+            "\x61\x96\x46" }  },
       /* --- pixel bitmap for cmr180 char#68 D --- */
-      {  68,  234,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x07\x0c\x1c\x0c\x30\x0c\x20\x0c\x60\x0c\x40\x0c"
-            "\xc0\x0c\xc0\x0c\xc0\x0c\xc0\x0c\xc0\x0c\xc0\x0c\x60"
-            "\x0c\x60\x0c\x30\x0c\x1c\xff\x07" }  },
+      {  68, 4365,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 18,   17, 3,49, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0d\x82\x72\x72\x92\x52\xa1\x52\xa2\x42\xb1\x10\xf5"
+            "\x32\xb2\x32\xa2\x42\xa1\x52\x92\x52\x73\x3d\x51" }  },
       /* --- pixel bitmap for cmr180 char#69 E --- */
-      {  69,  305,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x1f\x03\xc6\x00\x31\xc0\x0c\x20\x83\xc8\x20\x30"
-            "\x0c\xfc\x03\xc3\xc0\x20\x32\x88\x0c\x20\x03\xc4\x00"
-            "\x31\x60\xff\x1f" }  },
+      {  69, 5766,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 16,   17, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x7f\x18\x60\x18\x40\x18\xc0\x18\x80\x18\x84\x18"
+            "\x04\x18\x06\xf8\x07\x18\x06\x18\x84\x18\x84\x18\x80"
+            "\x18\x40\x18\x40\x18\x70\xff\x7f" }  },
       /* --- pixel bitmap for cmr180 char#70 F --- */
-      {  70,  380,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 13,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x8f\x81\x31\x20\x06\xcc\x00\x19\x22\x43\x60\x0c"
-            "\xfc\x81\x31\x30\x04\x86\xc0\x00\x18\x00\x03\x60\x00"
-            "\x7f\x00" }  },
+      {  70, 7003,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 15,   17, 3,55, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x42\x72\x42\x81\x42\x82\x32\x91\x32\x51\x31\x32"
+            "\x51\x72\x42\x78\x72\x42\x40\xf1\x32\x51\x40\xf3\x32"
+            "\xa8\x71" }  },
       /* --- pixel bitmap for cmr180 char#71 G --- */
-      {  71,  443,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 17,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xc0\x47\x60\xf0\x20\x80\x21\x00\x63\x00\x44\x00\xc8"
-            "\x00\x80\x01\x00\x03\x00\x06\xf8\x0f\x80\x11\x00\x63"
-            "\x00\x86\x00\x0c\x02\x18\x18\x38\xc0\x4f\x00" }  },
+      {  71, 8176,                      /* character number, location */
+         18, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 18,   19, 3,73, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\x41\x62\x52\x12\x52\x83\x42\xa2\x32\xb2\x32\xc1"
+            "\x22\xd1\x2f\x22\xe0\x22\x97\x0f\x12\xc2\x20\xf1\x12"
+            "\xb2\x20\x22\xa2\x52\x92\x62\x62\x11\x86\x60" }  },
       /* --- pixel bitmap for cmr180 char#72 H --- */
-      {  72,  512,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 18,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xfc\x63\x80\x81\x01\x06\x06\x18\x18\x60\x60\x80"
-            "\x81\x01\x06\x06\x18\xf8\x7f\x60\x80\x81\x01\x06\x06"
-            "\x18\x18\x60\x60\x80\x81\x01\x06\x06\x18\xff\xfc\x03" }  },
+      {  72, 9359,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 19,   17, 3,26, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x38\xf6\x32\x92\x30\x3d\x30\xf6\x32\x92\x38\x38" }  },
       /* --- pixel bitmap for cmr180 char#73 I --- */
-      {  73,  585,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18"
-            "\x18\x18\x18\xff" }  },
+      {  73,10038,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   17, 3, 8, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\xfe\x32\x38" }  },
       /* --- pixel bitmap for cmr180 char#74 J --- */
-      {  74,  626,                      /* character number, location */
-         17, 2,     0, 2,     /* topleft row,col, and botleft row,col */
-          {  9,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xfc\xc1\x80\x01\x03\x06\x0c\x18\x30\x60\xc0\x80\x01"
-            "\x03\x66\xcc\x98\x19\x1c\x00" }  },
+      {  74,10840,                      /* character number, location */
+         17, 2,   -1, 2,      /* topleft row,col, and botleft row,col */
+          { 10,   18, 3,23, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x37\xfb\x62\x2f\x12\x42\x21\x51\x41\x32\x54\x48" }  },
       /* --- pixel bitmap for cmr180 char#75 K --- */
-      {  75,  673,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\x7c\x0c\x18\x0c\x08\x0c\x04\x0c\x02\x0c\x01\x8c"
-            "\x00\xcc\x01\x2c\x01\x1c\x03\x0c\x06\x0c\x0c\x0c\x0c"
-            "\x0c\x18\x0c\x30\x0c\x30\x3f\xf8" }  },
+      {  75,11995,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 18,   17, 3,72, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x46\x32\x82\x62\x81\x72\x71\x82\x61\x92\x51\xa2"
+            "\x41\xb2\x32\xb2\x12\x11\xb3\x32\xa2\x52\x60\xf1\x32"
+            "\x62\x50\x32\x72\x40\xf1\x32\x82\x38\x37" }  },
       /* --- pixel bitmap for cmr180 char#76 L --- */
-      {  76,  750,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 14,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x00\x06\x80\x01\x60\x00\x18\x00\x06\x80\x01\x60"
-            "\x00\x18\x00\x06\x80\x01\x62\x80\x18\x20\x06\x8c\x01"
-            "\x61\x70\xff\x1f" }  },
+      {  76,12950,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 15,   17, 3,31, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x70\xf8\x32\xa0\xf2\x32\x91\x32\x82\x32\x81\x42"
+            "\x63\x1e\x12" }  },
       /* --- pixel bitmap for cmr180 char#77 M --- */
-      {  77,  803,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 22,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\x00\x3f\x0e\xc0\x81\x03\x70\xa0\x01\x1a\x68\x80"
-            "\x06\x32\x90\x81\x0c\x64\x20\x03\x19\x88\x21\x06\x62"
-            "\x88\x81\x30\x61\x20\x4c\x18\x08\x13\x06\x82\x83\x81"
-            "\xe0\x60\x20\x38\x18\x7f\xc4\x3f" }  },
+      {  77,14230,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 23,   17, 3,82, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\xb6\x33\xb3\x30\xf2\x31\x12\x91\x12\x30\xf1\x31"
+            "\x22\x71\x22\x30\xf2\x31\x32\x51\x32\x30\xf1\x31\x42"
+            "\x31\x42\x30\xf2\x31\x52\x11\x52\x30\x23\x52\x62\x37"
+            "\x32\x38" }  },
       /* --- pixel bitmap for cmr180 char#78 N --- */
-      {  78,  926,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 18,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x1f\xf8\xe3\x00\x81\x03\x04\x1a\x10\xc8\x40\x20\x03"
-            "\x81\x18\x04\xc2\x10\x08\x43\x20\x18\x81\xc0\x04\x02"
-            "\x16\x08\x58\x20\xc0\x81\x00\x06\x02\x18\x7f\x40\x00" }  },
+      {  78,15384,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 19,   17, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\xf0\xc7\x01\x0e\x0e\x20\xd0\x00\x81\x0c\x08\xc4"
+            "\x40\x20\x06\x02\x61\x10\x08\x86\x40\x60\x04\x02\x23"
+            "\x10\x30\x81\x00\x0b\x04\x70\x20\x80\x83\x03\x18\x7f"
+            "\x80\x00" }  },
       /* --- pixel bitmap for cmr180 char#79 O --- */
-      {  79, 1021,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x07\x38\x1c\x0c\x30\x04\x20\x06\x60\x02\x40\x03"
-            "\xc0\x03\xc0\x03\xc0\x03\xc0\x03\xc0\x03\xc0\x06\x60"
-            "\x04\x20\x0c\x30\x38\x1c\xe0\x07" }  },
+      {  79,16259,                      /* character number, location */
+         18, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   19, 3,51, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\xa2\x52\x72\x72\x52\x92\x20\xf1\x12\xb2\x1f\x62"
+            "\xd2\xf1\x12\xb2\x10\x22\x92\x52\x72\x72\x52\xa5\x61" }  },
       /* --- pixel bitmap for cmr180 char#80 P --- */
-      {  80, 1092,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 14,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x07\x03\xc3\x80\x31\xc0\x0c\x30\x03\xcc\x80\x31"
-            "\x30\xfc\x07\x03\xc0\x00\x30\x00\x0c\x00\x03\xc0\x00"
-            "\x30\x00\x3f\x00" }  },
+      {  80,17382,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 16,   17, 3,37, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0d\x62\x72\x52\x82\x10\xf2\x32\x92\x32\x82\x42\x72"
+            "\x5a\x30\xf6\x32\xb8\x82" }  },
       /* --- pixel bitmap for cmr180 char#81 Q --- */
-      {  81, 1147,                      /* character number, location */
-         17, 1,    -5, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    22, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xe0\x07\x38\x1c\x0c\x30\x04\x20\x06\x60\x02\x40\x03"
-            "\xc0\x03\xc0\x03\xc0\x03\xc0\x03\xc0\x03\xc0\x06\x60"
-            "\x84\x21\x4c\x32\x78\x1c\xe0\x87\x00\x84\x00\x84\x00"
-            "\xcc\x00\x78\x00\x30" }  },
+      {  81,18405,                      /* character number, location */
+         18, 1,   -5, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   23, 3,77, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\xa2\x52\x72\x72\x52\x92\x20\xf1\x12\xb2\x1f\x62"
+            "\xd2\x12\xb2\x22\x43\x42\x32\x21\x31\x22\x52\x11\x31"
+            "\x12\x73\x42\x31\x66\x41\xb1\x41\xb2\x22\xb5\xd3\x21" }  },
       /* --- pixel bitmap for cmr180 char#82 R --- */
-      {  82, 1242,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\x03\x0c\x06\x0c\x0c\x0c\x18\x0c\x18\x0c\x18\x0c"
-            "\x0c\x0c\x06\xfc\x03\x0c\x06\x0c\x0c\x0c\x0c\x0c\x0c"
-            "\x0c\x0c\x0c\x8c\x0c\x88\x3f\x70" }  },
+      {  82,19724,                      /* character number, location */
+         17, 0,   -1, 0,      /* topleft row,col, and botleft row,col */
+          { 18,   18, 3,61, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0b\xa2\x62\x82\x72\x40\xf2\x32\x82\x30\x32\x72\x72"
+            "\x62\x88\xa2\x62\x50\xf3\x32\x72\x40\xf1\x32\x72\x31"
+            "\x08\x51\x31\xe3\x16" }  },
       /* --- pixel bitmap for cmr180 char#83 S --- */
-      {  83, 1317,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 11,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x78\x32\x9c\xc0\x06\x34\xa0\x01\x38\xc0\x0f\xf8\x01"
-            "\x1e\xc0\x01\x1c\xe0\x00\x0f\xe8\x20\xf9\x00" }  },
+      {  83,20783,                      /* character number, location */
+         18, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   19, 3,55, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x35\x21\x31\x51\x11\x21\x72\x1f\x22\x81\x13\xa3\xa6"
+            "\x77\x94\xa2\xb2\x0f\x21\x92\x02\x72\x11\x12\x42\x21"
+            "\x35\x31" }  },
       /* --- pixel bitmap for cmr180 char#84 T --- */
-      {  84, 1378,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 15,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xff\xc1\x70\x60\x30\x30\x18\x18\x0c\x0c\x02\x06"
-            "\x00\x03\x80\x01\xc0\x00\x60\x00\x30\x00\x18\x00\x0c"
-            "\x00\x06\x00\x03\xf0\x0f" }  },
+      {  84,21881,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   17, 3,25, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x04\x52\x52\x0f\x31\x62\x61\xf9\x72\x70\x3a\x36" }  },
       /* --- pixel bitmap for cmr180 char#85 U --- */
-      {  85, 1439,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 18,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xff\xf8\x63\x00\x81\x01\x04\x06\x10\x18\x40\x60\x00"
-            "\x81\x01\x04\x06\x10\x18\x40\x60\x00\x81\x01\x04\x06"
-            "\x10\x18\x40\x40\x00\x01\x03\x02\x18\x04\x80\x0f\x00" }  },
+      {  85,22871,                      /* character number, location */
+         17, 0,   -1, 0,      /* topleft row,col, and botleft row,col */
+          { 19,   18, 3,33, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x47\x32\x93\x20\xfb\x32\xa1\x30\x42\x81\x91\x71"
+            "\xb2\x42\xc5\x72" }  },
       /* --- pixel bitmap for cmr180 char#86 V --- */
-      {  86, 1512,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\xf8\x0c\x70\x0c\x20\x18\x10\x18\x10\x18\x10\x30"
-            "\x08\x30\x08\x30\x08\x60\x04\x60\x04\xe0\x06\xc0\x02"
-            "\xc0\x02\x80\x01\x80\x01\x80\x01" }  },
+      {  86,23871,                      /* character number, location */
+         17, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   18, 3,61, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\x65\x22\x92\x42\xa1\x20\xf2\x32\x81\x30\xf1\x42"
+            "\x61\x40\x43\x42\x40\xf1\x52\x41\x50\xf2\x62\x21\x60"
+            "\xf2\x73\x70\x81\x86" }  },
       /* --- pixel bitmap for cmr180 char#87 W --- */
-      {  87, 1581,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 23,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3f\xfe\x7c\x06\x0c\x18\x03\x0d\x84\x81\x06\xc2\x40"
-            "\x83\xc1\xa0\x41\x60\x88\x21\x30\xc4\x10\x30\x62\x04"
-            "\x98\x60\x02\x4c\x30\x01\x2c\x58\x00\x1e\x3c\x00\x07"
-            "\x1c\x80\x03\x0e\x80\x01\x03\x40\x00\x01" }  },
+      {  87,25295,                      /* character number, location */
+         17, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 24,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f\xfe\xf8\x0c\x18\x70\x0c\x38\x20\x0c\x38\x20\x18"
+            "\x38\x10\x18\x38\x10\x18\x64\x10\x30\x64\x08\x30\x64"
+            "\x08\x30\xc2\x08\x30\xc2\x08\x60\xc2\x04\x60\x81\x05"
+            "\x60\x81\x05\xc0\x81\x03\xc0\x81\x03\xc0\x00\x03\x80"
+            "\x00\x01" }  },
       /* --- pixel bitmap for cmr180 char#88 X --- */
-      {  88, 1700,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 16,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x7f\x7e\x18\x18\x18\x08\x30\x04\x60\x06\x60\x02\xc0"
-            "\x01\xc0\x01\x80\x01\x40\x03\x40\x07\x20\x06\x30\x0c"
-            "\x10\x0c\x08\x18\x0c\x38\x3f\xfc" }  },
+      {  88,26428,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   17, 3,66, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x07\x36\x42\x63\x63\x52\x82\x51\xa2\x31\xc2\x12\xc2"
+            "\x11\xe2\x80\xf1\x73\x70\x61\x22\xb2\x32\xa1\x43\x81"
+            "\x62\x72\x72\x53\x73\x26\x47" }  },
       /* --- pixel bitmap for cmr180 char#89 Y --- */
-      {  89, 1769,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 18,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x7f\xf0\x63\x80\x81\x03\x06\x0c\x08\x60\x10\x80\x41"
-            "\x00\x8c\x00\x70\x03\x80\x05\x00\x0c\x00\x30\x00\xc0"
-            "\x00\x00\x03\x00\x0c\x00\x30\x00\xc0\x00\xe0\x0f\x00" }  },
+      {  89,27578,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 18,   17, 3,47, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x06\x66\x23\x82\x62\x81\x73\x71\x82\x61\xa2\x42\xa3"
+            "\x31\xc3\x12\xd2\x11\x70\xf6\x82\x80\x58\x51" }  },
       /* --- pixel bitmap for cmr180 char#90 Z --- */
-      {  90, 1828,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 12,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xfe\xef\x60\x06\x26\x30\x02\x23\x18\xc0\x00\x0c\x60"
-            "\x00\x03\x30\x88\x81\x0c\xc8\x80\x06\x6c\xe0\xff\x0f" }  },
+      {  90,28623,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   17, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfe\xdf\x81\x19\x30\x01\x23\x30\x04\x06\x60\x00\x06"
+            "\xe0\x00\x0c\xc0\x40\x0c\x88\x01\x19\xa0\x01\x36\xe0"
+            "\xff\x1f" }  },
       /* --- pixel bitmap for cmr180 char#91 [ --- */
-      {  91, 6195,                      /* character number, location */
-         19, 2,    -6, 2,     /* topleft row,col, and botleft row,col */
-          {  4,    25, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x1f\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x0f" }  },
+      {  91,100949,                     /* character number, location */
+         19, 2,   -6, 2,      /* topleft row,col, and botleft row,col */
+          {  5,   25, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05\x0f\xe1\x4f\x71\x45" }  },
       /* --- pixel bitmap for cmr180 char#92 (noname) --- */
-      {  92, 7025,                      /* character number, location */
-         17, 2,     9, 2,     /* topleft row,col, and botleft row,col */
-          {  8,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x84\x42\x21\x21\x21\x63\xe7\x42" }  },
+      {  92,119556,                     /* character number, location */
+         17, 3,    9, 3,      /* topleft row,col, and botleft row,col */
+          {  8,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x84\x42\x21\x21\x21\x63\xe7\x42" }  },
       /* --- pixel bitmap for cmr180 char#93 ] --- */
-      {  93, 6252,                      /* character number, location */
-         19, 0,    -6, 0,     /* topleft row,col, and botleft row,col */
-          {  5,    25, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x1f\x42\x08\x21\x84\x10\x42\x08\x21\x84\x10\x42\x08"
-            "\x21\x84\x1f" }  },
+      {  93,101647,                     /* character number, location */
+         19, 0,   -6, 0,      /* topleft row,col, and botleft row,col */
+          {  5,   25, 3,12, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05\xfe\x41\xf7\x41\x05" }  },
       /* --- pixel bitmap for cmr180 char#94 \^ --- */
-      {  94, 6473,                      /* character number, location */
-         17, 3,    13, 3,     /* topleft row,col, and botleft row,col */
-          {  5,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xc4\xed\x08" }  },
+      {  94,107834,                     /* character number, location */
+         17, 3,   13, 3,      /* topleft row,col, and botleft row,col */
+          {  6,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x37\x87" }  },
       /* --- pixel bitmap for cmr180 char#95 (noname) --- */
-      {  95, 6492,                      /* character number, location */
-         18, 1,    15, 1,     /* topleft row,col, and botleft row,col */
-          {  4,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf6\x06" }  },
+      {  95,108303,                     /* character number, location */
+         18, 2,   15, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x00" }  },
       /* --- pixel bitmap for cmr180 char#96 (noname) --- */
-      {  96, 6309,                      /* character number, location */
-         17, 2,     9, 2,     /* topleft row,col, and botleft row,col */
-          {  3,     8, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x54\x92\x5d" }  },
+      {  96,102265,                     /* character number, location */
+         17, 2,    9, 2,      /* topleft row,col, and botleft row,col */
+          {  3,    8, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x94\x92\x5d" }  },
       /* --- pixel bitmap for cmr180 char#97 a --- */
-      {  97, 1891,                      /* character number, location */
-         11, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    11, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x3c\x98\x01\x0c\x30\xf8\x38\x33\xcc\xb0\xc3\x8a\xcb"
-            "\x19" }  },
+      {  97,29771,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x7c\x30\x06\x60\x00\x03\x1f\xc6\x08\x66\xb0\x83\x35"
+            "\x2e\xcf\x00" }  },
       /* --- pixel bitmap for cmr180 char#98 b --- */
-      {  98, 1940,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 12,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x0f\xc0\x00\x0c\xc0\x00\x0c\xc0\x00\xec\xc1\x21\x0c"
-            "\xc6\xc0\x0c\xcc\xc0\x0c\xcc\xc0\x0c\xc6\x21\xe4\x01" }  },
+      {  98,30779,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   17, 3,43, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x80\xf4\x22\x80\x22\x14\x53\x32\x42\x52\x10\xf4"
+            "\x22\x62\x22\x52\x33\x32\x41\x24\x32" }  },
       /* --- pixel bitmap for cmr180 char#99 c --- */
-      {  99, 2003,                      /* character number, location */
-         11, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    11, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x78\xc4\x06\x03\x03\x03\x03\x03\x86\x44\x38" }  },
+      {  99,31560,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x18\x1b\x18\x30\x60\xc0\x80\x01\x06\x19\xe1\x01" }  },
       /* --- pixel bitmap for cmr180 char#100 d --- */
-      { 100, 2038,                      /* character number, location */
-         17, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 12,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xc0\x03\x30\x00\x03\x30\x00\x03\x30\x78\x43\x38\x06"
-            "\x33\x30\x03\x33\x30\x03\x33\x30\x06\x43\x38\x78\x0f" }  },
+      { 100,32555,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   17, 3,42, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x64\x20\xf4\x82\x20\x34\x12\x42\x33\x32\x52\x2f\x42"
+            "\x62\x20\x12\x52\x42\x33\x54\x14" }  },
       /* --- pixel bitmap for cmr180 char#101 e --- */
-      { 101, 2101,                      /* character number, location */
-         11, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    11, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\x38\x44\xc2\xc3\xff\x03\x03\x03\x86\x44\x38" }  },
+      { 101,33321,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x78\x08\x19\x1e\xfc\x7f\xc0\x80\x01\x06\x09\xe1\x01" }  },
       /* --- pixel bitmap for cmr180 char#102 f --- */
-      { 102, 2140,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xf0\x30\x33\x60\xc0\x80\xc1\x1f\x06\x0c\x18\x30\x60"
-            "\xc0\x80\x01\x03\x06\x3f\x00" }  },
+      { 102,34146,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,   17, 3,23, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x53\x52\x12\xf3\x32\x48\x10\xf8\x32\x40\x17\x11" }  },
       /* --- pixel bitmap for cmr180 char#103 g --- */
-      { 103, 2183,                      /* character number, location */
-         11, 1,    -6, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xbc\x9b\x39\xcc\x30\xc3\x98\xe1\x43\x00\x03\xfc\xe1"
-            "\xcf\x60\x83\x0d\x36\x98\x31\x7c\x00" }  },
+      { 103,35383,                      /* character number, location */
+         12, 1,   -6, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x00\xe3\xa5\x19\x87\x31\x8c\x61\x98\xc1\x07\x01\x18"
+            "\xc0\x3f\xfc\x23\xb8\x81\x0d\x6c\x60\x86\xc1\x03" }  },
       /* --- pixel bitmap for cmr180 char#104 h --- */
-      { 104, 2248,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x0f\x80\x01\x30\x00\x06\xc0\x00\x18\x00\xf3\xe0\x31"
-            "\x0c\x86\xc1\x30\x18\x06\xc3\x60\x18\x0c\x83\x61\x30"
-            "\xbf\x1f" }  },
+      { 104,36370,                      /* character number, location */
+         17, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   17, 3,30, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x80\xf4\x22\x80\x22\x14\x53\x32\x20\xf7\x22\x42"
+            "\x26\x24" }  },
       /* --- pixel bitmap for cmr180 char#105 i --- */
-      { 105, 2311,                      /* character number, location */
-         18, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,    18, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x84\x43\x00\x00\x00\x3c\x0c\xc3\x30\x0c\xc3\x30\xcc"
-            "\x0f" }  },
+      { 105,37065,                      /* character number, location */
+         18, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,   18, 3,20, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x21\x43\x41\x30\xf3\x64\x20\xf8\x22\x26" }  },
       /* --- pixel bitmap for cmr180 char#106 j --- */
-      { 106, 2348,                      /* character number, location */
-         18,-2,    -5,-2,     /* topleft row,col, and botleft row,col */
-          {  7,    23, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x20\x38\x08\x00\x00\x00\xf0\x60\x30\x18\x0c\x06\x83"
-            "\xc1\x60\x30\x18\x0c\x9e\x79\x00" }  },
+      { 106,37837,                      /* character number, location */
+         18,-1,   -5,-1,      /* topleft row,col, and botleft row,col */
+          {  6,   23, 3,25, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x41\x43\x41\x10\xf3\x60\x24\xfc\x42\x02\x21\x23\x22" }  },
       /* --- pixel bitmap for cmr180 char#107 k --- */
-      { 107, 2397,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 12,    17, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x0f\xc0\x00\x0c\xc0\x00\x0c\xc0\x00\x8c\xc7\x18\x8c"
-            "\xc0\x04\x6c\xc0\x0f\xcc\xc0\x18\x8c\xc3\x30\xbf\x0f" }  },
+      { 107,38933,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   17, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0f\xc0\x00\x0c\xc0\x00\x0c\xc0\x00\x8c\xcf\x30\x0c"
+            "\xc1\x0c\x6c\xc0\x0f\xcc\xc0\x18\x8c\xc3\x30\xbf\x0f" }  },
       /* --- pixel bitmap for cmr180 char#108 l --- */
-      { 108, 2458,                      /* character number, location */
-         17, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  6,    17, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x0f\xc3\x30\x0c\xc3\x30\x0c\xc3\x30\x0c\xc3\x30\x3f" }  },
+      { 108,39532,                      /* character number, location */
+         17, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  6,   17, 3,10, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x20\xfe\x22\x26" }  },
       /* --- pixel bitmap for cmr180 char#109 m --- */
-      { 109, 2499,                      /* character number, location */
-         11, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 20,    11, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xcf\xe3\xc1\xe3\x31\x0c\x06\xc3\x60\x30\x0c\x06\xc3"
-            "\x60\x30\x0c\x06\xc3\x60\x30\x0c\x06\xc3\x60\x30\x3f"
-            "\x9f\x0f" }  },
+      { 109,40845,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 20,   11, 3,28, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x24\x34\x54\x34\x32\x20\xf7\x22\x52\x52\x26\x25"
+            "\x25" }  },
       /* --- pixel bitmap for cmr180 char#110 n --- */
-      { 110, 2572,                      /* character number, location */
-         11, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    11, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xcf\x83\xc7\x30\x18\x06\xc3\x60\x18\x0c\x83\x61\x30"
-            "\x0c\x86\xc1\xfc\x7e" }  },
+      { 110,41836,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 3,20, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x14\x53\x32\x20\xf7\x22\x42\x26\x24" }  },
       /* --- pixel bitmap for cmr180 char#111 o --- */
-      { 111, 2623,                      /* character number, location */
-         11, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  9,    11, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\x38\x8c\x09\x1a\x3c\x78\xf0\xe0\xc1\x82\x8c\xe1\x00" }  },
+      { 111,42537,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x78\x10\x22\xd0\xc0\x03\x0f\x3c\xf0\xc0\x02\x11\x82"
+            "\x07" }  },
       /* --- pixel bitmap for cmr180 char#112 p --- */
-      { 112, 2670,                      /* character number, location */
-         11, 0,    -5, 0,     /* topleft row,col, and botleft row,col */
-          { 12,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xef\xc1\x21\x0c\xc6\xc0\x0c\xcc\xc0\x0c\xcc\xc0\x0c"
-            "\xc6\x31\xec\xc1\x00\x0c\xc0\x00\x0c\xf0\x03" }  },
+      { 112,43607,                      /* character number, location */
+         11, 1,   -5, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   16, 3,41, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x14\x53\x32\x42\x52\x10\xf4\x22\x62\x22\x52\x33"
+            "\x32\x42\x14\x30\xf3\x22\x86\x62" }  },
       /* --- pixel bitmap for cmr180 char#113 q --- */
-      { 113, 2731,                      /* character number, location */
-         11, 1,    -5, 1,     /* topleft row,col, and botleft row,col */
-          { 12,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x78\xc2\x38\x06\x33\x30\x03\x33\x30\x03\x33\x30\x06"
-            "\x43\x38\x78\x03\x30\x00\x03\x30\x00\x03\xfc" }  },
+      { 113,44617,                      /* character number, location */
+         11, 1,   -5, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   16, 3,42, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x34\x21\x42\x33\x32\x52\x2f\x42\x62\x20\x12\x52\x42"
+            "\x33\x54\x12\x20\xf3\x82\x20\x66" }  },
       /* --- pixel bitmap for cmr180 char#114 r --- */
-      { 114, 2792,                      /* character number, location */
-         11, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  9,    11, 1,        /* width x height, pixsz,  bitmap... */
- (pixbyte *)"\xef\x38\x73\x60\xc0\x80\x01\x03\x06\x0c\x18\xfc\x00" }  },
+      { 114,45482,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   11, 3,19, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x13\x33\x22\x23\x40\xf6\x22\x56\x30" }  },
       /* --- pixel bitmap for cmr180 char#115 s --- */
-      { 115, 2825,                      /* character number, location */
-         11, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  7,    11, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xfc\xe1\x70\xf0\xf1\xc1\xc3\xe1\x51\x07" }  },
+      { 115,46417,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfc\x82\x83\x03\x3e\x7c\xe0\xc1\xc1\x43\x3d" }  },
       /* --- pixel bitmap for cmr180 char#116 t --- */
-      { 116, 2866,                      /* character number, location */
-         15, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          {  8,    15, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x08\x08\x0c\x0c\x7f\x0c\x0c\x0c\x0c\x0c\x8c\x8c\x8c"
-            "\x8c\x78" }  },
+      { 116,47244,                      /* character number, location */
+         15, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          {  9,   15, 3,29, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x41\x40\x32\x63\x48\x10\xf4\x32\x40\xf3\x32\x31"
+            "\x44\x14" }  },
       /* --- pixel bitmap for cmr180 char#117 u --- */
-      { 117, 2911,                      /* character number, location */
-         11, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 13,    11, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x8f\x87\xc1\x30\x18\x06\xc3\x60\x18\x0c\x83\x61\x30"
-            "\x0c\x86\xe1\xc0\x7b" }  },
+      { 117,48171,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 12,   11, 3,22, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x24\x20\xf7\x22\x42\x20\x22\x33\x54\x14" }  },
       /* --- pixel bitmap for cmr180 char#118 v --- */
-      { 118, 2962,                      /* character number, location */
-         11, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 10,    11, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xdf\x1b\xc6\x08\x23\x8c\x60\x81\x05\x16\x30\xc0\x00"
-            "\x03" }  },
+      { 118,49041,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x9f\x77\x18\x43\x18\xc2\x19\x4c\x60\x02\x0e\x70\x80"
+            "\x03\x08\x00" }  },
       /* --- pixel bitmap for cmr180 char#119 w --- */
-      { 119, 3007,                      /* character number, location */
-         11, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          { 15,    11, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xcf\x7b\xc3\x98\x61\x88\x39\xc2\x34\x61\x9a\x60\x2d"
-            "\x70\x1c\x38\x0e\x18\x03\x04\x01" }  },
+      { 119,50292,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 16,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xdf\xf7\x86\x63\x8e\x63\x8c\x23\x4c\x22\x4c\x36\x58"
+            "\x16\x38\x14\x38\x1c\x30\x0c\x10\x08" }  },
       /* --- pixel bitmap for cmr180 char#120 x --- */
-      { 120, 3078,                      /* character number, location */
-         11, 0,     0, 0,     /* topleft row,col, and botleft row,col */
-          { 12,    11, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\x9e\xc7\x11\x98\x00\x0b\x70\x00\x06\xe0\x00\x0d\x88"
-            "\xc1\x30\x9f\x0f" }  },
+      { 120,51271,                      /* character number, location */
+         11, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 13,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbe\x0f\x63\x60\x04\x58\x00\x0e\x80\x01\x38\x80\x0c"
+            "\x18\x83\x61\x7c\x7e" }  },
       /* --- pixel bitmap for cmr180 char#121 y --- */
-      { 121, 3123,                      /* character number, location */
-         11, 0,    -5, 0,     /* topleft row,col, and botleft row,col */
-          { 11,    16, 1,        /* width x height, pixsz,  bitmap... */
-       (pixbyte *)"\xbe\x67\x18\x46\x30\x82\x11\x58\xc0\x02\x16\x60\x00"
-            "\x03\x18\x40\x00\x82\x11\x4c\xc0\x01" }  },
+      { 121,52338,                      /* character number, location */
+         11, 0,   -5, 0,      /* topleft row,col, and botleft row,col */
+          { 12,   16, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3e\xcf\x61\x18\x82\x21\x38\x03\x13\x30\x01\x0e\xe0"
+            "\x00\x0e\x40\x00\x04\x20\x30\x02\x13\xe0\x00" }  },
       /* --- pixel bitmap for cmr180 char#122 z --- */
-      { 122, 3182,                      /* character number, location */
-         11, 1,     0, 1,     /* topleft row,col, and botleft row,col */
-          {  8,    11, 1,        /* width x height, pixsz,  bitmap... */
-         (pixbyte *)"\xff\x63\x61\x31\x30\x18\x8c\x8c\x86\xc6\xff" }  },
+      { 122,53303,                      /* character number, location */
+         11, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   11, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x87\x05\x0b\x03\x03\x07\x46\x86\x06\x0d\xff\x07" }  },
       /* --- pixel bitmap for cmr180 char#123 (noname) --- */
-      { 123, 7064,                      /* character number, location */
-          7, 0,     6, 0,     /* topleft row,col, and botleft row,col */
-          { 11,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\x07" }  },
+      { 123,120172,                     /* character number, location */
+          7, 0,    6, 0,      /* topleft row,col, and botleft row,col */
+          { 12,    1, 3, 2, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0c" }  },
       /* --- pixel bitmap for cmr180 char#124 (noname) --- */
-      { 124, 7073,                      /* character number, location */
-          7, 0,     6, 0,     /* topleft row,col, and botleft row,col */
-          { 24,     1, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xff\xff\xff" }  },
+      { 124,120992,                     /* character number, location */
+          7, 0,    6, 0,      /* topleft row,col, and botleft row,col */
+          { 25,    1, 3, 4, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x0b" }  },
       /* --- pixel bitmap for cmr180 char#125 (noname) --- */
-      { 125, 6505,                      /* character number, location */
-         17, 3,    13, 3,     /* topleft row,col, and botleft row,col */
-          {  6,     4, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xf3\x1c\x45" }  },
+      { 125,108982,                     /* character number, location */
+         17, 3,   13, 3,      /* topleft row,col, and botleft row,col */
+          {  7,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x66\xf3\x2c\x02" }  },
       /* --- pixel bitmap for cmr180 char#126 \~ --- */
-      { 126, 6528,                      /* character number, location */
-         17, 2,    14, 2,     /* topleft row,col, and botleft row,col */
-          {  7,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\x46\x5f\x0c" }  },
+      { 126,109666,                     /* character number, location */
+         17, 2,   14, 2,      /* topleft row,col, and botleft row,col */
+          {  8,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x7e\x31" }  },
       /* --- pixel bitmap for cmr180 char#127 (noname) --- */
-      { 127, 6545,                      /* character number, location */
-         18, 2,    15, 2,     /* topleft row,col, and botleft row,col */
-          {  7,     3, 1,        /* width x height, pixsz,  bitmap... */
-            (pixbyte *)"\xe3\xfb\x18" }  },
+      { 127,110347,                     /* character number, location */
+         18, 2,   15, 2,      /* topleft row,col, and botleft row,col */
+          {  8,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x66\xe7\x66" }  },
+      /* --- trailer  --- */
+      { -99, -999,  0,0,0,0, { 0,0,0,0, (pixbyte *)"\0" }  }
+   } ;
+
+
+/* --- size=6 for .210gf ---
+ * mf '\mode=preview; mag=magstep(-13.80488502080647873125); input cmr10'
+ * --------------------------------------------------------------------- */
+/* --- fontdef for cmr210 --- */
+static	chardef  cmr210[] =
+   {
+      /* --- pixel bitmap for cmr210 char#0 \Gamma --- */
+      {   0,54819,                      /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 17,   20, 3,31, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x02\x43\x73\x10\xf1\x33\x91\x10\xf2\x33\xa1\xfb"
+            "\x33\xba\x71" }  },
+      /* --- pixel bitmap for cmr210 char#1 \Delta --- */
+      {   1,55738,                      /* character number, location */
+         21, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 22,   21, 3,84, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\xa2\xa0\xf1\x94\x90\x81\x14\xe0\x21\x23\xe0\x11"
+            "\x34\xe1\x43\xd1\x54\xc1\x63\xb1\x74\xa1\x83\x91\x94"
+            "\x81\xa3\x71\xb4\x61\xc3\x52\xc4\x41\xe3\x20\xf1\x1e"
+            "\x06\x1e\x08" }  },
+      /* --- pixel bitmap for cmr210 char#2 \Theta --- */
+      {   2,56889,                      /* character number, location */
+         21, 2,   -1, 2,      /* topleft row,col, and botleft row,col */
+          { 19,   22, 3,89, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x75\xc2\x52\x83\x73\x62\x92\x52\xb2\x20\xf1\x13\xb3"
+            "\x10\x12\xd2\x13\x31\x51\x33\x0f\x23\x37\x33\x03\x31"
+            "\x51\x33\x0f\x13\xd3\xf1\x13\xb3\x10\x22\xb2\x52\x92"
+            "\x63\x73\x82\x52\xc5\x73" }  },
+      /* --- pixel bitmap for cmr210 char#3 \Lambda --- */
+      {   3,57875,                      /* character number, location */
+         21, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 18,   21, 3,62, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf2\x82\x80\xf2\x74\x70\x66\x60\xf2\x61\x23\x60\xf2"
+            "\x51\x43\x50\xf2\x41\x63\x40\x31\x74\x30\xf1\x31\x83"
+            "\x30\x22\x84\x26\x48" }  },
+      /* --- pixel bitmap for cmr210 char#4 \Xi --- */
+      {   4,59266,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 17,   20, 3,56, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x0e\x03\x0f\x21\xe0\x11\xf2\xe0\x30\x31\x91\x30"
+            "\xf1\x3b\x30\x31\x91\x30\xf2\xe0\x3f\x21\xe0\x11\x0f"
+            "\x1e\x03" }  },
+      /* --- pixel bitmap for cmr210 char#5 \Pi --- */
+      {   5,60431,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 20,   20, 3,22, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x06\xfe\x33\x83\x30\xf2\x33\x83\x39\x29" }  },
+      /* --- pixel bitmap for cmr210 char#6 \Sigma --- */
+      {   6,61578,                      /* character number, location */
+         20, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 17,   20, 3,75, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x02\x23\x93\x24\x92\x33\xa1\x43\xa1\x34\x91\x44"
+            "\x81\x53\xe4\xe4\xe2\xe0\x11\xe0\x21\x81\x61\x91\x51"
+            "\xa1\x41\xa2\x31\xb1\x31\xa3\x2e\x01\x1e\x02\x12" }  },
+      /* --- pixel bitmap for cmr210 char#7 \Upsilon --- */
+      {   7,62692,                      /* character number, location */
+         21, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 19,   21, 3,49, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x24\x74\x36\x56\x13\x23\x33\x24\x52\x32\x52\x62\x12"
+            "\x61\x72\x12\xe0\x11\x11\x80\xfc\x83\x80\x4b\x41" }  },
+      /* --- pixel bitmap for cmr210 char#8 \Phi --- */
+      {   8,63750,                      /* character number, location */
+         20, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 17,   20, 3,69, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3b\x30\xf2\x73\x70\x57\x83\x13\x13\x52\x33\x32\x32"
+            "\x43\x42\x1f\x33\x43\x43\x12\x43\x42\x32\x33\x32\x53"
+            "\x13\x13\x87\x50\xf2\x73\x70\x3b\x31" }  },
+      /* --- pixel bitmap for cmr210 char#9 \Psi --- */
+      {   9,64893,                      /* character number, location */
+         20, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 19,   20, 3,61, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x4b\x40\xf2\x83\x83\x53\x53\xf5\x13\x43\x43\x10\x22"
+            "\x43\x42\x43\x33\x33\x53\x23\x23\x73\x13\x13\xa7\x60"
+            "\xf2\x83\x80\x4b\x42" }  },
+      /* --- pixel bitmap for cmr210 char#10 \Omega --- */
+      {  10,66078,                      /* character number, location */
+         21, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 19,   21, 3,77, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x75\xc2\x52\x83\x73\x30\xf1\x23\x93\x20\xf4\x13\xb3"
+            "\x10\x22\xb2\x43\x93\x20\xf1\x32\x92\x30\x42\x72\x41"
+            "\x32\x72\x32\x41\x71\x43\x32\x52\x32\xf2\x16\x56\x12" }  },
+      /* --- pixel bitmap for cmr210 char#11 \ff --- */
+      {  11,112755,                     /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 19,   20, 3,49, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\x34\x62\x43\x23\x41\x53\x33\x32\x62\x41\x10\xf2"
+            "\x32\x62\x6e\x02\x30\xfa\x32\x62\x60\x16\x27\x32" }  },
+      /* --- pixel bitmap for cmr210 char#12 \fi --- */
+      {  12,113951,                     /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 15,   20, 3,36, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\x92\x41\x71\x53\x52\x53\x20\xf2\x32\xad\x20\xfa"
+            "\x32\x62\x20\x16\x26" }  },
+      /* --- pixel bitmap for cmr210 char#13 \fl --- */
+      {  13,115133,                     /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 15,   20, 3,34, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x67\x63\x33\x61\x53\x20\xf3\x32\x62\x2d\x20\xfa\x32"
+            "\x62\x20\x16\x26" }  },
+      /* --- pixel bitmap for cmr210 char#14 \ffi --- */
+      {  14,116766,                     /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 23,   20, 3,54, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\x35\x83\x41\x12\x41\x71\x53\x53\x52\x53\x53\x20"
+            "\xf2\x32\x62\xae\x07\x20\xfa\x32\x62\x62\x20\x16\x26"
+            "\x26" }  },
+      /* --- pixel bitmap for cmr210 char#15 \ffl --- */
+      {  15,118433,                     /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 23,   20, 3,54, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\x37\x63\x44\x33\x61\x53\x53\x52\x53\x62\x20\xf2"
+            "\x32\x62\x62\x2e\x07\x20\xfa\x32\x62\x62\x20\x16\x26"
+            "\x26" }  },
+      /* --- pixel bitmap for cmr210 char#16 \imath --- */
+      {  16,80265,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   13, 3,10, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x20\xfa\x22\x26" }  },
+      /* --- pixel bitmap for cmr210 char#17 \jmath --- */
+      {  17,80943,                      /* character number, location */
+         13,-2,   -6,-2,      /* topleft row,col, and botleft row,col */
+          {  8,   19, 3,19, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x35\xfd\x62\x11\x45\x31\x13\x22\x25\x22" }  },
+      /* --- pixel bitmap for cmr210 char#18 \gravesym --- */
+      {  18,103978,                     /* character number, location */
+         20, 3,   15, 3,      /* topleft row,col, and botleft row,col */
+          {  6,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xc3\xe1\x60\x20" }  },
+      /* --- pixel bitmap for cmr210 char#19 \acutesym --- */
+      {  19,104551,                     /* character number, location */
+         20, 6,   15, 6,      /* topleft row,col, and botleft row,col */
+          {  6,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x30\xce\x19\x01" }  },
+      /* --- pixel bitmap for cmr210 char#20 \checksym --- */
+      {  20,105180,                     /* character number, location */
+         18, 4,   15, 4,      /* topleft row,col, and botleft row,col */
+          {  7,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x63\x1f\x02" }  },
+      /* --- pixel bitmap for cmr210 char#21 \brevesym --- */
+      {  21,105798,                     /* character number, location */
+         20, 3,   16, 3,      /* topleft row,col, and botleft row,col */
+          {  9,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x01\x03\x1a\xe3\x03" }  },
+      /* --- pixel bitmap for cmr210 char#22 (noname) --- */
+      {  22,106382,                     /* character number, location */
+         17, 2,   16, 2,      /* topleft row,col, and botleft row,col */
+          { 11,    1, 3, 2, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0b" }  },
+      /* --- pixel bitmap for cmr210 char#23 (noname) --- */
+      {  23,107159,                     /* character number, location */
+         21, 8,   16, 8,      /* topleft row,col, and botleft row,col */
+          {  6,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5e\x18\x86\x1e" }  },
+      /* --- pixel bitmap for cmr210 char#24 (noname) --- */
+      {  24,107855,                     /* character number, location */
+         -1, 4,   -6, 4,      /* topleft row,col, and botleft row,col */
+          {  7,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\x18\x18\xfc\x03" }  },
+      /* --- pixel bitmap for cmr210 char#25 \ss --- */
+      {  25,82040,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   20, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xe0\x01\xc3\x30\x30\x06\xc6\xc0\x18\x08\x83\x78\x0e"
+            "\x0c\x83\xc1\x30\x30\x06\xc4\x80\x19\x30\x03\x66\xc0"
+            "\x0c\x98\x99\x31\x93\xc7\x01" }  },
+      /* --- pixel bitmap for cmr210 char#26 \ae --- */
+      {  26,83405,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 19,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfc\xf0\x70\xd8\x98\x83\x83\x08\x0c\x0c\x60\x60\xf0"
+            "\xff\x73\x18\xc0\xc0\x00\x03\x06\x18\x70\xc0\x80\x03"
+            "\x0d\x36\xc4\x0f\x1e" }  },
+      /* --- pixel bitmap for cmr210 char#27 \oe --- */
+      {  27,84543,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 21,   13, 3,61, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x44\x64\x52\x42\x22\x42\x22\x64\x52\x21\x83\x64\x82"
+            "\x74\x8b\x0f\x22\x82\x90\x12\x64\x92\x64\x71\x22\x42"
+            "\x22\x51\x54\x65\x26" }  },
+      /* --- pixel bitmap for cmr210 char#28 (noname) --- */
+      {  28,85377,                      /* character number, location */
+         15, 1,   -3, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   18, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x00\x08\x80\xc1\x17\x06\x63\xe0\x04\xd2\x60\x1e\xc4"
+            "\x43\x78\x08\x8f\x60\x19\x64\xc1\x18\x0c\x7e\x20\x00"
+            "\x06\x40\x00\x00" }  },
+      /* --- pixel bitmap for cmr210 char#29 \AE --- */
+      {  29,87177,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 24,   20, 3,113, (pixbyte *)/* width,ht, fmt,pixsz,map... */
+            "\x6e\x02\xb1\x13\x62\xa2\x13\x71\xa1\x23\x71\xa1\x23"
+            "\x81\x10\xf1\x71\x33\x81\x10\x71\x33\x51\xa1\x43\x51"
+            "\xa1\x43\x42\xae\x91\x53\x42\x40\xf1\x51\x53\x51\x31"
+            "\x41\x63\x91\x41\x63\x82\x32\x63\x81\x41\x73\x81\x33"
+            "\x63\x63\x16\x3e\x15" }  },
+      /* --- pixel bitmap for cmr210 char#30 \OE --- */
+      {  30,88905,                      /* character number, location */
+         21, 2,   -1, 2,      /* topleft row,col, and botleft row,col */
+          { 26,   22, 3,119, (pixbyte *)/* width,ht, fmt,pixsz,map... */
+            "\x75\xe0\x52\x4d\x53\x64\x62\x52\x74\x71\x42\x84\x71"
+            "\x20\xf1\x13\x84\x81\x13\x94\x51\x21\x13\xa3\x51\x43"
+            "\xa3\x42\x43\xa9\x43\xa3\x42\x43\xa3\x51\x43\xa3\x51"
+            "\x34\x94\x91\x13\x84\x91\x13\x84\x82\xf1\x23\x74\x81"
+            "\x10\x33\x64\x63\x62\x4e\x85\xe0" }  },
+      /* --- pixel bitmap for cmr210 char#31 (noname) --- */
+      {  31,89923,                      /* character number, location */
+         21, 2,   -1, 2,      /* topleft row,col, and botleft row,col */
+          { 19,   22, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x80\x0f\x01\x83\x05\x0e\x38\x30\x80\xc1\x00\x1a\x07"
+            "\xd8\x19\x40\xcc\x00\x61\x07\x0c\x3f\x20\xf8\x81\xc0"
+            "\x0f\x04\x7e\x10\xf0\xc3\x80\x1f\x02\xdc\x08\x60\x6e"
+            "\x80\x63\x01\x0c\x06\x30\x70\xc0\x81\x06\x03\xc2\x07"
+            "\x00" }  },
+      /* --- pixel bitmap for cmr210 char#32 (noname) --- */
+      {  32,108355,                     /* character number, location */
+         12, 1,    8, 1,      /* topleft row,col, and botleft row,col */
+          {  6,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x20\x7e\x04" }  },
+      /* --- pixel bitmap for cmr210 char#33 ! --- */
+      {  33,90616,                      /* character number, location */
+         21, 3,    0, 3,      /* topleft row,col, and botleft row,col */
+          {  3,   21, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfa\xff\xff\x92\x24\x01\x80\x2e" }  },
+      /* --- pixel bitmap for cmr210 char#34 " --- */
+      {  34,119412,                     /* character number, location */
+         20, 1,   11, 1,      /* topleft row,col, and botleft row,col */
+          {  9,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x82\x8e\x1b\x26\x48\x90\xa0\x20\x41\x41\x00" }  },
+      /* --- pixel bitmap for cmr210 char#35 # --- */
+      {  35,92096,                      /* character number, location */
+         20, 2,   -6, 2,      /* topleft row,col, and botleft row,col */
+          { 20,   26, 3,79, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf2\x92\x42\x30\x83\x33\x30\xf2\x82\x42\x40\x73\x33"
+            "\xb2\x42\x5f\x1e\x06\xf3\x62\x42\x6f\x1e\x06\x52\x42"
+            "\xb3\x33\x70\xf2\x42\x42\x80\x33\x33\x80\xf2\x32\x42"
+            "\x92" }  },
+      /* --- pixel bitmap for cmr210 char#36 $ --- */
+      {  36,76445,                      /* character number, location */
+         22, 2,   -2, 2,      /* topleft row,col, and botleft row,col */
+          { 11,   24, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x20\x00\x01\x3e\x58\x62\xa2\x11\x8e\x7c\xe4\x27\x7a"
+            "\x81\x1f\xf8\x83\x3f\xd0\x81\x5c\xc4\x27\x1e\x71\x88"
+            "\x44\x46\x1a\x7c\x80\x00\x04" }  },
+      /* --- pixel bitmap for cmr210 char#37 % --- */
+      {  37,93357,                      /* character number, location */
+         22, 2,   -2, 2,      /* topleft row,col, and botleft row,col */
+          { 20,   24, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x38\x00\x43\x04\x38\xc6\xc0\x31\xf8\x1f\x83\xe0\x30"
+            "\x08\x06\x83\x70\x30\x08\x03\x83\x38\x60\xc4\x01\x44"
+            "\x0c\x80\xe3\x00\x00\x87\x03\x30\x44\x80\x63\x04\x1c"
+            "\x83\xc0\x30\x08\x0e\x83\x60\x30\x08\x07\x83\x38\x30"
+            "\x88\x01\x46\x1c\x40\xc4\x00\x38" }  },
+      /* --- pixel bitmap for cmr210 char#38 & --- */
+      {  38,77747,                      /* character number, location */
+         21, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 21,   22, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xc0\x01\x00\x4c\x00\x80\x10\x00\x18\x02\x00\x43\x00"
+            "\x60\x08\x00\x8c\x00\x80\x09\x00\xb0\xc0\x1f\x1c\xe0"
+            "\x80\x01\x0c\x78\x80\x80\x0c\x08\x88\x03\x81\x61\x10"
+            "\x10\x18\x01\x03\x27\x60\xc0\x02\x0d\x30\x20\x03\x0e"
+            "\xc4\x30\x43\xf0\x81\x07" }  },
+      /* --- pixel bitmap for cmr210 char#39 ' --- */
+      {  39,94051,                      /* character number, location */
+         20, 3,   11, 3,      /* topleft row,col, and botleft row,col */
+          {  3,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x49\x4a\x01" }  },
+      /* --- pixel bitmap for cmr210 char#40 ( --- */
+      {  40,94631,                      /* character number, location */
+         22, 2,   -8, 2,      /* topleft row,col, and botleft row,col */
+          {  7,   30, 3,50, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x61\x51\x51\x52\x51\x52\x51\x52\x40\xf1\x11\x5f\x92"
+            "\x50\xf1\x11\x50\x12\x61\x62\x61\x62\x61\x71\x71" }  },
+      /* --- pixel bitmap for cmr210 char#41 ) --- */
+      {  41,95254,                      /* character number, location */
+         22, 2,   -8, 2,      /* topleft row,col, and botleft row,col */
+          {  7,   30, 3,51, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x01\x71\x71\x62\x61\x62\x61\x62\x10\xf1\x51\x10\xf9"
+            "\x52\xf1\x51\x10\x42\x51\x52\x51\x52\x51\x51\x51\x62" }  },
+      /* --- pixel bitmap for cmr210 char#42 * --- */
+      {  42,95901,                      /* character number, location */
+         22, 2,    9, 2,      /* topleft row,col, and botleft row,col */
+          { 11,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x20\x00\x01\x08\x46\xfc\x7a\xfe\xc0\x81\x3f\xaf\x1f"
+            "\x31\x08\x40\x00\x02" }  },
+      /* --- pixel bitmap for cmr210 char#43 + --- */
+      {  43,96599,                      /* character number, location */
+         17, 2,   -3, 2,      /* topleft row,col, and botleft row,col */
+          { 19,   20, 3,15, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf8\x92\x8f\x1e\x05\xf8\x92\x87" }  },
+      /* --- pixel bitmap for cmr210 char#44 (noname) --- */
+      {  44,97194,                      /* character number, location */
+          3, 3,   -6, 3,      /* topleft row,col, and botleft row,col */
+          {  3,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x49\x4a\x01" }  },
+      /* --- pixel bitmap for cmr210 char#45 (noname) --- */
+      {  45,119927,                     /* character number, location */
+          7, 0,    5, 0,      /* topleft row,col, and botleft row,col */
+          {  8,    2, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\xff" }  },
+      /* --- pixel bitmap for cmr210 char#46 (noname) --- */
+      {  46,97665,                      /* character number, location */
+          3, 3,    0, 3,      /* topleft row,col, and botleft row,col */
+          {  3,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x00" }  },
+      /* --- pixel bitmap for cmr210 char#47 / --- */
+      {  47,98173,                      /* character number, location */
+         22, 2,   -7, 2,      /* topleft row,col, and botleft row,col */
+          { 11,   29, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x00\x06\x30\xc0\x01\x06\x30\xc0\x01\x06\x30\xc0\x01"
+            "\x06\x30\xc0\x01\x06\x30\xc0\x01\x06\x30\xc0\x01\x06"
+            "\x30\xc0\x01\x06\x30\xc0\x01\x06\x30\xc0\x01\x06\x30"
+            "\x00" }  },
+      /* --- pixel bitmap for cmr210 char#48 0 --- */
+      {  48,66830,                      /* character number, location */
+         20, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   21, 3,43, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x45\x72\x32\x51\x71\x32\x72\x21\x91\x1f\xa2\x92\x11"
+            "\x91\x22\x72\x31\x71\x52\x32\x75\x42" }  },
+      /* --- pixel bitmap for cmr210 char#49 1 --- */
+      {  49,67632,                      /* character number, location */
+         20, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 10,   20, 3,20, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x42\x73\x43\x12\x40\xfe\x42\x40\x42\x4a" }  },
+      /* --- pixel bitmap for cmr210 char#50 2 --- */
+      {  50,68615,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   20, 3,57, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x45\x62\x43\x31\x82\x13\x72\x14\x67\x72\x12\x82\xf1"
+            "\xa3\xa2\xa2\xa2\xa2\xa2\xa2\xa2\x61\x31\x81\x21\x81"
+            "\x2b\x1c\x12" }  },
+      /* --- pixel bitmap for cmr210 char#51 3 --- */
+      {  51,69663,                      /* character number, location */
+         20, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   21, 3,63, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x45\x71\x43\x41\x62\x20\xf2\x13\x53\x10\xf1\x92\x20"
+            "\x82\x75\xc3\xb3\xb2\xb3\x12\x73\x0f\x14\x63\x03\x72"
+            "\x21\x73\x32\x43\x65\x43" }  },
+      /* --- pixel bitmap for cmr210 char#52 4 --- */
+      {  52,70605,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   20, 3,56, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x82\x30\x73\x94\x91\x12\x81\x22\x72\x22\x71\x32"
+            "\x61\x42\x52\x42\x51\x52\x41\x62\x32\x62\x3d\xf4\x82"
+            "\x30\x58" }  },
+      /* --- pixel bitmap for cmr210 char#53 5 --- */
+      {  53,71653,                      /* character number, location */
+         20, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   21, 3,65, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x22\x52\x48\x57\x61\x21\x70\xf2\x21\xa0\x21\x24\x61"
+            "\x11\x42\x42\x52\x41\x72\x10\xf2\xa3\x0f\x23\x73\x11"
+            "\x82\x21\x72\x42\x42\x75\x42" }  },
+      /* --- pixel bitmap for cmr210 char#54 6 --- */
+      {  54,72567,                      /* character number, location */
+         20, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   21, 3,67, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x64\x72\x41\x52\x43\x32\x53\x31\xb2\xb1\xb2\x34\x42"
+            "\x12\x41\x33\x71\x23\x72\x1f\x32\x92\x11\x92\x12\x82"
+            "\x12\x72\x31\x71\x52\x41\x75\x42" }  },
+      /* --- pixel bitmap for cmr210 char#55 7 --- */
+      {  55,73491,                      /* character number, location */
+         20, 2,   -1, 2,      /* topleft row,col, and botleft row,col */
+          { 13,   21, 3,57, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x11\xcc\x1b\x21\x91\x11\x91\x21\x81\x30\xf1\x81\x40"
+            "\x71\x50\xf1\x61\x60\xf1\x52\x60\xf2\x42\x70\xf3\x33"
+            "\x70\x41\x81" }  },
+      /* --- pixel bitmap for cmr210 char#56 8 --- */
+      {  56,74419,                      /* character number, location */
+         20, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   21, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x01\x61\x10\x18\x03\x66\xc0\x0c\x98\x03\xe3\x31"
+            "\x7c\x03\x3f\xc0\x0f\xc6\x63\xf0\x04\xf8\x00\x1e\xc0"
+            "\x03\x78\x00\x19\x30\x06\x03\x1f\x00" }  },
+      /* --- pixel bitmap for cmr210 char#57 9 --- */
+      {  57,75341,                      /* character number, location */
+         20, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   21, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x01\x41\x10\x10\x03\x36\xc0\x06\xd0\x00\x1e\xc0"
+            "\x03\x78\x00\x1b\x70\x02\x8e\xb0\xe1\x31\x00\x02\x60"
+            "\x00\xcc\xc1\x38\x08\xc2\x80\x0f\x00" }  },
+      /* --- pixel bitmap for cmr210 char#58 : --- */
+      {  58,98777,                      /* character number, location */
+         13, 3,    0, 3,      /* topleft row,col, and botleft row,col */
+          {  3,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x00\x00\x80\x2e" }  },
+      /* --- pixel bitmap for cmr210 char#59 ; --- */
+      {  59,99444,                      /* character number, location */
+         13, 3,   -6, 3,      /* topleft row,col, and botleft row,col */
+          {  3,   19, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x00\x00\x80\x6e\x92\x52\x00" }  },
+      /* --- pixel bitmap for cmr210 char#60 (noname) --- */
+      {  60,91238,                      /* character number, location */
+         15, 3,   -7, 3,      /* topleft row,col, and botleft row,col */
+          {  3,   22, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xba\x00\x40\x92\x24\xfd\xff\x7f\x01" }  },
+      /* --- pixel bitmap for cmr210 char#61 = --- */
+      {  61,100128,                     /* character number, location */
+         11, 2,    3, 2,      /* topleft row,col, and botleft row,col */
+          { 19,    8, 3,16, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x0e\x05\xf3\xe0\x5f\x1e\x05" }  },
+      /* --- pixel bitmap for cmr210 char#62 (noname) --- */
+      {  62,79646,                      /* character number, location */
+         15, 2,   -6, 2,      /* topleft row,col, and botleft row,col */
+          { 10,   21, 3,45, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x41\x83\x81\x50\xf3\xa0\xf3\x41\x50\x32\x81\x82\x72"
+            "\x72\x8f\x12\x53\x02\x62\x12\x42\x35\x33" }  },
+      /* --- pixel bitmap for cmr210 char#63 ? --- */
+      {  63,78724,                      /* character number, location */
+         20, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 10,   20, 3,43, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x26\x31\x52\x12\x62\x0f\x13\x52\x72\x72\x72\x81\x40"
+            "\xf3\x41\x50\xf3\xa0\x41\x83\x81\x53" }  },
+      /* --- pixel bitmap for cmr210 char#64 @ --- */
+      {  64,101302,                     /* character number, location */
+         20, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 19,   20, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x80\x0f\x00\x83\x01\x06\x30\x08\x00\x42\x78\x10\x61"
+            "\x0c\x89\xc1\x29\x04\x8c\x31\x60\x8c\x01\x63\x0c\x18"
+            "\x63\xc0\x18\x02\x46\x31\x38\x0a\xe3\x89\xf0\x38\x04"
+            "\x00\xc0\x00\x00\x18\xe0\x01\xff\x01" }  },
+      /* --- pixel bitmap for cmr210 char#65 A --- */
+      {  65, 1026,                      /* character number, location */
+         21, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 20,   21, 3,60, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf2\x92\x90\xf2\x84\x80\xf2\x71\x23\x70\xf2\x61\x43"
+            "\x60\xf1\x51\x63\x50\x5a\x50\xf2\x41\x83\x40\x31\xa3"
+            "\x53\x93\x37\x49" }  },
+      /* --- pixel bitmap for cmr210 char#66 B --- */
+      {  66, 2344,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 18,   20, 3,57, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x73\x72\x63\x73\x20\xf3\x33\x83\x10\x33\x73\x53"
+            "\x63\x6b\x73\x73\x53\x83\x10\xf4\x33\x93\x33\x83\x43"
+            "\x73\x2e\x47" }  },
+      /* --- pixel bitmap for cmr210 char#67 C --- */
+      {  67, 3289,                      /* character number, location */
+         21, 2,   -1, 2,      /* topleft row,col, and botleft row,col */
+          { 17,   22, 3,67, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x75\x41\x52\x52\x12\x42\x83\x32\xa2\x22\xb2\xf1\x13"
+            "\xc1\x12\xd1\x0f\x53\xe0\x12\xd1\xf1\x13\xc1\x22\xb1"
+            "\x42\xa1\x52\x81\x72\x52\xa5\x50" }  },
+      /* --- pixel bitmap for cmr210 char#68 D --- */
+      {  68, 4395,                      /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 20,   20, 3,57, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x93\x73\x73\x92\x63\xa2\x53\xa3\x10\xf1\x33\xb2"
+            "\x10\xf6\x33\xb3\x33\xb2\x43\xa3\x43\xa2\x53\x92\x63"
+            "\x73\x4e\x62" }  },
+      /* --- pixel bitmap for cmr210 char#69 E --- */
+      {  69, 5808,                      /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 19,   20, 3,83, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x03\x53\x83\x20\xf1\x33\xa1\x20\xf1\x33\xb1\x10"
+            "\x33\x61\x41\x43\x61\x93\x52\x9a\x93\x52\x93\x61\x93"
+            "\x61\x51\xf1\x33\xc1\x33\xb2\x33\xb1\x43\xa2\x43\x93"
+            "\x1e\x04\x10" }  },
+      /* --- pixel bitmap for cmr210 char#70 F --- */
+      {  70, 7055,                      /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 18,   20, 3,61, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x03\x43\x83\x10\xf1\x33\xa1\x10\xf1\x33\xb1\x33"
+            "\x61\x41\x33\x61\x83\x52\x8a\x83\x52\x50\xf1\x33\x61"
+            "\x50\xf5\x33\xca\x81" }  },
+      /* --- pixel bitmap for cmr210 char#71 G --- */
+      {  71, 8236,                      /* character number, location */
+         21, 2,   -1, 2,      /* topleft row,col, and botleft row,col */
+          { 20,   22, 3,85, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x76\x41\x73\x52\x12\x62\x93\x52\xa3\x42\xc2\x20\xf1"
+            "\x13\xd1\x20\x12\xe1\x2f\x33\xe0\x33\x8c\xc3\x32\xc3"
+            "\x20\xf1\x13\xb3\x20\x22\xb3\x52\xa3\x62\x81\x12\x73"
+            "\x51\x31\x96\x70" }  },
+      /* --- pixel bitmap for cmr210 char#72 H --- */
+      {  72, 9431,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 20,   20, 3,26, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09\x29\xf7\x33\x83\x30\x3e\x30\xf8\x33\x83\x39\x29" }  },
+      /* --- pixel bitmap for cmr210 char#73 I --- */
+      {  73,10122,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   20, 3,14, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09\xfe\x33\x30\xf2\x33\x39" }  },
+      /* --- pixel bitmap for cmr210 char#74 J --- */
+      {  74,10930,                      /* character number, location */
+         20, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   21, 3,31, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x49\xfd\x83\x20\x12\x53\x2f\x14\x43\x20\x12\x43\x42"
+            "\x42\x74\x60" }  },
+      /* --- pixel bitmap for cmr210 char#75 K --- */
+      {  75,12093,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 21,   20, 3,82, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09\x47\x43\x93\x63\x91\x83\x81\x93\x71\xa3\x61\xb3"
+            "\x51\xc3\x41\xd3\x33\xc3\x24\xc3\x11\x23\xb4\x34\xa3"
+            "\x53\xa3\x63\x93\x64\x83\x73\x83\x83\x73\x84\x63\x94"
+            "\x29\x48" }  },
+      /* --- pixel bitmap for cmr210 char#76 L --- */
+      {  76,13060,                      /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 17,   20, 3,37, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0a\x70\xfa\x33\xb0\xf2\x33\xa1\x33\x92\x33\x91\x43"
+            "\x82\x43\x73\x1e\x02\x13" }  },
+      /* --- pixel bitmap for cmr210 char#77 M --- */
+      {  77,14348,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 25,   20, 3,94, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x07\xb7\xf1\x34\xb4\x30\xf1\x31\x13\x91\x13\x30\xf2"
+            "\x31\x23\x71\x23\x30\xf2\x31\x33\x51\x33\x30\xf1\x31"
+            "\x43\x31\x43\x30\xf2\x31\x53\x11\x53\x30\xf1\x31\x63"
+            "\x63\x30\x23\x53\x63\x37\x41\x49" }  },
+      /* --- pixel bitmap for cmr210 char#78 N --- */
+      {  78,15518,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 20,   20, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x3f\xe0\x8f\x07\x38\x78\x00\x81\x0e\x10\xc8\x01\x81"
+            "\x3c\x10\x88\x03\x81\x70\x10\x08\x0f\x81\xe0\x10\x08"
+            "\x1c\x81\x80\x13\x08\x38\x81\x00\x17\x08\xe0\x81\x00"
+            "\x1e\x08\xc0\x81\x00\x18\x1c\x80\xf1\x07\x10" }  },
+      /* --- pixel bitmap for cmr210 char#79 O --- */
+      {  79,16407,                      /* character number, location */
+         21, 2,   -1, 2,      /* topleft row,col, and botleft row,col */
+          { 19,   22, 3,63, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x75\xc2\x52\x83\x73\x62\x92\x52\xb2\x33\xb3\x10\xf1"
+            "\x12\xd2\x1f\x63\xd3\xf1\x13\xb3\x10\x22\xb2\x52\x92"
+            "\x63\x73\x82\x52\xc5\x71" }  },
+      /* --- pixel bitmap for cmr210 char#80 P --- */
+      {  80,17542,                      /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 18,   20, 3,37, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x73\x73\x53\x83\x10\xf4\x33\x93\x33\x83\x43\x73"
+            "\x5b\x40\xf7\x33\xc9\x91" }  },
+      /* --- pixel bitmap for cmr210 char#81 Q --- */
+      {  81,18575,                      /* character number, location */
+         21, 2,   -6, 2,      /* topleft row,col, and botleft row,col */
+          { 19,   27, 3,93, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x75\xc2\x52\x83\x73\x62\x92\x52\xb2\x20\xf1\x13\xb3"
+            "\x10\x12\xd2\x1f\x63\xd3\xf1\x13\xb3\x10\x22\x43\x42"
+            "\x52\x21\x31\x22\x63\x11\x35\x83\x42\x41\x76\x51\xc2"
+            "\x41\xc2\x32\xf1\xd5\x10\xe3\x21" }  },
+      /* --- pixel bitmap for cmr210 char#82 R --- */
+      {  82,19906,                      /* character number, location */
+         20, 0,   -1, 0,      /* topleft row,col, and botleft row,col */
+          { 21,   21, 3,71, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0d\xb3\x63\x93\x73\x50\xf3\x33\x83\x40\x33\x73\x83"
+            "\x63\x9a\xb3\x62\xa3\x63\x60\xf3\x33\x73\x50\xf1\x33"
+            "\x73\x41\x33\x82\x4a\x53\x21\xe0\x33\x21" }  },
+      /* --- pixel bitmap for cmr210 char#83 S --- */
+      {  83,20979,                      /* character number, location */
+         21, 2,   -1, 2,      /* topleft row,col, and botleft row,col */
+          { 12,   22, 3,63, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x35\x31\x21\x51\x12\x12\x63\x11\x82\x0f\x22\x91\x03"
+            "\xa3\x97\x68\x58\x84\xa3\xa2\x0f\x21\x92\x02\x81\x12"
+            "\x72\x14\x42\x21\x35\x33" }  },
+      /* --- pixel bitmap for cmr210 char#84 T --- */
+      {  84,22085,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 19,   20, 3,37, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1e\x03\x22\x53\x52\x10\xf1\x11\x63\x61\x1f\x21\x73"
+            "\x71\xfb\x83\x80\x4b\x43" }  },
+      /* --- pixel bitmap for cmr210 char#85 U --- */
+      {  85,23085,                      /* character number, location */
+         20, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 20,   21, 3,37, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09\x47\x33\x93\x20\xfd\x33\xa1\x30\x42\x91\x83\x81"
+            "\x92\x71\xb3\x41\xe5\x73" }  },
+      /* --- pixel bitmap for cmr210 char#86 V --- */
+      {  86,24097,                      /* character number, location */
+         20, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 20,   21, 3,71, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x66\x24\xa2\x20\xf1\x33\xa1\x30\x34\x91\x30\xf1"
+            "\x43\x81\x40\xf2\x53\x61\x50\xf2\x63\x41\x60\xf1\x73"
+            "\x21\x70\x76\x70\xf1\x84\x80\xf2\x92\x91" }  },
+      /* --- pixel bitmap for cmr210 char#87 W --- */
+      {  87,25529,                      /* character number, location */
+         20, 1,   -1, 1,      /* topleft row,col, and botleft row,col */
+          { 28,   21, 3,119, (pixbyte *)/* width,ht, fmt,pixsz,map... */
+            "\x08\x29\x36\x23\x83\x82\x43\x83\x91\x20\xf2\x33\x74"
+            "\x71\x30\x43\x64\x61\x40\xf1\x43\x51\x23\x51\x40\x53"
+            "\x41\x23\x41\x50\xf1\x53\x31\x43\x31\x50\x54\x21\x43"
+            "\x31\x50\xf2\x63\x11\x63\x11\x60\x74\x64\x70\xf1\x73"
+            "\x83\x70\x82\x82\xe0\x21\xa1\x80" }  },
+      /* --- pixel bitmap for cmr210 char#88 X --- */
+      {  88,26680,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 20,   20, 3,78, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09\x28\x44\x63\x83\x71\x94\x51\xb3\x42\xc3\x31\xd4"
+            "\x11\xe0\x15\xe0\x23\x90\xf1\x84\x80\x85\xe1\x23\xd2"
+            "\x33\xc1\x44\xa1\x63\xa1\x73\x81\x84\x63\x74\x37\x58" }  },
+      /* --- pixel bitmap for cmr210 char#89 Y --- */
+      {  89,27838,                      /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 22,   20, 3,59, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x09\x67\x34\xa2\x73\xa1\x93\x82\x94\x71\xb3\x62\xc3"
+            "\x51\xd4\x31\xe0\x13\x31\xe0\x14\x11\xe0\x35\x80\xf7"
+            "\xa3\x90\x79\x61" }  },
+      /* --- pixel bitmap for cmr210 char#90 Z --- */
+      {  90,28891,                      /* character number, location */
+         20, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 15,   20, 3,68, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x14\x64\x12\x83\x22\x73\x31\x83\x3f\x11\x73\x40"
+            "\x73\x50\xf1\x63\x60\xf1\x53\x70\x43\x71\xf1\x33\x81"
+            "\x23\x91\x23\x82\x13\x96\x7e\x05" }  },
+      /* --- pixel bitmap for cmr210 char#91 [ --- */
+      {  91,102065,                     /* character number, location */
+         22, 2,   -7, 2,      /* topleft row,col, and botleft row,col */
+          {  6,   29, 3,16, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x06\x0f\xe2\x4f\x92\x4f\x16" }  },
+      /* --- pixel bitmap for cmr210 char#92 (noname) --- */
+      {  92,120796,                     /* character number, location */
+         20, 5,   11, 5,      /* topleft row,col, and botleft row,col */
+          {  9,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x05\x09\x0a\x12\x24\xc8\xb0\xe3\x82\x00" }  },
+      /* --- pixel bitmap for cmr210 char#93 ] --- */
+      {  93,102771,                     /* character number, location */
+         22, 0,   -7, 0,      /* topleft row,col, and botleft row,col */
+          {  6,   29, 3,16, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x06\xfe\x42\xf9\x42\x0f\x16" }  },
+      /* --- pixel bitmap for cmr210 char#94 \^ --- */
+      {  94,108984,                     /* character number, location */
+         20, 4,   16, 4,      /* topleft row,col, and botleft row,col */
+          {  7,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x08\x8a\x28\x08" }  },
+      /* --- pixel bitmap for cmr210 char#95 (noname) --- */
+      {  95,109455,                     /* character number, location */
+         20, 2,   17, 2,      /* topleft row,col, and botleft row,col */
+          {  4,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf6\x06" }  },
+      /* --- pixel bitmap for cmr210 char#96 (noname) --- */
+      {  96,103397,                     /* character number, location */
+         20, 3,   11, 3,      /* topleft row,col, and botleft row,col */
+          {  3,    9, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x94\x92\xec\x02" }  },
+      /* --- pixel bitmap for cmr210 char#97 a --- */
+      {  97,30049,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xfc\x80\xc3\xe0\x60\x10\x18\x00\x06\xf8\xc1\x61\x18"
+            "\x18\x03\xc6\x80\x39\x60\x1a\x9c\xfc\x1c" }  },
+      /* --- pixel bitmap for cmr210 char#98 b --- */
+      {  98,31067,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   20, 3,51, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\xa0\xf5\x22\xa0\x22\x24\x64\x42\x43\x62\x32\x72"
+            "\x10\xf4\x22\x82\x22\x72\x33\x61\x44\x41\x51\x34\x41" }  },
+      /* --- pixel bitmap for cmr210 char#99 c --- */
+      {  99,31858,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   13, 3,33, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x46\x32\x43\x12\x53\x12\x61\x1f\x42\x90\x12\x92\x71"
+            "\x22\x51\x55\x22" }  },
+      /* --- pixel bitmap for cmr210 char#100 d --- */
+      { 100,32861,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   20, 3,52, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x84\x20\xf5\xa2\x20\x44\x22\x51\x44\x41\x72\x32\x72"
+            "\x2f\x42\x82\x20\x12\x72\x32\x63\x42\x41\x12\x64\x24" }  },
+      /* --- pixel bitmap for cmr210 char#101 e --- */
+      { 101,33639,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf0\x60\x88\x81\x04\x3c\xe0\xff\x0f\x60\x00\x03\x30"
+            "\x80\x01\x19\x04\x1f" }  },
+      /* --- pixel bitmap for cmr210 char#102 f --- */
+      { 102,34470,                      /* character number, location */
+         20, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 11,   20, 3,33, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x64\x52\x23\x32\x33\x32\x41\x10\xf2\x32\x68\x30\xfa"
+            "\x32\x60\x17\x35" }  },
+      /* --- pixel bitmap for cmr210 char#103 g --- */
+      { 103,35717,                      /* character number, location */
+         14, 1,   -7, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   21, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x00\x1c\x9c\xc8\x18\x13\x04\x06\x83\xc1\x60\x30\x10"
+            "\x04\x8c\x01\x1d\x60\x00\x18\x00\xfc\x03\xff\x63\xc0"
+            "\x0c\x60\x03\xd8\x00\x66\xc0\x30\x18\xf8\x03" }  },
+      /* --- pixel bitmap for cmr210 char#104 h --- */
+      { 104,36718,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   20, 3,36, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\xa0\xf5\x22\xa0\x22\x24\x62\x11\x32\x53\x52\x20"
+            "\xf8\x22\x62\x26\x26" }  },
+      /* --- pixel bitmap for cmr210 char#105 i --- */
+      { 105,37451,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   20, 3,20, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x21\x43\x41\x30\xf3\x64\x20\xfa\x22\x26" }  },
+      /* --- pixel bitmap for cmr210 char#106 j --- */
+      { 106,38227,                      /* character number, location */
+         20,-2,   -6,-2,      /* topleft row,col, and botleft row,col */
+          {  8,   26, 3,31, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x61\x63\x61\x10\xf3\x80\x35\xfd\x62\x11\x45\x31\x13"
+            "\x22\x25\x22" }  },
+      /* --- pixel bitmap for cmr210 char#107 k --- */
+      { 107,39333,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   20, 3,64, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x90\xf5\x22\x90\x22\x45\x22\x52\x42\x51\x52\x41"
+            "\x62\x22\x72\x12\x83\x12\x50\xf1\x22\x32\x40\x22\x42"
+            "\x52\x43\x42\x53\x16\x25" }  },
+      /* --- pixel bitmap for cmr210 char#108 l --- */
+      { 108,39970,                      /* character number, location */
+         20, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  6,   20, 3,16, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x20\xfe\x22\x20\xf2\x22\x26" }  },
+      /* --- pixel bitmap for cmr210 char#109 m --- */
+      { 109,41289,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 22,   13, 3,38, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x24\x44\x62\x11\x32\x21\x32\x53\x53\x52\x20\xf8"
+            "\x22\x62\x62\x26\x26\x26" }  },
+      /* --- pixel bitmap for cmr210 char#110 n --- */
+      { 110,42296,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   13, 3,26, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x24\x62\x11\x32\x53\x52\x20\xf8\x22\x62\x26\x26" }  },
+      /* --- pixel bitmap for cmr210 char#111 o --- */
+      { 111,43007,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   13, 3,35, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x45\x62\x52\x32\x72\x21\x91\x1f\x42\x92\xf1\x12\x72"
+            "\x10\x22\x52\x65\x46" }  },
+      /* --- pixel bitmap for cmr210 char#112 p --- */
+      { 112,44085,                      /* character number, location */
+         13, 1,   -6, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   19, 3,49, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x24\x64\x42\x43\x62\x32\x72\x10\xf4\x22\x82\x22"
+            "\x72\x33\x61\x44\x32\x52\x24\x40\xf4\x22\xa6\x82" }  },
+      /* --- pixel bitmap for cmr210 char#113 q --- */
+      { 113,45105,                      /* character number, location */
+         13, 1,   -6, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   19, 3,54, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x44\x31\x52\x31\x12\x41\x63\x32\x72\x2f\x42\x82\x20"
+            "\x12\x72\x32\x63\x42\x41\x12\x64\x22\x20\xf4\xa2\x20"
+            "\x86" }  },
+      /* --- pixel bitmap for cmr210 char#114 r --- */
+      { 114,45984,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 10,   13, 3,25, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x14\x10\xf1\x23\x23\x22\x41\x10\xf7\x22\x67\x30" }  },
+      /* --- pixel bitmap for cmr210 char#115 s --- */
+      { 115,46927,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  9,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xbc\x84\x0d\x1a\x74\xc0\x07\x3f\xe0\x81\x03\x0f\x3e"
+            "\x96\x07" }  },
+      /* --- pixel bitmap for cmr210 char#116 t --- */
+      { 116,47764,                      /* character number, location */
+         18, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   18, 3,31, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf2\x31\x40\x22\x53\x48\xf6\x22\x40\xf2\x22\x31\x31"
+            "\x31\x43\x15" }  },
+      /* --- pixel bitmap for cmr210 char#117 u --- */
+      { 117,48697,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 14,   13, 3,26, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x04\x44\x20\xf8\x22\x62\x20\x22\x53\x51\x44\x64\x24" }  },
+      /* --- pixel bitmap for cmr210 char#118 v --- */
+      { 118,49575,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\x9e\x81\x31\x10\x06\x82\x21\x30\x04\x4c\x80\x09"
+            "\x30\x01\x1c\x80\x03\x70\x00\x04\x00" }  },
+      /* --- pixel bitmap for cmr210 char#119 w --- */
+      { 119,50834,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 19,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\x9f\x77\x30\x18\x43\x41\x18\x1a\xc2\xd0\x10\x4c"
+            "\x44\x60\x62\x02\x13\x13\x70\x50\x80\x83\x03\x1c\x1c"
+            "\xc0\x60\x00\x02\x02" }  },
+      /* --- pixel bitmap for cmr210 char#120 x --- */
+      { 120,51829,                      /* character number, location */
+         13, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 15,   13, 3,46, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x15\x35\x42\x52\x72\x41\x82\x31\xa2\x11\xc3\xd2\xc3"
+            "\xb1\x22\x92\x32\x81\x43\x62\x52\x36\x36" }  },
+      /* --- pixel bitmap for cmr210 char#121 y --- */
+      { 121,52904,                      /* character number, location */
+         13, 1,   -6, 1,      /* topleft row,col, and botleft row,col */
+          { 13,   19, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1f\x9e\x81\x31\x10\x06\x82\x21\x30\x04\x4c\x80\x09"
+            "\x30\x01\x1c\x80\x03\x70\x00\x04\x80\x00\x08\x38\x01"
+            "\x27\xe0\x02\x38\x00" }  },
+      /* --- pixel bitmap for cmr210 char#122 z --- */
+      { 122,53881,                      /* character number, location */
+         13, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 11,   13, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x1f\x58\xe0\x02\x13\x0c\x30\xc0\x01\x86\x18\x64"
+            "\xa0\x03\x0d\xfc\x7f" }  },
+      /* --- pixel bitmap for cmr210 char#123 (noname) --- */
+      { 123,121416,                     /* character number, location */
+          9, 0,    8, 0,      /* topleft row,col, and botleft row,col */
+          { 15,    1, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xff\x7f" }  },
+      /* --- pixel bitmap for cmr210 char#124 (noname) --- */
+      { 124,122236,                     /* character number, location */
+          9, 0,    8, 0,      /* topleft row,col, and botleft row,col */
+          { 29,    1, 2, 2, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x00\x1d" }  },
+      /* --- pixel bitmap for cmr210 char#125 (noname) --- */
+      { 125,110134,                     /* character number, location */
+         20, 4,   15, 4,      /* topleft row,col, and botleft row,col */
+          {  9,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x8c\x19\x1b\x1b\x13\x02" }  },
+      /* --- pixel bitmap for cmr210 char#126 \~ --- */
+      { 126,110822,                     /* character number, location */
+         19, 2,   16, 2,      /* topleft row,col, and botleft row,col */
+          { 11,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x1c\xf4\x5f\x70\x00" }  },
+      /* --- pixel bitmap for cmr210 char#127 (noname) --- */
+      { 127,111503,                     /* character number, location */
+         20, 3,   17, 3,      /* topleft row,col, and botleft row,col */
+          {  9,    3, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x82\x8e\x0b\x02" }  },
       /* --- trailer  --- */
-      { -99, -999,  0,0,0,0, { 0,0,0, (pixbyte *)"\0" }  }
+      { -99, -999,  0,0,0,0, { 0,0,0,0, (pixbyte *)"\0" }  }
    } ;
 
 
+/* --- size=7 for .250gf ---
+ * mf '\mode=preview; mag=magstep(-12.84858895680446863032); input cmr10'
+ * --------------------------------------------------------------------- */
+/* --- fontdef for cmr250 --- */
+static	chardef  cmr250[] =
+   {
+      /* --- pixel bitmap for cmr250 char#0 \Gamma --- */
+      {   0,55643,                      /* character number, location */
+         24, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 21,   24, 3,33, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x06\x53\xa3\x53\xb2\x53\xc1\x53\xc2\xf2\x43\xd1"
+            "\xfe\x43\xec\x91" }  },
+      /* --- pixel bitmap for cmr250 char#1 \Delta --- */
+      {   1,56572,                      /* character number, location */
+         25, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 25,   25, 3,114, (pixbyte *)/* width,ht, fmt,pixsz,map... */
+            "\xc1\xc0\xf1\xb3\xb0\xa5\xe0\x61\x13\xe0\x51\x24\xe0"
+            "\x41\x33\xe0\x31\x44\xe0\x21\x53\xe0\x11\x64\xe1\x73"
+            "\xd1\x84\xc1\x93\xb1\xa4\xa1\xb3\x91\xc4\x81\xd3\x71"
+            "\xe4\x61\xe0\x13\x51\xe0\x24\x41\xe0\x33\x31\xe0\x44"
+            "\x2e\x09\x1f\x1e\x0b" }  },
+      /* --- pixel bitmap for cmr250 char#2 \Theta --- */
+      {   2,57739,                      /* character number, location */
+         25, 2,   -1, 2,      /* topleft row,col, and botleft row,col */
+          { 23,   26, 3,113, (pixbyte *)/* width,ht, fmt,pixsz,map... */
+            "\x87\xe3\x53\xb3\x73\x93\x93\x73\xb3\x30\xf1\x23\xd3"
+            "\x20\x14\xd4\x23\xe0\x13\x14\xe0\x18\x31\x71\x34\x0f"
+            "\x24\x39\x34\x04\x31\x71\x34\x0f\x14\xe0\x14\x13\xe0"
+            "\x13\x24\xd4\x10\xf1\x23\xd3\x20\x33\xb3\x73\x93\x93"
+            "\x73\xb3\x53\xe7\x8b" }  },
+      /* --- pixel bitmap for cmr250 char#3 \Lambda --- */
+      {   3,58741,                      /* character number, location */
+         25, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 22,   25, 3,76, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf2\xa2\xa0\xf2\x94\x90\x81\x14\x80\xf1\x81\x23\x80"
+            "\x72\x24\x70\xf2\x71\x43\x70\xf2\x61\x63\x60\xf2\x51"
+            "\x83\x50\xf2\x41\xa3\x40\x32\xa4\x54\x94\x37\x5a" }  },
+      /* --- pixel bitmap for cmr250 char#4 \Xi --- */
+      {   4,60150,                      /* character number, location */
+         24, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 21,   24, 3,64, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xf1\x1e\x05\x10\xf2\x11\xe0\x31\x10\xf3\xe0\x70\xf1"
+            "\x41\xb1\x40\xf1\x4d\x40\xf1\x41\xb1\x40\xf3\xe0\x7f"
+            "\x21\xe0\x51\x0f\x1e\x07" }  },
+      /* --- pixel bitmap for cmr250 char#5 \Pi --- */
+      {   5,61323,                      /* character number, location */
+         24, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 26,   24, 3,22, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x0c\xfe\x43\xc3\x40\xf6\x43\xc3\x4b\x4b" }  },
+      /* --- pixel bitmap for cmr250 char#6 \Sigma --- */
+      {   6,62486,                      /* character number, location */
+         24, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 21,   24, 3,97, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0e\x06\x23\xc4\x24\xd2\x33\xe1\x43\xd2\x34\xd1\x43"
+            "\xd1\x53\xc1\x54\xe0\x43\xe0\x53\xe0\x44\xe0\x43\xe0"
+            "\x51\xe0\x51\xe0\x51\xc1\x61\xd1\x51\xe1\x41\xe2\x41"
+            "\xe1\x41\xe2\x31\xd4\x2e\x05\x1e\x06\x13" }  },
+      /* --- pixel bitmap for cmr250 char#7 \Upsilon --- */
+      {   7,63612,                      /* character number, location */
+         25, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 23,   25, 3,55, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x34\x94\x47\x77\x28\x58\x12\x53\x33\x53\x72\x32\x72"
+            "\x73\x13\x71\xf1\x92\x12\x90\xa1\x11\xa0\xfe\xa3\xa0"
+            "\x6b\x60" }  },
+      /* --- pixel bitmap for cmr250 char#8 \Phi --- */
+      {   8,64682,                      /* character number, location */
+         24, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 21,   24, 3,81, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5b\x50\xf3\x93\x90\x77\xb3\x23\x23\x64\x33\x34\x34"
+            "\x43\x44\x23\x53\x53\x1f\x34\x53\x54\x13\x53\x53\x24"
+            "\x43\x44\x34\x33\x34\x63\x23\x23\xb7\x70\xf3\x93\x90"
+            "\x5b\x51" }  },
+      /* --- pixel bitmap for cmr250 char#9 \Psi --- */
+      {   9,65841,                      /* character number, location */
+         24, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 23,   24, 3,67, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x6b\x60\xf2\xa3\xa4\x63\x64\xf7\x23\x53\x53\x20\x32"
+            "\x53\x52\x63\x43\x43\x72\x43\x42\x92\x33\x32\xb3\x13"
+            "\x13\xe7\x80\xf3\xa3\xa0\x6b\x63" }  },
+      /* --- pixel bitmap for cmr250 char#10 \Omega --- */
+      {  10,67046,                      /* character number, location */
+         25, 2,    0, 2,      /* topleft row,col, and botleft row,col */
+          { 21,   25, 3,87, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x77\xc3\x53\x83\x93\x30\xf1\x23\xb3\x20\x14\xb4\x1f"
+            "\x54\xd4\x13\xd3\x24\xb4\x10\xf1\x23\xb3\x20\x32\xb2"
+            "\x63\x93\x72\x92\x41\x41\x91\x42\x42\x72\x43\x32\x72"
+            "\x32\xf2\x16\x76\x14" }  },
+      /* --- pixel bitmap for cmr250 char#11 \ff --- */
+      {  11,114273,                     /* character number, location */
+         24, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 22,   24, 3,51, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x85\x35\x72\x51\x12\x23\x52\x54\x33\x42\x63\x51\x10"
+            "\xf4\x42\x72\x7e\x05\x30\xfc\x42\x72\x70\x17\x37\x4f" }  },
+      /* --- pixel bitmap for cmr250 char#12 \fi --- */
+      {  12,115487,                     /* character number, location */
+         24, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 18,   24, 3,42, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x85\xb2\x51\x92\x53\x72\x63\x72\x71\x40\xf3\x42\xce"
+            "\x01\x30\xfc\x42\x72\x30\x17\x37" }  },
+      /* --- pixel bitmap for cmr250 char#13 \fl --- */
+      {  13,116683,                     /* character number, location */
+         24, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 18,   24, 3,36, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x87\x92\x43\x82\x53\x30\xf5\x42\x72\x3e\x01\x30\xfc"
+            "\x42\x72\x30\x18\x18" }  },
+      /* --- pixel bitmap for cmr250 char#14 \ffi --- */
+      {  14,118332,                     /* character number, location */
+         24, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 28,   24, 3,60, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x86\x45\xb3\x51\x12\x51\x92\x64\x53\x72\x73\x63\x72"
+            "\x82\x71\x40\xf3\x42\x82\xce\x0b\x30\xfc\x42\x82\x72"
+            "\x30\x18\x28\x18" }  },
+      /* --- pixel bitmap for cmr250 char#15 \ffl --- */
+      {  15,120021,                     /* character number, location */
+         24, 0,    0, 0,      /* topleft row,col, and botleft row,col */
+          { 28,   24, 3,56, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x86\x47\x93\x51\x12\x43\x82\x64\x53\x72\x73\x72\x30"
+            "\xf4\x42\x82\x72\x3e\x0b\x30\xfc\x42\x82\x72\x30\x18"
+            "\x28\x18" }  },
+      /* --- pixel bitmap for cmr250 char#16 \imath --- */
+      {  16,81399,                      /* character number, location */
+         15, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          {  8,   15, 3,10, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x05\x30\xfc\x32\x38" }  },
+      /* --- pixel bitmap for cmr250 char#17 \jmath --- */
+      {  17,82107,                      /* character number, location */
+         15,-2,   -7,-2,      /* topleft row,col, and botleft row,col */
+          {  9,   22, 3,23, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x45\xfe\x72\xf1\x72\x11\x55\x32\x13\x31\x35\x30" }  },
+      /* --- pixel bitmap for cmr250 char#18 \gravesym --- */
+      {  18,105464,                     /* character number, location */
+         24, 4,   18, 4,      /* topleft row,col, and botleft row,col */
+          {  6,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\xc3\x61\x30\x18\x0c" }  },
+      /* --- pixel bitmap for cmr250 char#19 \acutesym --- */
+      {  19,106039,                     /* character number, location */
+         24, 7,   18, 7,      /* topleft row,col, and botleft row,col */
+          {  6,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x30\x8e\x31\xc6\x00" }  },
+      /* --- pixel bitmap for cmr250 char#20 \checksym --- */
+      {  20,106670,                     /* character number, location */
+         22, 4,   18, 4,      /* topleft row,col, and botleft row,col */
+          {  9,    4, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x83\x8d\xe1\x80\x00" }  },
+      /* --- pixel bitmap for cmr250 char#21 \brevesym --- */
+      {  21,107292,                     /* character number, location */
+         24, 3,   19, 3,      /* topleft row,col, and botleft row,col */
+          { 11,    5, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x01\x0c\xa0\x80\x08\x82\x0f" }  },
+      /* --- pixel bitmap for cmr250 char#22 (noname) --- */
+      {  22,107880,                     /* character number, location */
+         21, 2,   20, 2,      /* topleft row,col, and botleft row,col */
+          { 13,    1, 3, 2, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0d" }  },
+      /* --- pixel bitmap for cmr250 char#23 (noname) --- */
+      {  23,108657,                     /* character number, location */
+         25,10,   19,10,      /* topleft row,col, and botleft row,col */
+          {  6,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x5e\x18\x86\xa1\x07" }  },
+      /* --- pixel bitmap for cmr250 char#24 (noname) --- */
+      {  24,109357,                     /* character number, location */
+         -1, 5,   -7, 5,      /* topleft row,col, and botleft row,col */
+          {  7,    6, 1, 1, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x0c\x0e\x18\x0c\xfe\x01" }  },
+      /* --- pixel bitmap for cmr250 char#25 \ss --- */
+      {  25,83210,                      /* character number, location */
+         24, 1,    0, 1,      /* topleft row,col, and botleft row,col */
+          { 15,   24, 3,81, (pixbyte *) /* width,ht, fmt,pixsz,map... */
+            "\x65\x92\x32\x72\x52\x20\xf3\x32\x72\x10\x32\x62\x52"
+            "\x52\x35\x23\x82\x51\x72\x62\x52\x71\x52\x72\x42\x81"
+            "\x10\xf4\x32\x82\x