Native rich-text media queries
Den native XHTML-dekoder evaluerer et style-elements media-attribut og nestede @media-grupper, før understøttede erklæringer kaskaderes ind i rigtige rich text-runs
Media-evaluering bruger en eksplicit native host-profil og inspicerer ikke en desktop, browser eller skærmenhed
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>
Betingelser og kaskadering
Queries understøtter alle, print og screen media-typer, only- og not-modifikatorer, kommaseparerede alternativer samt parenteserede not-, and- og or-betingelser
Numeriske features accepterer kolon-lighed, min-/max-former samt fremadrettede, omvendte eller kædede interval-sammenligninger med =, <, <=, > og >=
Nestede grupper beholder kilderækkefølge, erklæringsprioritet, selektorspecificitet og nedarvede namespace-erklæringer; en style media-attribut og alle omsluttende media-grupper skal matche
CSS identifikator-escapes, kommentarer, eksponentnotation og balancerede funktions-tokens scannes inden for samme afgrænsede parser
Ukendte features, ikke-understøttede værdier og general-enclosed betingelser beholder en ukendt sandhedsværdi gennem negation og boolesk evaluering; kun en endelig true-query aktiverer sine erklæringer
At levere en host-indgang til en fremtidig feature gør ikke den feature til en del af det understøttede query-ordforråd
Host-profil
Understøttede numeriske features er width, height, device-width, device-height, resolution, aspect-ratio, device-aspect-ratio, color, color-index, monochrome og grid
Diskrete features er orientation, scan, update, overflow-block, overflow-inline, color-gamut, pointer, any-pointer, hover og any-hover
Længdeunits er pt, px, in, pc, cm, mm, q, em og rem; opløsningsunits er dpi, dpcm, dppx og x, og forhold bruger skråstregs-notation
Media em og rem bruger MediaInitialFontSize snarere end en kaskaderet element-fontstørrelse; dens standard er 12 points, og nul beholder samme 12-points startværdi for nul-initialiserede legacy-records
En udeladt orientation eller aspect-ratio kan udledes af leveret bredde og højde; nul højde efterlader forholdet ukendt, mens ens bredde og højde bruger portrait-orientering
any-pointer må indeholde både coarse og fine; none kan ikke kombineres med en anden pointer-værdi, og color-gamut inkluderer de lavere understøttede gamut-rangeringer
Standardmediet er print med 8 farvebits, ingen indexed eller monochrome farve, grid 0 og sRGB-gamut; dets update-, overflow-inline-, pointer-, hover- og scan-capabilities er fraværende, og overflow-block er paged
Dimensioner og opløsning har ingen opfundne enhedsstandarder; screen-capabilities ud over de delte farvestandarder kræver en eksplicit host-værdi, når relevant
MediaFeatures tillader højst 32 distinkte ASCII-insensitive navne, hver med 1 til 64 ASCII-bogstaver, cifre eller bindestreger og en værdi på 1 til 256 UTF-16 code units; genkendte indgange skal bruge en gyldig ikke-negativ numerisk eller understøttet diskret værdi
MediaInitialFontSize skal være endeligt og enten nul eller mellem 0,000001 og 1000000 points; ugyldige host-profiler udløser EHPDFHeadlessRichTextCodecError, før runs returneres
Eksplicitte præferencer og tilgængelighed
Lever præferencer som MediaFeatures-indgange; de beskriver kalderens renderingsmiljø og inspicerer ikke et operativsystem, en browser eller et aktivt skrivebord
| Feature | Accepterede værdier | Falsk boolesk værdi |
|---|---|---|
| prefers-color-scheme | light, dark | Ingen af værdierne |
| 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 }
}
Alle otte features er diskrete: brug lighed eller en boolesk betingelse, og brug ikke min-/max- eller ordnede interval-sammenligninger
Light er en aktiv color scheme-værdi i en boolesk query, og less eller custom er en aktiv kontrastpræference; custom indebærer ikke more
En udeladt præference forbliver ukendt for både print og screen, også under not; dekoderen opfinder ikke no-preference, light, none eller en anden fallback-værdi
Ugyldige værdier for genkendte host-features afviser profilen, før runs returneres; CSS identifikator-escapes og kommentarer bruger den eksisterende afgrænsede tokenizer, inklusive kommentarer forbrugt til input-slut
Scripting-featuren beskriver kun tilgængelighed leveret af kalderen; evaluering af queryen afvikler ikke JavaScript
Style media-attributter, nestede grupper og kalder-leverede eksterne sheets deler disse feature-semantikker og eksisterende kaskaderegler
Gemte dokumenter og grænser
Native kaldere kan konfigurere en custom host-profil gennem THPDFHeadlessRichTextDecodeOptions og sende den direkte til HPDFDecodeHeadlessRichText
Beregnede runs beholder de valgte styles i gemt RV og indlejrede appearances; almindelige FDF/XFDF-importer bruger standard print-profilen
Media-tokens, nestede grupper, host-værdi-parsing og matching deler MaxNodes-, MaxTotalCodeUnits-, MaxDepth- og cancellation-bogholderi med den eksisterende stylesheet-parser
Mislykket dekodning publicerer ikke delvise runs, og mislykkede importer beholder den omgivende transaktions tidligere dokumenttilstand
Importlag og supports-betingelser, calc- og viewport-units, yderligere media-features og generelt CSS-layout forbliver separat arbejde
Interne style sheets · Native options
Eksterne link- og importbetingelser bruger samme media-evaluator