コラム:文字セット
投稿日:2024年1月10日 | 最終更新日:2024年3月31日
目次
フォントアセットの作成には、文字セットが必要
フォントアセットの作成には、収録する文字がどれなのか指定する必要があります。
フォントに収録する文字のリストなどは、フォント業界では「文字セット」と呼ばれることが多いようです。
TextMeshProに自動で設定できる文字セットは「ASCII(ASCII文字をすべて収録する)」など英語圏に特化したものしかありません。
そのため、日本語をはじめアジア圏の場合は文字セットを自作する必要があります。
フォントファイルから文字セットを作成する(推奨)
フォントファイル内にある文字のうち、Unityが利用できる文字を全て抜き出してそれをそのまま文字セットにします。
個人的にはこれがベターだと思っています。
・多くのフォントはJISやAdobeと同等の規格に従って文字を収録しているのでそれに頼ればいい。
参考:「ゼロから学ぶ「フォントのしくみ」③:Std、Pro、Pr5、Pr6……フォントの文字セットとは?|Fontworks | フォントワークス公式note
・ゲーム用の日本語フォントファイルは多くが1万文字以下で、全部収録してしまっても消費リソース的にはあまり問題ない
・外国語のフォントであったとしても、適切な文字セットの規格などを気にしなくていい
・フォントファイル内にない文字を含まないので、フォントアセット作成時に出力されるエラーログがなく作成が速い
……という理由によります。
問題なのは、フォントファイルが収録している文字一覧をどうやって取得するかですが、
残念ながらTextMeshProの機能では用意されていないようです。
Font Asset Creatorの「Character Set」を「Custom Range」や「Unicode Range (Hex)」にして全てのUnicodeを範囲指定すれば理論上はすべての文字を収録できるはずですが、
実際にはエラー出力が莫大な数になってしまうせいか、何時間たってもフォントの作成が終わらなくなってしまうようです。
なので、現状はエディタ拡張プログラムをするなどして何らかのツールを自作するか、
アセットストアなどでツールを探す必要があります。
例) 「宴」のChatacterCollectionGenerator
ゲーム中で使用している文字から文字セットを作成する
ゲーム中使用する文字を抜き出して利用するというパターンです。
もしくは「ひらがなだけ」とか「ひらがな+常用漢字」のように、ある程度絞ったリストを自分たちで決めてそれを利用するというパターンも含まれます。
昔のゲーム開発での基本的な手法ですが、今でもシビアにリソースを絞りたい場合や、フォントの種類を多くするぶん一種類当たりのサイズを減らしたいときなどに有効です。
最初からローカライズを想定しているなどで、テキストデータを管理する設計にしている場合はそれを流用できるのですが、
そうではない場合は、プロジェクトごとに専用のエディタ拡張プログラムを書いたりなどする必要があります。
例) 「宴」のScenario Character Validator
文字化けしてないかをチェックしたり、足りない文字を追加するごとにフォントアセットを作り直したりする必要も出てくるので、小規模な開発ではあまり現実的ではないかもしれません。
汎用的な規格に従って文字セットを作成する
一般的によく使われるとされる文字をまとめた規格があるので、それを利用します。
フォントファイル内の文字のうち実用的なものだけに絞ってフォントアセットのサイズを抑える目的でも利用できます。
JIS漢字コード
日本には、古くからJIS漢字コードと呼ばれる規格があります。
ですが規格が古い(ネットどころかデジタル出版以前)こともあり、よく使われる文字が抜けていたりと実用には少し難があります。
Adobeの文字コレクション
Adobeの定めた規格です。実際のフォント業界ではこちらを基本としていることが多いようです。
詳細な仕様や規約などは、GitHubにも公開されています。
ただし、規格としての詳細なドキュメントやデータファイルはあるのですが、単純な文字一覧などはありません。
なので、TextMeshProで使える形にコンバートしたファイルを以下にまとめました。
オリジナルはグリフ(字体、文字の見た目)の規格なので、文字一覧にしたものとは数が違っています。
また、多言語対応するときのために日本語以外の文字セットについてもまとめました。
以下では、日中台韓の規格を一覧表にました。
Adobe-Japan1
日本語用の規格です。
公式GitHub:https://github.com/adobe-type-tools/Adobe-Japan1/blob/master/README-JP.md
コレクション名 | 追加文字数 | 追加文字ファイル | 累計文字数 | 累計文字ファイル | フォントの記号 | 補足 |
---|---|---|---|---|---|---|
Adobe-Japan1-0 | 7849 | Adobe-Japan1-0_add.txt | 7849 | Adobe-Japan1-0.txt | JIS第1水準・第2水準漢字が含まれる | |
Adobe-Japan1-1 | 30 | Adobe-Japan1-1_add.txt | 7879 | Adobe-Japan1-1.txt | ||
Adobe-Japan1-2 | 348 | Adobe-Japan1-2_add.txt | 8227 | Adobe-Japan1-2.txt | ||
Adobe-Japan1-3 | 0 | Adobe-Japan1-3_add.txt | 8227 | Adobe-Japan1-3.txt | Std/StdN | 標準的な日本語の文字が含まれる |
Adobe-Japan1-4 | 1951 | Adobe-Japan1-4_add.txt | 10178 | Adobe-Japan1-4.txt | Pro/ProN | 商用印刷を想定。JISの第三、第四水準の実用的な文字が含まれる。 |
Adobe-Japan1-5 | 3660 | Adobe-Japan1-5_add.txt | 13838 | Adobe-Japan1-5.txt | Pr5/Pr5N | JISの第三、第四水準の使用頻度が低い文字も含まれる。 |
Adobe-Japan1-6 | 2053 | Adobe-Japan1-6_add.txt | 15891 | Adobe-Japan1-6.txt | Pr6/Pr6N | JIS補助漢字などさらに使用頻度の低い文字を含む。 |
Adobe-Japan1-7 | 1 | Adobe-Japan1-7_add.txt | 15892 | Adobe-Japan1-7.txt | ㋿の合字1字追加のみ |
Adobe-GB1
簡体字の規格です。簡体字は中国本土などで使用されています。
公式GitHub:https://github.com/adobe-type-tools/Adobe-GB1
コレクション名 | 追加文字数 | 追加文字ファイル | 累計文字数 | 累計文字ファイル |
---|---|---|---|---|
Adobe-GB1-0 | 7783 | Adobe-GB1-0_add.txt | 7783 | Adobe-GB1-0.txt |
Adobe-GB1-1 | 2201 | Adobe-GB1-1_add.txt | 9984 | Adobe-GB1-1.txt |
Adobe-GB1-2 | 12339 | Adobe-GB1-2_add.txt | 22323 | Adobe-GB1-2.txt |
Adobe-GB1-3 | 0 | Adobe-GB1-3_add.txt | 22323 | Adobe-GB1-3.txt |
Adobe-GB1-4 | 6675 | Adobe-GB1-4_add.txt | 28998 | Adobe-GB1-4.txt |
Adobe-GB1-5 | 1220 | Adobe-GB1-5_add.txt | 30218 | Adobe-GB1-5.txt |
Adobe-GB1-6 | 288 | Adobe-GB1-6_add.txt | 30506 | Adobe-GB1-6.txt |
Adobe-CNS1
繁体字の規格です。繁体字は台湾、香港などで使用されています。
公式GitHub:https://github.com/adobe-type-tools/Adobe-CNS1
コレクション名 | 追加文字数 | 追加文字ファイル | 累計文字数 | 累計文字ファイル |
---|---|---|---|---|
Adobe-CNS1-0 | 14571 | Adobe-CNS1-0_add.txt | 14571 | Adobe-CNS1-0.txt |
Adobe-CNS1-1 | 6278 | Adobe-CNS1-1_add.txt | 20849 | Adobe-CNS1-1.txt |
Adobe-CNS1-2 | 0 | Adobe-CNS1-2_add.txt | 20849 | Adobe-CNS1-2.txt |
Adobe-CNS1-3 | 2479 | Adobe-CNS1-3_add.txt | 23328 | Adobe-CNS1-3.txt |
Adobe-CNS1-4 | 173 | Adobe-CNS1-4_add.txt | 23501 | Adobe-CNS1-4.txt |
Adobe-CNS1-5 | 123 | Adobe-CNS1-5_add.txt | 23624 | Adobe-CNS1-5.txt |
Adobe-CNS1-6 | 68 | Adobe-CNS1-6_add.txt | 23692 | Adobe-CNS1-6.txt |
Adobe-CNS1-7 | 23 | Adobe-CNS1-7_add.txt | 23715 | Adobe-CNS1-7.txt |
Adobe-KR
韓国語の規格です。
公式GitHub:https://github.com/adobe-type-tools/Adobe-KR
コレクション名 | 追加文字数 | 追加文字ファイル | 累計文字数 | 累計文字ファイル |
---|---|---|---|---|
Adobe-KR-0 | 3062 | Adobe-KR-0_add.txt | 3062 | Adobe-KR-0.txt |
Adobe-KR-1 | 1578 | Adobe-KR-1_add.txt | 4640 | Adobe-KR-1.txt |
Adobe-KR-2 | 6814 | Adobe-KR-2_add.txt | 11454 | Adobe-KR-2.txt |
Adobe-KR-3 | 280 | Adobe-KR-3_add.txt | 11734 | Adobe-KR-3.txt |
Adobe-KR-4 | 137 | Adobe-KR-4_add.txt | 11871 | Adobe-KR-4.txt |
Adobe-KR-5 | 357 | Adobe-KR-5_add.txt | 12228 | Adobe-KR-5.txt |
Adobe-KR-6 | 360 | Adobe-KR-6_add.txt | 12588 | Adobe-KR-6.txt |
Adobe-KR-7 | 5043 | Adobe-KR-7_add.txt | 17631 | Adobe-KR-7.txt |
Adobe-KR-8 | 3627 | Adobe-KR-8_add.txt | 21258 | Adobe-KR-8.txt |
Adobe-KR-9 | 392 | Adobe-KR-9_add.txt | 21650 | Adobe-KR-9.txt |