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
| Feature | Valori accettati | Valore booleano falso |
|---|---|---|
| prefers-color-scheme | light, dark | Nessuno dei due |
| 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 }
}
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