
Release notes for the Lexmark 3200 printer driver version 0.4.1 
December 21, 2000

Copyright 2000 Daniele Gordini (dgordin@tin.it)

This program is released under the terms of the GNU GPL.


INTRODUCTION
============

This version is an almost complete rewrite of the driver, that adds
(hopefully) increased stability and more features.
The main differences between this release and the 0.3 releases are:

1) Changed syntax: now there is only one device name and a parameter 
   to select between monochromatic, color and photoquality printing.

2) Much more robust printing: it *should* now be able to print all kind 
   of pages, even very complex ones. I did not have any problem with any
   printout using this version, but obviously this doesn't mean it's
   perfect. It can be it will broke at your first attempt to print
   something, simply it's likely it will work pretty well.

3) Support for 300, 600 and 1200 dpi resolution, both horizontal and 
   vertical. Horizontal and vertical resolutions are independent, thus 
   allowing for a total of 9 different resolution modes. Of course not 
   all of them make sense (300x1200 for instance) but they are selectable 
   nonetheless.
   IMPORTANT: Ghostscript uses a simple ordered dithering that does not 
   take into account interlaced resolutions (i.e. resolutions where dots 
   partially overlap, like all the Lexmark 3200 resolutions that have 1200 
   dpi either horizontally or vertically). The result is that at 1200 dpi 
   Ghostscript lays down *way* too much ink *way* too fast, leaving the 
   paper soaked and causing ink smearing. 
   The problem can be partially worked around by adjusting the gamma value 
   to a lighter setting and/or by increasing the number of print passes 
   (see below). The real solution would be to use a proper dithering
   algorithm: this is not trivial, and it will be cared for in the next 
   release. By now this driver will work at its best at 600 dpi.

4) Bidirectional printing for fastproofing. This still has issues with pass 
   aligment that affect output quality, so I am confining this feature to 
   draft output. The problem is that, as of now, I was able to obtain an 
   output that is perfectly aligned either on the left or the right side but 
   not on both. Even the Windows driver does have problems with bidirectional 
   alignment, so I suspect that there is some kind of hardware problem. 
   Anyway the output of the Windows driver looks better aligned than the 
   output of my driver, so it appears there is room for improvement here.

5) Multipass printing for lesser ink smearing. Using more than one pass has
   the main effect of reducing the speed at which the ink is dropped on the
   paper, thus allowing it to dry somewhat before adding more ink.
   This feature was provided for non-absorbing (i.e. coated) paper, but with 
   the current unoptimized dithering algorithm the highest resolution modes
   (that would gain more benefit from it) don't really improve much.

6) Now the printing margins are set as the printer's manual says they must be
   set (well, almost...). This means no more printing on the whole page, but
   it also means that what is inside the margins should be printed better.
   Note that, according to the manual, there are two sets of side margins: one
   used for A4 paper and one used for every other size (namely letter). I don't
   think this makes sense, but I need to study the issue more carefully, so
   for this release I will do as the manual says. And the third set of margins,
   the one used for envelopes, it's plainly ignored because this release does
   not explicitly support envelopes. This does not mean you won't be able to
   print on envelopes: it only means I've not tried to do it, so I won't
   assure anything.

7) The driver supports the Lexmark Z12 and Z31 via the -dmodel parameter
   (see below). In the case of the Z12 only B&W printing was tested.

KNOWN ISSUES
============

This driver is technically robust, but it still has 3 issues about the
printout quality that need to be solved. All three directly descend from 
the fact that the routine used to do the dithering is the standard routine 
supplied by Ghostscript, which has limitations. The issues are:

1) Ink density is fixed, so at 1200 dpi, where dots partially overlap, the 
   paper gets soaked with ink and the printout is *way* too dark. You can
   alleviate the soaking problem by using more passes and by disabling
   bidirectional mode (if it was enabled in the first place), but don't
   expect too much from these solutions. The sad truth is that at 1200
   dpi you need to do a real lot of manual tweaking on the originating 
   program (gamma value, luminosity, etc.) to make the output usable.

2) Dithering algorithm is fixed to ordered, so line art printouts look 
   pretty good (the Ghostscript examples, for instance), but photographic
   printouts doesn't...

3) There is no color correction, so colors are quite often pretty wrong.

