Перенос графем через rich-стили

THPDFHeadlessDocument.SetRichTextFieldValueWithAppearance удерживает полные кластеры графем Unicode на одной физической строке, когда слишком широкое слово тянется через несколько типизированных rich text runs

Смена шрифта, цвета или размера не создаёт допустимого аварийного разрыва внутри базового символа и его комбинируемых знаков, в том числе когда их стили разделяет пустой run

Подгонщик вычисляет границы графем по полной логической группе, измеряет реальные оформленные appearance-фрагменты и назначает каждый выбранный диапазон одной строке до отрисовки её отдельных шрифтовых ресурсов

Экспоненциальные пробы с последующими ограниченными поисками префиксов избавляют от повторных измерений неиспользуемого хвоста абзаца; отмена проверяется при подготовке каждого диапазона и каждого нативного фрагмента

Исходный V, канонический RV, типизированные стили, межсимвольные интервалы и измеренные базовые линии остаются нетронутыми при сохранении и перезагрузке

Неразделимый оформленный кластер, превышающий всю ширину контента, остаётся целиком и попадает под клиппирование контента виджета — как и в прежнем поведении одиночного кластера; следующий кластер продолжается на другой строке

При выключенном переносе остаётся одна физическая строка

Это поведение раскладки действует и в реальных нативных JSON-вызовах forms.fill на Linux с richTextRuns и characterSpacing, без изменения версионированной записи операции

Шейпинг и размещение знаков между разными стилевыми фрагментами, bidi абзаца со смешанными стилями и произвольный XHTML остаются задачами дальнейшей интеграции

См. допустимый перенос групп стилей, границы графем Unicode и нативные rich text поля