Resolves: rhbz#459698 drop Malayalam patches.
This commit is contained in:
parent
81145ce114
commit
d889065a33
@ -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[] =
|
|
||||||
{
|
|
@ -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) {
|
|
@ -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;
|
|
||||||
}
|
|
@ -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 <code>from</code>. 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 <stdio.h>
|
|
||||||
+
|
|
||||||
+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);
|
|
||||||
|
|
||||||
};
|
|
41
icu.spec
41
icu.spec
@ -1,6 +1,6 @@
|
|||||||
Name: icu
|
Name: icu
|
||||||
Version: 4.0
|
Version: 4.0
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: International Components for Unicode
|
Summary: International Components for Unicode
|
||||||
Group: Development/Tools
|
Group: Development/Tools
|
||||||
License: MIT
|
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)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
BuildRequires: doxygen, autoconf
|
BuildRequires: doxygen, autoconf
|
||||||
|
|
||||||
Patch1: icu-3.4-multiarchdevel.patch
|
Patch1: icu-config
|
||||||
Patch2: icu-config
|
Patch2: icu-3.4-multiarchdevel.patch
|
||||||
Patch3: icu.icu5418.malayam.patch
|
Patch3: icu.icuXXXX.virama.prevnext.patch
|
||||||
Patch4: icu.icu5431.malayam.patch
|
Patch4: icu.icu5557.safety.patch
|
||||||
Patch5: icu.icuXXXX.virama.prevnext.patch
|
Patch5: icu.icu6008.arm.padding.patch
|
||||||
Patch6: icu.icu5557.safety.patch
|
Patch6: icu.icu6213.worstcase.patch
|
||||||
Patch7: icu.icu5506.multiplevowels.patch
|
Patch7: icu.icu6284.strictalias.patch
|
||||||
Patch8: icu.icuXXXX.malayalam.bysyllable.patch
|
|
||||||
Patch9: icu.icu6008.arm.padding.patch
|
|
||||||
Patch10: icu.icu6213.worstcase.patch
|
|
||||||
Patch11: icu.icu6284.strictalias.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Tools and utilities for developing with icu.
|
Tools and utilities for developing with icu.
|
||||||
@ -58,16 +54,12 @@ Group: Documentation
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}
|
%setup -q -n %{name}
|
||||||
%patch1 -p1 -b .multiarchdevel
|
%patch2 -p1 -b .multiarchdevel
|
||||||
%patch3 -p1 -b .icu5418.malayam.patch
|
%patch3 -p1 -b .icuXXXX.virama.prevnext.patch
|
||||||
%patch4 -p1 -b .icu5431.malayam.patch
|
%patch4 -p1 -b .icu5557.safety.patch
|
||||||
%patch5 -p1 -b .icuXXXX.virama.prevnext.patch
|
%patch5 -p1 -b .icu6008.arm.padding.patch
|
||||||
%patch6 -p1 -b .icu5557.safety.patch
|
%patch6 -p1 -b .icu6213.worstcase.patch
|
||||||
%patch7 -p1 -b .icu5506.multiplevowels.patch
|
%patch7 -p1 -b .icu6284.strictalias.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
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
cd source
|
cd source
|
||||||
@ -140,6 +132,11 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%doc source/__docs/%{name}/html/*
|
%doc source/__docs/%{name}/html/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Aug 26 2008 Caolan McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 4.0-1
|
* Sat Jul 05 2008 Caolan McNamara <caolanm@redhat.com> - 4.0-1
|
||||||
- final release
|
- final release
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user