Quick answer: Add a font asset with the missing glyphs to your main font’s Fallback List. Set both fonts to Dynamic atlas population.

A localized game shows English fine but Japanese/Cyrillic renders as boxes. The Latin font asset lacks those glyphs; no fallback configured.

Create the Fallback Font Asset

  1. Import a font that covers the needed languages (NotoSansCJK for CJK, NotoSans for Cyrillic+Greek).
  2. Right-click → Create → TextMeshPro → Font Asset.
  3. Set Atlas Population mode to Dynamic.

Add to Fallback List

Open the primary font asset. Fallback Font Assets → Add → drag in the new asset. Save.

TMP will now look up missing characters in this fallback when rendering.

Dynamic Atlas

Dynamic mode rasterizes glyphs on-demand at runtime. Without it, only pre-baked glyphs render. Set both primary and fallback to Dynamic for full coverage.

Fallback Order

List is searched top-to-bottom. Put your most-common-language fallback first; reduces lookup misses.

Memory Limits

Dynamic atlases grow as glyphs are rendered. Set Atlas Width/Height (default 1024×1024) appropriately:

Verifying

Switch language at runtime. All scripts render correctly. No boxes. Atlas inspector shows added glyphs from fallback.

“Primary + fallbacks + dynamic atlas covers any Unicode without pre-baking the entire range.”

For mobile builds, consider pre-baking common glyphs to avoid runtime rasterization hitches — saves ~5ms per first-rendered glyph.