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