diff --git a/icu.icu5418.malayam.patch b/icu.icu5418.malayam.patch
deleted file mode 100644
index b9b4b85..0000000
--- a/icu.icu5418.malayam.patch
+++ /dev/null
@@ -1,30 +0,0 @@
---- icu/source/layout/IndicClassTables.cpp.orig 2006-08-23 01:12:40.000000000 +0100
-+++ icu/source/layout/IndicClassTables.cpp 2006-09-25 09:06:38.000000000 +0100
-@@ -173,6 +173,19 @@
- _iv, _iv, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx // 0CE0 - 0CEF
- };
-
-+#if 1
-+//use the pango char class table here
-+static const IndicClassTable::CharClass 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 */
-+ _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 */
-+};
-+#else
- // FIXME: this is correct for old-style Malayalam (MAL) but not for reformed Malayalam (MLR)
- // FIXME: should there be a REPH for old-style Malayalam?
- static const IndicClassTable::CharClass mlymCharClasses[] =
-@@ -185,6 +198,7 @@
- _xx, _xx, _xx, _xx, _xx, _xx, _xx, _m2, _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
- };
-+#endif
-
- static const IndicClassTable::CharClass sinhCharClasses[] =
- {
diff --git a/icu.icu5431.malayam.patch b/icu.icu5431.malayam.patch
deleted file mode 100644
index 9897452..0000000
--- a/icu.icu5431.malayam.patch
+++ /dev/null
@@ -1,124 +0,0 @@
---- icu.orig/source/layout/IndicReordering.cpp 2006-12-21 09:24:42.000000000 +0000
-+++ icu/source/layout/IndicReordering.cpp 2006-12-21 09:16:15.000000000 +0000
-@@ -50,6 +50,14 @@
- #define distFeatureMask 0x00010000UL
- #define initFeatureMask 0x00008000UL
-
-+// TODO: Find better names for these!
-+#define tagArray4 (loclFeatureMask | nuktFeatureMask | akhnFeatureMask | vatuFeatureMask | presFeatureMask | blwsFeatureMask | abvsFeatureMask | pstsFeatureMask | halnFeatureMask | blwmFeatureMask | abvmFeatureMask | distFeatureMask)
-+#define tagArray3 (pstfFeatureMask | tagArray4)
-+#define tagArray2 (halfFeatureMask | tagArray3)
-+#define tagArray1 (blwfFeatureMask | tagArray2)
-+#define tagArray0 (rphfFeatureMask | tagArray1)
-+
-+
- class IndicReorderingOutput : public UMemory {
- private:
- le_int32 fOutIndex;
-@@ -154,6 +162,27 @@
- fSMabove = fSMbelow = 0;
- }
-
-+ void swapChars(int a, int b)
-+ {
-+ LEErrorCode success = LE_NO_ERROR;
-+ LEUnicode temp_char;
-+ le_uint32 temp_index;
-+ FeatureMask temp_tag;
-+
-+ temp_char = fOutChars[fOutIndex + b];
-+ temp_index = fGlyphStorage.getCharIndex(fOutIndex + b, success);
-+ temp_tag = fGlyphStorage.getAuxData(fOutIndex + b, success);
-+
-+ fOutChars[fOutIndex + b] = fOutChars[fOutIndex + a];
-+ le_uint32 toswap = fGlyphStorage.getCharIndex(fOutIndex + a, success);
-+ fGlyphStorage.setCharIndex(fOutIndex + b, toswap, success);
-+ fGlyphStorage.setAuxData(fOutIndex + b, tagArray3, success);
-+
-+ fOutChars[fOutIndex + a] = temp_char;
-+ fGlyphStorage.setCharIndex(fOutIndex + a, temp_index, success);
-+ fGlyphStorage.setAuxData(fOutIndex + a, temp_tag, success);
-+ }
-+
- void writeChar(LEUnicode ch, le_uint32 charIndex, FeatureMask charFeatures)
- {
- LEErrorCode success = LE_NO_ERROR;
-@@ -335,13 +364,6 @@
- C_DOTTED_CIRCLE = 0x25CC
- };
-
--// TODO: Find better names for these!
--#define tagArray4 (loclFeatureMask | nuktFeatureMask | akhnFeatureMask | vatuFeatureMask | presFeatureMask | blwsFeatureMask | abvsFeatureMask | pstsFeatureMask | halnFeatureMask | blwmFeatureMask | abvmFeatureMask | distFeatureMask)
--#define tagArray3 (pstfFeatureMask | tagArray4)
--#define tagArray2 (halfFeatureMask | tagArray3)
--#define tagArray1 (blwfFeatureMask | tagArray2)
--#define tagArray0 (rphfFeatureMask | tagArray1)
--
- static const FeatureMap featureMap[] =
- {
- {loclFeatureTag, loclFeatureMask},
-@@ -559,6 +623,17 @@
- hasBelowBaseForm = IndicClassTable::hasBelowBaseForm(charClass) && !hasNukta;
- hasPostBaseForm = IndicClassTable::hasPostBaseForm(charClass) && !hasNukta;
-
-+ /* for the special conjuction of Cons+0x0d4d+0x0d30 of Malayalam */
-+ if ((baseConsonant - 2 >= 0) && hasPostBaseForm &&
-+ (chars[baseConsonant - 1] == 0x0d4d) &&
-+ (chars[baseConsonant] == 0x0d30) &&
-+ ((chars[baseConsonant - 2] >= 0x0d15) &&
-+ (chars[baseConsonant - 2] <= 0x0d39))) {
-+ if (baseConsonant < 3 || chars[baseConsonant - 3] != 0x0d4d) {
-+ hasPostBaseForm = false;
-+ }
-+ }
-+
- if (IndicClassTable::isConsonant(charClass)) {
- if (postBaseLimit == 0 || seenVattu ||
- (baseConsonant > baseLimit && !classTable->isVirama(chars[baseConsonant - 1])) ||
-@@ -645,6 +720,20 @@
- output.writeChar(chars[i], i, tagArray4);
- }
-
-+ /* 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))) {
-+ if (baseConsonant < 3 || chars[baseConsonant - 3] != 0x0d4d) {
-+ output.swapChars(-1, -3);
-+
-+ if (mpreFixups)
-+ mpreFixups->reduce();
-+ }
-+ }
-+
- if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) != 0) {
- output.writeMbelow();
- output.writeSMbelow(); // FIXME: there are no SMs in these scripts...
---- icu.orig/source/layout/MPreFixups.h 2006-11-10 09:42:47.000000000 +0000
-+++ icu/source/layout/MPreFixups.h 2006-12-21 09:13:47.000000000 +0000
-@@ -31,6 +31,8 @@
-
- void apply(LEGlyphStorage &glyphStorage);
-
-+ void reduce();
-+
- private:
- FixupData *fFixupData;
- le_int32 fFixupCount;
---- icu.orig/source/layout/MPreFixups.cpp 2006-11-10 09:42:47.000000000 +0000
-+++ icu/source/layout/MPreFixups.cpp 2006-12-21 09:16:33.000000000 +0000
-@@ -40,6 +40,12 @@
- }
- }
-
-+void MPreFixups::reduce()
-+{
-+ if (fFixupCount > 0)
-+ fFixupCount--;
-+}
-+
- void MPreFixups::apply(LEGlyphStorage &glyphStorage)
- {
- for (le_int32 fixup = 0; fixup < fFixupCount; fixup += 1) {
diff --git a/icu.icu5506.multiplevowels.patch b/icu.icu5506.multiplevowels.patch
deleted file mode 100644
index 5e13b6e..0000000
--- a/icu.icu5506.multiplevowels.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-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
-@@ -423,6 +423,57 @@
-
- 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;
-+ }
-+ else if ( (charCount >= cursor + 4) &&
-+ (
-+ chars[cursor] == 0x0D4D &&
-+ (chars[cursor + 1] >= 0x0d15 && chars[cursor + 1] <= 0x0d39) &&
-+ chars[cursor + 2] == 0x0D4D && chars[cursor + 3] == 0x0D30
-+ )
-+ ) {
-+ return cursor + 1;
-+ }
-+ /*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;
- }
diff --git a/icu.icuXXXX.malayalam.bysyllable.patch b/icu.icuXXXX.malayalam.bysyllable.patch
deleted file mode 100644
index 6db0f94..0000000
--- a/icu.icuXXXX.malayalam.bysyllable.patch
+++ /dev/null
@@ -1,501 +0,0 @@
-diff -ruN icu.orig/source/layout/IndicReordering.h icu/source/layout/IndicReordering.h
---- icu.orig/source/layout/IndicReordering.h 2007-04-27 10:28:22.000000000 +0100
-+++ icu/source/layout/IndicReordering.h 2007-04-27 10:39:22.000000000 +0100
-@@ -142,6 +142,7 @@
- // do not instantiate
- IndicReordering();
-
-+public:
- static le_int32 findSyllable(const IndicClassTable *classTable, const LEUnicode *chars, le_int32 prev, le_int32 charCount);
-
- };
-diff -ruN icu.orig/source/layout/LayoutEngine.cpp icu/source/layout/LayoutEngine.cpp
---- icu.orig/source/layout/LayoutEngine.cpp 2007-04-27 10:28:22.000000000 +0100
-+++ icu/source/layout/LayoutEngine.cpp 2007-04-27 10:39:22.000000000 +0100
-@@ -14,6 +14,7 @@
- #include "CanonShaping.h"
- #include "HanLayoutEngine.h"
- #include "HangulLayoutEngine.h"
-+#include "MalayalamLayoutEngine.h"
- #include "IndicLayoutEngine.h"
- #include "KhmerLayoutEngine.h"
- #include "ThaiLayoutEngine.h"
-@@ -179,7 +180,7 @@
- }
-
- le_int32 LayoutEngine::characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success)
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32)
- {
- if (LE_FAILURE(success)) {
- return 0;
-@@ -499,11 +500,13 @@
-
- if (gsubTable != NULL && gsubTable->coversScript(scriptTag = OpenTypeLayoutEngine::getScriptTag(scriptCode))) {
- switch (scriptCode) {
-+ case mlymScriptCode:
-+ result = new MalayalamOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable);
-+ break;
- case bengScriptCode:
- case devaScriptCode:
- case gujrScriptCode:
- case kndaScriptCode:
-- case mlymScriptCode:
- case oryaScriptCode:
- case guruScriptCode:
- case tamlScriptCode:
-@@ -560,11 +563,13 @@
- result = new GXLayoutEngine(fontInstance, scriptCode, languageCode, morphTable);
- } else {
- switch (scriptCode) {
-+ case mlymScriptCode:
-+ result = new MalayalamOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags);
-+ break;
- case bengScriptCode:
- case devaScriptCode:
- case gujrScriptCode:
- case kndaScriptCode:
-- case mlymScriptCode:
- case oryaScriptCode:
- case guruScriptCode:
- case tamlScriptCode:
-diff -ruN icu.orig/source/layout/LEGlyphStorage.h icu/source/layout/LEGlyphStorage.h
---- icu.orig/source/layout/LEGlyphStorage.h 2007-04-27 10:28:22.000000000 +0100
-+++ icu/source/layout/LEGlyphStorage.h 2007-04-27 10:43:54.000000000 +0100
-@@ -413,6 +413,8 @@
- */
- void adoptGlyphArray(LEGlyphStorage &from);
-
-+ void appendGlyphStorage(LEGlyphStorage &from);
-+
- /**
- * Delete the char indices array and replace it with the one
- * in from
. Set the char indices array pointer
-diff -ruN icu.orig/source/layout/Makefile.in icu/source/layout/Makefile.in
---- icu.orig/source/layout/Makefile.in 2007-04-27 10:28:22.000000000 +0100
-+++ icu/source/layout/Makefile.in 2007-04-27 10:39:22.000000000 +0100
-@@ -66,6 +66,7 @@
- ArabicLayoutEngine.o \
- GXLayoutEngine.o \
- HanLayoutEngine.o \
-+MalayalamLayoutEngine.o \
- IndicLayoutEngine.o \
- LayoutEngine.o \
- ContextualGlyphSubstProc.o \
-diff -ruN icu.orig/source/layout/MalayalamLayoutEngine.cpp icu/source/layout/MalayalamLayoutEngine.cpp
---- icu.orig/source/layout/MalayalamLayoutEngine.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ icu/source/layout/MalayalamLayoutEngine.cpp 2007-04-27 10:44:26.000000000 +0100
-@@ -0,0 +1,121 @@
-+
-+/*
-+ *
-+ * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved
-+ *
-+ */
-+
-+#include "LETypes.h"
-+#include "LayoutEngine.h"
-+#include "OpenTypeLayoutEngine.h"
-+#include "MalayalamLayoutEngine.h"
-+#include "ScriptAndLanguageTags.h"
-+
-+#include "GlyphSubstitutionTables.h"
-+#include "GlyphDefinitionTables.h"
-+#include "GlyphPositioningTables.h"
-+
-+#include "GDEFMarkFilter.h"
-+#include "LEGlyphStorage.h"
-+
-+#include "IndicReordering.h"
-+
-+#include
-+
-+U_NAMESPACE_BEGIN
-+
-+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MalayalamOpenTypeLayoutEngine)
-+
-+void LEGlyphStorage::appendGlyphStorage(LEGlyphStorage &from)
-+{
-+ if (fInsertionList) applyInsertions();
-+ if (from.fInsertionList) from.applyInsertions();
-+
-+ if (!from.fGlyphCount)
-+ return;
-+
-+ le_int32 newGlyphCount = fGlyphCount + from.fGlyphCount;
-+
-+ fGlyphs = (LEGlyphID*)LE_GROW_ARRAY(fGlyphs, newGlyphCount);
-+ LE_ARRAY_COPY(fGlyphs+fGlyphCount, from.fGlyphs, from.fGlyphCount);
-+
-+ le_int32 nLargestIndex = 0;
-+ if (fGlyphCount)
-+ {
-+ for (le_int32 i = 0; i < fGlyphCount; ++i)
-+ {
-+ if (fCharIndices[i] > nLargestIndex)
-+ nLargestIndex = fCharIndices[i];
-+ }
-+ nLargestIndex+=1;
-+ }
-+ fCharIndices = (le_int32 *)LE_GROW_ARRAY(fCharIndices, newGlyphCount);
-+ for (le_int32 i = 0; i < from.fGlyphCount; ++i)
-+ fCharIndices[fGlyphCount+i] = from.fCharIndices[i] + nLargestIndex;
-+
-+ fAuxData = (le_uint32 *)LE_GROW_ARRAY(fAuxData, newGlyphCount);
-+ LE_ARRAY_COPY(fAuxData+fGlyphCount, from.fAuxData, from.fGlyphCount);
-+
-+ fGlyphCount = newGlyphCount;
-+}
-+
-+le_int32 MalayalamOpenTypeLayoutEngine::glyphPostProcessing(LEGlyphStorage &tempGlyphStorage, LEGlyphStorage &glyphStorage, LEErrorCode &success)
-+{
-+ if (LE_FAILURE(success)) {
-+ return 0;
-+ }
-+
-+ glyphStorage.appendGlyphStorage(tempGlyphStorage);
-+
-+ return glyphStorage.getGlyphCount();
-+}
-+
-+
-+le_int32 MalayalamOpenTypeLayoutEngine::computeGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, LEGlyphStorage &glyphStorage, LEErrorCode &success)
-+{
-+ if (LE_FAILURE(success)) {
-+ return 0;
-+ }
-+
-+ if (chars == NULL || offset < 0 || count < 0 || max < 0 || offset >= max || offset + count > max) {
-+ success = LE_ILLEGAL_ARGUMENT_ERROR;
-+ return 0;
-+ }
-+
-+ le_int32 outGlyphCount=0;
-+
-+ const IndicClassTable *classTable = IndicClassTable::getScriptClassTable(fScriptCode);
-+ le_int32 prev = 0;
-+ while (prev < count)
-+ {
-+ le_int32 outCharCount=0, fakeGlyphCount=0,fSyllableCount=0;
-+ LEUnicode *outChars = NULL;
-+ LEGlyphStorage fakeGlyphStorage;
-+
-+ le_int32 syllable = IndicReordering::findSyllable(classTable, chars+offset, prev, count);
-+ outCharCount = characterProcessing(chars+prev, offset, syllable-prev, max, rightToLeft, outChars, fakeGlyphStorage, success, ++fSyllableCount);
-+
-+ if (LE_FAILURE(success)) {
-+ return 0;
-+ }
-+
-+ if (outChars != NULL) {
-+ fakeGlyphCount = glyphProcessing(outChars, 0, outCharCount, outCharCount, rightToLeft, fakeGlyphStorage, success);
-+ LE_DELETE_ARRAY(outChars); // FIXME: a subclass may have allocated this, in which case this delete might not work...
-+ } else {
-+ fakeGlyphCount = glyphProcessing(chars+prev, offset, syllable-prev, max, rightToLeft, fakeGlyphStorage, success);
-+ }
-+
-+ if (LE_FAILURE(success)) {
-+ return 0;
-+ }
-+
-+ outGlyphCount = glyphPostProcessing(fakeGlyphStorage, glyphStorage, success);
-+
-+ prev = syllable;
-+ }
-+
-+ return outGlyphCount;
-+}
-+
-+U_NAMESPACE_END
-diff -ruN icu.orig/source/layout/MalayalamLayoutEngine.h icu/source/layout/MalayalamLayoutEngine.h
---- icu.orig/source/layout/MalayalamLayoutEngine.h 1970-01-01 01:00:00.000000000 +0100
-+++ icu/source/layout/MalayalamLayoutEngine.h 2007-04-27 10:39:52.000000000 +0100
-@@ -0,0 +1,41 @@
-+
-+/*
-+ *
-+ * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved
-+ *
-+ */
-+
-+#ifndef __MALAYALAMLAYOUTENGINE_H
-+#define __MALAYALAMLAYOUTENGINE_H
-+
-+#include "IndicLayoutEngine.h"
-+
-+U_NAMESPACE_BEGIN
-+
-+class MalayalamOpenTypeLayoutEngine : public IndicOpenTypeLayoutEngine
-+{
-+public:
-+ MalayalamOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode,
-+ le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable) :
-+ IndicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable)
-+
-+ {}
-+
-+ MalayalamOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode,
-+ le_int32 typoFlags) :
-+ IndicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags)
-+
-+ {}
-+
-+ virtual UClassID getDynamicClassID() const;
-+ static UClassID getStaticClassID();
-+
-+protected:
-+ virtual le_int32 glyphPostProcessing(LEGlyphStorage &tempGlyphStorage, LEGlyphStorage &glyphStorage, LEErrorCode &success);
-+
-+ virtual le_int32 computeGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, LEGlyphStorage &glyphStorage, LEErrorCode &success);
-+};
-+
-+U_NAMESPACE_END
-+#endif
-+
-diff -ru icu.orig/source/layout/MalayalamLayoutEngine.cpp icu/source/layout/MalayalamLayoutEngine.cpp
---- icu.orig/source/layout/MalayalamLayoutEngine.cpp 2007-11-28 10:44:11.000000000 +0000
-+++ icu/source/layout/MalayalamLayoutEngine.cpp 2007-11-28 11:40:18.000000000 +0000
-@@ -30,6 +30,11 @@
- {
- if (fInsertionList) applyInsertions();
- if (from.fInsertionList) from.applyInsertions();
-+ if ((!fInsertionList) && (from.fInsertionList))
-+ {
-+ fInsertionList = from.fInsertionList;
-+ from.fInsertionList = NULL;
-+ }
-
- if (!from.fGlyphCount)
- return;
-diff -ru icu/source/layout/ArabicLayoutEngine.cpp icu.works/source/layout/ArabicLayoutEngine.cpp
---- icu.orig/source/layout/ArabicLayoutEngine.cpp 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/ArabicLayoutEngine.cpp 2008-01-25 12:19:42.000000000 +0000
-@@ -64,7 +64,7 @@
- // Output: characters, char indices, tags
- // Returns: output character count
- le_int32 ArabicOpenTypeLayoutEngine::characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success)
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32)
- {
- if (LE_FAILURE(success)) {
- return 0;
-diff -ru icu/source/layout/ArabicLayoutEngine.h icu.works/source/layout/ArabicLayoutEngine.h
---- icu.orig/source/layout/ArabicLayoutEngine.h 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/ArabicLayoutEngine.h 2008-01-25 12:20:14.000000000 +0000
-@@ -112,7 +112,7 @@
- * @internal
- */
- virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success);
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32 fSyllableCount);
-
- /**
- * This method applies the GPOS table if it is present, otherwise it ensures that all vowel
-diff -ru icu/source/layout/HangulLayoutEngine.cpp icu.works/source/layout/HangulLayoutEngine.cpp
---- icu.orig/source/layout/HangulLayoutEngine.cpp 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/HangulLayoutEngine.cpp 2008-01-25 12:20:38.000000000 +0000
-@@ -207,7 +207,7 @@
- }
-
- le_int32 HangulOpenTypeLayoutEngine::characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success)
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32)
- {
- if (LE_FAILURE(success)) {
- return 0;
-diff -ru icu/source/layout/HangulLayoutEngine.h icu.works/source/layout/HangulLayoutEngine.h
---- icu.orig/source/layout/HangulLayoutEngine.h 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/HangulLayoutEngine.h 2008-01-25 12:21:15.000000000 +0000
-@@ -117,7 +117,7 @@
- * @internal
- */
- virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success);
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32 fSyllableCount=0);
- };
-
- U_NAMESPACE_END
-diff -ru icu/source/layout/HanLayoutEngine.cpp icu.works/source/layout/HanLayoutEngine.cpp
---- icu.orig/source/layout/HanLayoutEngine.cpp 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/HanLayoutEngine.cpp 2008-01-25 12:21:25.000000000 +0000
-@@ -52,7 +52,7 @@
- }
-
- le_int32 HanOpenTypeLayoutEngine::characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool /*rightToLeft*/,
-- LEUnicode *&/*outChars*/, LEGlyphStorage &glyphStorage, LEErrorCode &success)
-+ LEUnicode *&/*outChars*/, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32)
- {
- if (LE_FAILURE(success)) {
- return 0;
-diff -ru icu/source/layout/HanLayoutEngine.h icu.works/source/layout/HanLayoutEngine.h
---- icu.orig/source/layout/HanLayoutEngine.h 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/HanLayoutEngine.h 2008-01-25 12:21:32.000000000 +0000
-@@ -96,7 +96,7 @@
- * @internal
- */
- virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success);
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32 fSyllableCount=0);
-
- };
-
-diff -ru icu/source/layout/IndicLayoutEngine.cpp icu.works/source/layout/IndicLayoutEngine.cpp
---- icu.orig/source/layout/IndicLayoutEngine.cpp 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/IndicLayoutEngine.cpp 2008-01-25 12:13:41.000000000 +0000
-@@ -75,7 +75,7 @@
- // Output: characters, char indices, tags
- // Returns: output character count
- le_int32 IndicOpenTypeLayoutEngine::characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success)
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32 fSyllableCount)
- {
- if (LE_FAILURE(success)) {
- return 0;
-@@ -105,7 +105,7 @@
-
- // NOTE: assumes this allocates featureTags...
- // (probably better than doing the worst case stuff here...)
-- le_int32 outCharCount = IndicReordering::reorder(&chars[offset], count, fScriptCode, outChars, glyphStorage, &fMPreFixups);
-+ le_int32 outCharCount = IndicReordering::reorder(&chars[offset], count, fScriptCode, outChars, glyphStorage, &fMPreFixups, fSyllableCount);
-
- glyphStorage.adoptGlyphCount(outCharCount);
- return outCharCount;
-diff -ru icu/source/layout/IndicLayoutEngine.h icu.works/source/layout/IndicLayoutEngine.h
---- icu.orig/source/layout/IndicLayoutEngine.h 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/IndicLayoutEngine.h 2008-01-25 12:13:12.000000000 +0000
-@@ -119,7 +119,7 @@
- * @internal
- */
- virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success);
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32 fSyllableCount = 0);
-
- /**
- * This method does character to glyph mapping, applies the GSUB table and applies
-diff -ru icu/source/layout/IndicReordering.cpp icu.works/source/layout/IndicReordering.cpp
---- icu.orig/source/layout/IndicReordering.cpp 2008-01-25 12:23:56.000000000 +0000
-+++ icu/source/layout/IndicReordering.cpp 2008-01-25 12:15:32.000000000 +0000
-@@ -138,8 +138,8 @@
- }
-
- public:
-- IndicReorderingOutput(LEUnicode *outChars, LEGlyphStorage &glyphStorage, MPreFixups *mpreFixups)
-- : fSyllableCount(0), fOutIndex(0), fOutChars(outChars), fGlyphStorage(glyphStorage),
-+ IndicReorderingOutput(LEUnicode *outChars, LEGlyphStorage &glyphStorage, MPreFixups *mpreFixups,le_int32 fSyllableCount_)
-+ : fSyllableCount(fSyllableCount_), fOutIndex(0), fOutChars(outChars), fGlyphStorage(glyphStorage),
- fMpre(0), fMpreIndex(0), fMbelow(0), fMbelowIndex(0), fMabove(0), fMaboveIndex(0),
- fMpost(0), fMpostIndex(0), fLengthMark(0), fLengthMarkIndex(0), fVirama(0), fViramaIndex(0),
- fMatraFeatures(0), fMPreOutIndex(-1), fMPreFixups(mpreFixups),
-@@ -480,7 +480,7 @@
-
- le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le_int32 scriptCode,
- LEUnicode *outChars, LEGlyphStorage &glyphStorage,
-- MPreFixups **outMPreFixups)
-+ MPreFixups **outMPreFixups, le_int32 fSyllableCount)
- {
- MPreFixups *mpreFixups = NULL;
- const IndicClassTable *classTable = IndicClassTable::getScriptClassTable(scriptCode);
-@@ -489,7 +489,7 @@
- mpreFixups = new MPreFixups(charCount);
- }
-
-- IndicReorderingOutput output(outChars, glyphStorage, mpreFixups);
-+ IndicReorderingOutput output(outChars, glyphStorage, mpreFixups, fSyllableCount);
- le_int32 i, prev = 0;
- le_bool lastInWord = FALSE;
-
-diff -ru icu/source/layout/IndicReordering.h icu.works/source/layout/IndicReordering.h
---- icu.orig/source/layout/IndicReordering.h 2008-01-25 12:23:56.000000000 +0000
-+++ icu/source/layout/IndicReordering.h 2008-01-25 12:13:59.000000000 +0000
-@@ -132,7 +132,7 @@
-
- static le_int32 reorder(const LEUnicode *theChars, le_int32 charCount, le_int32 scriptCode,
- LEUnicode *outChars, LEGlyphStorage &glyphStorage,
-- MPreFixups **outMPreFixups);
-+ MPreFixups **outMPreFixups, le_int32 fSyllableCount = 0);
-
- static void adjustMPres(MPreFixups *mpreFixups, LEGlyphStorage &glyphStorage);
-
-diff -ru icu/source/layout/KhmerLayoutEngine.cpp icu.works/source/layout/KhmerLayoutEngine.cpp
---- icu.orig/source/layout/KhmerLayoutEngine.cpp 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/KhmerLayoutEngine.cpp 2008-01-25 12:21:48.000000000 +0000
-@@ -42,7 +42,7 @@
- // Output: characters, char indices, tags
- // Returns: output character count
- le_int32 KhmerOpenTypeLayoutEngine::characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success)
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32)
- {
- if (LE_FAILURE(success)) {
- return 0;
-diff -ru icu/source/layout/KhmerLayoutEngine.h icu.works/source/layout/KhmerLayoutEngine.h
---- icu.orig/source/layout/KhmerLayoutEngine.h 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/KhmerLayoutEngine.h 2008-01-25 12:21:56.000000000 +0000
-@@ -120,7 +120,7 @@
- * @internal
- */
- virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success);
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32 fSyllableCount=0);
-
- };
-
-diff -ru icu/source/layout/LayoutEngine.h icu.works/source/layout/LayoutEngine.h
---- icu.orig/source/layout/LayoutEngine.h 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/LayoutEngine.h 2008-01-25 12:22:14.000000000 +0000
-@@ -164,7 +164,7 @@
- * @internal
- */
- virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success);
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32 fSyllableCount=0);
-
- /**
- * This method does the glyph processing. It converts an array of characters
-diff -ru icu/source/layout/OpenTypeLayoutEngine.cpp icu.works/source/layout/OpenTypeLayoutEngine.cpp
---- icu.orig/source/layout/OpenTypeLayoutEngine.cpp 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/OpenTypeLayoutEngine.cpp 2008-01-25 12:22:32.000000000 +0000
-@@ -149,7 +149,7 @@
- }
-
- le_int32 OpenTypeLayoutEngine::characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success)
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32)
- {
- if (LE_FAILURE(success)) {
- return 0;
-diff -ru icu/source/layout/OpenTypeLayoutEngine.h icu.works/source/layout/OpenTypeLayoutEngine.h
---- icu.orig/source/layout/OpenTypeLayoutEngine.h 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/OpenTypeLayoutEngine.h 2008-01-25 12:22:39.000000000 +0000
-@@ -247,7 +247,7 @@
- * @internal
- */
- virtual le_int32 characterProcessing(const LEUnicode /*chars*/[], le_int32 offset, le_int32 count, le_int32 max, le_bool /*rightToLeft*/,
-- LEUnicode *&/*outChars*/, LEGlyphStorage &glyphStorage, LEErrorCode &success);
-+ LEUnicode *&/*outChars*/, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32 fSyllableCount=0);
-
- /**
- * This method does character to glyph mapping, and applies the GSUB table. The
-diff -ru icu/source/layout/TibetanLayoutEngine.cpp icu.works/source/layout/TibetanLayoutEngine.cpp
---- icu.orig/source/layout/TibetanLayoutEngine.cpp 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/TibetanLayoutEngine.cpp 2008-01-25 12:22:52.000000000 +0000
-@@ -48,7 +48,7 @@
- // Output: characters, char indices, tags
- // Returns: output character count
- le_int32 TibetanOpenTypeLayoutEngine::characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success)
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32)
- {
- if (LE_FAILURE(success)) {
- return 0;
-diff -ru icu/source/layout/TibetanLayoutEngine.h icu.works/source/layout/TibetanLayoutEngine.h
---- icu.orig/source/layout/TibetanLayoutEngine.h 2007-12-12 18:58:06.000000000 +0000
-+++ icu/source/layout/TibetanLayoutEngine.h 2008-01-25 12:22:59.000000000 +0000
-@@ -120,7 +120,7 @@
- * @internal
- */
- virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
-- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success);
-+ LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success, le_int32 fSyllableCount=0);
-
- };
diff --git a/icu.spec b/icu.spec
index 5117977..fb01747 100644
--- a/icu.spec
+++ b/icu.spec
@@ -1,6 +1,6 @@
Name: icu
Version: 4.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: International Components for Unicode
Group: Development/Tools
License: MIT
@@ -9,17 +9,13 @@ Source0: http://download.icu-project.org/files/icu4c/4.0/icu4c-4_0-src.tgz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: doxygen, autoconf
-Patch1: icu-3.4-multiarchdevel.patch
-Patch2: icu-config
-Patch3: icu.icu5418.malayam.patch
-Patch4: icu.icu5431.malayam.patch
-Patch5: icu.icuXXXX.virama.prevnext.patch
-Patch6: icu.icu5557.safety.patch
-Patch7: icu.icu5506.multiplevowels.patch
-Patch8: icu.icuXXXX.malayalam.bysyllable.patch
-Patch9: icu.icu6008.arm.padding.patch
-Patch10: icu.icu6213.worstcase.patch
-Patch11: icu.icu6284.strictalias.patch
+Patch1: icu-config
+Patch2: icu-3.4-multiarchdevel.patch
+Patch3: icu.icuXXXX.virama.prevnext.patch
+Patch4: icu.icu5557.safety.patch
+Patch5: icu.icu6008.arm.padding.patch
+Patch6: icu.icu6213.worstcase.patch
+Patch7: icu.icu6284.strictalias.patch
%description
Tools and utilities for developing with icu.
@@ -58,16 +54,12 @@ Group: Documentation
%prep
%setup -q -n %{name}
-%patch1 -p1 -b .multiarchdevel
-%patch3 -p1 -b .icu5418.malayam.patch
-%patch4 -p1 -b .icu5431.malayam.patch
-%patch5 -p1 -b .icuXXXX.virama.prevnext.patch
-%patch6 -p1 -b .icu5557.safety.patch
-%patch7 -p1 -b .icu5506.multiplevowels.patch
-%patch8 -p1 -b .icuXXXX.malayalam.bysyllable.patch
-%patch9 -p1 -b .icu6008.arm.padding.patch
-%patch10 -p1 -b .icu6213.worstcase.patch
-%patch11 -p1 -b .icu6284.strictalias.patch
+%patch2 -p1 -b .multiarchdevel
+%patch3 -p1 -b .icuXXXX.virama.prevnext.patch
+%patch4 -p1 -b .icu5557.safety.patch
+%patch5 -p1 -b .icu6008.arm.padding.patch
+%patch6 -p1 -b .icu6213.worstcase.patch
+%patch7 -p1 -b .icu6284.strictalias.patch
%build
cd source
@@ -140,6 +132,11 @@ rm -rf $RPM_BUILD_ROOT
%doc source/__docs/%{name}/html/*
%changelog
+* Tue Aug 26 2008 Caolan McNamara - 4.0-2
+- Resolves: rhbz#459698 drop Malayalam patches. Note test with Rachana/Meera
+ instead of Lohit Malayalam before filing bugs against icu wrt.
+ Malayalam rendering
+
* Sat Jul 05 2008 Caolan McNamara - 4.0-1
- final release