Aller au contenu
getnextpdf.com

Matrice de prise en charge CSS

NextPDF implémente le rendu CSS conformément aux spécifications publiées par le W3C. Cette page recense chaque module CSS du corpus de spécifications de NextPDF et consigne l’état réel de prise en charge de chaque module dans le pipeline de rendu, tel qu’il ressort de l’audit de vérité.

Cette révision résulte de l’audit de vérité Wave 4 B2 (section 4.4 du plan). Les badges de la révision structurelle précédente étaient des marqueurs non vérifiés. Chaque ligne a été reclassée ici à partir de preuves réelles présentes sur disque (src/Html/, tests/, tests/Wpt/corpus/), des ADR de changements cassants v8/v9 et de l’audit interne de couverture des propriétés CSS. L’honnêteté a primé sur la couverture : lorsqu’un badge devait être abaissé, il l’a été.

Quatre badges classent chaque ligne, selon le contrat de vérification :

  • Vérifié — implémentation src/Html/ plus une fixture automatisée dédiée et substantielle : une suite au niveau des propriétés comptant trois fichiers ou plus sous tests/Unit/Html/<Module>/, ou un fragment de corpus Web Platform Tests d’au moins cinquante fixtures sous tests/Wpt/corpus/. Aucune référence PDF de référence (« golden ») n’est encore raccordée par module CSS ; les lignes vérifiées utilisent donc le profil de reproductibilité structural (équivalence d’assertions PHPUnit), jamais bitwise.
  • Revendiqué — le comportement du module est implémenté dans src/Html/ (chemin source cité), mais la fixture dédiée est peu fournie, partagée ou absente. Chaque ligne revendiquée qui dispose d’une implémentation concrète a un ticket de comblement.
  • Non pris en charge — hors périmètre du pipeline de rendu PDF statique. API uniquement disponibles à l’exécution ou dans le navigateur, runtimes de défilement/d’animation et travaux abandonnés par le W3C. La raison est consignée.
  • Inconnu — le module figure dans le corpus, mais aucune preuve d’implémentation ou de fixture n’a pu être identifiée. L’audit n’a jamais surévalué une ligne pour gonfler le décompte.

Le badge partial de la révision structurelle a été retiré : chaque ancienne ligne partielle a été reclassée en claimed (implémentation présente, pas de fixture dédiée) ou verified.

BadgeSignification
verifiedsrc/Html/ + suite de fixtures dédiée (≥3 fichiers) ou fragment WPT (≥50 fixtures) ; passe de façon déterministe sous le profil structural.
claimedPreuves d’implémentation dans src/Html/, pas de fixture dédiée. Ticket de comblement suivi.
not-supportedExplicitement exclu du périmètre PDF statique. Raison consignée.
unknownAucune preuve déterminable. Pas de surévaluation.

La colonne Confiance est un indicateur honnête et non binaire de la solidité des preuves qui justifient le badge affiché (high / medium / low), indépendamment du badge lui-même.

NextPDF prend en charge les modules CSS listés ci-dessous aux niveaux indiqués. Les lignes Vérifié disposent d’une suite de fixtures automatisée dédiée ou d’un fragment de corpus WPT substantiel qui atteste le comportement de NextPDF, et passent de façon déterministe sous le profil de reproductibilité structural. Les lignes Revendiqué ont des preuves d’implémentation dans src/Html/, mais pas encore de fixture dédiée ; chacune est suivie dans le ticket de suivi #614. Les lignes Non pris en charge documentent des limites de périmètre explicites pour la cible PDF statique.

Il n’existe aucune référence PDF de référence (« golden ») par module CSS dans cette révision ; aucune ligne ne revendique une reproductibilité à l’octet près. Les lignes laissées vides sont interdites par le contrat de vérification — lorsque la prise en charge ne peut pas être déterminée, la ligne est unknown.

