Native rich-text style sheets
Nativní XHTML dekodér aplikuje interní style elementy na rich-text pole i importy FDF/XFDF, se zachováním skutečně spočtených stylů v uloženém RV i vložených widget appearance
<body xmlns="http://www.w3.org/1999/xhtml">
<style>
.notice { color: #204080; font-size: 14pt }
p > span.urgent { font-weight: bold !important }
</style>
<p class="notice">Review <span class="urgent">today</span></p>
</body>
Style elementy použijí namespace XHTML a buď vynechají type, nebo specifikují text/css; atributy media i vnořené skupiny @media použijí explicitní nativní profil print/screen
Pravidla podporují univerzální i typové selektory, názvy tříd a ID citlivé na velikost písmen, složené selektory, kombinátory potomka, dítěte, sousedního sourozence i následného sourozence a čárkou oddělené skupiny selektorů
Namespace selektory
Deklarace CSS namespace i kvalifikované selektory podporují pojmenované i default namespace URI, wildcard či prázdné kvalifikátory, nezávislé scopy XML prefixů i ohraničené vyhledávání zděděných atributů
Atributové a strukturální selektory
Selektory atributů podporují přítomnost, rovnost, slova oddělená bílými znaky, pomlčkové prefixy, běžné prefixy, přípony a podřetězce: [name], [name="value"], [name~="word"], [name|="en"], [name^="pre"], [name$="end"] a [name*="part"]
Hodnoty atributů přijímají citované řetězce či CSS identifikátory a jejich escapování; volitelný příznak i sklápí jen ASCII písmena, zatímco s a vynechaný příznak porovnávají citlivě na velikost písmen
Neprefixované atributy i [|name] se trefí do atributů bez namespace URI; [*|name] se trefí navíc do prefixovaných atributů s tím lokálním názvem, vyjma deklarací namespace
Sourozenečtí kombinátoři přeskočí neelementové uzly a zachovají párování předků skrz zřetězené selektory
Strukturální pseudo třídy zahrnují :root, :empty, :first-child, :last-child, :only-child, :first-of-type, :last-of-type a :only-of-type
:scope vybírá kořenový element rich textu a páruje se jako :root, protože tento dekodér nemá oddělený scoping kořen určený volajícím
Statický profil připouští :hover, :active, :focus, :focus-visible a :focus-within jako platné selektory, které se při generování PDF appearance nikdy nespárují. Jejich negace a logické či relační kombinace zachovávají běžnou sémantiku selektorů, takže p:not(:hover) může styl aplikovat, zatímco p:hover ne
@supports selector(:hover) a ekvivalentní podmíněné importy testují podporu gramatiky selektorů a vyhodnotí se jako true; nevytváří to stav pointeru, aktivace ani klávesového fokusu. Těchto šest pseudo tříd nebere žádné argumenty, takže tvary jako :focus() zůstávají neplatné
Čtyři poziční selektory :nth-child(), :nth-last-child(), :nth-of-type() a :nth-last-of-type() přijmou odd, even, celočíselné pozice i vzorce An+B se znaménkovými desetinnými koeficienty za mezemi strojových celých čísel, v rámci nakonfigurovaného skenovacího rozpočtu
Typové pozice porovnávají lokální název i URI namespace elementu; pravidlo :empty řídí Selectors3, takže textový uzel s bílými znaky udělá element neprázdným, zatímco komentáře a processing instructions ne
:lang() řídí nejbližší explicitní hodnotu xml:lang či lang, trefí se ASCII necitlivě podle přesné hodnoty či pomlčkové předpony a explicitně prázdnou hodnotu bere jako zastavení dědění
Logické a relační selektorové seznamy
:is() a :where() přijmou čárkou oddělené složité selektory, tedy i kombinátory potomků a sourozenců; nepodporované větve se ignorují a prázdný platný seznam se netrefí do žádného elementu
:is() použije největší specificitu argumentů, tedy i platných argumentů, které se do aktuálního elementu netrefí; :where() přispívá nulovou specificitou
:not() přijme neprázdný seznam složitých selektorů a trefí se, když se netrefí žádný z jeho argumentů; neplatný argument zneplatní kompletní seznam selektorů
:has() ukotví relativní selektory k aktuálnímu elementu a testuje skutečné potomky, předky či následné sourozence; každý relativní argument může začínat >, + či ~ a následovat další podporované kombinátory
Vnořené :has() i pseudo elementy nejsou podporované; neplatný relativní argument zneplatní kompletní seznam :has(), zatímco obklopující shovívavý seznam :is() či :where() může ponechat své ostatní platné argumenty
:not() a :has() použijí největší platnou specificitu argumentů, porovnávanou podle počtu ID, počtu tříd/atributů/pseudo tříd a počtu typů
:nth-child(An+B of selector-list) a :nth-last-child(An+B of selector-list) počítají jen elementové sourozence odpovídající sjednocení neprázdného seznamu složitých selektorů; cíl sám musí do toho sjednocení patřit
Filtrované poziční selektory přispějí vlastní specificitou pseudo třídy plus největší specificitou filtru; klíčové slovo of přijme CSS identifikátorové escapování i hranice komentářů, zatímco :nth-of-type() a :nth-last-of-type() si uchovávají nefiltrovanou gramatiku
p:has(> span.urgent) { color: red }
span:is(.notice, p > .urgent) { font-weight: bold }
span:nth-child(2 of .included, [data-status="ready"]) { color: blue }
CSS komentáře i identifikátorové escapování se parsují, dřív než párování, tedy i jedna až šest hexadecimálních číslic, volitelný závěrečný CSS whitespace i supplementární Unicode skaláry; nulové, surrogate i mimo rozsah ležící hexadecimální escapování se rozřeší na U+FFFD
Deklarace kaskádují podle importance, specificity selektorů i dokumentového pořadí zdroje, následované inline styly v jejich odpovídající importance; elementy dědí spočtené hodnoty rodičů přes stávající pravidla specifická pro vlastnosti
Všechny interní style elementy se účastní, dřív než se konzumuje text, takže style element za svým cílem pořád platí; text stylů se nestává viditelným textem pole
Profil deklarací si uchovává velikost, weight, styl i shorthand písma, nakonfigurované rodinné seznamy, barvu, textovou dekoraci, zarovnání, výšku řádku i letter/word spacing; konverze délek, strut rodičovských metrik i přijímání dodaných písem řídí stávající nativní rich-text API
Uložené RV obsahuje spočtené inline styly a nezávisí na původních style elementech; opakované ekvivalentní importy FDF/XFDF si uchovají přesně potvrzené bajty, když žádné čekající grafové změny nevyžadují publikaci
Nativní Pascal konzumenté, Windows file joby a původní V1 callbacky i Linux JSON/V1 callbacky sdílejí dekodér; žádné změny rozložení veřejných callback záznamů se nevyžadují
MaxTotalCodeUnits ohraničuje sken stylů, extrahovaný style text i agregátní rozbalené deklarace; MaxNodes ohraničuje počet pravidel, názvy selektorů, agregátní atributové/pseudo podmínky, funkční selektorové seznamy i práci párování a třídění, tedy i relativní traversal i skeny filtrovaných sourozenců; MaxDepth ohraničuje sběr XML, části selektorů, vnořené funkce i rekurzivní párování
Selhání zrušení i limitů si uchovají předchozí dekodérový výstup i potvrzený dokumentový stav importní transakce; retry použije tytéž původní volby i rozpočty
Neplatné či nepodporované top-level selektorové skupiny se ignorují jako celek; shovívavé seznamy argumentů is/where si ponechají své platné větve; neplatné deklarace si uchovávají stávající chování ignorování dekodéru a nepodporované at-pravidla se přeskakují
Vrstvy import a podmínky supports, další media vlastnosti, pseudo elementy, dodatečné pseudo třídy state a scope, tabulky, obrázky i obecný CSS layout zůstávají aktivní prací
Nativní form-data interchange · Linux rich callbacky · Windows form-data exchange · Rich run spacing
Externí styly dodané volajícím přidávají napojený i rekurzivně importovaný CSS s rozřešením URI resource, media podmínkami i vybranými sadami stylů
Nativní support dotazy připouštějí skupiny @supports a importy supports() s podporovaným profilem deklarací a selektorů, se sdílenými mezemi i zotavením po zrušení