はじめに
今回はTextMeshProのフォント用のアセットに指定した文字だけを入れて容量を下げる記事になります!
TextMeshProを利用している場合、Font Asset Creator
を使って.TTF
などのフォントのファイルから独自のアセットに変換をします。
ただこのアセットは日本語対応をすると、数十MBになってしまうこともよくあります。
もしIOSのアプリでは、100MB以上ではWi-Fiを繋がなかったりと条件があったりするので、フォントで容量を食うのはなるべく避けたいところです。
その容量を減らす対策として、今回はアセットに入れる文字を減らす方法を紹介をしたいと思います。
普通に常用漢字を含めたアセットの場合
今回は例としてアプリ明朝体を使っていきたいと思います。
まずはフォント(.otf)をUnityにインポートします。ちなみに日本語な名前はFont Asset Creator
ではバグる可能性が高いので、英語の名前にしておいたほうがよいでしょう。
以下のサイトの設定で、常用漢字を含む日本語のアセットを作成してみました。
UnityのText Mesh Proアセットで日本語を使うときの手順 - Qiita
この場合の容量は、32,777kB
と表示されているので、32MBという結果になりました。
Font Asset Creatorの設定を変更する
ここから指定した文字のみを入れて、容量の削減をしたいと思います。
自分で使う文字を指定する場合は、Charactor set
をCustom Charactors
にして、Cuntom Charactor List
の中に使う文字のみを打ち込みます。
ただこのままアセットを作成しても実は容量は変わりません。
これはTextMeshProの独自アセットの生成方法に理由があるのですが、TexeMeshProでは使用する文字を1枚の画像ファイルにする(アトラス化)ことでアセットを作成しています。
なので、いくら入れる文字を減らしても画像ファイルの大きさが変化させなければ容量は変わらないのです。
この画像ファイルの大きさを変えられるのが、Atlas Resolution
です。
日本語の設定では4096*4096
または2048*2048
を使うことが多いと思いますが、これを減らすことで劇的に容量を減らすことができます。
ただこのAtlas Resolution
、デフォルトの512*512
で、すべてのASCII文字(128文字)を含められるという情報以外を見つけられませんでした。
またSampling Point Size(font size)
という画像に収めるときのフォントの文字の大きさも関係するので、一概にこれが良いとはいえません。
なので、最終的には実際に作成をしてみて最小の設定をみつけるしかないと思います。
さらにSampling Point Size(font size)
をAuto Sizing
にすると自動で全ての文字を収まるようにしてくれるので、うまく活用するといいでしょう。
私はこのような設定でアセットを作成してみました。
結果
以上のことをすると、32,777kB → 141kB
に削減することができました!
問題の実際の見た目ですが、ほとんど違いはないように見えました。
さいごに
アプリで使う文字のみを入れることで、かなりの容量を削減することができました。
簡単に今回の内容をまとめると、
- 容量の大きさは
Atlas Resolution
- 文字の綺麗さは
Sampling Point Size(font size)
をうまく設定することがキーだと思います。
ぜひ自分なりの設定を見つけてみてください!