MGL::Render フォント関連各種定義
Contents
MGL::Renderフォント関連各種定義#
概要#
MGL::Renderで定義されている、フォント描画に関する処理が共通で使用する宣言・定義です。
型#
種類 |
名前 |
内容 |
バージョン |
---|---|---|---|
列挙型 |
フォントの書体を表すための型 |
1.1.5+ |
|
列挙型 |
フォントリソースが持つ機能を表すための型 |
1.1.5+ |
|
列挙型 |
フォントの原点を表すための型 |
1.1.5+ |
構造体#
種類 |
名前 |
内容 |
バージョン |
---|---|---|---|
構造体 |
グリフの情報を格納するための構造体 |
1.1.5+ |
|
構造体 |
フォント描画のためのワークデータ |
1.1.6+ |
関数・定数式#
種類 |
名前 |
内容 |
バージョン |
---|---|---|---|
定数式 |
文字列からフォントの書体を表す値を生成 |
1.1.5+ |
FontFaceType#
フォントの書体を表すための型
宣言#
namespace MGL::Render
{
enum class FontFaceType : uint32_t
{
Default = Hash::FNV1a("default"), //!< デフォルト
Bold = Hash::FNV1a("bold"), //!< ボールド体
Ruby = Hash::FNV1a("ruby"), //!< ルビ
};
}
説明#
フォントの書体を表すための型と定数値です。値の内容は書体名をMGL::Hash::FNV1aによってハッシュ化した値と同値です。
この値はMGL::Render::MakeFontFaceTypeによって文字列からも生成可能です。
バージョン情報#
MGL 1.1.5
初回リリース
関連#
FontFeature#
フォントリソースが持つ機能を表すための型
宣言#
namespace MGL::Render
{
enum class FontFeature : uint32_t
{
IndexedCharacter = 1u << 0u, //!< インデックス文字
GetGlyph = 1u << 1u, //!< グリフの取得
Tag = 1u << 2u, //!< タグ
Ruby = 1u << 3u, //!< ルビ
UnusedMask = 0xFFFFFFF0, //!< 未使用ビットフィールドのマスク値
};
}
説明#
フォントリソースが持つ機能を表すための型と定数値です。値の種類と内容は次の通りです。
- IndexedCharacter
インデックス文字に対応しているかを表す値です。
- GetGlyph
グリフ情報の取得に対応しているかを表す値です。
- Tag
タグによるテキスト装飾に対応しているかを表す値です。
- Ruby
ルビ(振り仮名)に対応しているかを表す値です。
- UnusedMask
未使用ビットフィールドを表すマスク値です。通常、アプリケーション側からこの値を使用する必要はありません。
各値はビットフラグによって定義されており、1つのFontFeature
型の変数で全ての機能の有無を表現可能です。ただし、通常はMGL::Render::Font::IsEnabledおよびMGL::Render::FontResource::SetEnabledを用いて取得・設定を行うため、この値の内容がビットフラグであることを意識する必要はありません。
バージョン情報#
MGL 1.1.5
初回リリース
MGL 1.1.13
UnusedMask
を追加
FontOrigin#
フォントの原点を表すための型
宣言#
namespace MGL::Render
{
enum class FontOrigin : uint8_t
{
TopLeft, //!< 左上
BaseLine, //!< ベースライン
};
}
説明#
フォントリソースが原点とする位置を表すための型と定数値です。
MGL::Render::Font::SetPositionで設定した座標の基準位置が文字の左上となる場合はTopLeft
で表現し、ベースラインを基準とする場合はBaseLine
で表現します。
バージョン情報#
MGL 1.1.5
初回リリース
MGL 1.1.13
型のサイズに
uint8_t
を指定
FontGlyph#
グリフの情報を格納するための構造体
宣言#
namespace MGL::Render
{
struct FontGlyph
{
char32_t code; //!< 文字コード(UTF-32)
Vector2 size; //!< サイズ(幅と高さ)
float advance; //!< 送り幅
Vector2 bearing; //!< ベアリング
TextureWithBounds texture; //!< 表示するテクスチャ
};
}
説明#
グリフの情報を格納するための構造体です。メンバ変数の内容は次の通りです。
- char32_t code
このグリフに対応した文字をUTF-32で表した値です。
- MGL::Vector2 size
この文字の幅と高さを表す値です。
x
には幅を、y
には高さを格納します。- float advance
この文字の送り幅です。この文字の表示位置に送り幅を適用した座標が次の文字の表示位置となります。
座標への適用方法は文字によって異なります。例として、左横書きの文字の場合、X座標にこの値を加算した位置が次の文字の表示位置となります。
- MGL::Vector2 bearing
このグリフを表示する際に適用するオフセット値です。
この値が表すオフセットは左下を原点とした座標系になります。スクリーン座標系で表示する場合、Y座標の向きが異なる点にご注意ください。
- MGL::Render::TextureWithBounds texture
このグリフが格納されているテクスチャとその座標を表す値です。
バージョン情報#
MGL 1.1.5
初回リリース
FontWorkdata#
フォント描画のためのワークデータ
宣言#
namespace MGL::Render
{
struct FontWorkdata
{
Vector2 position; //!< 表示位置
int32_t limitCount; //!< 表示上限数
};
}
説明#
フォントリソースの描画に使用する共通のパラメータです。この情報は描画実行後に更新され得るパラメータとなります。
この構造体は通常はアプリケーションから参照することはありません。フォントリソースを実装する際に、引数として渡されるこのワークデータの内容を適切に使用・更新する必要があります。
メンバ変数の内容は次の通りです。
- MGL::Vector2 position
描画位置を表す値です。通常は1文字目の描画の基準位置を表します。
フォントリソース実装時においては、描画実行後に次の文字の基準位置へと更新してください。
- int32_t limitCount
文字描画の上限数を表す値です。この値が負数の場合は上限なしとして扱われます。
フォントリソース実装時においては、この値が正数である場合にその数以上の文字数を描画しないように実装してください。また、上限数が表示文字数を上回っている場合は、渡された値から実際に表示した文字数を引いた値を設定してください。
バージョン情報#
MGL 1.1.6
初回リリース
MakeFontFaceType#
文字列からフォントの書体を表す値を生成
宣言#
namespace MGL::Render
{
constexpr FontFaceType MakeFontFaceType(const char *name) noexcept;
}
引数#
- const char *name
書体名
戻り値#
- MGL::Render::FontFaceType
フォントの書体を表す値
説明#
書体名の文字列から書体を表す値を生成して取得します。
この値はMGL::Hash::FNV1aで書体名をハッシュ化した値と同値です。
利用例#
auto faceType = MGL::Render::MakeFontFaceType("bold");
if (faceType == MGL::Render::FontFaceType::Bold)
{
// ここに必ず到達
}
バージョン情報#
MGL 1.1.5
初回リリース