Intent to Prototype: Visual order caret movement for Bidirectional text

16 views
Skip to first unread message

Chromestatus

unread,
1:33 AM (1 hour ago) 1:33 AM
to blin...@chromium.org, sambamurt...@microsoft.com
Contact emails
sambamurt...@microsoft.com

Explainer
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/Editing/bidi-visual-order-caret-movement-explainer.md

Specification
https://w3c.github.io/selection-api/#dom-selection-modify

Summary
Changes caret movement in bidirectional text from logical order (forward/backward in DOM order based on paragraph direction) to visual order, where pressing Right always moves the caret rightward on screen and Left always moves it leftward, regardless of text or line direction. This applies to both keyboard-driven caret movement and the Selection.modify() API when called with 'left'/'right' directions.

Blink component
Blink

Web Feature ID
Missing feature

Motivation
Chromium currently maps Left/Right arrow keys to logical (forward/backward) movement based on the paragraph's base direction. In bidirectional text (e.g., Arabic or Hebrew mixed with Latin), this causes the caret to move in the opposite visual direction or jump unpredictably at script boundaries. For example, in <p dir="ltr">Hello שלום world</p>, pressing Right while inside the Hebrew run moves the caret visually leftward, opposite to user expectation. Firefox and Safari already default to visual caret movement. Chromium is the only major browser that still uses logical movement. A usability study with Arabic–English bilingual users confirmed the overwhelming expectation is visual movement. This feature aligns Chromium with the cross-browser and cross-platform consensus (Firefox, Safari, macOS TextKit, GTK) and makes Selection.modify() with 'left'/'right' behave as true visual directions. The spec already defines these as visual, but steps 7–8 of modify() incorrectly use "inline base direction"; an in-progress spec fix (https://github.com/w3c/selection-api/pull/357) corrects this to use "resolved text direction at the focus", matching Firefox/Safari behavior.

Initial public proposal
No information provided

Search tags
bidi, caret, movement, bidirectional

Goals for experimentation
None

Requires code in //chrome?
False

Tracking bug
https://issues.chromium.org/issues/499819853

Estimated milestones

No milestones specified



Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5074816756482048?gate=5068203748360192

This intent message was generated by Chrome Platform Status.
Reply all
Reply to author
Forward
0 new messages