Двунаправленный текст в ТРВ-Редакторе (TRichView)

<< Нажмите, чтобы показать Содержание >>

Двунаправленный текст в ТРВ-Редакторе (TRichView)

Двунаправленный режим (BiDiMode) определяет направление чтения текста, порядок элементов в строках и расположение вертикальной полосы прокрутки.

Поддержка двунаправленного текста (арабского или иврита) по умолчанию отключена. Чтобы включить её, установите свойство BiDiMode компонента TRichView либо в значение rvbdLeftToRight, либо в значение rvbdRightToLeft.

BiDiMode документа может быть переопределён свойством BiDiMode абзаца, а BiDiMode абзаца – свойством BiDiMode текстового элемента.

Поддерживается смешанный текст (справа налево и слева направо), даже внутри одного текстового элемента.

Поддерживается также присоединение смежных символов (распространенное явление для арабских языков), но только внутри одного элемента (не между элементами).

Маркеры и нумерация абзацев учитывают BiDiMode: для абзацев справа налево маркеры списка располагаются справа.

Табуляция также поддерживают режим BiDiMode: позиции и выравнивание табуляции инвертированы для абзацев, читаемых справа налево.

Различие между Windows API и Uniscribe [VCL и Lazarus]

Результат зависит от значения свойства TextEngine:

Если выбран Windows API, в режиме rvbdUnspecified результаты для текста, написанного справа налево (RTL), будут совершенно некорректными (неправильное выделение и положение каретки); результаты ненадежны в других режимах (могут зависеть от выбранного шрифта). Однако, если вам не требуется поддержка двунаправленного текста, этот режим (Windows API + rvbdUnspecified) обеспечивает самое быстрое форматирование и рисование документов.

Если выбран Uniscribe, результаты корректны во всех режимах; в режиме rvbdUnspecified отключается только переупорядочение элементов в строках.

Демонстрационный проект

Demos\*\Assorted\International\RTL\