Tofu

Illustration: James Graham .
Tofu is the placeholder symbol that appears when a character cannot be displayed because the font in use doesn’t support it (not existing in the font). Instead of the intended glyph, the reader sees a small rectangle—often empty or filled with a cross, question mark, or other marker.
THE NAME
The word tofu comes from the visual resemblance of the small blank rectangles to blocks of tofu.
AVOIDING TOFUS
To avoid showing a tofu, operating systems implement font fallback mechanisms to replace the missing glyph. If no suitable glyph is found in any available font, then the tofu placeholder is displayed. Sometimes, an entire script can be missing, resulting in a display of long lines of tofus.
Several initiatives exist to reduce the display of tofus. Apple developed the Last Resort font (first available in Mac OS 8.5 in 1998), which displays symbols representing the script and Unicode blocks of missing characters. This helps users to identify which character are missing. Adobe and Google created the Noto (named from “no tofu” expression, first published in 2013) typeface family to provide a coverage for all existing Unicode characters.
FONT ENGINEERING HINT
This fallback system is layered and can sometimes be confusing:
• tofu is what the users see; .notdef is the name of the glyph in fonts. As per the OpenType specifications, every font must contain a .notdef glyph as the first glyph (index 0). Since this glyph isn’t a character, it is not assigned a Unicode code point and therefore doesn’t appear in the cmap (Character-to-Glyph Mapping) table. If a shaping or rendering engine can’t find a glyph for a requested code point in the cmap, it falls back to glyph index 0.
• some environments always substitute the .notdef glyph from the selected font. Others instead use a system-supplied .notdef from a dedicated fallback font (like the Last Resort font), so the tofu can always appear with a consistent design in that environment.
• certain applications (like Adobe InDesign) bypass system font fallback entirely and always display the .notdef glyph from the active font when a glyph is missing.