Bidirectional Scripts in Desktop Software

Bidirectional scripts are those with characters flowing from right to left. Major bidirectional scripts are the Arabic, Persian and Hebrew scripts, but there are other ones too. Supporting these languages in the user interface of a desktop system needs special support in several layers of the system. Experiments and history shows such special support moves on the very thin edge between completely unusable and highly usable. So they deserve their own guidelines for a consistent cross-desktop behavior. That's what we aim to do here.

Readings (a.k.a. References)

Unicode Bidirectional Algorithm (UBA from now on, a.k.a UAX#9) is the place to start. It contains the basic algorithm to map a Unicode plain text string to a visual ordering.

Bidirectional Layouts in GTK+ is a presentation of the state of art bidi support in Gtk+ by mid 2004. Discusses several problems and concepts that are general to all GUI applications.

Mozilla Bi-Di API proposal (out-dated) is the old proposal to add support for bidirectional text to Mozilla. Note that the API proposed in this document is missing essential features, like line breaking support.