Boundaries de grafos Unicode

HPDFUnicodeTextBoundary implementa los extended grapheme clusters por defecto de Unicode 17.0.0 usando las propiedades Grapheme_Cluster_Break, Indic_Conjunct_Break y Extended_Pictographic incluidas en el repositorio

La implementación Pascal portable maneja signos combinantes, Hangul, secuencias de linkers índicos, secuencias emoji ZWJ e indicadores regionales emparejados sin exigir una GUI ni una DLL de segmentación

Los offsets cuentan unidades de código UTF-16 desde cero e incluyen tanto el inicio como el final del texto; el texto vacío devuelve el único offset cero

La entrada debe contener surrogados UTF-16 emparejados, y el llamador suministra un presupuesto positivo de unidades de código de hasta 1048576; el default es 65535

La cancelación se verifica antes de la asignación y al consumir cada escalar, incluso para entrada vacía

Wrapping de rich fields

Una palabra demasiado ancha en un rich field multiline con wrapping se divide en clusters de grafos extendidos completos y se mide con la fuente y el espaciado seleccionados

Cada fragmento preserva los valores V y RV originales, los mapeos Unicode reales y la alineación del párrafo; un cluster indivisible más ancho que el rectángulo permanece intacto y se recorta

Los anchos de fragmentos se verifican después del shaping, incluidas las joining forms que se ensanchan al procesarse por separado; los overflows divisibles se vuelven a dividir en clusters completos

El pintado de scripts complejos sigue usando HarfBuzz y FriBidi; la segmentación de grafos no aporta shaping de glifos ni layout bidireccional de párrafos

Las oportunidades de line break Unicode por defecto están disponibles a través de la misma unit portable; el wrapping de palabras a través de boundaries de estilo y el bidi de párrafos con estilos mezclados siguen siendo objetivos activos separados

Conformidad

Ejecuta Tests/Linux/Run-UnicodeGraphemeAcceptance.sh o el runner de pruebas portable de Windows con HotPDFUnicodeGraphemeTests y Tests/Linux/resources

Las pruebas consumen los 766 casos oficiales de GraphemeBreakTest de Unicode 17 y comparan cada boundary publicado en unidades UTF-16

Build-UnicodeTextBoundaryTables.py reconstruye de forma determinista las tablas de rangos compiladas a partir de los datos UCD fijados existentes

Reglas de segmentación de texto de Unicode 17 · Función de boundaries · Comportamiento de rich fields