Emoji - tmatz/k-9 GitHub Wiki
絵文字は docomo, au, softbank それぞれ独自の文字コードで表現されます。
-
iso-2022-jp を shift_jis に変換します。
-
From: の情報から、どのキャリアの shift_jis なのかを決定します。
x-{carrier}-shift_jis-2007 -
shift_jis から Unicode に変換します。
このときキャリア固有の絵文字が、goomoji という Android 固有のプライベート文字コードに変換されます。
(この変換の機能は Android が提供しています) -
表示
メールのタイトルは TextView で表示します。
キャリアスマホはフォントに goomoji のグリフをもつので絵文字が表示されます。
素の Android だと文字化けします。
本文は WebView で表示します。
goomoji は <img> タグにより gif 画像に置き換えられます。
gif 画像はK-9が持っています。docomo の絵文字がベースです。
-
auの場合、メールサーバが各社の絵文字をauの文字コードに変換します。 docomo, au, softbank のどこから届いたメールでも、au のサーバを通ると au の文字コードになります。
K-9 は送信者のメールアドレスのみで文字コードを決めるため、au以外の送信者のメールは絵文字が文字化けします。
(Receivedヘッダを調べる部分が未実装) -
goomojiに対応するフォントが無いと絵文字を表示できません。
Nexusなどの素のAndroidだと文字化けします。 キャリアスマホはgoomojiをフォントに含むので絵文字を表示できます。
- goomoji用のフォントを追加してやればGmailアプリのサブジェクトでも絵文字を表示できます。
(要ルート化)
-
Symbola.ttf
Unicode 6.0の絵文字をすべて含んだパブリックドメインのフォント。
http://users.teilar.gr/~g1951d/ -
キャリア絵文字, goomoji, unicode 変換テーブル
http://code.google.com/p/emoji4unicode/source/browse/trunk/data/emoji4unicode.xml -
fontforge
http://fontforge.org/
作り方
- Symbola.ttfの絵文字用のグリフをgoomojiの文字コードにコピーする。
- 絵文字として必要のないグリフを削除する。
fontforgeはpythonのスクリプトに対応しているので変換は自動化できる。
##WebViewでフォントを指定する
- How to use custom font with WebView
http://stackoverflow.com/questions/1344080/how-to-use-custom-font-with-webview