Media queries de rich text nativo
El decoder nativo de XHTML evalúa el atributo media de un elemento style y los grupos @media anidados antes de poner en cascada las declaraciones soportadas en runs de rich text reales
La evaluación media usa un perfil de host nativo explícito y no inspecciona un escritorio, navegador ni dispositivo de visualización
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>
Condiciones y cascada
Las consultas soportan los tipos de media all, print y screen, los modificadores only y not, alternativas separadas por comas, y condiciones not, and y or entre paréntesis
Las features numéricas aceptan igualdad con dos puntos, formas min-/max- y comparaciones de rango hacia adelante, invertidas o encadenadas usando =, <, <=, > y >=
Los grupos anidados retienen el orden de fuente, la importance de declaraciones, la especificidad del selector y las declaraciones de namespace heredadas; el atributo media de un style y todos los grupos media circundantes deben coincidir
Los escapes de identificadores CSS, los comentarios, la notación de exponente y los tokens de función balanceados se escanean dentro del mismo parser acotado
Las features desconocidas, los valores no soportados y las condiciones general-enclosed retienen un valor de verdad desconocido a través de la negación y la evaluación booleana; solo una consulta final true habilita sus declaraciones
Proveer una entrada de host para una feature futura no hace que esa feature forme parte del vocabulario de consultas soportado
Perfil de host
Las features numéricas soportadas son width, height, device-width, device-height, resolution, aspect-ratio, device-aspect-ratio, color, color-index, monochrome y grid
Las features discretas son orientation, scan, update, overflow-block, overflow-inline, color-gamut, pointer, any-pointer, hover y any-hover
Las unidades de longitud son pt, px, in, pc, cm, mm, q, em, rem, vw, vh, vmin y vmax; las unidades de resolución son dpi, dpcm, dppx y x, y los ratios usan notación con barra
El em y rem de media usan MediaInitialFontSize en lugar de un tamaño de fuente de elemento en cascada; su valor predeterminado es 12 puntos, y el cero retiene el mismo valor inicial de 12 puntos para los records legacy inicializados a cero
Una orientation o aspect-ratio omitida puede derivarse de width y height suministrados; altura cero deja el ratio desconocido, mientras que ancho y altura iguales usan orientación portrait
any-pointer puede contener coarse y fine a la vez; none no puede combinarse con otro valor de pointer, y color-gamut incluye los rangos de gamut soportados inferiores
El medio predeterminado es print, con 8 bits de color, sin color indexado ni monocromo, grid 0 y gamut sRGB; sus capacidades update, overflow-inline, pointer, hover y scan están ausentes, y overflow-block es paged
Las dimensiones y la resolución no tienen defaults de dispositivo inventados; las capacidades de screen distintas de los defaults de color compartidos requieren un valor de host explícito cuando son relevantes
MediaFeatures admite como máximo 32 nombres distintos insensibles a ASCII, cada uno con 1 a 64 letras, dígitos o guiones ASCII y un valor de 1 a 256 unidades de código UTF-16; las entradas reconocidas deben usar un valor numérico no negativo válido o un valor discreto soportado
MediaInitialFontSize debe ser finito y cero o estar entre 0.000001 y 1000000 puntos; los perfiles de host inválidos lanzan EHPDFHeadlessRichTextCodecError antes de devolver runs
Preferencias explícitas y accesibilidad
Suministre las preferencias como entradas MediaFeatures; describen el entorno de rendering del caller y no inspeccionan un sistema operativo, navegador ni escritorio activo
| Feature | Valores aceptados | Valor booleano falso |
|---|---|---|
| prefers-color-scheme | light, dark | Ninguno de los dos |
| 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 }
}
Las ocho features son discretas: use igualdad o una condición booleana, y no use min-/max- ni comparaciones de rango ordenado
Light es un valor de color-scheme activo en una consulta booleana, y less o custom es una preferencia de contraste activa; custom no implica more
Una preferencia omitida permanece desconocida tanto para print como para screen, incluso bajo not; el decoder no inventa no-preference, light, none ni otro valor de fallback
Los valores inválidos para features de host reconocidas rechazan el perfil antes de devolver runs; los escapes de identificadores CSS y los comentarios usan el tokenizer acotado existente, incluidos los comentarios consumidos hasta el final de la entrada
La feature scripting solo describe la disponibilidad suministrada por el caller; evaluar la consulta no ejecuta JavaScript
Los atributos media de style, los grupos anidados y las hojas externas suministradas por el caller comparten estas semánticas de features y las reglas de cascada existentes
Documentos guardados y límites
Los callers nativos pueden configurar un perfil de host personalizado mediante THPDFHeadlessRichTextDecodeOptions y pasarlo directamente a HPDFDecodeHeadlessRichText
Los runs computados retienen los estilos elegidos en el RV guardado y las apariencias incrustadas; los imports FDF/XFDF ordinarios usan el perfil print predeterminado
Los tokens media, los grupos anidados, el parsing de valores de host y el matching comparten MaxNodes, MaxTotalCodeUnits, MaxDepth y la contabilidad de cancelación con el parser de stylesheets existente
Una decodificación fallida no publica runs parciales, y los imports fallidos retienen el estado de documento previo de la transacción circundante
Las capas de import y condiciones supports, calc y unidades de viewport, más features media y layout CSS general siguen siendo trabajo separado
Style sheets internos · Opciones nativas
Las condiciones de link e import externos usan el mismo evaluador media