“All” & “None” colorants and Mako
📌 Overview
The PDF Reference defines All or None with the following description:
The special colorant name All refers collectively to all colorants available on an output device, including those for the standard process colorants. When a Separation space with this colorant name is the current color space, painting operators apply tint values to all available colorants at once. This is useful for purposes such as painting registration targets in the same place on every separation. Such marks are typically painted as the last step in composing a page to ensure that they are not overwritten by subsequent painting operations.
The special colorant name None never produces any visible output. Painting operations in a Separation space with this colorant name have no effect on the current page.
The None color would seem to have little purpose, since page objects colored with it will by definition be invisible. However, they have properties that can be exploited. An example of this is to treat them as “template” objects, as a reference to position and/or size new content added to an existing PDF, possibly for VDP applications.
📗 Instructions
In Mako, these colors can be created as you would any other spot color, and the simplest way to do that is to create a DeviceN color with a single colorant. When Mako writes out a PDF, such a spot color is written as a Separation color.
You still need to define an alternate color space when defining the All or None DeviceN colors, but these are unlikely to be used. While it is possible to define an All colorant in grayscale, it would make little sense as its purpose is to paint on all separations, and a grayscale image by definition has only one.
The following example shows these activities in action to produce a single-page PDF with color chips in various colors:

⌨️ Sample Code
This example creates this PDF from scratch, making use of the All colorant to show how it is created, and its effect on a rendered page. Below are some code snippets in C++ and C#. For the full implementation, see AllColorantExample.cpp, AllColorantExample.cs.
C++ | C# |
|---|---|
CPP
CPP
|
C#
C#
|
🎨 Rendering examples
Using Adobe Acrobat Professional's Output Preview, we can see clearly the effect of the All colorant.
The first image shows the page created by the example code as displayed by Acrobat. The border around the colored boxes is drawn with the All colorant.
After opening the Print Preview panel, the process and spot colors are listed. Note that the All colorant is not listed with the other spot colors. Acrobat and other PDF renderers such as Mako recognize the colorant names All and None and treat them differently, as described above.

Next, we turn off the process colors and the second spot color. The graphic is not shown in its color, because when Acrobat displays a single separation in this view, it shows it in grayscale. The first spot color remains, and the All colorant is also drawn on the Rot separation. This may seem counter-intuitive, as the All colorant is defined only in terms of CMYK. However, the PDF spec says All paints on all separations, thus the result you see here.

This final image shows the effect of showing the Cyan and Yellow plates only. When Acrobat displays more than one separation in this view, it shows them in their own color. As before, the All colorant is drawn on these separations, and mixes to produce green.

☑️ Conclusion
Understanding the use of All and None colorants in Mako is crucial for effective PDF rendering and manipulation. The All colorant allows for painting across all separations, making it ideal for registration marks, while the None colorant can be used for invisible template objects. By following the provided instructions and sample code, users can implement these colorants in their projects, enhancing their control over PDF output.
📚 Additional Resources
If you need additional help, see our API documentation for detailed information on class/method usage, or raise a support ticket via our customer portal.