Consultas de soporte CSS de rich text nativo

El decoder nativo de XHTML evalúa los grupos @supports y las condiciones supports() de import contra sus declaraciones de rich text y gramática de selectores soportadas

<body xmlns="http://www.w3.org/1999/xhtml">
  <style><![CDATA[
    @supports (font-size: calc(10pt + 5pt)) and selector(span.notice) {
      span.notice { font-size: 15pt }
    }
    @supports not (display: grid) {
      span.notice { font-weight: bold }
    }
  ]]></style>
  <p><span class="notice">Conditional text</span></p>
</body>

En el perfil nativo ambos grupos se aplican, produciendo texto bold de 15 puntos con las fuentes suministradas por el caller

Admisión de declaraciones y selectores

Las consultas de declaraciones usan los helpers de admisión existentes para font-size, font-weight, font-style, text-decoration, color, text-align, font-family, line-height, el font shorthand, letter-spacing y word-spacing

Las consultas numéricas comparten el perfil de matemáticas CSS finito, las métricas de fuente predeterminadas y las dimensiones de media explícitas; las propiedades no soportadas o los valores no admitidos evalúan a false

Las consultas de font-family requieren la colección FontFamilyNames configurada, y una familia válida pero no disponible puede usar el fallback existente de familia suministrada

Una anotación !important válida se acepta en una consulta de declaración sin cambiar la prioridad de cascada del grupo condicional; una declaración extra, un punto y coma final o una prioridad inválida se rechazan

selector() verifica la gramática de selectores nativa existente y las declaraciones de namespace de la hoja actual sin hacer matching contra un elemento del documento

Cada rama del selector debe estar soportada, incluidas las ramas dentro de listas is() y where() normalmente tolerantes; los prefijos de namespace indefinidos y las pseudo clases desconocidas evalúan a false

El :scope de raíz y la gramática estática de :hover, :active, :focus, :focus-visible y :focus-within están soportados. Una consulta de feature exitosa describe soporte del parser; los selectores de acción de usuario siguen sin hacer nunca matching contra una apariencia PDF, y las formas funcionales como :hover() son inválidas

Las pruebas de selector restauran el almacenamiento temporal del matcher y dejan intacto el matching posterior de hojas de estilo; su trabajo igualmente consume los presupuestos compartidos de nodos y cancelación

Sintaxis booleana y condiciones compatibles hacia adelante

Las condiciones aceptan not, cadenas and u or homogéneas y paréntesis anidados; mezclar and con or exige agrupación explícita

Los comentarios y los escapes de identificadores CSS siguen el tokenizer existente del decoder, y not debe ser una keyword separada del término siguiente en lugar de un token de función not()

Las funciones desconocidas balanceadas y las condiciones general-enclosed entre paréntesis evalúan a false, de modo que un not envolvente puede proporcionar un fallback

Cadenas malformed, tokens de URL sin comillas malformed y delimitadores sin pareja invalidan la condición envolvente antes de la negación; las dimensiones numéricas y los tokens de funciones entre comillas retienen sus límites de token distintos

Grupos, imports y salida

Los grupos condicionales retienen su posición de fuente real, especificidad de selector y prioridades important, y pueden anidarse con grupos de media soportados

@import "metrics.css" supports(line-height: 18pt) print;
@import "fallback.css" supports(not selector(span:future));

La condición supports() opcional de un import sigue al URI del recurso y precede a su condición de media opcional; ambas deben admitir el recurso antes de que este contribuya declaraciones

La resolución de URI relativos, el manejo de ciclos, el aislamiento de namespaces y los requisitos existentes de orden de import son los del stylesheet suministrado por el caller

Las declaraciones admitidas llegan a runs decodificados reales, valores rich canónicos computados, apariencias de campos guardadas e imports rich FDF/XFDF del perfil predeterminado a través del mismo decoder

Límites y aceptación

El parsing de condiciones y las pruebas de selector consumen los límites existentes MaxNodes y MaxTotalCodeUnits; las condiciones, bloques y grupos anidados comparten MaxDepth

La cancelación propaga EHPDFOperationCancelled sin devolver runs parciales, y las consultas fallidas o los presupuestos retienen la recuperación de decodificación fresca y reutilizada

Tests/Linux/RichTextSupports/Run.py verifica el comportamiento de declaraciones, selectores, booleanos y tokens de URL, cascada anidada e imports, cancelación medida y salida real de PDF plain y cifrado AES guardados

Este perfil nativo no añade layout de navegador, capas de import, custom properties, sintaxis de selector adicional ni características condicionales CSS más allá de las consultas de declaración y selector soportadas de arriba

La sintaxis de condiciones sigue las porciones soportadas de CSS Conditional Rules Level 3 y Level 4; el perfil nativo de admisión define qué consultas tienen éxito

Decoder nativo · Opciones de decode · Perfiles de media