[Openicc] Re: Ghostscript CMS [was: PDF frustration]

Kai-Uwe Behrmann ku.b at gmx.de
Thu Nov 20 14:45:35 PST 2008


Hello Michael,

The overall recipe looks good to me. Just some annotations about the 
quantities in he hope things get more clearer to us all. As well I will 
ask for my own understanding, as my usual terminology differs or 
things are implied and mentioning explictely is helpful.


Page 5:
The gsicc_get_link function takes a rendering intent argument to 
lookup the device link in the cache. I'd say at least Black Point 
Compensation (bpc) should be included and will hopefull at some point 
visible in PDF's.

The number of colour spaces taken by this function seems fixed. I am not 
shure if this is a good idea. This can not good handle proofing, for 
instance if someone wants a the print output to appear like some different 
kind of printer. What about effect profiles? The look a user likes 
to see should not be embedded into device profiles. Without a certain 
look, most time some contrast and saturation increase, many users are 
disappointed.

Setting the default profiles by colour space seem difficult. There are 
at least two different groups of profiles needed:
* for incoming untagged data
* blending colour space
* interpolation colour space
The Rgb space for incoming data might be completely unuseable for 
blending. Perhaps a blending colour space is always defined in the 
document? I have no enough insight into PDF/PS to know that. If yes,
this would make a default for a blending colour space obsolete.


As a side note:
Devicelink link caching might be better handled externally. The 
possibility to register a handler could help with that.
... oh, I see on the bottom of page 5 it is already mentioned.

Ghostscript will detect the available CMS options during configuration and 
build the hooks according hooks?

Is gsicc_profile_t DeviceProfile /* The actual profile for the device */
the output space or the devices native colour space? So a tiff device 
could obtain Swop and a proofer its native Inkjet/Media/Ghostscript 
profile?

Will gsicc_load_default_input_profile( NumChannels ) work like a default?


Page 6:
Will the gscms_create( contextptr ) and so on interfaces cover pixel 
layout informations?


Page 8:
gsicc_load_default_device_profile( NumChannels ) will make sense only for 
4 cases (Named[0], Gray[1], Rgb[2], Cmyk[3]) ?


The actual device profile would be great find embedded in the output 
stream (PNG, JPEG, Tiff, PDF, SVG ...). A option to flatten complex colour 
documents into one colour space would be a great option. But this step 
needs more CMS options, like the special ones for Cmyk to Cmyk transforms.
This would affect e.g. the gscms_get_link() API from page 9.

Page 9:
Would point 4 mean that Ghostscript caches a thierd party link and hand 
it over to a custom CMS for applying to data?


How will no transform be handled? A explicit means would be great. I am 
not shure where the PDF specs allow for that. Shurely they do, just I 
dont know which PDF-X to choose.
Next to that some OpenICC people would be glad to know about the means to 
explicitely embedd a output profile and have a means to get it applied as 
device profile in a strict and on request in a lazy manner. The first 
would help for colour critical work, the later for retargetting in case a 
queue is not available and a document should be reouted to a different 
device with a different device profile.


Page 10:
"A comment on the hash codes" - I am in doubt that a fixed number of 
options will be flexible enough as I mentioned above. Possibly it is good 
to merge the options into a common part of the context pointer:
struct gscms_context_t {
   ...
   gscms_options_t * options;
   void* cmm_context;
   ... };


I probably did not yet get the point of the gsicc_xxx versus the gscms_xxx 
API's. 
Especially page 10 with gsicc_get_link() for obtaining non ICC links is 
confusing to me as the name suggests ICC complyance. Possibly I do oversee 
something as no types are assigned to the function arguments.
The one is the internal ICC alike implementation and the other a public 
API? How does they interact as the arguments differ?
... ok page 20 gives more hints.


A nice project. Good luck and much fun with it.

kind regards
Kai-Uwe Behrmann
-- 
developing for colour management 
www.behrmann.name + www.oyranos.org




Am 31.10.08, 10:56 -0800 schrieb Michael Vrhel:
> Quite some time ago, I promised to share a document on my plan to update
> Ghostscript's color management.  Sorry it has taken so long to get this to

> http://www.ghostscript.com/~mvrhel/Ghostscript_Proposed_ICCFlow.pdf


More information about the openicc mailing list