[comp.binaries.ibm.pc.d] Ghostscript Epson driver fix

monett_s@cho006.cho.ge.com (06/27/91)

The problem with the EPSON driver is the section of code that attempts
to tab over white space on a line. I don't know what printer recognizes
the command sequence used in the GS2.2 driver but it is not recognized
by my Panasonic and it appears that many other Net readers are having
the same problem.

I was able to fix gdevepsn.c so that it would print properly on my
Panasonic 1091i and an old IBM Personal Graphics Printer. I just
disabled the tab code. Here are my changes to gdevepsn.c

=============================================================================

===========> Locate this piece of code in gdevepsn.c

		while ( outp < out_end )
		   {	/* Skip a run of leading 0s. */
			/* At least 10 are needed to make tabbing worth it. */
			/* We do everything by 3's to avoid having to make */
			/* different cases for 8- and 24-pin. */

			if ( *outp == 0 && outp + 12 <= out_end &&
			     outp[1] == 0 && outp[2] == 0 &&
			     (outp[3] | outp[4] | outp[5]) == 0 &&
			     (outp[6] | outp[7] | outp[8]) == 0 &&
			     (outp[9] | outp[10] | outp[11]) == 0
			   )
			   {	byte *zp = outp;
				int tab;
				outp += 12;
				while ( outp + 3 <= out_end && *outp == 0 &&
					outp[1] == 0 && outp[2] == 0
				      )
					outp += 3;
				tab = (outp - zp) / bytes_per_dot;
				outp = zp + tab * bytes_per_dot;

				/* Output preceding bit data. */
				if ( zp > out_blk )	/* only false at */
						/* beginning of line */
				  eps_output_run(out_blk, (int)(zp - out_blk),
						 y_mult, start_graphics, prn_stream);
				out_blk = outp;

				/* Tab over to the appropriate position. */
				/* Relative tabs work in half-dots. */
				tab *= 2;
				fputc(033, prn_stream);
				fputc('\\', prn_stream);	/* dot tab */
				fputc(tab & 0xff, prn_stream);
				fputc(tab >> 8, prn_stream);
			   }
			else
				outp += y_mult;
		   }



===========> Replace it with this

		outp = out_end;

=============================================================================

I know that some other optimizations are needed but this lets the driver
work. I am working on a new version of the driver that will use the
multipass modes of the 8 pin printers for smoother text so I will get to
it eventually.
-- 
-----------------------------------------------------------------------------
Steve Monett                        monett_s@cho006.cho.ge.com
GE-Fanuc; Charlottesville, VA