From dec451cf676d1175e6913abf7600d45fa3f8c699 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Tue, 24 Mar 2015 01:01:06 +0400 Subject: Update Unicode data up to v7.0 * Two newly adopted currency symbols: the Azerbaijan manat and the Russia ruble * Pictographic symbols (including many emoji), geometric symbols, arrows, and ornaments originating from the Wingdings and Webdings sets * Twenty-three new lesser-used and historic scripts extending support for written languages of North America, China, India, other Asian countries, and Africa * Letters used in Teuthonista and other transcriptional systems, and a new notational set, Duployan For more details, see http://www.unicode.org/versions/Unicode7.0.0/ The Properties struct's .*Diff members were narrowed down to signed 15 bits and the unicodeVersion has been expanded to 8 bits. [ChangeLog][QtCore] Unicode data updated to v.7.0 Change-Id: I93ab6f79fa3b05f61abc7279f1d046834c1c1a0b Reviewed-by: Lars Knoll --- src/corelib/tools/qchar.cpp | 23 ++++++++++++ src/corelib/tools/qchar.h | 28 ++++++++++++++- src/corelib/tools/qunicodetools.cpp | 6 ++-- src/gui/text/qharfbuzzng.cpp | 41 +++++++++++++++++++++- src/gui/text/qtextengine.cpp | 8 ++++- .../fontconfig/qfontconfigdatabase.cpp | 25 ++++++++++++- 6 files changed, 124 insertions(+), 7 deletions(-) (limited to 'src') 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); -- cgit v1.2.3