Bug 357790 – Rendering problem for malayalam consonant RA (U+0D30)
authorBehdad Esfahbod <behdad@gnome.org>
Mon, 2 Oct 2006 21:27:40 +0000 (21:27 +0000)
committerBehdad Esfahbod <behdad@src.gnome.org>
Mon, 2 Oct 2006 21:27:40 +0000 (21:27 +0000)
2006-10-02  Behdad Esfahbod  <behdad@gnome.org>

        Bug 357790 – Rendering problem for malayalam consonant RA (U+0D30)

        * modules/indic/indic-ot-class-tables.c:
        * modules/indic/indic-ot.c (indic_ot_reorder):
        Fix.

ChangeLog
modules/indic/indic-ot-class-tables.c
modules/indic/indic-ot.c

index 6c010ea..1ce469d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2006-10-02  Behdad Esfahbod  <behdad@gnome.org>
 
+       Bug 357790 – Rendering problem for malayalam consonant RA (U+0D30)
+
+       * modules/indic/indic-ot-class-tables.c:
+       * modules/indic/indic-ot.c (indic_ot_reorder):
+       Fix.
+
+2006-10-02  Behdad Esfahbod  <behdad@gnome.org>
+
        Bug 359043 – PangoRenderer does not show in API docs
 
        * docs/pango-docs.sgml: Hook PangoRenderer docs.
index a0c32aa..dd6277d 100644 (file)
@@ -214,7 +214,7 @@ static const IndicOTCharClass mlymCharClasses[] =
     _xx, _xx, _mp, _mp, _xx, _iv, _iv, _iv, _iv, _iv, _iv, _iv, _iv, _xx, _iv, _iv, /* 0D00 - 0D0F */
     _iv, _xx, _iv, _iv, _iv, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, /* 0D10 - 0D1F */
     _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _xx, _ct, _ct, _ct, _ct, _ct, _pb, /* 0D20 - 0D2F */
-    _pb, _cn, _ct, _ct, _ct, _pb, _ct, _ct, _ct, _ct, _xx, _xx, _xx, _xx, _dr, _dr, /* 0D30 - 0D3F */
+    _cn, _cn, _ct, _ct, _ct, _pb, _ct, _ct, _ct, _ct, _xx, _xx, _xx, _xx, _dr, _dr, /* 0D30 - 0D3F */
     _dr, _dr, _dr, _dr, _xx, _xx, _dl, _dl, _dl, _xx, _s1, _s2, _s3, _vr, _xx, _xx, /* 0D40 - 0D4F */
     _xx, _xx, _xx, _xx, _xx, _xx, _xx, _dr, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, /* 0D50 - 0D5F */
     _iv, _iv, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx  /* 0D60 - 0D6F */
index 496932d..a03e014 100644 (file)
@@ -448,7 +448,16 @@ glong indic_ot_reorder(const gunichar *chars, const glong *utf8_offsets, glong c
                (chars[baseConsonant] == 0x0d31) &&
                ((chars[baseConsonant - 2] >= 0x0d15) && 
                 (chars[baseConsonant - 2] <= 0x0d39)))  {
-               swapChars (&output, -1, -3);
+               swapChars (&output, -1, -3);
+           }
+
+            /* for the special conjuction of Cons+0x0d4d+0x0d30 of Malayalam */
+           if ((baseConsonant - 2 >= 0) &&
+               (chars[baseConsonant - 1] == 0x0d4d) &&
+               (chars[baseConsonant] == 0x0d30) &&
+               ((chars[baseConsonant - 2] >= 0x0d15) && 
+                (chars[baseConsonant - 2] <= 0x0d39)))  {
+               swapChars (&output, -1, -3);
            }
 
            if ((class_table->scriptFlags & SF_MATRAS_AFTER_BASE) != 0) {
@@ -496,14 +505,6 @@ glong indic_ot_reorder(const gunichar *chars, const glong *utf8_offsets, glong c
 
                    /* write halant that was after base consonant */
                    writeChar(&output, chars[bcSpan], /*bcSpan*/ prev, blwf_p);
-
-                   /* for Ra of Malayalam */
-                   if ((bcSpan - 1 >= 0) && (bcSpan + 1 < char_count) &&
-                       (chars[bcSpan] == 0x0d4d) && (chars[bcSpan + 1] == 0x0d30) &&
-                       ((chars[bcSpan - 1] >= 0x0d15) && (chars[bcSpan - 1] <= 0x0d39))) {
-
-                       shiftCharsLeft3 (&output);
-                   }
                }
 
                /* write the training halant, if there is one */