社内SEになりました

社内SEは本当に楽なのか?ユーザー系IT企業とSierとの違いは?これからIT企業への就職や転職を考えている人むけに、ユーザー系IT企業から社内SEに40代で転職した筆者がITエンジニアの仕事内容やプロジェクト管理のノウハウ等をご紹介。

文字コード第六回:IVS

文字コードって、とっても難しいです。

そんな文字コードの中で、IVS について、可能な限りわかりやすく解説します。

1.IVS とは

IVS(異体字シーケンス)とは、Ideographic Variation Sequence の略称で、異体字の関係にある文字に「異体字セレクタ」という枝番を振ることで、より確実な文字情報の交換を可能にする技術のことです。

文字コードを増やすことなく、Unicode に枝番を付けることで、多くの異字体を使い分けられるようになります。

IVS を利用するためには、IVS に対応したフォントと、IVS に対応したソフトウェアの両方が必要となります。

2.IVS の例

東京都カツシカクと奈良県カツラギシの「カツ/カツラ」は以下のように異なりますが、Unicodeでは「葛」の文字コードは「U+845B」のみで、奈良県の「カツラ」は表示できません。

f:id:SystemEngineers:20210723145729p:plain

そこで IVS の登場です。

IVS では「葛」の文字コード「U+845B」に「U+E0100」から「U+E0109」までの枝番を付加し、10 種類の「葛」を表示できるようにしています。

f:id:SystemEngineers:20210723220406p:plain

この「E0100」や「E0101」といったコードそのものには意味はなく、付加する文字コードとセットで意味を持ちます。例えば同じ「E0101」でも「845B」とセットで使うと「葛」になり、「8FBB」とセットで使うと「辻」になります。

f:id:SystemEngineers:20210724142600p:plain3.IVS の文字コード

IVSの枝番は、UTF-16 の場合にはサロゲートペアになります。

例えば「E0100」の場合、上位サロゲートは「DB40」、下位サロゲートは「DD00」になります。UTF-16 の場合、元が 2 バイトなので、IVS は 6 バイトということになります。

さらに元の字がサロゲートペアだった場合、IVS は 8 バイトという長い文字コードになります。 

UTF-8 も同様に IVS では文字コードの長さがとても長くなります。

f:id:SystemEngineers:20210724145144p:plain

サロゲートペアと同様に、IVS を考慮していないソフトウェアでは、IVS の入力があると文字化けしたり、文字数のカウントを誤ったりすることがあるので、注意が必要です。

4.IVS のサンプル

IVS で表す文字の大半は、日常では使用しない字体・字形ですが、中には標準が日常では使わず、IVS の方が日常で使う字体・字形のものもあります。

Windows8 からは IVS が設定ひとつで自由に使えるようになったため、ユーザーが何気なく IVS を利用する可能性も出てくるので、注意が必要です。

以下は、左が普通に文字変換をすると表示されるフォント、右が IVS のフォントです。意図的に標準フォントが旧字体のものを選んでみました。馴染みのある方のフォントは「E0100」で、標準フォントは「E0101」になっていることが多いですが、まれに馴染みのあるフォントが「E0101」で付番されているケースもあります。

f:id:SystemEngineers:20210724184311p:plain5.IVS とサロゲートペアの違い

サロゲートペアは、文字に対して Unicode が付番されています。それに対して IVS は、同じ Unicode に枝番を付番しています。

サロゲートペアは、文字そのものにコードが付番されているため、他の文字と同様にフォントから独立しています。

それに対して IVS は、乱暴に言ってしまうと、フォントを指定している文字コードと考えることができます。

サロゲートペアは UTF-16 だけの問題ですが、IVS は UTF-16 だけでなく、UTF-8UTF-32 にも影響のあるものです。

 【振り返り】

第六回は、IVSでした。第七回は、文字コードの歴史です。

第一回:概要
第二回:符号化文字集合
第三回:文字符号化方式(前編)
第四回:文字符号化方式(後編)
第五回:サロゲートペア
第六回:IVS
第七回:文字コードの歴史
第八回:文字化け