CMM hints
This page applies to Harlequin v13.1r0 and later; both Harlequin Core and Harlequin MultiRIP
As from Harlequin 12.1r2 the alternate CMM array may optionally include a fifth item; a dictionary containing additional configuration items or ‘hints’ to the CMM interface.
[ /CMM <name> <input-color-space> <output-color-space> <hints> ]
CMYKPassThrough
From Harlequin v12.1r2 the optional CMYKPassThrough hint is defined. This hint may be set to true if it is known that the selected transform will not change CMYK values if only CMYK color values are non-zero, i.e. if non-CMYK values are all zero. Setting this hint will allow the RIP to avoid some processing steps and therefore increase throughput. It should only be set to true if there is confidence that CMYK values are unchanged, although the RIP will perform some validation and turn the hint off if the validation fails. An example CMM color space that adjusts the device spots by applying a gamma, but leaving CMYK unchanged, could be configured as in this example:
<<
...
/SeparationColorNames [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet)]
/SeparationOrder [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet)]
...
>> setpagedevice
(MyAlternateCMM) setalternatecmm
/InputColorants [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet)] def
/OutputColorants [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet)] def
<<
...
/NextDevice <<
/InputColorSpace [
/CMM
(SpotAdjust)
[ /DeviceN InputColorants /DeviceCMYK {pop pop pop pop} ]
[ /DeviceN OutputColorants /DeviceCMYK {pop pop pop} ]
<<
/CMYKPassThrough true
>>
]
>>
...
>> setreproduction]
IndependentCMYK
From Harlequin v14.0r2 the optional IndependentCMYK hint is defined. It is intended for use when the CMM color space cannot use CMYKPassThrough because the values of CMYK may be changed. Use of the hint requires that the values of individual CMYK components are independent of the value of any other CMYK component, (i.e. there will be no "color mixing" between CMYK channels). IndependentCMYK should only be set to true if there is confidence that this is the case, although the RIP will perform some validation and turn the hint off if the validation fails
The performance benefit of setting the IndependentCMYK hint is significant, but not as great as using CMYKPassThrough, which should continue to be used when that is appropriate. In addition, where the CMM colorspace is such that the IndependentSpots hint also applies, that should be used alongside the IndependentCMYK hint.
The method for setting the IndependentCMYK hint is identical to the method for setting the CMYKPassThrough hint as shown in this example:
<<
...
/SeparationColorNames [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet)]
/SeparationOrder [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet)]
...
>> setpagedevice
(MyAlternateCMM) setalternatecmm
/InputColorants [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet)] def
/OutputColorants [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet)] def
<<
...
/NextDevice <<
/InputColorSpace [
/CMM
(SpotAdjust)
[ /DeviceN InputColorants /DeviceCMYK {pop pop pop pop} ]
[ /DeviceN OutputColorants /DeviceCMYK {pop pop pop} ]
<<
/IndependentCMYK true
>>
]
>>
...
>> setreproduction]
IndependentSpots
From Harlequin v13.0r0 the optional, IndependentSpots hint is defined. It is intended to be used to identify spot colorants that are transformed independently of all other process or spot colors in the custom color space. Each of the colorants identified may be transformed by the CMM, but only if they are unaffected by other colorants. If a second spot name in the job maps onto the same device colorant as an independent spot, then it, too, may be identified as an independent spot.
Marking spots as independent allows the RIP to avoid some steps in managing overprints in particular, increasing throughput. This will help most often with white and varnish overprints, where it is common to paint them on top of other artwork and set them to overprint in the PDF.
All independent spot names must also be present in SeparationColorNames; they may be omitted from SeparationOrder if they’re not device colorants.
The value of IndependentSpots should be an array of spot names, as strings or name objects such as in this example, which extends the example for IndependentCMYK:
<<
...
/SeparationColorNames [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet) (Gold) (White)]
/SeparationOrder [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet) (Gold)]
...
>> setpagedevice
(MyAlternateCMM) setalternatecmm
/InputColorants [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet) (Gold) (White)] def
/OutputColorants [(Cyan) (Magenta) (Yellow) (Black) (Orange) (Violet) (Gold)] def
<<
...
/NextDevice <<
/InputColorSpace [
/CMM
(SpotAdjust)
[ /DeviceN InputColorants /DeviceCMYK {pop pop pop pop} ]
[ /DeviceN OutputColorants /DeviceCMYK {pop pop pop} ]
<<
/IndependentCMYK true
/IndependentSpots [/Gold (White)]
>>
]
>>
...
>> setreproduction
Note: in the above example, if the conditions for the CMYKPassThrough hint apply, then that should be used instead of the IndependentCMYK hint in order to obtain best performance.