date and time created 88/10/21 13:47:49 by bostic
[unix-history] / usr / src / old / roff / nroff / n10.c
index a366a61..917a57f 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
 #ifndef lint
-static char sccsid[] = "@(#)n10.c      4.1 %G%";
+static char sccsid[] = "@(#)n10.c      4.4 %G%";
 #endif lint
 
 #include "tdef.h"
 #endif lint
 
 #include "tdef.h"
@@ -57,7 +57,9 @@ ptinit(){
                exit(-1);
        }
        read(i,(char *)x,8*sizeof(int));
                exit(-1);
        }
        read(i,(char *)x,8*sizeof(int));
-       read(i,(char *)&t.bset,j = sizeof(int)*((int *)&t.zzz - &t.bset));
+       /* Calc size of table, not counting zzz */
+       j = ((int) &t.zzz - (int) &t.bset);
+       read(i, (char *)&t.bset, j);
        x[2] -= j;
        q = setbrk(x[2]);
        lseek(i,(long)t.twinit+8*sizeof(int),0);
        x[2] -= j;
        q = setbrk(x[2]);
        lseek(i,(long)t.twinit+8*sizeof(int),0);
@@ -147,6 +149,7 @@ ptout1()
                        bdmode = 0;
                }
        }
                        bdmode = 0;
                }
        }
+
        if(xfont == ulfont){
                for(k=w/t.Char;k>0;k--)oput('_');
                for(k=w/t.Char;k>0;k--)oput('\b');
        if(xfont == ulfont){
                for(k=w/t.Char;k>0;k--)oput('_');
                for(k=w/t.Char;k>0;k--)oput('\b');
@@ -158,6 +161,13 @@ ptout1()
                        oput(' ');
                }else{
                        if(plotmode)oputs(t.plotoff);
                        oput(' ');
                }else{
                        if(plotmode)oputs(t.plotoff);
+                       /*
+                        * simulate bold font as overstrike if no t.bdon
+                        */
+                       if (xfont == 2 && !(*t.bdon & 0377)) {
+                               oput(*codep);
+                               oput('\b');
+                       }
                        *obufp++ = *codep++;
                        if(obufp == (obuf + OBUFSZ + ascii - 1))flusho();
 /*                     oput(*codep++);*/
                        *obufp++ = *codep++;
                        if(obufp == (obuf + OBUFSZ + ascii - 1))flusho();
 /*                     oput(*codep++);*/
@@ -233,7 +243,7 @@ move(){
                }else{
                        j = " ";
                        if(hflg)while((dt = dtab - (iesct%dtab)) <= esc){
                }else{
                        j = " ";
                        if(hflg)while((dt = dtab - (iesct%dtab)) <= esc){
-                               if(dt%t.Em)break;
+                               if(dt%t.Em || dt==t.Em)break;
                                oput(TAB);
                                esc -= dt;
                                iesct += dt;
                                oput(TAB);
                                esc -= dt;
                                iesct += dt;