Font (フォント) アセットはフォントのコンテナとして機能します。フォントアセットを使って、フォントをプロジェクトにインポートしたり、1 つのファイルからフォントのバリエーションを作成したりすることができます。元のフォントを変更することはありません。フォントアセットを作成するもう 1 つの理由は、中国語のような膨大な文字セットを持つ言語を扱うためです。文字のフルセットではなく、必要な文字だけを加えることができます。
TrueType (.ttf
)、OpenType (.otf
)、または TrueType Collection(.ttc
) フォントをフォントアセットに変換できます。フォントアセットには、すべてのキャラクタを含むフォントアトラステクスチャファイルが含まれます。フォントアセットを作成するときに選択できるアトラスポピュレートモードと レンダーモードがいくつかあります。
TextCore は、Static、Dynamic、Dynamic OS のアトラスポピュレーションモードに対応しています。
静的フォントアセットは、変換時に文字をアトラス テクスチャに事前ベイクします。静的フォントアセットは、ラベルやセクションタイトルなど、プロジェクト内で既知のテキストを加えるために使用します。静的フォントアセットを作成するとき、デフォルトではフォントアトラスは空です。手動でフォントアトラスを生成し、プロジェクトに必要なすべての文字を加える必要があります。プロジェクトビルドでは、フォントソースファイルを加える必要はありません。そのため、高速で効率的です。
静的フォントアセットの作成 を参照してください。
ダイナミックフォントアセットは空のアトラステクスチャから始まります。ダイナミックフォントアセットは、ソースフォントファイル内の文字を探し、UI で使用するときに動的に文字を追加します。プロジェクト内の未知のテキスト (テキスト入力フィールドなど) には、ダイナミックフォントアセットを使用します。ダイナミックフォントアセットは柔軟ですが、プロジェクトのビルド時にすべてのソースフォントファイルを加える必要があるため、パフォーマンス上の余分のオーバーヘッドが発生します。
ダイナミックフォントアセットの作成 を参照してください。
ダイナミック OS フォントアセットは、ソースフォントファイルの代わりにオペレーティングシステム (OS) 上のフォントファイルを参照するダイナミックフォントアセットです。ダイナミックフォントアセットと比較して、ダイナミック OS フォントアセットはメモリオーバーヘッドが少なく抑えられます。プロジェクトのビルドでは、フォントのソースファイルを含む必要はありません。対象プラットフォームの OS 上にフォントがあることを確認してください。ダイナミック OS フォントアセットは、フォールバックフォントアセットとして最適です。
ダイナミック OS フォントアセットを作成するには、OS からフォントをプロジェクトにインポートし、それを使ってダイナミックフォントアセットを作成し、Atlas Population Mode を Dynamic OS に変更します。
TextCore は、ビットマップと符号付き距離フィールド (SDF) のアトラスレンダーモードに対応しています。
ビットマップレンダリングは、フォントの各ピクセルがシーンや GUI のピクセルと完全に揃うフォントアセットを生成します。ピクセルアートには、以下のレンダーモードを使用してください。
SDF レンダリングは、変形したり拡大したりしても鮮明に見えるフォントアセットを生成します。SDF レンダリングはアウトラインやドロップシャドウなどの効果をサポートします。
ビットマップフォントテクスチャとは異なり、SDF フォントアセットは輪郭距離情報を含んでいます。フォントアトラスでは、この情報はグレースケールのグラデーションのように見え、各グリフの中央からその端を過ぎた点まで続いています。グラデーションの中点はグリフのエッジに対応します。
下の画像は、ビットマップフォントと 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 テキストプロパティ を参照してください。
フォントアセットを作成する際は、以下の点を考慮してください。
1:10
にします。Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.