EmoArt
投稿する
用語集

異体字セレクタ (Variation Selector) とは

最終更新: 2026-05-24·約 4 分

この記事は約 4 分で読めます。

❤️ という赤いハートが「ハート 1 つで 2 コードポイント」になる理由が異体字セレクタです。異体字セレクタは、直前の文字の表示形を切り替えるための不可視の制御文字です。 絵文字とテキスト表示の切替、漢字の異体字 (旧字体・新字体など) の指定、絵文字シーケンスの調整など、Unicode の細やかな制御を支えています。

定義

異体字セレクタ (Variation Selector) は、Unicode の不可視な制御文字で、直前の文字の表示形を切り替える役割を持ちます。 16 個の基本セレクタ (VS-1 から VS-16, U+FE00〜U+FE0F) と、240 個の補助セレクタ (VS-17 から VS-256, U+E0100〜U+E01EF) があります。 絵文字の文脈で頻繁に登場するのは VS-15 と VS-16 の 2 つです。

VS-15 と VS-16

セレクタコードポイント意味表示例
VS-15U+FE0Eテキスト表示 (モノクロのテキスト調)♥︎ (テキスト調のハート)
VS-16U+FE0F絵文字表示 (カラーの絵文字調)❤️ (赤い絵文字のハート)

多くの記号文字 (♥, ☂, ☀, ☘, ✉ など) は、Unicode に追加された当初はテキスト記号として登録されていました。 後から絵文字としての利用が広まったため、「テキスト調」と「絵文字調」を切り替えるためにこの 2 つのセレクタが導入されました。

❤️ が 2 コードポイントになる理由

絵文字としての ❤️ は、内部的には次の 2 つのコードポイントの組み合わせです。

  • ♥ (U+2665) - ベースのハート記号 (テキスト記号として古くから存在)
  • U+FE0F (VS-16) - 絵文字表示を要求するセレクタ

VS-16 を省略すると ♥ という細いラインのハート記号として描画されるシステムがあります。 絵文字としての赤いハートを表示するには、VS-16 が必要です。 この 2 コードポイント構造が、文字数カウントで「絵文字 1 つで 2 文字消費」になる主な理由の 1 つです。

絵文字シーケンスでの登場

ZWJ シーケンスでは、ベース絵文字の後に VS-16 を挟むパターンがよく使われます。 たとえば 🏳️🌈 (虹色の旗) は次のシーケンスです。

  • 🏳 (U+1F3F3) - 白旗
  • U+FE0F (VS-16) - 絵文字表示
  • U+200D (ZWJ) - 結合
  • 🌈 (U+1F308) - 虹

VS-16 を省くと旗が表示されないシステムがあるため、互換性のために必須となるケースが多いです。

漢字の異体字との関係

異体字セレクタは元々、漢字の旧字体・新字体・別字体を指定するために設計されました。 IVS (Ideographic Variation Sequence) と呼ばれる仕組みでは、ベース漢字 + VS-17 から VS-256 の組み合わせで、特定の字体を明示的に指定できます。 たとえば「葛」の異体字 (草冠の下が「曷」か「匂」かなど) は IVS で区別されます。 絵文字の文脈では使われませんが、日本語処理の現場では重要な仕組みです。

実務での注意点

  • 文字数カウント: VS-16 を含む絵文字は 2 コードポイントで構成されることを意識する
  • テキスト処理: 文字列の逆順処理や部分切り出しで、VS とベース文字を分離しないよう注意
  • 互換性: 古いシステムが VS を無視する場合、絵文字がテキスト調で表示される可能性
  • 正規化: Unicode 正規化 (NFC, NFD) では VS は維持されるが、NFKC, NFKD では削除される場合がある

よくある誤解

  • ❌ 「異体字セレクタは漢字専用」→ ✅ 絵文字 (VS-15/VS-16) や記号にも使う
  • ❌ 「VS は表示に影響しない」→ ✅ 表示形の切替が主な役割
  • ❌ 「VS-16 を消しても絵文字は同じ」→ ✅ システムによってテキスト調に変わる

関連用語

この記事は役に立ちましたか?