Unityの開発における日本語フォントについてのTips
unity in japanese font
unityでゲーム開発を行う際、初期設定の状態ではArialが規定のフォントとして使用される。たとえば、Canvasに描画するTextなどでは特に指定を変更しない限りはArialを表示フォントとして指定されたままになる。しかし、知っての通りArialは欧文フォントであるため、日本語を表現するために必要なひらがな・カタカナ・漢字などはそのフォントセットに含まれていない。
そのため、普通に考えるのであればArialを指定した文章に日本語を打ち込んだ場合、文字化けが生じそうなものだが、unityの開発環境では内部的に処理を自動的に行うことによって入力された文章の欧文部分をArial、それ以外の文字を何か適当なフォントで代用することで埋め合わせを行う。これによって開発ユーザーはゲームの中心部分とは離れたフォントの選定といった作業は後回しにしてゲーム開発に集中することができる。
日本語フォントを決定しないことによる影響
ここで問題になるのは、上記の仕様は開発環境のみで成立する話であるということ。
開発環境では使用しているPCにインストールされている和文フォントを使って表示を行うものの、ビルドされたパッケージが動く環境のすべてで同様の和文フォントが使用されているとは限らない。例えば、自分が使用しているPCではMS明朝を代用フォントとして使用しているとき、パッケージ化されたアプリを動かすユーザーはゴシック体を使用しているかもしれない。自分の環境と同じフォントをユーザーが使ってくれる保障はない。
この影響によって、
などの問題が生じるかもしれない。
webGLでの仕様
しかし、より悪いのはwebGLとしてビルドしてウェブ上で配布する想定のアプリを作っている場合になる。webGLの環境で動作させるときフォントに含まれない文字を出力しようとすると、その文字はないものとして取り扱われる。つまり、欧文フォントのArialを指定したまま、和文を出力しようとすると、表示されるはずだった場所は空欄となってしまう。windows環境向けにビルドを行った際には内部的にに処理が働き代替フォントを探してくれるが、webサーバ上で動作するwebGLのパッケージではそうした処理は働かない。
和文フォントを指定しよう
つまり、結局は最初から自分がゲーム内で使用するフォントをあらかじめパッケージ内に収めておくのが最も問題の起こらない方法になる。ゲームとしてフォントを内蔵したパッケージを配布する場合、フォントの製作者からは再配布となってしまうため、そのあたりの権利関係には注意が必要になる。
和文フォントで再配布フリーとして扱うことができるものはMPLSが有名。(というかほかに数種類しか知らないですが……)
Discussion