Skip to main content
Skip table of contents

(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:

TEXT
            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:

TEXT
              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

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.