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