サロゲートペア 単語

サロゲートペア

2.2千文字の記事
  • twitter
  • facebook
  • はてな
  • LINE

サロゲートペア(surrogate pair)とは、世界中のあらゆる文字を表現するためにUnicodeの符号領域を6万文字から100万文字に増量するための苦の策である。

概要

Unicode 1.0で想定していた65,536文字では世界中のあらゆる文字を表現することが不可能であることが判明したため、Unicode 2.0で導入された。

「未使用の文字2つを組み合わせて1文字を表現することで、表現可文字数を増やす」という方式で、この2つペアで用いる文字を代用品(surrogate)に見立てたことから「サロゲートペア(代用対)」と呼ばれる。これらは新たに追加された領域であることから、OSバージョンフォントによって対応度合いが異なる。

なお、サロゲートペアは本来65536文字しか表せないUTF-16において1112064文字理やり符号化するための手法であるため、元から4294967296文字をそのまま符号化可UTF-32や、頑れば2147483648文字を符号化可UTF-8ではサロゲートペアは用いられない[1]

アドレス割当区間

サロゲートペアに供用されるBMPアドレス領域は下記の区間となっており、上位サロゲートと下位サロゲートからそれぞれ抽出したアドレスの組み合わせによって、1024 × 1024 = 1048576文字が収録可となる(その一部は非文字として予約されており、実際に使用可文字数はこれより少ない)。これらはUnicode追加領域のコードポイントアドレス(U+10000 - U+10FFFF)と対応しており、相互に変換して利用される。

例えば先頭アドレスの組となる「U+D800 U+DC00」には線文字Bの一つである LINEAR B SYLLABLE B008 A[𐀀]が割当てられている。対応するコードポイントは同じく追加領域の先頭に位置する「U+10000」となる。

前述のような経緯から、日本語の難読漢字や異体字など、いわゆる「昔は変換で出せなかった文字」はこのサロゲートペアを用いて収録しているものが多い。下記はその一例。

各領域の一覧についてはUnicode#符号位置の一覧を参照。

サロゲートペアのアドレスとUnicode追加領域のアドレスとの変換

UTF-16サロゲートペア(U+yyyy U+zzzz)とUnicode追加領域のアドレス値(U+xxxxx)には一定の数的対応関係があり、以下の式で表される(全て16進数表記)。

xxxxx = 10000 + (yyyy - D800) × 400 + (zzzz - DC00)

例えば「U+D860 U+DE77」というアドレス定される文字を調べる場合、

10000 + (D860 - D800) × 400 + (DE77- DC00)
= 10000 + 60×400 + 277
= 10000 + 18000 + 277
= 28277

となり、Unicode一覧表から「U+28277」を確認すると'𨉷(身へんに容)'と分かる。

Unicode領域アドレスからサロゲートペアのアドレスを算出する事も可で、次の式からめられる(%:左項を右項で割った剰余値を返す演算子)。

yyyy = (xxxxx - 10000) ÷ 400 + D800
zzzz = (xxxxx - 10000) % 400 + DC00

Windows環境でのサロゲートペア

WindowsUnicodeに対応したのは98およびNT 4.0からだがこの時点ではまだUnicode自体が普及しておらず、IME標準辞書Unicodeにしか収録されていない文字ど扱っていなかったため身近ではなかった。続くWindows2000から新たに導入された機では追加領域の基本的な入出およびソーティングをサポートしていたが全てのシステムコンポーネントが追加領域に適応していた訳ではなかった。Windows XPになっても標準ではサロゲートペアに対応しておらず、パッチを当てる事で一部の字に対応していた。

Windows VistaではJIS2004に対応したことでUnicodeで使用できる日本語漢字が増したが、この補填した漢字の約三分の一が追加領域を参照しなければならない文字であったため、これらの文字を表示する際はサロゲートペアを利用する(一覧こちらexitを参照)。

Windows 8からはサロゲートペアを活用した異体字セレクタであるIVS(Ideographic Variation Selector) に対応したことでそれまでは外字を参照していた約58,000字の漢字を利用できるようになった。

関連動画

関連項目

脚注

  1. *しかし、UTF-8において本来そのまま符号化可なはずの追加領域の文字をサロゲートペアに分割してしまう処理系も存在する。これはUTF-8としてはルール違反となることから「CESU-8」や「WTF-8」などの名前で区別されている。
この記事を編集する

掲示板

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
結月ゆかり[単語]

提供: Well.Mk-Ⅱ

もっと見る

急上昇ワード改

最終更新:2024/05/14(火) 07:00

ほめられた記事

最終更新:2024/05/14(火) 07:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP