summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/tools/qchar.cpp23
-rw-r--r--src/corelib/tools/qchar.h28
-rw-r--r--src/corelib/tools/qunicodetools.cpp6
-rw-r--r--src/gui/text/qharfbuzzng.cpp41
-rw-r--r--src/gui/text/qtextengine.cpp8
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp25
-rw-r--r--tests/auto/corelib/tools/qchar/tst_qchar.cpp20
-rw-r--r--util/unicode/main.cpp104
8 files changed, 211 insertions, 44 deletions
diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp
index dba0241cf9..5c094772b8 100644
--- a/src/corelib/tools/qchar.cpp
+++ b/src/corelib/tools/qchar.cpp
@@ -377,6 +377,29 @@ QT_BEGIN_NAMESPACE
\value Script_Sharada
\value Script_SoraSompeng
\value Script_Takri
+ \value Script_CaucasianAlbanian
+ \value Script_BassaVah
+ \value Script_Duployan
+ \value Script_Elbasan
+ \value Script_Grantha
+ \value Script_PahawhHmong
+ \value Script_Khojki
+ \value Script_LinearA
+ \value Script_Mahajani
+ \value Script_Manichaean
+ \value Script_MendeKikakui
+ \value Script_Modi
+ \value Script_Mro
+ \value Script_OldNorthArabian
+ \value Script_Nabataean
+ \value Script_Palmyrene
+ \value Script_PauCinHau
+ \value Script_OldPermic
+ \value Script_PsalterPahlavi
+ \value Script_Siddham
+ \value Script_Khudawadi
+ \value Script_Tirhuta
+ \value Script_WarangCiti
\omitvalue ScriptCount
diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h
index 5630642fc9..97e2aa7088 100644
--- a/src/corelib/tools/qchar.h
+++ b/src/corelib/tools/qchar.h
@@ -250,6 +250,31 @@ public:
Script_SoraSompeng,
Script_Takri,
+ // Unicode 7.0 additions
+ Script_CaucasianAlbanian,
+ Script_BassaVah,
+ Script_Duployan,
+ Script_Elbasan,
+ Script_Grantha,
+ Script_PahawhHmong,
+ Script_Khojki,
+ Script_LinearA,
+ Script_Mahajani,
+ Script_Manichaean,
+ Script_MendeKikakui,
+ Script_Modi,
+ Script_Mro,
+ Script_OldNorthArabian,
+ Script_Nabataean,
+ Script_Palmyrene,
+ Script_PauCinHau,
+ Script_OldPermic,
+ Script_PsalterPahlavi,
+ Script_Siddham,
+ Script_Khudawadi,
+ Script_Tirhuta,
+ Script_WarangCiti,
+
ScriptCount
};
@@ -339,7 +364,8 @@ public:
Unicode_6_0,
Unicode_6_1,
Unicode_6_2,
- Unicode_6_3
+ Unicode_6_3,
+ Unicode_7_0
};
// ****** WHEN ADDING FUNCTIONS, CONSIDER ADDING TO QCharRef TOO
diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp
index bce5a75d9e..56576c69f1 100644
--- a/src/corelib/tools/qunicodetools.cpp
+++ b/src/corelib/tools/qunicodetools.cpp
@@ -49,7 +49,7 @@ namespace QUnicodeTools {
// -----------------------------------------------------------------------------------------------------
//
// The text boundaries determination algorithm.
-// See http://www.unicode.org/reports/tr29/tr29-23.html
+// See http://www.unicode.org/reports/tr29/tr29-25.html
//
// -----------------------------------------------------------------------------------------------------
@@ -341,7 +341,7 @@ static void getSentenceBreaks(const ushort *string, quint32 len, QCharAttributes
// -----------------------------------------------------------------------------------------------------
//
// The line breaking algorithm.
-// See http://www.unicode.org/reports/tr14/tr14-32.html
+// See http://www.unicode.org/reports/tr14/tr14-33.html
//
// -----------------------------------------------------------------------------------------------------
@@ -659,7 +659,7 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length,
// ----------------------------------------------------------------------------
//
-// The Unicode script property. See http://www.unicode.org/reports/tr24/tr24-21.html
+// The Unicode script property. See http://www.unicode.org/reports/tr24/tr24-22.html
//
// ----------------------------------------------------------------------------
diff --git a/src/gui/text/qharfbuzzng.cpp b/src/gui/text/qharfbuzzng.cpp
index 4baf1fd03c..102c62ea8a 100644
--- a/src/gui/text/qharfbuzzng.cpp
+++ b/src/gui/text/qharfbuzzng.cpp
@@ -94,6 +94,8 @@ static const hb_script_t _qtscript_to_hbscript[] = {
HB_SCRIPT_BUHID,
HB_SCRIPT_TAGBANWA,
HB_SCRIPT_COPTIC,
+
+ // Unicode 4.0 additions
HB_SCRIPT_LIMBU,
HB_SCRIPT_TAI_LE,
HB_SCRIPT_LINEAR_B,
@@ -102,6 +104,8 @@ static const hb_script_t _qtscript_to_hbscript[] = {
HB_SCRIPT_OSMANYA,
HB_SCRIPT_CYPRIOT,
HB_SCRIPT_BRAILLE,
+
+ // Unicode 4.1 additions
HB_SCRIPT_BUGINESE,
HB_SCRIPT_NEW_TAI_LUE,
HB_SCRIPT_GLAGOLITIC,
@@ -109,11 +113,15 @@ static const hb_script_t _qtscript_to_hbscript[] = {
HB_SCRIPT_SYLOTI_NAGRI,
HB_SCRIPT_OLD_PERSIAN,
HB_SCRIPT_KHAROSHTHI,
+
+ // Unicode 5.0 additions
HB_SCRIPT_BALINESE,
HB_SCRIPT_CUNEIFORM,
HB_SCRIPT_PHOENICIAN,
HB_SCRIPT_PHAGS_PA,
HB_SCRIPT_NKO,
+
+ // Unicode 5.1 additions
HB_SCRIPT_SUNDANESE,
HB_SCRIPT_LEPCHA,
HB_SCRIPT_OL_CHIKI,
@@ -125,6 +133,8 @@ static const hb_script_t _qtscript_to_hbscript[] = {
HB_SCRIPT_CARIAN,
HB_SCRIPT_LYDIAN,
HB_SCRIPT_CHAM,
+
+ // Unicode 5.2 additions
HB_SCRIPT_TAI_THAM,
HB_SCRIPT_TAI_VIET,
HB_SCRIPT_AVESTAN,
@@ -140,16 +150,45 @@ static const hb_script_t _qtscript_to_hbscript[] = {
HB_SCRIPT_INSCRIPTIONAL_PAHLAVI,
HB_SCRIPT_OLD_TURKIC,
HB_SCRIPT_KAITHI,
+
+ // Unicode 6.0 additions
HB_SCRIPT_BATAK,
HB_SCRIPT_BRAHMI,
HB_SCRIPT_MANDAIC,
+
+ // Unicode 6.1 additions
HB_SCRIPT_CHAKMA,
HB_SCRIPT_MEROITIC_CURSIVE,
HB_SCRIPT_MEROITIC_HIEROGLYPHS,
HB_SCRIPT_MIAO,
HB_SCRIPT_SHARADA,
HB_SCRIPT_SORA_SOMPENG,
- HB_SCRIPT_TAKRI
+ HB_SCRIPT_TAKRI,
+
+ // Unicode 7.0 additions
+ HB_SCRIPT_CAUCASIAN_ALBANIAN,
+ HB_SCRIPT_BASSA_VAH,
+ HB_SCRIPT_DUPLOYAN,
+ HB_SCRIPT_ELBASAN,
+ HB_SCRIPT_GRANTHA,
+ HB_SCRIPT_PAHAWH_HMONG,
+ HB_SCRIPT_KHOJKI,
+ HB_SCRIPT_LINEAR_A,
+ HB_SCRIPT_MAHAJANI,
+ HB_SCRIPT_MANICHAEAN,
+ HB_SCRIPT_MENDE_KIKAKUI,
+ HB_SCRIPT_MODI,
+ HB_SCRIPT_MRO,
+ HB_SCRIPT_OLD_NORTH_ARABIAN,
+ HB_SCRIPT_NABATAEAN,
+ HB_SCRIPT_PALMYRENE,
+ HB_SCRIPT_PAU_CIN_HAU,
+ HB_SCRIPT_OLD_PERMIC,
+ HB_SCRIPT_PSALTER_PAHLAVI,
+ HB_SCRIPT_SIDDHAM,
+ HB_SCRIPT_KHUDAWADI,
+ HB_SCRIPT_TIRHUTA,
+ HB_SCRIPT_WARANG_CITI
};
Q_STATIC_ASSERT(QChar::ScriptCount == sizeof(_qtscript_to_hbscript) / sizeof(_qtscript_to_hbscript[0]));
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 873f6b37d9..10a61d3c84 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -881,16 +881,22 @@ static inline void qt_getJustificationOpportunities(const ushort *string, int le
int spaceAs;
switch (si.analysis.script) {
+ case QChar::Script_Arabic:
+ case QChar::Script_Syriac:
case QChar::Script_Nko:
case QChar::Script_Mandaic:
case QChar::Script_Mongolian:
case QChar::Script_PhagsPa:
+ case QChar::Script_Manichaean:
+ case QChar::Script_PsalterPahlavi:
// same as default but inter character justification takes precedence
spaceAs = Justification_Arabic_Space;
break;
+ case QChar::Script_Tibetan:
case QChar::Script_Hiragana:
case QChar::Script_Katakana:
+ case QChar::Script_Bopomofo:
case QChar::Script_Han:
// same as default but inter character justification is the only option
spaceAs = Justification_Character;
@@ -1630,10 +1636,10 @@ void QTextEngine::itemize() const
for (int i = 0; i < length; ++i) {
switch (analysis[i].script) {
case QChar::Script_Latin:
- case QChar::Script_Han:
case QChar::Script_Hiragana:
case QChar::Script_Katakana:
case QChar::Script_Bopomofo:
+ case QChar::Script_Han:
analysis[i].script = QChar::Script_Common;
break;
default:
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index bd22a8fce5..112bb8e0a6 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -218,7 +218,30 @@ static const char *specialLanguages[] = {
"hmd", // Miao
"sa", // Sharada
"srb", // SoraSompeng
- "doi" // Takri
+ "doi", // Takri
+ "lez", // CaucasianAlbanian
+ "bsq", // BassaVah
+ "fr", // Duployan
+ "sq", // Elbasan
+ "sa", // Grantha
+ "hnj", // PahawhHmong
+ "sd", // Khojki
+ "lab", // LinearA
+ "hi", // Mahajani
+ "xmn", // Manichaean
+ "men", // MendeKikakui
+ "mr", // Modi
+ "mru", // Mro
+ "xna", // OldNorthArabian
+ "arc", // Nabataean
+ "arc", // Palmyrene
+ "ctd", // PauCinHau
+ "kv", // OldPermic
+ "pal", // PsalterPahlavi
+ "sa", // Siddham
+ "sd", // Khudawadi
+ "mai", // Tirhuta
+ "hoc" // WarangCiti
};
Q_STATIC_ASSERT(sizeof(specialLanguages) / sizeof(const char *) == QChar::ScriptCount);
diff --git a/tests/auto/corelib/tools/qchar/tst_qchar.cpp b/tests/auto/corelib/tools/qchar/tst_qchar.cpp
index 4e882263bf..f80d6e6d93 100644
--- a/tests/auto/corelib/tools/qchar/tst_qchar.cpp
+++ b/tests/auto/corelib/tools/qchar/tst_qchar.cpp
@@ -135,6 +135,8 @@ void tst_QChar::toUpper()
QVERIFY(QChar(0x1c7).toUpper().unicode() == 0x1c7);
QVERIFY(QChar(0x1c8).toUpper().unicode() == 0x1c7);
QVERIFY(QChar(0x1c9).toUpper().unicode() == 0x1c7);
+ QVERIFY(QChar(0x25c).toUpper().unicode() == 0xa7ab);
+ QVERIFY(QChar(0x29e).toUpper().unicode() == 0xa7b0);
QVERIFY(QChar(0x1d79).toUpper().unicode() == 0xa77d);
QVERIFY(QChar(0x0265).toUpper().unicode() == 0xa78d);
@@ -144,6 +146,8 @@ void tst_QChar::toUpper()
QVERIFY(QChar::toUpper(0x1c7) == 0x1c7);
QVERIFY(QChar::toUpper(0x1c8) == 0x1c7);
QVERIFY(QChar::toUpper(0x1c9) == 0x1c7);
+ QVERIFY(QChar::toUpper(0x25c) == 0xa7ab);
+ QVERIFY(QChar::toUpper(0x29e) == 0xa7b0);
QVERIFY(QChar::toUpper(0x1d79) == 0xa77d);
QVERIFY(QChar::toUpper(0x0265) == 0xa78d);
@@ -160,6 +164,8 @@ void tst_QChar::toLower()
QVERIFY(QChar(0x1c9).toLower().unicode() == 0x1c9);
QVERIFY(QChar(0xa77d).toLower().unicode() == 0x1d79);
QVERIFY(QChar(0xa78d).toLower().unicode() == 0x0265);
+ QVERIFY(QChar(0xa7ab).toLower().unicode() == 0x25c);
+ QVERIFY(QChar(0xa7b1).toLower().unicode() == 0x287);
QVERIFY(QChar::toLower('a') == 'a');
QVERIFY(QChar::toLower('A') == 'a');
@@ -168,6 +174,8 @@ void tst_QChar::toLower()
QVERIFY(QChar::toLower(0x1c9) == 0x1c9);
QVERIFY(QChar::toLower(0xa77d) == 0x1d79);
QVERIFY(QChar::toLower(0xa78d) == 0x0265);
+ QVERIFY(QChar::toLower(0xa7ab) == 0x25c);
+ QVERIFY(QChar::toLower(0xa7b1) == 0x287);
QVERIFY(QChar::toLower(0x10400) == 0x10428);
QVERIFY(QChar::toLower(0x10428) == 0x10428);
@@ -205,6 +213,8 @@ void tst_QChar::toCaseFolded()
QVERIFY(QChar(0x1c9).toCaseFolded().unicode() == 0x1c9);
QVERIFY(QChar(0xa77d).toCaseFolded().unicode() == 0x1d79);
QVERIFY(QChar(0xa78d).toCaseFolded().unicode() == 0x0265);
+ QVERIFY(QChar(0xa7ab).toCaseFolded().unicode() == 0x25c);
+ QVERIFY(QChar(0xa7b1).toCaseFolded().unicode() == 0x287);
QVERIFY(QChar::toCaseFolded('a') == 'a');
QVERIFY(QChar::toCaseFolded('A') == 'a');
@@ -213,6 +223,8 @@ void tst_QChar::toCaseFolded()
QVERIFY(QChar::toCaseFolded(0x1c9) == 0x1c9);
QVERIFY(QChar::toCaseFolded(0xa77d) == 0x1d79);
QVERIFY(QChar::toCaseFolded(0xa78d) == 0x0265);
+ QVERIFY(QChar::toCaseFolded(0xa7ab) == 0x25c);
+ QVERIFY(QChar::toCaseFolded(0xa7b1) == 0x287);
QVERIFY(QChar::toCaseFolded(0x10400) == 0x10428);
QVERIFY(QChar::toCaseFolded(0x10428) == 0x10428);
@@ -341,6 +353,7 @@ void tst_QChar::isPrint()
QVERIFY(QChar(0x1e9e).isPrint()); // assigned in 5.1
QVERIFY(QChar::isPrint(0x1b000)); // assigned in 6.0
QVERIFY(QChar::isPrint(0x110d0)); // assigned in 5.1
+ QVERIFY(!QChar::isPrint(0x1bca0)); // assigned in 7.0
}
void tst_QChar::isUpper()
@@ -471,6 +484,7 @@ void tst_QChar::joiningType()
QVERIFY(QChar(0x0627).joiningType() == QChar::Joining_Right);
QVERIFY(QChar(0x05d0).joiningType() == QChar::Joining_None);
QVERIFY(QChar(0x00ad).joiningType() == QChar::Joining_Transparent);
+ QVERIFY(QChar(0xA872).joiningType() == QChar::Joining_Left);
QVERIFY(QChar::joiningType('a') == QChar::Joining_None);
QVERIFY(QChar::joiningType('0') == QChar::Joining_None);
@@ -484,6 +498,8 @@ void tst_QChar::joiningType()
QVERIFY(QChar::joiningType(0x2FA17) == QChar::Joining_None);
QVERIFY(QChar::joiningType(0xA872) == QChar::Joining_Left);
+ QVERIFY(QChar::joiningType(0x10ACD) == QChar::Joining_Left);
+ QVERIFY(QChar::joiningType(0x10AD7) == QChar::Joining_Left);
}
void tst_QChar::combiningClass()
@@ -574,6 +590,10 @@ void tst_QChar::unicodeVersion()
QVERIFY(QChar(0x061c).unicodeVersion() == QChar::Unicode_6_3);
QVERIFY(QChar::unicodeVersion(0x061c) == QChar::Unicode_6_3);
+ QVERIFY(QChar(0x20bd).unicodeVersion() == QChar::Unicode_7_0);
+ QVERIFY(QChar::unicodeVersion(0x20bd) == QChar::Unicode_7_0);
+ QVERIFY(QChar::unicodeVersion(0x16b00) == QChar::Unicode_7_0);
+
QVERIFY(QChar(0x09ff).unicodeVersion() == QChar::Unicode_Unassigned);
QVERIFY(QChar::unicodeVersion(0x09ff) == QChar::Unicode_Unassigned);
QVERIFY(QChar::unicodeVersion(0x110000) == QChar::Unicode_Unassigned);
diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp
index af193c3bc2..2f6e28bd9f 100644
--- a/util/unicode/main.cpp
+++ b/util/unicode/main.cpp
@@ -43,8 +43,8 @@
#include <private/qunicodetables_p.h>
#endif
-#define DATA_VERSION_S "6.3"
-#define DATA_VERSION_STR "QChar::Unicode_6_3"
+#define DATA_VERSION_S "7.0"
+#define DATA_VERSION_STR "QChar::Unicode_7_0"
static QHash<QByteArray, QChar::UnicodeVersion> age_map;
@@ -70,6 +70,7 @@ static void initAgeMap()
{ QChar::Unicode_6_1, "6.1" },
{ QChar::Unicode_6_2, "6.2" },
{ QChar::Unicode_6_3, "6.3" },
+ { QChar::Unicode_7_0, "7.0" },
{ QChar::Unicode_Unassigned, 0 }
};
AgeMap *d = ageMap;
@@ -694,6 +695,30 @@ static void initScriptMap()
{ QChar::Script_Sharada, "Sharada" },
{ QChar::Script_SoraSompeng, "SoraSompeng" },
{ QChar::Script_Takri, "Takri" },
+ // 7.0
+ { QChar::Script_CaucasianAlbanian, "CaucasianAlbanian" },
+ { QChar::Script_BassaVah, "BassaVah" },
+ { QChar::Script_Duployan, "Duployan" },
+ { QChar::Script_Elbasan, "Elbasan" },
+ { QChar::Script_Grantha, "Grantha" },
+ { QChar::Script_PahawhHmong, "PahawhHmong" },
+ { QChar::Script_Khojki, "Khojki" },
+ { QChar::Script_LinearA, "LinearA" },
+ { QChar::Script_Mahajani, "Mahajani" },
+ { QChar::Script_Manichaean, "Manichaean" },
+ { QChar::Script_MendeKikakui, "MendeKikakui" },
+ { QChar::Script_Modi, "Modi" },
+ { QChar::Script_Mro, "Mro" },
+ { QChar::Script_OldNorthArabian, "OldNorthArabian" },
+ { QChar::Script_Nabataean, "Nabataean" },
+ { QChar::Script_Palmyrene, "Palmyrene" },
+ { QChar::Script_PauCinHau, "PauCinHau" },
+ { QChar::Script_OldPermic, "OldPermic" },
+ { QChar::Script_PsalterPahlavi, "PsalterPahlavi" },
+ { QChar::Script_Siddham, "Siddham" },
+ { QChar::Script_Khudawadi, "Khudawadi" },
+ { QChar::Script_Tirhuta, "Tirhuta" },
+ { QChar::Script_WarangCiti, "WarangCiti" },
// unhandled
{ QChar::Script_Unknown, 0 }
};
@@ -712,23 +737,23 @@ static const char *property_string =
" ushort direction : 8; /* 5 used */\n"
" ushort combiningClass : 8;\n"
" ushort joining : 3;\n"
- " signed short digitValue : 5; /* 5 used */\n"
+ " signed short digitValue : 5;\n"
" signed short mirrorDiff : 16;\n"
- " signed short lowerCaseDiff : 16;\n"
- " signed short upperCaseDiff : 16;\n"
- " signed short titleCaseDiff : 16;\n"
- " signed short caseFoldDiff : 16;\n"
" ushort lowerCaseSpecial : 1;\n"
+ " signed short lowerCaseDiff : 15;\n"
" ushort upperCaseSpecial : 1;\n"
+ " signed short upperCaseDiff : 15;\n"
" ushort titleCaseSpecial : 1;\n"
+ " signed short titleCaseDiff : 15;\n"
" ushort caseFoldSpecial : 1;\n"
- " ushort unicodeVersion : 4;\n"
+ " signed short caseFoldDiff : 15;\n"
+ " ushort unicodeVersion : 8; /* 5 used */\n"
" ushort nfQuickCheck : 8;\n" // could be narrowed
" ushort graphemeBreakClass : 4; /* 4 used */\n"
" ushort wordBreakClass : 4; /* 4 used */\n"
" ushort sentenceBreakClass : 8; /* 4 used */\n"
" ushort lineBreakClass : 8; /* 6 used */\n"
- " ushort script : 8; /* 7 used */\n"
+ " ushort script : 8;\n"
"};\n\n"
"Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4) Q_DECL_NOTHROW;\n"
"Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2) Q_DECL_NOTHROW;\n"
@@ -786,7 +811,7 @@ struct PropertyFlags {
// from ArabicShaping.txt
QChar::JoiningType joining : 3;
// from DerivedAge.txt
- QChar::UnicodeVersion age : 4;
+ QChar::UnicodeVersion age : 5;
int digitValue;
int mirrorDiff : 16;
@@ -849,6 +874,7 @@ static int appendToSpecialCaseMap(const QList<int> &map)
return pos;
}
+// DerivedCoreProperties.txt
static inline bool isDefaultIgnorable(uint ucs4)
{
// Default_Ignorable_Code_Point:
@@ -860,9 +886,11 @@ static inline bool isDefaultIgnorable(uint ucs4)
return ucs4 == 0xad;
return ucs4 == 0x034f
+ || ucs4 == 0x061c
|| (ucs4 >= 0x115f && ucs4 <= 0x1160)
|| (ucs4 >= 0x17b4 && ucs4 <= 0x17b5)
|| (ucs4 >= 0x180b && ucs4 <= 0x180d)
+ || ucs4 == 0x180e
|| (ucs4 >= 0x200b && ucs4 <= 0x200f)
|| (ucs4 >= 0x202a && ucs4 <= 0x202e)
|| (ucs4 >= 0x2060 && ucs4 <= 0x206f)
@@ -871,7 +899,9 @@ static inline bool isDefaultIgnorable(uint ucs4)
|| ucs4 == 0xfeff
|| ucs4 == 0xffa0
|| (ucs4 >= 0xfff0 && ucs4 <= 0xfff8)
- || (ucs4 >= 0x1d173 && ucs4 <= 0xe0fff && (ucs4 <= 0x1d17a || ucs4 >= 0xe0000));
+ || (ucs4 >= 0x1bca0 && ucs4 <= 0x1bca3)
+ || (ucs4 >= 0x1d173 && ucs4 <= 0x1d17a)
+ || (ucs4 >= 0xe0000 && ucs4 <= 0xe0fff);
}
struct UnicodeData {
@@ -1092,7 +1122,7 @@ static void readUnicodeData()
int upperCase = properties[UD_UpperCase].toInt(&ok, 16);
Q_ASSERT(ok);
int diff = upperCase - codepoint;
- if (qAbs(diff) >= (1<<14)) {
+ if (qAbs(diff) >= (1<<13)) {
qWarning() << "upperCaseDiff exceeded (" << hex << codepoint << "->" << upperCase << "); map it for special case";
// if the condition below doesn't hold anymore we need to modify our special upper casing code in qchar.cpp
Q_ASSERT(!QChar::requiresSurrogates(codepoint) && !QChar::requiresSurrogates(upperCase));
@@ -1112,7 +1142,7 @@ static void readUnicodeData()
int lowerCase = properties[UD_LowerCase].toInt(&ok, 16);
Q_ASSERT(ok);
int diff = lowerCase - codepoint;
- if (qAbs(diff) >= (1<<14)) {
+ if (qAbs(diff) >= (1<<13)) {
qWarning() << "lowerCaseDiff exceeded (" << hex << codepoint << "->" << lowerCase << "); map it for special case";
// if the condition below doesn't hold anymore we need to modify our special lower casing code in qchar.cpp
Q_ASSERT(!QChar::requiresSurrogates(codepoint) && !QChar::requiresSurrogates(lowerCase));
@@ -1135,7 +1165,7 @@ static void readUnicodeData()
int titleCase = properties[UD_TitleCase].toInt(&ok, 16);
Q_ASSERT(ok);
int diff = titleCase - codepoint;
- if (qAbs(diff) >= (1<<14)) {
+ if (qAbs(diff) >= (1<<13)) {
qWarning() << "titleCaseDiff exceeded (" << hex << codepoint << "->" << titleCase << "); map it for special case";
// if the condition below doesn't hold anymore we need to modify our special title casing code in qchar.cpp
Q_ASSERT(!QChar::requiresSurrogates(codepoint) && !QChar::requiresSurrogates(titleCase));
@@ -1701,7 +1731,7 @@ static void readCaseFolding()
if (foldMap.size() == 1) {
int caseFolded = foldMap.at(0);
int diff = caseFolded - codepoint;
- if (qAbs(diff) >= (1<<14)) {
+ if (qAbs(diff) >= (1<<13)) {
qWarning() << "caseFoldDiff exceeded (" << hex << codepoint << "->" << caseFolded << "); map it for special case";
// if the condition below doesn't hold anymore we need to modify our special case folding code in qchar.cpp
Q_ASSERT(!QChar::requiresSurrogates(codepoint) && !QChar::requiresSurrogates(caseFolded));
@@ -2182,10 +2212,10 @@ static QByteArray createPropertyInfo()
// we reserve one bit more than in the assert below for the sign
Q_ASSERT(maxMirroredDiff < (1<<12));
- Q_ASSERT(maxLowerCaseDiff < (1<<14));
- Q_ASSERT(maxUpperCaseDiff < (1<<14));
- Q_ASSERT(maxTitleCaseDiff < (1<<14));
- Q_ASSERT(maxCaseFoldDiff < (1<<14));
+ Q_ASSERT(maxLowerCaseDiff < (1<<13));
+ Q_ASSERT(maxUpperCaseDiff < (1<<13));
+ Q_ASSERT(maxTitleCaseDiff < (1<<13));
+ Q_ASSERT(maxCaseFoldDiff < (1<<13));
const int BMP_BLOCKSIZE = 32;
const int BMP_SHIFT = 5;
@@ -2337,37 +2367,37 @@ static QByteArray createPropertyInfo()
// " ushort joining : 3;\n"
out += QByteArray::number( p.joining );
out += ", ";
-// " signed short digitValue : 5; /* 5 used */\n"
+// " signed short digitValue : 5;\n"
out += QByteArray::number( p.digitValue );
out += ", ";
// " signed short mirrorDiff : 16;\n"
-// " signed short lowerCaseDiff : 16;\n"
-// " signed short upperCaseDiff : 16;\n"
-// " signed short titleCaseDiff : 16;\n"
-// " signed short caseFoldDiff : 16;\n"
out += QByteArray::number( p.mirrorDiff );
out += ", ";
- out += QByteArray::number( p.lowerCaseDiff );
- out += ", ";
- out += QByteArray::number( p.upperCaseDiff );
- out += ", ";
- out += QByteArray::number( p.titleCaseDiff );
- out += ", ";
- out += QByteArray::number( p.caseFoldDiff );
- out += ", ";
// " ushort lowerCaseSpecial : 1;\n"
-// " ushort upperCaseSpecial : 1;\n"
-// " ushort titleCaseSpecial : 1;\n"
-// " ushort caseFoldSpecial : 1;\n"
+// " signed short lowerCaseDiff : 15;\n"
out += QByteArray::number( p.lowerCaseSpecial );
out += ", ";
+ out += QByteArray::number( p.lowerCaseDiff );
+ out += ", ";
+// " ushort upperCaseSpecial : 1;\n"
+// " signed short upperCaseDiff : 15;\n"
out += QByteArray::number( p.upperCaseSpecial );
out += ", ";
+ out += QByteArray::number( p.upperCaseDiff );
+ out += ", ";
+// " ushort titleCaseSpecial : 1;\n"
+// " signed short titleCaseDiff : 15;\n"
out += QByteArray::number( p.titleCaseSpecial );
out += ", ";
+ out += QByteArray::number( p.titleCaseDiff );
+ out += ", ";
+// " ushort caseFoldSpecial : 1;\n"
+// " signed short caseFoldDiff : 15;\n"
out += QByteArray::number( p.caseFoldSpecial );
out += ", ";
-// " ushort unicodeVersion : 4;\n"
+ out += QByteArray::number( p.caseFoldDiff );
+ out += ", ";
+// " ushort unicodeVersion : 8; /* 5 used */\n"
out += QByteArray::number( p.age );
out += ", ";
// " ushort nfQuickCheck : 8;\n"
@@ -2385,7 +2415,7 @@ static QByteArray createPropertyInfo()
out += ", ";
out += QByteArray::number( p.lineBreakClass );
out += ", ";
-// " ushort script : 8; /* 7 used */\n"
+// " ushort script : 8;\n"
out += QByteArray::number( p.script );
out += " },";
}