SelectionUnitToUTF16

フォーム、インタラクション、Unicode

説明

選択単位の数を、アクティブな編集値内の対応する境界の0始まりUTF-16インデックスへ変換します

fsuUTF16CodeUnitでは、値の長さへの切り詰め後にカウントがそのまま返されます

fsuUnicodeCodePointやfsuGraphemeClusterでは、その単位の境界テーブルが必要時に構築されて検索されるため、返されるインデックスがサロゲートペアや書素クラスタを分割することはなく、過大なカウントは最後の境界へ切り詰められます

ゼロ以下のカウントは常にインデックスゼロへ変換されます

宣言

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

パラメータ

Index値の先頭からスキップする完全な選択単位の数。利用可能な最後の境界に制限されます
IndexUnit数を表す選択単位

戻り値

要求された境界の UTF-16 インデックスを返します。数が利用可能な境界を超える場合は値の長さを、0 以下の場合は 0 を返します

例

// Unit 2 starts after the surrogate pair, at UTF-16 index 3
Session.SetEditValue('A' + WideChar($D83D) + WideChar($DE00) + 'B');
CaretUTF16 := Session.SelectionUnitToUTF16(2, fsuUnicodeCodePoint);
// CaretUTF16 = 3

関連項目

SelectionUTF16ToUnit, SetSelectionRange, GetVisualCaretOrder, TPDFlibFormSelectionUnit, TPDFlibFormSession