[Openicc] Assigning ICC profiles to pinter driver settings part 2

Hal V. Engel hvengel at gmail.com
Wed Jan 19 17:16:52 PST 2011


On Wednesday, January 19, 2011 02:50:48 pm Jan-Peter Homann wrote:
> Hello list,
> After reading the mails in the list, I´m currently not convinced, that
> the OS level configuration like Oyranos or colord is the best solution
> for assigning an ICC profile to printer driver settings.
> 
>  From my personal experience I rather would prefer a solution where it
> is possible to assign an ICC profile directly in the printer driver
> provide an interface to make the ICC profile for the current active
> setting available to to services / applications sending raster-data to
> the printer driver.
> 
> This would allow e.g. following use cases
> 
> 1) predefined standard settings with canned profiles
> The printer driver is delivered with canned profiles and the user don´t
> changes anything during daily work

This is supported by the current CUPS architecture although CUPS needs open 
source CM aware *toraster filters to fully support this on non-OS/X systems. 

> 
> 2) predefined standard settings modied from the user
> The canned profiles for a standard setting are used, but the user has
> changed settings like e.g. enhancing contrast brightness or saturation.

Again this is a variation on the above and the user can currently tell the 
driver to behave in a non-default way such as increased contrast or 
saturation.  Once CM aware filters are in place for CUPS this should also work 
although there are some issues that need to be resolved.  For example the 
current PPD files appear to only have OS/X centric CM settings as none of the 
file paths used in the PPD files exist on most *nix machines.

> 
> 3) individual profile from the user
> The user can print a testchart without application of a color
> transformation and assigns the resulting profile directly in the driver
> setting.

Of course printing a test chart now works but at the point where there are CM 
aware filters in CUPS this may no longer work unless the user knows what 
printing path will bypass CM.  For example, if the PDF work flow is CM aware 
but the pure raster work flow is not a test chart could be printed by using a 
pure raster work flow.  But this is at best a kludge that should be avoided.

In addition the current CUPS design does not really support user supplied 
profiles on the print server side so this implies early CM binding on the 
client side (perhaps in the CPD?) and then by passing of CUPS level CM.  This 
is a fairly ugly solution and I think we can do better. 

> 
> If a profiling service is triggered directly from the driver, it is easy
> to integrate the driver settings into the ICC-profile as metadata for
> documentation and troubleshooting.

At present there are no drivers (as this would generally be defined by most on 
this list) in the open source domain that know anything about applying ICC 
profiles.  But I remember a very early thread where there was some disagreement 
about just what constituted a printer driver and some would include things 
like the *toraster CUPS filters in their definition of a printer driver well 
most here would only include the printer specific code.

Currently I don't think that most of us are expecting to push CM down to the 
level of the actual printer driver and I think most everyone wants to have 
this functionality at a higher level in the software stack.  This will allow 
it to be implemented in one place which will make things simpler for everyone 
and also more consistent for everyone including users assuming it is done 
correctly.  

> 
> 
> 4) Where to apply the color transformtion from source colorspace of the
> rasterdat to the target device colorspace of the printer driver setting ?
> I don´t know if CUPS has mechanism for pulling a ICC from the driver. If
> yes, CUPS would be ricght place.
> If not, we have to discuss if CUPS should be enhanced with such
> functionality or if CUPS delivers only with rasterdata with an ambedded
> source profile (and may be a rendering intent) and the color
> transformation of raster-data is handled also in the printer driver.

CUPS has a lot of the needed hooks to do this but is currently missing open 
source *toraster filters that are CM aware.  With the recent release of 
GhostScript 9.0 it appears that we now have the major pieces needed to create 
a pdftoraster CUPS filter that will properly support CM.  Since these filters 
are relatively simple it shouldn't take too much effort to implement an open 
source CM aware pdftoraster CUPS filter built on top of GS 9.  I fact it should 
be possible to extend the current GS based code to support CM.

The current CUPS mechanism for "pulling a ICC from the driver" (using "driver" 
very loosely) is to use settings in the PPD file that contains mappings from 3 
driver settings to an ICC profile.  This, of course, is clearly not a solution 
that is generally acceptable to this group.  The printer parts of Oyranos and 
colord are attempts to build a more flexible and powerful system for managing 
the ICC profile to printer settings mapping on top of CUPS.

> 
> 5) Whats about PDF printing data ?
> PDF allows individual profiles for individual objects and also the
> definition of a global document colorspace (Output Intent).
> The PDF2Raster engine would render all individual objects colors
> including transparencies to a flat raster file and embeds the output
> intent into the raster file.

Again GhostScript 9.0 appears to give us what we need to implement a solid CM 
aware pdftoraster CUPS filter.   Linux and other open systems are moving away 
from a PS centric printing work flow towards a PDF centric printing work flow.  
Some recent distros are using the new PDF based printing work flow now and it 
is only a matter of time before this is used every where on *nix systems.  If 
the only CM aware *toraster CUPS filter was the pdftoraster filter we would be 
well on our way to having a working system level CM aware printing system 
although there is likely some work needed at the application level to make 
sure this is universally supported and, of course, we need to have something 
like Oyranos or colord to augment CUPS functionality.

> 
> 
> It would be nice to get some comments on the described workflow
> 
> 
> best regards
> Jan-Peter


More information about the openicc mailing list