Rockbox用フォント変換

ttc/ttfなどの日本語フォントファイルから、Rockbox用のfnt形式に変換できます。

フォント変換に役立つツール

Rockbox simulator

Rockbox simulator buildsからダウンロードします。2018年1月版なので現行版と挙動は多少異なりますが、スキンの微調整や変換したフォントの確認に便利です。

Rockbox simulator

「rockboxui.exe」を実行するとWindows上でRockboxが起動します。ウインドウ上のボタンをクリック、画面に表示されている赤文字の「enter」などのキー、矢印キーなどから操作ができます。

Rockbox simulatorで使用中のフォントはロックされ、削除上書きができません。fontsフォルダにファイルを追加削除したあと、画面を切り替えるだけで変更が反映されるので、simulatorを起動したままフォントの変換確認作業ができます。

fontsフォルダに選択中の「フォント名.gc」というファイルが生成されますが、削除してもフォントを選ぶたびに生成されるので適当に扱えます。スキン変更後にアルバムアートが表示されないときは、simulatorを再起動すると表示されることがあります。

UniteTTC

ttcはttfの集合体で、UniteTTCのexeファイルにttcファイルをドロップすると、「フォント名001.ttf」と末尾に数字が付いたファイルが出てきます。展開された各ttfを開くと名称が分かるので、ファイル名をFont-Gothic.ttfなど分かりやすいものに変更します。

Rockbox Font Convertor

バッチファイルにフォントファイルをドロップしてサイズを入力するとfnt形式に変換できます。一部のビットマップフォントで特定のptなら、きれいに変換できることがあります。

Unifont MaruMonic

左は等幅のUnifont_JP、右は縦長のマルモニカです。この2つは12pt指定でfnt変換すると16dotサイズになります。Unifontはttf版更新終了のため、Webアプリなどでotfをttfに変換してからbatにドロップします。

作業手順

変換処理に何分も時間がかかる場合、正常に終わらず作業ファイルのサイズが膨れ上がっていくので、ウインドウの×ボタンを押して強制終了し、数値を変えて実行します。

入力したptと出力されたdotの値の例

makefont.bat実行時に入力する値は「pt」で、出力されたファイル名の頭には入力したptの値が付きます。一方、最初から入っているフォントや、Rockbox用フォントセットのファイル名先頭の値は「dot」です。

4pt5pt6pt7pt8pt9pt10pt11pt12pt13pt14pt15pt16pt17pt
SH G30-M070910121314161718202124
Unifont-JP16
さざなみフォント
ゴシック体060708111214151719202124
明朝体050708101114151618192024

フォントによって入力したptと、出力されるdotの値は異なります。変換後のfntファイルとRockbox用フォントセットを切り替えて、アイコンの大きさが同じになるdotの値を探し、変換したファイル名の値をdotのものに修正しておくと扱いやすいです。

convttfの事前準備とバッチファイル

FontCon convttf

左はmakefont.bat、右はconvttf.exeで変換した、16dotサイズのIPAexゴシックです。変換確認作業を繰り返す必要はありますが、convttfの方がきれいに仕上がります。

準備と流れ

前準備

作業の流れ

満足いく結果になるまで何度も繰り返します。バッチ処理中に、値を変更→保存→batにフォントドロップして並列処理になっても問題ありません。慣れてきたら設定を細かく変更してどんどんfntを生成してまとめて確認すると早いです。

バッチファイルの編集

convttf -p 15 -c 0 -x -X 60 -Ta 0 -Td 0 -r 0 -w -L -o output.fnt input.ttf

通常convttfはコマンドプロンプトで上記のようなパラメーターを指定して実行します。これを繰り返すのは手間なのでバッチファイルを利用します。

rem ===== パラメーター設定 =====
set dot=0
set p=15
set X=60
set c=0
set Ta=0
set Td=0
set r=0
set w=
set L=
rem ===========================

ttffnt.batをテキストエディターで開いて数字を変えて上書き保存します。そのバッチファイルにttfファイルをドロップすれば指定した値で変換されます。32ビットの「convttf.exe」、64ビットの「convttf64.exe」のどちらでもそのまま使えます。

出力ファイル名

出力ファイル名は「15-output_15_60_0_0_0_0-w-L.fnt」のような設定値が付きます。dotの値は目標のフォントサイズでファイル名先頭に付き、変換処理には関係ありませんが、既存のフォントと大きさを比較する作業がやりやすくなります。

設定内容

サイズ横スペース縦スペース
オプション-p N-X N-L-c N-x-w-Ta N-Td N-r N
N (標準値)15600000
内容大きさ解像度文字形状横間隔切詰め数字等幅上側削下側削縦間隔

ttffnt.batのwは「set w=-w」、Lは「set L=-L」とハイフンと小文字大文字に注意して記述します。指定しない場合は空欄にします。-xは半角スペースも切り詰めてしまう使いどころが難しい設定なのでバッチには含んでいません。

convttfの作業例@IPAexゴシック

IPAexゴシックから16dotフォントを作成します。解凍するとipaexg.ttf(ゴシック体)、ipaexm.ttf(明朝体)の2つがあるのでipaexgの方を使います。今回は16dotフォントを作りたいのでttffnt.batを開いて「dot=16」に書き換え上書きします。

大きさの調整

16-Adobe-Helvetica ipaexg_p15X60

