Why Fancy Text Shows as Boxes (and How to Fix It)
You paste a style, it looks perfect, and someone replies that they see squares. Nothing is broken — here is the mechanism behind it, and how to choose styles that survive.
In short
The empty rectangles are called tofu. They appear when a device is asked to display a character that none of its installed fonts contain. The text is not corrupted - Unicode assigns each character a number, but fonts supply the drawings, so a device without the right font has nothing to draw. The sender never sees the problem because their own device has the font. Using long-established ranges such as bold, italic, script and monospace avoids it.
- Empty boxes are called tofu - a missing glyph, not corrupted text.
- Unicode assigns character numbers; fonts supply the drawings. Missing font, no drawing.
- The sender cannot see the problem, because their device has the font.
- Older Android devices and bundled in-app fonts are the most common causes.
- Bold, italic, script, fraktur, outline and monospace render effectively everywhere.
The boxes have a name
The empty rectangle is called tofu, after its resemblance to a block of it. It is what a text renderer draws when it is asked to display a character that none of the available fonts contain. It is a fallback, not an error — the system is telling you honestly that it knows a character belongs there but has nothing to draw.
Some platforms draw a rectangle containing the character's hex code instead. That is the same situation, just a more informative version of it.
Why the sender never sees the problem
This is the part that causes most confusion. Unicode assigns every character a number; fonts supply the drawings. Those are two separate things. Your device has a font that covers the range you used, so you see a glyph. The recipient's device does not, so they see tofu — and neither of you can see what the other sees.
So the text is not corrupted in transit. The exact same characters arrived; the receiving device simply has no picture for them. Copying the text back from their device and pasting it into a converter would show the correct letters underneath.
The four common causes
An older or budget Android device
By far the most common cause. Android's default font set has grown over the years; devices that shipped years ago, and low-cost devices with trimmed-down system images, are missing the newer decorative ranges. Enclosed alphanumerics and the more obscure pseudo-alphabets are the usual casualties.
Windows and less common scripts
Windows covers Latin and the mathematical alphabets well, but is patchier with decorative marks borrowed from other writing systems. Frames built from Javanese or Tibetan marks — the ornate `꧁ ꧂` style popular in gaming names — often show as tofu on a desktop while looking perfect on a phone.
The app is using its own font
Some apps and games bundle a font rather than using the system one, usually to keep their look consistent. A bundled font almost always covers far less of Unicode than the system stack, so text that renders in your browser can fall apart inside a game's chat box.
The platform is stripping it deliberately
Different from tofu, but easily confused with it. Many platforms filter combining marks — the ones that create glitch text — because stacked marks overflow their layout. There you will see the text flattened or rejected rather than boxed.
How to choose styles that survive
There is no way to guarantee a character renders on a stranger's device, but support correlates strongly with how long a range has existed and how widely it is used.
| Tier | Ranges | Where it works |
|---|---|---|
| Safest | Bold, italic, bold-italic, script, fraktur, outline, monospace | Effectively everywhere |
| Safe | Small caps, fullwidth, superscript | Almost everywhere |
| Usually fine | Circled letters, parenthesised letters | Gaps on older Android |
| Risky | Squared, regional indicators, pseudo-alphabets | Varies by device |
| Fragile | Ornate frames, stacked combining marks | Often tofu or stripped |
The mathematical alphabets in the top tier are the workhorses. They were encoded for mathematical typesetting, which means they have been in system fonts for a very long time and are essentially universal.
How to test before you publish
- Send the text to yourself on a different device — ideally a different operating system.
- Ask one friend on an Android phone and one on Windows to confirm what they see.
- For anything important, prefer a top-tier style rather than testing your luck.
- If a style is essential to your look, accept that some viewers will miss it and never put required information in it.
What tofu tells you about the text
There is a useful signal buried in this. If styled text shows as boxes for a meaningful share of your audience, that text was never really readable to them — and the same limitation applies to screen readers and search indexes, which also do not see the letters you think you wrote.
Decorative Unicode is best treated as decoration. Where the words carry meaning — your name, what you do, a link description, a call to action — plain letters are not a compromise. They are the only version everyone actually receives.
Frequently asked questions
What are the empty boxes instead of text?
They are called tofu. A device draws an empty rectangle when it is asked to display a character that none of its available fonts contain.
Why does my fancy text look fine to me but show as boxes to others?
Unicode assigns each character a number, but fonts supply the actual drawings. Your device has a font covering that range and theirs does not, so the same characters arrive but cannot be drawn.
Is the text broken or corrupted?
No. The exact characters arrive intact. Only the drawing is missing, so copying the text to a device with the right font shows it correctly.
Which fonts show as boxes most often?
Squared letters, regional indicators, pseudo-alphabets borrowed from other scripts, and ornate frames built from Javanese or Tibetan marks. Older Android devices and Windows desktops are the most affected.
How do I fix boxes I am seeing?
Update your operating system, since font updates ship with system updates. If a specific app shows boxes while your browser does not, that app is using its own bundled font.