Media queries de rich text nativo

El decodificador XHTML nativo evalúa el atributo media de un style element y los grupos @media anidados antes de poner en cascada las declaraciones soportadas en los runs reales de rich text

La evaluación de medios usa un perfil de host nativo explícito y no inspecciona ningún escritorio, navegador ni dispositivo de pantalla

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 queries soportan los tipos de medios all, print y screen, los modificadores only y not, alternativas separadas por comas y condiciones not, and y or entre paréntesis

Las características numéricas aceptan igualdad con dos puntos, formas min-/max- y comparaciones de rango forward, reversed o encadenadas usando =, <, <=, > y >=

Los grupos anidados retienen el orden de fuente, la importancia de declaraciones, la especificidad de selectores y las declaraciones de namespace heredadas; el atributo media de un style y todos los grupos de medios envolventes deben emparejar

Los escapes de identificadores CSS, los comentarios, la notación exponencial y los tokens de función balanceados se escanean dentro del mismo parser acotado

Las características 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 Boolean; solo una query final true habilita sus declaraciones

Suministrar una entrada de host para una característica futura no convierte esa característica en parte del vocabulario de queries soportado

Perfil de host

Las características numéricas soportadas son width, height, device-width, device-height, resolution, aspect-ratio, device-aspect-ratio, color, color-index, monochrome y grid

Las características 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 y rem; las unidades de resolución son dpi, dpcm, dppx y x, y los ratios usan notación slash

Los em y rem de medios usan MediaInitialFontSize en lugar de un tamaño de fuente de elemento en cascada; su valor por defecto 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 suministradas; una altura cero deja el ratio desconocido, mientras que width y height 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 por defecto es print, con 8 bits de color, sin color indexed ni monochrome, 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 valores por defecto de dispositivo inventados; las capacidades de screen distintas de los valores de color compartidos exigen un valor de host explícito cuando son relevantes

MediaFeatures admite 32 nombres distintos insensibles a mayúsculas ASCII como máximo, cada uno con 1 a 64 letras, dígitos o guiones ASCII y un valor de 1 a 256 code units 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 llamador y no inspeccionan ningún sistema operativo, navegador ni escritorio activo

CaracterísticaValores aceptadosValor Boolean false
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 características son discretas: use igualdad o una condición Boolean, y no use min-/max- ni comparaciones de rango ordenadas

Light es un valor de color-scheme activo en una query Boolean, 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 decodificador no inventa no-preference, light, none ni otro valor de respaldo

Los valores inválidos para las características 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 característica scripting solo describe la disponibilidad suministrada por el llamador; evaluar la query no ejecuta JavaScript

Los atributos media de styles, los grupos anidados y las sheets externas suministradas por el llamador comparten estas semánticas de características y las reglas de cascada existentes

Documentos guardados y bounds

Los llamadores nativos pueden configurar un perfil de host personalizado a través de THPDFHeadlessRichTextDecodeOptions y pasarlo directamente a HPDFDecodeHeadlessRichText

Los runs calculados retienen los estilos elegidos en el RV guardado y las appearances incrustadas; las importaciones ordinarias de FDF/XFDF usan el perfil print por defecto

Los tokens de medios, los grupos anidados, el parseo de valores de host y el emparejamiento 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 las importaciones fallidas retienen el estado previo del documento de la transacción circundante

Las capas de importación y las condiciones supports, calc y las unidades de viewport, más características de medios y el layout CSS general siguen siendo trabajo aparte

Style sheets internas · Opciones nativas

Las condiciones externas de link e import usan el mismo evaluador de medios