The Colormanaged Printing Path

This page is intended to coordinate the developments and the usage of ICC profiles in following applications / tools. The first version should act as a starting point for the community active for the colormanaged printing path.

Print Spool file generation

  • QT printing API

  • print spool files created directly from applications

PDFtoRaster modules

  • ?GhostScript

  • Poppler

CUPS

CPD - Common Printing Dialogue

Raster Printer driver

  • Gutenprint

Overall description of project goals and use cases

1) Invisible print colormanagement for standard users

The standard print spool format under LINUX are currently DeviceRGB PDF-files. For colormanagegd print path, such spool files will be treated as being sRGB. If the standard user changes media settings in the CPD, the proper canned printer profile should be configured automatically in the CUPS PDFtoRaster module.

2) Robust color management Opt-out process for printing testcharts

A "bullet proof" printing mode for testcharts must be avaliable with disabled color management in the printing path. This is reached through and advanced option in CPD for Opt Out ICC based color conversion in the pdftoRaster module for DeviceRGB and DeviceCMYK print spool files.

3) Linking of printer ICC-profiles and raster driver settings through ICC dictType metadata

An automatic linking between raster driver settings and ICC-profiles is extremly helpful for automated and colormanaged print workflows. The ICC dictType metadata allows to register a vendor specific ICC tag, which e.g. can contain driver settings. CUPS PDFtoRaster could uses such prepared printer profile as a target profile and embed this profile in the raster file for e.g. ?RastertoGutenprint. ?RastertoGutenprints will parse the Rasterfile, extract the driver settings and setups Gutenprint automatically. This concept could be used both for CUPS based printing workflows and also for colormanaged imaging applications, which are bypassing CUPS and driving Gutenprint directly. A combination of ICC-profile and driver setting is named "ICC-driversetting" in the following paragraphs.

4) Importing ICC-driversettings into CPD

Normally, available driver options are represented through static PPD files in the CUPS / CPD workflow. There are several use cases, where it makes a lot of sense, that the user can import ICC-driversettings into CPD without the need to change the PPD for the printer. These are e.g.

  • The driver vendor / community publishes new ICC-driver settings for a given printer

  • A media vendor publishes new ICC-driver settings for a given printer

  • A remote profiling service delivers ICC-driver settings to the enduser

  • The enduser itself creates new ICC-driver settings

The choosable options for the standard user in CPD concerning media and print quality / speed will be generated only from the available ICC-driver settings. For creating a simple CPD-user interface, the ICC-driversettings should contain hierarchical selectors for e.g. printertype, mediatype and resolution If for a printer type two profile for plain paper with 360 DpI / Fast and 720 / High Quality are available, the CPD dialogue will show for the media selector one entry for plain paper and two entries in the resolution / quality selector. If there is only one profile for Glossy paper, the CPD selector for resolution / quality will only show one entry, glossy paper is choosed in the media selector.. The workflow for printing testcharts will discussed later.

5) The role of PDFtoRaster and CPD

PDFtoRaster must be able rasterize a DeviceXXX PDF without any color conversion (testchart printing) and also with a colorconversion from a default source profile to a target profile. CPD must be able to setup the target profile (ICC-driversetting) in PDFtoRaster. PDFtoRaster must also be able to embedd the ICC-driversetting into the rasterfile, to allow an automatic setup of e.g. ?RastertoGutenprint or RastertoXXXdriver.

6) Printing Testcharts, creating new stand alone driver settings and ICC-driversettings

Printing Testcharts can be simple with predefined driver settings for a given media type, or can be a science if new driver settings have to be optimized for a special ink-media combination. Working with predefined driver settings is necessary for user who donĀ“t want to know the details about printer profiling, but wants to have an individual ICC-profile for his media through an remote profiling service. The advanced options are needed for power users which want to adapt the driver settings to an optimum for the ink-media combination before the testchart is printed.

Doing high-quality printer profiling with control for black generation needs the possibility for sending CMYK testcharts to the printer. This is not possible if the sending application supports only RGB based print spool files.

7) Disclosure of complexity through CPD

The following concept describes three layers in a CPD dialogues:

7a) Daily usage

The top CPD dialogues presents: - media type selector (extracted from installed ICC-driversettings)

  • resolution / quality (extracted from ICC driversettings of the same media type, Standard rendering is set to relative colorimetric with blackpoint compensation and hidden from the user) - papersize

  • number of copies

  • scaling of print job

  • import new media / quality setting (simply import an ICC-driversetting for the printertype)

  • advanced settings (open the second layer)

