設計ノート: インラインコードの `<mark>` チップ廃止(色のみ表現へ)
This content is not available in your language yet.
- 日付: 2026-07-31 / ステータス: 採用済み
- 関連: ライブフィードバック「インラインコード内のまだら太字」「かすれ」
根本原因(実機プローブで確定)
Section titled “根本原因(実機プローブで確定)”Unity 2022.3 の TextCore は、<mark> の背景クアッドをグリフのアトラスページによって上に描いたり下に描いたりする(DynamicOS FontAsset のマルチページアトラス環境)。
- クアッドに覆われたグリフ → 60%黒が乗り「薄く/かすれて」見える
- 覆われないグリフ → 鮮明なまま「太く」見える
- → 同一スパン内で混在し「まだら太字」として知覚される
- 不透明markでは文字が完全に消える(全グリフの上にクアッドが乗るケース)
証拠: docs/verify/UAPFontProbe_*.png(実マークアップ再現・不透明mark・色のみ比較)、UAPPrefillProbe_*.png(下記B案の反証)
検討した選択肢
Section titled “検討した選択肢”| 案 | 内容 | 判定 | 根拠 |
|---|---|---|---|
| A | mark廃止、<color> のみ | 採用 | プローブで完全に均一な描画を確認。実装1行+テスト更新のみ |
| B | アトラス事前充填で単一ページ化しZ順を安定させる | 棄却 | ASCII95文字充填だけでアトラス4ページ(実測)。CJKでは原理的に単一ページ不可能 |
| C | リッチテキストをやめ実VisualElementチップで描画 | 棄却 | 段落の自然な折り返し・テキスト選択を破壊。表セル内でも同問題。コスト大 |
| D | Unityパッチ更新でのTextCore修正待ち | 棄却 | エディタ版はVRChatプロジェクト都合で2022.3.22f1に固定。制御不能な外部要因 |
InlineMarkupConverter はインラインコードを <color=#D8B4A0>...</color> のみで出力する(mark出力コードパスは削除)。回帰ガード: Convert_InlineCode_ProducesColorOnly_NoMark テストが <mark の再導入を検出して失敗する。
- インラインコードの「かすれ」も同時に解消(60%黒クアッドの覆いが原因だったため)
_codeMark/DefaultCodeMarkは当面残置(コードブロック等での将来利用余地)。未使用警告が出る場合は次の整理ラウンドで削除