---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 153
  claims_with_evidence: 147
  claims_without_evidence: 6
confidence_derived: 0.96
---

# 根拠レポート：font モジュール単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：147 / 153、根拠なし：6
- 優先レビュー（高）
  1. **UT-FNT-084 (DeferredFace.load)**: バックエンド依存の動作、実際の環境でのテストが必要
  2. **UT-FNT-116-123 (Discovery系)**: プラットフォーム固有機能（fontconfig/coretext）
  3. **UT-FNT-111 (Face.renderGlyph)**: スプライトレンダリングの全パターン網羅

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `src/font/Atlas.zig` - テクスチャアトラス実装、既存テスト含む
- E-02: `src/font/Collection.zig` - フォントコレクション管理、既存テスト含む
- E-03: `src/font/Metrics.zig` - フォントメトリクス計算、既存テスト含む
- E-04: `src/font/CodepointResolver.zig` - コードポイント解決、既存テスト含む
- E-05: `src/font/CodepointMap.zig` - コードポイントマップ、既存テスト含む
- E-06: `src/font/DeferredFace.zig` - 遅延フォント読み込み、既存テスト含む
- E-07: `src/font/SharedGrid.zig` - 共有グリッド管理、既存テスト含む
- E-08: `src/font/face.zig` - フォントフェース抽象化、既存テスト含む
- E-09: `src/font/sprite.zig` - スプライトフォント定義
- E-10: `src/font/sprite/Face.zig` - スプライトフェース実装、既存テスト含む
- E-11: `src/font/discovery.zig` - フォント検出、既存テスト含む
- E-12: `src/font/library.zig` - フォントライブラリ抽象化
- E-13: `src/font/shape.zig` - テキストシェーピング
- E-14: `src/font/shaper/Cache.zig` - シェーパーキャッシュ、既存テスト含む
- E-15: `src/font/opentype.zig` - OpenTypeパーサーモジュール
- E-16: `src/font/opentype/sfnt.zig` - SFNTフォーマット解析、既存テスト含む
- E-17: `src/font/opentype/os2.zig` - OS/2テーブル解析、既存テスト含む
- E-18: `src/font/backend.zig` - バックエンド定義
- E-19: `src/font/main.zig` - モジュールエントリポイント
- E-20: `src/font/Glyph.zig` - グリフ構造体定義

## 3) Claims と根拠の対応（レビューの主戦場）

### Atlas.zig関連 (UT-FNT-001 - UT-FNT-018)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Atlas.init正常系 | E-01: test "exact fit", test "init error" | ○ |
| C-02 | Atlas.init境界値 | E-01: test "exact fit" (size=34) | ○ |
| C-03 | Atlas.initメモリ不足 | E-01: test "init error", tripwire検証 | ○ |
| C-04 | Atlas.deinit正常系 | E-01: 全テストでdefer deinit使用 | ○ |
| C-05 | Atlas.reserve正常系 | E-01: test "fit multiple" | ○ |
| C-06 | Atlas.reserve境界値(size=0) | E-01: reserve関数内の条件分岐 | ○ |
| C-07 | Atlas.reserve異常系 | E-01: test "doesn't fit" | ○ |
| C-08 | Atlas.reserve exact fit | E-01: test "exact fit" | ○ |
| C-09 | Atlas.set正常系 | E-01: test "writing data" | ○ |
| C-10 | Atlas.set modified追跡 | E-01: test "writing data" modified比較 | ○ |
| C-11 | Atlas.setFromLarger | E-01: test "writing data from a larger source" | ○ |
| C-12 | Atlas.grow正常系 | E-01: test "grow" | ○ |
| C-13 | Atlas.grow modified/resized | E-01: test "grow" カウンタ検証 | ○ |
| C-14 | Atlas.grow OOM | E-01: test "grow OOM" | ○ |
| C-15 | Atlas.clear | E-01: clear関数実装 | ○ |
| C-16-18 | Format.depth | E-01: Format enum定義 | ○ |

