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.
| Badge | Signification |
|---|
verified | src/Html/ + suite de fixtures dédiée (≥3 fichiers) ou fragment WPT (≥50 fixtures) ; passe de façon déterministe sous le profil structural. |
claimed | Preuves d’implémentation dans src/Html/, pas de fixture dédiée. Ticket de comblement suivi. |
not-supported | Explicitement exclu du périmètre PDF statique. Raison consignée. |
unknown | Aucune 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.
| Statut | Modules | Confiance (élevée / moyenne / faible) |
|---|
| Vérifié | 12 | 8 / 4 / 0 |
| Revendiqué | 49 | 0 / 35 / 14 |
| Non pris en charge | 67 | 62 / 5 / 0 |
| Inconnu | 39 | 0 / 0 / 39 |
| Total | 167 | 70 / 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 W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Flexible Box Layout (css_flexbox_1) | 1 | CR | Vérifié | élevée | src/Html/Flex/, tests/Unit/Html/Flex/ (50 fichiers) |
CSS Grid Layout (css_grid_1) | 1 | REC | Vérifié | élevée | src/Html/Grid/, tests/Unit/Html/Grid/ (25), tests/Wpt/corpus/css-grid/ (654) |
CSS Grid Layout — Subgrid (css_grid_2) | 2 | CR | Revendiqué | moyenne | src/Html/Grid/Subgrid/ + fragment WPT de 80 fixtures + 1 test d’intégration. LIVE, actif par défaut (ADR-028 n’a retiré que le marqueur d’enum). |
CSS Grid Layout — Masonry (css_grid_3) | 3 | ED | Non pris en charge | élevée | Masonry hors périmètre pour v5.x. |
CSS Display (css_display_3) | 3 | CR | Revendiqué | moyenne | DisplayResolver.php + tests du résolveur ; pas de suite de propriétés dédiée. |
CSS Display (css_display_4) | 4 | ED | Inconnu | faible | Aucune preuve L4. |
CSS Positioned Layout (css_position_3) | 3 | WD | Vérifié | élevée | src/Html/Positioned/, tests/Unit/Html/Positioned/ (8 fichiers) |
CSS Positioned Layout (css_position_4) | 4 | ED | Inconnu | faible | position: sticky/anchor non attesté. |
CSS Box Alignment (css_align_3) | 3 | WD | Revendiqué | moyenne | Implémenté dans les moteurs Flex/Grid ; pas de suite autonome. |
CSS Box Sizing (css_sizing_3) | 3 | CR | Revendiqué | faible | src/Html/Length/ ; l’audit Phase 0 montre que width/height est en grande partie POLICY-ONLY. |
CSS Box Sizing (css_sizing_4) | 4 | ED | Inconnu | faible | Mots-clés de taille intrinsèque non attestés. |
CSS Box Model (css_box_3) | 3 | WD | Revendiqué | moyenne | Couverture de la fusion des marges ; le modèle de boîte left/right manque selon l’audit Phase 0. Backfill #617. |
CSS Box Model (css_box_4) | 4 | ED | Inconnu | faible | Aucune preuve. |
CSS Multi-column Layout (css_multicol_1) | 1 | CR | Revendiqué | moyenne | src/Html/MultiCol/ ; pas de suite de propriétés. |
CSS Multi-column Layout (css_multicol_2) | 2 | ED | Inconnu | faible | Aucune preuve. |
CSS Fragmentation (css_break_3) | 3 | CR | Vérifié | moyenne | src/Html/Fragmentation/, tests/Unit/Html/PagedMedia/ (20 fichiers) |
CSS Fragmentation (css_break_4) | 4 | ED | Inconnu | faible | Aucune preuve. |
CSS Containment (css_contain_1) | 1 | REC | Non pris en charge | moyenne | Aucun applicateur contain layout/paint ; pas de modèle de mise à jour en direct. |
CSS Containment — @container (css_contain_2) | 2 | CR | Revendiqué | faible | Fragment WPT de 114 fixtures + modèle de mise en page conservée ADR-017/021. Runtime LIVE (ADR-028 n’a retiré que le marqueur d’enum). |
CSS Containment (css_contain_3) | 3 | ED | Non pris en charge | moyenne | Confinement de style hors périmètre. |
CSS Inline Layout (css_inline_3) | 3 | WD | Revendiqué | moyenne | src/Html/Layout/InlineLayout/ + 8 tests ; initial-letter non attesté. |
CSS Logical Properties (css_logical_1) | 1 | WD | Revendiqué | moyenne | Résolveur logique→physique WritingMode ; pas de fixture dédiée. Les valeurs logiques text-align: start/end se résolvent par rapport à direction — sous direction: rtl, start désigne le bord droit — et sont appliquées dans les cellules de tableau. |
CSS Page Floats (css_page_floats_3) | 3 | ED | Non pris en charge | élevée | Hors périmètre pour v5.x. |
CSS Pagination Templates (css_page_templates_3) | 3 | ED | Non pris en charge | élevée | Pagination multi-régions hors périmètre. |
CSS Exclusions (css_exclusions_1) | 1 | WD | Non pris en charge | élevée | Niveau C ; aucun engagement de feuille de route. |
CSS Regions (css_regions_1) | 1 | WD | Non pris en charge | élevée | Abandonné par le W3C. |
CSS Template Layout (css_template_1) | 1 | NOTE | Non pris en charge | élevée | Hors périmètre. |
CSS Layout API (css_layout_api_1) | 1 | WD | Non pris en charge | élevée | Runtime de worklet ; sans objet. |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Backgrounds and Borders (css_backgrounds_3) | 3 | CR | Revendiqué | moyenne | src/Html/Background/, BorderRenderer.php ; bg-color limité aux tableaux selon l’audit Phase 0. Backfill #628. |
CSS Backgrounds (css_backgrounds_4) | 4 | ED | Inconnu | faible | Aucune preuve. |
CSS Borders and Box Decorations (css_borders_4) | 4 | ED | Inconnu | faible | Aucune preuve. |
CSS Gap Decorations (css_gaps_1) | 1 | ED | Inconnu | faible | Aucune preuve. |
CSS Masking (css_masking_1) | 1 | CR | Non pris en charge | moyenne | clip-path/mask non routés vers les opérateurs de découpe PDF. |
CSS Shadow Module (css_shadow_1) | 1 | ED | Revendiqué | moyenne | src/Html/Shadow/ (BoxShadowRenderer) ; pas de fixture dédiée. |
CSS Shapes (css_shapes_1) | 1 | CR | Non pris en charge | élevée | shape-outside hors périmètre pour v5.x. |
CSS Shapes (css_shapes_2) | 2 | ED | Non pris en charge | élevée | Hors périmètre. |
Filter Effects (filter_effects_1) | 1 | WD | Non pris en charge | élevée | Primitives de filtre SVG non routées vers le PDF. |
Filter Effects (filter_effects_2) | 2 | ED | Non pris en charge | élevée | Hors périmètre. |
Compositing and Blending (compositing_1) | 1 | CR | Revendiqué | moyenne | Mappage des modes de fusion PDF dans PaintCommand/ ; un test de mode de fusion. |
Compositing (compositing_2) | 2 | ED | Inconnu | faible | Aucune preuve. |
CSS Fill and Stroke (fill_stroke_3) | 3 | ED | Inconnu | faible | Aucune preuve. |
Geometry Interfaces (geometry_1) | 1 | CR | Non pris en charge | élevée | API d’exécution DOM Matrix. |
DOMMatrix (matrix) | 1 | NOTE | Non pris en charge | élevée | API d’exécution du navigateur. |
Motion Path (motion_1) | 1 | WD | Non pris en charge | élevée | Uniquement animation. |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Fonts (css_fonts_3) | 3 | REC | Vérifié | moyenne | src/Html/Font/, tests/Unit/Font/ (9) + tests FontResolver |
CSS Fonts (css_fonts_4) | 4 | CR | Vérifié | élevée | src/Html/FontFace/, tests/Unit/Html/FontFace/ (31 fichiers) |
CSS Fonts (css_fonts_5) | 5 | ED | Inconnu | faible | font-tech() non attesté. |
CSS Font Loading (css_font_loading_3) | 3 | WD | Non pris en charge | élevée | API d’exécution JS FontFace ; chargement côté PHP via FontResolver. |
CSS Text (css_text_3) | 3 | CR | Revendiqué | moyenne | src/Html/Text/ + 5 tests ; Phase 0 FULL pour align/indent/spacing, white-space limité à <pre>. Backfill #618. |
CSS Text (css_text_4) | 4 | ED | Revendiqué | moyenne | src/Html/Layout/Hyphenation/ + tests de stratégie ; autres propriétés L4 en attente. |
CSS Text Decoration (css_text_decor_3) | 3 | CR | Revendiqué | moyenne | src/Html/Text/ ; Phase 0 FULL mais pas de fixture dédiée. Backfill #619. |
CSS Text Decoration (css_text_decor_4) | 4 | ED | Inconnu | faible | text-emphasis non attesté. |
CSS Ruby (css_ruby_1) | 1 | WD | Non pris en charge | élevée | Annotations ruby hors périmètre pour v5.x. |
CSS Writing Modes (css_writing_modes_3) | 3 | REC | Revendiqué | moyenne | src/Html/Layout/WritingMode/ (7 tests) + fragment WPT de 140 fixtures. vertical-lr LIVE, actif par défaut (ADR-027). direction: rtl est fonctionnel — réordonnancement bidirectionnel UAX#9 et mise en forme contextuelle de l’arabe, avec alignement sur le début dans les cellules de tableau. L’alignement des blocs hors tableau et justify ne sont pas encore appliqués, et l’attribut HTML dir n’est pas pris en compte (utilise CSS direction). Voir Rendre du HTML arabe de droite à gauche. Backfill #629. |
CSS Writing Modes (css_writing_modes_4) | 4 | ED | Inconnu | faible | Aucune preuve. |
CSS Speech (css_speech_1) | 1 | CR | Non pris en charge | élevée | Rendu auditif sans objet. |
CSS Mobile Text Size Adjustment (css_size_adjust_1) | 1 | ED | Non pris en charge | élevée | Indication de l’agent utilisateur mobile ; sans objet. |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Color (css_color_3) | 3 | REC | Revendiqué | moyenne | src/Html/Color/, NamedColors.php + tests du parseur ; pas de fixture de module. Backfill #620. |
CSS Color (css_color_4) | 4 | CR | Revendiqué | moyenne | Analyse Lab/LCH/OKLab ; la fidélité de l’espace colorimétrique PDF n’est pas affirmée. |
CSS Color (css_color_5) | 5 | WD | Inconnu | faible | color-mix() non attesté. |
CSS Color (css_color_6) | 6 | ED | Inconnu | faible | Aucune preuve. |
CSS Color Adjustment (css_color_adjust_1) | 1 | CR | Non pris en charge | élevée | color-scheme piloté par l’agent utilisateur ; sans objet. |
CSS Color HDR (css_color_hdr_1) | 1 | ED | Non pris en charge | élevée | HDR non routé vers l’espace colorimétrique PDF. |
CSS Images (css_images_3) | 3 | CR | Revendiqué | moyenne | src/Html/Gradient/ (linear/radial/conic) + tests du parseur. |
CSS Images (css_images_4) | 4 | ED | Inconnu | faible | image()/image-set() non attestés. |
CSS Images (css_images_5) | 5 | ED | Inconnu | faible | Aucune preuve. |
CSS Image Animation (css_image_animation_1) | 1 | ED | Non pris en charge | élevée | Uniquement animation. |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Selectors (selectors_3) | 3 | REC | Revendiqué | moyenne | HasSelectorResolver.php + tests CssRule ; la fixture est un unique corpus.json. Backfill #627. |
CSS Selectors (selectors_4) | 4 | WD | Revendiqué | moyenne | :is()/:where()/:not()/:has() testés ; L4 avancé en attente. |
CSS Selectors (selectors_5) | 5 | ED | Inconnu | faible | Aucune preuve. |
CSS Non-element Selectors (selectors_nonelement_1) | 1 | WD | Non pris en charge | élevée | Points d’accroche de feuille de style du navigateur ; sans objet. |
CSS Pseudo-Elements (css_pseudo_4) | 4 | WD | Revendiqué | moyenne | src/Html/Pseudo/ (12) + ~10 tests du renderer ; pas de suite de module. |
CSS Cascading and Inheritance (css_cascade_3) | 3 | REC | Vérifié | élevée | src/Html/Cascade/, tests/Unit/Html/Cascade/ (9 fichiers) |
CSS Cascading (css_cascade_4) | 4 | CR | Vérifié | élevée | Cascade/Layer/ + tests revert/layer |
CSS Cascading (css_cascade_5) | 5 | CR | Vérifié | élevée | AtRule/Layer/ + Cascade/Layer/ (suites) |
CSS Cascading (css_cascade_6) | 6 | WD | Inconnu | faible | @scope non attesté. |
CSS Values and Units (css_values_3) | 3 | REC | Revendiqué | moyenne | CssValueParser.php + tests unitaires ; la fixture est un unique corpus.json. Backfill #626. |
CSS Values and Units (css_values_4) | 4 | CR | Revendiqué | moyenne | calc() implémenté ; min()/max()/clamp() imbriqués ne sont pas pleinement attestés. |
CSS Values and Units (css_values_5) | 5 | ED | Inconnu | faible | Aucune preuve. |
CSS Custom Properties (css_variables_1) | 1 | CR | Revendiqué | moyenne | src/Html/CustomProperty/ + test de couverture de portée. |
CSS Custom Properties (css_variables_2) | 2 | ED | Inconnu | faible | Aucune preuve. |
CSS Conditional Rules (css_conditional_3) | 3 | CR | Revendiqué | moyenne | @media/@supports analysés ; runtime @container préservé (ADR-028). |
CSS Conditional Rules (css_conditional_4) | 4 | ED | Inconnu | faible | Aucune preuve. |
CSS Conditional Rules (css_conditional_5) | 5 | ED | Inconnu | faible | Aucune preuve. |
CSS Conditional Values (css_conditional_values_1) | 1 | ED | Inconnu | faible | Aucune preuve. |
CSS Namespaces (css_namespaces_3) | 3 | REC | Revendiqué | faible | Le parseur tolère @namespace ; pas de couverture de correspondance. |
CSS Style Attributes (css_style_attr_1) | 1 | CR | Revendiqué | moyenne | Analyse de style en ligne dans tout le pipeline ; pas de fixture dédiée. Backfill #622. |
CSS Syntax (css_syntax_3) | 3 | CR | Revendiqué | moyenne | CssParser/ + tests grammar/fuzz ; pas de fixture de conformité. Backfill #623. |
CSS Nesting (css_nesting_1) | 1 | CR | Revendiqué | moyenne | Promu depuis unknown — CssNestingTest + tests desugar/inner-scan. |
CSS Environment Variables (css_env_1) | 1 | ED | Non pris en charge | moyenne | Piloté par l’agent utilisateur, env() ; sans objet. |
CSS Custom Functions and Mixins (css_mixins_1) | 1 | ED | Inconnu | faible | Aucune preuve. |
CSS Extensions (css_extensions_1) | 1 | NOTE | Inconnu | faible | Aucune preuve. |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Lists and Counters (css_lists_3) | 3 | WD | Revendiqué | moyenne | HtmlListRenderer.php/CssCounterManager.php + 18 tests ; list-style-type non appliqué à ol/ul (Phase 0). |
CSS Counter Styles (css_counter_styles_3) | 3 | CR | Revendiqué | moyenne | Styles de compteur intégrés ; @counter-style en attente. |
CSS Generated Content (css_content_3) | 3 | WD | Revendiqué | moyenne | CssContentSegment.php + tests pseudo ; contourne l’applicateur (Phase 0). Backfill #621. |
CSS Generated Content for Paged Media (css_gcpm_3) | 3 | WD | Revendiqué | moyenne | src/Html/Gcpm/ registres + test de capture de notes de bas de page. |
CSS Generated Content for Paged Media (css_gcpm_4) | 4 | ED | Inconnu | faible | Aucune preuve. |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Paged Media (css_page_3) | 3 | WD | Revendiqué | moyenne | Page/, PagedMedia/, PageRule.php + tests PageRuleParser/PageMarginBox ; tests/Unit/Html/Page/ contient 1 fichier. Backfill #624. |
CSS Paged Media (css_page_4) | 4 | NOTE | Inconnu | faible | Propositions futures. |
CSS Print Profile (css_print) | 1 | NOTE | Revendiqué | faible | La cible PDF statique respecte les contraintes d’impression ; pas de fixture de conformité. |
CSS Presentation Levels (css_preslev_1) | 1 | NOTE | Non pris en charge | élevée | Navigation de type diaporama ; sans objet. |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Overflow (css_overflow_3) | 3 | WD | Revendiqué | faible | OverflowClip/ClipRect tests ; découpe limitée aux cellules de tableau (Phase 0). |
CSS Overflow (css_overflow_4) | 4 | ED | Inconnu | faible | Aucune preuve. |
CSS Overflow (css_overflow_5) | 5 | ED | Inconnu | faible | Aucune preuve. |
CSS Overscroll Behavior (css_overscroll_1) | 1 | CR | Non pris en charge | élevée | Runtime de défilement ; sans objet. |
CSS Scroll Anchoring (css_scroll_anchoring_1) | 1 | WD | Non pris en charge | élevée | Runtime de défilement ; sans objet. |
CSS Scroll Snap (css_scroll_snap_1) | 1 | REC | Non pris en charge | élevée | Runtime de défilement ; sans objet. |
CSS Scroll Snap (css_scroll_snap_2) | 2 | WD | Non pris en charge | élevée | Runtime de défilement ; sans objet. |
CSS Scrollbars Styling (css_scrollbars_1) | 1 | CR | Non pris en charge | élevée | Runtime de l’agent utilisateur ; sans objet. |
CSS Basic User Interface (css_ui_3) | 3 | REC | Non pris en charge | moyenne | cursor/resize uniquement pour l’IU du navigateur. |
CSS Basic User Interface (css_ui_4) | 4 | WD | Non pris en charge | élevée | Runtime de l’agent utilisateur ; sans objet. |
CSS Form Control Styling (css_forms_1) | 1 | ED | Non pris en charge | élevée | Les widgets de formulaire ne sont pas rendus par le PDF statique. |
CSS View Transitions (css_view_transitions_1) | 1 | WD | Non pris en charge | élevée | Uniquement animation. |
CSS View Transitions (css_view_transitions_2) | 2 | ED | Non pris en charge | élevée | Uniquement animation. |
CSS Spatial Navigation (css_nav_1) | 1 | NOTE | Non pris en charge | élevée | Runtime de l’agent utilisateur ; sans objet. |
CSS Route Matching (css_navigation_1) | 1 | ED | Non pris en charge | élevée | Runtime de l’agent utilisateur ; sans objet. |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Table (css_tables_3) | 3 | WD | Vérifié | élevée | src/Html/Table/, tests/Unit/Html/Table/ (17) + ~60 tests TableParser + 5 PDF de référence synthétiques dans tests/Corpus/tables/ |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Transforms (css_transforms_1) | 1 | CR | Revendiqué | moyenne | Renderer/Transform/ + ApplyTransformCommand.php ; pas de fixture dédiée. |
CSS Transforms (css_transforms_2) | 2 | ED | Inconnu | faible | Transformations 3D non attestées. |
CSS Animations (css_animations_1) | 1 | WD | Non pris en charge | élevée | La chronologie d’animation est sans objet pour le PDF statique. |
CSS Animations (css_animations_2) | 2 | ED | Non pris en charge | élevée | Hors périmètre. |
CSS Transitions (css_transitions_1) | 1 | WD | Non pris en charge | élevée | Hors périmètre. |
CSS Transitions (css_transitions_2) | 2 | ED | Non pris en charge | élevée | Hors périmètre. |
CSS Easing Functions (css_easing_1) | 1 | CR | Non pris en charge | élevée | Uniquement animation. |
CSS Easing Functions (css_easing_2) | 2 | ED | Non pris en charge | élevée | Uniquement animation. |
Web Animations (web_animations_1) | 1 | WD | Non pris en charge | élevée | API d’exécution du navigateur. |
Web Animations (web_animations_2) | 2 | ED | Non pris en charge | élevée | API d’exécution du navigateur. |
Web Animations CSS Integration (web_animations_css_integration) | 1 | ED | Non pris en charge | élevée | API d’exécution du navigateur. |
Animation Triggers (animation_triggers) | 1 | ED | Non pris en charge | élevée | Uniquement animation. |
Pointer-driven Animations (pointer_animations_1) | 1 | ED | Non pris en charge | élevée | Événement d’entrée à l’exécution ; sans objet. |
Scroll-driven Animations (scroll_animations_1) | 1 | ED | Non pris en charge | élevée | Runtime de défilement ; sans objet. |
CSS Animation Worklet (css_animation_worklet) | 1 | ED | Non pris en charge | élevée | Runtime de worklet du navigateur. |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Anchor Positioning (css_anchor_position_1) | 1 | WD | Inconnu | faible | Aucune source anchor(). |
CSS Anchor Positioning (css_anchor_position_2) | 2 | ED | Inconnu | faible | Aucune preuve. |
CSS Highlight API (css_highlight_api_1) | 1 | WD | Non pris en charge | élevée | API d’exécution du navigateur. |
CSS Properties and Values API (css_properties_values_api_1) | 1 | CR | Non pris en charge | élevée | API d’exécution du navigateur. |
CSS Painting API (css_paint_api_1) | 1 | WD | Non pris en charge | élevée | Runtime de worklet du navigateur. |
CSS Typed OM (css_typed_om_1) | 1 | WD | Non pris en charge | élevée | API d’exécution du navigateur. |
CSSOM (cssom_1) | 1 | WD | Non pris en charge | élevée | API DOM du navigateur. |
CSSOM View (cssom_view_1) | 1 | WD | Non pris en charge | élevée | API DOM du navigateur. |
CSS Will Change (css_will_change_1) | 1 | CR | Non pris en charge | élevée | Indication d’optimisation du navigateur. |
CSS Linked Parameters (css_link_params_1) | 1 | ED | Inconnu | faible | Aucune preuve. |
CSS Line Grid (css_line_grid_1) | 1 | NOTE | Inconnu | faible | Aucune preuve. |
CSS Rhythmic Sizing (css_rhythm_1) | 1 | ED | Inconnu | faible | Aucune preuve. |
CSS Round Display (css_round_display_1) | 1 | ED | Non pris en charge | élevée | Cible d’affichage circulaire sans objet. |
CSS Shaders (css_shaders_1) | 1 | NOTE | Non pris en charge | élevée | Supprimé par le W3C. |
CSS Viewport (css_viewport_1) | 1 | NOTE | Non pris en charge | élevée | Viewport de l’agent utilisateur ; sans objet. |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
Media Queries (mediaqueries_3) | 3 | REC | Revendiqué | moyenne | CssParser/ + tests de couverture des requêtes média ; pas de fixture dédiée. Backfill #625. |
Media Queries (mediaqueries_4) | 4 | CR | Revendiqué | moyenne | @media print/prefers-color-scheme analysés ; syntaxe d’intervalle en attente. |
Media Queries (mediaqueries_5) | 5 | WD | Inconnu | faible | Aucune preuve. |
| Module W3C | Niveau | W3C | Statut | Confiance | Preuves |
|---|
CSS Level 2 (css_2_1) | 2.1 | REC | Revendiqué | faible | Socle réparti dans src/Html/ ; pas de fixture de conformité unique. |
CSS Level 2.2 (css_2_2) | 2.2 | NOTE | Revendiqué | faible | Socle réparti ; pas de fixture dédiée. |
CSS Snapshot 2026 (css_snapshot_2026) | snapshot | NOTE | Revendiqué | faible | Index des autres modules ; le statut est l’agrégat des lignes référencées. |
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 W3C | W3C | Statut | Confiance | Emplacement |
|---|
W3C SVG 1.1 (svg_1_1) | REC | Revendiqué | faible | Sous-ensemble de peinture SVG en ligne dans Renderer/PaintCommand/ ; pas de fixture de matrice CSS. |
W3C SVG 2.0 (svg_2_0) | CR | Inconnu | faible | Relève du pipeline Premium ; aucune preuve côté Core. |
W3C PNG 3rd Edition (png_3) | WD | Revendiqué | faible | Décodage PNG dans le module Graphics/ (hors HTML/CSS). |
W3C WOFF 1.0 (woff_1_0) | REC | Revendiqué | faible | WOFF via la pile Font ; pas de fixture de matrice CSS. |
W3C WOFF 2.0 (woff_2_0) | REC | Revendiqué | faible | WOFF2 via la pile Font ; pas de fixture de matrice CSS. |
W3C WCAG 2.2 (wcag_2_2) | REC | Vérifié | moyenne | src/Html/Aam/, tests/Unit/Accessibility/HtmlAam/ (4 fichiers) — PDF/UA-2. |
W3C WAI-ARIA 1.2 (wai_aria_1_2) | REC | Vérifié | moyenne | tests/Unit/Accessibility/HtmlAam/ (4 fichiers). |
W3C ARIA Bundle (w3c_aria_bundle) | REC | Revendiqué | faible | Lot d’orientations ; la preuve concrète est la ligne WAI-ARIA. |
W3C AAM Bundle (w3c_aam_bundle) | NOTE | Revendiqué | faible | Pointeur de lot ; la preuve réside dans les lignes WAI-ARIA/WCAG. |
W3C ATAG 2.0 (atag_2_0) | REC | Non pris en charge | élevée | Accessibilité des outils de création ; sans objet. |
W3C XSL 1.1 (xsl_1_1) | REC | Non pris en charge | élevée | Modèle de formatage parallèle XSL-FO ; non implémenté. |
W3C XSD 1.1 Part 1 (xsd_1_1_part1) | REC | Non pris en charge | élevée | Schéma XML ; sans objet. |
W3C XSLT 3.0 (xslt_3_0) | REC | Non pris en charge | élevée | Langage de transformation ; sans objet. |
Resize Observer (resize_observer_1) | CR | Non pris en charge | élevée | API d’exécution du navigateur. |
Pour qu’une ligne passe de claimed à verified :
- 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.
- La fixture vérifie le comportement de NextPDF par rapport à la grammaire W3C pour les propriétés principales du module.
- 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).
- 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 :
- Une passe d’audit confirme les preuves d’implémentation dans
src/Html/ (cite le chemin dans evidence + notes).
- Un ticket de comblement est ouvert et lié dans
backfill_issue.
- 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