テック技報最新号へ →
CSS

font-variant-emoji で ↔ や ✌ を絵文字ではなく文字として表示する

font-variant-emoji: text を指定すると、矢印や記号がカラー絵文字に化けず、周りの文字と同じモノクロの記号として表示される。逆に emoji で絵文字表示を強制できる。

@xah_lee · 投稿 2026-11-10

どんな時に使う?

↔ ☺ ✌ 🔉 などの 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、解説ページの画像付き)
X の元の投稿を開く