👨❤️👨スキントーン修飾子自体とサロゲートペア
絵文字の色や表現を変えるための「サブコード」に関する言及は、絵文字の「スキントーン修飾子」と「絵文字結合シーケンス」を指している可能性が高いです。
絵文字のスキントーン修飾子は、Unicode Consortiumによって提供されている絵文字の一部にスキントーンを適用するためのものです。例えば、👍という絵文字は、スキントーン修飾子を追加することで、異なる肌の色のバリエーション(👍🏻👍🏼👍🏽👍🏾👍🏿)を持つことができます。
絵文字結合シーケンスは、複数の絵文字を組み合わせて一つの絵文字として表示するためのものです。例として、👨(男性) + ❤️(ハート) + 👨(男性) は、👨❤️👨 (男性と男性が愛を共有している) として表示されることが期待されます。
これらの「サブコード」や修飾子は、絵文字の多様性や表現力を豊かにするために導入されています。絵文字のスキントーンや結合シーケンスの詳細は、Unicode Consortiumの公式文書や関連する技術文書で詳しく説明されています。
サロゲートペア
スキントーン修飾子自体はサロゲートペアではありません。しかし、スキントーン修飾子を適用した結果として生成される絵文字は、UTF-16でエンコードされる際にサロゲートペアとして表現されることが多いです。
具体的には、ベースとなる絵文字とスキントーン修飾子が組み合わせられると、その結果として新しい絵文字コードポイントが生成されます。この新しいコードポイントが基本多言語面(BMP)を超える場合、UTF-16での表現にサロゲートペアが使用されます。
例えば、ある人物の絵文字にスキントーン修飾子を適用すると、その絵文字のコードポイントはBMPの範囲を超えることがあり、その場合にUTF-16ではサロゲートペアを使って表現されます。
異体字セレクタ(Variation Selector)自体はサロゲートペアを必要としない範囲のコードポイントに位置しています。しかし、異体字セレクタを使って特定の文字の異体を指定する場合、そのベース文字が基本多言語面(BMP)を超えるコードポイントであれば、UTF-16での表現にサロゲートペアが使用されます。
具体的には、異体字セレクタはベース文字の直後に置かれることで、ベース文字の異なる表示形式を指定することができます。ベース文字がBMPを超える場合、そのベース文字の表現にサロゲートペアが使われることになります。しかし、異体字セレクタ自体の表現にサロゲートペアは必要ありません。
ZWNJ(ゼロ幅非改行スペース)やZWJ(ゼロ幅結合子)は、ユニコードの基本多言語面(BMP)内のコードポイントに位置しています。これは、U+200C と U+200D です。したがって、UTF-16 でこれらの文字を表現する際にサロゲートペアは不要です。
しかし、ZWJを使って連結される文字や絵文字の中には、BMPを超えるコードポイントを持つものもあり、それらはUTF-16での表現にサロゲートペアが使用されます。例えば、いくつかの絵文字はZWJの組み合わせで作成され、その中にBMPを超える絵文字が含まれる場合があります。
絵文字のスキントーンをカスタマイズする場合、Unicodeの絵文字修飾符号(Emoji Modifier)を利用する方法が一般的です。これらの修飾符号は、絵文字にスキントーンを追加するためのもので、異なる肌の色を表現することができます。具体的には、以下のスキントーン修飾符号があります:
🏻 (light skin tone)
🏼 (medium-light skin tone)
🏽 (medium skin tone)
🏾 (medium-dark skin tone)
🏿 (dark skin tone)
これらの修飾符号は、サポートされている絵文字の後に追加することで、その絵文字の肌の色を変更することができます。例えば、「👋」(手を振る)絵文字に「🏽」を追加すると、「👋🏽」(中間肌色の手を振る)という絵文字になります。
絵文字のスキントーンの仕様については、Unicode Technical Standard #51で詳細に説明されています 。この仕様では、絵文字のスキントーンを変更するための修飾符号(Emoji Modifier)が定義されており、これを使用して異なる肌の色を表現することができます。特に、絵文字修飾基底文字(Emoji Modifier Base)に修飾符号を追加することで、スキントーンが変更された絵文字を生成する方法が説明されています。
詳細な仕様は以下のリンクから参照できます:UTS #51 : Unicode Emoji [❞]。
ゼロ幅接合子(ZWJ)は、絵文字を組み合わせて新しい意味を持つ単一のアイコンを形成するために使用されます。たとえば、職業やアクションを示す絵文字を作成するために、個々の絵文字を接合するのに使われます。具体的な例として、「👩🔬」(女性科学者)は、女性(👩)と試験管(🔬)の絵文字をZWJで接続して作られています。この方法で、多くの絵文字が組み合わせられ、様々な職業や家族構成を表現しています。
ゼロ幅接合子(ZWJ)を使用した絵文字の組み合わせの例としては、以下のものがあります:
👩💻:女性プログラマー(女性(👩)とパソコン(💻)をZWJで接続)
👨🍳:男性シェフ(男性(👨)と料理帽(🍳)をZWJで接続)
👩👩👧👦:家族(女性(👩)と女性(👩)、女の子(👧)、男の子(👦)をZWJで接続)
👮♀️:女性警察官(警察官(👮)と女性のシンボル(♀️)をZWJで接続)
これらは、複数の絵文字をZWJでつなぎ、一つの複合絵文字として表示されるように設計されています。このように、ZWJは絵文字の意味を豊かにするために重要な役割を果たしています。