﻿# 10. 準拠仕様マップ

版: **1.0.0**  

**製品契約（Ohyna Markdown）と外部仕様／参照実装の境界**、および競合時の解決規則です。

読み方:

| 区分 | 意味 |
|------|------|
| **製品契約** | 利用者が従う入力・意味・ゲート。基準は主に [08](./08-入力解読仕様.md)・[09](./09-出力仕様.md)・[03](./03-文書設定リファレンス.md) |
| **採用仕様** | 外部規格をそのまま参照 |
| **制限付き採用** | 外部エンジンの解釈範囲を製品が受理する部分集合として固定 |
| **参照実装** | 現バージョンのライブラリ名・版。交換しても製品契約は維持できる |
| **実装ピン** | 再現性のため版または CDN タグを固定しているもの |

---

## 0. 製品言語の位置づけ

Ohyna は文書形式 **Ohyna Markdown 1.0** を定義します。

- 利用者契約の主語は「Ohyna Markdown で使える記法」です。
- 構文の基礎に Markdown 系の慣例を用い、図・数式・設定・PDF 組版を製品側で定義します。
- 表・タスクリストなど一般的な記法の一部は **記法互換** として提供します。表示結果は本製品の出力仕様に従います。

```text
利用者契約:     Ohyna Markdown 1.0 ＋ Ohyna Rendering
採用規格:       JSON (ECMA-404)、ISO 216 A4 など
制限付き採用:   固定版 Mermaid / KaTeX が解釈する本文
参照実装:       Markdown 変換・ハイライト・印刷エンジン等
```

---

## 1. 競合時の優先順位

同一入力または出力について複数の仕様・実装が異なる結果を示す場合、次の順序で解決します。

1. **セキュリティ契約**（本章 §8）
2. **Ohyna の明示的な製品契約**（Ohyna Markdown / Rendering / 本マップの基準表）
3. **Rendering Profile で固定された外部仕様**（版ピン付き）
4. **固定されたライブラリの実装挙動**（参照実装）
5. **参考として記載した CommonMark、GFM その他**

例: GFM で許容される HTML でも、製品のサニタイズ規則が適用される場合はセキュリティ契約を優先します。

### 1.1 処理ごとの基準

| 対象 | 基準 |
|------|------|
| フェンス認識 | **Ohyna Fence Grammar**（[08](./08-入力解読仕様.md) §3） |
| 通常 Markdown 本文変換 | 製品が受理する構文（固定拡張セット） |
| 言語識別子の可否 | **Ohyna Language Registry** |
| Mermaid フェンスの種別 | 製品契約（図 / `code` / 追加トークン時の診断） |
| Mermaid 本文構文 | Rendering Profile の Mermaid |
| 数式区切り・数式フェンス | 製品契約 |
| 数式本文 | Rendering Profile の KaTeX |
| 設定の意味・マージ | Document Settings（[03](./03-文書設定リファレンス.md)） |
| HTML 許可範囲 | 本章 §8（利用者由来断片） |
| エンジン生成 HTML/SVG | 製品の Trusted 出力（専用経路） |
| 最終ページ割・用紙箱 | CSS `@page` ＋ 印刷エンジン |
| プレビュー分割 | 製品独自の近似（配布基準は PDF） |
| 静的解析ゲート | 製品契約（error が 0 件のときプレビュー／PDF が進む） |

エンジンフェンスおよび静的解析対象フェンスの認識には Ohyna Fence Grammar を使用します。一般的な Markdown 処理系と差がある場合、**Ohyna Fence Grammar の判定を優先**します。

---

## 2. 全体マップ

