summaryrefslogtreecommitdiffstats
path: root/icu.icu5506.multiplevowels.patch
diff options
context:
space:
mode:
Diffstat (limited to 'icu.icu5506.multiplevowels.patch')
-rw-r--r--icu.icu5506.multiplevowels.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/icu.icu5506.multiplevowels.patch b/icu.icu5506.multiplevowels.patch
new file mode 100644
index 0000000..a58ec64
--- /dev/null
+++ b/icu.icu5506.multiplevowels.patch
@@ -0,0 +1,61 @@
+diff -ur icu.orig/source/layout/IndicReordering.cpp icu/source/layout/IndicReordering.cpp
+--- icu.orig/source/layout/IndicReordering.cpp 2006-11-10 09:42:44.000000000 +0000
++++ icu/source/layout/IndicReordering.cpp 2006-11-10 09:47:05.000000000 +0000
+@@ -395,7 +395,7 @@
+ {-1, 6, 1, -1, -1, -1, -1, -1, -1, 5, 9, 5, 5, 4, 12}, // 2 - consonant with nukta
+ {-1, 6, 1, -1, -1, -1, -1, -1, 2, 5, 9, 5, 5, 4, 12}, // 3 - consonant
+ {-1, -1, -1, -1, -1, -1, 3, 2, -1, -1, -1, -1, -1, -1, 7}, // 4 - consonant virama
+- {-1, 6, 1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1}, // 5 - dependent vowels
++ {-1, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, // 5 - dependent vowels
+ {-1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, // 6 - vowel mark
+ {-1, -1, -1, -1, -1, -1, 3, 2, -1, -1, -1, -1, -1, -1, -1}, // 7 - consonant virama ZWJ, consonant ZWJ virama
+ {-1, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1}, // 8 - independent vowels that can take a virama
+@@ -423,6 +423,48 @@
+
+ state = stateTable[state][charClass & CF_CLASS_MASK];
+
++ /*for the components of split matra*/
++ if ((charCount >= cursor + 3) &&
++ (chars[cursor] == 0x0DD9 && chars[cursor + 1] == 0x0DCF && chars[cursor + 2] == 0x0DCA)) { /*for 3 split matra of Sinhala*/
++ return cursor + 3;
++ }
++ else if ((charCount >= 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 (charCount >= 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;
+ }