Skip to content

Font and script support matrix

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.

ScriptStandard-14 fontsRegistered embedded font
Western European LatinYes — the full WinAnsiEncoding (Windows-1252) repertoireYes
Latin accents beyond WinAnsi, Greek, CyrillicNoWhere the font’s character map covers them
Chinese, Japanese, Korean (CJK)NoWhere the font’s character map covers them
Arabic, Persian, UrduNoWith contextual shaping, where the character map covers the Arabic Presentation Forms-B block
HebrewNoReordered to visual order; not shaped
Thai and other complex scriptsNoWhere the character map covers them; advanced shaping is limited

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.

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.