20.【Marp】日本語豆腐(□)はなぜ設定で直らないのか|PPTXとフォントの構造

tags:


🎯 この記事でやること

前回の記事では、
Marp × GitHub Actions で PPTX を生成した際、日本語が □(豆腐)になる問題で止まっている状況を書きました。

👉 今回は 解決編ではありません

この記事の目的は 1 つだけです。

なぜ日本語豆腐は「設定をいじっても」直らないのかを、構造で説明すること


結論(先に)

日本語豆腐は、Marp の設定不足ではない。
PPTX とフォントの構造上、そうなるようにできている。

だから、

CI では再発する。


🧠 豆腐(□)の正体

まず前提。

フォントに、その文字のグリフが無い
ただそれだけ。

PPTX では、

が来た瞬間、
代替せず □ を出すケースがある


💣 なぜ Marp + PPTX で起きやすいのか

問題の中心は code / pre

Marp では、

等幅フォント(monospace)として扱われる。

しかし、

結果:

👉
HTML で見えるのに PPTX で壊れる最大の理由


❌ なぜ「設定で直したつもり」になるのか

よくやりがちな対処:

これらは確かに、

しかし CI では、

👉
再現性がない修正は、CI では無効


🔁 なぜ CI だと再発するのか

CI 環境では:

つまり、

「ローカルで直った」は、何の保証にもならない

CI で再発するのは
仕様どおり


🧩 正しい修正ポイントはどこか

結論はこれ。

👉
Marp の front matter(CSS)で最初からフォントを固定する

ここだけが、
唯一再現性のある修正ポイント


⚠️ それでも「完全解決」と言えない理由

正直に書く。

つまり、

100% 安全な構成は、今のところ存在しない

できるのは、

ここまで。


🧠 実務での現実的な判断基準

迷ったら、この 1 行。

それは「コード」か?

日本語説明を code に入れない
これだけで、事故は激減する。


まとめ

だから、

理解して避けるしかない問題


📌 結論(1 行)

日本語豆腐は、
設定で解決できる問題ではない。


関連記事


End.