SelectionUTF16ToUnit

Formuláře, interakce, unicode

Popis

Převede pozici UTF-16 od nuly uvnitř aktivní editované hodnoty na počet kompletních jednotek výběru

S fsuUTF16CodeUnit se index vrací beze změny po omezení

S fsuUnicodeCodePoint nebo fsuGraphemeCluster se tabulka hranic pro tu jednotku staví na vyžádání a prohledává, takže pozice uvnitř náhradního páru mapuje na kódový bod, který ji obsahuje, a pozice uvnitř klastru mapuje na předcházející hranici klastru

Tabulky hranic se ukládají pro aktuální editovanou hodnotu a zahazují se pokaždé, když se tato hodnota změní

Deklarace

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

Parametry

IndexPozice v UTF-16 číslovaná od nuly, omezená do rozsahu 0 až aktuální délky hodnoty
IndexUnitVýběrová jednotka, ve které se výsledek počítá

Návratová hodnota

Vrací počet celých kódových bodů nebo grafémových clusterů předcházejících pozici v UTF-16, případně samotný omezený index pro fsuUTF16CodeUnit

Příklad

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

Viz také

SelectionUnitToUTF16, GetSelectionRange, SetSelectionRange, TPDFlibFormSelectionUnit, TPDFlibFormSession