Display of Unsupported Characters
Q: How should characters be displayed if
the rendering system doesn't fully support them?
A: There are three main options, depending on the type of character involved. Some should not display at all (zero-width invisible characters);
some should display as a visible (but blank) space; and some should be displayed with one or more generic glyphs, often referred to as "missing glyphs" or a
".notdef glyph".
Q: Which characters should be displayed as
a visible but blank space?
A: This is the easy one: all the characters that have the White_Space property, also generically known as
“whitespace characters”. This set
includes SPACE, of course, but also such characters as the tab control character, NO-BREAK SPACE, LINE SEPARATOR, and so on. For the full list, see the White_Space
values in PropList.txt.
Q: Which characters should be displayed as
invisible, if not supported?
A: All default-ignorable characters should be rendered as
completely invisible (and non advancing, i.e. "zero width"), if not
explicitly supported in rendering. These include:
cursive joiners (U+200C ZWNJ, U+200D ZWJ)
bidirectional format controls (e.g. U+200E LEFT-TO-RIGHT MARK)
the soft hyphen (U+00AD SOFT HYPHEN)
word joiners (U+2060 WORD JOINER, also U+FEFF ZWNBSP)
the zero width space (U+200B ZERO WIDTH SPACE)
invisible math operators (e.g., U+2061 FUNCTION APPLICATION)
Jamo filler characters (e.g., U+115F HANGUL CHOSEONG FILLER)
variation selectors
Q: Does this include unsupported variation selector sequences?
A: Yes,the expected rendering behavior for the sequence of character plus a variation selector (C+VS) is
specified as follows:
Q: Which characters should be displayed with a
missing glyph, if not supported?
A: All characters other than whitespace and default-ignorable
characters.
Note that recommended practice is to provide different
missing glyphs for characters to give the user some indication of the
type of character which is missing a glyph. For more information see the
text under "Interpretable but Unrenderable Characters" in
Section 5.3, Unknown and Missing Characters, and see the
Last Resort Font.
Q: How does the recommendation not to give any visible display for a subset of default ignorable code points affect font design?
A: Fonts are really best viewed in the context of a whole rendering system, since other parts of that system may handle various aspects of rendering.
Where a font is being designed for a rendering system that does not handle invisible characters (such as variation selectors), then the best glyph for them — in the
absence of other support — is a zero-width invisible glyph.
Q: Does that mean that a font can never display one of these characters?
A: No. Rendering systems may also support special modes such as
“Display Hidden”, which are intended to reveal characters that would
not otherwise display. Fonts can contain glyphs intended for visible display of default ignorable code points that would otherwise be rendered invisibly
when not supported.