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
| Index | Pozice v UTF-16 číslovaná od nuly, omezená do rozsahu 0 až aktuální délky hodnoty |
|---|---|
| IndexUnit | Vý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