(note: you need to build against the 3.0-dev branch in fcft)
This PR implements all changes necessary for the upcoming fcft-3.0 release.
layout tags removed from fcft_grapheme_rasterize()
wchar_t -> char32_t transition
The last point is the big one. I decided to update foot to use char32_t instead of wchar_t, for pretty much the same reasons fcft (plus, fcft's APIs now use char32_t...).
Now, there aren't really any corresponding c32*() functions to replace with wchar ones. What we have is c32rtomb() and mbrtoc32(), allowing us to convert one codepoint at a time. That's it. No c32len() or similar.
For this reason, I've added a c32 abstraction layer that implements the various string functions used throughout foot. For the time being, most are wrappers around the wcs*() equivalents. The only ones that aren't, are the conversion functions, which are implemented by means of c32rtomb() and mbrto32().
I've added compile time checks that verify:
a) that wchar_t and char32_t have the same size
b) that both use UTF-32
The last point is, in general, not true on FreeBSD. However, they do use UTF-32 in UTF-8 locales.
The idea is to be able replace these, if necessary, or when appropriate APIs become available. Note: we could start using an external Unicode library, but I decided not to.