[Openicc] printing GUI vs. printerdriver, LINUX colorinfrastructure

Jan-Peter Homann homann at colormanagement.de
Sat Apr 16 22:33:51 EST 2005


hello list

It seems, that in the last mails, the term "printerdriver" was used with 
very different meanings. If we want to build a transparent 
color-infrastructure for printing, we need a better, definition, what a 
printerdriver is. For me, it makes sense to make a difference between 
the printing GUI and the printerdriver.

The printing GUI is the userinterface, where the printing settings for 
the actual job are specified.

The printerdriver is driving the printer directly. Mainly this is the 
rasterization for the printed dots, some kind of colormanagement and 
paper-handling according the printsettings, the user has made in the 
printing GUI.

How should printing-colormanagement be done ?
------------------------------------------
As described in mails before, we have four main possibilities to 
transform color for printing:
1. colormanagement in the application
2. colormanagement as CUPS-filter
3. colormanagement with CSA/CRD in the PostScript-RIP
4. colormanagement in the printerdriver

In the printing GUI, the user should specify, which way of 
colormanagement he is using.

For the professional user, we should offer all possibilities, even the 
possibity to make colortransformations in any combination of the 4 steps.

For the standard-user, this would be much to complicated and a source of 
misconfigurations an unwanted automaticly made colortransformations.

The interaction of the printing GUI and the printerdriver
-----------------------------------------------
If we are talking about color-infrastructure for printing, we have to 
look at the interaction of the printing GUI and the printerdriver.
This is going complex, if users in a network printing to different 
printers, where RIP and driver are running on servers.

During my work as colormanagement-consultant, I have to handle with 
different solutions:

1) Virtual printers for different color-settings
-----------------------------------------------
This is very common in the field of digital proofing, where mainly 1-10 
different color/media-settings are used in a network. I´m doing the 
profiling and profile-configuration for every media and generate a 
virtual printer for every color/media-setting. Every virtual printer 
gets the name of color/mediasetting e.g.

Epson4000_SWOP_semimattpaper
Epson4000_SWOP_standardpaper
Epson4000_newspaper_standardpaper

It is easy to train the users, which printers they should use for 
different jobs. But it is going complex, when you have to handle a lot 
off diffent color/media-settings.

The interaction of printing GUI and printerdriver is low and easy. 
Mainly it concerns paper-handling.

2) PPDs with static user settings
---------------------------------
This is very common in the field of colorlaserprinters. The RIP/driver 
has some predefined standard-settings and allows some users specified 
settings with hard-coded names like "user setting 1" "usersetting 2" and 
so on.
In the printing GUI the these settings can be triggered in the "Options" 
dialogue under the same names.

This is easy to implement in the printing GUI from the view of the 
developer, but the user always need to know, in which case he has to use 
"user setting 1"
I don´t like this possibility.

3) Interaction between GUI and RIP/driver
-----------------------------------------
Such solutions can may interact in one or both directions:
 From application via GUI / Spooler the document-colorspace and the 
rendering intent for the job is automaticly communicated to the 
RIP/driver. There, the color is transformed from the document colorspace 
to the printer/media/driver specified color.
This is very easy to use, but also flexible.

---------------------------------------------------
For a LINUX-colorinfrastructure for printing, this would my preferred 
standard-setting !!
----------------------------------------------------

More interaction is necessary, if some usersettings are done on the 
RIP/driver (eg. profiling, linearization) and this user settings should 
be available with their own name in the printing GUI.
For complex colormanagement scenarios, this delivers often a more 
consistent and flexible printing GUI as the use of 20 and more virtual 
printers for every special printer-setting. Such solutions are very 
common for large format printing, where print-providers have to handle a 
lot of different printing media, linearization-files and ICC-profiles.


colormanagement with CSA/CRD vs. printerdriver
-----------------------------------------------
Using a combination of RIP / printerdriver we have the possibities to do 
colormanagement with CSA/CRD during the RIP-process or with ICC-profiles 
  after Ripping and before rasterization. In the last case, the RIP 
delivers an high-resolution Image in the document-colorspace, with 8 or 
16 Bit per channel. The printerdriver is doing first colormanagement and 
than the rasterition for direct driving the printer.

CSA / CRD
---------
In the first case, the printerdriver can be relativly dumb in the field 
of colormanagement. But we need a mechanism to convert the document 
colorspace to an CSA and the profile for the media-driver setting to an 
CRD. We also need a mechanism, that the the RIP can choose the right CRD 
according the media/driver setting. We also need different CSAs / CRDs 
for differnt rendering-intents, the user specifies in the printing GUI.
If the user specifies absolut colorimetry, the papertone of the 
document-colorspace is only simulated in the ripped objects and NOT on 
areas, where no objects are.
For digital proofing with absolut colorimetry, the CSA/CRD construct is 
not usable.
The CSA/CRD colormanagement-appoach is often used for cheap inkjet-RIPs 
or for colorslaserprinters / colorcopiers.

driver-colormanagement
--------------------
In this case, the RIP is dumb in the field of colormanagement. As 
colormanagement is done on an image representing the complete 
printinout, absolut colorimetry delivers a proper simulation of the 
papertone of the document-colorspace. We don´t need a transformation 
from ICC to CSA/CRD and we also need no configuration from 
media/driver-settings to CRDs for the actual job.
Such architecture is common for digital proofing and large-fromat 
printing, where linearization and individual proofiling are normal steps.

-------------------------------------------------------------------
If standard-printerdrivers are available, which delivers this 
functionality, I would prefer this as standard-setting for LINUX 
printing archtecture and not the CSA/CRD transformation
---------------------------------------------------------------------


Hardcoded colortransformations, ICC-profiles and devicelink-profiles
-----------------------------------------------------------------
Making a good linearization and an individual ICC-profile for an 
media/driver setting is a hard job, wich needs several testprints for 
lineraization and profiling charts, a spectrophotometer and a profiling 
software. Such tools are not common yet in the Open Source printing scene.
But if a good profile for an media/driver setting is available, this 
makes it possible to work with different document-colorspaces and make 
high-uality colormatches to the actual media/driver setting.

Using hardcoded colortransformations are a fast and cheap way for 
reaching "good enough quality" without the need for a spectrophotometer.
Often hardcoded colortransformtions resulting to smoother and visual 
more pleasing results, than ICC-profiles if the printer was not optimal 
lienarized. This is especialy visible in color-blends.

On the other hand, the result of hardcoded colrotransformation are 
always depinding on the document colorspace, which is used.
If the printerdriver delivers a hardcorded colortransformation, which 
converts with good results from sRGB to the printer, the user must 
always work in sRGB colorspace.

If hardcoded-colortransformations in Opensource-Software are used, every 
developer has is own specification. So hardcoded colortransformations 
can not be generated, editet and used with different applications.

ICC-profiles on the other hand, can be generated, edited and used with 
different applications.

Devicelink-profiles are the ideal bridge between hardcoded 
colortransformtions and an open ICC-approach. Devicelink-profiles can 
represent every kind of colortransformation or colorcorrection, which 
can be hardcoded.
They can also be used in ICC-based workflows, when the CMM like e.g. 
littleCMS supports devicelink-profiles.
If devicelink-profiles are used, the generation, editing and usage of 
hardcoded colortransformations can be done with different applications.

It makes e.g. following workflow possible:
- The user opens a testimage in GIMP and prints it out.
- He compares the result on the monitor with printout.
- he is doing some colorcorrections, that the printout better fits to 
the monitor.
- He stores the color corrections as develink-profile and configures the 
devicelink-profile in gutenprint
- Now he can use the colorcorrection made in GIMP during printing from 
all applications with gutenprint.

For high-end colorprinting, devicelink-profiles are also a common 
technology. Source and destination profile are linked to a 
devicelink-profile and may edited for special purposes .

--

If a printerdriver can use devicelink-profiles, it should be possible 
that the devicelink-profile is configurable for special combinations of 
document colorspace and media/driver setting.

If sRGB data is printed to driver/media-setting1, devicelinkprofile1 
should be used. If AdobeRGB is printed to driver/media-setting1 
devivelinkprofile2 should be used.

The main points of this mail together:
-------------------------------------
The printerdriver should be able to use CMYK(cm) linerizations and 
icc-profiles
- colormanagement for printing should be done in the printerdriver after 
ripping
- the document-colorspace should be sended from
application->printerGUI/CUPS->RIP->printerdriver
- the rendering intent for printing should be specified in the 
printingGUI and sended the same way like the document colorspace
- The printerdriver should use devicelink-profiles if hardcoded 
colortransformations are necessary.
- the printerdriver should allow the configuration of 
devicelink-profiles for special combinations of document-colorspace and 
media/driver-settings.

Main advantages of this concept
-------------------------------
- both hardcoded and ICC-transformations during printing is possible
- Easy way for printing RGB-data from applications, which don´t support 
icc-colormanagement. In this case the printerdriver uses a 
standard-transformation from sRGB to the media/driver setting
- Very easy way from the document colorspace to the media/driver 
colorspace, for printing from ICC-aware applications
- Open to high-quality users like photographers, designers, 
prepress-bureaus or large-format printers, which want to make their own 
profiles.
- It should be possible to implement with a combination of CUPS and 
gutenprint.

--------------------------------------
This printing architecture would be in the field of colormanagement more 
flexible, powerful and transparent than the actual printing architecture 
in Windows or Mac OS X.
--------------------------------------


Colorful greetings
:-) Jan-Peter

--

homann colormanagement ------ fon/fax +49 30 611 075 18
Jan-Peter Homann ------------- mobile +49 171 54 70 358
Kastanienallee 71 ------- http://www.colormanagement.de
10435 Berlin --------- mailto:homann at colormanagement.de




More information about the openicc mailing list