NextPDF implementeert de weergave van Cascading Style Sheets (CSS) op basis van gepubliceerde specificaties van het World Wide Web Consortium (W3C). Gebruik deze pagina om elke CSS-module in het specificatiecorpus van NextPDF op te zoeken, samen met de door audit bevestigde ondersteuningsstatus van die module in de weergavepijplijn.
Deze revisie komt voort uit de waarheidsaudit van Wave 4 B2 (plansectie 4.4). De vorige structurele revisie gebruikte niet-geverifieerde tijdelijke badges. De audit beoordeelde elke rij opnieuw aan de hand van daadwerkelijk bewijs op schijf (src/Html/, tests/, tests/Wpt/corpus/), de v8/v9 architecture decision records (ADR’s) voor brekende wijzigingen en de interne audit van CSS-eigenschapdekking. De audit gaf voorrang aan eerlijkheid boven dekking: wanneer het bewijs tot een lagere badge leidde, werd die badge verlaagd.
Vier badges classificeren elke rij onder het verificatiecontract:
- Verified — Implementatie in
src/Html/ plus een substantiële, specifieke geautomatiseerde fixture: ofwel een suite op eigenschapsniveau van drie of meer bestanden onder tests/Unit/Html/<Module>/, of een corpusshard met Web Platform Tests (WPT) van vijftig of meer fixtures onder tests/Wpt/corpus/. Er is nog geen golden Portable Document Format (PDF)-baseline per CSS-module ingericht, dus geverifieerde rijen gebruiken het reproduceerbaarheidsprofiel structural (PHPUnit-assertie-equivalentie), nooit bitwise.
- Claimed — Het gedrag van de module is geïmplementeerd in
src/Html/ (bronpad vermeld), maar de specifieke fixture is beperkt, gedeeld of afwezig. Elke claimed-rij met een concrete implementatie heeft een backfill-issue.
- Not supported — De statische-PDF-weergavepijplijn omvat deze module niet: runtime-/browser-only API’s, scrolling-/animation-runtimes en door W3C stopgezet werk. De rij vermeldt de reden.
- Unknown — De module staat in het corpus, maar de audit vond geen bewijs van implementatie of fixtures. De audit heeft nooit optimistisch ingeschat om het aantal te verhogen.
De badge partial van de structurele revisie is verwijderd: elke voormalige partial-rij is opnieuw beoordeeld als claimed (implementatie aanwezig, geen specifieke fixture) of verified.
| Badge | Betekenis |
|---|
verified | src/Html/ + specifieke fixture-suite (≥3 bestanden) of WPT-shard (≥50 fixtures); slaagt deterministisch onder het profiel structural. |
claimed | Implementatiebewijs in src/Html/, geen specifieke fixture. Backfill-issue bijgehouden. |
not-supported | Expliciet uitgesloten van de statische-PDF-scope. Reden vastgelegd. |
unknown | Geen vaststelbaar bewijs. Niet optimistisch ingeschat. |
De kolom Confidence is een eerlijk, niet-binair signaal voor het bewijs achter de vermelde badge (high / medium / low). Deze kolom staat los van de badge zelf.
NextPDF ondersteunt de hieronder vermelde CSS-modules op de aangegeven niveaus. Verified-rijen hebben een specifieke geautomatiseerde fixture-suite of een substantiële WPT-corpusshard die het gedrag van NextPDF toetst en deterministisch slaagt onder het reproduceerbaarheidsprofiel structural. Claimed-rijen hebben implementatiebewijs in src/Html/, maar nog geen specifieke fixture; elke rij wordt bijgehouden via een backfill-issue onder tracking issue #614. Not supported-rijen documenteren expliciete scopegrenzen voor het statische-PDF-doel.
Geen enkele rij claimt reproduceerbaarheid op byteniveau, omdat deze revisie geen golden PDF-baseline per CSS-module heeft. Het verificatiecontract verbiedt lege rijen: wanneer de ondersteuning niet kan worden vastgesteld, is de rij unknown.
| Status | Modules | Confidence (high / medium / low) |
|---|
| Verified | 12 | 8 / 4 / 0 |
| Claimed | 49 | 0 / 35 / 14 |
| Not supported | 67 | 62 / 5 / 0 |
| Unknown | 39 | 0 / 0 / 39 |
| Totaal | 167 | 70 / 44 / 53 |
Het summary-blok van de structurele revisie was intern inconsistent: het meldde een totaal van 148 (18 verified / 11 partial / 11 claimed / 53 not-supported / 55 unknown), terwijl het bestand 167 modulerijen bevatte waarvan de labels optelden tot 34 verified / 13 partial / 13 claimed / 68 not-supported / 39 unknown. Deze audit heeft het totaal gecorrigeerd naar het werkelijke aantal van 167 en elke rij opnieuw beoordeeld aan de hand van bewijs op schijf: Verified daalde van een geclaimde 34 naar een onderbouwde 12. Die verlaging is het juiste resultaat van een eerlijke audit, geen regressie. De volledige before/after-delta staat in het in-repo _css-matrix-truth-report.md-sidecarbestand.
De structurele revisie heeft drie actieve mogelijkheden ten onrechte gelabeld als verwijderd of niet-ondersteund. ADR-027 en ADR-028 hebben alleen de opt-in-markeringen van de ExperimentalFeature-enum verwijderd; de mogelijkheden blijven LIVE en zijn standaard ingeschakeld:
- Subgrid (
css_grid_2) — LIVE; CssFeatureFlags::$layoutSubgrid standaard ingeschakeld. Het was ten onrechte gelabeld als „subgrid hard-removed v9.0.0”.
@container-query’s (css_contain_2) — runtime-dispatch expliciet ongewijzigd door ADR-028; flag-opt-out behouden. Het was ten onrechte gelabeld als „hard-removed v9.0.0”.
writing-mode: vertical-lr (css_writing_modes_3) — standaard ingeschakeld en Stable sinds v7.0.0; ADR-027 promoveerde alleen de deprecation-handshake. Het was ten onrechte gelabeld als „deprecated/removed v8.0.0”.
De machineleesbare set rijen per module bevindt zich in het in-repo css-support-matrix-data.yaml, dat de bron van waarheid is. Deze pagina is de mensleesbare weergave, gegroepeerd per categorie. Astro-componenten verwerken de YAML-gegevens rechtstreeks tijdens de documentatiebuild.
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Flexible Box Layout (css_flexbox_1) | 1 | CR | Verified | high |
CSS Grid Layout (css_grid_1) | 1 | REC | Verified | high |
CSS Grid Layout — Subgrid (css_grid_2) | 2 | CR | Claimed | medium |
CSS Grid Layout — Masonry (css_grid_3) | 3 | ED | Not supported | high |
CSS Display (css_display_3) | 3 | CR | Claimed | medium |
CSS Display (css_display_4) | 4 | ED | Unknown | low |
CSS Positioned Layout (css_position_3) | 3 | WD | Verified | high |
CSS Positioned Layout (css_position_4) | 4 | ED | Unknown | low |
CSS Box Alignment (css_align_3) | 3 | WD | Claimed | medium |
CSS Box Sizing (css_sizing_3) | 3 | CR | Claimed | low |
CSS Box Sizing (css_sizing_4) | 4 | ED | Unknown | low |
CSS Box Model (css_box_3) | 3 | WD | Claimed | medium |
CSS Box Model (css_box_4) | 4 | ED | Unknown | low |
CSS Multi-column Layout (css_multicol_1) | 1 | CR | Claimed | medium |
CSS Multi-column Layout (css_multicol_2) | 2 | ED | Unknown | low |
CSS Fragmentation (css_break_3) | 3 | CR | Verified | medium |
CSS Fragmentation (css_break_4) | 4 | ED | Unknown | low |
CSS Containment (css_contain_1) | 1 | REC | Not supported | medium |
CSS Containment — @container (css_contain_2) | 2 | CR | Claimed | low |
CSS Containment (css_contain_3) | 3 | ED | Not supported | medium |
CSS Inline Layout (css_inline_3) | 3 | WD | Claimed | medium |
CSS Logical Properties (css_logical_1) | 1 | WD | Claimed | medium |
CSS Page Floats (css_page_floats_3) | 3 | ED | Not supported | high |
CSS Pagination Templates (css_page_templates_3) | 3 | ED | Not supported | high |
CSS Exclusions (css_exclusions_1) | 1 | WD | Not supported | high |
CSS Regions (css_regions_1) | 1 | WD | Not supported | high |
CSS Template Layout (css_template_1) | 1 | NOTE | Not supported | high |
CSS Layout API (css_layout_api_1) | 1 | WD | Not supported | high |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Backgrounds and Borders (css_backgrounds_3) | 3 | CR | Claimed | medium |
CSS Backgrounds (css_backgrounds_4) | 4 | ED | Unknown | low |
CSS Borders and Box Decorations (css_borders_4) | 4 | ED | Unknown | low |
CSS Gap Decorations (css_gaps_1) | 1 | ED | Unknown | low |
CSS Masking (css_masking_1) | 1 | CR | Not supported | medium |
CSS Shadow Module (css_shadow_1) | 1 | ED | Claimed | medium |
CSS Shapes (css_shapes_1) | 1 | CR | Not supported | high |
CSS Shapes (css_shapes_2) | 2 | ED | Not supported | high |
Filter Effects (filter_effects_1) | 1 | WD | Not supported | high |
Filter Effects (filter_effects_2) | 2 | ED | Not supported | high |
Compositing and Blending (compositing_1) | 1 | CR | Claimed | medium |
Compositing (compositing_2) | 2 | ED | Unknown | low |
CSS Fill and Stroke (fill_stroke_3) | 3 | ED | Unknown | low |
Geometry Interfaces (geometry_1) | 1 | CR | Not supported | high |
DOMMatrix (matrix) | 1 | NOTE | Not supported | high |
Motion Path (motion_1) | 1 | WD | Not supported | high |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Fonts (css_fonts_3) | 3 | REC | Verified | medium |
CSS Fonts (css_fonts_4) | 4 | CR | Verified | high |
CSS Fonts (css_fonts_5) | 5 | ED | Unknown | low |
CSS Font Loading (css_font_loading_3) | 3 | WD | Not supported | high |
CSS Text (css_text_3) | 3 | CR | Claimed | medium |
CSS Text (css_text_4) | 4 | ED | Claimed | medium |
CSS Text Decoration (css_text_decor_3) | 3 | CR | Claimed | medium |
CSS Text Decoration (css_text_decor_4) | 4 | ED | Unknown | low |
CSS Ruby (css_ruby_1) | 1 | WD | Not supported | high |
CSS Writing Modes (css_writing_modes_3) | 3 | REC | Claimed | medium |
CSS Writing Modes (css_writing_modes_4) | 4 | ED | Unknown | low |
CSS Speech (css_speech_1) | 1 | CR | Not supported | high |
CSS Mobile Text Size Adjustment (css_size_adjust_1) | 1 | ED | Not supported | high |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Color (css_color_3) | 3 | REC | Claimed | medium |
CSS Color (css_color_4) | 4 | CR | Claimed | medium |
CSS Color (css_color_5) | 5 | WD | Unknown | low |
CSS Color (css_color_6) | 6 | ED | Unknown | low |
CSS Color Adjustment (css_color_adjust_1) | 1 | CR | Not supported | high |
CSS Color HDR (css_color_hdr_1) | 1 | ED | Not supported | high |
CSS Images (css_images_3) | 3 | CR | Claimed | medium |
CSS Images (css_images_4) | 4 | ED | Unknown | low |
CSS Images (css_images_5) | 5 | ED | Unknown | low |
CSS Image Animation (css_image_animation_1) | 1 | ED | Not supported | high |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Selectors (selectors_3) | 3 | REC | Claimed | medium |
CSS Selectors (selectors_4) | 4 | WD | Claimed | medium |
CSS Selectors (selectors_5) | 5 | ED | Unknown | low |
CSS Non-element Selectors (selectors_nonelement_1) | 1 | WD | Not supported | high |
CSS Pseudo-Elements (css_pseudo_4) | 4 | WD | Claimed | medium |
CSS Cascading and Inheritance (css_cascade_3) | 3 | REC | Verified | high |
CSS Cascading (css_cascade_4) | 4 | CR | Verified | high |
CSS Cascading (css_cascade_5) | 5 | CR | Verified | high |
CSS Cascading (css_cascade_6) | 6 | WD | Unknown | low |
CSS Values and Units (css_values_3) | 3 | REC | Claimed | medium |
CSS Values and Units (css_values_4) | 4 | CR | Claimed | medium |
CSS Values and Units (css_values_5) | 5 | ED | Unknown | low |
CSS Custom Properties (css_variables_1) | 1 | CR | Claimed | medium |
CSS Custom Properties (css_variables_2) | 2 | ED | Unknown | low |
CSS Conditional Rules (css_conditional_3) | 3 | CR | Claimed | medium |
CSS Conditional Rules (css_conditional_4) | 4 | ED | Unknown | low |
CSS Conditional Rules (css_conditional_5) | 5 | ED | Unknown | low |
CSS Conditional Values (css_conditional_values_1) | 1 | ED | Unknown | low |
CSS Namespaces (css_namespaces_3) | 3 | REC | Claimed | low |
CSS Style Attributes (css_style_attr_1) | 1 | CR | Claimed | medium |
CSS Syntax (css_syntax_3) | 3 | CR | Claimed | medium |
CSS Nesting (css_nesting_1) | 1 | CR | Claimed | medium |
CSS Environment Variables (css_env_1) | 1 | ED | Not supported | medium |
CSS Custom Functions and Mixins (css_mixins_1) | 1 | ED | Unknown | low |
CSS Extensions (css_extensions_1) | 1 | NOTE | Unknown | low |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Lists and Counters (css_lists_3) | 3 | WD | Claimed | medium |
CSS Counter Styles (css_counter_styles_3) | 3 | CR | Claimed | medium |
CSS Generated Content (css_content_3) | 3 | WD | Claimed | medium |
CSS Generated Content for Paged Media (css_gcpm_3) | 3 | WD | Claimed | medium |
CSS Generated Content for Paged Media (css_gcpm_4) | 4 | ED | Unknown | low |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Paged Media (css_page_3) | 3 | WD | Claimed | medium |
CSS Paged Media (css_page_4) | 4 | NOTE | Unknown | low |
CSS Print Profile (css_print) | 1 | NOTE | Claimed | low |
CSS Presentation Levels (css_preslev_1) | 1 | NOTE | Not supported | high |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Overflow (css_overflow_3) | 3 | WD | Claimed | low |
CSS Overflow (css_overflow_4) | 4 | ED | Unknown | low |
CSS Overflow (css_overflow_5) | 5 | ED | Unknown | low |
CSS Overscroll Behavior (css_overscroll_1) | 1 | CR | Not supported | high |
CSS Scroll Anchoring (css_scroll_anchoring_1) | 1 | WD | Not supported | high |
CSS Scroll Snap (css_scroll_snap_1) | 1 | REC | Not supported | high |
CSS Scroll Snap (css_scroll_snap_2) | 2 | WD | Not supported | high |
CSS Scrollbars Styling (css_scrollbars_1) | 1 | CR | Not supported | high |
CSS Basic User Interface (css_ui_3) | 3 | REC | Not supported | medium |
CSS Basic User Interface (css_ui_4) | 4 | WD | Not supported | high |
CSS Form Control Styling (css_forms_1) | 1 | ED | Not supported | high |
CSS View Transitions (css_view_transitions_1) | 1 | WD | Not supported | high |
CSS View Transitions (css_view_transitions_2) | 2 | ED | Not supported | high |
CSS Spatial Navigation (css_nav_1) | 1 | NOTE | Not supported | high |
CSS Route Matching (css_navigation_1) | 1 | ED | Not supported | high |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Table (css_tables_3) | 3 | WD | Verified | high |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Transforms (css_transforms_1) | 1 | CR | Claimed | medium |
CSS Transforms (css_transforms_2) | 2 | ED | Unknown | low |
CSS Animations (css_animations_1) | 1 | WD | Not supported | high |
CSS Animations (css_animations_2) | 2 | ED | Not supported | high |
CSS Transitions (css_transitions_1) | 1 | WD | Not supported | high |
CSS Transitions (css_transitions_2) | 2 | ED | Not supported | high |
CSS Easing Functions (css_easing_1) | 1 | CR | Not supported | high |
CSS Easing Functions (css_easing_2) | 2 | ED | Not supported | high |
Web Animations (web_animations_1) | 1 | WD | Not supported | high |
Web Animations (web_animations_2) | 2 | ED | Not supported | high |
Web Animations CSS Integration (web_animations_css_integration) | 1 | ED | Not supported | high |
Animation Triggers (animation_triggers) | 1 | ED | Not supported | high |
Pointer-driven Animations (pointer_animations_1) | 1 | ED | Not supported | high |
Scroll-driven Animations (scroll_animations_1) | 1 | ED | Not supported | high |
CSS Animation Worklet (css_animation_worklet) | 1 | ED | Not supported | high |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Anchor Positioning (css_anchor_position_1) | 1 | WD | Unknown | low |
CSS Anchor Positioning (css_anchor_position_2) | 2 | ED | Unknown | low |
CSS Highlight API (css_highlight_api_1) | 1 | WD | Not supported | high |
CSS Properties and Values API (css_properties_values_api_1) | 1 | CR | Not supported | high |
CSS Painting API (css_paint_api_1) | 1 | WD | Not supported | high |
CSS Typed OM (css_typed_om_1) | 1 | WD | Not supported | high |
CSSOM (cssom_1) | 1 | WD | Not supported | high |
CSSOM View (cssom_view_1) | 1 | WD | Not supported | high |
CSS Will Change (css_will_change_1) | 1 | CR | Not supported | high |
CSS Linked Parameters (css_link_params_1) | 1 | ED | Unknown | low |
CSS Line Grid (css_line_grid_1) | 1 | NOTE | Unknown | low |
CSS Rhythmic Sizing (css_rhythm_1) | 1 | ED | Unknown | low |
CSS Round Display (css_round_display_1) | 1 | ED | Not supported | high |
CSS Shaders (css_shaders_1) | 1 | NOTE | Not supported | high |
CSS Viewport (css_viewport_1) | 1 | NOTE | Not supported | high |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
Media Queries (mediaqueries_3) | 3 | REC | Claimed | medium |
Media Queries (mediaqueries_4) | 4 | CR | Claimed | medium |
Media Queries (mediaqueries_5) | 5 | WD | Unknown | low |
| W3C-module | Niveau | W3C | Status | Confidence |
|---|
CSS Level 2 (css_2_1) | 2.1 | REC | Claimed | low |
CSS Level 2.2 (css_2_2) | 2.2 | NOTE | Claimed | low |
CSS Snapshot 2026 (css_snapshot_2026) | snapshot | NOTE | Claimed | low |
Deze W3C-modules komen voor in het corpus, maar vallen buiten de CSS-weergavepijplijn. Waar van toepassing verwijzen de bijbehorende functiepagina’s ernaar.
| W3C-module | W3C | Status | Confidence | Locatie |
|---|
W3C SVG 1.1 (svg_1_1) | REC | Claimed | low | Subset van inline SVG-paint in Renderer/PaintCommand/; geen CSS-matrix-fixture. |
W3C SVG 2.0 (svg_2_0) | CR | Unknown | low | Onderdeel van de Premium-pijplijn; geen core-bewijs. |
W3C PNG 3rd Edition (png_3) | WD | Claimed | low | PNG-decodering in de module Graphics/ (buiten HTML/CSS). |
W3C WOFF 1.0 (woff_1_0) | REC | Claimed | low | WOFF via de Font-stack; geen CSS-matrix-fixture. |
W3C WOFF 2.0 (woff_2_0) | REC | Claimed | low | WOFF2 via de Font-stack; geen CSS-matrix-fixture. |
W3C WCAG 2.2 (wcag_2_2) | REC | Verified | medium | src/Html/Aam/, tests/Unit/Accessibility/HtmlAam/ (4 bestanden) — PDF/UA-2. |
W3C WAI-ARIA 1.2 (wai_aria_1_2) | REC | Verified | medium | tests/Unit/Accessibility/HtmlAam/ (4 bestanden). |
W3C ARIA Bundle (w3c_aria_bundle) | REC | Claimed | low | Richtlijnenbundel; het concrete bewijs is de WAI-ARIA-rij. |
W3C AAM Bundle (w3c_aam_bundle) | NOTE | Claimed | low | Bundelverwijzing; het bewijs zijn de WAI-ARIA/WCAG-rijen. |
W3C ATAG 2.0 (atag_2_0) | REC | Not supported | high | Toegankelijkheid van authoring-tools; niet van toepassing. |
W3C XSL 1.1 (xsl_1_1) | REC | Not supported | high | XSL-FO is een parallel opmaakmodel; niet geïmplementeerd. |
W3C XSD 1.1 Part 1 (xsd_1_1_part1) | REC | Not supported | high | XML-schema; niet van toepassing. |
W3C XSLT 3.0 (xslt_3_0) | REC | Not supported | high | Transformatietaal; niet van toepassing. |
Resize Observer (resize_observer_1) | CR | Not supported | high | Browser-runtime-API. |
Voor promotie van een rij van claimed → verified geldt:
- Er bestaat een specifieke fixture-suite op eigenschapsniveau onder
tests/Unit/Html/<Module>/ (≥3 bestanden) of een substantiële WPT-corpusshard (≥50 fixtures) onder tests/Wpt/corpus/ wordt gepromoveerd tot toetsende test.
- De fixture toetst het gedrag van NextPDF aan de W3C-grammatica voor de primaire eigenschappen van de module.
- De fixture slaagt deterministisch onder een
NextPDF\Testing\ReproducibilityProfile (structural voor assertie-fixtures; bitwise pas zodra er golden PDF-baselines per module bestaan).
- De
nextpdf_status van de rij in het in-repo css-support-matrix-data.yaml wijzigt naar verified, met bijgewerkte fixture_path, repro_profile en confidence.
Voor promotie van een rij van unknown → claimed geldt:
- Een auditronde bevestigt implementatiebewijs in
src/Html/ (vermeld het pad in evidence + notes).
- Er wordt een backfill-issue geopend en gekoppeld in
backfill_issue.