UNITY TextMeshPro でいい感じの影付き日本語文字を作る方法

UNITY

UNITY の Text Mesh Pro で日本語メインで使用するために

若干多言語も意識しつつ、こんな感じのフォント設定を作るためにアレコレしたまとめ。

日本語フォント

スマホゲームなどのUIでは、文字少なめ+フォントは太めが見やすい

ということで個人的には太めフォントが好き。

上記の見本では

日本語フォントは
Rounded Mgen+ (ラウンデッド ムゲンプラス) を使用しています。

Rounded Mgen+ (ラウンデッド ムゲンプラス) | 自家製フォント工房
Rounded Mgen+ (ラウンデッド ムゲンプラス) は、オープンソースフォントの「M+ OUTLINE FONTS」をベースに、これに含まれない漢字や記号を「源ノ角ゴシック」で補い、さらに角を丸くする加工で丸ゴシック化したフリーフォントです。

商用利用可能で複雑な漢字も使えてぶっとい文字もある優秀フォント。

ほんのりかわいいのがユーザーに優しげで好まれる昨今にぴったり。(特に尖った世界観が無い場合)

Font Asset Creator で 生成する

・Base
・japanese
・Dynamic

の3つ生成する。下記参考にさせていただきました。

Base

以下の設定でGenerateして、Save as… で名前をつけて保存します。

Character Set は Extended ASCII

追記:シンプルローマ字だけならASCIIでいい

Sampring Point Size

大きめ文字で使うこと多ければ Custom Size 50

追記:AsciiでAutoで512で出力すると47だったので47でもいいかも


アプリ容量やメモリ節約優先であれば Auto Sizing →AutoにするとShadowが付けにくい場合がある

Padding

7にしているけど5でもよさそう。装飾による。

追記:最終的に10にした

最初、上記参考サイトの2にしていたら
その後Text Mesh ProのUnderlayをいじっても影が付かずあれれ???となり、
よくよく見たら文字を綺麗に出すためにアウトラインを犠牲にしていると書いてありましたね。。

シャドウなどの文字周辺に装飾つけたければそれなりなPaddingが必要ということで
若干装飾を優先させたい場合Padding 5くらいでよさそう。がっつり影付けたい場合は7とか増やす。

ただしその分スペース使うので文字の解像度的な綺麗さ優先なら少なく。装飾付けられる余白かどちらを取るかのトレードオフ。

Atlas Resolution

上記のSampring Point Sizeにより

Point Size が Custom Size 50 → 1024 × 1024
Point Size が Auto Sizing → 512 × 512

追記:512でもよさそう

Point Size が Custom Size 指定の場合は、一旦Generateしてみて全部文字入る一番小さいサイズにする感じ

Packing Method

Fast と Optimum で Generateの時間が何分も(マシンと文字数によっては何十分も)変わる。

Optinumのほうが最適なサイズの計算をしてくれて、ファイルサイズも少し小さくなるらしい。

とりあえず試すのがFastで、最終的にOptimumで出すのが最適。

Render Mode

SDFAA

Japanese

二つ目、もう一度今度は以下の設定でGenerateして、Save as… で別名の名前をつけて保存します。

Character Set は Characters from File

日本語文字を並べたテキストファイルを作ってAssetに追加して、指定する。

文字リストは常用漢字一覧などで調べるとでてくる。

上記のブログにも例を載せてくださってます。
https://gist.github.com/kyubuns/b06b84106a6b6791f6f4b194c98e42fd

追記

その他は基本Baseと同じですが・・

Atlas Resolution

Sampring Point Sizeにより

Point Size が Custom Size 50 (その後47にした → 4096 × 4096
Point Size が Auto Sizing → 2048 × 2048

といったところでしょうか。

Dynamic

三つ目、以下の設定でGenerateして、Save as… で別名の名前をつけて保存します。

Character Set は Unicode Range (Hex)

Character Sequence (HEX) には何も指定しない。

その他は基本Baseと同じですが・・

Atlas Resolution

Sampring Point Sizeにより

Point Size が Custom Size 50  (その後47にした→ 2048 × 2048
Point Size が Auto Sizing → 1024 × 1024

といったところでしょうか。

TMP (Text Mesh Pro) Font Asset の設定

ネーミングはなんでもいいですが、上記により3つ生成されました。

最後に作ったDynamicを選択して、InspectorのAtlas Population ModeをStatic → Dynamic にします。

最初に作ったBaseを選択して、Inspector の Fakkback Font Assets に
二つ目に作ったJapanese、三つ目に作ったDynamicの順番で設定します

表示する文字に、Baseの文字が無ければJapaneseを読み、そこにもなければDynamicを読んで生成ということで、いつもでかいファイルを読まなくてすむことになるようです。

日本語以外の自動多言語対応については同じく下記をご参考ください

見栄えメインの場合は下記も大変参考になります。

UNITY* TextMeshPro 特集 * 第 2 部  タイポグラフィによる美しいテキストレイアウト
https://kumastudio-pro.amebaownd.com/posts/5977213

コメント

タイトルとURLをコピーしました