Ir al contenido
getnextpdf.com

Matriz de compatibilidad de CSS

NextPDF implementa el renderizado de CSS conforme a las especificaciones publicadas por el W3C. Esta página enumera cada módulo de CSS del corpus de especificaciones de NextPDF y registra el estado de compatibilidad auditado por veracidad de cada módulo en el pipeline de renderizado.

Esta revisión es el resultado de la auditoría de veracidad de la Wave 4 B2 (sección 4.4 del plan). Las insignias de la revisión estructural anterior eran marcadores de posición sin verificar. Cada fila se reclasificó a partir de evidencia real en disco (src/Html/, tests/, tests/Wpt/corpus/), los ADR de cambios incompatibles v8/v9 y la auditoría interna de cobertura de propiedades de CSS. Se priorizó la honestidad sobre la cobertura: cuando la auditoría exigió rebajar una insignia, se rebajó.

Cuatro insignias clasifican cada fila según el contrato de verificación:

  • Verificado — implementación en src/Html/ más un fixture automatizado, dedicado y sustancial: una suite de nivel de propiedad con tres o más archivos en tests/Unit/Html/<Module>/, o un fragmento de corpus de Web Platform Tests con cincuenta o más fixtures en tests/Wpt/corpus/. Todavía no hay una línea base de PDF de referencia conectada por módulo de CSS, por lo que las filas verificadas usan el perfil de reproducibilidad structural (equivalencia de aserciones de PHPUnit), nunca bitwise.
  • Declarado — el comportamiento del módulo está implementado en src/Html/ (se cita la ruta de origen), pero el fixture dedicado es escaso, compartido o inexistente. Cada fila declarada con una implementación concreta tiene una incidencia de relleno asociada.
  • No compatible — fuera de alcance para el pipeline de renderizado de PDF estático. Incluye API exclusivas del tiempo de ejecución o del navegador, motores en tiempo de ejecución para scrolling/animation y trabajo descontinuado por el W3C. El motivo queda registrado.
  • Desconocido — el módulo está en el corpus, pero no se pudo determinar evidencia de implementación ni de fixture. La auditoría nunca infirió al alza para mejorar el recuento.

La insignia partial de la revisión estructural se retiró: cada fila marcada anteriormente como partial se reclasificó como claimed (implementación presente, sin fixture dedicado) o verified.

InsigniaSignificado
verifiedsrc/Html/ + suite de fixtures dedicada (≥3 archivos) o fragmento de WPT (≥50 fixtures); pasa de forma determinista bajo el perfil structural.
claimedEvidencia de implementación en src/Html/, sin fixture dedicado. Incidencia de relleno con seguimiento.
not-supportedExcluido explícitamente del alcance del PDF estático. Motivo registrado.
unknownSin evidencia determinable. No se infirió al alza.

La columna Confianza es una señal honesta y no binaria de qué tan sólida es la evidencia para la insignia indicada (high / medium / low), independiente de la insignia en sí.

NextPDF es compatible con los módulos de CSS que se enumeran a continuación en los niveles indicados. Las filas marcadas como Verificado cuentan con una suite de fixtures automatizada dedicada o con un fragmento de corpus de WPT sustancial que valida el comportamiento de NextPDF, y pasan de forma determinista bajo el perfil de reproducibilidad structural. Las filas marcadas como Declarado tienen evidencia de implementación en src/Html/, pero todavía no tienen fixture dedicado; cada una recibe seguimiento mediante una incidencia de relleno en la incidencia de seguimiento #614. Las filas marcadas como No compatible documentan límites de alcance explícitos para el destino de PDF estático.

No hay una línea base de PDF de referencia por módulo de CSS en esta revisión; ninguna fila declara reproducibilidad a nivel de byte. Las filas vacías están prohibidas por el contrato de verificación: cuando no se puede determinar la compatibilidad, la fila es unknown.

EstadoMódulosConfianza (alto / medio / bajo)
Verificado128 / 4 / 0
Declarado490 / 35 / 14
No compatible6762 / 5 / 0
Desconocido390 / 0 / 39
Total16770 / 44 / 53

El bloque summary de la revisión estructural presentaba inconsistencias internas: declaraba 148 en total (18 verified / 11 partial / 11 claimed / 53 not-supported / 55 unknown), pero el archivo en realidad contenía 167 filas de módulos cuyas propias etiquetas sumaban 34 verified / 13 partial / 13 claimed / 68 not-supported / 39 unknown. Esta auditoría corrigió el total al valor real de 167 y reclasificó cada fila frente a la evidencia en disco: la categoría Verificado pasó de 34 declarados a 12 fundamentados. Esa reducción es el resultado correcto de una auditoría honesta, no una regresión. El delta completo before/after está en el archivo complementario _css-matrix-truth-report.md del repositorio.

