---
generated_at: 2026-02-22 10:30:00
metrics:
  claims_total: 100
  claims_with_evidence: 95
  claims_without_evidence: 5
confidence_derived: 0.95
---

# 根拠レポート：stb.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：95 / 100、根拠なし：5
- 優先レビュー（高）
  1. **UT-STB-098**：stbtt_FindMatchingFont - サードパーティライブラリの内部実装詳細
  2. **UT-STB-066**：OS/2テーブル不在時の動作 - フォント依存
  3. **UT-STB-094**：カーニングテーブル取得 - フォント依存
  4. **UT-STB-095**：SDF生成 - 複雑なアルゴリズム
  5. **UT-STB-055**：TTCフォントコレクション - 特定フォーマット依存

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

- E-01: `imstb_rectpack.h` - 矩形パッキングライブラリ（628行）
- E-02: `imstb_textedit.h` - テキスト編集ライブラリ（1528行）
- E-03: `imstb_truetype.h` - TrueTypeフォントライブラリ（約5000行）
- E-04: `docs/code-to-docs/単体テストケース一覧/plan.md` - プロジェクト計画書

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

### imstb_rectpack.h（矩形パッキング）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | stbrp_init_target正常系 | E-01 (L265-288) | ○ |
| C-02 | stbrp_init_target境界値（最小） | E-01 (L265-288) | ○ |
| C-03 | stbrp_init_target境界値（最大） | E-01 (L91: STBRP__MAXVAL定義) | ○ |
| C-04 | stbrp_pack_rects単一矩形 | E-01 (L546-584) | ○ |
| C-05 | stbrp_pack_rects複数矩形 | E-01 (L546-584) | ○ |
| C-06 | stbrp_pack_rects空配列 | E-01 (L546-584) | ○ |
| C-07 | 幅0/高さ0矩形 | E-01 (L559-560: 0サイズ処理) | ○ |
| C-08 | 収まらない矩形 | E-01 (L359-363, L567: STBRP__MAXVAL設定) | ○ |
| C-09 | 容量不足 | E-01 (L576-580: was_packed設定) | ○ |
| C-10 | ヒューリスティック設定BL | E-01 (L233-243, L168-171) | ○ |
| C-11 | ヒューリスティック設定BF | E-01 (L233-243, L168-171) | ○ |
| C-12 | OOM許可有効化 | E-01 (L245-263) | ○ |
| C-13 | OOM許可無効化 | E-01 (L245-263) | ○ |

