[Openicc] Introduction / Gutenprint
Robert L Krawitz
rlk at alum.mit.edu
Sun Apr 10 11:37:09 EST 2005
Date: Sun, 10 Apr 2005 02:31:08 +0200
From: Gerhard Fuernkranz <nospam456 at gmx.de>
Robert L Krawitz schrieb:
>The harder problem is when your application simply
>generates Postscript and hands it off to CUPS (or
>LPRng, or whatever).
Actually I see one more problem in this context:
So far, only color management in the gimp-print driver has been
considered. But if the driver performs color management, how does
it cooperate with the PostScript color management?
PostScript level 2 and 3 define color management functionality, and
any PostScript document may legally use it, for instance CIE-based
color spaces, which are of course expected to be rendered correctly
by a "PostScript level 3 printer" (i.e. ghostscript + driver +
printer in our case). IMO particularly color managed applications
which produce PostScript or PDF output may likely use these
particular PostScript or PDF features.
Ghostscript does support the PostScript level 2+3 color management
features (color space arrays, color rendering dictionaries,
CIE-based color spaces, remapping of device color spaces to
CIE-based color spaces, ...), but in order that ghostscript's PS
color management works as specified in the PLRM, my understanding
is that all color transformations need to be carried out _by
ghostscript_ (and not in the driver), and gs eventually sends only
the final DeviceCMYK values (or whatever ProcessColorModel is used)
to the driver. Of course this also requires, that a CRD for the
printer (that's more or less the PostScript equivalent of the
printer's ICC profile), and maybe also transfer functions (for
device linearization), need to be passed (as PostScript program) to
ghostscript, together with the document being printed.
Part of the rub is what the "final DeviceCMYK" values are. They're
always going to be interpreted somehow by the driver, since inkjets
aren't continuous-tone devices and all that.
It sounds like what you're really suggesting here is that the driver
provide good linearized output, and ICC profiles or whatnot be applied
in Ghostscript. That's fine, but if Ghostscript is delivering 8-bit
data to the driver, it means that a fair bit of information is getting
lost because the profile won't be a 1-1 mapping. If Ghostscript
outputs 16-bit data that issue goes away.
Btw, though ghostscript's CIE-based color rendering basically works
pretty well, I'm still not fully convinced with the quality. The color
rendering quality of gs 8.xx seems to be _much_ better than gs 7.xx, but
applying ICC profiles directly to an image (with LCMS or Argyll) and
sending the resulting DeviceCMYK image as PS file to ghostscript gives
IMO still better results, than ghostscript't CIE-based color
transformations.
To summarize what I think I'm hearing:
1) Linearization should be performed in the driver.
2) Device ICC profiling should be done in a layer between the driver
and the application (Ghostscript for applications that generate
Postscript, or libgutenprintui for applications that use the UI
provided by Gutenprint).
Do people agree with this?
--
Robert Krawitz <rlk at alum.mit.edu>
Tall Clubs International -- http://www.tall.org/ or 1-888-IM-TALL-2
Member of the League for Programming Freedom -- mail lpf at uunet.uu.net
Project lead for Gimp Print -- http://gimp-print.sourceforge.net
"Linux doesn't dictate how I work, I dictate how Linux works."
--Eric Crampton
More information about the openicc
mailing list