NextPDF implementa il rendering CSS secondo le specifiche pubblicate dal W3C. Questa pagina elenca tutti i moduli CSS presenti nel corpus di specifiche di NextPDF e registra, per ciascun modulo, lo stato di supporto con audit di veridicità nella pipeline di rendering.
Questa revisione deriva dal truth audit della Wave 4 B2 (sezione 4.4 del piano). I badge della precedente revisione strutturale erano segnaposto non verificati. Ogni riga di questa pagina è stata rivalutata rispetto alle evidenze reali su disco (src/Html/, tests/, tests/Wpt/corpus/), agli ADR delle modifiche incompatibili v8/v9 e all’audit interno della copertura delle proprietà CSS. L’onestà ha avuto la precedenza sulla copertura: quando l’audit ha abbassato un badge, il badge è stato effettivamente abbassato.
Secondo il contratto di verifica, quattro badge classificano ciascuna riga:
- Verified — implementazione in
src/Html/ più una fixture automatizzata dedicata e sostanziale: una suite a livello di proprietà di tre o più file in tests/Unit/Html/<Module>/, oppure uno shard del corpus Web Platform Tests di cinquanta o più fixture in tests/Wpt/corpus/. Non è ancora collegata alcuna baseline PDF golden a un singolo modulo CSS; per questo le righe verified utilizzano il profilo di riproducibilità structural (equivalenza di asserzione PHPUnit), mai bitwise.
- Claimed — il comportamento del modulo è implementato in
src/Html/ (con percorso del sorgente citato), ma la fixture dedicata è esigua, condivisa o assente. Ogni riga claimed con un’implementazione concreta ha una issue di backfill.
- Not supported — fuori ambito per la pipeline di rendering PDF statico. API esclusivamente runtime/browser, runtime di scrolling/animation e lavori dismessi dal W3C. Il motivo è registrato.
- Unknown — il modulo è presente nel corpus, ma non è stato possibile determinare alcuna evidenza di implementazione o di fixture. L’audit non ha mai formulato ipotesi al rialzo per migliorare il conteggio.
Il badge partial della revisione strutturale è stato ritirato: ogni riga precedentemente partial è stata rivalutata come claimed (implementazione presente, nessuna fixture dedicata) o verified.
| Badge | Significato |
|---|
verified | src/Html/ + suite di fixture dedicata (≥3 file) o shard WPT (≥50 fixture); supera i test in modo deterministico con il profilo structural. |
claimed | Evidenza di implementazione in src/Html/, nessun fixture dedicato. Issue di backfill tracciata. |
not-supported | Esplicitamente escluso dall’ambito PDF statico. Motivo registrato. |
unknown | Nessuna evidenza determinabile. Nessuna ipotesi al rialzo. |
La colonna Confidence è un indicatore onesto e non binario della solidità dell’evidenza per il badge indicato (high / medium / low), indipendente dal badge stesso.
NextPDF supporta i moduli CSS elencati di seguito ai livelli indicati. Le righe Verified dispongono di una suite di fixture automatizzata dedicata o di uno shard sostanziale del corpus WPT che attesta il comportamento di NextPDF, e superano i test in modo deterministico con il profilo di riproducibilità structural. Le righe Claimed presentano evidenza di implementazione in src/Html/, ma non hanno ancora una fixture dedicata; ciascuna è tracciata da una issue di backfill nella issue di tracciamento #614. Le righe Not supported documentano confini di ambito espliciti per il target PDF statico.
In questa revisione non esiste alcuna baseline PDF golden per singolo modulo CSS; nessuna riga dichiara riproducibilità a livello di byte. Il contratto di verifica vieta le righe vuote: quando il supporto non può essere determinato, la riga è unknown.
| Stato | Moduli | 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 |
| Totale | 167 | 70 / 44 / 53 |
Il blocco summary della revisione strutturale era internamente incoerente: dichiarava un totale di 148 (18 verified / 11 partial / 11 claimed / 53 not-supported / 55 unknown), ma il file conteneva in realtà 167 righe di modulo le cui etichette sommavano a 34 verified / 13 partial / 13 claimed / 68 not-supported / 39 unknown. Questo audit ha corretto il totale al valore reale di 167 e ha rivalutato ogni riga rispetto alle evidenze su disco: Verified è sceso da un 34 dichiarato a un 12 comprovato. Tale riduzione è il risultato corretto di un audit onesto, non una regressione. Il delta before/after completo si trova nel file sidecar interno al repository _css-matrix-truth-report.md.
La revisione strutturale aveva etichettato erroneamente tre funzionalità attive come rimosse o not-supported. ADR-027 e ADR-028 hanno rimosso dall’enum ExperimentalFeature solo i marcatori opt-in; le funzionalità stesse restano LIVE e attive per impostazione predefinita:
- Subgrid (
css_grid_2) — LIVE; CssFeatureFlags::$layoutSubgrid attivo per impostazione predefinita. Era stato erroneamente etichettato come “subgrid rimosso definitivamente in v9.0.0”.
- Query
@container (css_contain_2) — il dispatch runtime è rimasto esplicitamente invariato con ADR-028; l’opt-out tramite flag è preservato. Era stato erroneamente etichettato come “rimosso definitivamente in v9.0.0”.
writing-mode: vertical-lr (css_writing_modes_3) — attivo per impostazione predefinita e Stable da v7.0.0; ADR-027 ha promosso solo l’handshake di deprecazione. Era stato erroneamente etichettato come “deprecato/rimosso in v8.0.0”.
Il set machine-readable delle righe per modulo risiede nel file interno al repository css-support-matrix-data.yaml ed è la fonte di verità. Questa pagina è la proiezione human-readable, raggruppata per categoria. I componenti Astro usano direttamente il file YAML durante la build della documentazione.
| Modulo W3C | Livello | W3C | Stato | 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 |
| Modulo W3C | Livello | W3C | Stato | 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 |
| Modulo W3C | Livello | W3C | Stato | 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 |
| Modulo W3C | Livello | W3C | Stato | 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 |
| Modulo W3C | Livello | W3C | Stato | 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 |
| Modulo W3C | Livello | W3C | Stato | 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 |
| Modulo W3C | Livello | W3C | Stato | 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 |
| Modulo W3C | Livello | W3C | Stato | 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 |
| Modulo W3C | Livello | W3C | Stato | Confidence |
|---|
CSS Table (css_tables_3) | 3 | WD | Verified | high |
| Modulo W3C | Livello | W3C | Stato | 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 |
| Modulo W3C | Livello | W3C | Stato | 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 |
| Modulo W3C | Livello | W3C | Stato | 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 |
| Modulo W3C | Livello | W3C | Stato | 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 |
Questi moduli W3C compaiono nel corpus, ma sono al di fuori dell’ambito della pipeline di rendering CSS. Sono collegati dalle pagine delle funzionalità corrispondenti, ove applicabile.
| Modulo W3C | W3C | Stato | Confidence | Dove |
|---|
W3C SVG 1.1 (svg_1_1) | REC | Claimed | low | Sottoinsieme di paint SVG inline in Renderer/PaintCommand/; nessun fixture per la matrice CSS. |
W3C SVG 2.0 (svg_2_0) | CR | Unknown | low | Parte della pipeline Premium; nessuna evidenza nel core. |
W3C PNG 3rd Edition (png_3) | WD | Claimed | low | Decodifica PNG nel modulo Graphics/ (al di fuori di HTML/CSS). |
W3C WOFF 1.0 (woff_1_0) | REC | Claimed | low | WOFF tramite lo stack Font; nessun fixture per la matrice CSS. |
W3C WOFF 2.0 (woff_2_0) | REC | Claimed | low | WOFF2 tramite lo stack Font; nessun fixture per la matrice CSS. |
W3C WCAG 2.2 (wcag_2_2) | REC | Verified | medium | src/Html/Aam/, tests/Unit/Accessibility/HtmlAam/ (4 file) — PDF/UA-2. |
W3C WAI-ARIA 1.2 (wai_aria_1_2) | REC | Verified | medium | tests/Unit/Accessibility/HtmlAam/ (4 file). |
W3C ARIA Bundle (w3c_aria_bundle) | REC | Claimed | low | Bundle di linee guida; l’evidenza concreta è la riga WAI-ARIA. |
W3C AAM Bundle (w3c_aam_bundle) | NOTE | Claimed | low | Puntatore al bundle; l’evidenza è nelle righe WAI-ARIA/WCAG. |
W3C ATAG 2.0 (atag_2_0) | REC | Not supported | high | Accessibilità degli strumenti di authoring; non applicabile. |
W3C XSL 1.1 (xsl_1_1) | REC | Not supported | high | Modello di formattazione parallelo XSL-FO; non implementato. |
W3C XSD 1.1 Part 1 (xsd_1_1_part1) | REC | Not supported | high | Schema XML; non applicabile. |
W3C XSLT 3.0 (xslt_3_0) | REC | Not supported | high | Linguaggio di trasformazione; non applicabile. |
Resize Observer (resize_observer_1) | CR | Not supported | high | API runtime del browser. |
Perché una riga passi da claimed a → verified:
- Esiste una suite di fixture dedicata a livello di proprietà in
tests/Unit/Html/<Module>/ (≥3 file) oppure uno shard sostanziale del corpus WPT (≥50 fixture) in tests/Wpt/corpus/ viene promosso in un test con asserzioni.
- Il fixture verifica il comportamento di NextPDF rispetto alla grammatica W3C per le proprietà principali del modulo.
- La fixture supera i test in modo deterministico con un
NextPDF\Testing\ReproducibilityProfile (structural per le fixture con asserzioni; bitwise solo una volta che esistono le baseline PDF golden per il singolo modulo).
- Il valore
nextpdf_status della riga nel file interno al repository css-support-matrix-data.yaml passa a verified con l’aggiornamento di fixture_path, repro_profile e confidence.
Perché una riga passi da unknown a → claimed:
- Una fase di audit conferma l’evidenza di implementazione in
src/Html/ (con il percorso citato in evidence + notes).
- Viene aperta una issue di backfill e collegata in
backfill_issue.