HPDFShapeHeadlessText
function HPDFShapeHeadlessText(const Text: UnicodeString;
const FontBytes: SysUtils.TBytes; MaximumGlyphs: Integer;
CancellationToken: THPDFCancellationToken;
MaximumLineAdvance: Double = 0; CharacterAdvance: Double = 0;
WordAdvance: Double = 0): THPDFHeadlessShapedGlyphs;
Использует переданный вызывающим шрифт OpenType через HarfBuzz и разрешает визуальные run Unicode через FriBidi, сохраняя кластеры и позиционирование в шрифтовых координатах по 1000 единиц
Абзацы CR/LF шейпятся независимо; положительный MaximumLineAdvance запрашивает логический перенос кластеров до финального прохода шейпинга
Автоматические физические строки наследуют направляющие вставки, переопределения, изоляты и парные скобки исходного полного абзаца; у каждой строки свои сброс пробелов, визуальное переупорядочивание и контекст соединения HarfBuzz
Порядок абзаца вычисляется один раз и переиспользуется без мутаций между физическими строками; реальный разделитель CR/LF начинает новый абзац и сбрасывает состояние управления
Когда автоматический перенос меняет текст, SourceOffset остаётся относительным к нормализованной перенесённой логической последовательности, включая вставленные разрывы строк U+000A и существующее удаление пробела-разделителя; UnicodeText глифов, значения полей и PDF ActualText сохраняют свои устоявшиеся логические контракты
CharacterAdvance и WordAdvance — необязательные конечные продвижения в тех же шрифтовых координатах по 1000 единиц; продвижение символа применяется один раз на шейпленный кластер, включая финальный, кроме кластеров только из направляющих управляющих символов Unicode, а продвижение слова применяется к кластеру U+0020; оба учитываются в логическом переносе и возвращаемых продвижениях глифов
Входные и сгенерированные глифы, включая вставленные записи разрывов строк, ограничены тем же суммарным MaximumGlyphs; некорректные суррогаты и отсутствующие требуемые глифы приводят к ошибке, а отмена проверяется между абзацами, run, кешированным разрешением строк и контрольными точками переноса
Linux использует libharfbuzz.so.0 и libfribidi.so.0; Windows требует библиотек совпадающей архитектуры с опциональными явными путями через HOTPDF_HARFBUZZ_LIBRARY и HOTPDF_FRIBIDI_LIBRARY
Для шрифтовых прав PDF, объектов CID, ToUnicode, связей внешних видов и инкрементального вывода используйте HPDFBuildHeadlessTextAppearance или метод внешних видов документа
Нативный сложный текст Windows описывает совпадающие архитектуры процессов и пути поиска runtime-зависимостей
Используйте HPDFShapeHeadlessTextSpan для шейпинга выбранного стилевого элемента с окружающим контекстом абзаца, а HPDFResolveHeadlessTextOrder — для осмотра фактических визуальных позиций Unicode