Folhas de estilo nativas de rich text
O decoder nativo XHTML aplica elementos style internos a campos rich-text e imports FDF/XFDF, preservando os estilos realmente computados no RV salvo e nas aparências embutidas de widgets
<body xmlns="http://www.w3.org/1999/xhtml">
<style>
.notice { color: #204080; font-size: 14pt }
p > span.urgent { font-weight: bold !important }
</style>
<p class="notice">Review <span class="urgent">today</span></p>
</body>
Elementos style usam o namespace XHTML e omitem type ou especificam text/css; atributos media e grupos @media aninhados usam o perfil nativo explícito print/screen
Regras suportam selectors universais e de tipos, nomes de classes e IDs sensíveis a maiúsculas, selectors compostos, combinators de descendentes, filhos, irmão adjacente e irmão subsequente, e grupos de selectors separados por vírgulas
Selectors de namespaces
Declarações CSS de namespaces e selectors qualificados suportam namespace URIs nomeados e default, qualificadores wildcard ou vazios, escopos independentes de prefixes XML e lookup delimitado de atributos herdados
Selectors de atributos e estruturais
Selectors de atributos suportam presença, igualdade, palavras separadas por whitespace, prefixos de hífen, prefixos comuns, sufixos e substrings: [name], [name="value"], [name~="word"], [name|="en"], [name^="pre"], [name$="end"] e [name*="part"]
Valores de atributos aceitam strings entre aspas ou identificadores CSS e os escapes deles; a flag opcional i decai apenas letras ASCII, enquanto s e uma flag omitida comparam sensivelmente a maiúsculas
Atributos sem prefixo e [|name] correspondem a atributos sem namespace URI; [*|name] também corresponde a atributos com prefixo daquele nome local, excluindo declarações de namespaces
Combinators de irmãos pulam nós que não são elementos e preservam o matching de ancestrais através de selectors encadeados
Pseudo classes estruturais incluem :root, :empty, :first-child, :last-child, :only-child, :first-of-type, :last-of-type e :only-of-type
:scope seleciona o elemento raiz do rich text, correspondendo a :root porque este decodificador não tem uma raiz de escopo separada especificada pelo caller
O perfil estático aceita :hover, :active, :focus, :focus-visible e :focus-within como seletores válidos que nunca fazem match durante a geração de aparências de PDF. Suas negações e combinações lógicas ou relacionais retêm semântica normal de seletores, então p:not(:hover) pode aplicar um estilo enquanto p:hover não pode
@supports selector(:hover) e imports condicionais equivalentes testam o suporte à gramática de seletores e avaliam para true; isso não cria estado de ponteiro, ativação ou foco de teclado. Essas seis pseudo classes não recebem argumentos, então formas como :focus() continuam inválidas
Os quatro selectors posicionais :nth-child(), :nth-last-child(), :nth-of-type() e :nth-last-of-type() aceitam odd, even, posições inteiras e fórmulas An+B com coeficientes decimais com sinal além das faixas de inteiros de máquina, dentro do orçamento configurado de scans
Posições de tipos comparam tanto o nome local do elemento quanto o namespace URI dele; a regra :empty segue o Selectors3, então um nó de texto de whitespace torna um elemento não vazio, enquanto comentários e processing instructions não
:lang() segue o valor xml:lang ou lang explícito mais próximo, compara insensível a maiúsculas ASCII por um valor exato ou prefixo de hífen, e trata um valor explicitamente vazio como interrompendo a herança
Listas lógicas e relacionais de selectors
:is() e :where() aceitam selectors complexos separados por vírgulas, incluindo combinators de descendentes e irmãos; ramos não suportados são ignorados, e uma lista válida vazia não corresponde a nenhum elemento
:is() usa a maior especificidade de arguments, incluindo arguments válidos que não correspondem ao elemento atual; :where() contribui com especificidade zero
:not() aceita uma lista não vazia de selectors complexos e corresponde quando nenhum dos arguments dela corresponde; um argument inválido invalida a lista completa de selectors
:has() ancora selectors relativos no elemento atual e testa filhos, descendentes ou irmãos seguintes reais; cada argument relativo pode começar com >, + ou ~, seguido de mais combinators suportados
:has() aninhado e pseudo elementos não são suportados; um argument relativo inválido invalida a lista completa de :has(), enquanto uma lista envolvente forgiving de :is() ou :where() pode reter os outros arguments válidos dela
:not() e :has() usam a maior especificidade válida de arguments, comparada por contagem de IDs, contagem de classes/atributos/pseudo classes e contagem de tipos
:nth-child(An+B of selector-list) e :nth-last-child(An+B of selector-list) contam apenas irmãos elementos correspondendo à união da lista não vazia de selectors complexos; o alvo precisa ele próprio pertencer a essa união
Selectors posicionais filtrados contribuem com a especificidade própria de pseudo classes deles mais a maior especificidade de filtros; a palavra-chave of aceita escapes de identificadores CSS e fronteiras de comentários, enquanto :nth-of-type() e :nth-last-of-type() retêm a gramática não filtrada delas
p:has(> span.urgent) { color: red }
span:is(.notice, p > .urgent) { font-weight: bold }
span:nth-child(2 of .included, [data-status="ready"]) { color: blue }
Comentários CSS e escapes de identificadores são parseados antes do matching, incluindo um a seis dígitos hexadecimais, whitespace CSS final opcional e scalars Unicode suplementares; escapes hexadecimais zero, surrogate e fora da faixa resolvem para U+FFFD
Declarações entram em cascata por importance, especificidade de selectors e ordem de origem do documento, seguidas de estilos inline na importance correspondente deles; elementos herdam os valores computados dos pais pelas regras existentes específicas de propriedades
Todos os elementos style internos participam antes de o texto ser consumido, então um elemento style que aparece depois do seu alvo ainda se aplica; texto de estilos não vira texto visível de campos
O perfil de declarações retém tamanho, weight, estilo e shorthand de fontes, listas configuradas de famílias, cor, decoração de texto, alinhamento, line height e letter/word spacing; conversão de comprimentos, struts métricos de pais e admissão de fontes fornecidas seguem as APIs nativas existentes de rich text
O RV salvo contém os estilos inline computados e não depende dos elementos style originais; imports FDF/XFDF equivalentes repetidos retêm bytes exatos commitados quando nenhuma mudança pendente do grafo exige publicação
Consumers nativos Pascal, file jobs do Windows e callbacks V1 originais, e callbacks JSON/V1 do Linux compartilham o decoder; nenhuma mudança de layout de records públicos de callbacks é exigida
MaxTotalCodeUnits delimita o scanning de stylesheets, o texto de estilos extraído e as declarações expandidas agregadas; MaxNodes delimita a contagem de regras, nomes de selectors, condições agregadas de atributos/pseudo classes, listas funcionais de selectors e trabalho de matching/sorting, incluindo traversal relativo e scans filtrados de irmãos; MaxDepth delimita coleção XML, partes de selectors, funções aninhadas e matching recursivo
Cancelamento e falhas de limites retêm a saída anterior do decoder e o estado commitado do documento da transação de import; o retry usa as mesmas opções e orçamentos originais
Grupos inválidos ou não suportados de selectors de nível superior são ignorados como um todo; listas forgiving de arguments is/where retêm os ramos válidos delas; declarações inválidas retêm o comportamento existente de ignorar do decoder, e at-rules não suportados são pulados
Import de layers e condições supports, mais features de media, pseudo elementos, pseudo classes adicionais de estado e escopo, tabelas, imagens e layout CSS geral permanecem trabalho ativo
Interchange nativo de form data · Callbacks rich do Linux · Troca de form data no Windows · Run spacing rich
Folhas de estilo externas fornecidas pelo chamador adicionam CSS vinculado e importado recursivamente, com resolução de resource URIs, condições de media e conjuntos selecionados de stylesheets
Support queries nativas admitem grupos @supports e imports supports() usando o perfil suportado de declarações e seletores, com limites compartilhados e recuperação de cancelamento