SelectionUTF16ToUnit

Skjemaer, interaksjon, unicode

Beskrivelse

Konverterer en nullbasert UTF-16-posisjon innenfor den aktive redigeringsverdien til et antall komplette utvalgsenheter

Med fsuUTF16CodeUnit returneres indeksen uendret etter begrensning

Med fsuUnicodeCodePoint eller fsuGraphemeCluster bygges grensetabellen for den enheten ved behov og søkes, så en posisjon inne i et surrogatpar kartlegges til kodepunktet som inneholder den, og en posisjon inne i en klynge kartlegges til den foregående klyngegrensen

Grensetabeller hurtiglagres for nåværende redigeringsverdi og forkastes når den verdien endres

Deklarasjon

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

Parametere

IndexNullbasert UTF-16-posisjon, avgrenset til området 0 til og med gjeldende verdilengde
IndexUnitUtvalgsenheten resultatet telles i

Returverdi

Returnerer antallet komplette kodepunkter eller grafemklynger som går forut for UTF-16-posisjonen, eller selve den avgrensede indeksen 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