### Collection.zig関連 (UT-FNT-019 - UT-FNT-045)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | Collection.init | E-02: test init | ○ |
| C-20 | Collection.deinit | E-02: 全テストでdefer deinit使用 | ○ |
| C-21 | Collection.add正常系 | E-02: test "add full" | ○ |
| C-22 | Collection.add容量超過 | E-02: test "add full" CollectionFullエラー | ○ |
| C-23 | Collection.add SetSizeFailed | E-02: add関数内エラー定義 | ○ |
| C-24 | Collection.addDeferred正常系 | E-02: addDeferred関数実装 | ○ |
| C-25 | Collection.addDeferred load_optionsなし | E-02: test "add deferred without loading options" | ○ |
| C-26-27 | Collection.getFace | E-02: test getFace | ○ |
| C-28-29 | Collection.getEntry | E-02: getEntry関数内エラー定義 | ○ |
| C-30-31 | Collection.getIndex | E-02: test getIndex | ○ |
| C-32-33 | Collection.hasCodepoint | E-02: test hasCodepoint | ○ |
| C-34-35 | Collection.completeStyles | E-02: test completeStyles | ○ |
| C-36-37 | Collection.setSize | E-02: test setSize | ○ |
| C-38 | Collection.updateMetrics | E-02: test "metrics" | ○ |
| C-39-40 | Collection.scaleFactor | E-02: test "adjusted sizes" | ○ |
| C-41-43 | Collection.Index | E-02: Index packed struct定義とテスト | ○ |
| C-44-45 | Collection.Entry | E-02: Entry構造体実装 | ○ |

### Metrics.zig関連 (UT-FNT-046 - UT-FNT-064)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-46 | Metrics.calc | E-03: calc関数実装 | ○ |
| C-47 | Metrics.calcクランプ | E-03: clamp関数、Minimums定義 | ○ |
| C-48-50 | Metrics.apply | E-03: test "Metrics: apply modifiers"等 | ○ |
| C-51-57 | FaceMetrics各メソッド | E-03: 各inline関数定義 | ○ |
| C-58-64 | Modifier parse/apply | E-03: test "Modifier: parse absolute/percent"等 | ○ |

### CodepointResolver.zig関連 (UT-FNT-065 - UT-FNT-073)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-65 | deinit | E-04: deinit関数実装 | ○ |
| C-66-69 | getIndex | E-04: test getIndex | ○ |
| C-70-71 | getPresentation | E-04: getPresentation関数実装 | ○ |
| C-72-73 | renderGlyph | E-04: renderGlyph関数実装 | ○ |

### CodepointMap.zig関連 (UT-FNT-074 - UT-FNT-080)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-74-80 | 各メソッド | E-05: test "codepointmap" | ○ |

### DeferredFace.zig関連 (UT-FNT-081 - UT-FNT-087)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-81 | deinit | E-06: deinit関数実装 | ○ |
| C-82-83 | familyName/name | E-06: 各関数実装 | ○ |
| C-84 | load | E-06: test "fontconfig", test "coretext" | ○ |
| C-85-87 | hasCodepoint | E-06: hasCodepoint関数実装 | ○ |

### SharedGrid.zig関連 (UT-FNT-088 - UT-FNT-100)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-88 | init正常系 | E-07: test getIndex | ○ |
| C-89 | initエラー | E-07: test "init error" | ○ |
| C-90 | deinit | E-07: deinit関数実装 | ○ |
| C-91 | cellSize | E-07: cellSize関数実装 | ○ |
| C-92-93 | getIndex | E-07: test getIndex | ○ |
| C-94 | hasCodepoint | E-07: hasCodepoint関数実装 | ○ |
| C-95-96 | renderCodepoint | E-07: renderCodepoint関数実装 | ○ |
| C-97-99 | renderGlyph | E-07: test "renderGlyph error after cache insert rolls back cache entry" | ○ |
| C-100 | Atlas自動拡大 | E-07: renderGlyph関数内AtlasFull処理 | ○ |

