Ctrl+K

テキストスタイルと絵文字スタイル:同じ文字なのにどうして“二つの顔”があるのか?

絵文字の文字スタイル異体字セレクタ

絵文字をコピーしたのに、貼り付けたら白黒になってしまった、という経験はありませんか?同じ文字なのに、白黒とカラーの2つの顔があるのはなぜでしょうか。そこにはどんな仕組みがあるのでしょうか。

文字の表示は誰が決めるのか

文字の表示は一意に決まらず、白黒の通常文字として表示されることもあれば、カラーの絵文字として表示されることもあります。これは、レンダリングエンジン、使用中のフォント、そしてUnicode標準におけるその文字のデフォルトの表示属性によって決まります。例えば、プレーンテキスト環境では白黒の通常文字として表示され、チャットアプリではカラーの絵文字として表示されます。 この不確実性を解消し、表示スタイルを明示的に指定するために、文字の後ろに特殊な文字を追加して、システムに表示方法を指示します。

異体字セレクタ:文字の「スタイル切り替えスイッチ」

この特殊な文字こそが「異体字セレクタ(Variation Selector)」です。異体字セレクタは通常不可視であり、その存在を目にすることはありません。

異体字セレクタには以下の2つがあります。

  • U+FE0E (異体字セレクタ-15 / VS15):文字をテキストスタイル(通常は白黒・単色)で強制表示します。
  • U+FE0F (異体字セレクタ-16 / VS16):文字を絵文字スタイル(通常はカラー・画像化)で強制表示します。

例えば、スマイリー記号「☺」のコードは U+263A です。異なる異体字セレクタを付加すると、表示は次のようになります。

基本文字異体字セレクタ表示結果スタイル説明
U+263AU+FE0E☺テキストスタイル
U+263AU+FE0F☺️絵文字スタイル

絵文字が登場する以前から、Unicodeコンソーシアムはすでに多数の記号類の文字(例:☹︎ ☺︎ ♠︎ ♣︎ ♥︎ ♦︎)を収録していました。例えば、このスマイリー記号「☺」は、後に登場した絵文字☺️と顔が被っています。そこでUnicodeコンソーシアムは絵文字のエンコードを設計する際に、新たに文字を設計せず、このスマイリー記号のコードを借用しました。具体的な方法は、特殊な文字を追加して絵文字を実現するというものです。つまり、元の白黒文字の後ろに修飾子を付けることで、カラーの絵文字に変換するのです。これにより、過去のデータとの下位互換性を保ちつつ、現代のデバイスにおける視覚表現の要求も満たす、実に巧妙な設計です。

特殊なケース

