RTL and bidi rule sheet
The list in brief §8 as a checklist the build runs. Sorani is the origin; the LTR edition is the RTL edition with dir changed and the Latin stack applied.
| Rule | How the prototype does it | Status |
|---|---|---|
| All layout in logical properties | inline-start / margin-inline / text-align: start; no left/right in layout CSS (grep src/css: 0 hits) | pass |
| Mirrored | reading order · progress bar edge (:dir(rtl) transform-origin) · pull-quote margin (float: inline-end) · chevrons and arrows (.i--flip) · dossier prev/next · portrait position in the byline (logical order) · table column order · pagination | pass |
| Not mirrored | media controls · the mark (Sorani wordmark first in both directions) · numerals · phone numbers · ISBNs · URLs (span.ltr) · code | pass |
| Latin runs isolated | <bdi class="latin" dir="ltr"> at build for names, titles, URLs inside Arabic-script text; the bidi test paragraph (9373 §3) exercises a Latin title, a year, a URL and a Sorani parenthesis in one sentence | pass · see /ckb/وتار/قەیرانی-ڕاستگۆیی-لە-میدیای-کوردیدا/ |
| Numerals per edition | Arabic-Indic for ckb, kmr-Arab, ar; Persian for fa; Western for Latin editions; dates through Intl (Levantine month names for ckb); the same date renders in the four forms on the docs microcopy page | pass |
| Punctuation | Arabic comma and question mark in Arabic-script editions; « » quotes; Persian ، and ؛; locale quotes for Latin editions („ “ de, « » fr, ” ” sv) | pass · citation block uses q() |
| No justification · no hyphenation in Arabic script | text-wrap: balance on headlines, pretty on standfirsts and paragraphs | pass |
| Kurmancî letters | Ç Ê Î Ş Û checked in Literata and Plex at every size (latin-ext subsets shipped) | specimen on the tokens page |
| Bahdini | same Amiri joins as Sorani; the kmr-Arab edition uses the Sorani stack and date format | stack shared |
| Cyrillic (ru) | Literata and Plex carry Cyrillic (subsets shipped); Russian quotation marks « » and the em dash | specimen on the tokens page |
| Visual diff RTL/LTR | the LTR prototype is generated from the same templates with dir and the type stack changed; the diff shows mirroring and script only | by construction |
| Fonts | subset per script, self-hosted WOFF2 with font-display: swap and a system fallback stack; no runtime request to Google Fonts | pass · src/assets/fonts |