no-image

Unityで日本語フォントを使うときに、文字を減らしたフォントを作る方法

Unityで日本語フォントを使う場合、iPhoneやAndroidでは、
フォントをビットマップ化する必要があります。

そのとき、テクスチャ1枚におさめなくてはいけないため
通常のフォントだと、含まれている文字数が多いので、
文字がすごく小さくなってしまいます。

そこで、日本語フォントを加工して、
文字数を減らしたフォントを作成する方法をメモしておきます。

ソフトのインストール

fontの加工用にFontForgeというソフトをインストールします。
http://fontforge.sourceforge.net/ja/

上記リンクからインストールが可能ですが
ちょっと手間なので、自分は
Mac OS X 専用バイナリ
からコンパイル済みバイナリを入手してインストールしました。

フォントの用意

元になるフォントを用意します。
自分は、加工や再配布、商用利用が可能な
梅フォント
を使用することにしました。

マクロの作成

あとは、FontForgeを起動して、元になるフォントから
いらない文字を削除していけばいいのですが、
さすがに1文字ずつ消していくのは手間なので、
マクロを作成することにします。

マクロは以下のような感じになります。

SelectNone();
SelectMore(0u00003054); ←残したい文字を選択
:
SelectInvert();
Clear();
Generate("miniset.ttf");
Quit(0);

マクロ自体のプログラムは簡単なのですが、
残したい文字を選択する部分を作るのが結構手間です。

ちょっと工夫してみる

そこで、PHPでマクロ作成用のプログラムを作ってみました。
http://tonosamart.com/tonolib/fontforge/miniset.php.txt
同じフォルダにある、chars.txtを読み込んで、
その中にある文字を集計して、FontForge用のマクロを作成します。

マクロの実行

作成したマクロをFontForgeで実行してみます。

ファイル→スクリプトを実行を選ぶとウィンドウが表示されるので、
FF→呼び出す→作成したマクロを選択→OK

これで、miniset.ttfというフォントファイルが作成されます。

あとは、Unityで使用すればOKです。

なるべく文字数を減らすことで、1文字のサイズを大きくすることができ、
きれいに文字を表示することができるようになります。

ぜひ、ためしてみてください!