font-variant-emoji で ↔ や ✌ を絵文字ではなく文字として表示する
font-variant-emoji: text を指定すると、矢印や記号がカラー絵文字に化けず、周りの文字と同じモノクロの記号として表示される。逆に emoji で絵文字表示を強制できる。
どんな時に使う?
↔ ☺ ✌ 🔉 などの Unicode 文字には「文字(テキスト)表示」と「絵文字表示」の2通りがあり、どちらで出るかは OS やフォントまかせになりがち。数式やドキュメントの矢印、ボタンラベルの記号がいきなりカラー絵文字になってデザインが崩れる、という昔からの問題を CSS で制御できる。
コード
css
/* 本文中の記号は文字として表示(数式の ↔ など) */
.prose,
.math {
font-variant-emoji: text;
}
/* リアクション欄などは必ずカラー絵文字で */
.reactions {
font-variant-emoji: emoji;
}値は3つ。
text… テキスト表示(モノクロの記号)emoji… 絵文字表示(カラー)unicode… 文字ごとの Unicode の既定や異体字セレクタ(U+FE0E / U+FE0F)に従うnormal(初期値)… ブラウザ・フォントの判断に任せる
HTML 側で1文字だけ固定したいなら、文字の後ろに異体字セレクタを付ける方法もある(↔︎ でテキスト、↔️ で絵文字)。
注意点・対応状況
- Chrome / Edge と Safari は対応済み。Firefox を含む最新の対応状況は MDN / Can I use で確認する。未対応ブラウザでは従来どおり表示されるだけなので、気軽に足せる。
- 実際にテキスト表示になるかは、その文字のモノクロ字形を持つフォントがあるかにも左右される。
font-familyに記号を含むフォントを入れておくと確実。 - 😀 のように絵文字専用の文字は
textにしてもモノクロにならないことが多い。効くのは「両方の表示を持つ文字」(矢印・記号類)が中心。
出典
- @xah_lee(2026-11-10、解説ページの画像付き)