(v13) The OverprintProcess parameter
This page applies to Harlequin v13.1r0 and later; both Harlequin Core and Harlequin MultiRIP.
Overprinting is controlled by the Level 2 operator setoverprint
, which takes a Boolean value. true setoverprint
turns on overprinting, which means that when rendering an object which contributes no color to the separation being rendered, nothing is done. false setoverprint
, on the other hand, draws the object in white to produce a knockout.
Because some jobs did not overprint as expected in an early version of the RIP, the OverprintProcess
parameter was changed to follow the published specifications of OPM
(PDF) and setoverprintmode
(PS).
All other overprint parameters are unaffected.
For more information see the “ColorPro Appendix D”. Also note that setoverprintmode
, an Adobe option is documented in an Adobe Technote post PostScript Level 3.
The effect of this operator is clear when dealing with spot colors. Consider the following case where a spot-colored triangle is rendered on top of a processor spot-colored circle.
original picture separations
false setoverprint
true setoverprint
Effect of setoverprint on separations
However, the situation is more complicated where we have an object to be rendered in a combination of process colors (specified with setcmykcolor
), but one component—the cyan, say—happens to be zero. Shall we put a knockout in the cyan separation, or shall we do nothing to it (overprint)?
The Level 1 separation conventions implied that setcmykcolor
would always knock out in this case. To allow for overprinting, they specified a separate operator or procedure, setcmykoverprint
, which would be used to overprint an individual component by setting the color to –1
rather than 0
.
In practice this was never adhered to. All separator programs that we are aware of always overprinted if setoverprint
was true
. That is, they treated a zero operand to setcmykcolor
—or indeed a negative operand, which was just rounded to zero—as meaning overprint (if overprinting was turned on). setcmykoverprint
was seldom used, and is not specified in Level 2. In the Level 2 conventions, this has been made the "official" behavior: overprinting is controlled simply by use of the setoverprint
operator.
The demise of setcmykoverprint
led to a loss in functionality. For example, consider the following piece of code:
1 1 1 1 setcmykcolor
% draw circle (in solid 4-color black) true setoverprint
-1 0.5 0.5 setcmykoverprint
% draw triangle (in brown)
The intention was that this should knock out the triangle in Cyan, overprint in Magenta, and paint 50% in Yellow and Black, as in the next diagram.
Example separations as intended
Since setcmykcolor
rounds negative operands to zero, it cannot be used in this way to control the process separations individually: they must all overprint (with true setoverprint
) or all knock out (with false setoverprint
). However, for some custom applications, it is important to be able to control the separations individually. The Harlequin RIP resolves this problem with the user parameter OverprintProcess
, an extension to the setcmykcolor
operator. (See table.) If OverprintProcess
is true
, the Harlequin RIP behaves like other separators and always overprints when setoverprint
is true
. If OverprintProcess
is false
, then setcmykcolor
has the behavior that was originally intended for setcmykoverprint
: it knocks out with a 0
operand, and overprints with a –1
operand (if setoverprint
is true
).
As an example, consider the following piece of code:
1 1 1 setcmykcolor
% draw circle true setoverprint
0 -1 0.5 0.5 setcmykcolor
% draw triangle
If OverprintProcess
is false
, the output from this is as in the previous diagram. If OverprintProcess
is true
(the default), it (like other separators) overprints in both cyan and magenta:
Example separations with OverprintProcess
set true