Version: 2023.1
言語: 日本語
フォントアセット
フォントアセットプロパティのリファレンス

フォントアセット入門

Font (フォント) アセットはフォントのコンテナとして機能します。フォントアセットを使って、フォントをプロジェクトにインポートしたり、1 つのファイルからフォントのバリエーションを作成したりすることができます。元のフォントを変更することはありません。フォントアセットを作成するもう 1 つの理由は、中国語のような膨大な文字セットを持つ言語を扱うためです。文字のフルセットではなく、必要な文字だけを加えることができます。

TrueType (.ttf)、OpenType (.otf)、または TrueType Collection(.ttc) フォントをフォントアセットに変換できます。フォントアセットには、すべてのキャラクタを含むフォントアトラステクスチャファイルが含まれます。フォントアセットを作成するときに選択できるアトラスポピュレートモードと レンダーモードがいくつかあります。

アトラスの Population モード

TextCore は、StaticDynamicDynamic OS のアトラスポピュレーションモードに対応しています。

静的フォントアセット

静的フォントアセットは、変換時に文字をアトラス テクスチャに事前ベイクします。静的フォントアセットは、ラベルやセクションタイトルなど、プロジェクト内で既知のテキストを加えるために使用します。静的フォントアセットを作成するとき、デフォルトではフォントアトラスは空です。手動でフォントアトラスを生成し、プロジェクトに必要なすべての文字を加える必要があります。プロジェクトビルドでは、フォントソースファイルを加える必要はありません。そのため、高速で効率的です。

静的フォントアセットの作成 を参照してください。

ダイナミックフォントアセット

ダイナミックフォントアセットは空のアトラステクスチャから始まります。ダイナミックフォントアセットは、ソースフォントファイル内の文字を探し、UI で使用するときに動的に文字を追加します。プロジェクト内の未知のテキスト (テキスト入力フィールドなど) には、ダイナミックフォントアセットを使用します。ダイナミックフォントアセットは柔軟ですが、プロジェクトのビルド時にすべてのソースフォントファイルを加える必要があるため、パフォーマンス上の余分のオーバーヘッドが発生します。

ダイナミックフォントアセットの作成 を参照してください。

ダイナミック OS フォントアセット

ダイナミック OS フォントアセットは、ソースフォントファイルの代わりにオペレーティングシステム (OS) 上のフォントファイルを参照するダイナミックフォントアセットです。ダイナミックフォントアセットと比較して、ダイナミック OS フォントアセットはメモリオーバーヘッドが少なく抑えられます。プロジェクトのビルドでは、フォントのソースファイルを含む必要はありません。対象プラットフォームの OS 上にフォントがあることを確認してください。ダイナミック OS フォントアセットは、フォールバックフォントアセットとして最適です。

ダイナミック OS フォントアセットを作成するには、OS からフォントをプロジェクトにインポートし、それを使ってダイナミックフォントアセットを作成し、Atlas Population ModeDynamic OS に変更します。

アトラスレンダーモード

TextCore は、ビットマップと符号付き距離フィールド (SDF) のアトラスレンダーモードに対応しています。

ビットマップフォント

ビットマップレンダリングは、フォントの各ピクセルがシーンや GUI のピクセルと完全に揃うフォントアセットを生成します。ピクセルアートには、以下のレンダーモードを使用してください。

  • SMOOTH または SMOOTH_HINTED を使用すると、テキストをアンチエイリアス処理されたビットマップにレンダリングできます。SMOOTH_HINTED は、文字ピクセルをテクスチャピクセルに揃え、より鮮明な画像を実現します。
  • RASTER または SMOOTH_HINTED を使用すると、テキストをアンチエイリアスなしのビットマップにレンダリングできます。RASTER_HINTE は文字ピクセルをテクスチャピクセルに揃え、より鮮明な画像にします。

SDF フォント

SDF レンダリングは、変形したり拡大したりしても鮮明に見えるフォントアセットを生成します。SDF レンダリングはアウトラインやドロップシャドウなどの効果をサポートします。

ビットマップフォントテクスチャとは異なり、SDF フォントアセットは輪郭距離情報を含んでいます。フォントアトラスでは、この情報はグレースケールのグラデーションのように見え、各グリフの中央からその端を過ぎた点まで続いています。グラデーションの中点はグリフのエッジに対応します。

下の画像は、ビットマップフォントと SDF フォントアセットと、それらが生成するレンダリングテキストです。ビットマップフォントは、テキストがカメラからどのくらい離れているか、どのように変形され歪んでいるかによって、エッジが多かれ少なかれギザギザでぼやけたテキストを生成します。SDF フォントは、カメラからの距離に関係なく、滑らかなエッジを持つテキストを生成します。

