Pular para o conteúdo
getnextpdf.com

Matriz de suporte a CSS

O NextPDF implementa a renderização de Cascading Style Sheets (CSS) com base em especificações publicadas pelo World Wide Web Consortium (W3C). Use esta página para consultar cada módulo CSS do corpus de especificações do NextPDF e o status de suporte auditado quanto à veracidade desse módulo no pipeline de renderização.

Esta revisão vem da auditoria de veracidade da Wave 4 B2 (seção 4.4 do plano). A revisão estrutural anterior usava selos provisórios não verificados. A auditoria reclassificou cada linha com base em evidências reais em disco (src/Html/, tests/, tests/Wpt/corpus/), nos registros de decisão de arquitetura (ADRs) com mudanças incompatíveis v8/v9 e na auditoria interna de cobertura de propriedades CSS. A auditoria priorizou a honestidade em vez da cobertura: quando as evidências apontavam para um selo inferior, o selo era rebaixado.

Quatro selos classificam cada linha sob o contrato de verificação:

  • Verified — Implementação em src/Html/ mais uma fixture automatizada dedicada e substantiva: ou um conjunto de três ou mais arquivos no nível de propriedade em tests/Unit/Html/<Module>/, ou um shard do corpus de Web Platform Tests (WPT) com cinquenta ou mais fixtures em tests/Wpt/corpus/. Ainda não há nenhuma baseline de PDF (Portable Document Format) de referência por módulo CSS conectada; portanto, as linhas verificadas usam o perfil de reprodutibilidade structural (equivalência de asserções do PHPUnit), nunca bitwise.
  • Claimed — O comportamento do módulo está implementado em src/Html/ (caminho de origem citado), mas a fixture dedicada é tênue, compartilhada ou inexistente. Cada linha reivindicada com uma implementação concreta tem uma issue de backfill.
  • Not supported — O pipeline de renderização de PDF estático não inclui este módulo: APIs runtime/browser-only, runtimes de scrolling/animation e trabalhos descontinuados pelo W3C. A linha registra o motivo.
  • Unknown — O módulo está no corpus, mas a auditoria não encontrou evidência de implementação nem de fixture. A auditoria nunca elevou um palpite para melhorar a contagem.

O selo partial da revisão estrutural foi aposentado: cada linha antes parcial foi reclassificada como claimed (implementação presente, sem fixture dedicada) ou verified.

SeloSignificado
verifiedsrc/Html/ + conjunto de fixtures dedicado (≥3 arquivos) ou shard WPT (≥50 fixtures); passa de forma determinística sob o perfil structural.
claimedEvidência de implementação em src/Html/, sem fixture dedicada. Issue de backfill rastreada.
not-supportedExplicitamente excluído do escopo de PDF estático. Motivo registrado.
unknownSem evidência determinável. Sem promoção por palpite.

A coluna Confidence é um indicador honesto e não binário da evidência por trás do selo declarado (high / medium / low). Ela é independente do próprio selo.

O NextPDF oferece suporte aos módulos CSS listados abaixo nos níveis indicados. As linhas Verified têm um conjunto de fixtures automatizado dedicado ou um shard substantivo do corpus WPT que verifica o comportamento do NextPDF e passa de forma determinística sob o perfil de reprodutibilidade structural. As linhas Claimed têm evidência de implementação em src/Html/, mas ainda não têm fixture dedicada; cada linha é rastreada por uma issue de backfill na issue de rastreamento #614. As linhas Not supported documentam limites de escopo explícitos para o alvo de PDF estático.

Nenhuma linha reivindica reprodutibilidade em nível de byte porque esta revisão não tem baseline PDF de referência por módulo CSS. O contrato de verificação proíbe linhas vazias: quando o suporte não pode ser determinado, a linha é unknown.

StatusMódulosConfiança (high / medium / low)
Verified128 / 4 / 0
Claimed490 / 35 / 14
Not supported6762 / 5 / 0
Unknown390 / 0 / 39
Total16770 / 44 / 53

O bloco summary da revisão estrutural era internamente inconsistente: declarava 148 no total (18 verified / 11 partial / 11 claimed / 53 not-supported / 55 unknown), enquanto o arquivo continha 167 linhas de módulo cujos rótulos somavam 34 verified / 13 partial / 13 claimed / 68 not-supported / 39 unknown. Esta auditoria corrigiu o total para os 167 reais e reclassificou cada linha com base em evidências em disco: o número de Verified caiu de 34 reivindicados para 12 comprovados. Essa redução é o resultado correto de uma auditoria honesta, não uma regressão. O delta completo before/after está no arquivo auxiliar _css-matrix-truth-report.md no repositório.