7b) Advanced settings

  • media / quality selector (available from different sources:

                 * -  extracted from ICC-driver settings,  - direct import of settings indpendent fromICC-profile,  - creation of own media / quality settings in expert mode) 
    
  • Choose color rendering options (changes the rendering intent in pdftoraster, or disables colormanagement in pdftoraster for deviceXXX files)

  • Create additional quality setting (adds for a given media media setting an additional quality entry, to print with a different rendering intent or disabled colormanagement. Will be choosable in the top dialogue as additional entry. This allows e.g. daily printing with disabled colormanagement, or e.g. with absolute colorimetric rendering intent for proofing)

  • import media/quality settings (import of settings independent from an ICC-profile, which than will be available through the media / quality selector

  • merge ICC with media/quality setting (import of an ICC-profile, integrate current media/quality setting as ICC dictType and make it available in the the CPD top layer

  • export ICC-driversetting (export available ICC-driversettings for exchange with other users)

  • activate control slug (prints a control slug with name of media quality setting, active ICC-profiles and rendering intent. This is needed for proofing, helpful for troubleshooting and a must for testcharts to know which media quality settings has been used to print the testchart.

  • activate control bar (prints an additional control bar, which is e.g. mandatory for proofing.

  • expert settings (open the third layer)

7c) Expert settings

All available low level options for the expert to create individual media driver settings - media quality selector (the same selector as in advanced settings. Selecting a media / quality setting here, will show all the entries for the low level driver settings and makes them available for editing. Also additional media quality settings are available for:

7c-1) printing testcharts for judging and setting inklimits per channel and total ink-limit

7c-2) printing testcharts for judging and optimizing per channel linearization curves

7d Different versions / installing options of CPD ?

For users, which are only using software with standard RGB print spool path and not interested in printing testcharts, it may makes sense to offer two versions of CPD. One containing only the top layer and another all three layers. It may also makes sense to develop a solution to print CMYK-testcharts directly from CtP to rastertogutenprint (bypassing the normal deviceRGB print spool path and pdftoraster)

8) CPD and pdftoraster

The color transformtion of the print spool file happens in pdftoraster. pdftoraster must be able to be remotely configured through CPD, if e.g. the user changes a media / quality setting. Controlled by CPD are at least the target profile for the color transformation of the print spool file, the rendering intent and disabling of the usage of ICC profiles in pdftoraster. The source profile for the color transformtion of the print spool file is either:

  • defined from the sending application through its document colorspace

  • defined through a colormanagement framework like e.g. Oyranos or g-c-m

  • default profile of pdftoraster (sRGB.icc for standard pdf printspool files)

If a user imports an ICC-driversetting in CPD, it must be available instantly for pdftoraster without any user intervention. pdftoraster must also be able to embedd the target profile of the transformtiion into the rasterfile for rastertodriver (e.g. rastertogutenprint). So far as I know, only ?GhostScript is currently able to convert DeviceRGB and DeviceCMYK PDF-files with ICC-profiles and free choosable rendering intents. poppler applies ICC-based transformations only to ICCbased PDF-objects.

9) Crowd profiling and registry for Gutenprint ICC-driversettings

If we are talking about ICC-driver settings representing different printers, different media types and quality modes, we are talking about 1000+ Gutenprint ICC-driver settings. To organize such Gutenprint ICC-driversettings, it would be helpful, to have a registry which allows upload of ICC-driversettings and download for endusers selectable by printertype. 1000+ ICC driver settings seems to be a lot of work for a relatively small project like the Gutenprint team. But if we look, which parties could participate in the project, 1000+ Gutenprint ICC-driversettings could be realized between 6 and 12 months. Potential creators of Gutenprint ICC-driversettings are e.g.

  • Members of the Gutenprint team

  • vendors and resellers for inkjet-media

  • open source color enthusiasts, which sponsoring their own made Gutenprint ICC-driversettings

  • open source color enthusiasts which are sponsoring the project with monthly measuring some testcharts

  • remote profiling services, where the buyer of an individual made Gutenprint ICC-driversetting gets a lower price, if he agrees that a copy of his Gutenprint ICC-driversetting will be uploaded to the registry.

To organize the registry and the crowd-profiling process, it is very important, that printertypes, general mediatypes and resolution/quulity settings are unambiguous defined. This could be solved, where the Gutenprint delivers predefined settings, where e.g. the printertypes, general mediatypes and resolution / quality settings are already named. The contributor will ad e.g. additional informations like the precise commercial media name of the setting, before he merges ICC-profile and Gutenprint settings to an Gutenprint ICC-setting, which he than uploads to the registry.