StatutModulesConfiance (élevée / moyenne / faible)
Vérifié128 / 4 / 0
Revendiqué490 / 35 / 14
Non pris en charge6762 / 5 / 0
Inconnu390 / 0 / 39
Total16770 / 44 / 53

Le bloc summary de la révision structurelle était contradictoire en interne : il déclarait 148 au total (18 verified / 11 partial / 11 claimed / 53 not-supported / 55 unknown), alors que le fichier contenait en réalité 167 lignes de modules dont les propres étiquettes totalisaient 34 verified / 13 partial / 13 claimed / 68 not-supported / 39 unknown. Cet audit a corrigé le total réel à 167 et a reclassé chaque ligne à partir des preuves présentes sur disque : le nombre de lignes vérifiées est passé de 34 lignes affichées comme telles à 12 lignes étayées. Cette réduction est le résultat correct d’un audit honnête, pas une régression. Le delta complet before/after figure dans le fichier annexe interne au dépôt _css-matrix-truth-report.md.

La révision structurelle a étiqueté à tort trois capacités actives comme supprimées ou non prises en charge. Pour l’enum ExperimentalFeature, ADR-027 et ADR-028 n’ont retiré que les marqueurs opt-in ; les capacités elles-mêmes restent LIVE, actives par défaut :

  • Subgrid (css_grid_2) — LIVE ; CssFeatureFlags::$layoutSubgrid actif par défaut. Était étiqueté à tort « subgrid hard-removed v9.0.0 ».
  • Requêtes @container (css_contain_2) — répartition à l’exécution explicitement inchangée par ADR-028 ; opt-out du drapeau préservé. Était étiqueté à tort « hard-removed v9.0.0 ».
  • writing-mode: vertical-lr (css_writing_modes_3) — actif par défaut et stable depuis v7.0.0 ; ADR-027 n’a fait qu’achever la poignée de main de dépréciation. Était étiqueté à tort « deprecated/removed v8.0.0 ».

Le jeu de lignes par module, lisible par machine, se trouve dans le fichier interne au dépôt css-support-matrix-data.yaml et fait foi. Cette page en est la version lisible par un humain, regroupée par catégorie. Les composants Astro consomment directement le YAML lors de la génération de la documentation.

Module W3CNiveauW3CStatutConfiance
CSS Flexible Box Layout (css_flexbox_1)1CRVérifiéélevée
CSS Grid Layout (css_grid_1)1RECVérifiéélevée
CSS Grid Layout — Subgrid (css_grid_2)2CRRevendiquémoyenne
CSS Grid Layout — Masonry (css_grid_3)3EDNon pris en chargeélevée
CSS Display (css_display_3)3CRRevendiquémoyenne
CSS Display (css_display_4)4EDInconnufaible
CSS Positioned Layout (css_position_3)3WDVérifiéélevée
CSS Positioned Layout (css_position_4)4EDInconnufaible
CSS Box Alignment (css_align_3)3WDRevendiquémoyenne
CSS Box Sizing (css_sizing_3)3CRRevendiquéfaible
CSS Box Sizing (css_sizing_4)4EDInconnufaible
CSS Box Model (css_box_3)3WDRevendiquémoyenne
CSS Box Model (css_box_4)4EDInconnufaible
CSS Multi-column Layout (css_multicol_1)1CRRevendiquémoyenne
CSS Multi-column Layout (css_multicol_2)2EDInconnufaible
CSS Fragmentation (css_break_3)3CRVérifiémoyenne
CSS Fragmentation (css_break_4)4EDInconnufaible
CSS Containment (css_contain_1)1RECNon pris en chargemoyenne
CSS Containment — @container (css_contain_2)2CRRevendiquéfaible
CSS Containment (css_contain_3)3EDNon pris en chargemoyenne
CSS Inline Layout (css_inline_3)3WDRevendiquémoyenne
CSS Logical Properties (css_logical_1)1WDRevendiquémoyenne
CSS Page Floats (css_page_floats_3)3EDNon pris en chargeélevée
CSS Pagination Templates (css_page_templates_3)3EDNon pris en chargeélevée
CSS Exclusions (css_exclusions_1)1WDNon pris en chargeélevée
CSS Regions (css_regions_1)1WDNon pris en chargeélevée
CSS Template Layout (css_template_1)1NOTENon pris en chargeélevée
CSS Layout API (css_layout_api_1)1WDNon pris en chargeélevée

