OpenType Ligatures & ZWJ / ZWNJ Studio
Inspect OpenType glyph substitutions (GSUB/GPOS), Zero-Width Joiners (ZWJ U+200D), and Zero-Width Non-Joiners (ZWNJ U+200C) in Arabic, Urdu, Devanagari, and Emoji sequences.
Rendered Grapheme Clusters & Codepoint Decomposition (49 Clusters)
OpenType GSUB/GPOS ShaperThe Architecture of OpenType Ligatures & Complex Text Layout (CTL)
Unlike simple Western Latin scripts where each character maps 1-to-1 to a static visual font box, Complex Text Layout (CTL) scripts (including Arabic, Urdu Nastaliq, Persian, Devanagari, and Khmer) require dynamic context-sensitive glyph shaping:
How Modern Text Shapers (HarfBuzz & CoreText) Render Glyphs
Modern web browsers and operating systems use HarfBuzz to parse OpenType font tables:
- •GSUB (Glyph Substitution): Replaces sequences of characters with custom ligatures (e.g.
f + i → fi,ﷺ). - •GPOS (Glyph Positioning): Precisely positions diacritics (Arabic Zabar/Zer or Devanagari Matras) above/below consonants.
Frequently Asked Questions (FAQs)
How do I insert invisible ZWJ or ZWNJ characters into text?+
Click the "+ ZWJ (U+200D)" or "+ ZWNJ (U+200C)" button in our top action bar. The invisible control character will be appended into the text buffer at your current cursor position.
Why does my font fail to display ligatures correctly?+
Ligatures require font-level support via OpenType GSUB tables. If your selected font does not contain specific ligature glyphs, the text shaper falls back to rendering individual disconnected characters.
Can this tool disassemble complex Emoji sequences?+
Yes! Paste any combined emoji (like 👨👩👧👦 or 🏳️🌈) into the editor. The cluster decomposition cards will display every individual constituent emoji and ZWJ glue codepoint.