La revisión estructural etiquetó incorrectamente tres capacidades activas como eliminadas o no compatibles. El ADR-027 y el ADR-028 eliminaron del enum ExperimentalFeature únicamente los marcadores de adhesión; las capacidades en sí siguen ACTIVAS de forma predeterminada:

  • Subgrid (css_grid_2) — ACTIVO; CssFeatureFlags::$layoutSubgrid activado de forma predeterminada. Se había etiquetado incorrectamente como «subgrid eliminado a la fuerza en v9.0.0».
  • Consultas @container (css_contain_2) — el despacho en tiempo de ejecución queda explícitamente sin cambios por el ADR-028; se preserva la exclusión por marca. Se había etiquetado incorrectamente como «eliminado a la fuerza en v9.0.0».
  • writing-mode: vertical-lr (css_writing_modes_3) — estable y activo de forma predeterminada desde v7.0.0; el ADR-027 solo graduó el protocolo de obsolescencia. Se había etiquetado incorrectamente como «obsoleto/eliminado en v8.0.0».

El conjunto legible por máquina de filas por módulo reside en el archivo css-support-matrix-data.yaml del repositorio y es la fuente de verdad. Esta página es la proyección legible para humanos, agrupada por categoría. Los componentes de Astro consumen el YAML directamente durante la compilación de la documentación.

