Campos nativos de Rich Text
SetRichTextFieldValueWithAppearance escreve V de texto plain sincronizado, RV XHTML canónico, a flag de campos RichText e aparências reais para todos os widgets existentes
Cada run fornece texto Unicode, um estilo de tipo de letra, um tamanho positivo em pontos, cor RGB, underline ou strikeout opcionais, quebras de parágrafos e alinhamento à esquerda, ao centro ou à direita; os quatro tipos de letra de estilos são programas TrueType Unicode fornecidos por quem chama, com as verificações existentes de edição e de embedding
Runs usam por defeito um estilo regular preto de 12pt; o alinhamento de parágrafos vem do primeiro run dele e tem por defeito à esquerda
A aparência usa tipos de letra de estilos realmente incorporados, mapeamentos de glyphs e fragmentos medidos de palavras com linhas de base partilhadas; fragmentos repetidos partilham cada programa de tipos de letra de estilos dentro de um widget
Quebras explícitas de CR, LF, CRLF, NEL, LINE SEPARATOR e PARAGRAPH SEPARATOR e transições de parágrafos exigem um campo multilinha; o wrap medido, as rotações de widgets e o clipping usam o retângulo real do widget
A atualização tipada pode ativar rich text num campo de texto plain, enquanto combinações de password, seleção de ficheiros e comb são rejeitadas antes da mutação
Só de leitura, MaxLen, políticas autenticadas de documentos assinados, permissões encriptadas de preenchimento de formulários, cancelamento e orçamentos de objetos, tipos de letra, glyphs e saída continuam a aplicar-se
Todas as atualizações rich preparam overrides de V, RV, Ff e AP antes de alterar o documento; strings e streams guardadas mantêm a política original AES-256 R5 ou R6
Arrays de estilos, linhas de layout e fragmentos pintados têm cada um um teto de 4096 itens além dos limites configurados do documento; os bytes de tipos de letra de estilos são cobrados de forma agregada
Chamadas ordinárias de SetTextFieldValueWithAppearance sobre um campo rich existente substituem o conteúdo dele pelo estilo plain fornecido e sincronizam o RV; chamadas de SetTextFieldValue apenas de valores também sincronizam o RV e mantêm NeedAppearances=true
GetRichTextFieldValue lê a string real guardada de texto XHTML ou a stream de texto UTF-8, incluindo valores herdados
O primeiro run de cada parágrafo seleciona o alinhamento dele mesmo quando esse run tem texto vazio; alterações inline de estilos e quebras explícitas de linhas mantêm esse alinhamento de parágrafos
Palavras demasiado largas em campos multilinha com wrap dividem-se nas fronteiras de graphemes estendidos do Unicode 17, preservando sequências de combinação, scalars suplementares, sequências de emoji e texto original V/RV; um cluster indivisível mais largo que o campo permanece intacto e cortado
Contornos retangulares e circulares são pintados antes do clip de conteúdo, e linhas multilinha selecionadas recebem fundos azuis reais usando o ascent, o descent e o espaçamento medidos de cada linha rich
ABI nativa JSON
{"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 é um array de objetos com text obrigatório e fontStyle, fontSize, color, underline, strikeOut, paragraphBreakBefore e alignment opcionais; fontStyle aceita regular, bold, italic ou boldItalic
Arrays fontFamilies opcionais selecionam programas nomeados reais por run através de fontFamily, com um array ao nível da edição a sobrepor o array ao nível da operação e etiquetas de runs omitidas a selecionar a primeira família
fontSize de runs omitido usa o fontSize da operação do campo quando positivo, caso contrário 12; um value opcional tem de corresponder exatamente ao texto plain derivado dos runs, usando um carriage return entre parágrafos explícitos
Runs com estilo exigem appearance=true; forms.read devolve o XHTML realmente guardado em richText para um campo rich
A ABI mantém o layout existente dela de operações e prepara saída binária e de resultados completa antes de confirmar o novo contexto carregado; escritas falhadas ou cancelamento preservam o campo anterior
Aceitação e trabalho restante
Tests/Linux/Run-HeadlessRichTextAcceptance.sh e Tests/Linux/HotPDFHeadlessRichTextTests.pas exercitam PDFs realmente guardados; Verify-HeadlessRichText.py verifica de forma independente XHTML, valores, quatro programas reais de tipos de letra, mapas de glyphs, caminhos de decorações e píxeis visíveis de widgets
Esta API aceita runs tipados e consome oportunidades por defeito do Unicode 17 sobre parágrafos completos, preservando grupos de palavras, espaços não quebráveis, pontuação e números através de mudanças de estilos; grupos que cabem numa linha fresca movem-se em conjunto usando os avanços reais de tipos de letra com estilo deles
O wrap de grupos de estilos também mantém linhas de base partilhadas para tamanhos em pontos mistos e funde CRLF através de costuras de estilos tanto no layout real como no XHTML canónico
O ajuste de graphemes entre estilos atribui clusters lógicos completos demasiado largos a uma linha física, mantendo fragmentos reais de tipo de letra, cor e tamanho e o comportamento existente de clipping para um cluster indivisível mais largo que o retângulo
A ligação contextual usa o texto Unicode envolvente e cada linha física real mantém a direção do parágrafo enquanto ordena itens mistos de bidi e de scripts através de estilos tipados
As marcas entre estilos usam anexos GPOS genuínos para glyphs reais de base, ligaduras e marcas precedentes, preservando o tipo de letra, o tamanho em pontos e a cor de cada estilo e os transbordos visíveis de glyphs
A troca rich de FDF e XFDF descodifica o perfil delimitado suportado de estilos XHTML em tipos de letra realmente incorporados e aparências guardadas
Embeddings direcionais explícitos, overrides, isolates e contexto de pares de parênteses retos sobrevivem ao wrap automático através de estilos tipados; uma ordem partilhada única de parágrafos lógicos fornece reordenação independente de linhas físicas e shaping contextual nativo de glyphs
Clusters contendo apenas controlos direcionais Unicode preservam o valor lógico original e o texto de seleção sem consumir espaçamento de carateres; clusters visíveis e espaços ordinários mantêm os avanços configurados deles
A ordem de linhas derivada de parágrafos e a reordenação de linhas em cache preservam fronteiras completas de scalars UTF-16 e reiniciam o whitespace final de linhas físicas sem mutar o registo partilhado do parágrafo
Famílias nomeadas de tipos de letra fornecem seleção explícita de runs tipados e XHTML delimitado com tipos de letra reais de famílias, avanços independentes e importação de formulários consciente de famílias
O fallback de famílias fornecidas seleciona graphemes completos através de costuras de estilos escritos, e JSON de Linux e callbacks versionados vinculam o mesmo comportamento a programas realmente configurados de tipos de letra
Folhas de estilo internas aplicam a cascata partilhada delimitada de seletores a valores rich nativos e a importações FDF/XFDF; XHTML/CSS mais abrangente, folhas de estilo externas e layout geral continuam a ser trabalho ativo