Always Check Your Outlines

The photo below, which was recently taken by my long-term Adobe colleague Dirk Meyer in Beijing, serves as a not-so-gentle reminder that intersecting outlines can result in very obvious printing errors:

The photo depicts the two ideographs 出口, which represent the word meaning exit. The glyphs are obviously designed through the use of components whose outlines necessarily intersect, and under some circumstances—including the circumstance that led to the printing of this signage—can result in a negative or reverse fill.

In all seriousness, intersecting outlines, which are often referred to as intersections, come in a variety of flavors, and are considered to be a bug, at least for Type 1 and CFF (due to its Type 1 heritage) fonts. In most cases of intersections, two or more separate subpaths simply intersect. It is also possible for a single subpath to self-intersect, which is considered to be a much more serious issue. Most modern font editors have the ability to fix intersections. (Note that it is okay for two subpaths, or a single subpath, to touch as long as they do not overlap.)

Depending on which particular rasterizer is being used, intersecting outlines may or may not be manifested as depicted in the above photo. In fact, users have little or no control over which rasterizer is being used. Furthermore, in some environments, multiple rasterizers are used, and which particular one is invoked may depend on the point size of the glyph or the resolution of the output device.

Intersections are technically permissible for TrueType fonts, but depending on how they are printed or displayed, the problem as depicted in the above photo may occur. In most cases, it is easier to fix the font than to fix the environment in which the font is being used.

Speaking of checking your outlines—and as a way to provide some practical information for those who have read this far—AFDKO includes a very useful checkOutlines tool that can be used to check the integrity of the outlines for Type 1 and CFF fonts, to include both name- and CID-keyed ones. When invoked without any command-line options, this tool generates a “checkOutlines.log” file whose contents can be checked for particular outline-integrity issues, to include intersections. The checkOutlines tool has a rich set of command-line options, which can be explored by specifying the “-h” command-line option. If you choose to specify the “-e” command-line option, which is this tool’s “edit” mode for fixing outline-integrity issues, I urge you to also specify the “-o” command-line option with a new font filename as its argument, and to carefully check the results.

Comments are closed.