Complex Text Layout

Text in languages of the western world based on the Latin, Cyrillic, and Greek scripts is visualized pretty much like the way it is stored as data - from left to right, and each character corresponds to a single display symbol. We define such text as simple since the stored data requires less processing to be visualized. Not all the languages of the world have these characteristics. Text in languages of the eastern world (like Arabic, Hebrew, Urdu, Farsi, and so on) has a different presentation from the way it is stored as data - from right to left and characters that correspond to different symbols depending on surrounding characters. There is nothing in these languages themselves that is more complex than in the Latin-based languages, but we define them as complex since they require more processing in order to be visualized from the stored data.

The complex text layout support is available behind the cohtml::ViewSettings::EnableComplexTextLayout option, as it may incur performance penalties when not utilizing complex texts.

As the feature is still under development, this is the list of known issues at the moment:

  • Caret movement and placement for inputs are incorrect
  • Selection is incorrect
  • The character index for the position is incorrect