Мне удалось воспроизвести иероглифические тексты (не тайские, а китайские и японские) с использованием libharu.Прежде всего, я использовал Unicode-режим, пожалуйста, обратитесь к HPDF_UseUTFEncodings () документации по функциям.
Для языка C вот последовательность вызовов API libharu, необходимых для преодоления вашей проблемы:*
HPDF_UseUTFEncodings(docHandle);
HPDF_SetCurrentEncoder(docHandle, "UTF-8");
Здесь docHandle
является действительным HPDF_Doc
объектом.
Следующая часть - правильная работа со шрифтами UTF:
const char * libFontName = HPDF_LoadTTFontFromFile(docHandle, fontFileName.c_str(), font_embed::EmbedFonts);
HPDF_Font font = HPDF_GetFont(docHandle, libFontName, "UTF-8");
После этих вызовов вы можете отобразить Unicodeтексты, содержащие тайские символы.Также обратите внимание на флаг встраивания (3-й параметр LoadTTFontFromFile) - ваш файл PDF может быть нечитаемым из-за внешних ссылок на шрифты.Если вы не в восторге от выходного размера PDF, вы можете просто встроить шрифты.
Я протестировал несколько тайских .ttf-шрифтов, найденных в Google, и они были отредактированы.Также (это может быть важно, но я не уверен) я использую форк libharu https://github.com/kdeforche/libharu, который теперь объединен с главной веткой.