A revisão estrutural rotulou incorretamente três capacidades ativas como removidas ou não suportadas. O ADR-027 e o ADR-028 removeram do enum ExperimentalFeature apenas os marcadores de opt-in; as capacidades permanecem ATIVAS por padrão:

  • Subgrid (css_grid_2) — ATIVO; CssFeatureFlags::$layoutSubgrid ligado por padrão. Foi rotulado incorretamente como “subgrid hard-removed v9.0.0”.
  • Consultas @container (css_contain_2) — despacho em tempo de execução explicitamente mantido pelo ADR-028; opt-out via flag preservado. Foi rotulado incorretamente como “hard-removed v9.0.0”.
  • writing-mode: vertical-lr (css_writing_modes_3) — Stable por padrão desde a v7.0.0; o ADR-027 graduou apenas o handshake de descontinuação. Foi rotulado incorretamente como “deprecated/removed v8.0.0”.

O conjunto de linhas por módulo, legível por máquina, fica no arquivo css-support-matrix-data.yaml no repositório, que é a fonte da verdade. Esta página é a projeção legível por pessoas, agrupada por categoria. Os componentes Astro consomem os dados YAML diretamente durante o build da documentação.

Módulo W3CNívelW3CStatusConfiança
CSS Flexible Box Layout (css_flexbox_1)1CRVerifiedhigh
CSS Grid Layout (css_grid_1)1RECVerifiedhigh
CSS Grid Layout — Subgrid (css_grid_2)2CRClaimedmedium
CSS Grid Layout — Masonry (css_grid_3)3EDNot supportedhigh
CSS Display (css_display_3)3CRClaimedmedium
CSS Display (css_display_4)4EDUnknownlow
CSS Positioned Layout (css_position_3)3WDVerifiedhigh
CSS Positioned Layout (css_position_4)4EDUnknownlow
CSS Box Alignment (css_align_3)3WDClaimedmedium
CSS Box Sizing (css_sizing_3)3CRClaimedlow
CSS Box Sizing (css_sizing_4)4EDUnknownlow
CSS Box Model (css_box_3)3WDClaimedmedium
CSS Box Model (css_box_4)4EDUnknownlow
CSS Multi-column Layout (css_multicol_1)1CRClaimedmedium
CSS Multi-column Layout (css_multicol_2)2EDUnknownlow
CSS Fragmentation (css_break_3)3CRVerifiedmedium
CSS Fragmentation (css_break_4)4EDUnknownlow
CSS Containment (css_contain_1)1RECNot supportedmedium
CSS Containment — @container (css_contain_2)2CRClaimedlow
CSS Containment (css_contain_3)3EDNot supportedmedium
CSS Inline Layout (css_inline_3)3WDClaimedmedium
CSS Logical Properties (css_logical_1)1WDClaimedmedium
CSS Page Floats (css_page_floats_3)3EDNot supportedhigh
CSS Pagination Templates (css_page_templates_3)3EDNot supportedhigh
CSS Exclusions (css_exclusions_1)1WDNot supportedhigh
CSS Regions (css_regions_1)1WDNot supportedhigh
CSS Template Layout (css_template_1)1NOTENot supportedhigh
CSS Layout API (css_layout_api_1)1WDNot supportedhigh

Modelo de caixa — planos de fundo, bordas, efeitos

