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

FunktionAccepterade värdenFalskt booleskt värde
prefers-color-schemelight, darkInget av värdena
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 }
}

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