SelectionUTF16ToUnit

表单、交互、Unicode

描述

把活动编辑值内的零基 UTF-16 位置转换为完整选择单位的数量

fsuUTF16CodeUnit 下,索引在钳制后原样返回

fsuUnicodeCodePoint 或 fsuGraphemeCluster 下,该单位的边界表按需构建并搜索,因此代理对内部的位置映射到其所属码点,簇内部的位置映射到前一个簇边界

边界表针对当前编辑值缓存,该值一变即被丢弃

声明

function SelectionUTF16ToUnit(Index: Integer;
  IndexUnit: TPDFlibFormSelectionUnit): Integer;

参数

Index从 0 开始的 UTF-16 位置,限制到 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