Skip to content

設計ノート: インラインコードの `<mark>` チップ廃止(色のみ表現へ)

This content is not available in your language yet.

  • 日付: 2026-07-31 / ステータス: 採用済み
  • 関連: ライブフィードバック「インラインコード内のまだら太字」「かすれ」

Unity 2022.3 の TextCore は、<mark> の背景クアッドをグリフのアトラスページによって上に描いたり下に描いたりする(DynamicOS FontAsset のマルチページアトラス環境)。

  • クアッドに覆われたグリフ → 60%黒が乗り「薄く/かすれて」見える
  • 覆われないグリフ → 鮮明なまま「太く」見える
  • → 同一スパン内で混在し「まだら太字」として知覚される
  • 不透明markでは文字が完全に消える(全グリフの上にクアッドが乗るケース)

証拠: docs/verify/UAPFontProbe_*.png(実マークアップ再現・不透明mark・色のみ比較)、UAPPrefillProbe_*.png(下記B案の反証)

案内容判定根拠
Amark廃止、<color> のみ採用プローブで完全に均一な描画を確認。実装1行+テスト更新のみ
Bアトラス事前充填で単一ページ化しZ順を安定させる棄却ASCII95文字充填だけでアトラス4ページ(実測)。CJKでは原理的に単一ページ不可能
Cリッチテキストをやめ実VisualElementチップで描画棄却段落の自然な折り返し・テキスト選択を破壊。表セル内でも同問題。コスト大
DUnityパッチ更新でのTextCore修正待ち棄却エディタ版はVRChatプロジェクト都合で2022.3.22f1に固定。制御不能な外部要因

InlineMarkupConverter はインラインコードを <color=#D8B4A0>...</color> のみで出力する(mark出力コードパスは削除)。回帰ガード: Convert_InlineCode_ProducesColorOnly_NoMark テストが <mark の再導入を検出して失敗する。

  • インラインコードの「かすれ」も同時に解消(60%黒クアッドの覆いが原因だったため)
  • _codeMark / DefaultCodeMark は当面残置(コードブロック等での将来利用余地)。未使用警告が出る場合は次の整理ラウンドで削除