Campos de texto rich nativos
SetRichTextFieldValueWithAppearance escribe una V de texto plano sincronizada, una RV XHTML canónica, el flag de campo RichText y apariencias reales para cada widget existente
Cada run aporta texto Unicode, un estilo de fuente, un tamaño positivo en puntos, un color RGB, subrayado o tachado opcionales, saltos de párrafo y alineación izquierda, centrada o derecha; las cuatro fuentes de estilo son programas TrueType Unicode suministrados por el llamador con 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 procede de su primer run y por defecto es izquierda
La apariencia usa fuentes de estilo realmente incrustadas, mapeos de glifos y fragmentos de palabra medidos con baselines de línea compartidas; los fragmentos repetidos comparten el programa de fuente de cada 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 de widget y el clipping usan el rectángulo real del widget
La actualización tipada puede activar el texto rich en un campo de texto plano, mientras que las combinaciones password, file-select y comb se rechazan antes de mutar
Los campos de solo lectura, MaxLen, las políticas de documentos firmados autenticados, los permisos cifrados de relleno de formularios, la cancelación y los presupuestos de objetos, fuentes, glifos y salida siguen aplicándose
Todas las actualizaciones rich preparan los overrides de V, RV, Ff y AP antes de cambiar el documento; las cadenas y streams guardados retienen la política original AES-256 R5 o R6
Los arrays de estilos, las líneas de disposición y los fragmentos pintados tienen cada uno un techo de 4096 elementos además de los límites configurados del documento; los bytes de las fuentes de estilo se cobran de forma agregada
Las llamadas ordinarias a SetTextFieldValueWithAppearance sobre un campo rich existente reemplazan su contenido con el estilo plano suministrado y sincronizan la RV; las llamadas a SetTextFieldValue de solo valor también sincronizan la RV y retienen NeedAppearances=true
GetRichTextFieldValue lee la cadena de texto XHTML realmente almacenada o el stream de texto UTF-8, incluidos los valores heredados
El primer run de cada párrafo selecciona 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 grafema extendido de Unicode 17, preservando las secuencias combinantes, los escalares suplementarios, las secuencias emoji y el texto V/RV original; un cluster indivisible más ancho que el campo permanece intacto y recortado
Los bordes rectangulares y circulares se pintan antes del clip del contenido, y las filas multilínea seleccionadas reciben fondos azules reales usando el ascent, el descent y el espaciado medidos de cada línea rich
ABI JSON nativo
{"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
Arrays fontFamilies opcionales seleccionan programas con nombre reales por run mediante fontFamily, con un array de nivel de edición que sobrescribe el array de nivel de operación y con las etiquetas de run omitidas seleccionando la primera familia
Un fontSize de run omitido usa el fontSize de la operación del campo cuando es positivo, y en caso contrario 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 realmente almacenado en richText para un campo rich
El ABI conserva su layout de operación existente y prepara la salida binaria y de resultado completa 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 reales guardados; Verify-HeadlessRichText.py comprueba de forma independiente el XHTML, los valores, cuatro programas de fuente reales, los mapas de glifos, los trazados 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, de espacio de no separación, de puntuación y numéricos entre cambios de estilo; los grupos que caben en una línea nueva se mueven juntos usando sus avances reales de fuente con estilo
El ajuste por grupos de estilo también retiene baselines compartidas para tamaños de punto mixtos y fusiona los CRLF a través de las costuras de estilo tanto en la disposición real como en la XHTML canónica
El ajuste de grafemas entre estilos asigna los clusters lógicos demasiado anchos completos a una línea física, reteniendo los 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 retiene la dirección del párrafo mientras ordena los elementos bidi y de script mixtos entre estilos tipados
Los marks entre estilos usan attachments GPOS genuinos para los glifos reales de base, ligadura y mark precedente, preservando la fuente, el tamaño de punto y el color de cada estilo y los desbordamientos visibles de glifo
El intercambio rich de FDF y XFDF decodifica el perfil de estilo XHTML acotado soportado en fuentes realmente incrustadas y apariencias guardadas
Los embeddings direccionales explícitos, los overrides, los isolates y el contexto de corchetes emparejados sobreviven al ajuste automático de línea entre estilos tipados; un único orden lógico de párrafo compartido alimenta el reordenamiento independiente de líneas físicas y el 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 retienen sus avances configurados
El orden de líneas derivado de párrafos y el reordenamiento de líneas cacheado preservan los límites completos de escalares UTF-16 y restablecen el espacio en blanco final de las líneas físicas sin mutar el registro compartido del párrafo
Las familias de fuentes con nombre aportan selección explícita de runs tipados y XHTML acotado con fuentes de familia reales, avances independientes e importación de formularios consciente de familias
El fallback de familias suministradas selecciona graphemes completos a través de las costuras de estilo del autor, y el JSON de Linux y los callbacks versionados enlazan el mismo comportamiento a programas de fuente configurados reales
Las style sheets internas aplican la cascada acotada compartida de selectores a los rich values nativos y a las importaciones FDF/XFDF; el XHTML/CSS más amplio, las style sheets externas y el layout general siguen siendo trabajo en curso
Comportamiento de campos de texto rich nativos · API de documento