SelectionUTF16ToUnit
Формы, взаимодействие, Unicode
Описание
Преобразует позицию UTF-16 с базой 0 внутри значения активной правки в количество полных единиц выделения При
fsuUTF16CodeUnit
С fsuUnicodeCodePoint или fsuGraphemeCluster таблица границ этой единицы строится по требованию и просматривается, поэтому позиция внутри суррогатной пары отображается на содержащую ее кодовую точку, а позиция внутри кластера — на границу предшествующего кластера
Таблицы границ кэшируются для текущего значения правки и отбрасываются всякий раз, когда это значение меняется
Объявление
function SelectionUTF16ToUnit(Index: Integer;
IndexUnit: TPDFlibFormSelectionUnit): Integer;
Параметры
| Index | Позиция UTF-16 с базой 0, ограничиваемая диапазоном от 0 до текущей длины значения |
|---|---|
| IndexUnit | Единица выделения, в которой считается результат |
Возвращаемое значение
Возвращает количество полных кодовых точек или графемных групп перед позицией UTF-16 либо сам ограниченный индекс для fsuUTF16CodeUnit
Пример
// A surrogate pair counts as one code point unit
Session.SetEditValue('A' + WideChar($D83D) + WideChar($DE00) + 'B');
CaretUnits := Session.SelectionUTF16ToUnit(3, fsuUnicodeCodePoint);
// CaretUnits = 2
См. также
SelectionUnitToUTF16, GetSelectionRange, SetSelectionRange, TPDFlibFormSelectionUnit, TPDFlibFormSession