diff -urN texview/ComScroll.m /tmp/O_htvm-s03/texview/ComScroll.m
--- texview/ComScroll.m	Thu Mar  2 23:06:46 1995
+++ /tmp/O_htvm-s03/texview/ComScroll.m	Sat Mar 18 14:55:44 1995
@@ -78,7 +78,7 @@
    configure() ;
    if (defaultfont[0]) {
       char *p = defaultfont ;
-      char fname[100] ;
+      char fname[2000] ;
       char *q = fname ;
       float size ;
 
@@ -122,7 +122,7 @@
 {
    int bs = 0 ;
    int i, j ;
-   char inbuf[400] ;
+   char inbuf[4000] ;
 
    bs = 200 ;
    i = 200 ;
@@ -150,7 +150,7 @@
 - handler:(int)fd
 {
    int r ;
-   char outbuf[200] ;
+   char outbuf[2000] ;
 
    if (childID == 0)
       return self ;
diff -urN texview/SheetView.m /tmp/O_htvm-s03/texview/SheetView.m
--- texview/SheetView.m	Wed Mar 15 21:19:14 1995
+++ /tmp/O_htvm-s03/texview/SheetView.m	Sat Mar 18 14:55:45 1995
@@ -26,6 +26,7 @@
 extern integer pagenum, seq ;
 extern fontdesctype *curfnt ;
 extern char realname[] ;
+extern int curpsfont ;
 Boolean pagedrawn ;
 
 extern id fpageinit() ;
@@ -180,6 +181,7 @@
    strflush() ;
    rhh = -3200 ;
    rvv = -3200 ;
+   curpsfont = -1 ;
 }
 /* moved to TeXSwitchBoard
 void fdrawrule(xx, yy)
diff -urN texview/TeXviewSwitchBoard.m /tmp/O_htvm-s03/texview/TeXviewSwitchBoard.m
--- texview/TeXviewSwitchBoard.m	Sat Mar 18 13:25:48 1995
+++ /tmp/O_htvm-s03/texview/TeXviewSwitchBoard.m	Sat Mar 18 14:57:24 1995
@@ -12,7 +12,7 @@
 Boolean new_view = 0;
 Boolean cloned = 0 ;
 extern Window      *tvWindow;
-const char         *legit_types[] = {"dvi", "tex", "latex", "ltx", NULL};
+const char         *legit_types[] = {"dvi", "tex", "latex", "ltx", "texinfo", NULL};
 extern NXRect      *initsizewindow();
 extern float screendpi ;
 extern Boolean pagedrawn ;
diff -urN texview/config.m /tmp/O_htvm-s03/texview/config.m
--- texview/config.m	Wed Mar 15 20:51:24 1995
+++ /tmp/O_htvm-s03/texview/config.m	Sat Mar 18 14:55:45 1995
@@ -216,7 +216,7 @@
 void saveconfig() {
    register struct prefs *p ;
    int i ;
-   char val[100] ;
+   char val[1000] ;
    struct windowStatus *w ;
    id tw = [myTeXviewSwitchBoard getTeX] ;
 
diff -urN texview/dopage.c /tmp/O_htvm-s03/texview/dopage.c
--- texview/dopage.c	Wed Mar 15 20:47:54 1995
+++ /tmp/O_htvm-s03/texview/dopage.c	Sat Mar 18 15:11:31 1995
@@ -59,6 +59,7 @@
 #ifdef DEBUG
 extern int debugon ;
 #endif
+int curpsfont = -1 ;
 void
 abortdvi() {
    error("! bad command in dvi file") ;
@@ -82,12 +83,12 @@
    integer *wds = 0 ;
    TeXfontdesctype *tfnt ;
    register fontmaptype *cfnt ;
-   int curpsfont = -1 ;
    int charmove ;
    integer vertsmallspace = (integer)(0.025*100/vconv) ; /* 0.025 inches */
 ht_register_page();
 if(ht_highlight) ht_highlight--;
    qstatus("Drawing") ;
+   curpsfont = -1 ;
 #ifdef DEBUG
         if (debugon > 7) {
            printf("\nAt the top of dopage\n") ;
@@ -172,6 +173,12 @@
            }
            goto beginloop ;
         } else {
+            if (curfnt->virtual == 0 &&
+                curfnt->id != curpsfont) {
+               strflush() ;
+               TPSselfont(curfnt->id) ;
+               curpsfont = curfnt->id ;
+           }
            fdrawchar(cmd, cd->pixelwidth) ;
            if (charmove) {
               h += wds[cmd] ;
diff -urN texview/dospecial.c /tmp/O_htvm-s03/texview/dospecial.c
--- texview/dospecial.c	Fri Jul  1 22:48:53 1994
+++ /tmp/O_htvm-s03/texview/dospecial.c	Sat Mar 18 14:55:45 1995
@@ -116,6 +116,7 @@
    char actualstuff[4] ;
 } *bangspecials = NULL ;
 
+#define spswrite trytobreakout
 static void trytobreakout(p)
 register char *p ;
 {
@@ -169,8 +170,8 @@
    register int i = 0 ;
    int j ;
    Boolean ps = TRUE ;
-   char spbuf[100] ; 
-   char fbuf[100] ; 
+   char spbuf[400] ; 
+   char fbuf[400] ; 
    char *sf = NULL ;
    char *f = NULL ;
    KeyWord k ;
@@ -184,7 +185,7 @@
    p = nextstring ;
 #ifdef DEBUG
    if (debugon > 3) {
-      printf("{%s}", p) ;
+      printf("{%s}[%d]", p, prescan) ;
       fflush(stdout) ;
    }
 #endif
@@ -289,9 +290,9 @@
         hvpos() ;
         texflush() ;
 	if (strncmp(p, "ps::[begin]", 11) == 0)
-	   pswrite(&p[11]);
+	   spswrite(&p[11]);
 	else if (strncmp(p, "ps::[end]", 9) == 0)
-	   pswrite(&p[9]);
+	   spswrite(&p[9]);
 	else if (strncmp(p, "ps: plotfile ", 13) == 0) {
            char *sfp ;
 	   p += 13;
@@ -308,9 +309,9 @@
            else
               figcopyfile (p, 0);
 	} else if (strncmp(p, "ps::", 4) == 0)
-	   pswrite(&p[4]);
+	   spswrite(&p[4]);
 	else
-	   pswrite(&p[3]);
+	   spswrite(&p[3]);
 	return;
       }
    }
@@ -405,8 +406,8 @@
  * return pointer to remainder of string return NULL if none found
  */
  
-char    KeyStr[200];
-char    ValStr[200];
+char    KeyStr[500];
+char    ValStr[500];
 
 char *GetKeyStr( str, kw )
 char    *str;
@@ -572,7 +573,8 @@
       break;
    }
    if (f==NULL) {
-      pswrite(" MockPic ") ;
+      if (infigure == 1 || infigure == 2)
+         pswrite(" MockPic ") ;
 /*    error(temperrorbuf) ; can't do this; will crash window server to run
                             an alert here; no idea why. */
    } else {
@@ -661,7 +663,7 @@
 msdosdone: ;
       } else {
          ungetc(c, f) ;
-         while (fgets(nextstring, 2000, f))
+         while (fgets(nextstring, 1900, f))
             pswrite(nextstring) ;
       }
       if (infigure == 2)
