Query di supporto CSS del rich text nativo
Il decoder XHTML nativo valuta i gruppi @supports e le condizioni supports() degli import rispetto alle sue dichiarazioni di rich text e alla grammatica dei selettori supportate
<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>
Nel profilo nativo si applicano entrambi i gruppi, producendo testo bold a 15 punti con i font forniti dal caller
Ammissione di dichiarazioni e selettori
Le query di dichiarazione usano gli helper di ammissione esistenti per font-size, font-weight, font-style, text-decoration, color, text-align, font-family, line-height, lo shorthand dei font, letter-spacing e word-spacing
Le query numeriche condividono il profilo matematico CSS finito, le metriche dei font predefinite e le dimensioni media esplicite; le proprietà non supportate o i valori non ammessi valutano a false
Le query font-family richiedono la collezione FontFamilyNames configurata, e una famiglia valida ma non disponibile può usare il fallback esistente della famiglia fornita
Una annotazione !important valida viene accettata in una query di dichiarazione senza cambiare la priorità di cascata del gruppo condizionale; una dichiarazione extra, un punto e virgola finale o una priorità non valida vengono rifiutati
selector() verifica la grammatica dei selettori nativa esistente e le dichiarazioni di namespace del foglio corrente senza fare matching con un elemento del documento
Ogni ramo del selettore deve essere supportato, inclusi i rami dentro le liste is() e where() normalmente permissive; prefissi di namespace indefiniti e pseudo classi sconosciute valutano a false
Il :scope di radice e la grammatica statica di :hover, :active, :focus, :focus-visible e :focus-within sono supportati. Una query di feature riuscita descrive il supporto del parser; i selettori di azione utente continuano a non fare mai matching con un'apparence PDF, e le forme funzionali come :hover() non sono valide
Le prove dei selettori ripristinano l'archiviazione temporanea del matcher e lasciano intatto il matching successivo dei fogli di stile; il loro lavoro consuma comunque i budget condivisi di nodi e cancellazione
Sintassi booleana e condizioni compatibili in avanti
Le condizioni accettano not, catene and o or omogenee e parentesi annidate; mescolare and con or richiede raggruppamento esplicito
Commenti ed escape degli identificatori CSS seguono il tokenizer esistente del decoder, e not deve essere una keyword separata dal termine seguente invece di un token di funzione not()
Funzioni sconosciute bilanciate e condizioni general-enclosed tra parentesi valutano a false, così un not circostante può fornire un fallback
Stringhe malformed, token URL senza virgolette malformed e delimitatori senza coppia invalidano la condizione circostante prima della negazione; le dimensioni numeriche e i token di funzione tra virgolette conservano i loro distinti confini di token
Gruppi, import e output
I gruppi condizionali conservano la loro posizione sorgente effettiva, la specificità del selettore e le priorità important, e possono annidarsi con gruppi media supportati
@import "metrics.css" supports(line-height: 18pt) print;
@import "fallback.css" supports(not selector(span:future));
La condizione supports() opzionale di un import segue l'URI della risorsa e precede la sua condizione media opzionale; entrambe devono ammettere la risorsa prima che questa contribuisca dichiarazioni
Risoluzione degli URI relativi, gestione dei cicli, isolamento dei namespace e i requisiti esistenti di ordine di import restano quelli dei fogli di stile forniti dal caller
Le dichiarazioni ammesse arrivano a run decodificati effettivi, valori rich canonici calcolati, appearance di campi salvate e import rich FDF/XFDF del profilo predefinito attraverso lo stesso decoder
Limiti e acceptance
Il parsing delle condizioni e le prove dei selettori consumano i limiti esistenti MaxNodes e MaxTotalCodeUnits; condizioni, blocchi e gruppi annidati condividono MaxDepth
La cancellazione propaga EHPDFOperationCancelled senza restituire run parziali, e le query fallite o i budget conservano il recupero di decodifica fresco e riutilizzato
Tests/Linux/RichTextSupports/Run.py verifica il comportamento di dichiarazioni, selettori, booleani e token URL, cascata annidata e import, cancellazione misurata e output effettivo di PDF plain e cifrati AES salvati
Questo profilo nativo non aggiunge layout da browser, livelli di import, custom properties, sintassi di selettori aggiuntiva o funzionalità condizionali CSS oltre le query di dichiarazione e selettore supportate sopra
La sintassi delle condizioni segue le porzioni supportate di CSS Conditional Rules Level 3 e Level 4; il profilo di ammissione nativo definisce quali query hanno successo