Nativa CSS-stödfrågor i rich text
Den nativa XHTML-avkodaren utvärderar @supports-grupper och supports()-importvillkor mot sina stödda rich-text-deklarationer och selectorspråk
<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>
I den nativa profilen tillämpas båda grupperna, vilket ger 15-punkters fet text med anroparens typsnitt
Deklarations- och selectorantagning
Deklarationsfrågor använder de befintliga antagningshjälpmedlen för font-size, font-weight, font-style, text-decoration, color, text-align, font-family, line-height, typsnittsgenväg, letter-spacing och word-spacing
Numeriska frågor delar den ändliga CSS-matematikprofilen, standardtypsnittsmått och uttryckliga mediadimensioner; egenskaper utan stöd eller icke-antagna värden utvärderas till false
Font-family-frågor kräver den konfigurerade FontFamilyNames-samlingen, och en otillgänglig men giltig familj kan använda det befintliga reservet med tillhandahållna familjer
En giltig !important-anteckning accepteras i en deklarationsfråga utan att ändra den villkorade gruppens kaskadprioritet; en extra deklaration, avslutande semikolon eller ogiltig prioritet avvisas
selector() kontrollerar den befintliga nativa selectorspråk och aktuella arks namespace-deklarationer utan att matcha ett dokumentelement
Varje selector-branch måste vara stödd, inklusive grenar inuti normalt förlåtande is()- och where()-listor; odefinierade namespace-prefix och okända pseudoklasser utvärderas till false
Rot-:scope och den statiska grammatiken för :hover, :active, :focus, :focus-visible och :focus-within stöds. En lyckad förmågefråga beskriver parserstöd; användaråtgärdsselectors matchar fortfarande aldrig ett PDF-utseende, och funktionella former som :hover() är ogiltiga
Selectoravkänningar återställer tillfällig matcharlagring och lämnar efterföljande stylesheetmatchning orörd; deras arbete förbrukar ändå den delade nod- och annulleringsbudgeten
Boolesk syntax och framåtkompatibla villkor
Villkor accepterar not, homogena and- eller or-kedjor och nästlade parenteser; att blanda and med or kräver uttrycklig gruppering
Kommentarer och CSS-identifierareskaper följer avkodarens befintliga tokeniserare, och not måste vara ett nyckelord skilt från efterföljande term snarare än en not()-funktionstoken
Balanserade okända funktioner och parentetiserade general-enclosed-villkor utvärderas till false, så en omslutande not kan ge ett reservalternativ
Felaktiga strängar, felaktiga ociterade URL-tokens och omatchade avgränsare ogiltigförklarar det omslutande villkoret före negation; numeriska dimensioner och citerade funktionstokens behåller sina distinkta token-gränser
Grupper, imports och utdata
Villkorade grupper behåller sin faktiska källposition, selectorspecifitet och important-prioriteringar, och kan nästlas med stödda mediagrupper
@import "metrics.css" supports(line-height: 18pt) print;
@import "fallback.css" supports(not selector(span:future));
En imports valfria supports()-villkor följer resurs-URI:n och föregår dess valfria mediavillkor; båda måste anta resursen innan den bidrar med deklarationer
Relativ URI-lösning, cykelhantering, namespace-isolering och de befintliga importordningskraven förblir desamma som för anropartillhandahållna stylesheets
Antagna deklarationer når faktiska avkodade runs, beräknade kanoniska rich-värden, sparade fältsutseenden och rich FDF/XFDF-importer med standardprofil via samma avkodare
Gränser och acceptans
Villkorsparsing och selectoravkänningar förbrukar de befintliga MaxNodes- och MaxTotalCodeUnits-gränserna; nästlade villkor, block och grupper delar MaxDepth
Annullering sprider EHPDFOperationCancelled utan att returnera partiella runs, och misslyckade frågor eller budgetar bevarar återhämtning för färska och återanvända decode-alternativ
Tests/Linux/RichTextSupports/Run.py verifierar deklarations-, selector-, Boolean- och URL-token-beteende, nästlad kaskad och imports, mätt annullering och faktiska sparade plain- respektive AES-krypterade PDF-utdata
Denna nativa profil lägger inte till webbläsarlayout, importlager, anpassade egenskaper, ytterligare selectorsyntax eller CSS-villkorsfunktioner utöver de stödda deklarations- och selectorfrågorna ovan
Villkorssyntaxen följer stödda delar av CSS Conditional Rules Level 3 och Level 4; den nativa antagningsprofilen definierar vilka frågor som lyckas