Campos de rich text nativos
SetRichTextFieldValueWithAppearance escribe el texto plano V sincronizado, el RV XHTML canónico, el flag de campo RichText y apariencias reales para cada widget existente
Cada run aporta texto Unicode, un estilo de fuente, un tamaño en puntos positivo, color RGB, subrayado o tachado opcionales, saltos de párrafo y alineación izquierda, centro o derecha; las cuatro fuentes de estilo son programas TrueType Unicode aportados por el caller y pasan las comprobaciones existentes de edición e incrustación
Los runs usan por defecto un estilo regular negro de 12pt; la alineación del párrafo sale de su primer run y por defecto es izquierda
La apariencia usa fuentes de estilo incrustadas reales, mapeos de glifos y fragmentos de palabras medidos con líneas base compartidas; los fragmentos repetidos comparten cada programa de fuente de estilo dentro de un widget
Los saltos explícitos CR, LF, CRLF, NEL, LINE SEPARATOR y PARAGRAPH SEPARATOR y las transiciones de párrafo exigen un campo multilínea; el ajuste de línea medido, las rotaciones del widget y el clipping usan el rectángulo real del widget
La actualización tipada puede activar rich text en un campo de texto plano, mientras que las combinaciones password, file-select y comb se rechazan antes de la mutación
Read-only, MaxLen, las políticas autenticadas de documentos firmados, los permisos de form-fill cifrado, la cancelación y los presupuestos de objetos, fuentes, glifos y salida siguen aplicando
Todas las actualizaciones rich preparan las sobrescrituras V, RV, Ff y AP antes de cambiar el documento; las cadenas y streams guardados conservan la política original AES-256 R5 o R6
Los arreglos de estilos, las líneas de layout y los fragmentos pintados tienen cada uno un tope de 4096 elementos además de los límites configurados del documento; los bytes de fuentes de estilo se cobran como agregado
Las llamadas ordinarias a SetTextFieldValueWithAppearance sobre un campo rich existente reemplazan su contenido con el estilo plano aportado y sincronizan RV; las llamadas SetTextFieldValue de solo valor también sincronizan RV y conservan NeedAppearances=true
GetRichTextFieldValue lee la cadena de texto XHTML almacenada real o el stream de texto UTF-8, incluidos los valores heredados
El primer run de cada párrafo elige su alineación incluso cuando ese run tiene texto vacío; los cambios de estilo inline y los saltos de línea explícitos conservan esa alineación de párrafo
Las palabras demasiado anchas en campos multilínea con ajuste se parten en los límites de grafemas extendidos de Unicode 17, preservando secuencias combinantes, escalares suplementarios, secuencias emoji y el texto V/RV original; un cluster indivisible más ancho que el campo queda intacto y recortado
Los bordes de rectángulo y círculo se pintan antes del clip de contenido, y las filas multilínea seleccionadas reciben fondos azules reales usando el ascent, descent y espaciado medidos de cada línea rich
ABI JSON nativa
{"schemaVersion":1,"type":"forms.fill","fields":[
{"name":"Input","fontFamily":"DejaVu Sans Mono","richTextRuns":[
{"text":"Regular Unicode text "},
{"text":"Bold red text","fontStyle":"bold","fontSize":20,"color":[1,0,0]},
{"text":"Next paragraph","fontStyle":"italic","paragraphBreakBefore":true,
"alignment":"center","underline":true}
]}
]}
richTextRuns es un array de objetos con text obligatorio y fontStyle, fontSize, color, underline, strikeOut, paragraphBreakBefore y alignment opcionales; fontStyle acepta regular, bold, italic o boldItalic
Los arrays fontFamilies opcionales seleccionan programas nombrados reales por run mediante fontFamily, con un array a nivel de edición que sobrescribe el array a nivel de operación y con las etiquetas de run omitidas seleccionando la primera familia
El fontSize de run omitido usa el fontSize de la operación del campo cuando es positivo, y si no 12; un value opcional debe coincidir exactamente con el texto plano derivado de los runs, usando un retorno de carro entre párrafos explícitos
Los runs con estilo exigen appearance=true; forms.read devuelve el XHTML almacenado real en richText para un campo rich
La ABI conserva su layout de operación existente y prepara la salida binaria y de resultado completas antes de confirmar el nuevo contexto cargado; las escrituras fallidas o la cancelación preservan el campo anterior
Aceptación y trabajo pendiente
Tests/Linux/Run-HeadlessRichTextAcceptance.sh y Tests/Linux/HotPDFHeadlessRichTextTests.pas ejercitan PDFs guardados reales; Verify-HeadlessRichText.py comprueba de forma independiente el XHTML, los valores, cuatro programas de fuente reales, los mapas de glifos, los paths de decoración y los píxeles visibles del widget
Esta API acepta runs tipados y consume las oportunidades por defecto de Unicode 17 sobre párrafos completos, preservando los grupos de palabras, espacios indivisibles, puntuación y números entre cambios de estilo; los grupos que caben en una línea nueva se mueven juntos usando los advances reales de su fuente con estilo
El ajuste por grupos de estilo también conserva líneas base compartidas para tamaños mezclados y fusiona CRLF a través de las costuras de estilo tanto en el layout real como en el XHTML canónico
El ajuste de grafemas entre estilos asigna los clusters lógicos demasiado anchos completos a una línea física, conservando fragmentos reales de fuente, color y tamaño y el comportamiento de clipping existente para un cluster indivisible más ancho que el rectángulo
La unión contextual usa el texto Unicode circundante y cada línea física real conserva la dirección del párrafo mientras ordena elementos bidi y de script mezclados entre estilos tipados
Las marcas entre estilos usan attachments GPOS genuinos para los glifos base, de ligadura y de marca precedentes reales, preservando cada fuente de estilo, tamaño en puntos y color y los sobresalientes visibles de los glifos
El intercambio rich de FDF y XFDF decodifica el perfil de estilos XHTML acotado soportado en fuentes incrustadas reales y apariencias guardadas
Los embeddings direccionales explícitos, overrides, isolates y el contexto de corchetes emparejados sobreviven al ajuste automático entre estilos tipados; un único orden lógico de párrafo compartido provee reordenación física independiente por línea y shaping contextual nativo de glifos
Los clusters que contienen solo controles direccionales Unicode preservan el valor lógico original y el texto de selección sin consumir espaciado de caracteres; los clusters visibles y los espacios ordinarios conservan sus advances configurados
El orden de líneas derivado del párrafo y la reordenación de líneas en caché preservan los límites completos de escalares UTF-16 y reinician el whitespace final de la línea física sin mutar el record compartido del párrafo
Las familias de fuentes nombradas proveen selección explícita por runs tipados y XHTML acotado con fuentes de familia reales, advances independientes e importación de formularios consciente de la familia
El fallback de familias suministradas selecciona graphemes completos a través de fronteras de estilo escritas, y los callbacks JSON y versionados de Linux vinculan el mismo comportamiento a programas de fuentes configurados reales
El XHTML y CSS arbitrarios, las hojas de estilo y el layout general siguen siendo trabajo pendiente
Comportamiento de campos rich text nativos · API de documento