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

FeatureAccepterede værdierFalsk boolesk værdi
prefers-color-schemelight, darkIngen af værdierne
prefers-reduced-motionno-preference, reduceno-preference
prefers-reduced-transparencyno-preference, reduceno-preference
prefers-contrastno-preference, less, more, customno-preference
prefers-reduced-datano-preference, reduceno-preference
forced-colorsnone, activenone
inverted-colorsnone, invertednone
scriptingnone, initial-only, enablednone
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