Amazonで商品を見るセール会場へ

Unity uGUIのフォント設定|旧Text・TextMeshPro・アイコンの使い分け

uGUIのフォント設定は、旧TextかTextMeshProUGUIかによって使うアセットが違います。新しい文字表示と、ShoeBoxやunitettcを使う旧作例を分け、文字が出ないときの確認順を整理しました。

2026年10月3日にuGUI 2.0、TextMeshPro 4.0、Unity 6.3のTextCore資料を確認しました。これらは参照資料の版で、このPCにインストールされた版ではありません。掲載画像は旧記事の資料で正確な撮影版は未確認です。Unity・ShoeBox・unitettcでの今回の操作は未実施です。

目次

最初に文字コンポーネントを確認する

目的・症状設定・確認先
UnityEngine.UI.Textを使う旧UIFontとMaterialを割り当てる。このページのTextUnicode例はこちら用
TextMeshProUGUIを使うUITMP Font Assetと必要なMaterial Preset・fallback等を確認
装飾を画像として固定したい画像素材・文字範囲・拡大率に合う方式を選ぶ。ShoeBoxの旧例は後述

旧TextのFontをTMP Font Asset欄へそのまま設定することはできません。TMPではプロジェクトの導入状況を確認し、フォントからFont Assetを作成して割り当てます。Dynamic/Static、必要な文字の範囲、アトラスサイズ、fallbackの選定は表示する言語と端末から決めてください。TextMeshPro Font Assetの公式資料

1. リッチテキストで色とサイズを変える

旧TextではRich Textを有効にして、対応タグを本文に記述します。次のGIFは旧作例で、数字5に色を指定し、Gの文字サイズを変えた例です。TextMeshProにもタグ機能がありますが、旧Textと対応タグを同一と考えずパッケージの資料を確認してください。

リッチテキストの例
<color=#FDBA2A>5<size=72>G</size></color>
  • 色:<color=#FDBA2A>文字</color>
  • サイズ:<size=72>文字</size>
  • 太字:<b>文字</b>、イタリック:<i>文字</i>

タグがそのまま表示される場合はRich Text設定と、開始/終了タグの対応を確認します。外部から受け取った文字列をそのまま装飾用タグとして解釈しないよう、入力の扱いも決めます。旧TextのRich Text資料

2. ShoeBoxのビットマップフォント【旧手順】

ShoeBoxは画像を文字ごとの座標データとテクスチャへ変換するツールです。開発者の配布ページには3.6.5とAdobe AIR依存が掲載されています。Unity 6での動作を確認した結果ではないため、既存プロジェクトを保守する資料として扱います。

  1. 使用許可のあるフォントで、必要な文字をPNGへ描く。数字だけの素材で日本語全体を表示できるとは限らない。
  2. ShoeBoxのBitmap Fontへ画像を入れ、Txt Charsの文字順と切り分け結果を照合する。
  3. 出力形式を、Unity側で使うインポーターが読む形式へ合わせる。旧作例のFNT-xml Starlingはその組合せの例で、すべてのUnityインポーター共通の指定ではない。
  4. XML等の座標データとPNGを保存し、文字ID・PNGのファイル名・参照先を確認する。
Photoshopで作成した数字
ShoeBoxの設定画面

開発者のBitmap Font資料では複数のテンプレートと文字範囲の指定を説明しています。旧記事の「Staling」は「Starling」の誤記を修正しました。

旧Unityインポーターと表示確認

既存作例はShoeBox Tools for Unityを使い、Assets → ShoeBox Tools → Import Bitmap FontからXMLを読み込み、旧Textへ生成Fontと対応Materialを設定したものです。Asset Storeの元商品ページを確認すると、ShoeBox Tools for Unityはdeprecatedとなり、新規購入・提供元のサポートが終了しています。既存の所有者はMy Assetsから参照できるという案内です。Unity 6互換性は未確認のため、手元の配布物の版と内容を確認し、プロジェクトの控えで試してください。

Asset Storeの終了案内

Import Bitmap Fontsメニュー
ビットマップフォントの確認

TMP Font Assetの作成はこのXMLインポート手順とは別です。装飾数字を画像として並べる方式も含め、文字範囲、拡大率、文字間隔、Materialの描画方式が要件に合うかを比較します。

3. TTCは使用する文字システムと版で判断する

「UnityはTTCを扱えないので、必ずTTFへ分割する」という説明は現行Unity全体には当てはまりません。Unity 6.3のTextCore FontEngineはTTF・TTC・OTFをサポートし、UI ToolkitのFont Asset資料もTTCを変換元として挙げています。旧Text、TMP、UI Toolkitの手順を混同せず、対象コンポーネントと実際のフォントで確認します。FontEngine/Unity 6.3 Font Asset資料

  • TTF:TrueTypeのフォントファイル。
  • OTF:OpenTypeのフォントファイル。拡張子だけでアウトライン方式や全環境の対応を決めない。
  • TTC:複数のフォントを含むコレクション。必要なフェイスの選択と利用版の対応を確認する。

