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

CechaAkceptowane wartościFałszywa wartość Boolean
prefers-color-schemelight, darkŻadna z wartości
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 }
}

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