Information

 

Home > Archives > 2010年4月 9日

2010年4月 9日

E71 日本語表示(フォントの準備編)

E71はそのままでは日本語表示・入力ができないので何とかしないといけません。

まずは、フォントの準備。
あれやこれやごにょごにょといろいろな入手方法がありますが、簡単にやるためにはフリーのフォントをもらってくるが良いと思います。
ただし、普通に配布されているTrueTypeフォントだとS60 3rdに使われている一部の特殊文字が入っていないようです。
従って、S60 3rdで問題なく使えるようなものを探す必要があります。
S60 3rd用のSDKにはHeiseiGothS60.ttfが入っていますし、IPAのフォントをベースしてS60用に改良したフォントなどもあります。

今回は、自分用にフォントを合成してみました。
参考にしたのは以下のサイトです。
http://jamlog.podzone.org/jamlog-1/index.php?id=970
http://www8.atwiki.jp/705nk/pages/24.html

http://jamlog.podzone.org/jamlog-1/index.php?id=970 では、ベースになるフォントにS60 3rd用特殊文字を持ってくるのではなく、HeiseiGothS60b.ttfをベースにしてそこに自分の好きなフォントを持ってくる方法が説明されています。
HeiseiGothS60b.ttfを入れ物として使うことになります。
S60 3rd用特殊文字がどこにあるかハッキリわからないので、このやり方の方が確実のような気がしました。
ただし、持ってくる文字数が多くなり、作業が大変になります。

※http://jamlog.podzone.org/jamlog-1/index.php?id=970、http://www8.atwiki.jp/705nk/pages/24.html 共にHeiseiGothS60b.ttfをベースにして作業しています。
HeiseiGothS60b.ttfは日本で正式に発売された端末を持っていないと手に入れることができないようなので、SDKからHeiseiGothS60.ttfを持ってきて作業しました。

■事前準備

  • SDKからHeiseiGothS60.ttfを取ってくる
  • 表示に使用したいフォントを用意する
  • FontForgeを使える状態にする


■表示に使用したいフォントの編集
合成する前に表示に使用したいフォントをいじっておきます。
OpenTypeフォントのTrueType化に関する手順も残しておきたいので、参考にしたサイトに倣いヒラギノ丸ゴシックを使ったことにして書きます。

  1. FontForgeでヒラギノ丸ゴシックを開く
  2. [CID]->[単一化](OpenTypeのTrueType化に必要)
  3. [エンコーディング]->[エンコーディング変換]->[ISO 10646-1 (Unicode, BMP)](OpenTypeのTrueType化に必要)
    参考にしたサイトでは[エンコーディングを強制]となっていますが、それではうまくいきませんでした。
  4. [エレメント]->[フォント情報]の一般情報の編集
    ここで合成したときにサイズや位置がずれないようにHeiseiGothS60.ttfと同じ値を設定します。
    高さ1743、深さ305、輪郭を拡大/縮小にチェック、下線の位置-105、Height120
  5. .sfd形式で保存(ファイル名はHiraMaru.sfdとする。)


■フォントの合成

  1. FontForgeでHeiseiGothS60.ttfとHiraMaru.sfdを開く
    HeiseiGothS60.ttfはビットマップを読み込まない。
    作業しやすいようにウィンドウを並べます。
  2. フォントの貼り付け
    必要なフォントデータをHiraMaru.sfdからHeiseiGothS60.ttfに貼り付けていきます。
    HiraMaru.sfd側で範囲選択をしてコピー、HeiseiGothS60.ttf側の同じ文字コードのところで貼り付けでOK。
    どの範囲のデータを貼り付けるかは下の表を参考にしてください。
  3. フォントサイズの調整
    合成したフォントをそのまま使うと大きいのでサイズを83%に縮小します。
    (この辺は表示に使用したいフォントが何かによって変わってきますし、好みもあります。)
    HeiseiGothS60.ttf側で[Ctrl]+[A]して全てのフォントを選択
    [エレメント]->[変形]->[変形]のところで、Originをグリフの原点に、処理内容を一様に拡大・縮小に、tranform width tooにチェックをつけて、任意の倍率で変形
  4. フォントの出力
    [ファイル]->[フォントの出力]でTypeをTrueType、ビットマップなし、Validationなしにして保存


■フォントの合成内容
HiraMaru.sfdからHeiseiGothS60.ttfへコピーした文字コードの一覧です。
http://jamlog.podzone.org/jamlog-1/index.php?id=970 に書かれているものだけでは足らない文字もありました。
また、範囲が細切れで面倒だったのでできるだけコピペ回数を減らせるよう調整しました。

文字コード16進 (10進) 備考
開始 終了
U+0020
(32)
U+200F
(8207)
コピー
半角っぽい幅の文字を使用したい場合は別のフォントから持ってくると良い
ギリシャ文字に関しては全角っぽい幅の方がしっくりくるかな?
U+0394 (916)、U+03A9 (937)は事前に参照を解除しておく
U+2010
(8208)
U+223A
(8762)
コピー
U+0020 (32)~U+200F (8207)と同じフォントを使うときは、U+0020 (32)~U+223A (8762)をコピーでいけるかな?
U+223B
(8763)
  コピーしない
カーニング関連のエラーが出て縮小したときに幅がおかしくなった
U+223C
(8764)
U+2FFF
(12287)
コピー
U+25B4 (9652)はU+25B2 (9650)からコピーして縮小
U+25B5 (9653)はU+25B3 (9651)からコピーして縮小
U+25B8 (9656)はU+25B6 (9654)からコピーして縮小
U+25B9 (9657)はU+25B7 (9655)からコピーして縮小
U+25BA (9658)はU+25B6 (9654)からコピー
U+25BB (9659)はU+25B7 (9655)からコピー
U+25BE (9662)はU+25BC (9660)からコピーして縮小
U+25BF (9663)はU+25BD (9661)からコピーして縮小
U+25C2 (9666)はU+25C0 (9664)からコピーして縮小
U+25C3 (9667)はU+25C1 (9665)からコピーして縮小
U+25C4 (9668)はU+25C0 (9664)からコピー
U+25C5 (9669)はU+25C1 (9665)からコピー
U+3001
(12289)
U+9FA5
(40869)
コピー
範囲が広いので気合いで
U+F909
(63753)
U+FB04
(64260)
コピー
U+FF01
(65281)
U+FFE5
(65509)
コピー

自分の環境だけかもしれませんが、FontForgeが妙に不安定で困りました。
特に、.sfd形式で保存→閉じる→再度開くで編集するとほぼ確実に強制終了をくらいました。
これで何度作業を無駄にしたことか。
ですので、やり方が確定したら作業を途中でやめることなく一気に終わらせる必要があります。

今回合成したフォントを使用してみて一部文字化けがあるのを確認しているので、そのうちまた作業をする必要があります。
そのときは既に合成済みの .sfd形式のファイルは使えないと思うので、上記の手順を最初からやり直すことになります。
憂鬱です。