Media query del rich text nativo

Il decoder XHTML nativo valuta l'attributo media di un elemento style e i gruppi @media annidati prima di mettere in cascata le dichiarazioni supportate nei run di rich text effettivi

La valutazione media usa un profilo di host nativo esplicito e non ispeziona un desktop, un browser né un dispositivo di visualizzazione

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>

Condizioni e cascata

Le query supportano i tipi media all, print e screen, i modificatori only e not, alternative separate da virgole, e condizioni not, and e or tra parentesi

Le feature numeriche accettano uguaglianza con due punti, forme min-/max- e confronti di intervallo diretti, invertiti o a catena usando =, <, <=, > e >=

I gruppi annidati conservano l'ordine sorgente, l'importance delle dichiarazioni, la specificità del selettore e le dichiarazioni di namespace ereditate; l'attributo media di uno style e tutti i gruppi media circostanti devono corrispondere

Escape degli identificatori CSS, commenti, notazione esponenziale e token di funzione bilanciati vengono scansionati nello stesso parser limitato

Feature sconosciute, valori non supportati e condizioni general-enclosed conservano un valore di verità sconosciuto attraverso la negazione e la valutazione booleana; solo una query finale true abilita le sue dichiarazioni

Fornire una voce di host per una feature futura non rende quella feature parte del vocabolario di query supportato

Profilo host

Le feature numeriche supportate sono width, height, device-width, device-height, resolution, aspect-ratio, device-aspect-ratio, color, color-index, monochrome e grid

Le feature discrete sono orientation, scan, update, overflow-block, overflow-inline, color-gamut, pointer, any-pointer, hover e any-hover

Le unità di lunghezza sono pt, px, in, pc, cm, mm, q, em, rem, vw, vh, vmin e vmax; le unità di risoluzione sono dpi, dpcm, dppx e x, e i rapporti usano la notazione con barra

Media em e rem usano MediaInitialFontSize invece di una dimensione del font di elemento in cascata; il suo default è 12 punti, e lo zero conserva lo stesso valore iniziale di 12 punti per i record legacy azzerati

Un'orientation o aspect-ratio omessa può essere derivata da width e height forniti; altezza zero lascia il rapporto sconosciuto, mentre larghezza e altezza uguali usano orientamento portrait

any-pointer può contenere sia coarse sia fine; none non può essere combinato con un altro valore di pointer, e color-gamut include i ranghi di gamut supportati inferiori

Il mezzo predefinito è print, con 8 bit di colore, nessun colore indicizzato o monocromatico, grid 0 e gamut sRGB; le sue capacità update, overflow-inline, pointer, hover e scan sono assenti, e overflow-block è paged

Dimensioni e risoluzione non hanno default di dispositivo inventati; le capacità screen diverse dai default di colore condivisi richiedono un valore host esplicito quando sono rilevanti

MediaFeatures ammette al massimo 32 nomi distinti insensibili ad ASCII, ciascuno con 1–64 lettere, cifre o trattini ASCII e un valore di 1–256 unità di codice UTF-16; le voci riconosciute devono usare un valore numerico non negativo valido o un valore discreto supportato

MediaInitialFontSize deve essere finito e zero oppure tra 0.000001 e 1000000 punti; i profili host non validi sollevano EHPDFHeadlessRichTextCodecError prima di restituire run

Preferenze esplicite e accessibilità

Fornire le preferenze come voci MediaFeatures; descrivono l'ambiente di rendering del caller e non ispezionano un sistema operativo, un browser né un desktop attivo

FeatureValori accettatiValore booleano falso
prefers-color-schemelight, darkNessuno dei due
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 }
}

Tutte e otto le feature sono discrete: usare uguaglianza o una condizione booleana, e non usare min-/max- o confronti di intervallo ordinato

Light è un valore di color-scheme attivo in una query booleana, e less o custom è una preferenza di contrasto attiva; custom non implica more

Una preferenza omessa resta sconosciuta sia per print sia per screen, inclusa sotto not; il decoder non inventa no-preference, light, none o altro valore di fallback

Valori non validi per feature host riconosciute rifiutano il profilo prima che i run vengano restituiti; escape degli identificatori CSS e commenti usano il tokenizer limitato esistente, inclusi i commenti consumati fino alla fine dell'input

La feature scripting descrive solo la disponibilità fornita dal caller; valutare la query non esegue JavaScript

Gli attributi media di style, i gruppi annidati e i fogli esterni forniti dal caller condividono queste semantiche di feature e le regole di cascata esistenti

Documenti salvati e limiti

I caller nativi possono configurare un profilo host personalizzato tramite THPDFHeadlessRichTextDecodeOptions e passarlo direttamente a HPDFDecodeHeadlessRichText

I run calcolati conservano gli stili scelti nell'RV salvato e nelle appearance incorporate; gli import FDF/XFDF ordinari usano il profilo print predefinito

Token media, gruppi annidati, parsing dei valori host e matching condividono MaxNodes, MaxTotalCodeUnits, MaxDepth e la contabilità di cancellazione con il parser di stylesheet esistente

Una decodifica fallita non pubblica run parziali, e gli import falliti conservano lo stato di documento precedente della transazione circostante

Livelli di import e condizioni supports, calc e unità viewport, ulteriori feature media e layout CSS generale restano lavoro separato

Fogli di stile interni · Opzioni native

Le condizioni di link e import esterni usano lo stesso valutatore media