Created Date: 16 Mar, 2022 15:12
Last Modifed Date: 07 Jun, 2022 11:28


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 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) (ExistingColorant) 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 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 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 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 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 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 shfill operator, and images defined with image or colorimage operators, if they are of more than one bit per pixel color depth, and of size 1xN or Nx1.

Picture

name

This refers to any page objects detected as being images (except images of size 1xN or Nx1, taken as being vignettes; or one-bit deep images of other sizes, taken as being linework) or labeled as /Picture with the setcolorrenderingintent operator.

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

Linework objects are those which are not Pictures, Vignettes, or Text. The Text and Linework object keys do not include text or linework which was used as a clipping mask, or was filled with a pattern color. The contents of the pattern cell or shading determine how such objects are rendered (parts of the pattern cell may be separated in different ways. For example, a pattern cell containing an image and a fill would have the image treated as Picture and the fill as Linework).

Default

name

This refers to any page objects not given a separate entry in the dictionary given to addtoseparationorder. The action given for this key is thus a default used for all page objects not given some specially defined treatment.

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

Ignore these objects in constructing this separation.

Mask

Create a mask from the objects, in this separation. In one-bit deep separations, the value 1 represents a mask and 0 represents an unmasked pixel. In eight-bit deep separations, the value 255 is a mask and 0 represents an unmasked pixel. For 10-bit RLE output, the mask value is 1023 and 0 is again an unmasked pixel but it is less meaningful to be using RLE this way.

Render

Render the object in its natural color, for this separation.

Knockout

Knock out this object from this separation.

The values /Render and /Mask may not be used together in the same separation. Pixels may come from more than one object type. Overprinted or transparent objects have attributes from all of the objects composited together. The way such objects and pixels are treated depends on the priority of their object keys. The highest priority object key that was explicitly set in addtoseparationorder is tried first. If none of the applicable object keys were explicitly set, the highest priority object key uses its default value. The priority order, from highest to lowest, is Picture, Vignette, Text, Linework, Other, NamedColor.