Pebble 美咲フォント 日本語

スマートウォッチPebbleで美咲フォントを使って日本語を表示させてみました。

pebble misaki font

Pebble SDK が Version2.0 になって resource で raw形式が使えるようだったので挑戦してみました。
  • 美咲フォントは8×8ドットで作成されたFONTX2形式のフォントです。
  • FONTX2形式のフォントは 8×8 から 16×16 までを対象としています。
  • 美咲フォントは 8×8 で小さすぎるので倍角表示させています。
  • フォントはRAW形式で指定し1文字分のグリフデータをresource_load_byte_rangeで読み込み表示します。
  • シフトJISエンコードのテキストを表示しています。
  • 制御文字は改行(LF=0x0A)のみ対応。
  • 他の M+GOTHIC 10×10 なども試しましたがサイズが大きすぎるのか転送でエラーにります。
  • FORUMでpbwの大きさのトピックがありました。Resourceの大きさは96KBまででした。
  • FONTX2形式だと横幅が8より大きいと余計なbitを使うから何らかの方法で独自に実装して10×10か圧縮して12×12なら可能だろうか。

取り敢えず、Pebbleでの日本語表示は使えそうな気がする。

関連記事

11 Comments

  1. こちらの美咲フォントはiPad,iPod母艦でも可能でしょうか?
    simple.jsを使って、dropbox publicフォルダにダウンロードしたファイルを展開しておき、appinfo.jsonの公開リンク先を指示したら’:’パースエラーで止まってしまいました。使い方を教えて頂ければ幸いです。

    1. hiroyukiFさん、こんにちは。
      Pebbleで美咲フォントはBLE対応のiPadとiPodでPebbleアプリと共に使うことは可能と思われます。
      また、ご返信頂いた通り appinfo.json は母艦側のアプリ設定ファイルです。
      SDK2.0では母艦側でJavascriptを動かしDropboxのJavascript APIにアクセスが可能です。
      アイデア次第ではいろいろと楽しめるスマートウォッチかと思います。

      1. 返信をありがとうございます。java sdkを使うのは難しそうなのでとりあえず止めました。その代わりにjail breakして使うPebbleCC中日漢字表示Notifyを使うことにしました。

    1. Koseraさん、こんばんは。
      私の理解している範囲内でありますが、大まかな説明を試みたいと思います。
      まず、Pebbleで日本語化する場合に幾つかの段階があると思います。
      日本語入力は、Pebble側の制約で無理なので出来ません。
      それでは、日本語の表示はどうでしょうか?
      Pebbleの画面は十分に解像度があるので日本語の表示は出来そうです。
      では、どうやって?と言うことになります。
      以下の図はPebbleとiPhoneとInternetの関係です。

      [Internet] <??> [iPhone] <??> [Pebble]

      SDK2.0からiPhoneにPebbleアプリの一部としてJavacsriptを常駐させることが出来るようになりました。
      このJavascript上では幾つかのイベントを受信し、それに対応するコードが記述出来ます。
      また、Pebble側では、ボタンが押された時に、iPhone側のJavacsriptにメッセージの送信も出来ます。
      Pebbleは直接インターネットのサービスとやりとりは出来ませんがiPhoneを経由してなら出来ます。
      PebbleはiPhone経由でGPSの情報にもアクセスすることが可能です。

      さて、実際の日本語の表示に関してですが、私は現在2通りの方法があると思っています。
      1つは、Pebble内で日本語のフォントを持たないでグラフィックとして表示する方法。[方法A]
      1つは、Pebble内で日本語のフォントを持ちグラフィックとして表示する方法。[方法B]
      双方の違いは、日本語フォントのグリフデータをどこで持つかと言うことになります。
      [方法A]は実は、Android OSの世界では既に実用化されていて利用者も多いようです。
      Android OSの場合は、PebbleとのBuletooth通信がiOSよりも自由に扱えるようで
      Android端末でレンダリングされた1ページ分の画像データをPebbleへ転送しているようです。(ここは推測です)
      iOSはBuletooth通信が制約されているのでPebble内で日本語フォントを持つ[方法B]での実現を考えます。

      [方法B]を考える時にはPebble SDK2.0の制約を考慮する必要があります。
      ・1つのRAW形式のファイルは96KBまで。つまり、日本語フォントの大きさが96KB以内であること。美咲フォントは55KBです。
      ・日本語文字コードは、UTF-8よりも対象範囲が狭いShift-JISを検討しました。
      文字コードをUTF-8にしてしまうと日本語フォントが大きくなってしまうこと。
      UTF-8からShift-JISに変換する場合でも変換テーブルが大きくなってしまうこと。
      以上のことを考え合わせて、サンプルプログラムで扱うデータは、Shift-JISになりました。

      実際のプログラム内では、例えば「あ」という字を表示する場合は、Shift-JISコード「82A0」から
      RAW形式ファイル内のグリフデータの位置を算出して、連続で7バイトのデータを読み出します。
      あとは読み出したデータのビットのオンオフに合わせてPebbleの画面に点を描画します。
      ざっとこんな感じで文章を表示させています。

  2. airwhiteさん。早速、丁寧な説明をいただき有難うございました。日本語表示の概念は、なんとなく理解出来ました。具体的に、以前の他の方への返信に書かれておられましたソースコードと美咲フォントをどのように処理すればいいのかを、又は参考となる記事等を教えていただければありがたいです。Pebbleでの言語表示については、中国語表示とかが出来ているのに、日本語表示の方法があまり無いので残念に思っています。多くの方が期待している?と思いますので、airwhiteさんの知見が広まればいいと思います。

    1. Koseraさま、こんばんは。
      私の気分次第で気ままにやっておりますが実は続きのプランがあります。
      プラン1では、日本語が表示できることを確認しました。
      プラン2では、iPhone側から電話の着信があったら、Pebble側で「Calling You」と表示させます(イベントの学習)。
      プラン3では、1と2の学習成果を組み合わせて、電話があったらPebble側で「○○さんから電話だよ」と表示するアプリを開発します。
      たぶん、1年ぐらいかかるんじゃないかなぁと思います。
       
      もしも、KoseraさまがPebbleプログラミングの学習を進められたいようでしたら
      話題のスマートウォッチPebbleでHelloWorld
      が参考になるかと思います。
      仮想環境でも大丈夫ですがLinux上での操作も必要になります。
      開発環境もいろいろとあるみたいなので、その辺を整理した書籍が出てくれると助かりますね。

  3. Airwhiteさん
    有難うございました。参考にさせていただきます。自分の学習成果よりも1年後のAirwhiteさんの成果の方が楽しみです。お忙しいところ、丁寧な回答、お礼申し上げます。

  4. Pingback: Apple Watchが登場したからこそPebbleの話 :

  5. Pingback: Apple Watchが登場したからこそPebbleの話 | うずまき(4th Gen) | Jun-Systems

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です