Home  ›  Playgrounds  ›  All 22 scripts + emoji

All 22 Scripts + Emoji

The flagship stress test. One buildDocumentPDFBytes() call, every Unicode script pdfnative supports — 22 writing systems with full BiDi reordering and OpenType GSUB/GPOS shaping — plus native COLRv1 colour emoji, composed into a single PDF entirely in your browser. The text-routing engine inspects every code point and dispatches it to the right embedded font automatically, so a single paragraph can freely mix Arabic, Tamil, Japanese and emoji.

Heads-up: this preset embeds up to 24 fonts (22 scripts + Latin + colour emoji). The first run fetches several megabytes of font data from the CDN — give it a few seconds. Everything after that is instant.

Document title

Heading (H1)

Body paragraphs (one per line; blank line for a new paragraph)

View underlying code
What this exercises:
  • Automatic per-code-point font routing — one mixed paragraph is split into runs and each run dispatched to its embedded CIDFont; Latin stays on Helvetica/Noto Sans.
  • BiDi (UAX #9) — Arabic, Hebrew, and Ethiopic runs are reordered right-to-left and correctly interleaved with left-to-right neighbours and digits.
  • OpenType shaping — GSUB ligatures/conjuncts and GPOS mark positioning for the Indic, Thai, Khmer, Myanmar, Tibetan and Sinhala runs; Arabic joining forms.
  • COLRv1 colour emoji — Noto Color Emoji layers rendered as native PDF vector fills (no rasterization), or monochrome via Noto Emoji.
  • Subsetting — each of the 22+ fonts is subset to only the glyphs used, then embedded as a CIDFont Type2 with Identity-H.

All zero-dependency, all in the browser. The exact same code runs in Node.js, Deno, Bun and Web Workers.