TmpCharsetMaker(TextMeshProの日本語フォント用・ゲームで使う文字だけ集めて□を防ぐ・Unityエディター拡張) | 使う字だけで日本語フォントを軽く作る(買い切り)
- Digital1,000 JPY





TextMeshPro で日本語を表示するゲームを作っていて、Font Asset に入れる文字を毎回手で選ぶのが大変な方向けのUnityエディター拡張です。プロジェクト内のシーン・プレハブ・テキストファイル・ScriptableObject から実際に使われている文字を集め、基本セット(英数・かな・任意で常用漢字)と合わせて、Font Asset Creator の「Custom Characters」にそのまま貼れる文字列を作ります。既存の Font Asset に対して「足りない字」を一覧し、その字がどこで使われているかも表示します。漢字を全部入れずに済むので、セリフに出てくる珍しい字の入れ忘れ(□・豆腐)に気づきやすくなります。送り幅(advance)が0のグリフの修復機能もあります。サンプル付きです。 【購入前にお読みください】体験版はありません。購入前の確認は、販売画像と説明文でお願いします。動作確認は Windows / Unity 6(6000.5)のみです。Unity 2022.3 LTS でのコンパイル・動作は未検証です。Unity Localization パッケージ入りのプロジェクト、実際の大きなプロジェクトでの動作確認も行っていません。ウィンドウのボタン操作・ダイアログは、制作側では自動テストでの確認までで、手で触っての確認はしていません。画像は、すべて説明用の描画です(数値は制作側の自動テストの結果で、エディター画面そのもののスクリーンショットではありません)。 買い切り1,000円・追加費用なしです。本製品は SaiRollStudio が制作した非公式ツールであり、Unity Technologies の公式製品ではありません。 【特長】 ・文字を集める:次の対象から使用文字を集めます。(1)シーン・プレハブ内の TMP_Text(TextMeshPro)・TMP_Dropdown の選択肢・UI の Text / Dropdown (2)指定フォルダの .txt / .csv / .tsv / .json / .md (3)ScriptableObject(.asset)の string・string[]・List<string> (4)Unity Localization の String Table(.asset をそのまま読みます。パッケージが無いプロジェクトでもコンパイルできます)。除外するフォルダ・ファイルも指定できます ・フォントで絞り込み:「この TMP Font Asset を使っているテキストだけ」に絞れます(シーン・プレハブの TMP テキストだけに効きます。下の注意を参照) ・基本セット(選んで足せます):ASCII 印字可能(95字)・全角英数記号(102字)・ひらがな(86字)・カタカナ(90字)・半角カタカナ(63字)・常用漢字(2140字。2136字種に、通用字体の 填・剥・頬・𠮟 を加えたもの)・JIS第1水準漢字(2965字)。初期値は常用漢字・JIS漢字を含みません ・出力:合計字数と追加された字数を表示。コードポイント順・重複なし。クリップボードへコピー / UTF-8(BOMなし)の .txt 保存 / Unicode 16進(カンマ区切り)。改行などの制御文字は含めません。U+10000 以上の文字(絵文字など)は1文字として数え、壊さずに出力します。TextMeshPro で表示できない場合があるため、警告も出します ・不足チェック:TMP Font Asset を指定すると、集めた文字のうち Font Asset に無い字を一覧し、使われているファイル・オブジェクトも表示します。元フォント(TTF/OTF)にグリフが無い字は「元フォントに無い」と区別します(フォントを変えない限り入れられない字です)。フォールバックに登録した Font Asset の字は「ある」扱いです ・送り幅の修復:字面はあるのに送り幅が0のグリフを一覧し、字面の幅 + 左右の余白から送り幅を決めて修復します。空白・制御文字・ゼロ幅の書式文字・結合文字は対象外です。修復前に Assets/TmpCharsetMakerBackups/ へバックアップ(.asset のコピー)を作り、Ctrl+Z でメモリ上の値を戻せます ・Editor 専用(ビルドには入りません)。外部ライブラリの同梱なし。ウィンドウ右上で 日本語 / English を切り替えられます ・サンプル付き:自作の短い日本語テキスト(CSV・JSON・ScriptableObject)、TMP のテキストと Dropdown を置いたシーン、不足チェック試用専用の一部の字だけを持つ Font Asset 【使い方】 1. メニュー Tools > TmpCharsetMaker > 文字セット を開く 2. 「集める」タブで走査する対象とフォルダを選び、基本セットを選んで「集める」 3. 「出力」タブの文字列をコピー(または .txt 保存)して、Font Asset Creator の Custom Characters に貼り、Font Asset を作る 4. 「不足チェック」タブで作った Font Asset を指定し、足りない字・元フォントに無い字を確認する 5. 文字が重なる場合は「送り幅の修復」タブで調べて修復する 【確認した結果(Unity 6・制作側の自動テスト)】 ・自動テスト11件がすべて合格、コンパイルエラー0・配布物由来の警告0。新しい空のプロジェクト(ugui のみ・Localization なし)へ導入してコンパイルエラー0・警告0、メニューとウィンドウの型があることも確認 ・同梱サンプルの処理時間(129字を集める小さなデータ):走査 6ms・出力 8ms・不足チェック 2ms。10MB の CSV の走査は約0.4秒(重複を除いて2168字) ・サンプルの走査結果と基本セット・常用漢字を合わせた出力は2643字(プロジェクトで追加された字は5字)。同梱の Font Asset に対する不足は61字 ・送り幅の修復:送り幅0かつ字面ありのグリフだけが検出され、修復後に送り幅が0より大きくなる、バックアップが修復前の中身で作られる、Undo で戻ることを小さな自作の Font Asset で確認 上はすべて同梱サンプルと自作の小さなデータでの値です。実際のプロジェクトや、実在の日本語フォント(大きな Font Asset)での確認は、制作側では行っていません。 【導入】 同梱の unitypackage をプロジェクトにインポートします。Assets/TmpCharsetMaker/ に入ります(Editor・Samples・README_ja.txt)。TextMeshPro が必要です(Unity 2022.3 では com.unity.textmeshpro、Unity 6 では uGUI に統合されたもの)。サンプルシーンとサンプルの Font Asset は TMP 付属のリソース(Window > TextMeshPro > Import TMP Essential Resources)を参照します。未導入でも本体は動きます。 【制限・注意(必ずお読みください)】 ・TextMeshPro(uGUI)が必須です。動作確認は Unity 6 のみで、Unity 2022.3 は未確認です ・動的 Font Asset では、補助面の文字(U+10000 以上。𠮟・𠮷・絵文字など)を TextMeshPro が追加できない場合があります。このような文字は、静的 Font Asset(Font Asset Creator で作成)で入れてください ・Font Asset は自動生成しません。このツールが作るのは Custom Characters 用の文字列です。Font Asset の生成は、TextMeshPro の Font Asset Creator で行ってください ・フォントファイルは同梱しません。日本語フォントはご自身でご用意ください(フォントのライセンスはご自身でご確認ください) ・テキストファイルと ScriptableObject は、どのフォントで表示されるか分からないため、「このFontAssetのテキストだけ」の絞り込みが効きません。必要なければこの絞り込みのチェックを外してください ・集められないもの:コード内に直接書かれた文字列、実行時に組み立てる文字列、アセットバンドル内のテキスト ・テキストの読み取りは UTF-8 前提です。Shift_JIS などのファイルは文字化けの代替文字として警告します。JSON はファイル全体の文字を集めるため、キー名の文字も含まれます ・開いていないシーンは一時的に読み込んで閉じます。読み込み済みのシーンは、未保存の変更を含むメモリ上の内容を読み取ります。壊れたシーンファイルは、警告なしに空のシーンとして扱われます。大きなシーンでは時間がかかることがあります ・不足チェックで「元フォントに無い」を判定するには、元フォントが読める必要があります(参照切れ・OS フォントなどでは判定せず、画面に表示します) ・送り幅の修復は Font Asset 全体を書き直します。大きな Font Asset では時間がかかり、バックアップも同じ大きさになります。不要になったバックアップは手で削除してください。作業前にプロジェクトのバックアップをおすすめします ・常用漢字(2140字)と JIS第1水準漢字(2965字)の字の並びは、作者が書き起こした/規格上の区点から変換したものです。第三者の文字表ファイルはコピーしていません。出典と限界は README に記載しています ・できないこと:Font Asset の自動生成、フォントの配布、ランタイムでの動的なフォント切り替え、スプレッドシート連携 【ライセンス】 購入者は、自分の作品(ゲーム・ワールド等)の制作に自由にお使いいただけます(商用利用も可)。本アセット(ツール本体・ソースコード・サンプル)の再配布・転売・譲渡は禁止です。詳細は同梱の LICENSE.txt を参照してください。Unity は Unity Technologies の商標または登録商標です。 【姉妹品】 メッシュの形をBoxColliderの組み合わせで近似する LiteColliderMaker(メッシュからBoxColliderを自動生成・Unityエディター拡張)も販売しています。 https://sairollstudio.booth.pm/items/9057301





