Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 UMG等で日本語フォントが4.23以降で文字化けするのを何とかする

UE4.23以降で、日本語フォントをUMGのText Widgetなどで表示しようとすると文字化けが発生してしまいます。これは最初バグなのかと思っていましたが、4.23のリリースノートには以下のような文章があります。

docs.unrealengine.com

Deprecated: Legacy localized fonts are now disabled by default.
These have been "soft" deprecated since 2014, were formally deprecated (emitting a warning if used) in 4.22, and will be removed in 4.24.
They can be temporarily enabled again by setting Slate.EnableLegacyLocalizedFallbackFont to 1.
You should instead ensure that your font assets are set-up correctly by using this overview.

従来のLegacy localized fontsと呼ばれるものが、非推奨になり、デフォルトでオフになりました。4.23の時点ではまだ、"Slate.EnableLegacyLocalizedFallbackFont"を1に設定することで旧来のフォントも利用できますが、どの道4.24で完全に削除されることになります。代わりにフォントアセットを自前で用意、設定してくださいとのことですが、日本語を表示するために態々フォントを用意するのも手間です。

非推奨になったものは仕方がないので、別のやり方でなんとかしてみましょう。

エンジン内部にあるフォントを利用する

デフォルトのフォントは無効化されましたが、エンジン自体は日本語化されていますし、日本語フォントが完全に利用できなくなったわけではないはず。というわけでエンジンが元々持っているフォントを探して利用しましょう。

試しにエンジン内のフォントを検索してみます。

f:id:alwei:20191124212029p:plain

".otf"で検索すると、"GenEiGothicPro"というシリーズのフォントを見つけることができました。フォントは以下の場所にあります。

...\UE_[version]\Engine\Content\Editor\Slate\Fonts

調べてみると、どうやらここのフォントみたいです。

okoneya.jp

ライセンスはSILライセンスとなっており、使用、研究、複製、統合、埋め込み、改変、再配布および販売を行うことが可能となっているので、非常に扱いやすいフォントになっています。

あとはこのフォントをエンジンから直接自分のプロジェクトにインポートします。インポート方法は公式ドキュメントでも詳しく解説されているので、ここでは割愛します。

docs.unrealengine.com

UMGのText Widgetで利用する

というわけで早速、文字化けしていたText Widgetで利用してみます。

f:id:alwei:20191124214417p:plain

左が"GenEiGothicPro-Regular"フォントで、右がデフォルトの"Roboto"フォントです。当たり前ですが、右は表示できません。"GenEiGothicPro"は癖があまりなく、日本語を表示させるにはちょうどよいフォントです。ひとまず表示するには十分そうです。

f:id:alwei:20191124214805p:plain

アウトラインもバッチリ!

というわけで、4.23以降でとりあえず使う日本語フォントに悩んだ場合は、"GenEiGothicPro"を利用させてもらいましょう!自作アプリへの組み込みも問題なく可能です。その場合、ライセンス表記も必要なので注意しておきましょう。