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

FeatureValores aceptadosValor booleano falso
prefers-color-schemelight, darkNinguno de los dos
prefers-reduced-motionno-preference, reduceno-preference
prefers-reduced-transparencyno-preference, reduceno-preference
prefers-contrastno-preference, less, more, customno-preference
prefers-reduced-datano-preference, reduceno-preference
forced-colorsnone, activenone
inverted-colorsnone, invertednone
scriptingnone, initial-only, enablednone
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