<HTML><HEAD>
<META name=qrichtext content=1>
<STYLE type=text/css>
p, li { white-space: pre-wrap; }
</STYLE>
</HEAD>
<BODY 
style="FONT-STYLE: normal; FONT-FAMILY: 'DejaVu Sans'; FONT-SIZE: 12pt; FONT-WEIGHT: 400" 
dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Arial'; COLOR: #000000; FONT-SIZE: 10pt">
<DIV>Hal,</DIV>
<DIV>&nbsp;</DIV>
<DIV>I agree, the reality of the world is that there are a lot of bad PDF files 
out there and Ghostscript has to robustly handle the good the bad and the ugly. 
<IMG 
style="BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" 
class="wlEmoticon wlEmoticon-smile" alt=Smile 
src="cid:C020086663D1498EA847A237AE8B959A@michaelvPC"></DIV>
<DIV>&nbsp;</DIV>
<DIV>Michael</DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">
<DIV style="FONT: 10pt tahoma">
<DIV><FONT face=Arial></FONT>&nbsp;</DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=hvengel@gmail.com 
href="mailto:hvengel@gmail.com">Hal V. Engel</A> </DIV>
<DIV><B>Sent:</B> Tuesday, March 01, 2011 9:47 AM</DIV>
<DIV><B>To:</B> <A title=openicc@lists.freedesktop.org 
href="mailto:openicc@lists.freedesktop.org">openicc@lists.freedesktop.org</A> 
</DIV>
<DIV><B>Subject:</B> Re: [Openicc] Printing Plans GhostScript</DIV></DIV></DIV>
<DIV>&nbsp;</DIV></DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">On 
Tuesday, March 01, 2011 02:15:32 AM Kai-Uwe Behrmann wrote:</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
Hello Michael,</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
Am 28.02.11, 22:09 -0800 schrieb Michael Vrhel:</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; Hi Jan-Peter,</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; </P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; So yes, ghostscript does apply ICC base color transformations on</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; Postscript files and this is true even for DeviceRGB and DeviceCMYK.</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; I need to add in the interface for rendering intent and black point</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; compensation. That will be coming shortly. In fact, I am also adding in</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; the ability to specify different output profiles for graphics, images,</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; and text as ghostscript keeps track of these objects during rendering,</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; even through transparency blending. The specification for these</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; options is primarily through the CLI but can be made through special</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; configurations.</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
Would it possible to pass those profiles along the PDF document itself?</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; As far as "turning off" transformations for DeviceRGB or DeviceCMYK, 
that</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; will occur in cases where the source and destination profiles are the</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; same.</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
We came several time to the conclusion that this scheme is not realy</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
robust. So we would be happy you could point us to an other mechanism as</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
well.</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0; -qt-paragraph-type: empty">&nbsp;</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">The 
reason that this is not robust is that the user app currently has no way to 
specify the source profiles to be used when the GS pdftoraster filter is called 
and no way to know what profile will be used by the print system so that it can 
specify a matching output color space.</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0; -qt-paragraph-type: empty">&nbsp;</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">The 
reason that this whole DeviceXXX thing is an issue is because we have so many 
dumb apps and libraries that use DeviceRGB and DeviceGray for objects that 
really should be taged with either sRGB or an equivalent CalRGB tag for RGB 
images and generic gray ICC profile or a CalGray tag for monochrome images. 
Dealing with these malformed PDFs causes all sorts of headaches. </P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0; -qt-paragraph-type: empty">&nbsp;</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; The obvious example occurs if I have a document that has an RGB image 
and</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; a CMYK image and I am printing to a CMYK device. In this case, the RGB</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; image will have to be transformed in some manner. That transformation</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; is under your control by specifying the desired default RGB source</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; profile to use. For the CMYK image, if you did not want the data</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; touched, you should make sure that your default CMYK source profile is</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; the same as your destination profile. The CMYK data will then pass</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
&gt; through unmolested.</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
Will adding a OutputIntent to a PDF/X (A/E) be honoured for DeviceXXX</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
objects by Ghostscript? Leonard pointed this requirement out [1].</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
It could then be used to pass through unmolested Cmyk or DeviceN to a</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
according configured printer.</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0; -qt-paragraph-type: empty">&nbsp;</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">Why 
not unmolested RGB and Gray as well? Any app that is smart enough to create PDF 
spool files with the OutputIntent set should be assumed to be smart enough to 
know what it is doing and the PDF spec should be fully honered. The issue with 
assuming a color space for DeviceXXX objects should, if possible, be limited to 
apps that don't know better. At this point there do not appear to be any CM dumb 
apps that can create PDF spool files with the OutputIntent set. This is 
definitiely true for Qt apps that are using the standard Qt PDF printing 
chain.</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0; -qt-paragraph-type: empty">&nbsp;</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">The 
issue here is retargeting. If the print system receives a spool file with an 
OutputIntent that is different from what the system would use normally that 
device and settings what should it do. One of the reasons for using DeviceXXX 
for objects along with an OutputIntent is to allow for retargeting. Under those 
conditions it is assumed that the DeviceXXX objects are in the OutputIntent 
color space. This is to allow for the output to be retargeted to a different 
device if needed using an OutputIntent --&gt; new device color space transform 
for all DeviceXXX objects. This means that setting the OutputIntent is also not 
a robust solution unless there is some way for the app creating the spool file 
to query the system for the devices profile so that it can use that for the 
OutputIntent. This could be done using Oyranos or colord but this means that the 
app creating the PDF needs to be not only aware of color but also needs to knwo 
what printer is being targeted and how to get it's default profile for the print 
mode being used.</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0; -qt-paragraph-type: empty">&nbsp;</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">The 
basic issue always come back to the fact that most of the apps on peoples 
machines are producing malformed PDF files that by default use DeviceXXX and do 
not set the OutputIntent. If we were following the PDF spec. and DeviceXXX data 
would be passed through to the printer unchanged with unpredictable results for 
many apps. In addition, if the DeviceXXX objects did not match the color mode of 
the printer (IE. DeviceRGB but printer is a CMYK only or is set to CMYK in CUPS) 
or if the PDF has more than one DeviceXXX type (like DeviceRGB and DeviceGray 
which is possible with the current Qt PDF code) then the print job would fail. 
The problems is users expect stuff to "just work" and following the 
specification will fail for some number of print jobs with most software 
currently being used. This means that we need to do things like get the Qt PDF 
code fixed to be inline with the PDF specification and work at getting good PDF 
code into other libraries that support printing like GTK+. This is going to take 
some effort.</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0; -qt-paragraph-type: empty">&nbsp;</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
kind regards</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0">&gt; 
Kai-Uwe Behrmann</P>
<P 
style="TEXT-INDENT: 0px; MARGIN: 0px; -qt-block-indent: 0; -qt-user-state: 0; -qt-paragraph-type: empty">&nbsp;</P>
<P>
<HR>
_______________________________________________<BR>openicc mailing 
list<BR>openicc@lists.freedesktop.org<BR>http://lists.freedesktop.org/mailman/listinfo/openicc</DIV></DIV></DIV></BODY></HTML>