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