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

Index0-baseret UTF-16-position, afgrænset til intervallet 0 til den aktuelle værdilængde
IndexUnitMarkeringenhed, 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