qt5base-lts/tests/auto/corelib/text
Giuseppe D'Angelo a794c5e287 Unicode: fix the extended grapheme cluster algorithm
UAX #29 in Unicode 11 changed the EGC algorithm to its current form.
Although Qt has upgraded the Unicode tables all the way up to
Unicode 13, the algorithm has never been adapted; in other words,
it has been working by chance for years. Luckily, MOST
of the cases were dealt with correctly, but emoji handling
actually manages to break it.

This commit:

* Adds parsing of emoji-data.txt into the unicode table generator.
  That is necessary to extract the Extended_Pictographic property,
  which is used by the EGC algorithm.

* Regenerates the tables.

* Removes some obsoleted grapheme cluster break properties, and
  adds the ones added in the meanwhile.

* Rewrites the EGC algorithm according to Unicode 13. This is
  done by simplifying a lot the lookup table. Some rules (GB11,
  GB12, GB13) can't be done by the table alone so some hand-rolled
  code is necessary in that case.

* Thanks to these fixes, the complete upstream GraphemeBreakTest
  now passes. Remove the "edited" version that ignored some rows
  (because they were failing).

Change-Id: Iaa07cb2e6d0ab9deac28397f46d9af189d2edf8b
Pick-to: 6.1 6.0 5.15
Fixes: QTBUG-92822
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2021-04-16 20:31:39 +02:00
..
qbytearray Remove meaningless QT_NO_UNICODE_LITERAL check in QString literal tests 2021-03-30 10:37:13 +01:00
qbytearrayapisymmetry Remove the qmake project files 2021-01-07 15:32:28 +01:00
qbytearraylist Remove the qmake project files 2021-01-07 15:32:28 +01:00
qbytearraymatcher Remove the qmake project files 2021-01-07 15:32:28 +01:00
qbytearrayview Remove the qmake project files 2021-01-07 15:32:28 +01:00
qbytedatabuffer Remove the qmake project files 2021-01-07 15:32:28 +01:00
qchar Remove the qmake project files 2021-01-07 15:32:28 +01:00
qcollator Mark variables that might be unused under some configurations 2021-04-11 19:53:43 +02:00
qlatin1string Remove the qmake project files 2021-01-07 15:32:28 +01:00
qlocale Add the "Territory" enumerated type for QLocale 2021-04-15 20:17:49 +08:00
qregularexpression QRegularExpression: add move constructor 2021-01-26 17:20:01 +01:00
qstring Remove meaningless QT_NO_UNICODE_LITERAL check in QString literal tests 2021-03-30 10:37:13 +01:00
qstring_no_cast_from_bytearray Remove the qmake project files 2021-01-07 15:32:28 +01:00
qstringapisymmetry Remove the qmake project files 2021-01-07 15:32:28 +01:00
qstringbuilder Remove the qmake project files 2021-01-07 15:32:28 +01:00
qstringconverter Remove the qmake project files 2021-01-07 15:32:28 +01:00
qstringiterator Remove the qmake project files 2021-01-07 15:32:28 +01:00
qstringlist Remove the qmake project files 2021-01-07 15:32:28 +01:00
qstringmatcher Remove the qmake project files 2021-01-07 15:32:28 +01:00
qstringtokenizer Remove the qmake project files 2021-01-07 15:32:28 +01:00
qstringview Remove the qmake project files 2021-01-07 15:32:28 +01:00
qtextboundaryfinder Unicode: fix the extended grapheme cluster algorithm 2021-04-16 20:31:39 +02:00
CMakeLists.txt Android: blacklist a list of failing tests for android 2020-11-04 12:27:49 +02:00