GetVisualCaretOrder

表单、交互、Unicode

描述

在解析双向片段后,按物理从左到右的顺序返回活动编辑的所有插入符位置

每行独立解析,返回的每个位置都对齐到扩展字素簇边界

在混合方向边界处,同一逻辑索引可能出现在多个不相邻的槽位中,因为两个可视插入符位置在物理上是不同的

请求的索引单位只改变报告的逻辑索引,不改变可视顺序

声明

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

参数

IndexUnitfsuUTF16CodeUnit、fsuUnicodeCodePoint 或 fsuGraphemeCluster
CaretIndices接收按从可视文本左边缘到右边缘排序的逻辑插入符索引

返回值

返回可视插入符槽位数量;没有活动编辑或索引单位无效时返回 0

性能

字素边界和解析出的可视顺序会针对当前编辑值和方向缓存,并使用二分查找映射运行段边界

示例

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

另请参阅

MoveVisualCaret, SetTextDirection, GetSelectionRange, TPDFlibFormSession