Short answer: A box (□ or ▯) where a symbol should be — nicknamed tofu — means the font you’re viewing it in doesn’t contain that glyph. The character in your file is correct; only the drawing is missing. Switch to a font that includes the symbol, or update your operating system, and it appears.
A black diamond with a question mark (U+FFFD) is a different and more serious problem — that one is encoding, and changing fonts won’t help. Garbled letters like é are a third problem again. All three are covered below.
Not sure what your box is supposed to be? Paste it into the Symbol Identifier tool — it reads the code point even when your font can’t draw it.

Three different failures that look like “broken text”
Work out which one you have before you fix anything. They have opposite causes.
| What you see | Name | What’s actually wrong | Is your text damaged? | Fix |
|---|---|---|---|---|
| ▯ □ empty box | Tofu / missing glyph | The font has no drawing for this character | No — the character is intact | Change font, or update OS |
| ▯ with tiny hex digits | Fallback glyph | Same as above, but the renderer is showing you the code point | No | Change font, or update OS |
| U+FFFD (black diamond, question mark inside) | Replacement character | The bytes couldn’t be decoded — e.g. UTF-8 read as Latin-1 | Possibly yes — the original may be gone | Fix the encoding at the source |
é ’ € | Mojibake | Text decoded with the wrong character set | Usually recoverable | Re-open / re-import as UTF-8 |
The distinction that matters: a box is cosmetic. A replacement character may be data loss.
What “tofu” actually is
Every font is a collection of drawings — one per character. No font covers all of Unicode’s ~150,000 characters; not even close. When a font is asked to draw a character it doesn’t have, it falls back to a placeholder glyph, formally called .notdef. In most fonts, .notdef is drawn as an empty rectangle.
That rectangle is where the nickname comes from: it looks like a block of tofu. (It’s also why Google’s Unicode-spanning font family is called Noto — “no more tofu.”)
The key point, and the reason you can stop worrying: your document is fine. The character is sitting in the file exactly as you typed it. You’re just viewing it through a font that can’t draw it. Copy it into a different app and it will appear.
The 60-second fix — start here
| Where you see the box | Do this |
|---|---|
| One app only (Word, Canva, Figma…) | Select the text → change the font → Fix 1 |
| Everywhere, or only new emoji | Update your OS or install Noto → Fix 2 |
| One website only | Usually the site’s problem, not yours → Fix 3 |
| Only in one language (Chinese, Arabic…) | Missing language font → Fix 4 |
| In a PDF, or only when you print | Font not embedded → Fix 6 |
| You just want to know what it is | Paste it into the identifier → Identify the box |
Fix 1: Switch to a font that includes the glyph
This is the fastest fix, and it works in any app with a font picker.
- Select the text containing the box.
- Open the font dropdown.
- Choose a font with broad Unicode coverage.
- The box becomes the symbol immediately.
Fonts with wide coverage:
| Platform | Good choices |
|---|---|
| Windows | Segoe UI Symbol, Segoe UI Emoji, Arial |
| macOS / iOS | The system font (SF Pro / Helvetica), Apple Symbols, Apple Color Emoji |
| Any platform | Noto Sans and Noto Sans Symbols — free from Google Fonts |
| Documents that must travel | Arial or Noto Sans — safe on nearly every machine |
A note on Arial Unicode MS: older guides still recommend it. Don’t rely on it. Microsoft stopped shipping it with Office as of Office 2016 and no longer services or updates it, so a modern install won’t have it. Use Segoe UI Symbol or Noto Sans instead.
In Microsoft Word. Select the text → Home tab → font dropdown → Segoe UI Symbol. If the box persists, the character isn’t in that font either; try Insert → Symbol → More Symbols, which shows you which fonts actually contain the character you want.
In Excel. Same idea, but check two things: the cell font and the theme font. Excel sometimes renders a cell in a theme font that differs from what the dropdown suggests. If a symbol boxes in one cell but not another, compare their fonts directly.
In Google Docs. Font dropdown → More fonts → search Noto Sans → add it → apply it to the affected text. Docs also renders through your browser, so a browser font problem can look like a Docs problem.
In Canva, Figma, Illustrator and other design apps. These are the worst offenders, because display and icon fonts often carry only a few hundred glyphs. If your headline font boxes on ₿ or →, that’s expected. Either switch that text to a Unicode-wide font, or accept that the display font can’t do it.
Fix 2: Update your OS, or install a Unicode font
Newer characters simply don’t exist in older fonts. The bitcoin sign ₿ was added in Unicode 10.0, released June 2017, at code point U+20BF. A system whose fonts predate that has no drawing for it and never will, until those fonts are updated.
If everything new boxes — new emoji, new currency signs, new symbols — the fix is at the system level, not the app level.
Windows. Windows Update installs updated system fonts alongside OS updates: Settings → Windows Update. To add coverage manually, download Noto Sans and Noto Sans Symbols from Google Fonts, right-click the .ttf files, and choose Install for all users.
macOS. Update via System Settings → General → Software Update. macOS ships with very broad symbol and emoji coverage, so a box on a Mac usually means Fix 1 — a narrow font in one app — not Fix 2.
iPhone / iPad. Settings → General → Software Update. This is essentially your only lever. Third-party font apps on iOS install fonts for supporting apps only (Pages, Keynote, Mail, and similar) — they do not add a system-wide fallback font, and they cannot change what the system uses to render a missing glyph. If a symbol boxes on an old iPhone that can no longer update, it will keep boxing.
Android. Settings → System → Software update. Emoji coverage depends heavily on the manufacturer’s skin and how recently it was updated — a three-year-old budget phone may never receive newer emoji. Note that WhatsApp, Telegram and Facebook ship their own emoji sets and render them independently of the system font, so an emoji can look perfect in WhatsApp and box in your SMS app on the same phone. That’s normal.
Chromebook. ChromeOS updates automatically and includes Noto by default, so tofu on a Chromebook is uncommon. When it happens it’s usually a webfont on a specific site (Fix 3). Be aware that ChromeOS has no system font installation — no Font Book, no Fonts control panel. You can install fonts inside the Linux container (Crostini), but they only apply to Linux apps, not to Chrome or Android apps.
Linux. This is where tofu is most common, because minimal installs ship minimal fonts. Install the Noto family:
bash
# Debian / Ubuntu
sudo apt install fonts-noto fonts-noto-color-emoji
# Fedora
sudo dnf install google-noto-sans-fonts google-noto-color-emoji-fonts
# Arch
sudo pacman -S noto-fonts noto-fonts-emoji
Then refresh the font cache with fc-cache -f -v and restart the app.
Fix 3: Boxes on a website
If you’re just visiting the site. Check whether the same symbol boxes elsewhere — paste it into a plain text editor. If it renders fine there, the problem is the site’s font stack or a webfont that failed to load, and there’s nothing to fix on your end. Reloading sometimes helps if the webfont simply didn’t download. If it boxes everywhere, go back to Fix 2 — it’s your system.
If it’s your site. A box means your font-family chain ran out of fonts before finding one with the glyph. Add a symbol-capable fallback at the end of the stack:
css
body {
font-family: "Your Brand Font", -apple-system, "Segoe UI", Roboto,
"Helvetica Neue", Arial,
"Noto Sans", "Noto Sans Symbols",
"Segoe UI Symbol", "Apple Symbols",
sans-serif;
}
Browsers walk that list left to right per character, so a display font at the front is fine — the browser quietly reaches further down the list for the glyphs your brand font lacks.
If a symbol is central to your design and must render identically everywhere, subset a small symbol webfont containing just those characters and self-host it. Don’t ship the full Noto Symbols file to every visitor; it’s large.
Fix 4: Boxes only in one language
If Chinese, Japanese, Korean, Arabic, Hebrew, Thai or Devanagari text shows as rows of boxes while English is fine, you’re missing that language’s font, not a symbol font. CJK fonts in particular are huge and are frequently absent from Linux installs and trimmed-down Windows images.
- Windows: Settings → Time & language → Language & region → Add a language. Adding the language pulls in its fonts.
- Linux: install the relevant Noto CJK package (
fonts-noto-cjkon Debian/Ubuntu). - macOS / iOS: these ship with broad CJK coverage; a box here is unusual and usually points to a narrow app font.
Fix 5: Emoji showing as boxes
Emoji are just Unicode characters, so the same rules apply — with two wrinkles.
Black-and-white emoji are not broken. Some apps (older terminals, some editors, plain-text contexts) deliberately render emoji as monochrome outlines using a text-presentation font. That’s a design choice, not a fault.
Multiple boxes where one emoji should be usually means a ZWJ sequence fell apart. A composite emoji like 👨👩👧 is really three emoji joined by invisible zero-width joiners. If the system doesn’t know that combination, it draws the parts separately — so you get several glyphs (or several boxes) where you expected one. Nothing is corrupted; the system just can’t do that combination yet.
Everything else: update the OS (Fix 2). Emoji fonts ship with the OS, so an old system permanently lags behind new emoji releases.
Fix 6: Boxes in a PDF, or only when you print
This one has a different cause: the font wasn’t embedded.
A PDF is supposed to carry its fonts inside it. If the creator exported without embedding, your reader substitutes a font it does have — and any glyph missing from that substitute turns into a box. Printers do the same thing: some print through their own internal fonts rather than the document’s.
- Reading the PDF: you can’t fix the file, but you can usually still copy the text out and view it elsewhere — the characters are intact.
- Creating the PDF: enable font embedding on export. In Word for Windows: File → Options → Save → Preserve fidelity when sharing this document → Embed fonts in the file. In Word for Microsoft 365 for Mac, the same setting lives under Word → Preferences → Save.
- Only breaks when printing: in the print dialog, look for Print as image or an equivalent option. It rasterizes the page and bypasses printer font substitution entirely.
Boxes with hex numbers inside
If your box contains four to six tiny characters (like 20BF or 1F600), that’s not a worse problem — it’s a more helpful one. The renderer has fallen back to a font that draws the missing character’s Unicode code point inside the box, so you can see exactly which character it’s failing to draw.
Those digits are a gift: 20BF is the bitcoin sign ₿, 2192 is the right arrow →. Look up the code point and you know exactly what the text is supposed to say — no guessing. The fix is identical to a plain empty box: get a font that has the glyph.
How to check whether a font actually has a symbol
Rather than guessing which font to try, check directly.
- Windows — Character Map: press Win, type
charmap, open it. Pick a font at the top, tick Advanced view, and search for the character. If it’s not there, that font cannot render it. Full stop. - macOS — Font Book: open Font Book, select a font, and use View → Repertoire to browse every glyph the font contains.
- Any platform: paste the character into a Unicode inspection tool. If the tool reports a valid code point but your font shows a box, you’ve confirmed it’s a font problem, not a data problem.
How to identify the box
Because the character is intact, the box is still copyable — and still carries its real identity.
- Select and copy the box.
- Paste it into the Symbol Identifier tool.
- The tool reads the underlying code point and tells you which character it is, even though your font is showing a rectangle.
This works for tofu only. If the character has already been replaced by U+FFFD, the original is gone and no tool can recover it from the page — you’d need to go back to the source file and re-import it with the correct encoding.
Troubleshooting checklist
| Symptom | Most likely cause | Fix |
|---|---|---|
| Box in one app only | Narrow font in that app | Change the font → Fix 1 |
| Boxes in every app | System fonts out of date or missing | Update OS / install Noto → Fix 2 |
| Only new emoji box | Emoji font predates those emoji | Update OS → Fix 2 |
| Boxes on one website only | Site’s font stack, or a failed webfont | Not your problem → Fix 3 |
| Boxes only in Chinese/Arabic/etc. | Missing language font | Install it → Fix 4 |
| Several boxes where one emoji should be | Unsupported ZWJ sequence | Update OS → Fix 5 |
| Boxes in a PDF or on paper | Font not embedded | Re-export with embedding → Fix 6 |
| Box with hex digits inside | Missing glyph, code point shown | Same as tofu — and the digits tell you what it is |
| U+FFFD (diamond + question mark) | Encoding, not fonts | Fix at the source; fonts won’t help |
é ’ garbled letters | Wrong character set on decode | Re-open / re-import as UTF-8 |
Frequently Asked Questions
Why is a symbol showing as a box?
The font you are using does not include that symbol, so it displays a placeholder box instead. The character itself is usually correct – switching to a font that supports the symbol will typically fix the problem.
What is the difference between a box (▯) and a question-mark diamond (�)?
A box (▯) usually indicates a missing glyph. The character is still intact, but the current font cannot display it.
A question-mark diamond (�), also called the replacement character, indicates an encoding problem. The original character could not be decoded correctly and may have been lost.
How do I fix a box in Word or a design app?
Select the affected text and change it to a font with broad Unicode support, such as Segoe UI Symbol or Arial on Windows, the default system font on macOS, or Noto Sans on any platform.
Why do emoji or new symbols like ₿ show as boxes?
Newer symbols and emoji require fonts and operating systems that include their glyphs. Older fonts or older versions of Windows, macOS, Linux, or Android may not support them. Updating your operating system or installing a modern font family such as Noto usually resolves the issue.
How do I find out what the box actually is?
Copy the box character and paste it into a Unicode or symbol identification tool. The tool can identify the underlying Unicode code point and tell you which character it represents, even if your current font cannot display it.
The box has hex numbers inside it. What does that mean?
A box with hexadecimal numbers inside is a placeholder glyph showing the character’s Unicode code point. The numbers identify exactly which symbol the application is trying to display, making it easier to determine whether the issue is a missing font or another display problem.
Recap
- A box (▯) means the font lacks the glyph. Switch fonts or update your OS and the symbol appears — the character in your file was correct the whole time.
- A U+FFFD replacement character means the encoding broke, and the original character may genuinely be lost. Changing fonts will not bring it back.
- Garbled letters like
émean text was decoded with the wrong character set — usually recoverable by re-importing as UTF-8. - To identify any box, copy it and paste it into the Symbol Identifier tool.
Written by Igor R. Tested on Windows 11, macOS, iOS, Android, and Linux. Last updated June 2026. Symbol code points follow the Unicode Standard.