Нативный сложный текст в headless-режиме на Windows

Нативный строитель appearance шейпит арабский, иврит, комбинируемые последовательности и смешанный двунаправленный текст на Windows через соответствующие DLL HarfBuzz и FriBidi

Перед первой операцией сложного шейпинга задайте HOTPDF_HARFBUZZ_LIBRARY и HOTPDF_FRIBIDI_LIBRARY доверенными абсолютными путями к библиотекам; по умолчанию это libharfbuzz-0.dll и libfribidi-0.dll

Поставляйте DLL и их транзитивные зависимости под архитектуру процесса: приложениям Win32 нужны бинарники x86, а приложениям Win64 — x64

Разместите зависимые DLL в контролируемом приложением каталоге поиска до загрузки шейпинговых библиотек; абсолютный путь к главной DLL сам по себе не обеспечивает все зависимые библиотеки

Простые прямые глифы Unicode продолжают использовать встроенный шрифт без загрузки шейпингового runtime; если необходимый сложный шейпинг не может загрузить runtime или не находит нужный символ, сообщается сбой

API хранит логический Unicode в значениях полей, кластерах ToUnicode и ActualText, а рисует реальные контекстные глифы в визуальном порядке

CharacterSpacing и WordSpacing применяются один раз на шейпленный кластер и участвуют в измеренной раскладке; действуют также отмена вызывающего и бюджеты глифов, шрифтов и объектов

Нативный приёмочный набор проверяет реальные процессы Delphi и FPC на обеих архитектурах Windows, с независимыми сверками глифов, advance и пикселей MuPDF против выводов Linux

Контракты шейпинга и appearance см. в HPDFShapeHeadlessText и THPDFHeadlessTextAppearanceOptions