(v13) Operators controlling separations, colorants, and color channels
This page applies to Harlequin v13.1r0 and later; both Harlequin Core and Harlequin MultiRIP.
Operators are available that affect the creation, ordering, and removal of separations. For composite output, these operators control colorants and color channels. These operators are the preferred method of manipulating separations; other methods are deprecated.
For all these calls, you can supply name as a name or as a string. Aliases are supported so that, for example, application or user-generated names like Hex-C and Hex-Cyan can both be associated with the cyan colorant of a six-color system but kept distinct from Cyan in DeviceCMYK.
setbackgroundseparation
The setbackgroundseparation operator is defined in internaldict, and is a non-standard extension to the PostScript language.
name
setbackgroundseparation
Marks all instances of the colorant as background separations (as defined in (v13) Using background separations for crop and other marks). It is usually more convenient to use the /Background key to addtoseparationorder. When separations are being imposed on the same sheet (that is, x or y is not 0 (zero)), background separations give you the ability to add crop marks, color bars, annotation, registration marks, and other arbitrary marginalia, independent of the original job, with some elements different and others in common over all the separations.
removefromseparationcolornames
The removefromseparationcolornames operator is defined in internaldict, and is a non-standard extension to the PostScript language.
name removefromseparationcolornames -
The colorant given by name is removed from the colorants known to the interpreter. Any objects drawn in this colorant or an alias remain but are not rendered (unless the separation is reintroduced). Subsequent calls to, for example, DeviceN color spaces using any aliases for the removed colorant are diverted through the tint transform procedure.
If name is /All or (All), all colorants are removed.
There is no single procedure to remove a color from the separation order and keep it taken into account as a separation color name. This requires calls to removefromseparationcolornames and then addtoseparationcolornames.
addtoseparationcolornames
The addtoseparationcolornames operator is defined in internaldict and is a non-standard extension to the PostScript language.
name
addtoseparationcolornames -
Treats name as if it had been an entry in SeparationColorNames (though this procedure does not actually alter the value in currentpagedevice), so that subsequent uses of the colorant in Separation or DeviceN color spaces do not cause the associated tint transform to be used. However, the separation is not actually rendered unless you also use addtoseparationorder (in the same way that it would not be rendered when not present in the SeparationOrder array).
addcolorantalias
The addcolorantalias operator is defined in internaldict and is a non-standard extension to the PostScript language, found in the RIP from version 13.2r1 onwards.
alias colorant
addcolorantalias -
Adds alias to the list of colorants known to the interpreter, which is then treated as equivalent to colorant when used in /Separation or /DeviceN color spaces. This operator is equivalent to adding an alias in the Names array of entries in Colorants dictionaries (see the Harlequin Core SDK Developer’s Guide).
Prior to this operation, alias must not be known to the interpreter. And colorant must be either present in SeparationColorNames (explicitly or implicitly), or added using addtoseparationcolornames. Otherwise an error is thrown.
Aliases are lost on the next call to setpagedevice; we therefore recommend that you use this operator within an Install procedure. For example:
<<
/Install [
currentpagedevice /Install get /exec load {
(NewAlias_1) (ExistingColorant_2) 1183615869 internaldict /addcolorantalias get exec
(NewAlias_2) (ExistingColorant_2) 1183615869 internaldict /addcolorantalias get exec
} bind /exec load
] cvx
>> setpagedevice
addtoseparationorder
The addtoseparationorder operator is defined in internaldict and is a non-standard extension to the PostScript language.
name
addtoseparationorder -
name
dict
addtoseparationorder -
Prepares a color to be rendered, where that color is already known to the interpreter (possibly through use of addtoseparationcolornames or the Add key in the SeparationDetails dictionary in the page device). The position of the new separation is at the end of all existing separations if there is no dict argument, or derived from the dictionary if it is supplied; see below.
The dictionary given as an optional dict parameter to addtoseparationorder controls the relative ordering of separations, though using the generalized term frame. For separations, the frame refers to the sheet; for composite output (but not pixel-interleaved output), the frame refers to the channel.
For example, you can say “insert separation after Cyan” or “add a new instance of Magenta on the same sheet where it already exists”.
With no dictionary, the named colorant is added at the end of existing frames in the x, y position 0, 0. This is the same operation as the automatic addition of a separation on setcolorspace, in response to the Add key in the SeparationDetails dictionary in the page device.
The dictionary takes the keys as described below in Base parameters for addtoseparationorder.
See also (v13) Operator to report current separations for details of currentseparationorder.
Base parameters for addtoseparationorder
The following keys may be provided in the dictionary supplied to addtoseparationorder:
addtoseparationorder x parameter
number Default: 0
The x translation of the separation, in the normal right-handed PostScript coordinate system, when rendered on the frame. It is given in points and assumed to be 0 (zero) if the key is omitted or there is no dictionary.
x is exactly equivalent to the first array element in the triples supplied as the now-deprecated /Positions key in extended halftone dictionaries. The same conditions apply as in this earlier method: All marks on the separation must fit on the frame once translated.
x and y are both lower case keys as supplied to addtoseparationorder, but take care when using this operator and currentseparationorder, which uses upper case.
x and y should not be used in combination with ExtraOrientation in the page device being set to any value other than 0.
addtoseparationorder y parameter
numberDefault: 0
The y translation of the separation when rendered on the frame. It is given in points and assumed to be 0 (zero) if the key is omitted or there is no dictionary. (The coordinate system and the Note just given for x apply also to y, except that y is equivalent to the second array element in the triples.)
addtoseparationorder Frame parameter
integer or name or string
An integer is taken as the position in sequence of an existing frame (separation sheet or composite channel) in the existing order, counting from zero. Together with InsertBefore, the frame identified is used as a basis for positioning the new frame. (Once a frame has been inserted before an existing frame, the sequence is renumbered as required.)
A name or string is taken to be the name of a colorant already represented in the frame sequence. If you give a name, the first occurrence of that name in the sequence is found and used. If there may be multiple occurrences and you wish to use a second or subsequent frame, you must use an integer operand.
If the name cannot be found, the RIP reports a rangecheck error with the descriptive text colorant name.
addtoseparationorder InsertBefore parameter
boolean Default: false
A value of true means insert the new frame before the one given by Frame. false means insert the new frame after Frame.
If there is no InsertBefore key or no dictionary, the new frame is added after all existing frames. If there is no InsertBefore key, but Frame is given, the colorant is assigned to the existing frame.
If InsertBefore is given but Frame is not given, the RIP reports a rangecheck error with the descriptive text InsertBefore given but not Frame.
addtoseparationorder Background parameter
boolean Default: false
Indicates if the separation is a background separation (as defined in (v13) Color separation). When separations are being imposed on the same sheet (that is, some x or y is not 0 (zero), background separations give you the ability to add crop marks, color bars, annotation, registration marks and other arbitrary marginalia, independent of the original job, with some elements different and others in common over all the separations.
For more information and a code example see (v13) Example: registration marks.
addtoseparationorder ColorantType parameter
name
Default: Normal
Sets the colorant type, which determines how the colorant is trapped. This user parameter has exactly the same semantics as the ColorantType key in the ColorantDetails dictionary, described in section 6.3 of [RB3].
addtoseparationorder NeutralDensity parameter
number
A number representing the colorant’s capacity to absorb light, used to compare colorants when trapping. This user parameter has exactly the same semantics as the NeutralDensity key in the ColorantDetails dictionary, described in section 6.3 of [RB3].
addtoseparationorder Dynamic parameter
boolean Default: false
A value of true means that the colorant should be handled as a dynamic separation, which means that it is used for the current page only. This is useful for multipage jobs that use spot colors on some pages only, as described in (v13) Dynamic control of separation production.
addtoseparationorder OverrideScreenAngle parameter
boolean Default: false
If true, DefaultScreenAngle must be present and causes the angle to override any set by the job for this colorant. This replaces the system parameter OverrideAngle, which was only appropriate for a single colorant. If true, and there is override information in the DefaultScreenAngles), the angle specified by DefaultScreenAngle must match the angle in DefaultScreenAngles for colorant. Typically, either all or none of the angles would be overridden, though DefaultScreenAngles allows them to be controlled independently. If OverrideScreenAngle is false, the value of DefaultScreenAngle is not used.
addtoseparationorder DefaultScreenAngle parameter
integer or real Default: false
The angle for the screen for that colorant (as a real number of degrees, as in the angle operand to setscreen).
If OverrideScreenAngle and DefaultScreenAngle are missing, override behavior may come from the DefaultScreenAngles dictionary or the OverrideAngle system parameter.
addtoseparationorder object keys
The following object keys are available and can be used to process objects based on their graphic properties. See (v13) Example: Generating CT, LW, and mask channels for an example of their use.
Vignette | name | This refers to any page objects that are likely to be vignettes. For example, it includes objects drawn with the |
Picture | name | This refers to any page objects detected as being images (except images of size |
Text | name | This refers to text objects drawn in a solid color, whether from an uncached Type 3 character or a cached character. |
Other or Linework | name |
|
Default | name | This refers to any page objects not given a separate entry in the dictionary given to |
The object key /NamedColor may also be used to control the processing of Linework objects that use named spot colors.
The values given to these object keys indicate what operation is performed for objects of the type indicated by the key. The values can be one of the following:
| Ignore these objects in constructing this separation. |
| Create a mask from the objects, in this separation. In one-bit deep separations, the value |
| Render the object in its natural color, for this separation. |
| Knock out this object from this separation. The values |