unitettcの分割・結合は旧資料として残す

旧作例はunitettc64.exeで分割し、逆に複数ファイルから結合する資料です。以下のYuGothBという名前は元作例で、新規の利用・変換・再配布を許可する説明ではありません。権利上使用できるフォントのコピーだけを対象とし、元ファイルを保持します。分割すれば必ず容量が減るとは限りません。配布元の説明では分割出力に001、002等の連番を付けます。配布ページとコマンドの書式は確認しましたが、実行ファイルの導入・変換結果は未確認です。

cd C:\Users\ユーザー名\Desktop\unitettc
unitettc64.exe YuGothB.ttc
フォント分割のコマンド
unitettc64.exe Test.ttc YuGothB001.ttf YuGothB002.ttf YuGothB003.ttf
フォント結合のコマンド

unitettc開発者の説明を確認し、新しい作業でunitettcを導入する前に、分割が必要かを使用版で確かめてください。変換後のフォントを自動的に公開サンプルへ同梱せず、埋め込み・改変・配布の条件を配布元のライセンスで確認します。

4. Font Awesomeのアイコンを文字として表示する

  1. 利用するFont Awesomeの版、Free/Pro、Solid/Regular/Brands等のスタイルを決め、同じ版の対応フォントを用意する。
  2. そのスタイルに目的のアイコンがあるか、配布資料のUnicodeを確認する。
  3. 旧Textなら対応Fontを割り当てる。TMPなら使用する文字を含むFont Assetを作成して割り当てる。
  4. 普通の英数字とアイコンを別々に表示し、フォント参照とグリフ収録の問題を切り分ける。

Font Awesome公式の配布構成とGlyphの資料を確認してください。最新版のデスクトップ書体の機能がそのままUnityの旧Textで動作するとは限りません。版・スタイル・Free/Proの範囲を混ぜず、同梱LICENSEも保持します。

Font Awesomeのチートシート

旧TextにUnicodeを設定するC#例

TextUnicode.csとして保存し、旧Textを残した同じGameObjectへ追加します。InspectorにはTextとTextUnicodeをそれぞれ設定する構成です。このコードはTextMeshProUGUI用ではありません。Unicode欄にはf023のような16進数だけを入力し、0xやU+は付けません。表示するアイコンがそのFontに含まれることも必要です。

using UnityEngine;
using UnityEngine.UI;

[ExecuteInEditMode]
[RequireComponent(typeof(Text))]
public class TextUnicode : MonoBehaviour
{
    public string unicode = "f023";
    private Text textComponent;

    void OnEnable() { UpdateText(); }
    void OnValidate() { UpdateText(); }

    void UpdateText()
    {
        if (textComponent == null)
            textComponent = GetComponent<Text>();
        if (textComponent == null) return;

        string character;
        textComponent.text = TryConvert(unicode, out character) ? character : "";
    }

    public static bool TryConvert(string value, out string character)
    {
        character = "";
        int code;
        if (!int.TryParse((value ?? "").Trim(),
            System.Globalization.NumberStyles.HexNumber,
            System.Globalization.CultureInfo.InvariantCulture, out code)
            || code < 0 || code > 0x10FFFF
            || (code >= 0xD800 && code <= 0xDFFF))
            return false;

        character = char.ConvertFromUtf32(code);
        return true;
    }
}

空欄、不正な16進数、Unicodeの上限を超える値、サロゲート範囲は文字を空にして停止します。字形がないことと、入力値が不正なことは別の原因です。ConvertFromUtf32の入力条件はMicrosoftのAPI資料に基づきます。入力変換部分のC#試験は作業記録に保存し、Unity上のコンポーネント実行と区別しています。

次のInspectorは旧画像です。掲載したMonoBehaviour版と表示構成が異なるため、現在のTextとTextUnicodeの2コンポーネント構成を確認する証拠には使いません。

Font AwesomeのUnicode表示

文字が出ないときの確認順

目的・症状設定・確認先
タグが文字として見えるRich Textと対応タグ、旧Text/TMPの種類を確認
日本語の一部だけ四角になるFont Assetの文字範囲、Dynamic/Static、fallback、アトラスを確認
アイコンだけ出ない版・スタイル・グリフ・Unicode・Font参照を確認
スクリプトから変更できないTextを残し、TextUnicodeと同じGameObjectか確認
旧ビットマップフォントが欠ける画像と文字IDの対応、PNG参照、Material、取り込んだフォント版を確認

文字のぼやけやCanvasの拡大縮小はuGUIの基本設定で切り分けます。今回、Font Asset生成、旧ツールのインポート、アイコン描画のUnity実行は未実施です。

関連するUnityの記事

uGUIでのUI制作は、ほかにも書いています。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Unityのおすすめ書籍

開発PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次