Media queries nativas de rich text
O descodificador nativo XHTML avalia o atributo media de um elemento style e grupos @media aninhados antes de pôr em cascata as declarações suportadas em runs reais de rich text
A avaliação de media usa um perfil nativo explícito de hosts e não inspeciona um desktop, browser nem dispositivo de apresentação
Options := THPDFHeadlessRichTextDecodeOptions.Default;
Options.MediaType := hrmtScreen;
SetLength(Options.MediaFeatures, 2);
Options.MediaFeatures[0].Name := 'width';
Options.MediaFeatures[0].Value := '800px';
Options.MediaFeatures[1].Name := 'resolution';
Options.MediaFeatures[1].Value := '2dppx';
Runs := HPDFDecodeHeadlessRichText(XHTML, Options);
<style media="screen and (width >= 600px)">
@media (resolution >= 2dppx) {
span.notice { font-size: 14pt }
}
</style>
Condições e cascatas
As consultas suportam tipos de media all, print e screen, modificadores only e not, alternativas separadas por vírgulas e condições not, and e or entre parênteses
Features numéricas aceitam igualdade com dois pontos, formas min-/max- e comparações de intervalos diretas, invertidas ou encadeadas usando =, <, <=, > e >=
Grupos aninhados mantêm a ordem da fonte, a importância de declarações, a especificidade de seletores e as declarações herdadas de namespaces; um atributo media de estilos e todos os grupos de media envolventes têm de corresponder
Escapes de identificadores CSS, comentários, notação de expoentes e tokens equilibrados de funções são analisados dentro do mesmo parser delimitado
Features desconhecidas, valores não suportados e condições general-enclosed mantêm um valor de verdade desconhecido através de negação e avaliação Booleana; apenas uma consulta final true ativa as declarações dela
Fornecer uma entrada de host para uma feature futura não torna essa feature parte do vocabulário suportado de consultas
Perfil de host
As features numéricas suportadas são width, height, device-width, device-height, resolution, aspect-ratio, device-aspect-ratio, color, color-index, monochrome e grid
As features discretas são orientation, scan, update, overflow-block, overflow-inline, color-gamut, pointer, any-pointer, hover e any-hover
As unidades de comprimento são pt, px, in, pc, cm, mm, q, em e rem; as unidades de resolução são dpi, dpcm, dppx e x, e rácios usam notação com barra
Media em e rem usam MediaInitialFontSize em vez de um tamanho de tipo de letra de elementos em cascata; o default dele é 12 pontos, e zero mantém o mesmo valor inicial de 12 pontos para registos legados inicializados a zero
Um orientation ou aspect-ratio omitido pode ser derivado de width e height fornecidos; altura zero deixa o rácio desconhecido, enquanto largura e altura iguais usam orientação portrait
any-pointer pode conter coarse e fine em simultâneo; none não pode combinar-se com outro valor de pointer, e color-gamut inclui os ranks inferiores de gamuts suportados
O medium por defeito é print, com 8 bits de cor, sem cor indexada nem monocromática, grid 0 e gamut sRGB; as capacidades dele de update, overflow-inline, pointer, hover e scan estão ausentes, e overflow-block é paged
Dimensões e resolução não têm defaults de dispositivos inventados; capacidades screen além dos defaults partilhados de cor exigem um valor explícito de host quando relevantes
MediaFeatures permite no máximo 32 nomes distintos insensíveis a maiúsculas ASCII, cada um com 1 a 64 letras, dígitos ou hífenes ASCII e um valor de 1 a 256 unidades de código UTF-16; entradas reconhecidas têm de usar um valor numérico válido não negativo ou um valor discreto suportado
MediaInitialFontSize tem de ser finito e zero ou entre 0,000001 e 1000000 pontos; perfis de host inválidos levantam EHPDFHeadlessRichTextCodecError antes de devolver runs
Preferências explícitas e acessibilidade
Forneça preferências como entradas MediaFeatures; elas descrevem o ambiente de renderização do caller e não inspecionam um sistema operativo, browser ou desktop ativo
| Feature | Valores aceites | Valor Boolean falso |
|---|---|---|
| prefers-color-scheme | light, dark | Nenhum dos valores |
| prefers-reduced-motion | no-preference, reduce | no-preference |
| prefers-reduced-transparency | no-preference, reduce | no-preference |
| prefers-contrast | no-preference, less, more, custom | no-preference |
| prefers-reduced-data | no-preference, reduce | no-preference |
| forced-colors | none, active | none |
| inverted-colors | none, inverted | none |
| scripting | none, initial-only, enabled | none |
Options := THPDFHeadlessRichTextDecodeOptions.Default;
Options.MediaType := hrmtScreen;
SetLength(Options.MediaFeatures, 2);
Options.MediaFeatures[0].Name := 'prefers-color-scheme';
Options.MediaFeatures[0].Value := 'dark';
Options.MediaFeatures[1].Name := 'prefers-contrast';
Options.MediaFeatures[1].Value := 'more';
Runs := HPDFDecodeHeadlessRichText(XHTML, Options);
@media (prefers-color-scheme: dark) and (prefers-contrast: more) {
span.notice { font-size: 20pt; font-weight: bold }
}
Todas as oito features são discretas: use igualdade ou uma condição Boolean e não use comparações min-/max- nem de intervalos ordenados
Light é um valor ativo de color-scheme numa query Boolean, e less ou custom é uma preferência de contraste ativa; custom não implica more
Uma preferência omitida permanece desconhecida tanto para print como para screen, incluindo sob not; o descodificador não inventa no-preference, light, none nem outro valor de fallback
Valores inválidos para features de host reconhecidas rejeitam o perfil antes de os runs serem devolvidos; escapes de identificadores CSS e comentários usam o tokenizer delimitado existente, incluindo comentários consumidos até ao fim da entrada
A feature scripting descreve apenas a disponibilidade fornecida pelo caller; avaliar a query não executa JavaScript
Atributos media de estilos, grupos aninhados e folhas externas fornecidas pelo caller partilham estas semânticas de features e as regras de cascata existentes
Documentos guardados e limites
Quem chama nativamente pode configurar um perfil personalizado de host através de THPDFHeadlessRichTextDecodeOptions e passá-lo diretamente a HPDFDecodeHeadlessRichText
Runs calculados mantêm os estilos escolhidos em RV guardado e aparências incorporadas; importações ordinárias de FDF/XFDF usam o perfil por defeito de print
Tokens de media, grupos aninhados, parsing de valores de hosts e correspondência partilham a contabilidade de MaxNodes, MaxTotalCodeUnits, MaxDepth e cancelamento com o parser existente de folhas de estilos
Descodificação falhada não publica runs parciais, e importações falhadas retêm o estado anterior do documento da transação envolvente
Folhas de estilo externas, calc e unidades viewport, mais features de media e layout CSS geral continuam a ser trabalho separado
Folhas de estilo internas · Opções nativas
Condições externas de links e importações usam o mesmo avaliador de media