| 処理範囲 | 契約の種類 | 版／ピン | 適用されるもの | 本製品が上乗せする契約 | 詳細 |
|----------|------------|----------|----------------|------------------------|------|
| 本文 → HTML | 制限付き採用＋製品 | 製品依存セット | 見出し・リスト・表等 | 拡張の固定セット（[08](./08-入力解読仕様.md) §4）。表示結果は Ohyna Rendering | [08](./08-入力解読仕様.md) |
| フェンス走査 | **製品（Ohyna Fence Grammar）** | 製品固定 | info ::= language argument* | 図は `` ```mermaid ``、コードは `` ```mermaid code ``、数式は `` ```math `` 等 | [08](./08-入力解読仕様.md) §3 |
| シンタックスハイライト | 製品 Registry／参照実装 | 製品固定 | 登録済み言語識別子 | 未登録は静的解析 error | [08](./08-入力解読仕様.md) |
| 数式 | 制限付き採用 KaTeX | **0.16.22** 固定 | `$` / `$$` / 数式フェンス本文 | レンダラは recovery。検証は `katex-error` → error | [08](./08-入力解読仕様.md) §5 |
| 図 | 制限付き採用 Mermaid | **メジャー 11**（パッチ追従しうる） | 図フェンス本文 | フェンス形式は製品契約。描画失敗は図単位エラー枠（ゲート通過後） | [09](./09-出力仕様.md) §6 |
| Front matter | YAML 構文＋製品意味 | 製品固定 | `---` ブロック | `ohyna:`・必須キー・マージ規則は製品 | [03](./03-文書設定リファレンス.md) |
| HTML サニタイズ | 製品 | 製品固定 | **利用者由来** HTML 断片のみ | 許可リストは本章 §8。エンジン出力は別経路 | 本章 §8 |
| `lang` | 製品 | 任意文字列 | HTML `lang` へ載せる | 例: `ja`、`en` | [03](./03-文書設定リファレンス.md) |
| 用紙 | **採用** ISO 216 A4 等 | 設定連動 | 印刷寸法 | 余白は CSS `@page` | [09](./09-出力仕様.md) |
| PDF | 参照実装の印刷エンジン | 製品同梱相当 | PDF バイト | ネットワーク許可・待機条件は製品 | [09](./09-出力仕様.md)、本章 §8 |
| プレビュー分割 | 製品（近似） | 画面 | 用紙スタック | 配布・印刷の基準は PDF | [09](./09-出力仕様.md) |
| 静的解析ゲート | 製品 | — | 画面のプレビュー／PDF | error が 0 件のとき進む | [08](./08-入力解読仕様.md) §7 |
| 編集画面の色分け | 参照実装 | — | 編集中のみ | 成果物ハイライトとは別 | マニュアル |

---

## 3. Markdown 本文（Ohyna Markdown）

### 3.1 契約と参照実装

- **製品が受理する構文**が利用者契約です。
- 表・タスクリスト・自動リンク等は **GFM 由来の記法互換**として提供し、表示結果は Ohyna Rendering に従います。
- HTML ブロックはそのまま HTML として扱います。

### 3.2 製品が独自に決めるもの

| 項目 | 契約 |
|------|------|
| エンジン用フェンスの退避 | 図・数式を変換前にプレースホルダ化。`mermaid code` は言語識別子へ正規化 |
| `<kbd>` | 許可 HTML として残す |
| details／タスクチェック | 出力時は常に展開・見た目固定 |
| 見出し keep-next | [09](./09-出力仕様.md) §5 |

---

## 4. コードフェンスとハイライト

| 層 | 基準 |
|----|------|
| 開閉・info 文法 | Ohyna Fence Grammar |
| 言語識別子の可否 | Ohyna Language Registry |
| 成果物の色分け | 製品のハイライト実装 |
| JSON／YAML フェンス内容 | 構文として検証しうる |
| `` ```mermaid `` | 図ノード |
| `` ```mermaid code `` | Mermaid コードノード（ハイライト） |
| 数式フェンス | 数式ノード |

---

## 5. 数式（KaTeX）

| 項目 | 内容 |
|------|------|
| エンジン | KaTeX **0.16.22**（ピン固定） |
| 受け付ける TeX | 当該版が解釈する範囲 |
| 区切り | 製品契約（`$` / `$$` / `\(`/`\)` / `\[`/`\]`／数式フェンス） |
| レンダラ設定 | エラーを例外にせず recovery（診断位置回収のため） |
| 検証ポリシー | 出力に `katex-error` があれば静的解析 **error**（`validationPolicy = reject`） |

---

## 6. 図（Mermaid）

| 項目 | 内容 |
|------|------|
| フェンス認識 | 製品契約（Ohyna Fence Grammar） |
| エンジン | Mermaid.js **メジャー 11**（パッチは追従しうる）＋ ZenUML（別系統） |
| 図種・構文 | 当該エンジン版の契約 |
| 配置 | [09](./09-出力仕様.md)（SVG／画面描画）。コード表示は通常のハイライト |

---

## 7. 設定データ

| データ | 構文 | 意味 |
|--------|------|------|
| front matter | YAML＋製品の区切り | [03](./03-文書設定リファレンス.md) |
| `lang` | 任意文字列 | HTML `lang`。例: `ja`、`en` |

マージ規則の基準は [03](./03-文書設定リファレンス.md) §1.7。空文字は「未指定」として下位の既定へ進みます。

---

## 8. HTML・セキュリティ（信頼境界）

画面から使うときの信頼境界の要約です。デプロイ手順の詳細は開発者向け文書にあります。

| 起源 | 扱い |
|------|------|
| 利用者 HTML／Markdown 由来断片 | 許可リストでサニタイズ → URL 再フィルタ |
| Mermaid／KaTeX 等の製品レンダラ出力 | Trusted。サニタイズ後に差し込み |
| 最終文書 | 外部通信は許可された宛先のみ。ローカルファイル探索を抑止 |

利用者由来断片と Trusted 出力は経路を分けます。

### 8.1 利用者由来 HTML の許可（要約）

許可タグの例: 見出し・段落・リスト・表・リンク・画像・コード・引用・`<details>`・`<kbd>` など、文書に必要なもの。  
`javascript:` などの危険な URL は除去されます。リンクは `http` / `https` / `mailto` / `#` / `/` で始まるパスなど、製品が許すスキームのみ残します。画像 `src` は `http` / `https` / `data:image/` など。

