コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

自作S-JIS用フォントデータをUTF-8用に変更する(1)

いよいよ、UTF-8環境に移行するため、UTF-8用のフォントファイルを作っていくことになります。フォントは自作プログラムで用いている12ドット東雲フォントを使います。
UTF-8のコードは、可変バイトコードなので、1バイト、2バイト、3バイトのコードで分けてフォントデータを配置したいと思います。さらに、半角と全角でも分けたいと思います。先ず、現状使っているJIS第一水準、第二水準の文字が、UTF-8文字コードのどこに配置されているかをリストアップして、UTF-8用フォントファイルをどのように作っていくか考えたいと思います。

0x00〜0x7F(UTF-8の1バイトコード)

UTF-8の1バイトコードは0x00〜0x7Fです。これは、JISでは半角コードなので、UTF-8が0x00〜0x7Fの時は半角フォントのデータをアクセスするようにすればいいです。

0xC280〜0xDFBF(UTF-8の2バイトコード)

UTF-8の2バイトコードは0xC280〜0xDFBFです。自作しているSJISのコードはUTF-8コード全てを網羅していないので、作成しているもののフォントだけをUTF-8用に作り変えたいと思います。下記に作成するコードをリストアップします。

0xC2A2〜0xC2B6 ただし、C2A5は半角の"\"マークなので別処理する必要があります。
0xC397 ×
0xC3B7 ÷
0xCE91〜0xCEBF
0xCF80〜0xCF89
0xD081 Ё
0xD090〜0xD0BF
0xD180〜0xD191

上記の範囲の中にはフォントデータが無いものも含んでいます。それらには"・"のデータを挿入することにします。

0xE0A080〜0xE0BFBF(UTF-8の3バイトコード)

UTF-8の3バイトコードは複雑ですが、SJISで使用しているコードのある部分を順番にリストアップしていきたいと思います。
0xE0A080〜0xE0BFBFの範囲にはフォントがありません。なので、データは作らずに、このコードが来たときには無視して"・"を表示します。

0xE18080〜0xE1BFBF(UTF-8の3バイトコード)

この範囲にもフォントが無いので、同様に"・"を表示します。

0xE28080〜0xE2BFBF(UTF-8の3バイトコード)

下記にフォントデーがあるUTF-8のコードをリストアップします。

0xE28090〜0xE280BB
0xE280BE これは半角の"~"データです。別処理する必要があります。
0xE28483 ℃
0xE284AB Å
0xE28690〜0xE28693
0xE28792〜0xE28794
0xE28880〜0xE288BF
0xE28992〜0xE289AB
0xE28A82〜0xE28A87
0xE28AA5 ⊥
0xE28C92 ⌒
0xE29480〜0xE294BF
0xE29580〜0xE2958B
0xE296A0〜0xE296BD
0xE29786〜0xE2978F
0xE297AF ○
0xE29885〜0xE29886
0xE29980〜0xE29982
0xE299AA〜0xE299AF

上記の範囲の中にはフォントデータが無いものも含んでいます。それらには"・"のデータを挿入することにします。

0xE38080〜0xE3BFBF(UTF-8の3バイトコード)

下記にフォントデーがあるUTF-8のコードをリストアップします。

0xE38080〜0xE3809C
0xE38181〜0xE381BF
0xE38280〜0xE382BF
0xE38380〜0xE383BE

上記の範囲の中にはフォントデータが無いものも含んでいます。それらには"・"のデータを挿入することにします。

0xE48080〜0xE4BFBF(UTF-8の3バイトコード)

下記にフォントデーがあるUTF-8のコードをリストアップします。

0xE4B880〜0xE4B8BF
0xE4B982〜0xE4B9BF
0xE4BA80〜0xE4BABF
0xE4BB80〜0xE4BBBF
0xE4BC80〜0xE4BCBF
0xE4BD80〜0xE4BDBF
0xE4BE80〜0xE4BEBF
0xE4BF80〜0xE4BFBF

上記の範囲の中にはフォントデータが無いものも含んでいます。それらには"・"のデータを挿入することにします。

0xE58080〜0xE5BFBF(UTF-8の3バイトコード)

全範囲です。ただし、UTF-8コードの2バイト目と3バイト目の範囲は、0x80〜0xBFの範囲です。また、フォントデータが無いものも含んでいます。それらには"・"のデータを挿入することにします。

0xE68080〜0xE6BFBF(UTF-8の3バイトコード)

全範囲です。ただし、UTF-8コードの2バイト目と3バイト目の範囲は、0x80〜0xBFの範囲です。また、フォントデータが無いものも含んでいます。それらには"・"のデータを挿入することにします。

0xE78080〜0xE7BFBF(UTF-8の3バイトコード)

下記にフォントデーがあるUTF-8のコードをリストアップします。

0xE78080〜0xE7BA9C
0xE7BCB6〜0xE7BFBF

ただし、UTF-8コードの2バイト目と3バイト目の範囲は、0x80〜0xBFの範囲です。また、上記の範囲の中にはフォントデータが無いものも含んでいます。それらには"・"のデータを挿入することにします。

0xE88080〜0xE8BFBF(UTF-8の3バイトコード)

下記にフォントデーがあるUTF-8のコードをリストアップします。

0xE88080〜0xE8AE9A
0xE8B0B7〜0xE8B496
0xE8B5A4〜0xE8BFBF

ただし、UTF-8コードの2バイト目と3バイト目の範囲は、0x80〜0xBFの範囲です。また、上記の範囲の中にはフォントデータが無いものも含んでいます。それらには"・"のデータを挿入することにします。

0xE98080〜0xE9BFBF(UTF-8の3バイトコード)

下記にフォントデーがあるUTF-8のコードをリストアップします。

0xE98080〜0xE99281
0xE995B7〜0xE997A5
0xE9989C〜0xE9B1B8
0xE9B3A5〜0xE9B7BD
0xE9B89A〜0xE9B89E
0xE9B9B5〜0xE9BEA0

ただし、UTF-8コードの2バイト目と3バイト目の範囲は、0x80〜0xBFの範囲です。また、上記の範囲の中にはフォントデータが無いものも含んでいます。それらには"・"のデータを挿入することにします。

0xEA8080〜0xEEBFBF(UTF-8の3バイトコード)

この範囲にはフォントが無いので、データは作らずにこのコードが来たときには、無視して"・"を表示します。

0xEF8080〜0xEFBFBF(UTF-8の3バイトコード)

下記にフォントデーがあるUTF-8のコードをリストアップします。

0xEFBC81〜0xEFBD9D
0xEFBDA1〜0xEFBE9F この範囲は半角データなので別処理する必要があります。
0xEFBFA3  ̄
0xEFBFA5 ¥

ただし、UTF-8コードの2バイト目と3バイト目の範囲は、0x80〜0xBFの範囲です。また、上記の範囲の中にはフォントデータが無いものも含んでいます。それらには"・"のデータを挿入することにします。


以上が、UTF-8コードの中で、SJISで作成したフォントデータがあるコードです。この場合分けを元に、UTF-8フォントファイルを作成していきたいと思います。

今日はこの辺で・・・。

本当にやりたいことリスト

(ブログの終わりにやりたいことを書いておきたいと思います)

  • 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
  • Androidプログラム
  • Web系のプログラム