SelectionUTF16ToUnit
Formulare, Interaktion, Unicode
Beschreibung
Konvertiert eine 0-basierte UTF-16-Position innerhalb des aktiven Bearbeitungswerts in eine Anzahl vollständiger Auswahleinheiten Bei
fsuUTF16CodeUnit
Mit fsuUnicodeCodePoint oder fsuGraphemeCluster wird die Grenztabelle für diese Einheit bei Bedarf aufgebaut und durchsucht, sodass eine Position innerhalb eines Surrogatpaars auf ihren umschließenden Codepunkt und eine Position innerhalb eines Haufens auf die vorherige Haufengrenze abgebildet wird
Grenzentabellen werden für den aktuellen Bearbeitungswert zwischengespeichert und bei jeder Wertänderung verworfen
Deklaration
function SelectionUTF16ToUnit(Index: Integer;
IndexUnit: TPDFlibFormSelectionUnit): Integer;
Parameter
| Index | 0-basierte UTF-16-Position, begrenzt auf den Bereich 0 bis zur aktuellen Wertlänge |
|---|---|
| IndexUnit | Auswahleinheit, in der das Ergebnis gezählt wird |
Rückgabewert
Gibt die Anzahl der der UTF-16-Position vorausgehenden vollständigen Codepunkte oder Graphem-Cluster zurück, bzw. den begrenzten Index selbst bei fsuUTF16CodeUnit
Beispiel
// A surrogate pair counts as one code point unit
Session.SetEditValue('A' + WideChar($D83D) + WideChar($DE00) + 'B');
CaretUnits := Session.SelectionUTF16ToUnit(3, fsuUnicodeCodePoint);
// CaretUnits = 2
Siehe auch
SelectionUnitToUTF16, GetSelectionRange, SetSelectionRange, TPDFlibFormSelectionUnit, TPDFlibFormSession