TextMeshProのフォントアセットのリファレンス


投稿日:2024年1月10日 | 最終更新日:2024年3月31日

概要

Face Info(Line Metrix)

行の高さや取り消し線の位置などが収録されています。
詳細はLine Metricsを参照。

Generation Settings


フォントアセットの生成時の設定です。
通常のStaticフォントアセットの場合はFontAssetCreatorで設定した値が設定されていて編集できません。
Dynamicフォントアセットを使う場合は、手動で設定が必要です。詳細はDynamicフォントアセットの作成を参照してください。

Atlas & Material

サブアセットが自動設定されています。
フォントをSDF画像として描きこんだアトラス画像と、デフォルトのフォントマテリアルが設定されています。
手動設定はできず、確認用のものです。

Font Weights

フォントアセットをウェイト(太さ)ごとに用意するための設定です。
100 (細) ~ 900 (極太) の範囲のウェイトに対して標準フォントと斜体フォントを設定可能です。
設定していない場合は、「Bold Weight」「Italic Style」プロパティをもとに「疑似的な」太字と斜体を使用することになります。

太字や斜体の設定は、コンポーネントのFont Styleで「B(太字)」や「I(斜体)」を使用したときや、リッチテキストタグの、<b><i>を使用したときに反映されます。

テキストにフォントのウェイトを適用するには、<font-weight>を使用します。

サンプル

 

それぞれのWeightのフォントファイルから作ったフォントアセットを作成し、「Font Wights」に設定します。
Weightごとにフォントアセットが必要になるので、日本語フォントなど1つのフォントアセットのデータサイズが大きいものには不向きです。
その場合は、メモリ消費などの負荷が非常に激しくなることが予想されるので注意してください。

Fallback Font Assets


フォールバックの設定です。
詳細はフォールバックを参照。

Character Table


収録文字のデータテーブルです。
文字コードに対して、どのグリフを使うかという対応データになります。
実際の文字の見た目は、グリフデータのほうで定義されています。
同じ見た目の文字があった場合、文字コードは違っても対応するグリフIDは同じということがありうるので、Glyph Tableよりも要素数は多くなることがあります。

基本的にはフォントアセット作成時に自動で作成されますが、手動で編集することも可能です。

Glyph Table

収録グリフのデータテーブルです。
文字画像情報が収録されています。
Glyph Rectは、グリフがアトラス画像内のどの部分にあるかという矩形情報です。
Glyph Metricsは、グリフを文字として描画する場合に使用する補足情報です。
(W,H,BX,BY)はベースラインを原点とする、文字画像の表示矩形の情報です。矩形は左上基点の2D座標系となります。
ADはadvanceの略で、ベースラインをどれくらい進ませるかのオフセット値で、文字画像から右側の余白情報に相当します。
文字画像は余白となる部分を省いて画像がなるべく小さくなるようにしているため、実際に表示する場合どの位置にどのくらいの余白をとって表示するかという情報が必要なため、このような形式なっています。

基本的にはフォントアセット作成時に自動で作成されますが、手動で編集することも可能です。
たとえば、プロポーショナルフォントの左右の余白の値を手動で変更したい場合などは、BXとADの値を調整することになります。
縦位置を動かしたい場合は、BYを調整することになります。

Glyph Adjustment Table

特定の文字のペアの場合のみに、グリフの配置情報に補正をかけるためのデータ設定です。
基本的にはペアカーニング、つまり特定の文字ペアの間隔を制御するためのものです。
ほかにも、Unity6以降は合字、ダイアクリティカルマークなどにも使用できるようです。
参考(英語):https://forum.unity.com/threads/3-2-0-pre-4-release-now-available.1376289/#post-8788894

一部のフォントファイルではフォントアセット作成時にペアカーニング情報を読み取り、自動的にインポートされます。
(Unityがカーニング情報を読み取れるフォントファイルは、実際には数が少ないようです)
インポートできない場合でも、手動で追加設定できます。

また、コンポーネントのExtraSettingsの「Kerning」がオンになっていないと、このデータは描画に反映されないので注意してください。

ペアカーニングの手動追加のサンプル

たとえば、AVという文字ペアについてのペアカーニング情報を追加する場合、
左側の「Char」にA、右側の「Char」にVを入力し、「Add New Adjustment Record」を押すと、データが追加されます。

追加したデータはいつでも編集可能です。
OX、OYは文字の位置情報のオフセットで、AXはベースラインのAdvanceのオフセットです。

左右の文字の間を詰めるのであれば、左のAXを調整することになります。

ペアは左右が決まっているので、左右を入れ替えた場合も適用したい場合は、
AVのほかに、VAのデータを追加する必要があります。

サンプル画像


ペアカーニングを適用していない


AVにペアカーニングを適用


AVVAにペアカーニングを適用

Options

Optionsは、さらに特殊な文字ペアのルールを設定するオプションです。
「Ignore Ligatures」はラテン文字などで使用する合字のためのものと思われます。
「Ignore Ignore Spacing Adjustmens」は、コンポーネントのSpacingの「Character」などで設定した、文字間隔の設定を無視するためのオプションです。

たとえば、日本語では(中点、中黒)同士の間には、文字間を開けたくないというケースがよくあります。
この場合は、左右ともにのペアカーニングデータを作り、文字間を調整したうえで
Optionsで「Ignore Spacing Adjustmens」を設定すると、コンポーネント等の文字間の設定によらず、同士の間隔を一定に維持できるようになります。


調整前


調整後

注)
ちなみにこの例は、実際にはを使わずに、(三点リーダー)を使用するケースのほうが多く、それで解決します。
ただし、
●校正ルールなどで、を使用することが前提になっている。
●フォントによってはは下側に表示されるため、中央に表示したいときにそぐわない。(とはいえ、これはGlyph Tableで調整可能)
●二点リーダーをはじめ、点の数を柔軟に変えたいことがある。
の方が入力が容易
などの事情で、を三つで三点リーダーを表現したいというケースもあるので、そういったときは上記のような設定が必要になります。

また、を使う場合でも、同じように同士で文字間隔を無視するルールを設定することで、二つつなげる場合は文字間を無視する「二倍リーダー」というルールを適用することができます、