[Development] ICU decision?

Koehne Kai Kai.Koehne at digia.com
Wed Aug 7 15:39:36 CEST 2013

> 07.08.2013, 12:38, "guillaume.belz at free.fr" <guillaume.belz at free.fr>:
> > Hello,
> > Since Qt 5, a criticism that I often see is the number of libs to
> > deploy and its size. ICU is 26.4 Mb (windows mingw) while basic Qt libs are
> much less (core+gui+widgets+qml+quick = 19.6 Mb for example). On
> embedded, the extra cost will be even more critical (and criticable) I think the
> third solution (with "fake" light ICU) is a solution for the size of the libs. A
> third-bis solution would be to have a fake-light-ICU included statically in Qt
> Core if necessary, to the problem of many libs.
> Most of ICU size comes from its data which can be loaded from separate .dat
> file, which can be customized. I believe most of developers don't require all
> of ICU data (i.e. all kinds of data for all available locales), and shrinking useless
> data will reduce package size greatly.

I've been pondering with shipping ICU with a separate .dat file. The problem is that the file has to be loaded before any ICU api is called - this is tricky to ensure from within Qt. It's also not that easy to actually find the ICU file - e.g. loading qt.conf already requires codecs. 

Finally, deciding what you actually want is not that easy, even with http://apps.icu-project.org/datacustom/ . Power users can certainly do so, but it's certainly not newbie friendly.

> Also, with zero-size fake data ICU will
> be still functional, e.g. able to perform conversions between UTF flavors,
> SCSU and BOCU-1.

True, but that's not free either: Just icuuc and icuin are around 4 MB together.

Personally, I think ICU should be entirely optional for QtCore on Windows. Windows API's offers much of the functionality we're using ICU for. QtCore could then optionally try to load an ICU plugin for additional data ...



More information about the Development mailing list