Line breaking Unicode
HPDFUnicodeLineBreaks implementa las oportunidades de line break por defecto de Unicode 17.0.0 con las propiedades Line_Break, General_Category, East_Asian_Width y Extended_Pictographic incluidas en el repositorio
La implementación portable resuelve secuencias combinantes, contexto de puntuación, expresiones numéricas, Hangul, sílabas ortográficas bráhmicas, modificadores emoji e indicadores regionales emparejados sin una DLL de segmentación
La función devuelve la posición antes del primer escalar y después de cada escalar, expresadas como offsets UTF-16 base cero; cada posición es prohibited, allowed o mandatory
El final del texto es mandatory, incluso para entrada vacía; el inicio de texto no vacío es prohibited, y los surrogados emparejados no tienen posición interior
El manejo por defecto del sudeste asiático resuelve los caracteres SA ordinarios a AL y los signos combinantes SA a CM; los diccionarios de idioma y la hyphenation son servicios de tailoring separados
HPDFUnicodeLineBreakClass expone la propiedad cruda o resuelta por LB1 para puntos de código individuales; los nombres THPDFUnicodeLineBreakClass conservan cada abreviatura de propiedad de Unicode 17
Las APIs de documento existentes HPDFComputeLineBreaks y HPDFLineBreakClassOf consumen las mismas tablas completas en Delphi 2009 y posteriores y en los targets FPC soportados, preservando los ordinales de enum establecidos y el comportamiento con entrada vacía
El UTF-16 malformado y los presupuestos de unidades de código fuera del rango uno a 1048576 lanzan EArgumentException; la cancelación se verifica antes de la asignación, durante la decodificación y al evaluar los boundaries
Layout real de rich fields
Los runs rich tipados con wrapping consumen las oportunidades por defecto legales, mantienen juntos los grupos de nonbreaking space y la puntuación de apertura, y tratan CRLF, NEL, LINE SEPARATOR y PARAGRAPH SEPARATOR como saltos explícitos
Los separadores originales permanecen en V y en el RV canónico; los separadores de línea se omiten de los fragmentos de glifos pintados, y los grupos demasiado anchos usan el wrapping de emergencia de grafo completo existente
Los fragmentos independientes en la misma línea real continúan con avances medidos; los saltos legales no exigen una línea física separada salvo que el fitting los seleccione
Las oportunidades de párrafo completas preservan los grupos legales a través de cambios de estilo y fusionan los CRLF divididos; los avances reales con estilo deciden cuándo un grupo completo que cabe pasa a una línea nueva
El fitting de emergencia de grafos entre estilos y el shaping contextual, el bidi de párrafos con estilos mezclados, el XHTML arbitrario y el tailoring específico por idioma siguen siendo objetivos de integración activos
Conformidad
HotPDFUnicodeLineBreakTests consume los 19338 casos oficiales de LineBreakTest de Unicode 17 y compara cada posición publicada; el final mandatory y el comportamiento ante entrada malformada, presupuesto y cancelación tienen verificaciones separadas
Build-UnicodeLineBreakTables.py --check verifica la reproducibilidad y los pines SHA-256 de las tres entradas adicionales de propiedades UCD
Reglas de line breaking de Unicode 17 · Función de boundaries · Posiciones devueltas · Integración de rich fields