Quick answer: Font Asset → Generation Settings → Atlas Population Mode = Dynamic. Add fallback CJK / emoji font assets to Fallback Font Assets.
Translation team adds a French quote with curly quotes. Game shows boxes. The atlas was baked ASCII-only.
The Symptom
Specific characters render as outlined empty rectangles. ASCII renders fine; accented Latin / curly punctuation / non-Latin scripts do not.
The Fix
Inter SDF (font asset) → Generation Settings:
Source Font File: Inter.ttf
Atlas Population Mode: Dynamic
Atlas Render Mode: SDFAA
Atlas Width / Height: 1024 / 1024
Fallback Font Assets:
+ NotoSansCJK SDF
+ NotoEmoji SDF
Dynamic adds glyphs at runtime up to atlas size; once full, oldest LRU glyphs are replaced. Fallback chain handles scripts the primary doesn’t support.
Verifying
Display localized strings: French, Spanish, Japanese, emoji. All render. Atlas inspector shows growth as new glyphs are added.
“Dynamic atlas. Fallback chain. Tofu replaced with letters.”
Related Issues
For UI Toolkit binding, see UXML binding. For input composite, see composite.
Dynamic + fallback. Glyphs render.