Чудесная библиотека freetype сделана в расчете на то, что после malloc всегда выполняется memset(ptr, 0, size)
Стоит изменить ее функции выделения памяти, и она начинает падать.
Не менее чудесная библиотека fontconfig имеет функцию вычисления длины утф8 строки в символах и максимальной длины символа в байтах, которая использует для этого посимвольное конвертирование utf8->ucs4.
Вобщем жутковато. И это я еще глубоко не копал...