Modèle de boîte — arrière-plans, bordures, effets

Section intitulée « Modèle de boîte — arrière-plans, bordures, effets »
Module W3CNiveauW3CStatutConfiance
CSS Backgrounds and Borders (css_backgrounds_3)3CRRevendiquémoyenne
CSS Backgrounds (css_backgrounds_4)4EDInconnufaible
CSS Borders and Box Decorations (css_borders_4)4EDInconnufaible
CSS Gap Decorations (css_gaps_1)1EDInconnufaible
CSS Masking (css_masking_1)1CRNon pris en chargemoyenne
CSS Shadow Module (css_shadow_1)1EDRevendiquémoyenne
CSS Shapes (css_shapes_1)1CRNon pris en chargeélevée
CSS Shapes (css_shapes_2)2EDNon pris en chargeélevée
Filter Effects (filter_effects_1)1WDNon pris en chargeélevée
Filter Effects (filter_effects_2)2EDNon pris en chargeélevée
Compositing and Blending (compositing_1)1CRRevendiquémoyenne
Compositing (compositing_2)2EDInconnufaible
CSS Fill and Stroke (fill_stroke_3)3EDInconnufaible
Geometry Interfaces (geometry_1)1CRNon pris en chargeélevée
DOMMatrix (matrix)1NOTENon pris en chargeélevée
Motion Path (motion_1)1WDNon pris en chargeélevée
Module W3CNiveauW3CStatutConfiance
CSS Fonts (css_fonts_3)3RECVérifiémoyenne
CSS Fonts (css_fonts_4)4CRVérifiéélevée
CSS Fonts (css_fonts_5)5EDInconnufaible
CSS Font Loading (css_font_loading_3)3WDNon pris en chargeélevée
CSS Text (css_text_3)3CRRevendiquémoyenne
CSS Text (css_text_4)4EDRevendiquémoyenne
CSS Text Decoration (css_text_decor_3)3CRRevendiquémoyenne
CSS Text Decoration (css_text_decor_4)4EDInconnufaible
CSS Ruby (css_ruby_1)1WDNon pris en chargeélevée
CSS Writing Modes (css_writing_modes_3)3RECRevendiquémoyenne
CSS Writing Modes (css_writing_modes_4)4EDInconnufaible
CSS Speech (css_speech_1)1CRNon pris en chargeélevée
CSS Mobile Text Size Adjustment (css_size_adjust_1)1EDNon pris en chargeélevée
Module W3CNiveauW3CStatutConfiance
CSS Color (css_color_3)3RECRevendiquémoyenne
CSS Color (css_color_4)4CRRevendiquémoyenne
CSS Color (css_color_5)5WDInconnufaible
CSS Color (css_color_6)6EDInconnufaible
CSS Color Adjustment (css_color_adjust_1)1CRNon pris en chargeélevée
CSS Color HDR (css_color_hdr_1)1EDNon pris en chargeélevée
CSS Images (css_images_3)3CRRevendiquémoyenne
CSS Images (css_images_4)4EDInconnufaible
CSS Images (css_images_5)5EDInconnufaible
CSS Image Animation (css_image_animation_1)1EDNon pris en chargeélevée
Module W3CNiveauW3CStatutConfiance
CSS Selectors (selectors_3)3RECRevendiquémoyenne
CSS Selectors (selectors_4)4WDRevendiquémoyenne
CSS Selectors (selectors_5)5EDInconnufaible
CSS Non-element Selectors (selectors_nonelement_1)1WDNon pris en chargeélevée
CSS Pseudo-Elements (css_pseudo_4)4WDRevendiquémoyenne
CSS Cascading and Inheritance (css_cascade_3)3RECVérifiéélevée
CSS Cascading (css_cascade_4)4CRVérifiéélevée
CSS Cascading (css_cascade_5)5CRVérifiéélevée
CSS Cascading (css_cascade_6)6WDInconnufaible
CSS Values and Units (css_values_3)3RECRevendiquémoyenne
CSS Values and Units (css_values_4)4CRRevendiquémoyenne
CSS Values and Units (css_values_5)5EDInconnufaible
CSS Custom Properties (css_variables_1)1CRRevendiquémoyenne
CSS Custom Properties (css_variables_2)2EDInconnufaible
CSS Conditional Rules (css_conditional_3)3CRRevendiquémoyenne
CSS Conditional Rules (css_conditional_4)4EDInconnufaible
CSS Conditional Rules (css_conditional_5)5EDInconnufaible
CSS Conditional Values (css_conditional_values_1)1EDInconnufaible
CSS Namespaces (css_namespaces_3)3RECRevendiquéfaible
CSS Style Attributes (css_style_attr_1)1CRRevendiquémoyenne
CSS Syntax (css_syntax_3)3CRRevendiquémoyenne
CSS Nesting (css_nesting_1)1CRRevendiquémoyenne
CSS Environment Variables (css_env_1)1EDNon pris en chargemoyenne
CSS Custom Functions and Mixins (css_mixins_1)1EDInconnufaible
CSS Extensions (css_extensions_1)1NOTEInconnufaible
Module W3CNiveauW3CStatutConfiance
CSS Lists and Counters (css_lists_3)3WDRevendiquémoyenne
CSS Counter Styles (css_counter_styles_3)3CRRevendiquémoyenne
CSS Generated Content (css_content_3)3WDRevendiquémoyenne
CSS Generated Content for Paged Media (css_gcpm_3)3WDRevendiquémoyenne
CSS Generated Content for Paged Media (css_gcpm_4)4EDInconnufaible
Module W3CNiveauW3CStatutConfiance
CSS Paged Media (css_page_3)3WDRevendiquémoyenne
CSS Paged Media (css_page_4)4NOTEInconnufaible
CSS Print Profile (css_print)1NOTERevendiquéfaible
CSS Presentation Levels (css_preslev_1)1NOTENon pris en chargeélevée
Module W3CNiveauW3CStatutConfiance
CSS Overflow (css_overflow_3)3WDRevendiquéfaible
CSS Overflow (css_overflow_4)4EDInconnufaible
CSS Overflow (css_overflow_5)5EDInconnufaible
CSS Overscroll Behavior (css_overscroll_1)1CRNon pris en chargeélevée
CSS Scroll Anchoring (css_scroll_anchoring_1)1WDNon pris en chargeélevée
CSS Scroll Snap (css_scroll_snap_1)1RECNon pris en chargeélevée
CSS Scroll Snap (css_scroll_snap_2)2WDNon pris en chargeélevée
CSS Scrollbars Styling (css_scrollbars_1)1CRNon pris en chargeélevée
CSS Basic User Interface (css_ui_3)3RECNon pris en chargemoyenne
CSS Basic User Interface (css_ui_4)4WDNon pris en chargeélevée
CSS Form Control Styling (css_forms_1)1EDNon pris en chargeélevée
CSS View Transitions (css_view_transitions_1)1WDNon pris en chargeélevée
CSS View Transitions (css_view_transitions_2)2EDNon pris en chargeélevée
CSS Spatial Navigation (css_nav_1)1NOTENon pris en chargeélevée
CSS Route Matching (css_navigation_1)1EDNon pris en chargeélevée
Module W3CNiveauW3CStatutConfiance
CSS Table (css_tables_3)3WDVérifiéélevée
Module W3CNiveauW3CStatutConfiance
CSS Transforms (css_transforms_1)1CRRevendiquémoyenne
CSS Transforms (css_transforms_2)2EDInconnufaible
CSS Animations (css_animations_1)1WDNon pris en chargeélevée
CSS Animations (css_animations_2)2EDNon pris en chargeélevée
CSS Transitions (css_transitions_1)1WDNon pris en chargeélevée
CSS Transitions (css_transitions_2)2EDNon pris en chargeélevée
CSS Easing Functions (css_easing_1)1CRNon pris en chargeélevée
CSS Easing Functions (css_easing_2)2EDNon pris en chargeélevée
Web Animations (web_animations_1)1WDNon pris en chargeélevée
Web Animations (web_animations_2)2EDNon pris en chargeélevée
Web Animations CSS Integration (web_animations_css_integration)1EDNon pris en chargeélevée
Animation Triggers (animation_triggers)1EDNon pris en chargeélevée
Pointer-driven Animations (pointer_animations_1)1EDNon pris en chargeélevée
Scroll-driven Animations (scroll_animations_1)1EDNon pris en chargeélevée
CSS Animation Worklet (css_animation_worklet)1EDNon pris en chargeélevée
Module W3CNiveauW3CStatutConfiance
CSS Anchor Positioning (css_anchor_position_1)1WDInconnufaible
CSS Anchor Positioning (css_anchor_position_2)2EDInconnufaible
CSS Highlight API (css_highlight_api_1)1WDNon pris en chargeélevée
CSS Properties and Values API (css_properties_values_api_1)1CRNon pris en chargeélevée
CSS Painting API (css_paint_api_1)1WDNon pris en chargeélevée
CSS Typed OM (css_typed_om_1)1WDNon pris en chargeélevée
CSSOM (cssom_1)1WDNon pris en chargeélevée
CSSOM View (cssom_view_1)1WDNon pris en chargeélevée
CSS Will Change (css_will_change_1)1CRNon pris en chargeélevée
CSS Linked Parameters (css_link_params_1)1EDInconnufaible
CSS Line Grid (css_line_grid_1)1NOTEInconnufaible
CSS Rhythmic Sizing (css_rhythm_1)1EDInconnufaible
CSS Round Display (css_round_display_1)1EDNon pris en chargeélevée
CSS Shaders (css_shaders_1)1NOTENon pris en chargeélevée
CSS Viewport (css_viewport_1)1NOTENon pris en chargeélevée
Module W3CNiveauW3CStatutConfiance
Media Queries (mediaqueries_3)3RECRevendiquémoyenne
Media Queries (mediaqueries_4)4CRRevendiquémoyenne
Media Queries (mediaqueries_5)5WDInconnufaible
Module W3CNiveauW3CStatutConfiance
CSS Level 2 (css_2_1)2.1RECRevendiquéfaible
CSS Level 2.2 (css_2_2)2.2NOTERevendiquéfaible
CSS Snapshot 2026 (css_snapshot_2026)snapshotNOTERevendiquéfaible

