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
| Vlastnost | Přijímané hodnoty | Nepravdivá Booleovská hodnota |
|---|---|---|
| prefers-color-scheme | light, dark | Žádná z hodnot |
| 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 }
}
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í
Externí podmínky link a import použijí tentýž media vyhodnocovač