ビットマップフォント、アトラステクスチャ、レンダリング結果
ビットマップフォント、アトラステクスチャ、レンダリング結果
滑らかになったビットマップ、アトラステクスチャ、レンダリング結果
滑らかになったビットマップ、アトラステクスチャ、レンダリング結果
SDF フォント、アトラステクスチャ、レンダリング結果
SDF フォント、アトラステクスチャ、レンダリング結果

SDF フォントには以下のレンダリングモードを使用します。

  • SDFAA: このモードを使用すると、ほとんどの使用ケースでフォントアトラスを生成できます。画面上で 90 ポイントを超えるタイトルなどの大きなテキストを大きなアウトラインでレンダリングする場合は除きます。SDFAA は、Dynamic または Dynamic OS フォントアセットのデフォルトモードです。SDFAA はより高速ですが、精度の低い SDF 生成モードです。
  • SDFAA_HINTED: このモードを使用すると、キャラクタのピクセルとテクスチャのピクセ ルが揃い、より鮮明な結果が得られます。
  • SDF32: 静的フォントアセットのデフォルトモード。複雑な文字や小さな文字のフォントにはこのモードを使用します。32 倍のオーバーサンプリングを使う、遅く正確な SDF 生成モードです。
  • SDF16: このモードは、静的フォントアセットや、72 ポイントサイズ以上のタイトルなど、主に大きなテキストに使用します。16 倍のオーバーサンプリングを使う、遅く正確な SDF 生成モードです。
  • SDF8: 8 倍のオーバーサンプリングを使う、遅く正確な SDF 生成にはこのモードを使用します。
  • SDF: オーバーサンプリングを使わない、遅く正確な SDF 生成にはこのモードを使用します。

フォントアセットバリアント

フォントアセットのメトリクスにのみ変更を加えたい場合は、新しいフォントアセットを作成する代わりに、別のフォントアセットに基づくフォントアセットバリアントを作成します。フォントアセットバリアントは、テクスチャに余分なスペースを使うことなく、元のフォントアセットと区別するようスタイルを設定することができます。バリアントは独自の Face Info、Character、Glyph、Adjustment Pair データ を保存しますが、元のアトラスも参照します。

フォントアセットバリアントを作成するには、フォントアセットを右クリックして、Create > Text> Font Asset Variant を選択します。

パディング

フォントテクスチャ内の文字は、別々にレンダリングできるように、それらの間にパディングが必要です。このパディングはピクセル単位で指定します。パディングは、SDF グラデーションのためのスペースも作ります。パディングが大きいほど切り替えがスムーズになり、レンダリング品質の向上や太いアウトラインのような大きな効果が可能になります。512x512 のテクスチャには 5 のパディングを使用します。経験則では、サンプリングとパディングの比率は 1:10 です。

大きなテクスチャのためにマルチアトラステクスチャを有効にする

ほとんどのフォントでは、すべての ASCII 文字を加える場合、512x512 のテクスチャ解像度を使用します。何千もの文字をサポートするには、大きなテクスチャを使用し、フォントアセットの Inspector ウィンドウで Multi Atlas Textures を有効にします。これにより、メインテクスチャがいっぱいになると、同じサイズの新しいテクスチャが自動的に作成されます。

また、モバイルデバイス向けにデザインするときに、最大テクスチャサイズを使うことによってグリフセット全体が十分な品質の 1 つのアトラスに収まらない場合は、Multi Atlas Textures を有効にすることもできます。

フォントアセットを使用する

フォントアセットを使用するには、UI Builder で、Inspector ウィンドウの Font Asset からフォントを選択します。

ノート: Font フィールドは後方互換性のためのものです。古いプロジェクトで Font リストのフォントを使用したい場合は、Font Asset から None を選択する必要があります。そうしないと、Font から選択したフォントが有効になりません。

USS のテキスト要素にフォントアセットを適用するには、以下の構文を使います。

\\-unity-font-definition: <resource>|<url></url></resource>

例:

Label {
-unity-font-definition: url("/Assets/UI Toolkit/Resources/Fonts & Materials/LiberationSans SDF.asset");
}

詳しくは USS テキストプロパティ を参照してください。

ベストプラクティス

フォントアセットを作成する際は、以下の点を考慮してください。

  • ユーザー入力テキスト: Dynamic または Dynamic OS population モードを使用し、高速生成には SDFAA モードを使用します。ローカライゼーション用にフォールバックを加える必要があるかもしれません。
  • 一般的なラベル: Static population モードと SDF16 モードを使用し、サンプリングのポイントサイズを小さくします。
  • タイトル: Static population モードと SDF32 モードを使用し、サンプリングのポイントサイズを大きくします。
  • ピクセルアート: ビットマップフォントレンダーモードのいずれかを使用します。
  • パディング: サンプリングとパディングの比率を 1:10 にします。
  • 大きなテクスチャ用に Multi Atlas Textures を有効にします。

その他の参考資料

フォントアセット
フォントアセットプロパティのリファレンス