Home  ›  Playgrounds  ›  All 32 scripts + emoji

All 32 Scripts + Emoji

The flagship stress test. One buildDocumentPDFBytes() call, every Unicode script pdfnative supports — 32 writing systems with full UAX #9 BiDi reordering and OpenType GSUB/GPOS shaping, five of them (Lao, Tai Tham, New Tai Lue, Tai Le, Cham) new in 1.8.0 and five more (Gujarati, Gurmukhi, Kannada, Malayalam, Odia) new in 1.9.0 — 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 34 fonts (32 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)

Each line takes the direction of its first strong letter (UAX #9 P2/P3), the rule the engine applies to each rendered line; glyph order follows it, and lines stay left-aligned unless the block sets align: 'right'.

View underlying code

The 32 scripts at a glance

Every writing system below ships as a bundled Noto font module and renders through the same shaping engine. The demo reads this table directly — what you see here is what lands in the PDF. For Tai Tham, New Tai Lue, Tai Le and Cham the second column shows the sample words the repository's generators use rather than a greeting.

Script (autonym)Greeting or sample words
EnglishHello
ΕλληνικάΓειά σου
РусскийЗдравствуйте
ქართულიგამარჯობა
ՀայերենԲարև
TürkçeMerhaba
Tiếng ViệtXin chào
PolskiDzień dobry
HausaSannu, ɓarka da zuwa
YorùbáẸ n lẹ́ o, ẹ káàbọ̀
IgboNdeewo, nnọọ
KiswahiliHabari, karibu
العربيةالسلام عليكم
עבריתשלום
አማርኛሰላም
हिन्दीनमस्ते
বাংলানমস্কার
தமிழ்வணக்கம்
తెలుగునమస్తే
ગુજરાતીનમસ્તે
ਪੰਜਾਬੀਸਤਿ ਸ੍ਰੀ ਅਕਾਲ
ಕನ್ನಡನಮಸ್ಕಾರ
മലയാളംനമസ്കാരം
ଓଡ଼ିଆନମସ୍କାର
සිංහලආයුබෝවන්
ไทยสวัสดี
ខ្មែរសួស្តី
မြန်မာမင်္ဂလာပါ
ພາສາລາວສະບາຍດີ
ᨤᩮᨻ᩠ᨸᩉᨲ᩠ᩅ ᨠᩮ ᨿᩢ᩠ᨿ
ᦀᦱᦖᦱᦀᦱ ᦖᦱ ᧐᧑᧒
ᥖᥦᥰᥒᥭᥖᥦᥰ ᥒᥭ ᥐᥥᥲ
ꨀꨪꨌꨲꨀꨯ ꨀꨵꨶ ꨀꩌ
བོད་ཡིགབཀྲ་ཤིས་བདེ་ལེགས།
中文你好
日本語こんにちは
한국어안녕하세요
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, Lao, Khmer, Myanmar, Tibetan and Sinhala runs; Arabic joining forms; the Universal Shaping Engine for Tai Tham and Cham (1.8.0).
  • COLRv1 colour emoji — Noto Color Emoji layers rendered as native PDF vector fills (no rasterization), or monochrome via Noto Emoji.
  • Subsetting — each of the 29 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.