NextPDF は、W3C が公開している仕様に準拠して CSS レンダリングを実装しています。このページでは、NextPDF の仕様コーパスに含まれるすべての CSS モジュールを列挙し、レンダリングパイプラインにおける各モジュールの 真実性監査済み サポート状態を記録します。
このリビジョンは Wave 4 B2 の 真実性監査(プラン 4.4 節)の成果物です。以前の構造リビジョンで示していたバッジは、検証されていないプレースホルダーでした。ここに記載した各行は、実際にディスク上にあるエビデンス(src/Html/、tests/、tests/Wpt/corpus/)、v8/v9 の破壊的変更 ADR、および内部の CSS プロパティカバレッジ監査に照らして再採点しています。カバレッジの広さよりも正直さを優先しました。監査の結果、バッジを下げるべき箇所では実際に下げています。
検証コントラクトに従い、各行は次の 4 つのバッジに分類されます。
- 検証済み —
src/Html/ の実装に 加えて、実質的な専用自動フィクスチャがある状態です。具体的には、tests/Unit/Html/<Module>/ 配下のプロパティ単位のスイート(3 ファイル以上)、または tests/Wpt/corpus/ 配下の Web Platform Tests コーパスシャード(50 フィクスチャ以上)を指します。CSS モジュール単位のゴールデン PDF ベースラインはまだ用意されていないため、検証済みの行では structural 再現性プロファイル(PHPUnit のアサーション同値)を使用し、bitwise は使用しません。
- 主張のみ — モジュールの動作は
src/Html/ に実装されています(ソースパスを記載)が、専用フィクスチャが手薄、共有、または未整備の状態です。具体的な実装がある「主張のみ」の各行には、バックフィル用の Issue が用意されています。
- 非対応 — 静的 PDF レンダリングパイプラインの対象外です。ランタイム/ブラウザー専用 API、scrolling/animation ランタイム、および W3C が廃止した作業が該当します。理由も記録しています。
- 不明 — モジュールはコーパスに存在しますが、実装やフィクスチャのエビデンスを判定できなかった状態です。監査では、件数を増やすために上方推定することは一切行っていません。
構造リビジョンの partial バッジは 廃止 されました。以前 partial だった各行は、claimed(実装あり、専用フィクスチャなし)または verified に再採点されました。
| バッジ | 意味 |
|---|
verified | src/Html/ + 専用フィクスチャスイート(3 ファイル以上)または WPT シャード(50 フィクスチャ以上)。structural プロファイル下で決定論的にパスします。 |
claimed | 実装エビデンスは src/Html/ にあり、専用フィクスチャなし。バックフィル Issue で追跡中。 |
not-supported | 静的 PDF のスコープから明示的に除外。理由は記録済み。 |
unknown | 判定可能なエビデンスなし。上方推定は行っていません。 |
この表の 信頼度 列は、記載されたバッジを支えるエビデンスの強さを示す、正直かつ非二値のシグナル(high / medium / low)であり、バッジそのものとは独立しています。
NextPDF は、以下に挙げる CSS モジュールを、記載したレベルでサポートします。検証済み の行には、NextPDF の動作をアサートする専用自動フィクスチャスイートまたは実質的な WPT コーパスシャードがあり、structural 再現性プロファイル下で決定論的にパスします。主張のみ の行には src/Html/ に実装エビデンスがありますが、専用フィクスチャはまだありません。各行は 追跡 Issue #614 配下のバックフィル Issue で追跡されています。非対応 の行は、静的 PDF ターゲットに対する明示的なスコープ境界を記録したものです。
本リビジョンには CSS モジュール単位のゴールデン PDF ベースラインはなく、バイトレベルの再現性を主張する行はありません。検証コントラクトでは空の行を禁止しています。サポート状況を判定できない場合、その行は unknown になります。
| ステータス | モジュール数 | 信頼度レベル(high / medium / low) |
|---|
| 検証済み | 12 | 8 / 4 / 0 |
| 主張のみ | 49 | 0 / 35 / 14 |
| 非対応 | 67 | 62 / 5 / 0 |
| 不明 | 39 | 0 / 0 / 39 |
| 合計 | 167 | 70 / 44 / 53 |
構造リビジョンの summary ブロックには内部矛盾がありました。合計 148(verified 18 / partial 11 / claimed 11 / not-supported 53 / unknown 55)と宣言していましたが、ファイル内には実際には 167 のモジュール行 があり、各行自体のラベルを集計すると verified 34 / partial 13 / claimed 13 / not-supported 68 / unknown 39 でした。本監査では合計を正しい 167 に訂正し、ディスク上のエビデンスに照らしてすべての行を再採点しました。Verified は、主張上の 34 から、裏付けのある 12 に減少しました。この減少は誠実な監査の結果として正しく、リグレッションではありません。完全な before/after の差分は、リポジトリ内の _css-matrix-truth-report.md サイドカーにあります。
構造リビジョンでは、稼働中の 3 つの機能を「削除済み」または「非対応」と誤ってラベル付けしていました。ADR-027 と ADR-028 が削除したのは ExperimentalFeature 列挙体の オプトインマーカー のみであり、機能そのものは引き続き既定で有効(LIVE)です。
- Subgrid(
css_grid_2)— 稼働中(LIVE)。CssFeatureFlags::$layoutSubgrid は既定で有効です。以前は「subgrid は v9.0.0 で完全削除」と誤ってラベル付けされていました。
@container クエリ(css_contain_2)— ランタイムディスパッチは ADR-028 によって明示的には変更されていません。フラグによるオプトアウトも保持されています。以前は「v9.0.0 で完全削除」と誤ってラベル付けされていました。
writing-mode: vertical-lr(css_writing_modes_3)— v7.0.0 以降、既定で有効な Stable です。ADR-027 で正式化されたのは非推奨ハンドシェイクのみです。以前は「v8.0.0 で非推奨/削除」と誤ってラベル付けされていました。
機械可読なモジュール単位の行セットは、リポジトリ内の css-support-matrix-data.yaml にあり、これが信頼できる唯一の情報源(source of truth)です。このページはそれを人間が読める形式に射影し、カテゴリーごとにグループ化したものです。ドキュメントのビルド時には、Astro コンポーネントがこの YAML を直接消費します。
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Flexible Box Layout モジュール (css_flexbox_1) | 1 | CR | 検証済み | high |
CSS Grid Layout (css_grid_1) | 1 | REC | 検証済み | high |
CSS Grid Layout — Subgrid モジュール (css_grid_2) | 2 | CR | 主張のみ | medium |
CSS Grid Layout — Masonry モジュール (css_grid_3) | 3 | ED | 非対応 | high |
CSS Display (css_display_3) | 3 | CR | 主張のみ | medium |
CSS Display (css_display_4) | 4 | ED | 不明 | low |
CSS Positioned Layout (css_position_3) | 3 | WD | 検証済み | high |
CSS Positioned Layout (css_position_4) | 4 | ED | 不明 | low |
CSS Box Alignment (css_align_3) | 3 | WD | 主張のみ | medium |
CSS Box Sizing (css_sizing_3) | 3 | CR | 主張のみ | low |
CSS Box Sizing (css_sizing_4) | 4 | ED | 不明 | low |
CSS Box Model (css_box_3) | 3 | WD | 主張のみ | medium |
CSS Box Model (css_box_4) | 4 | ED | 不明 | low |
CSS Multi-column Layout モジュール (css_multicol_1) | 1 | CR | 主張のみ | medium |
CSS Multi-column Layout モジュール (css_multicol_2) | 2 | ED | 不明 | low |
CSS Fragmentation (css_break_3) | 3 | CR | 検証済み | medium |
CSS Fragmentation (css_break_4) | 4 | ED | 不明 | low |
CSS Containment (css_contain_1) | 1 | REC | 非対応 | medium |
CSS Containment — @container (css_contain_2) | 2 | CR | 主張のみ | low |
CSS Containment (css_contain_3) | 3 | ED | 非対応 | medium |
CSS Inline Layout (css_inline_3) | 3 | WD | 主張のみ | medium |
CSS Logical Properties (css_logical_1) | 1 | WD | 主張のみ | medium |
CSS Page Floats (css_page_floats_3) | 3 | ED | 非対応 | high |
CSS Pagination Templates (css_page_templates_3) | 3 | ED | 非対応 | high |
CSS Exclusions (css_exclusions_1) | 1 | WD | 非対応 | high |
CSS Regions (css_regions_1) | 1 | WD | 非対応 | high |
CSS Template Layout (css_template_1) | 1 | NOTE | 非対応 | high |
CSS Layout API (css_layout_api_1) | 1 | WD | 非対応 | high |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Backgrounds and Borders モジュール (css_backgrounds_3) | 3 | CR | 主張のみ | medium |
CSS Backgrounds (css_backgrounds_4) | 4 | ED | 不明 | low |
CSS Borders and Box Decorations モジュール (css_borders_4) | 4 | ED | 不明 | low |
CSS Gap Decorations (css_gaps_1) | 1 | ED | 不明 | low |
CSS Masking (css_masking_1) | 1 | CR | 非対応 | medium |
CSS Shadow Module (css_shadow_1) | 1 | ED | 主張のみ | medium |
CSS Shapes (css_shapes_1) | 1 | CR | 非対応 | high |
CSS Shapes (css_shapes_2) | 2 | ED | 非対応 | high |
Filter Effects (filter_effects_1) | 1 | WD | 非対応 | high |
Filter Effects (filter_effects_2) | 2 | ED | 非対応 | high |
Compositing and Blending モジュール (compositing_1) | 1 | CR | 主張のみ | medium |
Compositing (compositing_2) | 2 | ED | 不明 | low |
CSS Fill and Stroke モジュール (fill_stroke_3) | 3 | ED | 不明 | low |
Geometry Interfaces (geometry_1) | 1 | CR | 非対応 | high |
DOMMatrix (matrix) | 1 | NOTE | 非対応 | high |
Motion Path (motion_1) | 1 | WD | 非対応 | high |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Fonts (css_fonts_3) | 3 | REC | 検証済み | medium |
CSS Fonts (css_fonts_4) | 4 | CR | 検証済み | high |
CSS Fonts (css_fonts_5) | 5 | ED | 不明 | low |
CSS Font Loading (css_font_loading_3) | 3 | WD | 非対応 | high |
CSS Text (css_text_3) | 3 | CR | 主張のみ | medium |
CSS Text (css_text_4) | 4 | ED | 主張のみ | medium |
CSS Text Decoration (css_text_decor_3) | 3 | CR | 主張のみ | medium |
CSS Text Decoration (css_text_decor_4) | 4 | ED | 不明 | low |
CSS Ruby (css_ruby_1) | 1 | WD | 非対応 | high |
CSS Writing Modes (css_writing_modes_3) | 3 | REC | 主張のみ | medium |
CSS Writing Modes (css_writing_modes_4) | 4 | ED | 不明 | low |
CSS Speech (css_speech_1) | 1 | CR | 非対応 | high |
CSS Mobile Text Size Adjustment モジュール (css_size_adjust_1) | 1 | ED | 非対応 | high |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Color (css_color_3) | 3 | REC | 主張のみ | medium |
CSS Color (css_color_4) | 4 | CR | 主張のみ | medium |
CSS Color (css_color_5) | 5 | WD | 不明 | low |
CSS Color (css_color_6) | 6 | ED | 不明 | low |
CSS Color Adjustment (css_color_adjust_1) | 1 | CR | 非対応 | high |
CSS Color HDR (css_color_hdr_1) | 1 | ED | 非対応 | high |
CSS Images (css_images_3) | 3 | CR | 主張のみ | medium |
CSS Images (css_images_4) | 4 | ED | 不明 | low |
CSS Images (css_images_5) | 5 | ED | 不明 | low |
CSS Image Animation (css_image_animation_1) | 1 | ED | 非対応 | high |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Selectors (selectors_3) | 3 | REC | 主張のみ | medium |
CSS Selectors (selectors_4) | 4 | WD | 主張のみ | medium |
CSS Selectors (selectors_5) | 5 | ED | 不明 | low |
CSS Non-element Selectors モジュール (selectors_nonelement_1) | 1 | WD | 非対応 | high |
CSS Pseudo-Elements (css_pseudo_4) | 4 | WD | 主張のみ | medium |
CSS Cascading and Inheritance (css_cascade_3) | 3 | REC | 検証済み | high |
CSS Cascading (css_cascade_4) | 4 | CR | 検証済み | high |
CSS Cascading (css_cascade_5) | 5 | CR | 検証済み | high |
CSS Cascading (css_cascade_6) | 6 | WD | 不明 | low |
CSS Values and Units モジュール (css_values_3) | 3 | REC | 主張のみ | medium |
CSS Values and Units モジュール (css_values_4) | 4 | CR | 主張のみ | medium |
CSS Values and Units モジュール (css_values_5) | 5 | ED | 不明 | low |
CSS Custom Properties (css_variables_1) | 1 | CR | 主張のみ | medium |
CSS Custom Properties (css_variables_2) | 2 | ED | 不明 | low |
CSS Conditional Rules (css_conditional_3) | 3 | CR | 主張のみ | medium |
CSS Conditional Rules (css_conditional_4) | 4 | ED | 不明 | low |
CSS Conditional Rules (css_conditional_5) | 5 | ED | 不明 | low |
CSS Conditional Values (css_conditional_values_1) | 1 | ED | 不明 | low |
CSS Namespaces (css_namespaces_3) | 3 | REC | 主張のみ | low |
CSS Style Attributes (css_style_attr_1) | 1 | CR | 主張のみ | medium |
CSS Syntax (css_syntax_3) | 3 | CR | 主張のみ | medium |
CSS Nesting (css_nesting_1) | 1 | CR | 主張のみ | medium |
CSS Environment Variables (css_env_1) | 1 | ED | 非対応 | medium |
CSS Custom Functions and Mixins モジュール (css_mixins_1) | 1 | ED | 不明 | low |
CSS Extensions (css_extensions_1) | 1 | NOTE | 不明 | low |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Lists and Counters モジュール (css_lists_3) | 3 | WD | 主張のみ | medium |
CSS Counter Styles (css_counter_styles_3) | 3 | CR | 主張のみ | medium |
CSS Generated Content (css_content_3) | 3 | WD | 主張のみ | medium |
CSS Generated Content for Paged Media モジュール (css_gcpm_3) | 3 | WD | 主張のみ | medium |
CSS Generated Content for Paged Media モジュール (css_gcpm_4) | 4 | ED | 不明 | low |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Paged Media (css_page_3) | 3 | WD | 主張のみ | medium |
CSS Paged Media (css_page_4) | 4 | NOTE | 不明 | low |
CSS Print Profile (css_print) | 1 | NOTE | 主張のみ | low |
CSS Presentation Levels (css_preslev_1) | 1 | NOTE | 非対応 | high |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Overflow (css_overflow_3) | 3 | WD | 主張のみ | low |
CSS Overflow (css_overflow_4) | 4 | ED | 不明 | low |
CSS Overflow (css_overflow_5) | 5 | ED | 不明 | low |
CSS Overscroll Behavior (css_overscroll_1) | 1 | CR | 非対応 | high |
CSS Scroll Anchoring (css_scroll_anchoring_1) | 1 | WD | 非対応 | high |
CSS Scroll Snap (css_scroll_snap_1) | 1 | REC | 非対応 | high |
CSS Scroll Snap (css_scroll_snap_2) | 2 | WD | 非対応 | high |
CSS Scrollbars Styling (css_scrollbars_1) | 1 | CR | 非対応 | high |
CSS Basic User Interface モジュール (css_ui_3) | 3 | REC | 非対応 | medium |
CSS Basic User Interface モジュール (css_ui_4) | 4 | WD | 非対応 | high |
CSS Form Control Styling モジュール (css_forms_1) | 1 | ED | 非対応 | high |
CSS View Transitions (css_view_transitions_1) | 1 | WD | 非対応 | high |
CSS View Transitions (css_view_transitions_2) | 2 | ED | 非対応 | high |
CSS Spatial Navigation (css_nav_1) | 1 | NOTE | 非対応 | high |
CSS Route Matching (css_navigation_1) | 1 | ED | 非対応 | high |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Table (css_tables_3) | 3 | WD | 検証済み | high |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Transforms (css_transforms_1) | 1 | CR | 主張のみ | medium |
CSS Transforms (css_transforms_2) | 2 | ED | 不明 | low |
CSS Animations (css_animations_1) | 1 | WD | 非対応 | high |
CSS Animations (css_animations_2) | 2 | ED | 非対応 | high |
CSS Transitions (css_transitions_1) | 1 | WD | 非対応 | high |
CSS Transitions (css_transitions_2) | 2 | ED | 非対応 | high |
CSS Easing Functions (css_easing_1) | 1 | CR | 非対応 | high |
CSS Easing Functions (css_easing_2) | 2 | ED | 非対応 | high |
Web Animations (web_animations_1) | 1 | WD | 非対応 | high |
Web Animations (web_animations_2) | 2 | ED | 非対応 | high |
Web Animations CSS Integration モジュール (web_animations_css_integration) | 1 | ED | 非対応 | high |
Animation Triggers (animation_triggers) | 1 | ED | 非対応 | high |
Pointer-driven Animations モジュール (pointer_animations_1) | 1 | ED | 非対応 | high |
Scroll-driven Animations モジュール (scroll_animations_1) | 1 | ED | 非対応 | high |
CSS Animation Worklet (css_animation_worklet) | 1 | ED | 非対応 | high |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Anchor Positioning (css_anchor_position_1) | 1 | WD | 不明 | low |
CSS Anchor Positioning (css_anchor_position_2) | 2 | ED | 不明 | low |
CSS Highlight API (css_highlight_api_1) | 1 | WD | 非対応 | high |
CSS Properties and Values API モジュール (css_properties_values_api_1) | 1 | CR | 非対応 | high |
CSS Painting API (css_paint_api_1) | 1 | WD | 非対応 | high |
CSS Typed OM (css_typed_om_1) | 1 | WD | 非対応 | high |
CSSOM (cssom_1) | 1 | WD | 非対応 | high |
CSSOM View (cssom_view_1) | 1 | WD | 非対応 | high |
CSS Will Change (css_will_change_1) | 1 | CR | 非対応 | high |
CSS Linked Parameters (css_link_params_1) | 1 | ED | 不明 | low |
CSS Line Grid (css_line_grid_1) | 1 | NOTE | 不明 | low |
CSS Rhythmic Sizing (css_rhythm_1) | 1 | ED | 不明 | low |
CSS Round Display (css_round_display_1) | 1 | ED | 非対応 | high |
CSS Shaders (css_shaders_1) | 1 | NOTE | 非対応 | high |
CSS Viewport (css_viewport_1) | 1 | NOTE | 非対応 | high |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
Media Queries (mediaqueries_3) | 3 | REC | 主張のみ | medium |
Media Queries (mediaqueries_4) | 4 | CR | 主張のみ | medium |
Media Queries (mediaqueries_5) | 5 | WD | 不明 | low |
| W3C モジュール | レベル | W3C ステージ | ステータス | 信頼度 |
|---|
CSS Level 2 (css_2_1) | 2.1 | REC | 主張のみ | low |
CSS Level 2.2 (css_2_2) | 2.2 | NOTE | 主張のみ | low |
CSS Snapshot 2026 (css_snapshot_2026) | snapshot | NOTE | 主張のみ | low |
これらの W3C モジュールはコーパスに含まれますが、CSS レンダリングパイプラインのスコープ外です。 該当する場合は、対応する機能ページからリンクされています。
| W3C モジュール | W3C ステージ | ステータス | 信頼度 | 参照先 |
|---|
W3C SVG 1.1 (svg_1_1) | REC | 主張のみ | low | インライン SVG ペイントのサブセットを Renderer/PaintCommand/ で対応。CSS マトリクスのフィクスチャはありません。 |
W3C SVG 2.0 (svg_2_0) | CR | 不明 | low | Premium パイプラインの領域。コアのエビデンスはありません。 |
W3C PNG 3rd Edition の仕様 (png_3) | WD | 主張のみ | low | PNG デコードは Graphics/ モジュールで実施(HTML/CSS の外)。 |
W3C WOFF 1.0 (woff_1_0) | REC | 主張のみ | low | Font スタック経由の WOFF。CSS マトリクスのフィクスチャはありません。 |
W3C WOFF 2.0 (woff_2_0) | REC | 主張のみ | low | Font スタック経由の WOFF2。CSS マトリクスのフィクスチャはありません。 |
W3C WCAG 2.2 (wcag_2_2) | REC | 検証済み | medium | src/Html/Aam/、tests/Unit/Accessibility/HtmlAam/(4 ファイル)— PDF/UA-2。 |
W3C WAI-ARIA 1.2 (wai_aria_1_2) | REC | 検証済み | medium | tests/Unit/Accessibility/HtmlAam/(4 ファイル)。 |
W3C ARIA Bundle (w3c_aria_bundle) | REC | 主張のみ | low | ガイダンスバンドル。具体的なエビデンスは WAI-ARIA の行です。 |
W3C AAM Bundle (w3c_aam_bundle) | NOTE | 主張のみ | low | バンドルへのポインター。エビデンスは WAI-ARIA/WCAG の行です。 |
W3C ATAG 2.0 (atag_2_0) | REC | 非対応 | high | オーサリングツールのアクセシビリティ。該当しません。 |
W3C XSL 1.1 (xsl_1_1) | REC | 非対応 | high | XSL-FO の並行フォーマットモデル。未実装。 |
W3C XSD 1.1 Part 1 (xsd_1_1_part1) | REC | 非対応 | high | XML スキーマ。該当しません。 |
W3C XSLT 3.0 (xslt_3_0) | REC | 非対応 | high | 変換言語。該当しません。 |
Resize Observer (resize_observer_1) | CR | 非対応 | high | ブラウザーのランタイム API。 |
行が claimed → verified に昇格するには、次の条件を満たします。
- 専用のプロパティ単位のフィクスチャスイートが
tests/Unit/Html/<Module>/ 配下に(3 ファイル以上)ある、または 実質的な WPT コーパスシャード(50 フィクスチャ以上)が tests/Wpt/corpus/ 配下でアサート用テストへ昇格されていること。
- フィクスチャは、モジュールの主要プロパティについて W3C 文法に照らして NextPDF の動作をアサートすること。
- フィクスチャは
NextPDF\Testing\ReproducibilityProfile の下で決定論的にパスすること(アサーションフィクスチャには structural。bitwise はモジュール単位のゴールデン PDF ベースラインが存在する場合のみ)。
- その行の
nextpdf_status(リポジトリ内の css-support-matrix-data.yaml 内)を verified に切り替え、fixture_path、repro_profile、confidence を更新すること。
行が unknown → claimed に昇格するには、次の条件を満たします。
- 監査パスで
src/Html/ 内の実装エビデンスを確認すること(パスは evidence + notes に記載)。
- バックフィル Issue を作成し、
backfill_issue にリンクすること。