Seção intitulada “Modelo de caixa — planos de fundo, bordas, efeitos”
Módulo W3CNívelW3CStatusConfiança
CSS Backgrounds and Borders (css_backgrounds_3)3CRClaimedmedium
CSS Backgrounds (css_backgrounds_4)4EDUnknownlow
CSS Borders and Box Decorations (css_borders_4)4EDUnknownlow
CSS Gap Decorations (css_gaps_1)1EDUnknownlow
CSS Masking (css_masking_1)1CRNot supportedmedium
CSS Shadow Module (css_shadow_1)1EDClaimedmedium
CSS Shapes (css_shapes_1)1CRNot supportedhigh
CSS Shapes (css_shapes_2)2EDNot supportedhigh
Filter Effects (filter_effects_1)1WDNot supportedhigh
Filter Effects (filter_effects_2)2EDNot supportedhigh
Compositing and Blending (compositing_1)1CRClaimedmedium
Compositing (compositing_2)2EDUnknownlow
CSS Fill and Stroke (fill_stroke_3)3EDUnknownlow
Geometry Interfaces (geometry_1)1CRNot supportedhigh
DOMMatrix (matrix)1NOTENot supportedhigh
Motion Path (motion_1)1WDNot supportedhigh
Módulo W3CNívelW3CStatusConfiança
CSS Fonts (css_fonts_3)3RECVerifiedmedium
CSS Fonts (css_fonts_4)4CRVerifiedhigh
CSS Fonts (css_fonts_5)5EDUnknownlow
CSS Font Loading (css_font_loading_3)3WDNot supportedhigh
CSS Text (css_text_3)3CRClaimedmedium
CSS Text (css_text_4)4EDClaimedmedium
CSS Text Decoration (css_text_decor_3)3CRClaimedmedium
CSS Text Decoration (css_text_decor_4)4EDUnknownlow
CSS Ruby (css_ruby_1)1WDNot supportedhigh
CSS Writing Modes (css_writing_modes_3)3RECClaimedmedium
CSS Writing Modes (css_writing_modes_4)4EDUnknownlow
CSS Speech (css_speech_1)1CRNot supportedhigh
CSS Mobile Text Size Adjustment (css_size_adjust_1)1EDNot supportedhigh
Módulo W3CNívelW3CStatusConfiança
CSS Color (css_color_3)3RECClaimedmedium
CSS Color (css_color_4)4CRClaimedmedium
CSS Color (css_color_5)5WDUnknownlow
CSS Color (css_color_6)6EDUnknownlow
CSS Color Adjustment (css_color_adjust_1)1CRNot supportedhigh
CSS Color HDR (css_color_hdr_1)1EDNot supportedhigh
CSS Images (css_images_3)3CRClaimedmedium
CSS Images (css_images_4)4EDUnknownlow
CSS Images (css_images_5)5EDUnknownlow
CSS Image Animation (css_image_animation_1)1EDNot supportedhigh
Módulo W3CNívelW3CStatusConfiança
CSS Selectors (selectors_3)3RECClaimedmedium
CSS Selectors (selectors_4)4WDClaimedmedium
CSS Selectors (selectors_5)5EDUnknownlow
CSS Non-element Selectors (selectors_nonelement_1)1WDNot supportedhigh
CSS Pseudo-Elements (css_pseudo_4)4WDClaimedmedium
CSS Cascading and Inheritance (css_cascade_3)3RECVerifiedhigh
CSS Cascading (css_cascade_4)4CRVerifiedhigh
CSS Cascading (css_cascade_5)5CRVerifiedhigh
CSS Cascading (css_cascade_6)6WDUnknownlow
CSS Values and Units (css_values_3)3RECClaimedmedium
CSS Values and Units (css_values_4)4CRClaimedmedium
CSS Values and Units (css_values_5)5EDUnknownlow
CSS Custom Properties (css_variables_1)1CRClaimedmedium
CSS Custom Properties (css_variables_2)2EDUnknownlow
CSS Conditional Rules (css_conditional_3)3CRClaimedmedium
CSS Conditional Rules (css_conditional_4)4EDUnknownlow
CSS Conditional Rules (css_conditional_5)5EDUnknownlow
CSS Conditional Values (css_conditional_values_1)1EDUnknownlow
CSS Namespaces (css_namespaces_3)3RECClaimedlow
CSS Style Attributes (css_style_attr_1)1CRClaimedmedium
CSS Syntax (css_syntax_3)3CRClaimedmedium
CSS Nesting (css_nesting_1)1CRClaimedmedium
CSS Environment Variables (css_env_1)1EDNot supportedmedium
CSS Custom Functions and Mixins (css_mixins_1)1EDUnknownlow
CSS Extensions (css_extensions_1)1NOTEUnknownlow
Módulo W3CNívelW3CStatusConfiança
CSS Lists and Counters (css_lists_3)3WDClaimedmedium
CSS Counter Styles (css_counter_styles_3)3CRClaimedmedium
CSS Generated Content (css_content_3)3WDClaimedmedium
CSS Generated Content for Paged Media (css_gcpm_3)3WDClaimedmedium
CSS Generated Content for Paged Media (css_gcpm_4)4EDUnknownlow
Módulo W3CNívelW3CStatusConfiança
CSS Paged Media (css_page_3)3WDClaimedmedium
CSS Paged Media (css_page_4)4NOTEUnknownlow
CSS Print Profile (css_print)1NOTEClaimedlow
CSS Presentation Levels (css_preslev_1)1NOTENot supportedhigh
Módulo W3CNívelW3CStatusConfiança
CSS Overflow (css_overflow_3)3WDClaimedlow
CSS Overflow (css_overflow_4)4EDUnknownlow
CSS Overflow (css_overflow_5)5EDUnknownlow
CSS Overscroll Behavior (css_overscroll_1)1CRNot supportedhigh
CSS Scroll Anchoring (css_scroll_anchoring_1)1WDNot supportedhigh
CSS Scroll Snap (css_scroll_snap_1)1RECNot supportedhigh
CSS Scroll Snap (css_scroll_snap_2)2WDNot supportedhigh
CSS Scrollbars Styling (css_scrollbars_1)1CRNot supportedhigh
CSS Basic User Interface (css_ui_3)3RECNot supportedmedium
CSS Basic User Interface (css_ui_4)4WDNot supportedhigh
CSS Form Control Styling (css_forms_1)1EDNot supportedhigh
CSS View Transitions (css_view_transitions_1)1WDNot supportedhigh
CSS View Transitions (css_view_transitions_2)2EDNot supportedhigh
CSS Spatial Navigation (css_nav_1)1NOTENot supportedhigh
CSS Route Matching (css_navigation_1)1EDNot supportedhigh
Módulo W3CNívelW3CStatusConfiança
CSS Table (css_tables_3)3WDVerifiedhigh
Módulo W3CNívelW3CStatusConfiança
CSS Transforms (css_transforms_1)1CRClaimedmedium
CSS Transforms (css_transforms_2)2EDUnknownlow
CSS Animations (css_animations_1)1WDNot supportedhigh
CSS Animations (css_animations_2)2EDNot supportedhigh
CSS Transitions (css_transitions_1)1WDNot supportedhigh
CSS Transitions (css_transitions_2)2EDNot supportedhigh
CSS Easing Functions (css_easing_1)1CRNot supportedhigh
CSS Easing Functions (css_easing_2)2EDNot supportedhigh
Web Animations (web_animations_1)1WDNot supportedhigh
Web Animations (web_animations_2)2EDNot supportedhigh
Web Animations CSS Integration (web_animations_css_integration)1EDNot supportedhigh
Animation Triggers (animation_triggers)1EDNot supportedhigh
Pointer-driven Animations (pointer_animations_1)1EDNot supportedhigh
Scroll-driven Animations (scroll_animations_1)1EDNot supportedhigh
CSS Animation Worklet (css_animation_worklet)1EDNot supportedhigh
Módulo W3CNívelW3CStatusConfiança
CSS Anchor Positioning (css_anchor_position_1)1WDUnknownlow
CSS Anchor Positioning (css_anchor_position_2)2EDUnknownlow
CSS Highlight API (css_highlight_api_1)1WDNot supportedhigh
CSS Properties and Values API (css_properties_values_api_1)1CRNot supportedhigh
CSS Painting API (css_paint_api_1)1WDNot supportedhigh
CSS Typed OM (css_typed_om_1)1WDNot supportedhigh
CSSOM (cssom_1)1WDNot supportedhigh
CSSOM View (cssom_view_1)1WDNot supportedhigh
CSS Will Change (css_will_change_1)1CRNot supportedhigh
CSS Linked Parameters (css_link_params_1)1EDUnknownlow
CSS Line Grid (css_line_grid_1)1NOTEUnknownlow
CSS Rhythmic Sizing (css_rhythm_1)1EDUnknownlow
CSS Round Display (css_round_display_1)1EDNot supportedhigh
CSS Shaders (css_shaders_1)1NOTENot supportedhigh
CSS Viewport (css_viewport_1)1NOTENot supportedhigh
Módulo W3CNívelW3CStatusConfiança
Media Queries (mediaqueries_3)3RECClaimedmedium
Media Queries (mediaqueries_4)4CRClaimedmedium
Media Queries (mediaqueries_5)5WDUnknownlow
Módulo W3CNívelW3CStatusConfiança
CSS Level 2 (css_2_1)2.1RECClaimedlow
CSS Level 2.2 (css_2_2)2.2NOTEClaimedlow
CSS Snapshot 2026 (css_snapshot_2026)snapshotNOTEClaimedlow

