Native rich-text style sheets
Natywny dekoder XHTML stosuje wewnętrzne elementy style do pól rich text i importów FDF/XFDF, zachowując rzeczywiste obliczone style w zapisanym RV i osadzonych wyglądach widgetów
<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>
Elementy style używają przestrzeni nazw XHTML i albo pomijają type, albo podają text/css; media musi być nieobecne, puste albo all
Reguły wspierają selektory uniwersalne i typowe, nazwy class i ID rozróżniające wielkość liter, compoundy, kombinatory potomków, dziecka, sąsiedniego rodzeństwa i kolejnego rodzeństwa oraz grupy selektorów oddzielone przecinkami
Namespace selectors
Deklaracje przestrzeni nazw CSS i kwalifikowane selektory wspierają nazwane i domyślne URI przestrzeni nazw, kwalifikatory wildcard albo puste, niezależne scope prefixów XML i ograniczone dziedziczone odpytanie atrybutów
Attribute and structural selectors
Selektory atrybutów wspierają obecność, równość, słowa oddzielone białymi znakami, prefixy łącznikowe, zwykłe prefixy, sufiksy i podciągi: [name], [name="value"], [name~="word"], [name|="en"], [name^="pre"], [name$="end"] i [name*="part"]
Wartości atrybutów akceptują ciągi w cudzysłowach albo identyfikatory CSS i ich escape'y; opcjonalna flaga i zniża wielkość liter wyłącznie ASCII, podczas gdy s i pominięta flaga porównują rozróżniając wielkość liter
Atrybuty bez prefiksu i [|name] pasują do atrybutów bez URI przestrzeni nazw; [*|name] pasuje też do atrybutów z prefiksem o tej nazwie lokalnej, wykluczając deklaracje przestrzeni nazw
Kombinatory rodzeństwa pomijają węzły nie-elementowe i zachowują dopasowanie przodków przez łańcuchowe selektory
Strukturalne pseudo-klasy obejmują :root, :empty, :first-child, :last-child, :only-child, :first-of-type, :last-of-type i :only-of-type
:scope wybiera główny element rich-text, co odpowiada :root, ponieważ ten dekoder nie ma osobnego korzenia zakresowania określanego przez wywołującego
Profil statyczny akceptuje :hover, :active, :focus, :focus-visible i :focus-within jako poprawne selektory, które nigdy nie pasują podczas generowania wyglądów PDF. Ich negacje oraz kombinacje logiczne albo relacyjne zachowują normalną semantykę selektorów, więc p:not(:hover) może zastosować styl, podczas gdy p:hover nie
@supports selector(:hover) i równoważne importy warunkowe testują wsparcie gramatyki selektorów i ewaluują się na true; nie tworzy to stanu wskaźnika, aktywacji ani fokusu klawiatury. Te sześć pseudo-klas nie przyjmuje argumentów, więc formy takie jak :focus() pozostają niepoprawne
Cztery selektory pozycyjne :nth-child(), :nth-last-child(), :nth-of-type() i :nth-last-of-type() akceptują odd, even, pozycje całkowite i wzory An+B ze współczynnikami dziesiętnymi ze znakiem poza zakresami liczb całkowitych maszyny, w granicy skonfigurowanego budżetu skanowania
Pozycje typów porównują i lokalną nazwę elementu, i URI przestrzeni nazw; reguła :empty podąża za Selectors3, więc tekstowy węzeł białych znaków czyni element niepustym, a komentarze i instrukcje przetwarzania nie
:lang() podąża za najbliższą jawną wartością xml:lang albo lang, dopasowuje ASCII bez rozróżniania wielkości liter według dokładnej wartości albo prefixu łącznikowego i traktuje jawnie pustą wartość jako zatrzymującą dziedziczenie
Logical and relational selector lists
:is() i :where() akceptują złożone selektory oddzielone przecinkami, łącznie z kombinatorami potomków i rodzeństwa; nieobsługiwane gałęzie są ignorowane, a pusta poprawna lista nie pasuje do żadnego elementu
:is() używa największej specyficzności argumentów, łącznie z poprawnymi argumentami nie pasującymi do bieżącego elementu; :where() wnosi zerową specyficzność
:not() akceptuje niepustą listę złożonych selektorów i pasuje, gdy żaden z jego argumentów nie pasuje; niepoprawny argument unieważnia kompletną listę selektorów
:has() kotwiczy selektory względne do bieżącego elementu i testuje rzeczywistych potomków, potomków-drzewa albo następujących rodzeństwa; każdy względny argument może zaczynać się od >, + albo ~, po których następują dalsze obsługiwane kombinatory
Zagnieżdżone :has() i pseudoelementy są nieobsługiwane; niepoprawny względny argument unieważnia kompletną listę :has(), podczas gdy otaczająca wybaczająca lista :is() albo :where() może zachować swoje inne poprawne argumenty
:not() i :has() używają największej specyficzności poprawnych argumentów, porównywanej liczbą ID, liczbą class/atrybutów/pseudo i liczbą typów
:nth-child(An+B of selector-list) i :nth-last-child(An+B of selector-list) liczą wyłącznie rodzeństwo-elementy pasujące do unii niepustej listy złożonych selektorów; cel sam musi należeć do tej unii
Filtrowane selektory pozycyjne wnoszą własną specyficzność pseudo-klasy plus największą specyficzność filtru; słowo kluczowe of akceptuje escape'y identyfikatorów CSS i granice komentarzy, podczas gdy :nth-of-type() i :nth-last-of-type() zachowują niefiltrowaną gramatykę
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 }
Komentarze CSS i escape'y identyfikatorów są parsowane przed dopasowaniem, łącznie z od jednej do sześciu cyfr szesnastkowych, opcjonalnym końcowym białym znakiem CSS i skalarami Unicode uzupełniającymi; escape'y zero, surrogate i poza zakresem rozpoznają się do U+FFFD
Deklaracje kaskadowo się układają według important, specyficzności selektora i kolejności źródłowej dokumentu, po czym następują inline style z odpowiadającym im important; elementy dziedziczą obliczone wartości rodziców przez istniejące reguły właściwe właściwościom
Wszystkie wewnętrzne elementy style uczestniczą, zanim tekst zostanie skonsumowany, więc element style występujący po swoim celu nadal stosuje się; tekst stylów nie staje się widocznym tekstem pola
Profil deklaracji zachowuje rozmiar, weight, styl i shorthand fontu, skonfigurowane listy rodzin, kolor, dekorację tekstu, wyrównanie, wysokość linii oraz odstępy liter i słów; konwersja długości, podpory metryczne rodziców i przyjmowanie dostarczonych fontów podążają za istniejącymi natywnymi API rich text
Zapisane RV zawiera obliczone inline style i nie zależy od oryginalnych elementów style; powtórzone równoważne importy FDF/XFDF zachowują dokładne zacommitowane bajty, gdy żadne oczekujące zmiany grafu nie wymagają publikacji
Natywni konsumenci Pascal, zadania plikowe Windows i oryginalne callbacki V1 oraz JSON/callbacki V1 Linuksa dzielą dekoder; żadne publiczne zmiany layoutów rekordów callbacków nie są wymagane
MaxTotalCodeUnits ogranicza skanowanie arkuszy stylów, ekstrahowany tekst stylów i zagregowane rozwinięte deklaracje; MaxNodes ogranicza liczbę reguł, nazwy selektorów, zagregowane warunki atrybutów/pseudo, listy selektorów funkcyjnych i pracę dopasowania/sortowania, łącznie ze względnym traversalem i filtrowanym skanem rodzeństwa; MaxDepth ogranicza kolekcjonowanie XML, części selektorów, zagnieżdżone funkcje i rekurencyjne dopasowanie
Anulowanie i awarie limitów zachowują poprzednie wyjście dekodera i zacommitowany stan dokumentu transakcji importu; ponowienie używa tych samych oryginalnych opcji i budżetów
Niepoprawne albo nieobsługiwane grupy selektorów najwyższego poziomu są ignorowane w całości; wybaczające listy argumentów is/where zachowują swoje poprawne gałęzie; niepoprawne deklaracje zachowują istniejące zachowanie ignorowania dekodera, a nieobsługiwane media i at-rules są pomijane
Zewnętrzne arkusze stylów, warunkowe reguły mediów, pseudoelementy, dodatkowe pseudo-klasy stanu i scope, tabele, obrazy i ogólny layout CSS pozostają aktywną pracą
Native form-data interchange · Callbacki rich Linux · Wymiana form-data Windows · Odstępy runów rich
Zewnętrzne arkusze stylów dostarczone przez wywołującego dodają linkowany i rekurencyjnie importowany CSS z rozwiązywaniem URI zasobów, warunkami mediów i wybranymi zestawami arkuszy
Natywne support queries dopuszczają grupy @supports i importy supports() przy użyciu obsługiwanego profilu deklaracji i selektorów, ze współdzielonymi ograniczeniami i odzyskiwaniem po anulowaniu