SelectionUTF16ToUnit

表單、互動、Unicode

描述

把作用中編輯值內的 0-based UTF-16 位置轉換為完整選取單位數量

fsuUTF16CodeUnit 時,索引箝制後原樣傳回

fsuUnicodeCodePoint 或 fsuGraphemeCluster 時,按需建立該單位的邊界表再搜尋,因此代理對內的位置映射到所屬碼點,叢集內的位置映射到前一個叢集邊界

邊界表為目前編輯值快取,該值一旦變更即被丟棄

宣告

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

參數

Index以零為基底的 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