[Openicc] Introduction / Gutenprint]

Michael Sweet mike at easysw.com
Tue Apr 12 23:54:34 EST 2005

Kai-Uwe Behrmann wrote:
> Discussed where two options to forward print data. The one is to send
> image data in source format (mostly RGB, but as well CIE) and the other
> option a full ripped dataset ready for printing (GIMP/CinePaint).
> What about sending separated data in the image resolution and ripping 
> CcMmYK (for instance) after piping trough CUPS.

That is certainly possible, however many/most drivers do their work
in a device-specific RGB or CMYK colorspace, not a full separation.

Also, scaling+interpolating an image in the original colorspace and
then transforming to the device colorspace will yield different
results than transforming and then scaling the device colorspace
image.  Typically this will show up as unnatural transitions between

> At least the locally selected CMM can do its work on the local host. This 
> would need a transformation layer (if selected) in user space. The ripping 
> options need close coupled to the selected profile and forwarded to the 
> RIP.

Because of the issues surrounding image scaling and colorspaces,
you would need to provide a device-resolution image in the device
colorspace, which is prohibitively large.  Think 45 million pixels,
which for a 6-color printer with 16-bit input would be 540MB of
raster data, just for one (small) page!

> The difference between raster and vector processing would be a higher 
> administration level for postscript/pdf as it would strip out the 
> advantage of vector processing (small filesizes with fine resolution). 
> Maybe I am wrong here.
> Sorry for reasking some questions repeatedly. But I feel a little bit 
> confused about the options CUPS will provide.

OK, let me summarize:

     1. CUPS 1.2 will support ICC profiles on input and output.

     2. Input profiles are embedded in the print file and
        are interpreted by the corresponding RIP.

     3. Output profiles are stored in a "profiles" directory,
        typically /usr/share/cups/profiles.  Subdirectories
        are allowed.

     4. Standard output profiles for a printer can be specified
        in the printer's PPD file using the cupsICCProfile

     5. Custom output profiles can be specified using the
        cupsICCProfile attribute/option when printing a job, e.g.
        "lp -o cupsICCProfile=keyword filename.jpg" or
        "lp -o cupsICCProfile=filename.icc filename.jpg" or

     6. Custom output profiles must be stored in the "profiles"
        directory or a subdirectory.  Administrators may provide
        users with a subdirectory to store their custom output
        profile, however CUPS will not provide this as a standard
        feature for security reasons.

     7. Applications can retrieve the output profile(s) of a printer
        by reading the PPD file (cupsGetPPD, ppdOpenFile) to get
        the list of standard profiles and by getting the profile
        from the print server using the URL

     8. RIPs select an output profile using either the cupsICCProfile
        attribute/option (if specified) or by combining the
        PPD options (e.g. CMYK.Glossy.720dpi) that correspond to
        a standard profile in the PPD file.

     9. Drivers get raster data in the device-specific colorspace.

Michael Sweet, Easy Software Products           mike at easysw dot com
Internet Printing and Document Software          http://www.easysw.com

More information about the openicc mailing list