Font and script support matrix
At a glance
Section titled “At a glance”Two font classes determine which scripts render. Standard-14 fonts (Helvetica, Times, Courier) cover the WinAnsiEncoding repertoire, and nothing else. A registered embedded TrueType or OpenType font renders a script only when the font’s character map and the current shaping path both cover it. No font class renders all of Unicode by itself.
Script coverage
Section titled “Script coverage”| Script | Standard-14 fonts | Registered embedded font |
|---|---|---|
| Western European Latin | Yes — the full WinAnsiEncoding (Windows-1252) repertoire | Yes |
| Latin accents beyond WinAnsi, Greek, Cyrillic | No | Where the font’s character map covers them |
| Chinese, Japanese, Korean (CJK) | No | Where the font’s character map covers them |
| Arabic, Persian, Urdu | No | With contextual shaping, where the character map covers the Arabic Presentation Forms-B block |
| Hebrew | No | Reordered to visual order; not shaped |
| Thai and other complex scripts | No | Where the character map covers them; advanced shaping is limited |
Standard-14 fonts
Section titled “Standard-14 fonts”Standard-14 families — Helvetica, Times, and Courier — render the full WinAnsiEncoding (Windows code page 1252) repertoire: Western European accented Latin, the Euro sign, and common typographic punctuation, including en and em dashes, curly quotes, the bullet, the ellipsis, and the trademark sign (ISO 32000-2 Annex D.2). They render no other script. Register an embedded font for any character outside that repertoire. Symbol and ZapfDingbats are the two standard-14 faces that have no metric-compatible substitute; register an embeddable font when you need either one.
See Compose text with fonts and alignment for the standard-font workflow.
Registered embedded fonts
Section titled “Registered embedded fonts”A registered TrueType or OpenType font renders Unicode only where the selected font’s character map and the current shaping path both provide coverage. Registering a font alone does not guarantee a glyph for every code point.
- Coverage follows the character map. The engine draws a code point only if the embedded font maps it to a glyph. A font built for one script will not render another.
- Latin, Greek, Cyrillic, and CJK render directly from the character map, one glyph per code point, when the font covers them.
- Arabic also requires contextual shaping — initial, medial, final, and isolated letter forms plus the Lam-Alef ligature — and a font whose character map covers the Arabic Presentation Forms-B block. Fonts that rely only on OpenType Glyph Substitution (GSUB), and the HarfBuzz shaping path, are future work.
- Right-to-left scripts (Arabic, Hebrew, Persian, Urdu) are reordered to visual order with the Unicode Bidirectional Algorithm in Unicode Standard Annex (UAX) #9. Hebrew is reordered but not shaped, which is correct for the script.
See Render right-to-left Arabic HTML for an Arabic worked example and the current right-to-left limitations.
See also
Section titled “See also”- Font: value types, embedding, and fallback — the
FontInfovalue object and standard-14 substitute fallback. - Typography: font registry, subsetting, CMap, encoding, BiDi — registration, encoding, and the bidirectional engine.
- CSS support matrix — CSS feature support, including
direction.