Nativa mediafrågor i rich text
Den nativa XHTML-avkodaren utvärderar ett style-elements media-attribut och nästlade @media-grupper innan stödda deklarationer kaskaderas till faktiska rich-text-runs
Mediautvärdering använder en uttrycklig nativ värdprofil och granskar inte något skrivbord, någon webbläsare eller någon visningsenhet
Options := THPDFHeadlessRichTextDecodeOptions.Default;
Options.MediaType := hrmtScreen;
SetLength(Options.MediaFeatures, 2);
Options.MediaFeatures[0].Name := 'width';
Options.MediaFeatures[0].Value := '800px';
Options.MediaFeatures[1].Name := 'resolution';
Options.MediaFeatures[1].Value := '2dppx';
Runs := HPDFDecodeHeadlessRichText(XHTML, Options);
<style media="screen and (width >= 600px)">
@media (resolution >= 2dppx) {
span.notice { font-size: 14pt }
}
</style>
Villkor och kaskad
Frågor stöder mediatyperna all, print och screen, modifierarna only och not, kommaseparerade alternativ samt parentetiserade not-, and- och or-villkor
Numeriska funktioner accepterar kolonlikhet, min-/max-former och framåtriktade, omvända eller kedjade intervalljämförelser med =, <, <=, > och >=
Nästlade grupper behåller källordning, deklarationsvikt, selectorspecifitet och ärvda namespace-deklarationer; ett styles media-attribut och alla omslutande mediagrupper måste matcha
CSS-identifierareskaper, kommentarer, exponentnotation och balanserade funktionstokens skannas inom samma avgränsade parser
Okända funktioner, värden utan stöd och general-enclosed-villkor behåller ett okänt sanningsvärde genom negation och boolesk utvärdering; bara en slutligen sann fråga aktiverar sina deklarationer
Att tillhandahålla en värdpost för en framtida funktion gör den funktionen inte till del av det stödda frågordförrådet
Värdprofil
Stödda numeriska funktioner är width, height, device-width, device-height, resolution, aspect-ratio, device-aspect-ratio, color, color-index, monochrome och grid
Diskreta funktioner är orientation, scan, update, overflow-block, overflow-inline, color-gamut, pointer, any-pointer, hover och any-hover
Längdenheter är pt, px, in, pc, cm, mm, q, em och rem; upplösningsenheter är dpi, dpcm, dppx och x, och kvoter använder snedstrecknotation
Media-em och -rem använder MediaInitialFontSize i stället för en kaskaderad elementteckenstorlek; dess standard är 12 punkter, och noll behåller samma 12-punkters startvärde för nollinitierade äldre poster
En utelämnad orientation eller aspect-ratio kan härledas från tillhandahållen width och height; nollhöjd lämnar kvoten okänd, medan lika bredd och höjd använder stående orientering (portrait)
any-pointer kan innehålla både coarse och fine; none kan inte kombineras med ett annat pointer-värde, och color-gamut inkluderar de lägre stödda gamut-rangerna
Standardmediet är print, med 8 färgbitar, inget indexerat eller monokromt färgläge, grid 0 och sRGB-gamut; dess update-, overflow-inline-, pointer-, hover- och scan-förmågor saknas, och overflow-block är sidnumrerad
Dimensioner och upplösning har inga uppfunna enhetsstandardvärden; skärmförmågor utöver de delade färgstandardvärdena kräver ett uttryckligt värdvärde när relevant
MediaFeatures tillåter högst 32 distinkta ASCII-okänsliga namn, vart och ett med 1 till 64 ASCII-bokstäver, siffror eller bindestreck och ett värde på 1 till 256 UTF-16-kodenheter; kända poster måste använda ett giltigt icke-negativt numeriskt eller stött diskret värde
MediaInitialFontSize måste vara ändligt och antingen noll eller mellan 0,000001 och 1000000 punkter; ogiltiga värdprofiler kastar EHPDFHeadlessRichTextCodecError innan runs returneras
Uttryckliga preferenser och tillgänglighet
Lämna preferenser som MediaFeatures-poster; de beskriver anroparens renderingsmiljö och granskar inte något operativsystem, någon webbläsare eller något aktivt skrivbord
| Funktion | Accepterade värden | Falskt booleskt värde |
|---|---|---|
| prefers-color-scheme | light, dark | Inget av värdena |
| prefers-reduced-motion | no-preference, reduce | no-preference |
| prefers-reduced-transparency | no-preference, reduce | no-preference |
| prefers-contrast | no-preference, less, more, custom | no-preference |
| prefers-reduced-data | no-preference, reduce | no-preference |
| forced-colors | none, active | none |
| inverted-colors | none, inverted | none |
| scripting | none, initial-only, enabled | none |
Options := THPDFHeadlessRichTextDecodeOptions.Default;
Options.MediaType := hrmtScreen;
SetLength(Options.MediaFeatures, 2);
Options.MediaFeatures[0].Name := 'prefers-color-scheme';
Options.MediaFeatures[0].Value := 'dark';
Options.MediaFeatures[1].Name := 'prefers-contrast';
Options.MediaFeatures[1].Value := 'more';
Runs := HPDFDecodeHeadlessRichText(XHTML, Options);
@media (prefers-color-scheme: dark) and (prefers-contrast: more) {
span.notice { font-size: 20pt; font-weight: bold }
}
Alla åtta funktioner är diskreta: använd likhet eller ett booleskt villkor, och använd inte min-/max- eller ordnade intervalljämförelser
Light är ett aktivt color-scheme-värde i en boolesk fråga, och less eller custom är en aktiv kontrastpreferens; custom antyder inte more
En utelämnad preferens förblir okänd för både print och screen, även under not; avkodaren hittar inte på no-preference, light, none eller något annat reservvärde
Ogiltiga värden för kända värdfunktioner avvisar profilen innan runs returneras; CSS-identifierareskaper och kommentarer använder den befintliga avgränsade tokeniseraren, inklusive kommentarer som konsumeras till slutet av indata
Funktionen scripting beskriver bara tillgänglighet som tillhandahålls av anroparen; att utvärdera frågan kör inte JavaScript
Styles media-attribut, nästlade grupper och anropartillhandahållna externa ark delar dessa funktioners semantik och befintliga kaskadregler
Sparade dokument och gränser
Nativa anropare kan konfigurera en anpassad värdprofil via THPDFHeadlessRichTextDecodeOptions och skicka den direkt till HPDFDecodeHeadlessRichText
Beräknade runs behåller de valda stilarna i sparad RV och inbäddade utseenden; vanliga FDF/XFDF-importer använder standardprofilen print
Mediatokens, nästlade grupper, tolkning av värdvärden och matchning delar MaxNodes, MaxTotalCodeUnits, MaxDepth och annulleringsredovisning med den befintliga stylesheet-parsern
Misslyckad avkodning publicerar inte partiella runs, och misslyckade imports behåller den omgivande transaktionens tidigare dokumenttillstånd
Importlager och supports-villkor, calc- och viewport-enheter, ytterligare mediafunktioner och allmän CSS-layout förblir separat arbete
Infogade stylesheets · Nativa options
Externa länk- och importvillkor använder samma mediautvärderare