Unity:多言語のフォントはUnicode領域で作ろう
掲載日: 2026/01/13
Unity:多言語のフォントはUnicode領域で作ろう
Unityで多言語のフォントを作成することに困ったことがありますか?
どんな文字が必要か?作成した文字で足りるかどうか?
本記事では、CJK(中国語・日本語・韓国語)を例にして、Unicode領域でフォントの作成について紹介していきます!
目次
なぜUnicode領域で?
Unicode領域でFont Assetsを作成するには様々なメリットがあります。
- Unicodeブロックには重なりがない、それぞれ単一のブロック名を持つ
- 範囲で仕様文字を決めるとフォントの漏れが少なくなる
- リソース管理に便利
そのため、必要な文字セットを明確に指定しやすく、漏れやダブりを防ぐことができます。
フォントリソース管理に便利:フォールバックフォント
TextMeshPro の Font アセットには Fallback Font Assets という設定があります。
一つのフォントアセットに文字数が制限されて、一回作ってフォントが足りない場合があります。しかも、一つのファイルでは容量が大きくなるため、プロジェクトのリソース管理に好ましくありません。
加えて、別のフォントアセットも追加できるので非常に便利です。
CJKの文字に適切なUnicode領域は?
さて、本題に入りましょう!
まずもっとも文字数が多いCJK共通領域から確認し、そのうえで日本語・韓国語の追加文字の差分を見ていくのが効率的です。
ASCII | 0000-007F | 128 個 | 英語、数字 |
一般句読点 | 2000-206F | 73 個 | 英語の記号 |
全角・半角 | FF00-FFEF | 240 個 | 数字、確固 |
CJK統合漢字 | 4E00-9FFF | 20,992 個 | 普通に使用されている文字 |
CJK互換漢字 | F900-FAFF | 512 個 | 中国外の文字 |
CJKの記号及び句読点 | 3000-303F | 64 個 | CJKの記号 |
CJK統合漢字拡張A | 3400-4DBF | 6,592 個 | 珍しい文字 |
CJK統合漢字拡張B | 20000-2A6DF | 42,720 個 | 珍しい・古い文字 |
CJK統合漢字拡張C | 2A700-2B73F | 4,160 個 | 一部は普通に使われていない文字 |
CJK統合漢字拡張D | 2B740-2B81F | 224 個 | 珍しい・古い文字 |
CJK統合漢字拡張E | 2B820-2CEAF | 5,776 個 | 珍しい・古い文字 |
CJK統合漢字拡張F | 2CEB0-2EBEF | 7,473 個 | 珍しい・古い文字 |
CJK統合漢字拡張G | 30000-3134F | 4,944 個 | 珍しい・古い文字 |
CJK統合漢字拡張H | 31350-323AF | 4,192 個 | 珍しい・古い文字 |
CJK統合漢字拡張I | 2EBF0-2EE5F | 624 個 | 珍しい・古い文字 |
CJK統合漢字拡張J | 323B0-3347F | 4,304 個 | 珍しい・古い文字 |
非常に多いですね…
ただし、この表に書いてある領域には中国語の文字がカバーされています。後は日本語と韓国語の差分です。
日本語は以下の表です。
ひらがな | 3040-309F | 109 個 |
カタカナ | 30A0-30FF | 96 個 |
韓国語は以下の表です。
ハングル音節文字 | AC00-D7AF | 11,184 個 |
ハングル字母 | 1100-11FF | 256 個 |
ハングル互換字母 | 3130-318F | 96 個 |
ハングル字母拡張A | A960-A97F | 32 個 |
ハングル字母拡張B | D7B0-D7FF | 80 個 |
これで以上です。
さて、上記の表で全言語に文字を作るのはかなり大変なので、各言語のFont AssetsとFallback Font Assetsをどう管理すればいいか、実際にFont Assetを作成していきましょう。
Font Assetを作ろう!
Font Asset Creator は Window > TextMeshPro > Font Asset Creator で開きます。
まずは、基本設定です。プラットフォームによって設定が異なりますが、Windowsの場合は以下を参照して問題ないと思われます。
Sampling Point Size: 48
Padding: 4 px ※必ずSampling Point Sizeの10%で設定する
Packing Method: Fast
Atlas Resolution: 8192×8192 ※iOS、Android対象は必ず4096×4096以下
Character Set: Unicode Range (Hex)
📝メモ:Sampling Point Size 48 という設定は解像度と描画パフォーマンスのバランスが良く、ゲーム用途での実績が多いため今回の推奨値として紹介しています。
設定が完了したら、Source Font にて作りたいフォントデータを入れましょう。
今回使用するフォントは Source Han Serif です。
Atlas Resolution(アトラス解像度)を大きくすると、アトラス画像に収録できる文字数が増えます。逆に小さく設定する場合は、Unicode領域ごとにフォントアセットを細かく分ければ問題ありません。
アトラスとは、フォント文字の画像を1枚のテクスチャにまとめたものです。複数のアトラスに分割して管理することで、文字漏れを防げるだけでなく、ビルドサイズ削減や差分パッチ配信(フォント更新)にも役立ちます。
上記の設定を参考にすれば、1つのアセットに多くの文字をまとめられます。
中国語(繫体字・簡体字両方)は以下になります。
SDF | CJK統合漢字 | 4E00-9FFF |
フォールバック1 | 英語、一般句読点、CJKの記号及び句読点、全角・半角 | 0000-007F,2000-206F,3000-303F,FF00-FFEF |
フォールバック2 | CJK統合漢字拡張A-J | 3400-4DBF,20000-2A6DF,2A700-2B73F,2B740-2B81F,2B820-2CEAF,2CEB0-2EBEF,30000-3134F,31350-323AF,2EBF0-2EE5F,323B0-3347F |
日本語は、英語、記号、各言語の文字、一部の漢字 という認識で作成すれば問題ありません。
SDF | CJK統合漢字 | 4E00-9FFF |
フォールバック1 | ASCII、一般句読点、CJKの記号及び句読点、ひらがな、カタカナ、CJK統合漢字拡張A、全角・半角、CJK互換漢字 | 0000-007F,2000-206F,3000-303F,3040-309F,30A0-30FF,3400-4DBF,F900-FAFF,FF00-FFEF |
韓国語は中国語の文字が含まれていないのでこのようになります。
SDF | ASCII、一般句読点、ハングル音節文字、全角・半角 | 0000-007F,2000-206F,AC00-D7AF,FF00-FFEF |
それでは、Unityを開いてFont Assetsを作っていきましょう!TextMeshPro のインポートも忘れずに!

上記に分けたグループごとに設定し、フォントを作成するとこういうファイルができます。
これで、日本語と中国語のフォールバックフォントを設定していきます。
最後に作成したフォントを確認していきましょう。
確認用の文章は、ChatGPTに考えてもらいました。

最後に
多言語対応で問題になりやすいのは「フォントの不足」「ビルド容量」「管理コスト」の3点です。
Unicode領域に基づいてFont Assetを分割し、Fallback Fontを設定しておけば、これらを同時に解消できます。
本記事の領域表と設定例を活用することで、CJKタイトルでも安定したフォント表示環境を構築可能です。
参考サイト
https://www.unicode.org/charts/
https://en.wikipedia.org/wiki/CJK_Unified_Ideographs
https://symbl.cc/en/unicode/blocks/cjk-radicals-supplement/
https://stackoverflow.com/questions/1366068/whats-the-complete-range-for-chinese-characters-in-unicode
https://character-table.netlify.app/korean/#unicode-ranges



