Native rich-text media queries
Natywny dekoder XHTML ewaluuje atrybut media elementu style i zagnieżdżone grupy @media przed skaskadowaniem obsługiwanych deklaracji do rzeczywistych runów rich text
Ewaluacja mediów używa jawnego natywnego profilu hosta i nie przegląda pulpitu, przeglądarki ani urządzenia wyświetlającego
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>
Conditions and cascading
Zapytania wspierają typy mediów all, print i screen, modyfikatory only i not, alternatywy oddzielone przecinkami oraz nawiasowane warunki not, and i or
Cechy numeryczne akceptują równość dwukropek, formy min-/max- i porównania zakresów w przód, odwrócone albo łańcuchowe przy użyciu =, <, <=, > i >=
Zagnieżdżone grupy zachowują kolejność źródłową, ważność deklaracji, specyficzność selektorów i dziedziczone deklaracje przestrzeni nazw; atrybut media stylu i wszystkie otaczające grupy mediów muszą pasować
Escape'y identyfikatorów CSS, komentarze, notacja wykładnicza i zbalansowane tokeny funkcyjne są skanowane w tym samym ograniczonym parserze
Nieznane cechy, nieobsługiwane wartości i warunki general-enclosed zachowują nieznaną wartość prawdy przez negację i ewaluację Boolean; wyłącznie finalne zapytanie true włącza swoje deklaracje
Dostarczenie wpisu hosta dla przyszłej cechy nie czyni tej cechy częścią obsługiwanego słownictwa zapytań
Host profile
Obsługiwane cechy numeryczne to width, height, device-width, device-height, resolution, aspect-ratio, device-aspect-ratio, color, color-index, monochrome i grid
Cechy dyskretne to orientation, scan, update, overflow-block, overflow-inline, color-gamut, pointer, any-pointer, hover i any-hover
Jednostki długości to pt, px, in, pc, cm, mm, q, em i rem; jednostki rozdzielczości to dpi, dpcm, dppx i x, a stosunki używają notacji ukośnej
Media em i rem używają MediaInitialFontSize zamiast skaskadowanego rozmiaru fontu elementu; jego default to 12 punktów, a zero zachowuje tę samą początkową wartość 12 punktów dla wyzerowanych rekordów legacy
Pominięta orientation albo aspect-ratio może zostać wywiedziona z dostarczonych width i height; zerowa wysokość pozostawia stosunek nieznany, a równe width i height używają orientacji portrait
any-pointer może zawierać i coarse, i fine; none nie może być łączone z inną wartością pointer, a color-gamut zawiera niższe obsługiwane rangi gamutów
Domyślne medium to print, z 8 bitami koloru, bez koloru indexed i monochrome, grid 0 i gamutem sRGB; jego zdolności update, overflow-inline, pointer, hover i scan są nieobecne, a overflow-block to paged
Wymiary i rozdzielczość nie mają wymyślonych defaultów urządzenia; zdolności screen inne niż współdzielone defaulty kolorów wymagają jawnego wpisu hosta, gdy są istotne
MediaFeatures dopuszcza co najwyżej 32 odrębne nazwy niewrażliwe na wielkość liter ASCII, każdy z 1 do 64 liter, cyfr albo łączników ASCII i wartością od 1 do 256 jednostek kodowych UTF-16; rozpoznane wpisy muszą używać poprawnej nieujemnej wartości numerycznej albo obsługiwanej wartości dyskretnej
MediaInitialFontSize musi być skończone i albo zerowe, albo między 0.000001 a 1000000 punktów; niepoprawne profile hosta podnoszą EHPDFHeadlessRichTextCodecError przed zwróceniem runów
Jawne preferencje i dostępność
Podaj preferencje jako wpisy MediaFeatures; opisują one środowisko renderowania wywołującego i nie badają systemu operacyjnego, przeglądarki ani aktywnego pulpitu
| Cecha | Akceptowane wartości | Fałszywa wartość Boolean |
|---|---|---|
| prefers-color-scheme | light, dark | Żadna z wartości |
| 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 }
}
Wszystkie osiem cech jest dyskretnych: użyj równości albo warunku Boolean i nie używaj porównań min-/max- ani uporządkowanych zakresów
Light jest aktywną wartością color-scheme w zapytaniu Boolean, a less albo custom to aktywna preferencja kontrastu; custom nie implikuje more
Pominięta preferencja pozostaje nieznana zarówno dla print, jak i screen, także pod not; dekoder nie wymyśla no-preference, light, none ani innej wartości zastępczej
Niepoprawne wartości dla rozpoznanych cech hosta odrzucają profil przed zwróceniem runów; escape'y identyfikatorów CSS i komentarze używają istniejącego ograniczonego tokenizera, włącznie z komentarzami konsumowanymi do końca wejścia
Cecha scripting opisuje wyłącznie dostępność dostarczaną przez wywołującego; ewaluacja zapytania nie wykonuje JavaScriptu
Atrybuty media stylów, zagnieżdżone grupy i zewnętrzne arkusze dostarczone przez wywołującego współdzielą te semantyki cech i istniejące reguły kaskady
Saved documents and bounds
Natywni wywołujący mogą skonfigurować własny profil hosta przez THPDFHeadlessRichTextDecodeOptions i przekazać go bezpośrednio do HPDFDecodeHeadlessRichText
Obliczone runy zachowują wybrane style w zapisanym RV i osadzonych wyglądach; zwykłe importy FDF/XFDF używają domyślnego profilu print
Tokeny mediów, zagnieżdżone grupy, parsowanie i dopasowywanie wartości hosta dzielą MaxNodes, MaxTotalCodeUnits, MaxDepth i rozliczanie anulowania z istniejącym parserem arkuszy stylów
Nieudane dekodowanie nie publikuje częściowych runów, a nieudane importy zachowują poprzedni stan dokumentu otaczającej transakcji
Zewnętrzne arkusze stylów, calc i jednostki viewport, dalsze cechy mediów i ogólny layout CSS pozostają odrębną pracą
Wewnętrzne arkusze stylów · Natywne opcje
Zewnętrzne warunki linków i importów używają tego samego ewaluatora mediów