Estes módulos do W3C aparecem no corpus, mas estão fora do pipeline de renderização CSS. Quando aplicável, as páginas de recurso correspondentes apontam para eles.

Módulo W3CW3CStatusConfiançaOnde
W3C SVG 1.1 (svg_1_1)RECClaimedlowSubconjunto de pintura de SVG inline em Renderer/PaintCommand/; sem fixture da matriz CSS.
W3C SVG 2.0 (svg_2_0)CRUnknownlowAssunto do pipeline Premium; sem evidência no core.
W3C PNG 3rd Edition (png_3)WDClaimedlowDecodificação de PNG no módulo Graphics/ (fora de HTML/CSS).
W3C WOFF 1.0 (woff_1_0)RECClaimedlowWOFF via pilha de Font; sem fixture da matriz CSS.
W3C WOFF 2.0 (woff_2_0)RECClaimedlowWOFF2 via pilha de Font; sem fixture da matriz CSS.
W3C WCAG 2.2 (wcag_2_2)RECVerifiedmediumsrc/Html/Aam/, tests/Unit/Accessibility/HtmlAam/ (4 arquivos) — PDF/UA-2.
W3C WAI-ARIA 1.2 (wai_aria_1_2)RECVerifiedmediumtests/Unit/Accessibility/HtmlAam/ (4 arquivos).
W3C ARIA Bundle (w3c_aria_bundle)RECClaimedlowPacote de orientação; a evidência concreta é a linha WAI-ARIA.
W3C AAM Bundle (w3c_aam_bundle)NOTEClaimedlowPonteiro de pacote; a evidência são as linhas WAI-ARIA/WCAG.
W3C ATAG 2.0 (atag_2_0)RECNot supportedhighAcessibilidade de ferramenta de autoria; não aplicável.
W3C XSL 1.1 (xsl_1_1)RECNot supportedhighModelo de formatação paralelo XSL-FO; não implementado.
W3C XSD 1.1 Part 1 (xsd_1_1_part1)RECNot supportedhighEsquema XML; não aplicável.
W3C XSLT 3.0 (xslt_3_0)RECNot supportedhighLinguagem de transformação; não aplicável.
Resize Observer (resize_observer_1)CRNot supportedhighAPI de runtime do navegador.