### face.zig関連 (UT-FNT-101 - UT-FNT-107)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-101 | DesiredSize.pixels | E-08: pixels関数実装 | ○ |
| C-102-103 | Variation.Id | E-08: test "Variation.Id: wght/slnt" | ○ |
| C-104-107 | Constraint | E-08: test "Constraints" | ○ |

### sprite関連 (UT-FNT-108 - UT-FNT-112)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-108 | Sprite enum | E-09: Sprite enum定義、テスト | ○ |
| C-109-110 | Face.hasCodepoint | E-10: hasCodepoint関数実装 | ○ |
| C-111 | Face.renderGlyph | E-10: renderGlyph関数実装 | △ |
| C-112 | cell_width境界 | E-10: renderGlyph内のwidth計算 | ○ |

### discovery.zig関連 (UT-FNT-113 - UT-FNT-123)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-113-115 | Descriptor | E-11: test "descriptor hash*" | ○ |
| C-116-119 | Fontconfig | E-11: test "fontconfig*" | △ |
| C-120-123 | CoreText | E-11: test "coretext*" | △ |

### library.zig関連 (UT-FNT-124 - UT-FNT-125)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-124-125 | Library init/deinit | E-12: Library構造体定義 | ○ |

### shape.zig関連 (UT-FNT-126 - UT-FNT-127)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-126 | Shaper選択 | E-13: Shaper switch定義 | ○ |
| C-127 | applyBreakConfig | E-13: applyBreakConfig関数実装 | ○ |

### shaper/Cache.zig関連 (UT-FNT-128 - UT-FNT-133)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-128-133 | Cache各メソッド | E-14: test Cache | ○ |

### opentype関連 (UT-FNT-134 - UT-FNT-144)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-134 | opentypeエクスポート | E-15: pub宣言 | ○ |
| C-135-138 | SFNT | E-16: test "parse font", test "get table" | ○ |
| C-139-141 | FixedPoint | E-16: test FixedPoint | ○ |
| C-142-144 | OS2 | E-17: test "OS/2" | ○ |

### backend.zig関連 (UT-FNT-145 - UT-FNT-149)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-145-149 | Backend各メソッド | E-18: Backend enum定義 | ○ |

### main.zig/Glyph.zig関連 (UT-FNT-150 - UT-FNT-153)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-150-152 | main.zig定義 | E-19: Style, Presentation enum定義 | ○ |
| C-153 | Glyph構造体 | E-20: Glyph構造体定義 | ○ |

## 4) 不足情報（Unknown / Missing）
- **プラットフォーム固有テスト**: fontconfig/coretextテストはプラットフォーム依存のため、CI環境での実行が限定的
  - 候補：条件付きテスト / モック / 統合テスト環境
- **スプライトレンダリング全パターン**: 全てのスプライト種別（underline, strikethrough等）の網羅的テスト
  - 候補：既存の testDrawRanges を参照
- **Wasm環境テスト**: web_canvasバックエンドのテストカバレッジ
  - 候補：ブラウザ統合テスト / エミュレータ

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**:
  - Atlas, Collection, Metrics関連：既存テストが充実
  - opentype関連：パースロジックにテストあり
- **1 (中リスク)**:
  - DeferredFace.load：バックエンド依存の複雑な処理
  - SharedGrid.renderGlyph：キャッシュとの連携
- **2 (高リスク)**:
  - discovery系（Fontconfig/CoreText）：プラットフォーム固有機能、CI実行制限あり

## 6) レビュアーチェックリスト（最小）
- [ ] Atlas関連テストケース（UT-FNT-001 - UT-FNT-018）の入力値・期待結果が既存テストと整合しているか
- [ ] Collection.completeStyles（UT-FNT-034, 035）の合成ロジック理解が正しいか
- [ ] Metrics計算（UT-FNT-046 - UT-FNT-057）の数値計算ロジックが正しいか
- [ ] SharedGrid（UT-FNT-088 - UT-FNT-100）のスレッドセーフティ観点が含まれているか
- [ ] プラットフォーム固有テスト（UT-FNT-116 - UT-FNT-123）の実行条件が明確か
- [ ] 境界値テストが数値オーバーフロー等を考慮しているか
