maplibre-fonts-glyphs
MapLibre Fonts and Glyphs
MapLibre draws label text from precomputed glyph images that a server provides, or, for some scripts and setups, with local or web fonts. This skill covers where glyphs come from, the GL JS local-font fallback, the font-faces property, and non-Latin script support. For font sizing, weight, and other visual-hierarchy decisions, see maplibre-cartography.
When to Use This Skill
- Text labels aren't rendering, or render in the wrong font
- Setting up a
glyphsURL for a custom or self-hosted style - Deciding whether to self-host existing font PBFs or generate your own from a TTF/OTF
- Rendering non-Latin scripts (CJK, Arabic, Hebrew, Devanagari, and others)
- Rendering fonts locally/offline without a glyphs server, on GL JS or Native
Don't use this skill to pad an unrelated answer. Fonts and glyphs only affect symbol layers that set text-field. A question about terrain, hillshade, or any other layer that draws no text gets a normal, focused answer that leaves fonts, glyphs, font-faces, and label scripts out entirely, caveats, troubleshooting rows, and optional label sections included.
MapLibre renders text using SDF glyphs
MapLibre renders text using SDF (signed-distance field) glyphs — precomputed font files that scale cleanly at any zoom or screen density, served from a URL matching the style's glyphs field. In GL JS ≥ 5.11.0 (PR #4564), an unresolvable glyphs situation is no longer fatal: MapLibre renders text locally via TinySDF instead, treating text-font as a cascading list of local/web font names. This covers two cases: