commit (HEAD): ut_Language.h/cpp, et al.

From: Tomas Frydrych (tomas@frydrych.uklinux.net)
Date: Fri Apr 11 2003 - 09:12:52 EDT

  • Next message: msevior@physics.unimelb.edu.au: "commit: Fix 4546"

    * ut_Language.h/cpp:

    I added a new field called 'order' to the language data, with
    possible values UTLANG_LTR, UTLANG_RTL, UTLANG_VERTICAL, and a new
    member function getOrderFromProperty(). I have filled everything in
    the table with UTLANG_LTR, except for the two Arabic dialects, Hebrew
    and Yiddish, which I set to UTLANG_RTL. I would appreciate if some
    linguaphile (Andrew?) could go over the table and change the values
    to RTL and VERTICAL anywhere else where that is appropriate.

    * ap_EditMethods.cpp/xap_Prefs_SchemesId.h:

    I added a new edit method 'insertClosingParenthesis', which will be
    bound to characters ')', ']' and '}' instead of 'insertData'. This
    method works in combination with a new XAP preference
    DirMarkerAfterClosingParenthesis, and the already existing XAP
    preference ChangeLanguageWithKeyboard.

    If either preference is set to 0 (default for
    DirMarkerAfterClosingParenthesis) it behaves in a manner identical to
    'inputData'. If the preferences are set to 1, the new method examines
    the language property at the insertion point and after inserting the
    character data it inserts a direction marker LRM (u200e) or RLM
    (u200f) based on the language.

    This new mechanism provides handling of parenthesis similar to that
    of MS Word, which is much more intuitive than that provided by the
    raw Unicode bidi algorithm. Just to illustrate what this is about, if
    the following text (caps are RTL characters) is input

        "A log(k) B"

    the Unicode algorithm will resolve this to visual order

        "B (log(k A"

    However, the user most likely wants

        "B log(k) A"

    which is what s/he would get in Word automatically. The solution is
    for the user to insert a left to right marker (LRM) after the closing
    parenthesis. Unfortunately, the problem only becomes obvious when the
    'B' is entered, and fixing it, therefore, requires (a) an
    understanding of what the cause is, which is not obvious, (b) moving
    insertion point backwards behind the parenthesis, (c) inserting a
    suitable direction marker, (d) moving back to the original insertion
    point. In contrast, the new method will insert the correct marker at
    the same time the parenthesis is closed.

    For now it is only the Win32 users that will be able to take
    advantage of this, until the other platforms can translate keyboard
    layout changes to changes of language (as controlled by the XAP
    preference ChangeLanguageWithKeyboard).

    Tomas



    This archive was generated by hypermail 2.1.4 : Fri Apr 11 2003 - 09:23:45 EDT