mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-24 17:56:50 -06:00
In type that holds right-to-left characters, Left and Right move the caret through the visual caret stops (`caret_horizontal`). A cluster drawn with no advance, such as a zero width non-joiner that the font shapes as a glyph of its own, puts two stops at one x. A step kept the stop with the lower byte, and the next step passed over the other one, so the arrow keys never reached it. In Persian میخواهم laid out on macOS, the caret could not be put between the non-joiner and خ with the arrow keys. Stops at one x are now visited one at a time in byte order. Going right, the caret takes them in increasing order on left-to-right glyphs and in decreasing order on right-to-left glyphs; going left, it takes them in the reverse order. The end of a soft-wrapped line, which the caret shows on the next line, is not one of those stops. Where no two stops share an x, a step goes where it went before.