### imstb_textedit.h（テキスト編集）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-14 | 初期化シングルライン | E-02 (L1448-1469) | ○ |
| C-15 | 初期化マルチライン | E-02 (L1448-1469) | ○ |
| C-16 | クリック処理 | E-02 (L499-516) | ○ |
| C-17 | クリック境界（開始） | E-02 (L499-516) | ○ |
| C-18 | クリック境界（終端） | E-02 (L499-516) | ○ |
| C-19 | ドラッグ処理 | E-02 (L519-539) | ○ |
| C-20 | カット操作 | E-02 (L764-772) | ○ |
| C-21 | 選択なしカット | E-02 (L764-772: 戻り値0) | ○ |
| C-22 | ペースト操作 | E-02 (L775-790, L1476-1479) | ○ |
| C-23 | 選択置換ペースト | E-02 (L775-790) | ○ |
| C-24 | 空ペースト | E-02 (L775-790) | ○ |
| C-25 | 左キー | E-02 (L856-864) | ○ |
| C-26 | 右キー | E-02 (L866-874) | ○ |
| C-27 | 上キー | E-02 (L1008-1083) | ○ |
| C-28 | 下キー | E-02 (L937-1006) | ○ |
| C-29 | Deleteキー | E-02 (L1085-1095) | ○ |
| C-30 | Backspaceキー | E-02 (L1097-1110) | ○ |
| C-31 | 先頭Backspace | E-02 (L1103: cursor > 0チェック) | ○ |
| C-32 | 末尾Delete | E-02 (L1091: cursor < nチェック) | ○ |
| C-33 | Undo操作 | E-02 (L846-849, L1303-1369) | ○ |
| C-34 | Redo操作 | E-02 (L851-854, L1371-1420) | ○ |
| C-35 | 履歴なしUndo | E-02 (L1307-1308) | ○ |
| C-36 | Shift+左選択 | E-02 (L876-884) | ○ |
| C-37 | 行頭移動 | E-02 (L1151-1156, L688-700) | ○ |
| C-38 | 行末移動 | E-02 (L1161-1167, L703-713) | ○ |
| C-39 | テキスト先頭移動 | E-02 (L1115-1118) | ○ |
| C-40 | テキスト末尾移動 | E-02 (L1123-1127) | ○ |
| C-41 | PageUp | E-02 (L1008-1083) | ○ |
| C-42 | PageDown | E-02 (L937-1006) | ○ |
| C-43 | テキスト入力単文字 | E-02 (L798-821) | ○ |
| C-44 | テキスト入力複数文字 | E-02 (L798-821) | ○ |
| C-45 | シングルライン改行 | E-02 (L801-802) | ○ |
| C-46 | インサートモード | E-02 (L804-811) | ○ |
| C-47 | 削除Undo | E-02 (L1303-1369) | ○ |
| C-48 | 挿入Undo | E-02 (L1303-1369) | ○ |
| C-49 | Undo後Redo | E-02 (L1371-1420) | ○ |
| C-50 | カーソルクランプ | E-02 (L616-627) | ○ |
| C-51 | 選択範囲クランプ | E-02 (L616-627) | ○ |

### imstb_truetype.h（TrueTypeフォント）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | InitFont正常系 | E-03 (L738, L1388) | ○ |
| C-53 | InitFont無効データ | E-03 (L1299-1311: stbtt__isfont) | ○ |
| C-54 | GetNumberOfFonts単一 | E-03 (L702, L1343-1357) | ○ |
| C-55 | GetNumberOfFonts TTC | E-03 (L1343-1357) | △ |
| C-56 | GetNumberOfFonts無効 | E-03 (L1343-1357) | ○ |
| C-57 | GetFontOffsetForIndex正常 | E-03 (L709, L1324-1341) | ○ |
| C-58 | GetFontOffsetForIndex範囲外 | E-03 (L1324-1341) | ○ |
| C-59 | FindGlyphIndex存在 | E-03 (L750, L1501) | ○ |
| C-60 | FindGlyphIndex不存在 | E-03 (L750, L1501) | ○ |
| C-61 | ScaleForPixelHeight | E-03 (L763) | ○ |
| C-62 | ScaleForPixelHeight小スケール | E-03 (L763) | ○ |
| C-63 | ScaleForMappingEmToPixels | E-03 (L771) | ○ |
| C-64 | GetFontVMetrics | E-03 (L776) | ○ |
| C-65 | GetFontVMetricsOS2あり | E-03 (L784) | ○ |
| C-66 | GetFontVMetricsOS2なし | E-03 (L784) | △ |
| C-67 | GetFontBoundingBox | E-03 (L790) | ○ |
| C-68 | GetCodepointHMetrics | E-03 (L793) | ○ |
| C-69 | GetCodepointKernAdvanceあり | E-03 (L798) | ○ |
| C-70 | GetCodepointKernAdvanceなし | E-03 (L798) | ○ |
| C-71 | GetCodepointBox存在 | E-03 (L801, L1646) | ○ |
| C-72 | GetCodepointBox不存在 | E-03 (L801, L1646) | ○ |
| C-73 | IsGlyphEmpty描画あり | E-03 (L847, L1651) | ○ |
| C-74 | IsGlyphEmptyスペース | E-03 (L847, L1651) | ○ |
| C-75 | GetCodepointShape | E-03 (L850-851, L1594) | ○ |
| C-76 | FreeShape | E-03 (L862) | ○ |
| C-77 | GetCodepointBitmap | E-03 (L879) | ○ |
| C-78 | GetCodepointBitmap小スケール | E-03 (L879) | ○ |
| C-79 | FreeBitmap | E-03 (L876) | ○ |
| C-80 | MakeCodepointBitmap | E-03 (L892) | ○ |
| C-81 | GetCodepointBitmapBox | E-03 (L906) | ○ |
| C-82 | BakeFontBitmap正常 | E-03 (L538) | ○ |
| C-83 | BakeFontBitmapサイズ不足 | E-03 (L538, L543-545) | ○ |
| C-84 | GetBakedQuad | E-03 (L554) | ○ |
| C-85 | PackBegin | E-03 (L593) | ○ |
| C-86 | PackEnd | E-03 (L604) | ○ |
| C-87 | PackFontRange | E-03 (L609) | ○ |
| C-88 | PackFontRanges | E-03 (L634) | ○ |
| C-89 | PackSetOversampling | E-03 (L640) | ○ |
| C-90 | PackSetSkipMissingCodepoints | E-03 (L656) | ○ |
| C-91 | GetPackedQuad | E-03 (L662) | ○ |
| C-92 | GetScaledFontVMetrics | E-03 (L569) | ○ |
| C-93 | GetKerningTableLength | E-03 (L816) | ○ |
| C-94 | GetKerningTable | E-03 (L817) | △ |
| C-95 | GetGlyphSDF | E-03 (L953) | △ |
| C-96 | FreeSDF | E-03 (L950) | ○ |
| C-97 | GetCodepointSDF | E-03 (L954) | ○ |
| C-98 | FindMatchingFont | E-03 (L1026) | △ |
| C-99 | CompareUTF8toUTF16一致 | E-03 (L1037) | ○ |
| C-100 | CompareUTF8toUTF16不一致 | E-03 (L1037) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-55（TTCフォントコレクション）**：TTCフォーマットの実際のテストデータが必要。TTFファイルのみでは検証困難。
  - 候補：Windowsシステムフォント / macOSシステムフォント / 公開TTCファイル
