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