【Unity】TextMeshProで日本語フォントを扱う

二番煎じかもしれませんが、TextMeshProを使用する際にいつも調べているので
自分のブログに書き記しておきます。

フォントをダウンロードする

フォントのダウンロードは権利表記がしっかりしているものを選びます。
特に決まってない場合はGoogleFontがおすすめです。
fonts.google.com

商用利用が可能であり、種類も豊富です。
よくある質問  |  Google Fonts  |  Google for Developers

フォントをインポートする

ダウンロードしたものを解凍し、
そのままUnityのProjectウィンドウにドラッグ&ドロップします。

上記タブからWindow → TextMeshPro → FontAssetCreator を選択します。

フォントからフォントアセットに変換する

FontAssetCreator にはフォントアセットに変換するための項目が存在します。

各種項目設定をしたのちにGenerateFontAtlasを押すと
フォントアセットが作成されます。

その後Saveを押してフォントアセットとして保存され、
UI等で使用できるようになります。

各種設定項目で重要度の高いものは以下の通りです。

項目 説明
Source Font File 元となるフォントデータ
Sampling Point Size アトラスに入る一文字のサイズ
Padding アトラスに入る文字間のサイズ
Atlas Resolution 生成されるアトラスの解像度。後述。
Character Set アトラスに入る文字の指定。後述。

アセットサイズについて

アトラスの解像度(Atlas Resolution)が高ければ高いほど
アセットのデータサイズが大きくなります。

・256の場合 - 144KB

・8192の場合 - 131,088KB

個人的に開発しているものであれば問題ありませんが、
Githubを使用して開発を行う場合は100MB(==102400KB)を超えるファイルがあげられないため、
注意が必要です。

GitHub100 MB を超えるファイルをブロックします。 docs.github.com

Character Setについて

テキストアセットに必要な文字を指定できます。

項目 説明
ASCII ASCII文字のみ
ASCII - Wikipedia
Numbers + Symbols 四則演算+数値+()等の記号
Custom Characters 実際に使用する文字を直接指定

英語文字で使用するならASCII
ゲーム内の通貨などを扱う文字だけであればNumbers + Symbolsを選択し、
アセットサイズをできるだけ小さくした方が良いです。

日本語を使用したい場合、Custom Characters を選択して
実際に使用したい文字を直接打ち込みます。

全ての文字列を扱いたい場合は以下のGistを使ってコピー&ペーストすれば問題ないです。
日本語文字コード範囲指定(ascii・ひらがな・カタカナ・第一水準および第二水準(JIS-X0208-1997)に含まれる漢字) · GitHub

ただ、上記のGistすべてを使用してゲームを作成することはまれだと思います。
予め使う文字を絞ってアセットサイズを小さくしていくのがおすすめです。