Overprint
Overview
Overprinting is a technique commonly used by PDFs that are destined for print. When an object is not set to overprint, the downstream RIP will remove all color beneath the object (it's knocked out). This is fine for simple RIPs and jobs, since it reduces the complexity of separation generation.
It can, however, cause issues with black text. In this scenario, the black text knocks out all the background color beneath it. This means that when printed, the head alignment and registration needs to be perfect; otherwise you'll see small white borders around the text. When switching the text to overprint, the black is printed on top of the background color, removing any potential registration issues.
The image above shows two images: The top image uses overprint on the "g" character, which shows that the red background is not knocked out. The bottom image does not use overprint, resulting in a knockout of the red background.
Setting Overprint
Setting overprint in Mako requires use of the "DeviceParams" property. This can be set on any node, but it only applies to that specific node (and not to its children). Therefore, it makes most sense to set it on char path groups, paths and glyphs.
The "DeviceParams" property is a bitmask that toggles the application of overprint and stroking commands.
The following code shows how to set the bitmask to turn on overprint for the node.
enum eDeviceParameters
{
eDPOverprintMode = 1,
eDPOverprintFill = 2,
eDPOverprintStroke = 4
};
void setOverprint()
{
// Find a node...
node->setProperty("DeviceParams", eDPOverprintMode | eDPOverprintFill);
}
enum eDeviceParameters
{
eDPOverprintMode = 1,
eDPOverprintFill = 2,
eDPOverprintStroke = 4
};
void setOverprint()
{
// Find a node...
node.setProperty("DeviceParams", new PValue((int)(eDeviceParameters.eDPOverprintMode | eDeviceParameters.eDPOverprintFill)));
}