GetVisualCaretOrder

Формы, взаимодействие, Unicode

Описание

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

Каждая строка разрешается независимо, и каждая возвращенная позиция выровнена по границе расширенного кластера графем

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

Запрошенная единица индекса меняет только сообщаемые логические индексы и не меняет визуальный порядок

Объявление

function GetVisualCaretOrder(
  IndexUnit: TPDFlibFormSelectionUnit;
  out CaretIndices: TPDFlibFormCaretIndices): Integer;

Параметры

IndexUnitfsuUTF16CodeUnit, fsuUnicodeCodePoint или fsuGraphemeCluster
CaretIndicesПолучает логические индексы курсора, упорядоченные от левого края визуального текста к правому

Возвращаемое значение

Возвращает число визуальных слотов курсора или ноль, когда правка не активна или единица индексов недопустима

Производительность

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

Пример

var
  Carets: TPDFlibFormCaretIndices;
begin
  if Session.GetVisualCaretOrder(fsuGraphemeCluster, Carets) > 0 then
    FirstVisualCaret := Carets[0];
end;

См. также

MoveVisualCaret, SetTextDirection, GetSelectionRange, TPDFlibFormSession