My Authors
Read all threads
⍰ Unicode Tofu Review ⍰

Something nobody asked for but we'll do it anyway.

Tofu (named because it is usually white boxes) is what you see when there is no font support for the current glyph in your font stack, which can vary by family (serif/sans/mono) and application.
The technical term is (in most cases) .notdef, in PostScript, TrueType/OpenType fonts, etc.
docs.microsoft.com/en-us/typograp…

Most of the time, what you see comes from the .notdef in one of your fontstack fonts. But, sometimes it is custom to the application.

The most common multi-platform tofu lately seems to be the ubiquitous question block.

Cute, but not very informative. Surprised Nintendo hasn't sent DMCA's to every font using it.

[image via @emojipedia]

The dreaded X-box. Common on older Android phones lacking font/emoji support.

Ugly, not informative. Sense of impending dread. Surprised MicroSoft hasn't sent DMCA's to every font using it.
⎡FE⎤
⎣FF⎦
Hexagana. The hex code in a box. Usually not part of a font, but done procedurally in the application. Firefox text fields, for example.

There is a font to do this, though scripts.sil.org/cms/scripts/pa… for example.

A+. Very informative. If you have to tofu me, do this.

Empty box. Probably the most common tofu on desktops.

Really boring. Who cares.

Hexagram. Shows on iOS in some situations. Common during the "i+[FE0F]" autocomplete bug.

Kinda cool, but nothing to take home to meet the parents.
👽
Aliens! Also iOS. Apple has a shitload of tofu variants. This one may have specifically been for missing emoji, but the glyph had another provenance...

Cute. Would let it abduct me.
🄰
Last Resort. Originating on macOS as the bottom of the font stack, it would show a glyph representing each block.

Available here: unicode.org/policies/lastr… (by Michael Everson).

Not bad. Slightly more informative than all but Hexagana.
"⠀"
Nothing. Seen on some older Android phones.

Unsupported glyphs would just be... blank.

0/10. Fuck off with that.
?
Bare question mark. Common on very old systems. Rarer now. Pre-Uncode Windows used to use it as a combination .notdef and Replacement Character.

Boring. Confusing. Hate.
Finally this isn't tofu:
� FFFD REPLACEMENT CHARACTER

The source bytes did not reference Unicode codepoints.
Latin-1 parsed as UTF-8, well-formed references outside UTF-8's scope (Overbyte encoding/>10FFFF/split surrogates). etc

It supplants/replaces the illegal bytes. Lossy.
Bonus: This also isn't tofu or a replacement sign, but is so darned cute it gets honorable mention:
⯑ 2BD1 UNCERTAINTY SIGN
There is no Unicode codepoint for tofu. But there are non-characters [unicode.org/faq/private_us…] that are guaranteed never to be defined. And unlike Private Use Area ranges, they should never be assigned a glyph. Like U+10FFFF: 􏿿

The most important one is U+FFFE (inverse BOM).
However, even non-characters can be misused. Asana-Math.otf for example incorrectly stored extra glyphs at the tail end of the Uncode range, dumping them in SPUA-B, and two of them hit U+10FFFE and U+10FFFF (non-characters).

There is another type of anti-tofu. When a codepoint has no glyph by default, it can appear as a dotted outline in the charts. This (mostly) occurs with Whitespace, Control Codes, and stuff with the property "Default_Ignorable".

unicode.org/Public/12.0.0/…
unicode.org/faq/unsup_char…
Missing some Tweet in this thread? You can try to force a refresh.

Enjoying this thread?

Keep Current with Fake “Unicode.” ↙️

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!