Ces modules W3C figurent dans le corpus, mais sortent du périmètre du pipeline de rendu CSS. Ils sont liés depuis les pages de fonctionnalité correspondantes, le cas échéant.

Module W3CW3CStatutConfianceEmplacement
W3C SVG 1.1 (svg_1_1)RECRevendiquéfaibleSous-ensemble de peinture SVG en ligne dans Renderer/PaintCommand/ ; pas de fixture de matrice CSS.
W3C SVG 2.0 (svg_2_0)CRInconnufaibleRelève du pipeline Premium ; aucune preuve côté Core.
W3C PNG 3rd Edition (png_3)WDRevendiquéfaibleDécodage PNG dans le module Graphics/ (hors HTML/CSS).
W3C WOFF 1.0 (woff_1_0)RECRevendiquéfaibleWOFF via la pile Font ; pas de fixture de matrice CSS.
W3C WOFF 2.0 (woff_2_0)RECRevendiquéfaibleWOFF2 via la pile Font ; pas de fixture de matrice CSS.
W3C WCAG 2.2 (wcag_2_2)RECVérifiémoyennesrc/Html/Aam/, tests/Unit/Accessibility/HtmlAam/ (4 fichiers) — PDF/UA-2.
W3C WAI-ARIA 1.2 (wai_aria_1_2)RECVérifiémoyennetests/Unit/Accessibility/HtmlAam/ (4 fichiers).
W3C ARIA Bundle (w3c_aria_bundle)RECRevendiquéfaibleLot d’orientations ; la preuve concrète est la ligne WAI-ARIA.
W3C AAM Bundle (w3c_aam_bundle)NOTERevendiquéfaiblePointeur de lot ; la preuve réside dans les lignes WAI-ARIA/WCAG.
W3C ATAG 2.0 (atag_2_0)RECNon pris en chargeélevéeAccessibilité des outils de création ; sans objet.
W3C XSL 1.1 (xsl_1_1)RECNon pris en chargeélevéeModèle de formatage parallèle XSL-FO ; non implémenté.
W3C XSD 1.1 Part 1 (xsd_1_1_part1)RECNon pris en chargeélevéeSchéma XML ; sans objet.
W3C XSLT 3.0 (xslt_3_0)RECNon pris en chargeélevéeLangage de transformation ; sans objet.
Resize Observer (resize_observer_1)CRNon pris en chargeélevéeAPI d’exécution du navigateur.