convttf -p 15 -X 60 -c 0 -Ta 0 -Td 0 -r 0

まずはデフォルト設定で変換すると、16dotフォント(16-Adobe-Helvetica)と比較して小さいです。

ipaexg_p16X60 ipaexg_p16X70

convttf -p 16 -X 60 -c 0 -Ta 0 -Td 0 -r 0
convttf -p 16 -X 70 -c 0 -Ta 0 -Td 0 -r 0

p(大きさ)を15から16に変更すると少し大きくなりました(画像左)。続けてX(解像度)を60から70にすると、16dotフォントと比べてアイコンの大きさや表示数が同じになりました。pやXの値を変更するとフォントの大きさが変わります。

Lオプションの使用例

ipaexg_p16X70Lなし ipaexg_p16X70L付き

convttf -p 16 -X 70 -c 0 -Ta 0 -Td 0 -r 0 -L

Lを付けると文字の形状が少し変化しました。各画像を右クリックから保存して、画像ビューアーで全画面表示して切り替えると変化が分かりやすいです。ひとまずLは外して進めます。

横スペースの調整

ipaexg_c1 ipaexg_c2

convttf -p 16 -X 70 -c 1 -Ta 0 -Td 0 -r 0
convttf -p 16 -X 70 -c 2 -Ta 0 -Td 0 -r 0

c(横間隔)を0から1にすると文字間隔が少し開きました(画像左)。cを2にするとさらに間隔が広がります。Xの値を変えると文字サイズが変わり、英数字の文字間隔が変化することもあるので、そちらを先に試した方がよいです。

xオプションの使用例

ipaexg_p16X70xなし ipaexg_p16X70x付き

convttf -p 16 -X 70 -c 0 -Ta 0 -Td 0 -r 0 -x

cを0に戻しx(切詰め)を付けると、文字間隔が削られすぎて表示に難があります。「Line Separator」に入っていた半角スペースはなくなっています。

wオプションの使用例

ipaexg_p16X70wなし ipaexg_p16X70w付き

convttf -p 16 -X 70 -c 0 -Ta 0 -Td 0 -r 0 -w

デフォルト設定の数字は等幅になるので、日付などの数字が入っているファイルが並ぶときれいに並びます(画像左)。wを付けると数字が等幅ではなくなり詰めて表示されますが、前述のような場面では少しずれて表示されます。

縦スペースの調整

ipaexg_r1 ipaexg_X65r1

convttf -p 16 -X 70 -c 0 -Ta 0 -Td 0 -r 1
convttf -p 16 -X 65 -c 0 -Ta 0 -Td 0 -r 1

文字の「g」の下が欠けているのでr(縦間隔)を0から1にすると「g」の下も表示されるようになりました(画像左)。しかし16dotフォントよりも少し大きくなったので-Xを65に下げます。

ipaexg_jp_r1 ipaexg_jp_X70Ta1r1

convttf -p 16 -X 65 -c 0 -Ta 0 -Td 0 -r 1
convttf -p 16 -X 70 -c 0 -Ta 1 -Td 0 -r 1

縦スペース調整後、若干文字が小さくなりました(画像左)。下は余裕なしですが、上スペースはまだ削れそうなのでTa(上側削)を1にして上を詰めます。すると16dotサイズから小さくなったのでXを65から70に戻すと、文字サイズも戻りました。

ipaexg_jp_X75Ta2r1 ipaexg_jp_X76Ta3r1

convttf -p 16 -X 75 -c 0 -Ta 2 -Td 0 -r 1
convttf -p 16 -X 76 -c 0 -Ta 3 -Td 0 -r 1

Taを2にすると文字が少し大きくなりました(画像左)。Taを3にすると「選択」などの文字の上部が切れてしまいました。文字がはみ出さない程度に上下のスペースを削ると文字が大きくなります。逆に縦スペースを切り詰めず文字を小さくすれば表示文字数を増やせます。

解像度の調整

今回の条件ではXを72~75に変更しても16dotサイズに収まります。さらに「-L」も追加して計8つfntファイルを生成します。これらはすべて微妙に違うのでよく見比べて決定します。

ipaexg_X74Ta2r1L ipaexg_jp_X74Ta2r1L

convttf -p 16 -X 74 -c 0 -Ta 2 -Td 0 -r 1 -L

L付きのX74は、X72~73より横幅が多少増えて漢字などはややぼやけてる部分もありますが、小文字のiの間隔が適度になるなどバランスがよいのでこの設定にします。

それぞれのスクリーンショットを撮って全画面表示でスライドして比較すると違いが分かりやすいです。

convttfの変換例@2/3&1/2フォント

2/3角フォント

TTEdit2by3Gothic_X80Ta2Td1L TTEdit2by3Gothic_jp_X80Ta2Td1L

convttf -p 16 -X 80 -c 0 -Ta 2 -Td 1 -r 0 -L

無印IPAフォントver3の文字幅を2/3にしたフォントです。下側に余裕があったのでTdを1にしています。

半角フォント

TTEditHalfGothic_X78c1Ta2Td1L TTEditHalfGothic_jp_X78c1Ta2Td1L

convttf -p 16 -X 78 -c 1 -Ta 2 -Td 1 -r 0 -L

無印IPAフォントver3の文字幅を1/2にしたフォントです。文字間隔が狭いのでcを1にしています。

inserted by FC2 system