NextPDF 按 W3C 已发布规范实现 CSS 渲染。本页逐项列出 NextPDF 规范语料库中的每个 CSS 模块,并记录各模块在渲染管线中经过真实审计的支持状态。
此修订版是 Wave 4 B2 真实审计(plan 第 4.4 节)的产出。此前结构性修订版中的徽章只是未经验证的 placeholder(占位符)。本页每一列都依据磁盘上的实际证据(src/Html/、tests/、tests/Wpt/corpus/)、v8/v9 破坏性变更 ADR,以及内部 CSS 属性覆盖审计重新评定。诚实优先于覆盖率:审计需要调低某个徽章时,就如实调低。
按照验证契约,每一列以四种徽章分类:
- Verified — 同时具备
src/Html/ 中的实现以及一份实质性的专属自动化 fixture:tests/Unit/Html/<Module>/ 下三个以上文件组成的属性层级测试套件,或 tests/Wpt/corpus/ 下五十个以上 fixture 组成的 Web Platform Tests 语料分片。目前尚未接入逐 CSS 模块的黄金 PDF 基准,因此 verified 列采用 structural 可重现性配置(PHPUnit 断言等价),绝不采用 bitwise。
- Claimed — 模块行为已在
src/Html/ 中实现(并引用源代码路径),但专属 fixture 过于薄弱、与其他模块共用,或根本不存在。每一个有具体实现的 claimed 列都有对应的回补(backfill)issue。
- Not supported — 不属于静态 PDF 渲染管线的范围。运行时 API 或仅限浏览器的 API、scrolling/animation 运行时,以及 W3C 已停止的工作。原因已记录。
- Unknown — 模块存在于语料库中,但无法判定任何实现或测试 fixture 证据。审计绝不为了抬高数字而向上推测。
结构性修订版中的 partial 徽章已废止:原本每一个 partial 列都已重新评定为 claimed(有实现、无专属 fixture)或 verified。
| 徽章 | 意义 |
|---|
verified | src/Html/ + 专属 fixture 套件(≥3 个文件)或 WPT 分片(≥50 个 fixture);在 structural 配置下可确定性通过。 |
claimed | 在 src/Html/ 有实现证据,但无专属 fixture。已创建回补 issue 用于跟踪。 |
not-supported | 明确排除在静态 PDF 范围之外。原因已记录。 |
unknown | 无可判定的证据。未向上推测。 |
本表的 Confidence 栏为对应徽章的证据强度提供诚实、非二元的信号(high / medium / low),与徽章本身独立判断。
NextPDF 按下列各项标注的等级支持这些 CSS 模块。Verified 列具备专属自动化 fixture 套件或实质性的 WPT 语料分片,会断言 NextPDF 的行为,并在 structural 可重现性配置下确定性通过。Claimed 列在 src/Html/ 中有实现证据,但尚无专属 fixture;每一列都由 tracking issue #614 下的回补 issue 跟踪。Not supported 列记录静态 PDF 目标的明确范围边界。
此修订版不包含逐 CSS 模块的黄金 PDF 基准;没有任何一列声明达到字节层级的可重现性。验证契约禁止空白列 — 凡是无法判定支持状态的列,一律标为 unknown。
| 状态 | 模块 | 可信度(高 / 中 / 低) |
|---|
| 已验证 | 12 | 8 / 4 / 0 |
| 已声明 | 49 | 0 / 35 / 14 |
| 不支持 | 67 | 62 / 5 / 0 |
| 未知 | 39 | 0 / 0 / 39 |
| 总计 | 167 | 70 / 44 / 53 |
结构性修订版的 summary 区块本身前后不一致:它声明总数 148(18 verified / 11 partial / 11 claimed / 53 not-supported / 55 unknown),但文件实际包含 167 个模块列,其自身标签合计为 34 verified / 13 partial / 13 claimed / 68 not-supported / 39 unknown。本次审计将总数更正为真实的 167,并依据磁盘上的实际证据重新评定每一列:Verified 从声明的 34 降为有实证支撑的 12。这个下降是诚实审计应有的正确结果,而不是倒退。完整的 before/after 差异记录在 repo 内的 _css-matrix-truth-report.md 附带文件中。
结构性修订版把三项仍可用的能力误标为已移除或不支持。ADR-027 与 ADR-028 仅移除 ExperimentalFeature enum 的可选标记;能力本身仍保持 LIVE 且默认启用:
- Subgrid(
css_grid_2)— LIVE;CssFeatureFlags::$layoutSubgrid 默认打开。曾被误标为“subgrid hard-removed v9.0.0”。
@container 查询(css_contain_2)— ADR-028 明确未更改其运行时派发;旗标退出选项保留。曾被误标为“hard-removed v9.0.0”。
writing-mode: vertical-lr(css_writing_modes_3)— 自 v7.0.0 起即默认打开且保持稳定;ADR-027 只是让弃用握手流程毕业。曾被误标为“deprecated/removed v8.0.0”。
机器可读的逐模块数据列存放在 repo 内的 css-support-matrix-data.yaml,并作为事实来源。本页是面向读者的呈现版本,按类别分组。Astro 组件在文档构建时直接读取该 YAML。
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS 弹性盒布局(css_flexbox_1) | 1 | CR | 已验证 | 高 |
CSS 网格布局(css_grid_1) | 1 | REC | 已验证 | 高 |
CSS 网格布局 — Subgrid(css_grid_2) | 2 | CR | 已声明 | 中 |
CSS 网格布局 — Masonry(css_grid_3) | 3 | ED | 不支持 | 高 |
CSS Display 显示(css_display_3) | 3 | CR | 已声明 | 中 |
CSS Display 显示(css_display_4) | 4 | ED | 未知 | 低 |
CSS 定位布局(css_position_3) | 3 | WD | 已验证 | 高 |
CSS 定位布局(css_position_4) | 4 | ED | 未知 | 低 |
CSS 盒对齐(css_align_3) | 3 | WD | 已声明 | 中 |
CSS 盒尺寸(css_sizing_3) | 3 | CR | 已声明 | 低 |
CSS 盒子尺寸(css_sizing_4) | 4 | ED | 未知 | 低 |
CSS 盒模型(css_box_3) | 3 | WD | 已声明 | 中 |
CSS 盒模型(css_box_4) | 4 | ED | 未知 | 低 |
CSS 多列布局(css_multicol_1) | 1 | CR | 已声明 | 中 |
CSS 多列布局(css_multicol_2) | 2 | ED | 未知 | 低 |
CSS Fragmentation 分段(css_break_3) | 3 | CR | 已验证 | 中 |
CSS 分段(Fragmentation)(css_break_4) | 4 | ED | 未知 | 低 |
CSS Containment 内容约束(css_contain_1) | 1 | REC | 不支持 | 中 |
CSS Containment 内容约束 — @container(css_contain_2) | 2 | CR | 已声明 | 低 |
CSS Containment 内容约束(css_contain_3) | 3 | ED | 不支持 | 中 |
CSS 内联布局(css_inline_3) | 3 | WD | 已声明 | 中 |
CSS 逻辑属性(css_logical_1) | 1 | WD | 已声明 | 中 |
CSS Page Floats 分页浮动(css_page_floats_3) | 3 | ED | 不支持 | 高 |
CSS 分页模板(css_page_templates_3) | 3 | ED | 不支持 | 高 |
CSS Exclusions 排除(css_exclusions_1) | 1 | WD | 不支持 | 高 |
CSS Regions 区域(css_regions_1) | 1 | WD | 不支持 | 高 |
CSS 模板布局(css_template_1) | 1 | NOTE | 不支持 | 高 |
CSS Layout API 布局 API(css_layout_api_1) | 1 | WD | 不支持 | 高 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS 背景与边框(css_backgrounds_3) | 3 | CR | 已声明 | 中 |
CSS 背景(css_backgrounds_4) | 4 | ED | 未知 | 低 |
CSS 边框与盒子装饰(css_borders_4) | 4 | ED | 未知 | 低 |
CSS Gap 装饰(css_gaps_1) | 1 | ED | 未知 | 低 |
CSS 遮罩(Masking)(css_masking_1) | 1 | CR | 不支持 | 中 |
CSS 阴影模块(css_shadow_1) | 1 | ED | 已声明 | 中 |
CSS Shapes 形状(css_shapes_1) | 1 | CR | 不支持 | 高 |
CSS Shapes 形状(css_shapes_2) | 2 | ED | 不支持 | 高 |
Filter Effects 滤镜效果(filter_effects_1) | 1 | WD | 不支持 | 高 |
Filter Effects 滤镜效果(filter_effects_2) | 2 | ED | 不支持 | 高 |
合成与混合(compositing_1) | 1 | CR | 已声明 | 中 |
合成(Compositing)(compositing_2) | 2 | ED | 未知 | 低 |
CSS 填色与描边(fill_stroke_3) | 3 | ED | 未知 | 低 |
Geometry Interfaces 几何接口(geometry_1) | 1 | CR | 不支持 | 高 |
DOMMatrix 矩阵(matrix) | 1 | NOTE | 不支持 | 高 |
Motion Path 运动路径(motion_1) | 1 | WD | 不支持 | 高 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS 字体(css_fonts_3) | 3 | REC | 已验证 | 中 |
CSS 字体(css_fonts_4) | 4 | CR | 已验证 | 高 |
CSS 字体(css_fonts_5) | 5 | ED | 未知 | 低 |
CSS 字体加载(css_font_loading_3) | 3 | WD | 不支持 | 高 |
CSS 文本(css_text_3) | 3 | CR | 已声明 | 中 |
CSS 文本(css_text_4) | 4 | ED | 已声明 | 中 |
CSS 文本装饰(css_text_decor_3) | 3 | CR | 已声明 | 中 |
CSS 文本装饰(css_text_decor_4) | 4 | ED | 未知 | 低 |
CSS Ruby 注音标注(css_ruby_1) | 1 | WD | 不支持 | 高 |
CSS 书写模式(css_writing_modes_3) | 3 | REC | 已声明 | 中 |
CSS 书写模式(css_writing_modes_4) | 4 | ED | 未知 | 低 |
CSS Speech 语音(css_speech_1) | 1 | CR | 不支持 | 高 |
CSS 移动设备文本大小调整(css_size_adjust_1) | 1 | ED | 不支持 | 高 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS 颜色(css_color_3) | 3 | REC | 已声明 | 中 |
CSS 颜色(css_color_4) | 4 | CR | 已声明 | 中 |
CSS 颜色(css_color_5) | 5 | WD | 未知 | 低 |
CSS 颜色(css_color_6) | 6 | ED | 未知 | 低 |
CSS 颜色调整(css_color_adjust_1) | 1 | CR | 不支持 | 高 |
CSS 颜色 HDR(css_color_hdr_1) | 1 | ED | 不支持 | 高 |
CSS 图像(css_images_3) | 3 | CR | 已声明 | 中 |
CSS 图像(css_images_4) | 4 | ED | 未知 | 低 |
CSS 图像(css_images_5) | 5 | ED | 未知 | 低 |
CSS 图像动画(css_image_animation_1) | 1 | ED | 不支持 | 高 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS 选择器(selectors_3) | 3 | REC | 已声明 | 中 |
CSS 选择器(selectors_4) | 4 | WD | 已声明 | 中 |
CSS 选择器(selectors_5) | 5 | ED | 未知 | 低 |
CSS 非元素选择器(selectors_nonelement_1) | 1 | WD | 不支持 | 高 |
CSS 伪元素(css_pseudo_4) | 4 | WD | 已声明 | 中 |
CSS Cascading(层叠与继承)(css_cascade_3) | 3 | REC | 已验证 | 高 |
CSS Cascading 层叠(css_cascade_4) | 4 | CR | 已验证 | 高 |
CSS Cascading 层叠(css_cascade_5) | 5 | CR | 已验证 | 高 |
CSS Cascading 层叠(css_cascade_6) | 6 | WD | 未知 | 低 |
CSS 值与单位(css_values_3) | 3 | REC | 已声明 | 中 |
CSS 值与单位(css_values_4) | 4 | CR | 已声明 | 中 |
CSS 值与单位(css_values_5) | 5 | ED | 未知 | 低 |
CSS 自定义属性(css_variables_1) | 1 | CR | 已声明 | 中 |
CSS 自定义属性(css_variables_2) | 2 | ED | 未知 | 低 |
CSS 条件规则(css_conditional_3) | 3 | CR | 已声明 | 中 |
CSS 条件规则(css_conditional_4) | 4 | ED | 未知 | 低 |
CSS 条件规则(css_conditional_5) | 5 | ED | 未知 | 低 |
CSS 条件值(css_conditional_values_1) | 1 | ED | 未知 | 低 |
CSS Namespaces 命名空间(css_namespaces_3) | 3 | REC | 已声明 | 低 |
CSS Style 属性(css_style_attr_1) | 1 | CR | 已声明 | 中 |
CSS 语法(css_syntax_3) | 3 | CR | 已声明 | 中 |
CSS Nesting 嵌套(css_nesting_1) | 1 | CR | 已声明 | 中 |
CSS 环境变量(css_env_1) | 1 | ED | 不支持 | 中 |
CSS 自定义函数与 Mixin(css_mixins_1) | 1 | ED | 未知 | 低 |
CSS Extensions 扩展(css_extensions_1) | 1 | NOTE | 未知 | 低 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS 列表与计数器(css_lists_3) | 3 | WD | 已声明 | 中 |
CSS 计数器样式(css_counter_styles_3) | 3 | CR | 已声明 | 中 |
CSS 生成内容(css_content_3) | 3 | WD | 已声明 | 中 |
CSS 分页媒体生成内容(css_gcpm_3) | 3 | WD | 已声明 | 中 |
CSS 分页媒体产生内容(css_gcpm_4) | 4 | ED | 未知 | 低 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS 分页媒体(css_page_3) | 3 | WD | 已声明 | 中 |
CSS 分页媒体(css_page_4) | 4 | NOTE | 未知 | 低 |
CSS 打印配置(css_print) | 1 | NOTE | 已声明 | 低 |
CSS 演示文稿层级(css_preslev_1) | 1 | NOTE | 不支持 | 高 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS 溢出(css_overflow_3) | 3 | WD | 已声明 | 低 |
CSS 溢出(css_overflow_4) | 4 | ED | 未知 | 低 |
CSS 溢出(css_overflow_5) | 5 | ED | 未知 | 低 |
CSS Overscroll 行为(css_overscroll_1) | 1 | CR | 不支持 | 高 |
CSS 滚动锚定(css_scroll_anchoring_1) | 1 | WD | 不支持 | 高 |
CSS Scroll Snap 滚动贴齐(css_scroll_snap_1) | 1 | REC | 不支持 | 高 |
CSS Scroll Snap 滚动贴齐(css_scroll_snap_2) | 2 | WD | 不支持 | 高 |
CSS 滚动条样式(css_scrollbars_1) | 1 | CR | 不支持 | 高 |
CSS 基本用户界面(css_ui_3) | 3 | REC | 不支持 | 中 |
CSS 基本用户界面(css_ui_4) | 4 | WD | 不支持 | 高 |
CSS 表单控件样式(css_forms_1) | 1 | ED | 不支持 | 高 |
CSS View Transitions 视图转场(css_view_transitions_1) | 1 | WD | 不支持 | 高 |
CSS View Transitions 视图转场(css_view_transitions_2) | 2 | ED | 不支持 | 高 |
CSS 空间导航(css_nav_1) | 1 | NOTE | 不支持 | 高 |
CSS Route Matching 路由匹配(css_navigation_1) | 1 | ED | 不支持 | 高 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS 表格(css_tables_3) | 3 | WD | 已验证 | 高 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS Transforms 变形(css_transforms_1) | 1 | CR | 已声明 | 中 |
CSS Transforms 变形(css_transforms_2) | 2 | ED | 未知 | 低 |
CSS 动画(css_animations_1) | 1 | WD | 不支持 | 高 |
CSS 动画(css_animations_2) | 2 | ED | 不支持 | 高 |
CSS 转场(css_transitions_1) | 1 | WD | 不支持 | 高 |
CSS 转场(css_transitions_2) | 2 | ED | 不支持 | 高 |
CSS Easing 函数(css_easing_1) | 1 | CR | 不支持 | 高 |
CSS Easing 函数(css_easing_2) | 2 | ED | 不支持 | 高 |
Web Animations 网页动画(web_animations_1) | 1 | WD | 不支持 | 高 |
Web Animations 网页动画(web_animations_2) | 2 | ED | 不支持 | 高 |
Web Animations CSS 集成(web_animations_css_integration) | 1 | ED | 不支持 | 高 |
Animation Triggers 动画触发(animation_triggers) | 1 | ED | 不支持 | 高 |
指针驱动动画(pointer_animations_1) | 1 | ED | 不支持 | 高 |
滚动驱动动画(scroll_animations_1) | 1 | ED | 不支持 | 高 |
CSS Animation Worklet 动画 Worklet(css_animation_worklet) | 1 | ED | 不支持 | 高 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS 锚点定位(css_anchor_position_1) | 1 | WD | 未知 | 低 |
CSS 锚点定位(css_anchor_position_2) | 2 | ED | 未知 | 低 |
CSS Highlight API 标记 API(css_highlight_api_1) | 1 | WD | 不支持 | 高 |
CSS Properties and Values API 属性与值 API(css_properties_values_api_1) | 1 | CR | 不支持 | 高 |
CSS Painting API 绘制 API(css_paint_api_1) | 1 | WD | 不支持 | 高 |
CSS Typed OM 类型化 OM(css_typed_om_1) | 1 | WD | 不支持 | 高 |
CSSOM(cssom_1) | 1 | WD | 不支持 | 高 |
CSSOM View 视图(cssom_view_1) | 1 | WD | 不支持 | 高 |
CSS Will Change 变更预示(css_will_change_1) | 1 | CR | 不支持 | 高 |
CSS Linked Parameters 链接参数(css_link_params_1) | 1 | ED | 未知 | 低 |
CSS Line Grid 行网格(css_line_grid_1) | 1 | NOTE | 未知 | 低 |
CSS Rhythmic Sizing 节奏尺寸(css_rhythm_1) | 1 | ED | 未知 | 低 |
CSS Round Display 圆形显示(css_round_display_1) | 1 | ED | 不支持 | 高 |
CSS Shaders 着色器(css_shaders_1) | 1 | NOTE | 不支持 | 高 |
CSS Viewport 视口(css_viewport_1) | 1 | NOTE | 不支持 | 高 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
媒体查询(mediaqueries_3) | 3 | REC | 已声明 | 中 |
媒体查询(mediaqueries_4) | 4 | CR | 已声明 | 中 |
媒体查询(mediaqueries_5) | 5 | WD | 未知 | 低 |
| W3C 模块 | 等级 | W3C 阶段 | 状态 | 可信度 |
|---|
CSS Level 2 第二级(css_2_1) | 2.1 | REC | 已声明 | 低 |
CSS Level 2.2 基准(css_2_2) | 2.2 | NOTE | 已声明 | 低 |
CSS Snapshot 2026 快照(css_snapshot_2026) | 快照 | NOTE | 已声明 | 低 |
这些 W3C 模块出现在语料库中,但落在 CSS 渲染管线范围之外。适用时,会从对应的功能页面链接到它们。
| W3C 模块 | W3C 阶段 | 状态 | 可信度 | 说明 |
|---|
W3C SVG 1.1 矢量图形(svg_1_1) | REC | 已声明 | 低 | 内联 SVG 绘制子集位于 Renderer/PaintCommand/;无 CSS-matrix fixture。 |
W3C SVG 2.0 矢量图形(svg_2_0) | CR | 未知 | 低 | 属于 Premium 管线范围;内核无证据。 |
W3C PNG 第 3 版(png_3) | WD | 已声明 | 低 | PNG 解码位于 Graphics/ 模块(在 HTML/CSS 之外)。 |
W3C WOFF 1.0 网页字体(woff_1_0) | REC | 已声明 | 低 | WOFF 通过 Font stack 处理;无 CSS-matrix fixture。 |
W3C WOFF 2.0 网页字体(woff_2_0) | REC | 已声明 | 低 | WOFF2 通过 Font stack 处理;无 CSS-matrix fixture。 |
W3C WCAG 2.2 无障碍准则(wcag_2_2) | REC | 已验证 | 中 | src/Html/Aam/、tests/Unit/Accessibility/HtmlAam/(4 个文件)— PDF/UA-2。 |
W3C WAI-ARIA 1.2 无障碍(wai_aria_1_2) | REC | 已验证 | 中 | tests/Unit/Accessibility/HtmlAam/(4 个文件)。 |
W3C ARIA 组合(w3c_aria_bundle) | REC | 已声明 | 低 | 指南组合;具体证据见 WAI-ARIA 那一列。 |
W3C AAM 组合(w3c_aam_bundle) | NOTE | 已声明 | 低 | 组合指针;证据见 WAI-ARIA/WCAG 各列。 |
W3C ATAG 2.0 创作工具无障碍(atag_2_0) | REC | 不支持 | 高 | 创作工具无障碍;不适用。 |
W3C XSL 1.1 样式语言(xsl_1_1) | REC | 不支持 | 高 | XSL-FO 并行格式化模型;未实现。 |
W3C XSD 1.1 Part 1 结构描述(xsd_1_1_part1) | REC | 不支持 | 高 | XML schema;不适用。 |
W3C XSLT 3.0 转换语言(xslt_3_0) | REC | 不支持 | 高 | 转换语言;不适用。 |
Resize Observer 尺寸观察器(resize_observer_1) | CR | 不支持 | 高 | 浏览器运行时 API。 |
若要让某一列从 claimed → verified:
- 在
tests/Unit/Html/<Module>/ 下有专属的属性层级 fixture 套件(≥3 个文件),或 tests/Wpt/corpus/ 下有实质性的 WPT 语料分片(≥50 个 fixture)被提升为带断言的测试。
- 该 fixture 会依据 W3C 文法,对该模块主要属性下的 NextPDF 行为做断言。
- 该 fixture 在
NextPDF\Testing\ReproducibilityProfile 中运行(structural 用于断言型 fixture;bitwise 仅在逐模块黄金 PDF 基准存在后采用)。
- 该列在 repo 内
nextpdf_status 中的 css-support-matrix-data.yaml 翻为 verified,并更新 fixture_path、repro_profile、confidence。
若要让某一列从 unknown → claimed:
- 一次审计确认
src/Html/ 中有实现证据(并把路径引用到 evidence + notes)。
- 开立回补 issue,并链接到
backfill_issue。
- HTML:HTML+CSS 转 PDF 渲染子系统 — 这些能力背后的引擎,包含表格、flex、渐变与分页行为的说明。
- 不支持的 CSS 特性与变通方案 — 各项行为的具体边界。
- 渲染从右到左的阿拉伯语 HTML — 从右到左与双向书写的支持及其当前的边界。
- 让大型 HTML 表格跨页分页 — 跨页的表格分页。
- CSS matrix 真实审计报告(
_css-matrix-truth-report.md,repo 内)— before/after 审计差异、可信度分布、去膨胀记录。
- CSS 属性覆盖审计(
architecture/css-property-coverage-audit.md,repo 内)— 内部四态逐属性审计 (Policy/Parsed/Applied/Rendered)。
- ADR-027 v8.0.0 BREAKING(
architecture/adr/ADR-027-v8-breaking.md,repo 内)— vertical-lr 弃用握手流程毕业(能力保留)。
- ADR-028 v9.0.0 BREAKING(
architecture/adr/ADR-028-v9-breaking.md,repo 内)— Grid/Subgrid/@container enum 标记移除(能力保留)。
- 回补追踪 issue:https://github.com/nextpdf-labs/nextpdf/issues/614