### 8.2 CSS 注入対策

`fontFamily` / `fontSize` / `lineHeight` は正規表現で受理範囲を制限します（`url(` や `;` など危険な断片を拒否）。

### 8.3 PDF 化時の外部通信（要約）

許可しうるもの: Web フォント、数式／図描画用の製品指定 CDN、`data:`、製品内部の描画ホスト。許可一覧外は遮断します。

### 8.4 本画面での画像

本画面から PDF 化するとき、画像は `https:` / `http:` / `data:` で参照します（詳細は [08](./08-入力解読仕様.md) §6）。

---

## 9. 用紙・PDF・プレビュー

| 項目 | 基準 |
|------|------|
| 物理寸法 | ISO 216 等（設定の用紙サイズ） |
| ページ箱・余白の宣言 | CSS `@page` |
| 実際のページ割 | 印刷エンジンが実装する `@page` 範囲 |
| プレビュー分割 | 近似。配布・印刷の基準は PDF |

---

## 10. 画面でのゲート

| 経路 | 静的解析ゲート |
|------|----------------|
| 画面のプレビュー／PDF | **必須**（error が 0 件のとき進む） |

本ヘルプの対象は画面利用です。組織が別経路（バッチ等）を用意している場合のゲート差は、その提供者の案内に従ってください。

---

## 11. Rendering Profile（1.0）

| 構成要素 | 1.0 のピン／下限 |
|----------|------------------|
| 製品版 | 1.0.0 |
| Markdown 変換・ハイライト・YAML・サニタイズ | 製品が固定する依存 |
| KaTeX | **0.16.22** |
| Mermaid | メジャー **11**（パッチ追従しうる） |
| ZenUML | 別系統（変更範囲が広い） |
| 印刷エンジン | 製品が同梱／インストールする版 |
| 印刷 CSS | 製品テーマ |

外部仕様の版を上げる変更は、製品側で本マップと関連ヘルプを同じ作業単位で更新します。

---

## 12. 製品契約ドキュメントとの対応

| 契約の種類 | 文書 |
|------------|------|
| Ohyna Markdown（入力・フェンス・解析） | [08-入力解読仕様.md](./08-入力解読仕様.md) |
| Ohyna Rendering（幾何・表紙・プレビュー／PDF） | [09-出力仕様.md](./09-出力仕様.md) |
| 設定キー・マージ | [03-文書設定リファレンス.md](./03-文書設定リファレンス.md) |
| 信頼境界・許可方針 | 本章 §8 |
| 利用者向け記法 | マニュアル（はじめに〜困ったとき） |
