SelectionUTF16ToUnit
Formularer, interaktion, Unicode
Beskrivelse
Konverterer en nul-baseret UTF-16-position inden for den aktive redigeringsværdi til et antal komplette markeringsenheder
Med fsuUTF16CodeUnit returneres indekset uændret efter klemning
Med fsuUnicodeCodePoint eller fsuGraphemeCluster bygges grænsetabellen for den enhed efter behov og gennemsøges, så en position inde i et surrogatepar afbildes til dets omsluttende kodepunkt, og en position inde i en klynge afbildes til den forrige klyngegrænse
Grænsetabeller mellemlagres for den aktuelle redigeringsværdi og kasseres, når den værdi ændres
Deklaration
function SelectionUTF16ToUnit(Index: Integer;
IndexUnit: TPDFlibFormSelectionUnit): Integer;
Parametre
| Index | 0-baseret UTF-16-position, afgrænset til intervallet 0 til den aktuelle værdilængde |
|---|---|
| IndexUnit | Markeringenhed, som resultatet tælles i |
Returværdi
Returnerer antallet af fuldstændige kodepunkter eller grafemklynger, der går forud for UTF-16-positionen, eller selve det afgrænsede indeks for fsuUTF16CodeUnit
Eksempel
// A surrogate pair counts as one code point unit
Session.SetEditValue('A' + WideChar($D83D) + WideChar($DE00) + 'B');
CaretUnits := Session.SelectionUTF16ToUnit(3, fsuUnicodeCodePoint);
// CaretUnits = 2
Se også
SelectionUnitToUTF16, GetSelectionRange, SetSelectionRange, TPDFlibFormSelectionUnit, TPDFlibFormSession