Módulo W3CNivelW3CEstadoConfianza
CSS Flexible Box Layout (css_flexbox_1)1CRVerificadoalto
CSS Grid Layout (css_grid_1)1RECVerificadoalto
CSS Grid Layout — Subgrid (css_grid_2)2CRDeclaradomedio
CSS Grid Layout — Masonry (css_grid_3)3EDNo compatiblealto
CSS Display (css_display_3)3CRDeclaradomedio
CSS Display (css_display_4)4EDDesconocidobajo
CSS Positioned Layout (css_position_3)3WDVerificadoalto
CSS Positioned Layout (css_position_4)4EDDesconocidobajo
CSS Box Alignment (css_align_3)3WDDeclaradomedio
CSS Box Sizing (css_sizing_3)3CRDeclaradobajo
CSS Box Sizing (css_sizing_4)4EDDesconocidobajo
CSS Box Model (css_box_3)3WDDeclaradomedio
CSS Box Model (css_box_4)4EDDesconocidobajo
CSS Multi-column Layout (css_multicol_1)1CRDeclaradomedio
CSS Multi-column Layout (css_multicol_2)2EDDesconocidobajo
CSS Fragmentation (css_break_3)3CRVerificadomedio
CSS Fragmentation (css_break_4)4EDDesconocidobajo
CSS Containment (css_contain_1)1RECNo compatiblemedio
CSS Containment — @container (css_contain_2)2CRDeclaradobajo
CSS Containment (css_contain_3)3EDNo compatiblemedio
CSS Inline Layout (css_inline_3)3WDDeclaradomedio
CSS Logical Properties (css_logical_1)1WDDeclaradomedio
CSS Page Floats (css_page_floats_3)3EDNo compatiblealto
CSS Pagination Templates (css_page_templates_3)3EDNo compatiblealto
CSS Exclusions (css_exclusions_1)1WDNo compatiblealto
CSS Regions (css_regions_1)1WDNo compatiblealto
CSS Template Layout (css_template_1)1NOTENo compatiblealto
CSS Layout API (css_layout_api_1)1WDNo compatiblealto
Módulo W3CNivelW3CEstadoConfianza
CSS Backgrounds and Borders (css_backgrounds_3)3CRDeclaradomedio
CSS Backgrounds (css_backgrounds_4)4EDDesconocidobajo
CSS Borders and Box Decorations (css_borders_4)4EDDesconocidobajo
CSS Gap Decorations (css_gaps_1)1EDDesconocidobajo
CSS Masking (css_masking_1)1CRNo compatiblemedio
CSS Shadow Module (css_shadow_1)1EDDeclaradomedio
CSS Shapes (css_shapes_1)1CRNo compatiblealto
CSS Shapes (css_shapes_2)2EDNo compatiblealto
Filter Effects (filter_effects_1)1WDNo compatiblealto
Filter Effects (filter_effects_2)2EDNo compatiblealto
Compositing and Blending (compositing_1)1CRDeclaradomedio
Compositing (compositing_2)2EDDesconocidobajo
CSS Fill and Stroke (fill_stroke_3)3EDDesconocidobajo
Geometry Interfaces (geometry_1)1CRNo compatiblealto
DOMMatrix (matrix)1NOTENo compatiblealto
Motion Path (motion_1)1WDNo compatiblealto
Módulo W3CNivelW3CEstadoConfianza
CSS Fonts (css_fonts_3)3RECVerificadomedio
CSS Fonts (css_fonts_4)4CRVerificadoalto
CSS Fonts (css_fonts_5)5EDDesconocidobajo
CSS Font Loading (css_font_loading_3)3WDNo compatiblealto
CSS Text (css_text_3)3CRDeclaradomedio
CSS Text (css_text_4)4EDDeclaradomedio
CSS Text Decoration (css_text_decor_3)3CRDeclaradomedio
CSS Text Decoration (css_text_decor_4)4EDDesconocidobajo
CSS Ruby (css_ruby_1)1WDNo compatiblealto
CSS Writing Modes (css_writing_modes_3)3RECDeclaradomedio
CSS Writing Modes (css_writing_modes_4)4EDDesconocidobajo
CSS Speech (css_speech_1)1CRNo compatiblealto
CSS Mobile Text Size Adjustment (css_size_adjust_1)1EDNo compatiblealto
Módulo W3CNivelW3CEstadoConfianza
CSS Color (css_color_3)3RECDeclaradomedio
CSS Color (css_color_4)4CRDeclaradomedio
CSS Color (css_color_5)5WDDesconocidobajo
CSS Color (css_color_6)6EDDesconocidobajo
CSS Color Adjustment (css_color_adjust_1)1CRNo compatiblealto
CSS Color HDR (css_color_hdr_1)1EDNo compatiblealto
CSS Images (css_images_3)3CRDeclaradomedio
CSS Images (css_images_4)4EDDesconocidobajo
CSS Images (css_images_5)5EDDesconocidobajo
CSS Image Animation (css_image_animation_1)1EDNo compatiblealto
Módulo W3CNivelW3CEstadoConfianza
CSS Selectors (selectors_3)3RECDeclaradomedio
CSS Selectors (selectors_4)4WDDeclaradomedio
CSS Selectors (selectors_5)5EDDesconocidobajo
CSS Non-element Selectors (selectors_nonelement_1)1WDNo compatiblealto
CSS Pseudo-Elements (css_pseudo_4)4WDDeclaradomedio
CSS Cascading and Inheritance (css_cascade_3)3RECVerificadoalto
CSS Cascading (css_cascade_4)4CRVerificadoalto
CSS Cascading (css_cascade_5)5CRVerificadoalto
CSS Cascading (css_cascade_6)6WDDesconocidobajo
CSS Values and Units (css_values_3)3RECDeclaradomedio
CSS Values and Units (css_values_4)4CRDeclaradomedio
CSS Values and Units (css_values_5)5EDDesconocidobajo
CSS Custom Properties (css_variables_1)1CRDeclaradomedio
CSS Custom Properties (css_variables_2)2EDDesconocidobajo
CSS Conditional Rules (css_conditional_3)3CRDeclaradomedio
CSS Conditional Rules (css_conditional_4)4EDDesconocidobajo
CSS Conditional Rules (css_conditional_5)5EDDesconocidobajo
CSS Conditional Values (css_conditional_values_1)1EDDesconocidobajo
CSS Namespaces (css_namespaces_3)3RECDeclaradobajo
CSS Style Attributes (css_style_attr_1)1CRDeclaradomedio
CSS Syntax (css_syntax_3)3CRDeclaradomedio
CSS Nesting (css_nesting_1)1CRDeclaradomedio
CSS Environment Variables (css_env_1)1EDNo compatiblemedio
CSS Custom Functions and Mixins (css_mixins_1)1EDDesconocidobajo
CSS Extensions (css_extensions_1)1NOTEDesconocidobajo
Módulo W3CNivelW3CEstadoConfianza
CSS Lists and Counters (css_lists_3)3WDDeclaradomedio
CSS Counter Styles (css_counter_styles_3)3CRDeclaradomedio
CSS Generated Content (css_content_3)3WDDeclaradomedio
CSS Generated Content for Paged Media (css_gcpm_3)3WDDeclaradomedio
CSS Generated Content for Paged Media (css_gcpm_4)4EDDesconocidobajo
Módulo W3CNivelW3CEstadoConfianza
CSS Paged Media (css_page_3)3WDDeclaradomedio
CSS Paged Media (css_page_4)4NOTEDesconocidobajo
CSS Print Profile (css_print)1NOTEDeclaradobajo
CSS Presentation Levels (css_preslev_1)1NOTENo compatiblealto
Módulo W3CNivelW3CEstadoConfianza
CSS Overflow (css_overflow_3)3WDDeclaradobajo
CSS Overflow (css_overflow_4)4EDDesconocidobajo
CSS Overflow (css_overflow_5)5EDDesconocidobajo
CSS Overscroll Behavior (css_overscroll_1)1CRNo compatiblealto
CSS Scroll Anchoring (css_scroll_anchoring_1)1WDNo compatiblealto
CSS Scroll Snap (css_scroll_snap_1)1RECNo compatiblealto
CSS Scroll Snap (css_scroll_snap_2)2WDNo compatiblealto
CSS Scrollbars Styling (css_scrollbars_1)1CRNo compatiblealto
CSS Basic User Interface (css_ui_3)3RECNo compatiblemedio
CSS Basic User Interface (css_ui_4)4WDNo compatiblealto
CSS Form Control Styling (css_forms_1)1EDNo compatiblealto
CSS View Transitions (css_view_transitions_1)1WDNo compatiblealto
CSS View Transitions (css_view_transitions_2)2EDNo compatiblealto
CSS Spatial Navigation (css_nav_1)1NOTENo compatiblealto
CSS Route Matching (css_navigation_1)1EDNo compatiblealto
Módulo W3CNivelW3CEstadoConfianza
CSS Table (css_tables_3)3WDVerificadoalto
Módulo W3CNivelW3CEstadoConfianza
CSS Transforms (css_transforms_1)1CRDeclaradomedio
CSS Transforms (css_transforms_2)2EDDesconocidobajo
CSS Animations (css_animations_1)1WDNo compatiblealto
CSS Animations (css_animations_2)2EDNo compatiblealto
CSS Transitions (css_transitions_1)1WDNo compatiblealto
CSS Transitions (css_transitions_2)2EDNo compatiblealto
CSS Easing Functions (css_easing_1)1CRNo compatiblealto
CSS Easing Functions (css_easing_2)2EDNo compatiblealto
Web Animations (web_animations_1)1WDNo compatiblealto
Web Animations (web_animations_2)2EDNo compatiblealto
Web Animations CSS Integration (web_animations_css_integration)1EDNo compatiblealto
Animation Triggers (animation_triggers)1EDNo compatiblealto
Pointer-driven Animations (pointer_animations_1)1EDNo compatiblealto
Scroll-driven Animations (scroll_animations_1)1EDNo compatiblealto
CSS Animation Worklet (css_animation_worklet)1EDNo compatiblealto
Módulo W3CNivelW3CEstadoConfianza
CSS Anchor Positioning (css_anchor_position_1)1WDDesconocidobajo
CSS Anchor Positioning (css_anchor_position_2)2EDDesconocidobajo
CSS Highlight API (css_highlight_api_1)1WDNo compatiblealto
CSS Properties and Values API (css_properties_values_api_1)1CRNo compatiblealto
CSS Painting API (css_paint_api_1)1WDNo compatiblealto
CSS Typed OM (css_typed_om_1)1WDNo compatiblealto
CSSOM (cssom_1)1WDNo compatiblealto
CSSOM View (cssom_view_1)1WDNo compatiblealto
CSS Will Change (css_will_change_1)1CRNo compatiblealto
CSS Linked Parameters (css_link_params_1)1EDDesconocidobajo
CSS Line Grid (css_line_grid_1)1NOTEDesconocidobajo
CSS Rhythmic Sizing (css_rhythm_1)1EDDesconocidobajo
CSS Round Display (css_round_display_1)1EDNo compatiblealto
CSS Shaders (css_shaders_1)1NOTENo compatiblealto
CSS Viewport (css_viewport_1)1NOTENo compatiblealto
Módulo W3CNivelW3CEstadoConfianza
Media Queries (mediaqueries_3)3RECDeclaradomedio
Media Queries (mediaqueries_4)4CRDeclaradomedio
Media Queries (mediaqueries_5)5WDDesconocidobajo
Módulo W3CNivelW3CEstadoConfianza
CSS Level 2 (css_2_1)2.1RECDeclaradobajo
CSS Level 2.2 (css_2_2)2.2NOTEDeclaradobajo
CSS Snapshot 2026 (css_snapshot_2026)snapshotNOTEDeclaradobajo

