Back to list

One font to rule them all

Unicode 13 defines 143,859 characters for text in many languages, emojis, and special symbols for many areas from Alchemy, Astrology, Mathematics, Meteorology to Yijing Hexagrams. Wouldn't it be great to have a single font that contains all these characters?

Unfortunately, this is not possible, at least not with today's font technologies. OpenType and TrueType fonts contain tables to describe which characters shall appear as which glyphs. And these tables have a limit of 65536 glyphs. A single font therefore can contain at most 48% of the Unicode repertoire. In other words: you need at least three fonts to cover the whole Unicode range.

A practical consequence of this limitation is that the text components of operating systems typically use “fallback strategies” for characters that are not available in the current font. On macOS, the built-in text system tries to find a replacement font that looks similar to the original font. For example, if you write English text in Helvetica or Times and then insert a letter from the Thai alphabet (such as kho khai: ข), the text system looks for a similar font that contains Thai letters (on macOS, Thai letters are usually taken from the Ayuthaya font). Most of the time, you will not even notice that a different font was used for a few characters; the fallback strategy usually “just works”.

In PopChar, the character table typically shows the repertoire of a single font (when the “Characters of Current Font” view is selected).

When you select “Union of All Available Fonts”, PopChar displays all characters that are supported by any of your installed fonts. PopChar still uses the selected font for characters that are available in that font; characters missing in this font are displayed using the default fallback strategy of macOS. Characters that are available in the selected font appear in black; blue characters indicate that they have been taken from a fallback font.

Even then, PopChar cannot find characters that are not available in any of your installed fonts. These characters simply do not exist on your computer, so you cannot use them anyway. But if you are interested to see what you are missing, select “All Unicode Characters”. If a character is not available at all, PopChar displays a red question mark in a box. Here is an example from the “Playing Cards” section in Apple Symbols: RedJoker.png

The Unicode standard defines the character with the number 127167 as the “PLAYING CARD RED JOKER”, but the card symbol is not available in any of the installed fonts. PopChar tells you that this symbol theoretically exists, but you cannot use it. You first need to find a font that contains the symbol.

If you want to see what all the defined Unicode characters should look like, check out the Unifont font collection, which is publicly available as part of the GNU project at Unifoundry.com. There are three fonts that you can install: Unifont, Unifont Upper, and Unifont CSUR. The first two contain most of the characters defined by the Unicode standard. Once you have these fonts installed, PopChar displays the red joker card symbol: RedJokerUnifont.png

This does not look great. The characters in the font consist of square blocks.

Here is a section from the Phonetic Extensions: PhonExtUnifont.png The jaggy appearance is deliberate. Unifont was created for examining the Unicode character set and as a fallback font to avoid “white spots”, but not as a high-quality font for creating documents.

If you are interested in other fonts that you can actually use for text, check out these alternatives:

  • Arial Unicode MS (created by Agfa Monotype) comes pre-installed with macOS. The font contains almost 40000 characters for many languages.
  • Google Noto is a family of 200+ fonts in multiple styles for many languages. If you have special interest in languages, the Noto fonts are a good source for characters in a uniform appearance. However, you will need to download and install specialized fonts for individual languages.
  • Everson Mono is a monospaced font with almost 10000 characters. It covers a wide range of languages.
  • TITUS Cyberbit Basic is a serif font with almost 10000 characters for Indo-German languages. It is available from the University of Frankfurt after filling out an online form. Note that these fonts and font collections cover only part of the Unicode standard, but most of them contain outlines of high quality, so you can use them to print text in unusual languages, and some of them also contain many special symbols.

For further suggestions, see the Fonts page in the Unicode Resources section of the Unicode consortium.