2009年4月11日土曜日

[Softbank] [Web] Softbank絵文字仕様 SJIS/Unicode編

ソフトバンクの絵文字はISO-2022に基づくエスケープシーケンスESC $[GEFOPQ]0x21~7Eがn回出現し0xf0となるISOコード, シフトSJISコードおよびUnicodeとなる。具体的に見てみる。

//絵文字1(基本)
((c1 == 0xF9 && ((c2 >= 0x41 && c2 <= 0x7E) (c2 >= 0x80 && c2 <= 0x9B)))
//絵文字2(基本) (c1 == 0xF7 && ((c2 >= 0x41 && c2 <= 0x7E) (c2 >= 0x80 && c2 <= 0x9B)))
//絵文字3(基本) (c1 == 0xF7 && (c2 >= 0xA1 && c2 <= 0xF3))
//絵文字4(拡張) (c1 == 0xF9 && (c2 >= 0xA1 && c2 <= 0xED))
//絵文字5(拡張) (c1 == 0xFB && ((c2 >= 0x41 && c2 <= 0x7E) (c2 >= 0x80 && c2 <= 0x8D)))
//絵文字6(拡張) (c1 == 0xFB && (c2 >= 0xA1 && c2 <= 0xD7)));

シフトSJIS体系ではF7,F9,FBを先頭バイトに持つ絵文字1~6までのコードに対応する。次にUnicode範囲を見てみる。

(uni >= 0xE001 && uni <= 0xE03F) (uni >= 0xE040 && uni <= 0xE05A) (uni >= 0xE101 && uni <= 0xE13F) (uni >= 0xE140 && uni <= 0xE15A) (uni >= 0xE201 && uni <= 0xE23F) (uni >= 0xE240 && uni <= 0xE253)
(uni >= 0xE301 && uni <= 0xE33F) (uni >= 0xE340 && uni <= 0xE37F) (uni >= 0xE401 && uni <= 0xE43F) (uni >= 0xE440 && uni <= 0xE44C) (uni >= 0xE501 && uni <= 0xE53E)

一般的な絵文字の扱いではこのUnicodeの範囲に+0x1000のオフセットを付けたコードとして扱う。これにより私用領域に全ての絵文字を格納できるようになる。

SBのISO表現からUnicodeへの変換はISO表現の第三バイトの文字を0xF0~0xF5(0xE0~0xE5)にマッピングしたものを第一バイトとしISO表現の第4バイト以降の連続-0x20が第二バイトとなる。

0 件のコメント:

コメントを投稿