もう1種類の特殊文字として、キーキャップ記号(#、*、数字0–9)があります。 これらの文字は通常の記号とは異なり、U+FE0F だけを付加するとカラー記号にはなりますが、絵文字にはなりません。 #️⃣、1️⃣ のようなキーボードボタン風に表示するには、3つのパーツからなる組み合わせが必要です:元の文字 + U+FE0F(強制絵文字) + U+20E3(結合囲みキーキャップ記号)。 U+20E3 は、前の文字を四角いキー枠で囲むための特殊なラップ文字です。単独では表示できず、必ず前の文字に結合されます。これがキーキャップ絵文字に追加のサフィックスが必要な理由です。

コード列表示結果説明
U+0023#通常のテキスト文字
U+0023 + U+FE0F#️強制絵文字スタイル(キーキャップなし、色のみ変化)
U+0023 + U+20E3#⃣キーキャップ効果(ただし白黒・単色の場合あり)
U+0023 + U+FE0F + U+20E3#️⃣完全なカラーキーキャップ絵文字

通常文字と絵文字の対照表

コード文字テキストスタイル絵文字スタイル
0023##︎#️⃣
002A**︎*️⃣
003000︎0️⃣
003111︎1️⃣
003222︎2️⃣
003333︎3️⃣
003444︎4️⃣
003555︎5️⃣
003666︎6️⃣
003777︎7️⃣
003888︎8️⃣
003999︎9️⃣
00A9©©︎©️
00AE®®︎®️
203C‼‼︎‼️
2049⁉⁉︎⁉️
2122™™︎™️
2139ℹℹ︎ℹ️
2194↔↔︎↔️
2195↕↕︎↕️
2196↖↖︎↖️
2197↗↗︎↗️
2198↘↘︎↘️
2199↙↙︎↙️
21A9↩↩︎↩️
21AA↪↪︎↪️
231A⌚⌚︎⌚️
231B⌛⌛︎⌛️
2328⌨⌨︎⌨️
23CF⏏⏏︎⏏️
23E9⏩⏩︎⏩️
23EA⏪⏪︎⏪️
23EB⏫⏫︎⏫️
23EC⏬⏬︎⏬️
23ED⏭⏭︎⏭️
23EE⏮⏮︎⏮️
23EF⏯⏯︎⏯️
23F0⏰⏰︎⏰️
23F1⏱⏱︎⏱️
23F2⏲⏲︎⏲️
23F3⏳⏳︎⏳️
23F8⏸⏸︎⏸️
23F9⏹⏹︎⏹️
23FA⏺⏺︎⏺️
24C2ⓂⓂ︎Ⓜ️
25AA▪▪︎▪️
25AB▫▫︎▫️
25B6▶▶︎▶️
25C0◀◀︎◀️
25FB◻◻︎◻️
25FC◼◼︎◼️
25FD◽◽︎◽️
25FE◾◾︎◾️
2600☀☀︎☀️
2601☁☁︎☁️
2602☂☂︎☂️
2603☃☃︎☃️
2604☄☄︎☄️
260E☎☎︎☎️
2611☑☑︎☑️
2614☔☔︎☔️
2615☕☕︎☕️
2618☘☘︎☘️
261D☝☝︎☝️
2620☠☠︎☠️
2622☢☢︎☢️
2623☣☣︎☣️
2626☦☦︎☦️
262A☪☪︎☪️
262E☮☮︎☮️
262F☯☯︎☯️
2638☸☸︎☸️
2639☹☹︎☹️
263A☺☺︎☺️
2640♀♀︎♀️
2642♂♂︎♂️
2648♈♈︎♈️
2649♉♉︎♉️
264A♊♊︎♊️
264B♋♋︎♋️
264C♌♌︎♌️
264D♍♍︎♍️
264E♎♎︎♎️
264F♏♏︎♏️
2650♐♐︎♐️
2651♑♑︎♑️
2652♒♒︎♒️
2653♓♓︎♓️
265F♟♟︎♟️
2660♠♠︎♠️
2663♣♣︎♣️
2665♥♥︎♥️
2666♦♦︎♦️
2668♨♨︎♨️
267B♻♻︎♻️
267E♾♾︎♾️
267F♿♿︎♿️
2692⚒⚒︎⚒️
2693⚓⚓︎⚓️
2694⚔⚔︎⚔️
2695⚕⚕︎⚕️
2696⚖⚖︎⚖️
2697⚗⚗︎⚗️
2699⚙⚙︎⚙️
269B⚛⚛︎⚛️
269C⚜⚜︎⚜️
26A0⚠⚠︎⚠️
26A1⚡⚡︎⚡️
26A7⚧⚧︎⚧️
26AA⚪⚪︎⚪️
26AB⚫⚫︎⚫️
26B0⚰⚰︎⚰️
26B1⚱⚱︎⚱️
26BD⚽⚽︎⚽️
26BE⚾⚾︎⚾️
26C4⛄⛄︎⛄️
26C5⛅⛅︎⛅️
26C8⛈⛈︎⛈️
26CE⛎⛎︎⛎️
26CF⛏⛏︎⛏️
26D1⛑⛑︎⛑️
26D3⛓⛓︎⛓️
26D4⛔⛔︎⛔️
26E9⛩⛩︎⛩️
26EA⛪⛪︎⛪️
26F0⛰⛰︎⛰️
26F1⛱⛱︎⛱️
26F2⛲⛲︎⛲️
26F3⛳⛳︎⛳️
26F4⛴⛴︎⛴️
26F5⛵⛵︎⛵️
26F7⛷⛷︎⛷️
26F8⛸⛸︎⛸️
26F9⛹⛹︎⛹️
26FA⛺⛺︎⛺️
26FD⛽⛽︎⛽️
2702✂✂︎✂️
2705✅✅︎✅️
2708✈✈︎✈️
2709✉✉︎✉️
270A✊✊︎✊️
270B✋✋︎✋️
270C✌✌︎✌️
270D✍✍︎✍️
270F✏✏︎✏️
2712✒✒︎✒️
2714✔✔︎✔️
2716✖✖︎✖️
271D✝✝︎✝️
2721✡✡︎✡️
2728✨✨︎✨️
2733✳✳︎✳️
2734✴✴︎✴️
2744❄❄︎❄️
2747❇❇︎❇️
274C❌❌︎❌️
274E❎❎︎❎️
2753❓❓︎❓️
2754❔❔︎❔️
2755❕❕︎❕️
2757❗❗︎❗️
2763❣❣︎❣️
2764❤❤︎❤️
2795➕➕︎➕️
2796➖➖︎➖️
2797➗➗︎➗️
27A1➡➡︎➡️
27B0➰➰︎➰️
27BF➿➿︎➿️
2934⤴⤴︎⤴️
2935⤵⤵︎⤵️
2B05⬅⬅︎⬅️
2B06⬆⬆︎⬆️
2B07⬇⬇︎⬇️
2B1B⬛⬛︎⬛️
2B1C⬜⬜︎⬜️
2B50⭐⭐︎⭐️
2B55⭕⭕︎⭕️
3030〰〰︎〰️
303D〽〽︎〽️
3297㊗㊗︎㊗️
3299㊙㊙︎㊙️
1F004🀄🀄︎🀄️
1F170🅰🅰︎🅰️
1F171🅱🅱︎🅱️
1F17E🅾🅾︎🅾️
1F17F🅿🅿︎🅿️
1F202🈂🈂︎🈂️
1F21A🈚🈚︎🈚️
1F22F🈯🈯︎🈯️
1F237🈷🈷︎🈷️
1F30D🌍🌍︎🌍️
1F30E🌎🌎︎🌎️
1F30F🌏🌏︎🌏️
1F315🌕🌕︎🌕️
1F31C🌜🌜︎🌜️
1F321🌡🌡︎🌡️
1F324🌤🌤︎🌤️
1F325🌥🌥︎🌥️
1F326🌦🌦︎🌦️
1F327🌧🌧︎🌧️
1F328🌨🌨︎🌨️
1F329🌩🌩︎🌩️
1F32A🌪🌪︎🌪️
1F32B🌫🌫︎🌫️
1F32C🌬🌬︎🌬️
1F336🌶🌶︎🌶️
1F378🍸🍸︎🍸️
1F37D🍽🍽︎🍽️
1F393🎓🎓︎🎓️
1F396🎖🎖︎🎖️
1F397🎗🎗︎🎗️
1F399🎙🎙︎🎙️
1F39A🎚🎚︎🎚️
1F39B🎛🎛︎🎛️
1F39E🎞🎞︎🎞️
1F39F🎟🎟︎🎟️
1F3A7🎧🎧︎🎧️
1F3AC🎬🎬︎🎬️
1F3AD🎭🎭︎🎭️
1F3AE🎮🎮︎🎮️
1F3C2🏂🏂︎🏂️
1F3C4🏄🏄︎🏄️
1F3C6🏆🏆︎🏆️
1F3CA🏊🏊︎🏊️
1F3CB🏋🏋︎🏋️
1F3CC🏌🏌︎🏌️
1F3CD🏍🏍︎🏍️
1F3CE🏎🏎︎🏎️
1F3D4🏔🏔︎🏔️
1F3D5🏕🏕︎🏕️
1F3D6🏖🏖︎🏖️
1F3D7🏗🏗︎🏗️
1F3D8🏘🏘︎🏘️
1F3D9🏙🏙︎🏙️
1F3DA🏚🏚︎🏚️
1F3DB🏛🏛︎🏛️
1F3DC🏜🏜︎🏜️
1F3DD🏝🏝︎🏝️
1F3DE🏞🏞︎🏞️
1F3DF🏟🏟︎🏟️
1F3E0🏠🏠︎🏠️
1F3ED🏭🏭︎🏭️
1F3F3🏳🏳︎🏳️
1F3F5🏵🏵︎🏵️
1F3F7🏷🏷︎🏷️
1F408🐈🐈︎🐈️
1F415🐕🐕︎🐕️
1F41F🐟🐟︎🐟️
1F426🐦🐦︎🐦️
1F43F🐿🐿︎🐿️
1F441👁👁︎👁️
1F442👂👂︎👂️
1F446👆👆︎👆️
1F447👇👇︎👇️
1F448👈👈︎👈️
1F449👉👉︎👉️
1F44D👍👍︎👍️
1F44E👎👎︎👎️
1F453👓👓︎👓️
1F46A👪👪︎👪️
1F47D👽👽︎👽️
1F4A3💣💣︎💣️
1F4B0💰💰︎💰️
1F4B3💳💳︎💳️
1F4BB💻💻︎💻️
1F4BF💿💿︎💿️
1F4CB📋📋︎📋️
1F4DA📚📚︎📚️
1F4DF📟📟︎📟️
1F4E4📤📤︎📤️
1F4E5📥📥︎📥️
1F4E6📦📦︎📦️
1F4EA📪📪︎📪️
1F4EB📫📫︎📫️
1F4EC📬📬︎📬️
1F4ED📭📭︎📭️
1F4F7📷📷︎📷️
1F4F9📹📹︎📹️
1F4FA📺📺︎📺️
1F4FB📻📻︎📻️
1F4FD📽📽︎📽️
1F508🔈🔈︎🔈️
1F50D🔍🔍︎🔍️
1F512🔒🔒︎🔒️
1F513🔓🔓︎🔓️
1F549🕉🕉︎🕉️
1F54A🕊🕊︎🕊️
1F550🕐🕐︎🕐️
1F551🕑🕑︎🕑️
1F552🕒🕒︎🕒️
1F553🕓🕓︎🕓️
1F554🕔🕔︎🕔️
1F555🕕🕕︎🕕️
1F556🕖🕖︎🕖️
1F557🕗🕗︎🕗️
1F558🕘🕘︎🕘️
1F559🕙🕙︎🕙️
1F55A🕚🕚︎🕚️
1F55B🕛🕛︎🕛️
1F55C🕜🕜︎🕜️
1F55D🕝🕝︎🕝️
1F55E🕞🕞︎🕞️
1F55F🕟🕟︎🕟️
1F560🕠🕠︎🕠️
1F561🕡🕡︎🕡️
1F562🕢🕢︎🕢️
1F563🕣🕣︎🕣️
1F564🕤🕤︎🕤️
1F565🕥🕥︎🕥️
1F566🕦🕦︎🕦️
1F567🕧🕧︎🕧️
1F56F🕯🕯︎🕯️
1F570🕰🕰︎🕰️
1F573🕳🕳︎🕳️
1F574🕴🕴︎🕴️
1F575🕵🕵︎🕵️
1F576🕶🕶︎🕶️
1F577🕷🕷︎🕷️
1F578🕸🕸︎🕸️
1F579🕹🕹︎🕹️
1F587🖇🖇︎🖇️
1F58A🖊🖊︎🖊️
1F58B🖋🖋︎🖋️
1F58C🖌🖌︎🖌️
1F58D🖍🖍︎🖍️
1F590🖐🖐︎🖐️
1F5A5🖥🖥︎🖥️
1F5A8🖨🖨︎🖨️
1F5B1🖱🖱︎🖱️
1F5B2🖲🖲︎🖲️
1F5BC🖼🖼︎🖼️
1F5C2🗂🗂︎🗂️
1F5C3🗃🗃︎🗃️
1F5C4🗄🗄︎🗄️
1F5D1🗑🗑︎🗑️
1F5D2🗒🗒︎🗒️
1F5D3🗓🗓︎🗓️
1F5DC🗜🗜︎🗜️
1F5DD🗝🗝︎🗝️
1F5DE🗞🗞︎🗞️
1F5E1🗡🗡︎🗡️
1F5E3🗣🗣︎🗣️
1F5E8🗨🗨︎🗨️
1F5EF🗯🗯︎🗯️
1F5F3🗳🗳︎🗳️
1F5FA🗺🗺︎🗺️
1F610😐😐︎😐️
1F687🚇🚇︎🚇️
1F68D🚍🚍︎🚍️
1F691🚑🚑︎🚑️
1F694🚔🚔︎🚔️
1F698🚘🚘︎🚘️
1F6AD🚭🚭︎🚭️
1F6B2🚲🚲︎🚲️
1F6B9🚹🚹︎🚹️
1F6BA🚺🚺︎🚺️
1F6BC🚼🚼︎🚼️
1F6CB🛋🛋︎🛋️
1F6CD🛍🛍︎🛍️
1F6CE🛎🛎︎🛎️
1F6CF🛏🛏︎🛏️
1F6E0🛠🛠︎🛠️
1F6E1🛡🛡︎🛡️
1F6E2🛢🛢︎🛢️
1F6E3🛣🛣︎🛣️
1F6E4🛤🛤︎🛤️
1F6E5🛥🛥︎🛥️
1F6E9🛩🛩︎🛩️
1F6F0🛰🛰︎🛰️
1F6F3🛳🛳︎🛳️

通常文字は白黒で表示されるべきですが、環境によってはカラーの絵文字として表示されることがあります。前述したように、環境が文字の表示スタイルに影響を与える可能性があります。