SelectionUTF16ToUnit

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

説明

アクティブな編集値内の0始まりUTF-16位置を、完全な選択単位の数へ変換します

fsuUTF16CodeUnitでは、切り詰め後にインデックスがそのまま返されます

fsuUnicodeCodePointやfsuGraphemeClusterでは、その単位の境界テーブルが必要時に構築されて検索されるため、サロゲートペア内の位置はその包含コードポイントへ、クラスタ内の位置は直前のクラスタ境界へマッピングされます

境界テーブルは現在の編集値に対してキャッシュされ、その値が変わるたびに破棄されます

宣言

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

パラメータ

Index0 ベースの 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