Contact emails
[email protected]

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 (eg, 
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.

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69f98104.050a0220.32fa05.063f.GAE%40google.com.

Reply via email to