summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2006-12-04 18:28:47 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2006-12-04 18:28:47 +0000
commit9e4393bf2a898a956e17449a53cd7b3849d46680 (patch)
treeb948b2d52cb6c2e6c8a3b6bd80221e32b162054c
parent7d016a12a43bdb6ae82c94efa7812ad04b3e4a0a (diff)
downloadpango-9e4393bf2a898a956e17449a53cd7b3849d46680.tar.gz
Red Hat Bug 211964: [ta] Rendering issue with Tamil Patch from LingNing
2006-12-04 Behdad Esfahbod <behdad@gnome.org> Red Hat Bug 211964: [ta] Rendering issue with Tamil Patch from LingNing Zhang * modules/indic/indic-ot-class-tables.c (indic_ot_find_syllable): Handle 2 split matra.
-rw-r--r--ChangeLog8
-rw-r--r--modules/indic/indic-ot-class-tables.c42
2 files changed, 50 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 66ebea2a..3324448d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-12-04 Behdad Esfahbod <behdad@gnome.org>
+
+ Red Hat Bug 211964: [ta] Rendering issue with Tamil
+ Patch from LingNing Zhang
+
+ * modules/indic/indic-ot-class-tables.c (indic_ot_find_syllable):
+ Handle 2 split matra.
+
2006-12-01 Behdad Esfahbod <behdad@gnome.org>
Red Hat Bug 213632: ZWJ (200d) and ZWNJ (200c) showing same output
diff --git a/modules/indic/indic-ot-class-tables.c b/modules/indic/indic-ot-class-tables.c
index 3a274b7a..7854bcae 100644
--- a/modules/indic/indic-ot-class-tables.c
+++ b/modules/indic/indic-ot-class-tables.c
@@ -469,6 +469,48 @@ glong indic_ot_find_syllable(const IndicOTClassTable *class_table, const gunicha
state = stateTable[state][char_class & CF_CLASS_MASK];
+ /*for the components of split matra*/
+ if ((char_count >= cursor + 3) &&
+ (chars[cursor] == 0x0DD9 && chars[cursor + 1] == 0x0DCF && chars[cursor + 2] == 0x0DCA)) { /*for 3 split matra of Sinhala*/
+ return cursor + 3;
+ }
+ else if ((char_count >= cursor + 3) &&
+ (chars[cursor] == 0x0CC6 && chars[cursor + 1] == 0x0CC2 && chars[cursor + 2] == 0x0CD5)) { /*for 3 split matra of Kannada*/
+ return cursor + 3;
+ }
+ /*for 2 split matra*/
+ else if (char_count >= cursor + 2) {
+ /*for Bengali*/
+ if ((chars[cursor] == 0x09C7 && chars[cursor + 1] == 0x09BE) ||
+ (chars[cursor] == 0x09C7 && chars[cursor + 1] == 0x09D7) ||
+ /*for Oriya*/
+ (chars[cursor] == 0x0B47 && chars[cursor + 1] == 0x0B3E) ||
+ (chars[cursor] == 0x0B47 && chars[cursor + 1] == 0x0B56) ||
+ (chars[cursor] == 0x0B47 && chars[cursor + 1] == 0x0B57) ||
+ /*for Tamil*/
+ (chars[cursor] == 0x0BC6 && chars[cursor + 1] == 0x0BBE) ||
+ (chars[cursor] == 0x0BC6 && chars[cursor + 1] == 0x0BD7) ||
+ (chars[cursor] == 0x0BC7 && chars[cursor + 1] == 0x0BBE) ||
+ /*for Malayalam*/
+ (chars[cursor] == 0x0D46 && chars[cursor + 1] == 0x0D3E) ||
+ (chars[cursor] == 0x0D46 && chars[cursor + 1] == 0x0D57) ||
+ (chars[cursor] == 0x0D47 && chars[cursor + 1] == 0x0D3E) ||
+ /*for Sinhala*/
+ (chars[cursor] == 0x0DD9 && chars[cursor + 1] == 0x0DCA) ||
+ (chars[cursor] == 0x0DD9 && chars[cursor + 1] == 0x0DCF) ||
+ (chars[cursor] == 0x0DD9 && chars[cursor + 1] == 0x0DDF) ||
+ (chars[cursor] == 0x0DDC && chars[cursor + 1] == 0x0DCA) ||
+ /*for Telugu*/
+ (chars[cursor] == 0x0C46 && chars[cursor + 1] == 0x0C56) ||
+ /*for Kannada*/
+ (chars[cursor] == 0x0CBF && chars[cursor + 1] == 0x0CD5) ||
+ (chars[cursor] == 0x0CC6 && chars[cursor + 1] == 0x0CD5) ||
+ (chars[cursor] == 0x0CC6 && chars[cursor + 1] == 0x0CD6) ||
+ (chars[cursor] == 0x0CC6 && chars[cursor + 1] == 0x0CC2) ||
+ (chars[cursor] == 0x0CCA && chars[cursor + 1] == 0x0CD5))
+ return cursor + 2;
+ }
+
if (state < 0) {
break;
}