Consultas de soporte CSS de rich text nativo

El decodificador XHTML nativo evalúa los grupos @supports y las condiciones de importación supports() 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 llamador

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, font shorthand, letter-spacing y word-spacing

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

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

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() comprueba la gramática de selectores nativa existente y las declaraciones de namespace de la sheet actual sin emparejar ningún elemento del documento

Toda rama de selector debe estar soportada, incluidas las ramas dentro de las listas is() y where() normalmente forgiving; los prefijos de namespace indefinidos y las pseudo classes desconocidas evalúan false

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

Las sondas de selectores restauran el almacenamiento temporal del matcher y dejan intacto el emparejamiento posterior de stylesheets; su trabajo sigue consumiendo los presupuestos compartidos de nodos y cancelación

Sintaxis Boolean y condiciones forward-compatible

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 decodificador, y not debe ser una palabra clave 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 false, de modo que un not envolvente puede proporcionar un fallback

Las strings mal formadas, los tokens URL sin comillas mal formados y los delimitadores sin pareja invalidan la condición envolvente antes de la negación; las dimensiones numéricas y los tokens de función entre comillas retienen sus límites de token distintos

Grupos, importaciones y salida

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

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

La condición supports() opcional de una importación sigue al URI del recurso y precede a su condición de medios opcional; ambas deben admitir el recurso antes de que este aporte declaraciones

La resolución de URIs relativos, el manejo de ciclos, el aislamiento de namespaces y los requisitos existentes de orden de importación siguen siendo los de las style sheets suministradas por el llamador

Las declaraciones admitidas llegan a los runs decodificados reales, los rich values canónicos calculados, las appearances de campos guardadas y las importaciones rich FDF/XFDF de perfil por defecto a través del mismo decodificador

Bounds y aceptación

El parseo de condiciones y las sondas de selectores 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 o presupuestos fallidos retienen la recuperación existente de decodificaciones frescas y reutilizadas

Tests/Linux/RichTextSupports/Run.py verifica el comportamiento de declaraciones, selectores, Boolean y tokens URL, la cascada anidada y las importaciones, la cancelación medida y la salida PDF real guardada plana y cifrada AES

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

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

Decodificador nativo · Opciones de decodificación · Perfiles de medios