"Mark E. Shoulson" <[EMAIL PROTECTED]> wrote: > I thought a lot of the hassle of the bidi algorithm was to handle > interactions between RTL and LTR when they occur together (where do you > break lines, etc).
I fully adhere to this view. BiDi control is just there to manage the case where characters, in their normal logical encoded ordering, will not be rendered in a uninterupted row, meaning that the visual ordering will need contextual handling. This occurs mostly because of characters that can be used both in RTL and LTR contexts (notably mirrored characters such as parentheses), and for which there's a need to describe how they logically associate with surrounding characters. All the rest is presentation specific and left to the renderer. The Bidi algorithm describes the relations between the logical and visual ordering (both are identical if you just consider LTR scripts alone, or RTL scripts alone, as the left or right alignment to the margin is not relevant for the Bidi algorithm which does not need to know how rendered text rows should be aligned, but just to describe where there are directionality breaks to split text into fragments that have their own directionality and where the renderer is allowed and recommanded to change the visual ordering to keep the characters identity). Whever the text will be finally rendered with horizontal or vertical rows, or with rows aligned to the right or left or top or bottom, or whever rows will be laid out from top to bottom or other directions is not relevant in the BiDi algorithm. All what is meant in the Bidi is not the absolute direction or orientation of text, but only breaks in the text where the main writing direction will need to be reversed. That's a preliminary step that occurs BEFORE even rendering the text, and that guides some encoding conversions between logical and visual ordering (for example there does exist two separate non-Unicode encodings in Hebrew or Arabic, and a simple code mapping from the legacy charset to Unicode is HIGHLY dependant on the Bidi algorithm.)