SelectionUTF16ToUnit

Formulaires, interaction, Unicode

Description

Convertit une position UTF-16 à base zéro au sein de la valeur de l'édition active en un nombre d'unités de sélection complètes Avec

fsuUTF16CodeUnit

Avec fsuUnicodeCodePoint ou fsuGraphemeCluster, la table de frontières pour cette unité est construite à la demande et parcourue ; une position dans une paire de substitution se mappe donc à son point de code contenant et une position dans un groupe se mappe à la frontière du groupe précédent

Les tables de frontières sont mises en cache pour la valeur d'édition actuelle et abandonnées dès que cette valeur change

Déclaration

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

Paramètres

IndexPosition UTF-16 à base zéro, bornée à la plage 0 jusqu'à la longueur de la valeur courante
IndexUnitUnité de sélection dans laquelle le résultat est compté

Valeur de retour

Retourne le nombre de points de code ou de clusters de graphèmes complets qui précèdent la position UTF-16, ou l'index borné lui-même pour fsuUTF16CodeUnit

Exemple

// A surrogate pair counts as one code point unit
Session.SetEditValue('A' + WideChar($D83D) + WideChar($DE00) + 'B');
CaretUnits := Session.SelectionUTF16ToUnit(3, fsuUnicodeCodePoint);
// CaretUnits = 2

Voir aussi

SelectionUnitToUTF16, GetSelectionRange, SetSelectionRange, TPDFlibFormSelectionUnit, TPDFlibFormSession