AIFontGen research · Version 2026-10-02-v1

Unicode Fonts: A 54-Language Character Reference

Use this character inventory to review language requirements. The audit did not evaluate any actual font file.

Unicode fonts: check language coverage with your text

Select the languages and sample copy for your project. Compare the needed characters with a font’s map, then inspect shaping and positioning in the software that will display it. Counts alone cannot confirm usable language support.

The Unicode font FAQ outlines Unicode font coverage. The figures on this page come from a specific published inventory and test baseline; they are not recommendations for individual typefaces.

Main and auxiliary characters in language coverage

CLDR distinguishes main exemplars from auxiliary exemplars. The pinned AIFontGen dataset closes letter case and retains the two groups separately. Its checker uses these meanings: full marks an inventory with every main and auxiliary code point; core marks one with every main code point but at least one absent auxiliary character; missing means a main character is absent.

The result labels describe character-set membership, not how well a font is drawn. Shaping is a separate step: a present code point says nothing by itself about glyph shape, GSUB/GPOS behavior, mark placement, joining, ligatures or the browser’s final layout.

ASCII coverage baseline results

Our baseline was U+0020–U+007E, a set of 95 ASCII code points spanning letters, numbers, punctuation and space. No font was loaded. For each language the pinned checker assesses, we subtracted the baseline from its main and auxiliary sets, then compared those calculations with the checker function.

Outcome counts for the synthetic ASCII inventory check
Checker outcomeLanguagesInterpretation
Full2: Malay ms, Swahili swEvery main and auxiliary character is present
Core3: English en, Indonesian id, Zulu zuAll main characters are present, with auxiliary gaps
Missing49One or more main characters are missing
Not assessed2: Arabic ar, Hindi hiNot included in the assessment

Finding to cite. For the U+0020–U+007E baseline, the pinned AIFontGen checker evaluated 54 language inventories. Two meet both main and auxiliary requirements, three meet the main set only, and 49 lack at least one main code point. This tests a synthetic inventory, not real font files.

For English, the pinned sets contain 52 main and 76 auxiliary code points; ASCII covers the main set but leaves auxiliary gaps. German has seven main characters outside ASCII (Ä Ö Ü ß ä ö ü); the baseline lacks 14 Spanish main characters and 32 French ones.

Sample rows from the disclosed language inventory

Sample rows from the disclosed language inventory
LanguageMainAuxiliaryMain missing from ASCIILabel
en52760core
de59767missing
es666614missing
fr844432missing
sw4840full
ms5200full

The table reports inventory totals and synthetic-baseline results; it does not count characters measured in any font file.

Language character coverage: scope of this audit

This local inventory draws on 56 language entries from CLDR 48.2.0, commit bb334e8d6250c9363e957e131bf7e6d08ec72f91. Results are available from the pinned checker for 54. Arabic and Hindi remain in the dataset but are marked not assessed, preserving their disclosed character lists.

Finding for citation. Across assessed main character sets, the union is 611 distinct code points; adding auxiliary sets brings it to 817. These totals cover the 54 assessed entries after this project’s case closure, not all of CLDR or any font’s glyph inventory.

Excluding those two entries does not validate shaping for the other 54 languages. Similar-looking precomposed characters and decomposed sequences are not necessarily interchangeable in a particular application.

Apply the character reference to a real font

  1. Locate the entry for your language and review both character groups listed there.
  2. Use the existing language check tool to test whether characters are present.
  3. Try the words, names and punctuation from your document in the application where it will appear.
  4. Note the font version and rendering setup separately from this inventory revision.

Complete character coverage is only the start of testing; it cannot ensure correct rendering. This guide neither selects a fallback typeface nor evaluates typographic quality.

Download the data and reproduce the results

Place the JSON files and script together, then run python3 reproduce.py. Using the Python standard library, it recalculates each reported ASCII gap, status and union total. The script and original audit do not render fonts.

Unicode, Inc. is credited for the CLDR-derived character data, and its licence is included here. This first-party review uses a curated local inventory and a pinned code snapshot; later checker versions may differ. To cite a result, name AIFontGen, this page title, version 2026-10-02-v1 and the relevant section, and identify the baseline as synthetic.