Estos módulos del W3C aparecen en el corpus, pero quedan fuera del alcance del pipeline de renderizado de CSS. Se enlazan desde las páginas de funcionalidad correspondientes cuando procede.

Módulo W3CW3CEstadoConfianzaDónde
W3C SVG 1.1 (svg_1_1)RECDeclaradobajoSubconjunto de pintado de SVG en línea en Renderer/PaintCommand/; sin fixture de la matriz de CSS.
W3C SVG 2.0 (svg_2_0)CRDesconocidobajoPertenece al pipeline de Premium; sin evidencia en Core.
W3C PNG 3rd Edition (png_3)WDDeclaradobajoDecodificación de PNG en el módulo Graphics/ (fuera de HTML/CSS).
W3C WOFF 1.0 (woff_1_0)RECDeclaradobajoWOFF mediante la pila de fuentes; sin fixture de la matriz de CSS.
W3C WOFF 2.0 (woff_2_0)RECDeclaradobajoWOFF2 mediante la pila de fuentes; sin fixture de la matriz de CSS.
W3C WCAG 2.2 (wcag_2_2)RECVerificadomediosrc/Html/Aam/, tests/Unit/Accessibility/HtmlAam/ (4 archivos) — PDF/UA-2.
W3C WAI-ARIA 1.2 (wai_aria_1_2)RECVerificadomediotests/Unit/Accessibility/HtmlAam/ (4 archivos).
W3C ARIA Bundle (w3c_aria_bundle)RECDeclaradobajoPaquete de orientación; la evidencia concreta es la fila de WAI-ARIA.
W3C AAM Bundle (w3c_aam_bundle)NOTEDeclaradobajoPuntero al paquete; la evidencia son las filas de WAI-ARIA/WCAG.
W3C ATAG 2.0 (atag_2_0)RECNo compatiblealtoAccesibilidad de la herramienta de autoría; no aplicable.
W3C XSL 1.1 (xsl_1_1)RECNo compatiblealtoModelo de formato paralelo XSL-FO; no implementado.
W3C XSD 1.1 Part 1 (xsd_1_1_part1)RECNo compatiblealtoEsquema XML; no aplicable.
W3C XSLT 3.0 (xslt_3_0)RECNo compatiblealtoLenguaje de transformación; no aplicable.
Resize Observer (resize_observer_1)CRNo compatiblealtoAPI de tiempo de ejecución del navegador.