I hope to solve most or all of these problems by releasing a version of
the driver that plugs into the gimp-print project, using their dithering
code (which is more general and better quality than ghostscript's one).


PARAMETERS FOR THE DRIVER
=========================

BEWARE: in Ghostscript, parameter names are always case sensitive!

Device name:
------------

Now there is only one device name: lxm3200, without the trailing letter. 
So the ghostscript invocation will always contain the option:

  -sDEVICE=lxm3200

NOTE: this change will break the modified RedHat printtool that was 
distribuited with the version 0.3 of the driver. There is an upgrade
package for printtool and printfilters on the download page that 
will make things work again, but YOU NEED TO REMOVE ALL THE
CONFIGURED PRINTERS THAT USE THE OLD DRIVER BEFORE UPGRADING and then
reinstall the printers after the upgrade.

Printer model selection:
------------------------

The driver supports the following printers: Lexmark 3200, Z12 and Z31.
The model must be selected with the "model" parameter.
-dmodel=0 -> Lexmark 3200 (this is the default).
-dmodel=1 -> Lexmark Z12 (discovered by Boer Attila)
-dmodel=2 -> Lexmark Z31 (discovered by Tomas Groth)

Printing mode selection:
------------------------

Since there is only one device now, a new parameter has been added to
select between the three printing modes. The parameter name is "mode",
and it should be added to the Ghostscript invocation as follows:

  -dmode=<num>

Where <num> is 0 to select monochromatic printing, 1 to select standard
color printing (the default) and 2 to select photoquality printing.


Printing resolution settings:
-----------------------------

The resolution is selected using the standard Ghostscript option "-rHxV",
where H is the horizontal resolution and V the vertical one, both in DPI.
The default is the native resolution (600x600) and legal values for H and V 
are 300, 600 and 1200, in any combination. No error is issued if a different
number is specified: any setting below 450 is snapped to 300 dpi, a setting
between 450 and 900 is snapped to 600 dpi and anything above 900 is snapped
to 1200 dpi.


Bidirectional printing:
-----------------------

The parameter "bidir" selects if bidirectional printing is in effect.
Bidirectional improves speed but it has an effect on quality, so I 
strongly advice to use it only in draft mode. The default is "off",
and it can be turned on or off adding on the ghostscript command line
the option:

  -dbidir=<num>

where "num" is 0 for monodirectional printing or 1 for bidirectional.


Multipass printing:
-------------------

The parameter "numpass" allows to specify the number of passes to do on
each stripe, to slow down the printing. The invocation will be:

  -dnumpass=<num>

where <num> is the number of passes, ranging from 1 (the default) to 16.
Please note that usually each line is printed in a single pass, with the 
exception of the 1200 dpi resolutions: 1200 dpi horizontal requires two 
passes, 1200 dpi vertical requires two passes as well, and so 1200x1200 
requires a total of four passes. The value of <num> MULTIPLIES this, so
setting a <num> of 3 at 1200x1200 dpi will result in a total of 12 passes.


Alignment values:
-----------------

These are the same as of previous versions. They are all passed to the
driver by defining them in a "-d" option.

  -dAlgnA=<num>

This is the horizontal alignment between left and right cartridge. If you 
notice that there is an horizontal misalignment between black and color 
parts of the same printout, this is the value to change. The default is
16 and the allowed range for <num> goes from 0 to 30. Obviously, in 
monochrome printing this value is not used at all.

  -dAlgnB=<num>

This is the same as AlgnB, but for vertical alignment. You need to change
this value if you notice vertical misalignments between black and color.
The default value is 8 and <num> can go from 0 to 15. In monochrome printing
this value is not used.

  -dAlgnC=<num>

This sets the value of the distance between the even and odd nozzle columns
of the left cartridge (black or photo). You need to change this if you see
misalignments between black parts OF THE SAME STRIPE. The default value is
16, and <num> can go from 0 to 30.

  -dAlgnD=<num>

This sets the value of the distance between the even and odd nozzle columns
of the right cartridge (color). You need to change this if you see 
misalignments between color parts OF THE SAME STRIPE. The default value is
16, and <num> can go from 0 to 30.

Additional margin for the Z31:
------------------------------

Because there are small differences between different Z31 models, 
we need a parameter which introduce an additional margin  (default is 100).
  -dz31m=<num>
