Requêtes média du texte enrichi natif

Le décodeur XHTML natif évalue l'attribut media d'un élément de style et les groupes @media imbriqués avant de mettre en cascade les déclarations prises en charge dans de véritables runs de texte enrichi

L'évaluation média utilise un profil hôte natif explicite et n'inspecte aucun périphérique de bureau, navigateur ou affichage

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 et mise en cascade

Les requêtes prennent en charge les types de média all, print et screen, les modificateurs only et not, les alternatives séparées par virgules et les conditions not, and et or entre parenthèses

Les caractéristiques numériques acceptent l'égalité à deux-points, les formes min-/max- et les comparaisons de plages directes, inversées ou chaînées avec =, <, <=, > et >=

Les groupes imbriqués conservent l'ordre source, l'importance des déclarations, la spécificité des sélecteurs et les déclarations d'espaces de noms héritées ; un attribut media de style et tous les groupes média englobants doivent correspondre

Les échappements d'identifiants CSS, les commentaires, la notation exponentielle et les tokens de fonctions équilibrés sont balayés dans le même parseur borné

Les caractéristiques inconnues, les valeurs non prises en charge et les conditions general-enclosed conservent une valeur de vérité inconnue à travers la négation et l'évaluation booléenne ; seule une requête finalement vraie active ses déclarations

Fournir une entrée hôte pour une caractéristique future ne fait pas de cette caractéristique une partie du vocabulaire de requêtes pris en charge

Profil hôte

Les caractéristiques numériques prises en charge sont width, height, device-width, device-height, resolution, aspect-ratio, device-aspect-ratio, color, color-index, monochrome et grid

Les caractéristiques discrètes sont orientation, scan, update, overflow-block, overflow-inline, color-gamut, pointer, any-pointer, hover et any-hover

Les unités de longueur sont pt, px, in, pc, cm, mm, q, em et rem ; les unités de résolution sont dpi, dpcm, dppx et x, et les ratios utilisent la notation à barre oblique

Les em et rem média utilisent MediaInitialFontSize plutôt qu'une taille de police d'élément en cascade ; son défaut est 12 points, et zéro conserve la même valeur initiale de 12 points pour les records legacy initialisés à zéro

Une orientation ou un aspect-ratio omis peut être dérivé de la largeur et hauteur fournies ; une hauteur nulle laisse le ratio inconnu, tandis que largeur et hauteur égales utilisent l'orientation portrait

any-pointer peut contenir coarse et fine à la fois ; none ne peut pas se combiner avec une autre valeur de pointeur, et color-gamut inclut les rangs de gamut inférieurs pris en charge

Le médium par défaut est print, avec 8 bits de couleur, pas de couleur indexée ni monochrome, grid 0 et gamut sRGB ; ses capacités update, overflow-inline, pointer, hover et scan sont absentes, et overflow-block est paginé

Dimensions et résolution n'ont aucun défaut de périphérique inventé ; les capacités screen autres que les défauts de couleur partagés exigent une valeur hôte explicite quand elles sont pertinentes

MediaFeatures admet au plus 32 noms distincts insensibles à la casse ASCII, chacun avec 1 à 64 lettres, chiffres ou tirets ASCII et une valeur de 1 à 256 unités de code UTF-16 ; les entrées reconnues doivent utiliser une valeur numérique non négative valide ou une valeur discrète prise en charge

MediaInitialFontSize doit être fini et soit zéro soit entre 0,000001 et 1000000 points ; des profils hôtes invalides lèvent EHPDFHeadlessRichTextCodecError avant de retourner des runs

Préférences explicites et accessibilité

Fournissez les préférences comme entrées MediaFeatures ; elles décrivent l'environnement de rendu de l'appelant et n'inspectent aucun système d'exploitation, navigateur ni bureau actif

CaractéristiqueValeurs acceptéesValeur booléenne fausse
prefers-color-schemelight, darkAucune des deux
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 }
}

Les huit caractéristiques sont discrètes : utilisez l'égalité ou une condition booléenne, et pas de comparaisons min-/max- ou de plages ordonnées

Light est une valeur color-scheme active dans une requête booléenne, et less ou custom est une préférence de contraste active ; custom n'implique pas more

Une préférence omise reste inconnue pour print comme pour screen, y compris sous not ; le décodeur n'invente ni no-preference, ni light, ni none, ni une autre valeur de repli

Des valeurs invalides pour des caractéristiques hôte reconnues rejettent le profil avant le retour des runs ; les échappements d'identifiants CSS et les commentaires utilisent le tokenizer borné existant, commentaires consommés jusqu'à la fin de l'entrée compris

La caractéristique scripting décrit uniquement la disponibilité fournie par l'appelant ; évaluer la requête n'exécute pas de JavaScript

Les attributs media de style, les groupes imbriqués et les feuilles externes fournies par l'appelant partagent ces sémantiques de caractéristiques et les règles de cascade existantes

Documents enregistrés et bornes

Les appelants natifs peuvent configurer un profil hôte personnalisé via THPDFHeadlessRichTextDecodeOptions et le passer directement à HPDFDecodeHeadlessRichText

Les runs calculés conservent les styles choisis dans le RV enregistré et les apparences embarquées ; les imports FDF/XFDF ordinaires utilisent le profil print par défaut

Les tokens média, les groupes imbriqués, l'analyse des valeurs hôtes et l'appariement partagent MaxNodes, MaxTotalCodeUnits, MaxDepth et la comptabilisation d'annulation avec le parseur de feuilles de style existant

Un décodage en échec ne publie pas de runs partiels, et des imports en échec conservent l'état de document antérieur de la transaction englobante

Les couches d'import et les conditions supports, calc et les unités de viewport, d'autres caractéristiques média et le layout CSS général restent des travaux distincts

Feuilles de style internes · Options natives

Les conditions de liens et d'imports externes utilisent le même évaluateur média