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