Support Kashida justification

#41431127 Blink>FontsP4 / Feature flag: CSSTextJustifyKashida

Arabic justifies by elongating the cursive joins between letters (the kashida), not by widening word gaps. text-justify: kashida existed in CSS and shipped in IE 5.5; no current browser implements it. Chrome dropped the value at parse time and fell back to inter-word.

Your browser vs the patch

Same sample both ways: <div style="text-justify:kashida; text-align:justify; text-align-last:justify">, Amiri font.

Live in the browser you are reading this in (unpatched). kashida is unsupported, so it falls back to inter-word -- the slack opens word gaps ("rivers") instead of elongating letters.

متن عربي للاختبار في چند کلمه مختلف اینجا

Screenshot of patched content_shell (--enable-blink-features=CSSTextJustifyKashida). The same line now fills the width by elongating the cursive joins -- a connected stroke, not gaps.

Patched content_shell: kashida elongates the joins

Test strings

A small corpus chosen to exercise the tricky cases (priority placement, non-joiners, ligatures, bidi, vowel marks). Each card: Rendered = live in your browser (unpatched, falls back); Expected = patched content_shell screenshot. Amiri font.

Root cause

Fix (behind CSSTextJustifyKashida)

Ship follow-up: pick joins by Arabic priority rules / OpenType jstf, and make line breaking stretch-aware for exact fill.

Reproducers