- **C-66（OS/2テーブル不在）**：OS/2テーブルを持たないフォントファイルが必要。
  - 候補：古いType1変換フォント / カスタムフォント
- **C-94（カーニングテーブル）**：カーニング情報を含むフォントが必要。
  - 候補：商用フォント / 適切なオープンソースフォント
- **C-95（SDF生成）**：SDFアルゴリズムの内部実装が複雑であり、期待値の検証が困難。
  - 候補：既知の正解データとの比較テスト
- **C-98（FindMatchingFont）**：フォント名マッチングのプラットフォーム依存性あり。
  - 候補：クロスプラットフォームテスト / 特定フォント名での検証

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 矩形パッキング関連（UT-STB-001〜013）：数学的アルゴリズムで検証可能
- **0: 低リスク** - テキスト編集基本操作（UT-STB-014〜051）：ロジックが明確
- **1: 中リスク** - フォント初期化・メトリクス取得（UT-STB-052〜074）：フォントデータ依存
- **1: 中リスク** - ビットマップ生成（UT-STB-077〜084）：視覚的検証が必要
- **2: 高リスク** - SDF生成（UT-STB-095〜097）：アルゴリズムが複雑
- **1: 中リスク** - フォントパッキング（UT-STB-085〜091）：複数ライブラリの連携

## 6) レビュアーチェックリスト（最小）
- [ ] サードパーティライブラリ（STB）の特性を理解しているか
- [ ] テスト用フォントファイル（TTF/TTC）の準備は可能か
- [ ] OS/2テーブルの有無を確認できるフォントを用意できるか
- [ ] 矩形パッキングのテストで十分なカバレッジがあるか
- [ ] テキスト編集のUndo/Redoスタックの境界テストは網羅されているか
- [ ] ビットマップ生成結果の検証方法は確立されているか
- [ ] SDF生成の期待値検証方法は定義されているか
- [ ] プラットフォーム固有の動作差異は考慮されているか
- [ ] メモリ解放（FreeBitmap, FreeShape, FreeSDF）のテストで二重解放等のエッジケースは考慮されているか
