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