diff -urN texview/dviAccessors.c /tmp/O_htvm-s03/texview/dviAccessors.c
--- texview/dviAccessors.c	Mon Jan 30 06:51:22 1995
+++ /tmp/O_htvm-s03/texview/dviAccessors.c	Sat Mar 18 14:55:46 1995
@@ -37,12 +37,12 @@
    display() ;
    return(1) ;
 }
-char basename[100], oldbasename[100] ;
-char LastFormat[100], CustomFormat[100] ;
+char basename[2000], oldbasename[2000] ;
+char LastFormat[2000], CustomFormat[2000] ;
 char *gotocdof(s)
 char *s ;
 {
-   char tempname[100] ;
+   char tempname[2000] ;
    register char *last, *p ;
 
    strcpy(tempname, s) ;
@@ -91,7 +91,7 @@
 void reTeXit(s)
 char *s ;
 {
-   char comline[200] ;
+   char comline[2000] ;
    char *p = comline ;
    char *q ;
 
@@ -206,7 +206,7 @@
    return(0) ;
 }
 int dviReOpenFile(void) {
-   char tempname[100] ;
+   char tempname[2000] ;
 
    if (basename[0]) {
       strcpy(tempname, basename) ;
diff -urN texview/loadfont.c /tmp/O_htvm-s03/texview/loadfont.c
--- texview/loadfont.c	Tue May 26 21:52:37 1992
+++ /tmp/O_htvm-s03/texview/loadfont.c	Sat Mar 18 14:55:46 1995
@@ -56,7 +56,7 @@
  */
 void *mymalloc() ;
 void *tempbuf() ;
-char lastfile[200] ;
+char lastfile[400] ;
 extern TeXfontdesctype *TeXfontlist ;
 Boolean pkopen(tft, dpi)
 register TeXfontdesctype *tft ;
diff -urN texview/preview.c /tmp/O_htvm-s03/texview/preview.c
--- texview/preview.c	Tue Mar  7 01:14:37 1995
+++ /tmp/O_htvm-s03/texview/preview.c	Sat Mar 18 14:55:46 1995
@@ -92,8 +92,8 @@
 int tracking ;
 Boolean zoomed = 0 ;
 Boolean mocked = 0 ;
-char realname[200] ;
-char safebuf[200], filenamebuf[200] ;
+char realname[400] ;
+char safebuf[400], filenamebuf[400] ;
 int redrawbars = 0 ;
 int turnitoff = 0 ;
 int nloc ;
@@ -137,7 +137,7 @@
  *   error is called on all errors.  It prints the message, and exits
  *   if the error starts with !.
  */
-char temperrorbuf[80] ;
+char temperrorbuf[380] ;
 extern char lastfile[] ;
 Boolean erroronscreen = 0 ;
 void error(s)
diff -urN texview/resident.c /tmp/O_htvm-s03/texview/resident.c
--- texview/resident.c	Wed Jan 27 18:54:47 1993
+++ /tmp/O_htvm-s03/texview/resident.c	Sat Mar 18 14:55:46 1995
@@ -139,7 +139,7 @@
    tfmload(curfnt, 0) ;
    return(1) ;
 }
-static char was_inline[2000] ;
+static char was_inline[1200] ;
 void bad_config() {
    error("Error in config file:") ;
    error(was_inline) ;
@@ -151,12 +151,12 @@
    FILE *deffile ;
    char *p ;
    char *specinfo, *downloadinfo ;
-   char downbuf[200] ;
+   char downbuf[1000] ;
 
    if (name == 0)
       name = psinfoname ;
    if ((deffile=search(configpath,name))!=NULL) {
-      while (fgets(was_inline, 100, deffile)!=NULL) {
+      while (fgets(was_inline, 1000, deffile)!=NULL) {
          p = was_inline ;
          if (*p > ' ' && *p != '*' && *p != '#' && *p != ';') {
             char *TeXname = NULL ;
@@ -215,7 +215,7 @@
 char *s ;
 {
    FILE *deffile ;
-   char PSname[100] ;
+   char PSname[400] ;
    register char *p ;
    int i, j ;
    static int again = 0 ;
@@ -228,7 +228,7 @@
       strcpy(PSname, ".dvipsrc") ;
    }
    if ((deffile=search(d,PSname))!=NULL) {
-      while (fgets(was_inline, 300, deffile)!=NULL) {
+      while (fgets(was_inline, 500, deffile)!=NULL) {
        switch (was_inline[0]) {
 case 'T' : 
          if (sscanf(was_inline+1, "%s", PSname) != 1) bad_config() ;
diff -urN texview/tfmload.c /tmp/O_htvm-s03/texview/tfmload.c
--- texview/tfmload.c	Mon Feb  1 21:00:18 1993
+++ /tmp/O_htvm-s03/texview/tfmload.c	Sat Mar 18 14:55:47 1995
@@ -74,9 +74,9 @@
    integer scaledsize ;
    shalfword nw, nh, nd, hd ;
    shalfword bc, ec ;
-   integer scaled[300] ;
+   integer scaled[400] ;
    halfword chardat[256] ;
-   shalfword pixel[300] ;
+   shalfword pixel[400] ;
    int height, width, yoff ;
    int *black ;
    int bk ;
diff -urN texview/unpack.c /tmp/O_htvm-s03/texview/unpack.c
--- texview/unpack.c	Thu Jan 28 23:18:53 1993
+++ /tmp/O_htvm-s03/texview/unpack.c	Sat Mar 18 14:55:47 1995
@@ -205,7 +205,7 @@
                   wordweight -= count ; 
                   count = 0 ; 
                   } 
-                else if ( ( count >= hbit ) && ( hbit <= (int)wordweight ) ) 
+                else if ( ( count >= hbit ) && ( hbit <= wordweight ) ) 
                 { if ( turnon )
                      word += gpower [ wordweight ] - gpower 
                   [ wordweight - hbit ] ; 
@@ -236,7 +236,7 @@
                 } 
               turnon = ! turnon ; 
             } 
-          if ( ( rowsleft != 0 ) || ( hbit != (int)cwidth ) ) 
+          if ( ( rowsleft != 0 ) || ( hbit != cwidth ) ) 
           error ( "! error while unpacking; more bits than required" ) ; 
         } 
     if (*(char *)&bftest)
diff -urN texview/virtualfont.c /tmp/O_htvm-s03/texview/virtualfont.c
--- texview/virtualfont.c	Thu Aug 20 02:34:41 1992
+++ /tmp/O_htvm-s03/texview/virtualfont.c	Sat Mar 18 14:55:47 1995
@@ -23,7 +23,7 @@
 long bytesleft ;
 quarterword *raster ;
 extern char *vfpath ;
-char errbuf[200] ;
+char errbuf[300] ;
 extern real conv ;
 extern real vconv ;
 extern real alpha ;
@@ -42,7 +42,7 @@
  */
 
 static FILE *vffile ;
-static char name[50] ;
+static char name[300] ;
 void
 badvf(s)
    char *s ;