Para que una fila ascienda de claimed a verified:

  1. Una suite de fixtures dedicada a nivel de propiedad reside en tests/Unit/Html/<Module>/ (≥3 archivos) o se promueve un fragmento de corpus de WPT sustancial (≥50 fixtures) en tests/Wpt/corpus/ a una prueba con aserciones.
  2. El fixture valida el comportamiento de NextPDF frente a la gramática del W3C para las propiedades principales del módulo.
  3. El fixture pasa de forma determinista bajo un NextPDF\Testing\ReproducibilityProfile (structural para los fixtures de aserciones; bitwise solo una vez que existan líneas base de PDF de referencia por módulo).
  4. El nextpdf_status de la fila en el archivo css-support-matrix-data.yaml del repositorio cambia a verified con fixture_path, repro_profile y confidence actualizados.

Para que una fila ascienda de unknown a claimed:

  1. Una auditoría confirma evidencia de implementación en src/Html/ (con la ruta citada en evidence + notes).
  2. Se abre una incidencia de relleno y se enlaza en backfill_issue.
  • HTML: subsistema de renderizado de HTML+CSS a PDF — el motor que hay detrás de estas capacidades, incluidas las notas de comportamiento de tablas, flex, degradados y paginación.
  • Funcionalidades CSS no compatibles y soluciones alternativas — los límites concretos por comportamiento.
  • Representar HTML en árabe de derecha a izquierda — la compatibilidad con la escritura de derecha a izquierda y bidireccional y sus límites actuales.
  • Paginar una tabla HTML extensa en varias páginas — paginación de tablas entre páginas.
  • Informe de veracidad de la matriz de CSS (_css-matrix-truth-report.md, en el repositorio) — deltas de auditoría before/after, distribución de confianza, registro de desinflado.
  • Auditoría de cobertura de propiedades de CSS (architecture/css-property-coverage-audit.md, en el repositorio) — auditoría interna de cuatro estados por propiedad (Policy/Parsed/Applied/Rendered).
  • ADR-027 v8.0.0 BREAKING (architecture/adr/ADR-027-v8-breaking.md, en el repositorio) — graduación del protocolo de obsolescencia de vertical-lr (capacidad preservada).
  • ADR-028 v9.0.0 BREAKING (architecture/adr/ADR-028-v9-breaking.md, en el repositorio) — eliminación del marcador del enum Grid/Subgrid/@container (capacidades preservadas).
  • Incidencia de seguimiento del relleno: https://github.com/nextpdf-labs/nextpdf/issues/614