SelectionUTF16ToUnit

Formularze, interakcja, Unicode

Opis

Przelicza pozycję UTF-16 o podstawie zero w wartości aktywnej edycji na liczbę kompletnych jednostek zaznaczenia

Przy fsuUTF16CodeUnit indeks jest zwracany bez zmian po docięciu

Przy fsuUnicodeCodePoint albo fsuGraphemeCluster tabela granic dla tej jednostki jest budowana na żądanie i przeszukiwana, więc pozycja wewnątrz pary surrogatów mapuje się na jej obejmujący punkt kodowy, a pozycja wewnątrz klastra na poprzedzającą granicę klastra

Tabele granic są podręczne dla bieżącej wartości edycji i porzucane przy każdej zmianie tej wartości

Deklaracja

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

Parametry

IndexPozycja UTF-16 liczona od zera, przycinana do zakresu od 0 do bieżącej długości wartości
IndexUnitJednostka zaznaczenia, w której wyliczany jest wynik

Wartość zwracana

Zwraca liczbę pełnych punktów kodowych lub grafemów poprzedzających pozycję UTF-16 albo sam przycięty indeks dla fsuUTF16CodeUnit

Przykład

// A surrogate pair counts as one code point unit
Session.SetEditValue('A' + WideChar($D83D) + WideChar($DE00) + 'B');
CaretUnits := Session.SelectionUTF16ToUnit(3, fsuUnicodeCodePoint);
// CaretUnits = 2

Zobacz również

SelectionUnitToUTF16, GetSelectionRange, SetSelectionRange, TPDFlibFormSelectionUnit, TPDFlibFormSession