Native rich-text media queries

Nativní XHTML dekodér vyhodnotí atribut media elementu style i vnořené skupiny @media, dřív než kaskáduje podporované deklarace do skutečných rich-text runů

Vyhodnocení media použije explicitní nativní host profil a neprohlíží desktop, prohlížeč ani zobrazovací zařízení

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>

Podmínky a kaskáda

Query podporují media typy all, print a screen, modifikátory only a not, čárkou oddělené alternativy i závorkové podmínky not, and a or

Číselné vlastnosti přijímají rovnost dvojtečkou, formy min-/max- i dopředná, obrácená či zřetězená porovnávání rozsahů pomocí =, <, <=, > a >=

Vnořené skupiny si uchovávají pořadí zdroje, importance deklarací, specificitu selektorů i zděděné deklarace namespace; atribut media stylu i všechny obklopující media skupiny se musí trefit

CSS identifikátorové escapování, komentáře, exponentová notace i vyvážené funkční tokeny skenuje tentýž ohraničený parser

Neznámé vlastnosti, nepodporované hodnoty i podmínky general-enclosed si uchovají neznámou pravdivostní hodnotu skrz negaci i Booleovské vyhodnocení; deklarace zapne jen finálně pravdivá query

Dodání host položky pro budoucí vlastnost z ní neudělá součást podporované query slovní zásoby

Host profil

Podporované číselné vlastnosti jsou width, height, device-width, device-height, resolution, aspect-ratio, device-aspect-ratio, color, color-index, monochrome a grid

Diskrétní vlastnosti jsou orientation, scan, update, overflow-block, overflow-inline, color-gamut, pointer, any-pointer, hover a any-hover

Délkové jednotky jsou pt, px, in, pc, cm, mm, q, em a rem; jednotky rozlišení jsou dpi, dpcm, dppx a x a poměry používají lomítkový zápis

Media em a rem použijí MediaInitialFontSize, nikoli kaskádovanou velikost písma elementu; její default je 12 bodů a nula si u nulou inicializovaných legacy záznamů uchová tutéž 12bodovou počáteční hodnotu

Vynechaná orientation či aspect-ratio se může odvodit z dodaných width a height; nulová výška nechá poměr neznámý a shodné width a height použijí orientaci portrait

any-pointer může obsahovat jak coarse, tak fine; none se s jinou pointer hodnotou kombinovat nedá a color-gamut zahrnuje nižší podporované gamut pořadí

Defaultním médiem je print, s 8 bity barvy, žádnou indexovanou ani monochromatickou barvou, grid 0 a gamutem sRGB; jeho schopnosti update, overflow-inline, pointer, hover a scan chybí a overflow-block je stránkovaný

Rozměry ani rozlišení nemají vynalezená zařízení default; ostatní screen schopnosti než sdílené barevné defaulty vyžadují, když jsou relevantní, explicitní host hodnotu

MediaFeatures dovolí nejvýše 32 odlišných názvů necitlivých na ASCII velikost, každý s 1 až 64 ASCII písmeny, číslicemi či pomlčkami a hodnotou 1 až 256 UTF-16 code unit; rozpoznané položky musí používat platnou nezápornou číselnou či podporovanou diskrétní hodnotu

MediaInitialFontSize musí být konečné a buď nula, nebo mezi 0.000001 a 1000000 body; neplatné host profily vyhodí EHPDFHeadlessRichTextCodecError, dřív než se vrátí runy

Explicitní preference a přístupnost

Preference dodávejte jako položky MediaFeatures; popisují renderovací prostředí volajícího a neprohlíží operační systém, prohlížeč ani aktivní desktop

VlastnostPřijímané hodnotyNepravdivá Booleovská hodnota
prefers-color-schemelight, darkŽádná z hodnot
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 }
}

Všech osm vlastností je diskrétních: používejte rovnost či Booleovskou podmínku a nepoužívejte min-/max- ani uspořádaná porovnávání rozsahů

Light je aktivní hodnota color-scheme v Booleovské query a less či custom je aktivní preference kontrastu; custom neznamená more

Vynechaná preference zůstává neznámá pro print i screen, tedy i pod not; dekodér nevynalézá no-preference, light, none ani jinou fallback hodnotu

Neplatné hodnoty rozpoznaných host vlastností odmítnou profil, dřív než se vrátí runy; CSS identifikátorové escapování i komentáře použijí stávající ohraničený tokenizer, tedy i komentáře konzumované až do konce vstupu

Vlastnost scripting popisuje jen dostupnost dodanou volajícím; vyhodnocení query JavaScript nespustí

Atributy media stylů, vnořené skupiny i externí styly dodané volajícím sdílejí tu sémantiku vlastností i stávající kaskádová pravidla

Ukládané dokumenty a meze

Nativní volající mohou nakonfigurovat vlastní host profil přes THPDFHeadlessRichTextDecodeOptions a předat ho přímo HPDFDecodeHeadlessRichText

Spočtené runy si uchovají vybrané styly v uloženém RV i vložených appearance; běžné importy FDF/XFDF použijí default print profil

Media tokeny, vnořené skupiny, parsování host hodnot i párování sdílejí MaxNodes, MaxTotalCodeUnits, MaxDepth i účtování zrušení se stávajícím parserem stylů

Neúspěšné dekódování nepublikuje částečné runy a neúspěšné importy si uchovají předchozí dokumentový stav obklopující transakce

Vrstvy import a podmínky supports, calc a viewport jednotky, další media vlastnosti i obecný CSS layout zůstávají samostatnou prací

Interní styly · Nativní volby

Externí podmínky link a import použijí tentýž media vyhodnocovač