C6.30.3Visual caret versus logical insertion pointdesignresearch

Visual caret location and the logical insertion point may not correspond intuitively in bidirectional text

Aliases: visual-logical mismatch · bidi caret mismatch · insertion intuition

What it is

Even when people stare at the blinking bar, they may not infer the logical insertion point—which index in the buffer the next code point will enter—from its screen position. Bidirectional layout splits logical neighbors to opposite ends of the line and pastes visual neighbors who are logically distant. Clicking “looks like after this word” can land logically before another word. The unintuitive mapping is a mixed-script cognition problem: not a caret painted on the wrong pixel, but pixels no longer a monotonic function of index.

Why it happens

In unidirectional text, screen x is roughly monotonic with logical index, so a click on x can binary-search. Mixed layout makes the map piecewise monotonic: one x may match two indices, and one index can have two visual positions around a wrap (end of line / start of next). Intuition says “the seam the arrow points at is the insertion”; inside a mirrored run that seam's logical identity is reversed. Screen readers announce a logical offset; sighted users watch pixels; when those disagree, collaborators edit different places. Debugging that prints only caret x and not the logical index conflates painting bugs with index bugs.

Studying it

Ask people to point at “I want to insert after this word” on a mixed sentence, then read the system's actual index. Color logical indices and ask another group to predict where the blink should sit. Score index error when clicking either side of a target word. Use real names plus brands plus digits, not random letters. Eye tracking shows whether they double-check at seams.

Where it stops holding

Short unwrapped unidirectional phrases stay monotonic and intuition holds. A monospace editor that displays logical order (no bidi reorder) realigns visual and logical at the cost of making RTL harder to read—editability bought with readability. Some terminals treat an isolated embedding as a black box whose inside is not exposed to clicks.

Applying it

  • Show both the visual rectangle and the logical index in developer tools and internal debugging.
  • For end users, use a split caret or word-level highlight at unintuitive seams rather than a hairline.
  • Snap clicks to word boundaries first, then interpret inside the word by run direction.
  • Verify by numbering every logical gap in a mixed sentence and asking people to click “the on-screen place for gap n”; gaps that miss must get extra visual cues.

Related

  • Same group: C6.30.1 In right-to-left text, caret motion runs opposite visual advance · C6.30.2 In mixed-direction text, the caret at a direction switch needs extra rules to decide logical order · C6.30.4 Left/right arrow semantics must be remapped to text direction rather than assumed fixed
  • Adjacent: C6.13 Text selection and caret placement · C6.14 Magnifiers and fine caret control
  • Search: logical order · visual order · caret mapping

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/C6.30.3