Bug 504810 – Samvruthokaram (combination of U+0D41 and U+0D4D) is not
authorBehdad Esfahbod <behdad@gnome.org>
Fri, 8 Feb 2008 23:49:55 +0000 (23:49 +0000)
committerBehdad Esfahbod <behdad@src.gnome.org>
Fri, 8 Feb 2008 23:49:55 +0000 (23:49 +0000)
2008-02-08  Behdad Esfahbod  <behdad@gnome.org>

        Bug 504810 – Samvruthokaram (combination of U+0D41 and U+0D4D) is not
        rendered correctly
        Patch from Praveen A

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

svn path=/trunk/; revision=2562

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

index f5a26cb..845ad79 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-02-08  Behdad Esfahbod  <behdad@gnome.org>
+
+       Bug 504810 – Samvruthokaram (combination of U+0D41 and U+0D4D) is not
+       rendered correctly
+       Patch from Praveen A
+
+       * modules/indic/indic-ot-class-tables.c:
+       * modules/indic/indic-ot.c (indic_ot_reorder):
+       "Fix" it.
+
 2008-01-29  Behdad Esfahbod  <behdad@gnome.org>
 
        * configure.in: Oops.  Add fontconfig cflags/libs with freetype's.
index 963dcfa..5c56176 100644 (file)
@@ -270,7 +270,7 @@ static const IndicOTSplitMatra sinhSplitTable[] = {{0x0DD9, 0x0DCA}, {0x0DD9, 0x
 #define TAML_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT)
 #define TELU_SCRIPT_FLAGS (SF_MATRAS_AFTER_BASE | 3)
 #define KNDA_SCRIPT_FLAGS (SF_MATRAS_AFTER_BASE | 3)
-#define MLYM_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT )
+#define MLYM_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT | SF_PROCESS_ZWJ)
 #define SINH_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT | SF_PROCESS_ZWJ)
 
 /*
index 87dea87..de1b422 100644 (file)
@@ -259,6 +259,12 @@ glong indic_ot_reorder(const gunichar *chars, const glong *utf8_offsets, glong c
        case CC_NUKTA:
        case CC_VIRAMA:
        case CC_AL_LAKUNA:
+           /* patch for rendering fix for Malayalam SAMVRUTHOKARA by suresh */
+           if (chars[prev - 1] == 0x0D41) {
+                writeChar(&output, chars[prev], prev, blwf_p);
+                break;
+           }
+           /* end patch */
            writeChar(&output, C_DOTTED_CIRCLE, prev, blwf_p);
            writeChar(&output, chars[prev], prev, blwf_p);
            break;