- Support of Emoji requires to cover the full range of Unicode code points (0x000000...0x10ffff).
- Unicode 8.0 support in Tcl was introduced by Jan Nijtmans during EuroTcl 2015.
- Emoji is quite popular on mobile devices, specifically fully supported on Android starting with the 4.4 release.
- There's a nice TrueType font named Symbola, which implements most of Emoji.
- By redefining TCL_UTF_MAX (default value 3) the valid range of supported code points can be adapted as well as the in-core memory requirements.
- Convention: TCL_UTF_MAX=3 and TCL_UTF_MAX=4 fits in 16 bit memory representation (sizeof (Tcl_UniChar)).
- Convention: TCL_UTF_MAX>4 needs 32 bit memory representation (sizeof (Tcl_UniChar)).
- TCL_UTF_MAX>=4 is able to cover the full range of code points (0x000000...0x10ffff).
- TCL_UTF_MAX=4 requires surrogate pairs internally to represent a code point larger than 0x00ffff by using two consecutive 16 bit values resembling UTF-8 notation.
- Usage of surrogate pairs is expensive and error prone with respect to counting the number of code points (and repeats a range of strange problems observed in the most popular programming languages of the year of this writing (whose names both start with the letter 'J')).
- TCL_UTF_MAX=6 forces usage of 32 bit as internal Tcl_UniChar representation and eliminates counting issues as well as escaping issues.
- 32 bit representation fits font rendering with freetype.
And last but not least:
- We are the Borg! AndroWish need not be compatible with nothing. You will be assimilated.
But there's hope: