Native rich-text CSS support queries
Natywny dekoder XHTML ewaluuje grupy @supports i warunki importów supports() względem swojego obsługiwanego gramatycznego zbioru deklaracji i selektorów rich textu
<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>
W profilu natywnym obie grupy obowiązują, produkując pogrubiony tekst 15 punktów z fontami dostarczonymi przez wywołującego
Dopuszczanie deklaracji i selektorów
Query deklaracji używają istniejących helperów dopuszczania dla font-size, font-weight, font-style, text-decoration, color, text-align, font-family, line-height, shorthandu fontu, letter-spacing i word-spacing
Query numeryczne współdzielą skończony profil math CSS, domyślne metryki fontów i jawne wymiary mediów; nieobsługiwane właściwości albo niedopuszczone wartości ewaluują się do false
Query font-family wymagają skonfigurowanej kolekcji FontFamilyNames, a niedostępna, ale poprawna rodzina może używać istniejącego fallbacku dostarczonej rodziny
Poprawna adnotacja !important jest akceptowana w query deklaracji bez zmiany priorytetu kaskady grupy warunkowej; dodatkowa deklaracja, kończący średnik albo niepoprawny priorytet są odrzucane
selector() sprawdza istniejącą natywną gramatykę selektorów i deklaracje przestrzeni nazw bieżącego arkusza bez matchowania elementu dokumentu
Każda gałąź selektora musi być obsługiwana, włącznie z gałęziami wewnątrz normalnie wybaczających list is() i where(); niezdefiniowane prefiksy przestrzeni nazw i nieznane pseudo klasy ewaluują się do false
Korzeniowe :scope i statyczna gramatyka :hover, :active, :focus, :focus-visible i :focus-within są obsługiwane. Udane query feature opisuje wsparcie parsera; selektory akcji użytkownika nadal nigdy nie matchują wyglądu PDF, a funkcjonalne formy jak :hover() są niepoprawne
Próby selektorów przywracają tymczasowy magazyn matchera i zostawiają kolejne matchowanie arkuszy nietknięte; ich praca i tak zużywa współdzielone budżety węzłów i anulowania
Składnia Boolean i warunki forward-compatible
Warunki akceptują not, homogeniczne łańcuchy and albo or i zagnieżdżone nawiasy; mieszanie and z or wymaga jawnego grupowania
Komentarze i escape'y identyfikatorów CSS podążają za istniejącym tokenizerem dekodera, a not musi być keywordem oddzielonym od następującego terminu, a nie tokenem funkcji not()
Zbalansowane nieznane funkcje i nawiasowe warunki general-enclosed ewaluują się do false, więc otaczający not może dostarczyć fallback
Zniekształcone stringi, zniekształcone niekwotowane tokeny URL i niedopasowane delimitatory unieważniają otaczający warunek przed negacją; numeryczne wymiary i kwotowane tokeny funkcji zachowują swoje odrębne granice tokenów
Grupy, importy i wyjście
Grupy warunkowe zachowują swoją rzeczywistą pozycję źródłową, specificity selektora i priorytety important, i mogą się zagnieżdżać z obsługiwanymi grupami mediów
@import "metrics.css" supports(line-height: 18pt) print;
@import "fallback.css" supports(not selector(span:future));
Opcjonalny warunek supports() importu podąża za URI zasobu i poprzedza jego opcjonalny warunek mediów; oba muszą dopuścić zasób, zanim ten wniesie deklaracje
Względne rozwiązywanie URI, obsługa cykli, izolacja przestrzeni nazw i istniejące wymagania kolejności importów pozostają takie jak w arkuszach dostarczanych przez wywołującego
Dopuszczone deklaracje docierają do rzeczywistych zdekodowanych runów, obliczonych kanonicznych wartości rich, zapisanych wyglądów pól i importów rich FDF/XFDF profilu default przez ten sam dekoder
Ograniczenia i akceptacja
Parsowanie warunków i próby selektorów zużywają istniejące limity MaxNodes i MaxTotalCodeUnits; zagnieżdżone warunki, bloki i grupy współdzielą MaxDepth
Anulowanie propaguje EHPDFOperationCancelled bez zwracania częściowych runów, a zawiedzione query albo budżety zachowują odzyskiwanie świeżego i ponownie użytego dekodowania
Tests/Linux/RichTextSupports/Run.py weryfikuje zachowanie deklaracji, selektorów, Booleanów i tokenów URL, zagnieżdżoną kaskadę i importy, mierzone anulowanie oraz rzeczywiste zapisane wyjście PDF zwykłe i szyfrowane AES
Ten profil natywny nie dodaje layoutu przeglądarki, warstw importów, custom properties, dodatkowej składni selektorów ani warunkowych feature'ów CSS ponad obsługiwane wyżej query deklaracji i selektorów
Składnia warunków podąża za obsługiwanymi częściami CSS Conditional Rules Level 3 i Level 4; natywny profil dopuszczania definiuje, które query się powodzą