qt5base-lts/util/unicode
Marc Mutz 2737b5e36a QUnicodeTables: pack Properties struct
GCC doesn't like the sequence

   : 5
   : 5
   : 8
   : 6
   : 8

and inserts a :6 padding between the :5 and the :8 and a :2 padding
between the :6 and the :8, growing the bitfield by 8 bits of embedded
padding and another byte to bring the struct back to sizeof % 2 == 0.

Fix by reshuffling the elements and adding a static_assert for the
next round.

Saves ~5KiB in QtCore executable size.

Change-Id: I4758a6f48ba389abc2aee92f60997d42ebb0e5b8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-09-04 10:06:19 +02:00
..
codecs/big5 Remove usages of deprecated APIs from QtAlgorithms 2019-06-29 21:58:36 +02:00
data Update Text segmentation and line break data to Unicode 10.0 2018-01-03 07:47:26 +00:00
x11 Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
.gitattributes Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
main.cpp QUnicodeTables: pack Properties struct 2019-09-04 10:06:19 +02:00
README Move text-related code out of corelib/tools/ to corelib/text/ 2019-07-10 17:05:30 +02:00
unicode.pro Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
writingSystems.sh Updated license headers 2016-01-21 18:55:18 +00:00

Unicode is used to generate the unicode data in src/corelib/tools.

To update:
* Find the data (UAX #44, UCD; not the XML version) at
  ftp://www.unicode.org/Public/zipped/$Version/
* Unpack the zip file; for each file in data/, replace with the new
  version; find the *BreakProperty.txt in auxiliary/. (These last are
  only in the zip, not in the web-space's unpacked versions.)
* If needed, add an entry to enum QChar::UnicodeVersion for the new
  Unicode version
* In that case, also update main.cpp's initAgeMap and DATA_VERSION_S*
  to match
* Build this project. Its binary, unicode, ignores command-line
  options and assumes it is being run from this directory. When run,
  it produces lots of output. Hopefully that doesn't matter.
* Assertions may trigger: if so, study code and understand what's more
  complicated about this update; talk to folk named in the git logs,
  maybe push a WIP to gerrit to solicit advice. Some bit-field may
  need to be expanded, for example. In some cases QChar may need
  additions to some of its enums.
* Build with the modified code, fix any compilation issues.
* That may have updated qtbase/src/corelib/text/qunicodetables.cpp;
  if so the update matters; be sure to commit the changes to data/ at
  the same time and update tools/qt_attribution.json to match; use the
  UCD Revision number, rather than the Unicode standard number, as the
  Version, for all that qunicodetables.cpp uses the latter.

The script writingSystems.sh generates a list of writing systems,
ostensibly as a the basis for updating QFontDatabase::WritingSystem
enum; however, the Release 20 output of it contains many more writing
systems than are present in that enum, suggesting it has not been run
in a very long time. Further research needed.