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

Decoder nativo · Opzioni di decode · Profili media