フォントアセットはフォントのコンテナとして機能します。フォントアセットを使用すると、プロジェクトにフォントをインポートし、1 つのファイルからフォントのバリエーションを作成できます。元のフォントは変更できません。フォントアセットを作成するもう 1 つの理由は、中国語のような大規模な文字セットを持つ言語に対応することです。完全な文字セットではなく、必要な文字のみを加えることができます。
TrueType (.ttf)、OpenType (.otf)、または TrueType Collection(.ttc) フォントをフォントアセットに変換できます。フォントアセットには、すべての文字を含むアトラステクスチャファイルが含まれます。フォントアセットの作成時に選択できる Atlas Population Mode と Render Mode がいくつかあります。
TextCore でサポートされている Atlas Population Mode は、Static、Dynamic、Dynamic OS です。
Static フォントアセットは、変換中に文字をアトラステクスチャに事前ベイクします。Static フォントアセットを使用して、ラベルやセクションタイトルなど、プロジェクトの既知のテキストを加えることができます。Static フォントアセットを作成すると、フォントアトラスはデフォルトで空になります。フォントアトラスを手動で生成し、プロジェクトに必要なすべての文字を加える必要があります。プロジェクトビルドは、フォントソースファイルを加える必要がないため、迅速で効率的です。
Static フォントアセットの作成 方法についての説明を参照してください。
Dynamic フォントアセットは空のアトラステクスチャから始まります。Dynamic フォントアセットは、UI で使用される文字をソースフォントファイルで探して動的に追加します。テキスト入力フィールドなど、プロジェクトの不明テキストに Dynamic フォントアセットを使用します。Dynamic フォントアセットは柔軟ですが、プロジェクトのビルドにすべてのソースフォントファイルを加える必要があるため、パフォーマンスオーバーヘッドが増加します。
Dynamic フォントアセットの作成 方法についての説明を参照してください。
Dynamic OS フォントアセットは、ソースフォントファイルの代わりに、OS のフォントファイルを参照するダイナミックフォントアセットです。Dynamic OS フォントアセットのメモリオーバーヘッドは、Dynamic フォントアセットより少なくなります。プロジェクトビルドは、フォントソースファイルを加える必要はありません。フォントがターゲットプラットフォームの OS に存在することを確認します。Dynamic OS フォントアセットはフォールバックフォントアセットの有力な候補です。
Dynamic OS フォントアセットを作成するには、OS からプロジェクトにフォントをインポートし、それを使用してダイナミックフォントアセットを作成します。Atlas Population Mode を Dynamic OS に変更します。
TextCore はビットマップと符号付き距離フィールド (SDF) の Atlas Render Mode をサポートします。
ビットマップレンダリングは、フォントの各ピクセルをシーンと GUI ピクセルに完全に揃えるフォントアセットを生成します。ピクセルアートには以下のレンダリングモードを使用します。
SDF レンダリングは、変換または拡大しても見た目が鮮明なフォントアセットを生成します。SDF レンダリングは、アウトラインやドロップシャドウ などの効果をサポートします。
ビットマップフォントテクスチャとは異なり、SDF フォントアセットには輪郭距離情報が含まれます。フォントアトラスでこの情報は、各グリフの中央からエッジを過ぎた点まで続くグレースケールのグラデーションのように見えます。グラデーションの中間点はグリフのエッジに一致します。
以下の画像は、ビットマップフォントアセットと、SDF フォントアセットと、それらのアセットによってレンダリングされたテキストです。ビットマップフォントは、テキストとカメラの距離や、テキストがどのように変換されて歪んでいるかに応じて、エッジが多少ギザギザしたりぼやけたりしているテキストを生成します。SDF フォントは、カメラからの距離に関係なく、エッジが滑らかなテキストを生成します。
SDF フォントには以下の Render Mode を使用します。
新しいフォントアセットを作成せずに、フォントアセットのメトリクスのみを変更する場合は、別のフォントアセットに基づいてフォントアセットのバリアントを作成します。テクスチャスの追加スペースを使用せずに、元のフォントアセットとは異なるスタイリングをフォントアセットのバリアントに適用できます。バリアントは独自の 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>
例:
Label {
-unity-font-definition: url("/Assets/UI Toolkit/Resources/Fonts & Materials/LiberationSans SDF.asset");
}
詳細は、USS のテキストプロパティ を参照してください。
要約すると、フォントアセットの作成時には以下のことを考慮してください。
1:10 を使用します。