SelectionUTF16ToUnit
フォーム、インタラクション、Unicode
説明
アクティブな編集値内の0始まり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