Frontières de graphèmes Unicode

HPDFUnicodeTextBoundary implémente les clusters de graphèmes étendus par défaut d'Unicode 17.0.0 en utilisant les propriétés Grapheme_Cluster_Break, Indic_Conjunct_Break et Extended_Pictographic embarquées dans le dépôt

L'implémentation Pascal portable gère les signes combinants, le Hangul, les séquences de linkers indiques, les séquences d'emoji ZWJ et les indicateurs régionaux appariés sans exiger de GUI ni de DLL de segmentation

Les offsets comptent les unités de code UTF-16 depuis zéro et incluent le début et la fin du texte ; un texte vide retourne l'unique offset zéro

L'entrée doit contenir des surrogates UTF-16 appariés, et l'appelant fournit un budget d'unités de code positif jusqu'à 1048576 ; le défaut est 65535

L'annulation est vérifiée avant l'allocation et pendant la consommation de chaque scalaire, y compris pour une entrée vide

Wrapping des champs rich

Un mot trop large dans un champ rich wrappé multiligne est divisé aux clusters de graphèmes étendus complets et mesuré avec la police et l'espacement sélectionnés

Chaque fragment préserve les valeurs V et RV d'origine, les mappages Unicode réels et l'alignement de paragraphe ; un cluster indivisible plus large que le rectangle reste intact et est clippé

Les largeurs de fragments sont vérifiées après le shaping, y compris les joining forms qui s'élargissent quand shapeés séparément ; les débordements divisibles sont rescindés aux clusters complets

La peinture de scripts complexes continue d'utiliser HarfBuzz et FriBidi ; la segmentation de graphèmes ne fournit ni shaping de glyphes ni layout bidirectionnel de paragraphes

Les opportunités de saut de ligne Unicode par défaut sont disponibles via la même unité portable ; le wrapping de mots à travers les frontières de styles et le bidi de paragraphes à styles mixtes restent des cibles actives séparées

Conformité

Exécutez Tests/Linux/Run-UnicodeGraphemeAcceptance.sh ou le runner de tests portable Windows avec HotPDFUnicodeGraphemeTests et Tests/Linux/resources

Les tests consomment les 766 cas officiels GraphemeBreakTest d'Unicode 17 et comparent chaque frontière publiée en unités UTF-16

Build-UnicodeTextBoundaryTables.py reconstruit de façon déterministe les tables de plages compilées depuis les données UCD épinglées existantes

Règles de segmentation de texte Unicode 17 · Fonction de frontières · Comportement des champs rich