サロゲートペアとIVS

仕事がら、文字コードについて勉強しないといけないことが多いのですが最近はIVSについてずっと調べていました。
備忘がてら、調べた内容を簡単にまとめます。

Unicode IVS/IVD入門

Unicode IVS/IVD入門


今回一番参考にしたのはこの本です。
IVSについても書いているのですが、それ以外にもフォントリンクや代替フォントと言った機能についても書かれていたのでそれも含めてまとめます。

フォントリンク

フォントリンクとは「あるフォントに複数のフォントを関連付けることで、対象のフォントだけではカバーしきれないより広範囲のコード領域の文字を表示できるようにした仕組み」のことです。と、これだけだとちょっとわかりにくいのですが、要は

  • 使いたいフォントがあるけど欧米フォントだった
  • 英数字にはこのフォントを使いたい
    • でも日本語が入っていないので日本語が表示できない
  • 使いたいフォントにフォントリンクの設定(例えばメイリオ)を指定する
    • 英数字は使いたいフォントで表示
    • 日本語はメイリオで表示


という感じで使うと便利な機能です。


Excelでたまにハングル文字に文字化けするというトラブルを聞きますが、それはこのフォントリンクに起因するものだったりするようです。便利だけどちゃんと考えて使わないとトラブルを引き起こしそうです。

代替フォント

代替フォントとは正式なフォント名ではなく、仮想的に設定されているフォント名を指定させることで言語の違うOSでも正しい文字を表示できるようにする仕組みです。


(例)

仮想的なフォント名 説明
MS Shell Dlg 日本語で使う標準フォントを指定
MS Shell Dlg2 英数字で使う標準フォントを指定


OSはこのMS Shell Dlgというフォントを指定して動くことで、このフォントに割り当てるリアルなフォントを切り替えることでどんな環境でも正しく文字が印字されることになります。

フォントリンクと代替フォントの違い

フォントリンク ある特定のフォントが指定されたときにそのフォントではカバーできない領域を複数のフォントでカバーするための仕組み
代替フォント 特定のフォントに依存しないように、仮想的なフォントを指定させることでアプリケーションが環境*1に依存せずに動作させる仕組み


最初は同じような仕組みかと思っていたのですが、よくよく読んでみたらぜんぜん似てませんでした。

IVSについて

IVSというのは、特定の文字の後ろに異体字セレクターと呼ばれる記号を付与することで字形の類似した文字を使い分けるための仕組みです。(後日詳細を記載する)

まとめ

ひととおり本書を読んでみて、MSDNにもしっかりとした記載がない情報もまとめられていたし、何よりもIVSについてわかりやすく書かれた良い本でした。IVSに関する情報ってほんとうに少ないのでとても助かりました。

半分くらいが文字コード表だったのはちょっと残念でしたが...(笑)


(関連リンク)

*1:フォントのインストール状況等