demo · v138

Script coverage grid

Slide letter-spacing from 0 to 8px. Cursive scripts (Arabic, Urdu, Hebrew, Devanagari, Bengali, Thai) preserve their connections — the v138 fix. Non-cursive scripts (Latin, Cyrillic, Greek, CJK) get the requested spacing. Side-by-side proves the renderer now respects script boundaries.

Unflagged in Chrome 138. Browser-internal heuristic: when text is in a cursive script (joining behaviour required), letter-spacing is ignored. Latin / CJK / Cyrillic still honour it. No author opt-in — the fix is universal.
2.0px

Arabic cursive

السلام عليكم ورحمة الله وبركاته

Latin non-cursive

Hello, this is plain Latin text.

Urdu cursive

آپ سے مل کر خوشی ہوئی

Cyrillic non-cursive

Привет, как дела?

Hebrew cursive

שלום עליכם

Greek non-cursive

Γεια σας, χαίρομαι που σας γνωρίζω

Devanagari cursive

नमस्ते, आप कैसे हैं?

CJK non-cursive

こんにちは、調子はどうですか

Thai cursive

สวัสดีครับ ยินดีที่ได้รู้จัก

Mixed Latin+digits non-cursive

Order #138 ships v138.

What's happening

  1. Cursive scripts require connecting glyphs. Inserting space between glyphs breaks the joins — illegible, sometimes offensive.
  2. Pre-v138 Chrome dutifully applied letter-spacing to every script. Authors set letter-spacing: 0.05em for body copy and broke every Arabic/Hebrew/Devanagari paragraph site-wide.
  3. v138 detects the cursive scripts at render time and skips spacing. Latin, CJK, Greek, Cyrillic — unchanged behaviour.
  4. You don't need a lang= attribute. The detection is per-glyph-cluster.

see also