Pour qu’une ligne passe de claimed à verified :

  1. Une suite de fixtures dédiée de niveau propriété réside sous tests/Unit/Html/<Module>/ (≥3 fichiers) ou un fragment de corpus WPT substantiel (≥50 fixtures) sous tests/Wpt/corpus/ est promu en test assertif.
  2. La fixture vérifie le comportement de NextPDF par rapport à la grammaire W3C pour les propriétés principales du module.
  3. La fixture passe de façon déterministe sous un NextPDF\Testing\ReproducibilityProfile (structural pour les fixtures d’assertion ; bitwise seulement une fois que des références PDF de référence par module existent).
  4. Le nextpdf_status de la ligne dans le fichier interne au dépôt css-support-matrix-data.yaml bascule sur verified, avec mise à jour de fixture_path, repro_profile et confidence.

Pour qu’une ligne passe de unknown à claimed :

  1. Une passe d’audit confirme les preuves d’implémentation dans src/Html/ (cite le chemin dans evidence + notes).
  2. Un ticket de comblement est ouvert et lié dans backfill_issue.
  • HTML : sous-système de rendu HTML+CSS vers PDF — le moteur derrière ces capacités, y compris les notes de comportement des tableaux, de flex, des dégradés et de la pagination.
  • Fonctionnalités CSS non prises en charge et solutions de contournement — les limites précises par comportement.
  • Afficher du HTML arabe de droite à gauche — la prise en charge de droite à gauche et bidirectionnelle et ses limites actuelles.
  • Paginer un grand tableau HTML sur plusieurs pages — pagination de tableaux sur plusieurs pages.
  • Rapport de vérité de la matrice CSS (_css-matrix-truth-report.md, interne au dépôt) — deltas d’audit before/after, distribution de confiance, journal de dégonflement.
  • Audit de couverture des propriétés CSS (architecture/css-property-coverage-audit.md, interne au dépôt) — audit interne à quatre états par propriété (Policy/Parsed/Applied/Rendered).
  • ADR-027 v8.0.0 BREAKING (architecture/adr/ADR-027-v8-breaking.md, interne au dépôt) — aboutissement de la poignée de main de dépréciation vertical-lr (capacité préservée).
  • ADR-028 v9.0.0 BREAKING (architecture/adr/ADR-028-v9-breaking.md, interne au dépôt) — retrait du marqueur d’enum Grid/Subgrid/@container (capacités préservées).
  • Ticket de suivi du comblement : https://github.com/nextpdf-labs/nextpdf/issues/614