Para uma linha evoluir de claimedverified:

  1. Um conjunto de fixtures dedicado no nível de propriedade reside em tests/Unit/Html/<Module>/ (≥3 arquivos) ou um shard substantivo do corpus WPT (≥50 fixtures) em tests/Wpt/corpus/ e promovido a um teste que faz asserções.
  2. A fixture verifica o comportamento do NextPDF em relação à gramática do W3C para as propriedades primárias do módulo.
  3. A fixture passa de forma determinística sob um NextPDF\Testing\ReproducibilityProfile (structural para fixtures de asserção; bitwise somente quando existirem baselines PDF de referência por módulo).
  4. O nextpdf_status da linha no arquivo css-support-matrix-data.yaml no repositório muda para verified, com fixture_path, repro_profile e confidence atualizados.

Para uma linha evoluir de unknownclaimed:

  1. Uma passagem de auditoria confirma a evidência de implementação em src/Html/ (cite o caminho em evidence + notes).
  2. Uma issue de backfill é aberta e vinculada em backfill_issue.
  • HTML: subsistema de renderização de HTML+CSS em PDF — o motor por trás dessas capacidades, incluindo as notas de comportamento de tabelas, flex, gradientes e paginação.
  • Recursos CSS não suportados e soluções alternativas — os limites específicos por comportamento.
  • Renderizar HTML árabe da direita para a esquerda — o suporte da direita para a esquerda e bidirecional e seus limites atuais.
  • Pagine uma tabela HTML grande em várias páginas — paginação de tabelas entre páginas.
  • Relatório de veracidade da matriz CSS (_css-matrix-truth-report.md, no repositório) — deltas before/after da auditoria, distribuição de confiança, registro de deflação.
  • Auditoria de cobertura de propriedades CSS (architecture/css-property-coverage-audit.md, no repositório) — auditoria interna de quatro estados por propriedade (Policy/Parsed/Applied/Rendered).
  • ADR-027 v8.0.0 BREAKING (architecture/adr/ADR-027-v8-breaking.md, no repositório) — graduação do handshake de descontinuação de vertical-lr (capacidade preservada).
  • ADR-028 v9.0.0 BREAKING (architecture/adr/ADR-028-v9-breaking.md, no repositório) — remoção do marcador de enum de Grid/Subgrid/@container (capacidades preservadas).
  • Issue de rastreamento de backfill: https://github.com/nextpdf-labs/nextpdf/issues/614