Saltos de línea Unicode
HPDFUnicodeLineBreaks implementa las oportunidades de salto de línea 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 valor escalar y después de cada valor escalar, expresada como offsets UTF-16 base cero; cada posición es prohibida, permitida u obligatoria
El final del texto es obligatorio, también con entrada vacía; el inicio del texto no vacío está prohibido, y los surrogates emparejados no tienen posición interior
El manejo por defecto del sudeste asiático resuelve los caracteres SA ordinarios a AL y las marcas combinantes SA a CM; los diccionarios de idioma y la separación silábica son servicios de tailoring separados
HPDFUnicodeLineBreakClass expone la propiedad cruda o resuelta según LB1 para code points individuales; los nombres THPDFUnicodeLineBreakClass conservan todas las abreviaturas de propiedades de Unicode 17
Las APIs de documento existentes HPDFComputeLineBreaks y HPDFLineBreakClassOf consumen las mismas tablas completas en Delphi 2009 y posteriores y en los objetivos FPC soportados, conservando los ordinales de enum establecidos y el comportamiento con entrada vacía
El UTF-16 mal formado y los presupuestos de unidades de código fuera de 1 a 1048576 lanzan EArgumentException; la cancelación se comprueba antes de la asignación, durante la decodificación y al evaluar los límites
Layout real de campos rich
Los runs rich tipados con wrapping consumen oportunidades por defecto legales, mantienen juntos los grupos de espacios indivisibles 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 emergency wrapping de grafema completo existente
Los fragmentos independientes de la misma línea real continúan con los avances medidos; los saltos legales no exigen una línea física separada salvo que el ajuste los seleccione
Las oportunidades de párrafo completas preservan los grupos legales entre cambios de estilo y fusionan los CRLF partidos; los avances reales con estilo deciden cuándo un grupo completo que cabe pasa a una línea nueva
El ajuste de emergencia de grafemas 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 del LineBreakTest de Unicode 17 y compara cada posición publicada; el final obligatorio y el comportamiento con entrada mal formada, presupuesto y cancelación tienen comprobaciones separadas
Build-UnicodeLineBreakTables.py --check verifica la reproducibilidad y los pins SHA-256 de las tres entradas adicionales de propiedades UCD
Reglas de salto de línea de Unicode 17 · Función de límites · Posiciones devueltas · Integración con campos rich