Saut de ligne Unicode
HPDFUnicodeLineBreaks implémente les opportunités de saut de ligne par défaut d'Unicode 17.0.0 avec les propriétés Line_Break, General_Category, East_Asian_Width et Extended_Pictographic embarquées dans le dépôt
L'implémentation portable résout les séquences combinantes, le contexte de ponctuation, les expressions numériques, le Hangul, les syllabes orthographiques brahmiques, les modifiers d'emoji et les indicateurs régionaux appariés sans DLL de segmentation
La fonction retourne la position avant le premier scalaire et après chaque scalaire, exprimée en offsets UTF-16 base zéro ; chaque position est interdite, autorisée ou obligatoire
La fin du texte est obligatoire, y compris pour une entrée vide ; le début d'un texte non vide est interdit, et les surrogates appariés n'ont pas de position intérieure
La gestion par défaut de l'Asie du Sud-Est résout les caractères SA ordinaires en AL et les signes combinants SA en CM ; les dictionnaires de langue et la césure sont des services de tailoring séparés
HPDFUnicodeLineBreakClass expose la propriété brute ou résolue LB1 pour les code points individuels ; les noms THPDFUnicodeLineBreakClass conservent chaque abréviation de propriété Unicode 17
Les API de document existantes HPDFComputeLineBreaks et HPDFLineBreakClassOf consomment les mêmes tables complètes sur Delphi 2009 et ultérieur et les cibles FPC prises en charge, en préservant les ordinaux d'enum établis et le comportement d'entrée vide
Un UTF-16 malformé et des budgets d'unités de code hors de un à 1048576 lèvent EArgumentException ; l'annulation est vérifiée avant l'allocation, pendant le décodage et pendant l'évaluation des frontières
Layout réel des champs rich
Les runs rich typés wrappés consomment les opportunités par défaut légales, gardent ensemble les groupes d'espaces insécables et la ponctuation ouvrante, et honorent CRLF, NEL, LINE SEPARATOR et PARAGRAPH SEPARATOR comme sauts explicites
Les séparateurs d'origine restent dans V et le RV canonique ; les séparateurs de ligne sont omis des fragments de glyphes peints, et les groupes trop larges utilisent le wrapping d'urgence de graphème complet existant
Les fragments indépendants sur la même ligne réelle continuent aux advances mesurées ; les sauts légaux n'exigent pas une ligne physique séparée sauf si le fitting les sélectionne
Les opportunités de paragraphe complètes préservent les groupes légaux à travers les changements de style et fusionnent les CRLF scindés ; les advances stylées réelles décident quand un groupe entier fitting passe à une nouvelle ligne
Le fitting d'urgence de graphèmes inter-styles et le shaping contextuel, le bidi de paragraphes à styles mixtes, le XHTML arbitraire et le tailoring propre aux langues restent des cibles d'intégration actives
Conformité
HotPDFUnicodeLineBreakTests consomme les 19338 cas officiels LineBreakTest d'Unicode 17 et compare chaque position publiée ; la fin obligatoire et les comportements malformé, budget et annulation ont des vérifications séparées
Build-UnicodeLineBreakTables.py --check vérifie la reproductibilité et les pins SHA-256 des trois entrées de propriétés UCD supplémentaires
Règles de saut de ligne Unicode 17 · Fonction de frontières · Positions retournées · Intégration des champs rich