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ística | Valores aceptados | Valor Boolean false |
|---|---|---|
| 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 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