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