Pebble Time、おそらく近い将来には、ファームウェアが日本語に対応してくれるとは思うのですが、そうならなくてもアプリ側にフォントを持つことで、日本語表示することは可能なはず。ということでいくつか試してみました。
下記サイトでは、美咲フォントを使った日本語表示を試しています。フォントファイルをRAWリソースで読み込んで、自分で描画するという硬派な作り。
Airwhite Memo:Pebble 美咲フォント 日本語
http://airwhite.net/?p=716
もうちょい手軽に、TrueTypeフォント指定して、文字コードUTF-8指定でなんとかならないかと試してみました。text_layer_set_text の説明によれば、UTF-8で指定すれば良さそうだし。
漢字も入ったフォントだと、フォントサイズ的に無理な気がするので、ひらがな・カタカナだけ入ったフォントで試してみました。こちらです。
ニコモジ(カタカナ英数字のみ版)
http://nicofont.pupu.jp/nicomoji.html
最初にRESOURCES からフォント登録しておいて…
直接文字列入れてみる。
text_layer_set_text(s_text_layer, "Pebble\nマダカナ");
UTF-8文字コードで入れてみる。
text_layer_set_text(s_text_layer, "Pebble\n\xE3\x83\x9E\xE3\x83\x80\xE3\x82\xAB\xE3\x83\x8A");
結果は…
いずれも、同じでした。カタカナ出ない。
ちなみに、LOGだと、どっちでも問題なく日本語出てました。
APP_LOG(APP_LOG_LEVEL_INFO, "Pebble\nマダカナ"); APP_LOG(APP_LOG_LEVEL_INFO, "Pebble\n\xE3\x83\x9E\xE3\x83\x80\xE3\x82\xAB\xE3\x83\x8A");
[INFO] main.c:31: Pebble マダカナ [INFO] main.c:32: Pebble マダカナ
うーん、フォントがうまく読み込めてないのか、文字列指定方法が正しくないのか…。
「中国語などの2バイト文字にも対応する」言ってますので、2バイト文字に対応した文字表示のサンプルを待つか。
くやしいので、別の方法でひらがなだけでも日本語表示してみます。1バイトひらがなフォント使う方法です。
こちらの、しろうさぎフォントを使います。
gau+「ガウプラ」
http://www.graphicartsunit.com/gaupra/font_k.html
「1バイトひらがなフォント」は、英数字のフォントとして、ひらがなを登録しているものです。
「英字」と「かな」は日本語キーボードの「かな表記」にほぼ対応しています。
ということで、フォント登録して、対応する英数字で文字列指定。
text_layer_set_text(s_text_layer, "L\".qe]\njQtu#");
こうだ!
やってることは、「Pebble 開発チュートリアル(2-1):カスタムフォント」での英文フォント替えと同じですね。