[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Why is my printing so jagged?

Thought I'd step into the discussion about print resolution issues raised
recently by Rob Browning and addressed by others.I've been holding off, but
since I wrote print-u, I've decided to intervene.

Rob Browning writes:
> I have a routine that graphs a line by "connecting the dots" using a
> #_MoveTo and #_LineTo for each segment.  While this looks fine on screen,
> when I print it to a laserwriter (using print-u.lisp and letting the driver
> handle Quickdraw->PostScript translation) it looks ugly.  The line is very
> lumpy even though I know that the endpoints of adjacent segments are on top
> of one other.
> Why is this, and is there a straghtforward fix?

Tom Herbig replies with his own fix. Tom correctly states that
  Everything on the Mac was perfectly consistent
  and truly WYSIWYG when printing was only possible at 72 dpi (thank god
  that's over).  High resolution printing issues are still inconsistent,
  because you can get more than what you can see on the screen.

Instead of using Tom's method, consider the following.
1. Draw all lines using fractional line widths (1/4) will work fine.
   (assuming screen resolution of 72dpi). Use the scale-line-width
   and normal-line-width methods to adjust the line thickness to fractional
   pixel widths. Otherwise pixel lines on the screen will be too thick when
2. Within the page-setup dialog box, press the "Options" button and then
   check the "Precision Bitmap Alignment" check box. This will reduce
   the image so that each pixel on the screen appears as a whole number
   of pixels on the printer. With the 300 x 300 resolution of the printer,
   each pixel on the screen will then occupy a region 4 pixels by 4 pixels
   on the printed page. Thus a (horizontal or vertical) line on the screen
   (with 72 dpi) will appear as 72 pixels on the screen, and 288 pixels
   on the printed page. This corresponds to a 96% scale. 

   This solution would be appropriate for any PostScript printer. If you
   want to do this automatically, you could go through the print record
   and set the appropriate field.