サロゲートペア 【surrogate pair】
概要
サロゲートペア(surrogate pair)とは、Unicodeの未使用領域のコード2つを組み合わせて、拡張領域の文字を表す手法。U+010000~U+10FFFF の104万8576文字を表すことができる。Unicodeの初期の構想では16ビット(65,536文字)のコードにすべての文字を収録する予定だったが、世界中の文字を収録するには少なすぎた。このため、16ビット単位のコード体系を崩すことなく追加の文字を表す方法として、2つのコードを組み合わせて1つの文字を表す手法が考案された。
初期Unicodeの16ビットの範囲(U+0000~U+FFFF)は「基本多言語面」(BMP)と呼ばれるが、U+D800~U+DBFF にある1,024文字分(10ビット)の値から1つ、U+DC00~U+DFFF の1,024文字分から1つを選び、前者から D800 引いたものを上位10ビット、後者から DC00 を引いたもの下位10ビットに見立てることで20ビットの値を表すことができる。
得られた20ビットの値(U+00000~U+FFFFF)は先頭部分(U+0000~U+FFFF)がBMPと重なってしまうため、10000 を加算することで U+10000 から U+10FFFF の拡張領域の各コードポイントに対応付けることができる。先頭同士を組み合わせた「U+D800 U+DC00」という並びは「U+10000」を表し、末尾同士を組み合わせた「U+DBFF U+DFFFF」という並びは「U+10FFFF」をそれぞれ表す。
サロゲートペアを導入することでBMPからは2,048文字分(1,024+1,024)が削減されたが、代わりに拡張領域の1,048,576文字(1,024×1,024)をBMP内の16ビットコード2つの組み合わせで表現することができるようになった。
(2024.6.6更新)