Why fonts don't include every character
Unicode defines well over 140,000 characters across every writing system, historical script, and symbol set in active use. No font includes glyphs for all of them — most fonts are deliberately scoped to the scripts and symbol ranges their designer expected to be used, and skip the rest to keep the font file a reasonable size. A rare mathematical symbol, an uncommon accented letter from a minority language, or a specialized technical symbol can easily fall outside that scope even in a large, well-regarded font family.
The three ways this shows up
An empty rectangle ("tofu"): the operating system or browser has no glyph anywhere for this character, in this font or any fallback font it tried.
A box containing the hex code point: the same missing-glyph situation, but the rendering system shows exactly which character is missing — a box with "2205" means U+2205, the empty set symbol — genuinely useful for diagnosis.
A generic fallback symbol (a question mark, or an unrelated character): older or more limited rendering systems substitute a placeholder rather than showing a box. Functionally the same missing-glyph problem, just a less informative fallback. If your keyboard is producing symbols unexpectedly, check our keyboard typing symbols instead of letters guide.
How to actually fix it
Switch to a font with broader Unicode coverage. This is the real fix, not a workaround. Fonts specifically built for broad coverage — Noto Sans (explicitly designed to cover as much of Unicode as possible), Arial Unicode MS, or DejaVu Sans — include glyphs for a dramatically wider range of characters than a typical design-focused font.
Confirm it's actually a font issue, not a data issue, before switching fonts. Paste the character into a plain, unstyled text field (a basic text editor, or our Unicode inspector). If it displays correctly there but not in your original context, it's confirmed as a font coverage gap, not corrupted data.
For web pages you control: declare a font-family fallback stack that ends in a broad-coverage font, so browsers that can't render a character in your primary font fall through to one that can.
Why this differs from an encoding bug
An encoding mismatch (covered in our Word-to-website guide) produces the wrong character — visible, readable, but not what you intended. A missing glyph produces no character at all, just a placeholder, because the correct character was received but the font has nothing to draw for it. Checking the character's code point in a tool like our Unicode inspector tells you immediately which situation you're in, since a font-coverage gap still reports the correct code point even though it can't display it.
