MGL::Render::IndexedFontResource
Contents
MGL::Render::IndexedFontResource#
概要#
MGL::Render::IndexedFontResourceはインデックス文字に対応したフォントリソースを簡潔に実装するための基底クラスです。
このクラスを継承したフォントリソースクラスは文字の描画処理を記述する必要はありません。文字に対応したグリフのインデックスを取得する処理と、そのインデックスからグリフ情報を得る処理の記述が主な実装内容となります。また、テキスト整形やタグの解析にも対応しています。
反面、このクラスが扱えるフォントリソースはビットマップフォントのみであり、頂点情報からなるスケーラブルなフォントリソースには対応していません。
より細かく描画処理を制御したい場合はMGL::Render::FontResourceを継承してフォントリソースを作成してください。
フォントリソースの実装方法の詳細についてはフォントリソースの作成(準備中)を参照してください。
宣言#
namespace MGL::Render
{
class IndexedFontResource : public FontResource;
}
メンバ情報#
種類 |
名前 |
内容 |
バージョン |
---|---|---|---|
関数 |
1.1.5+ |
||
純粋仮想関数 |
グリフのインデックスを取得 |
1.1.5+ |
|
純粋仮想関数 |
グリフを取得 |
1.1.5+ |
|
純粋仮想関数 |
指定した書体を保持しているかを取得 |
1.1.5+ |
|
純粋仮想関数 |
このフォントリソースの有効状態を取得 |
1.1.5+ |
|
純粋仮想関数 |
改行の送りサイズを取得 |
1.1.5+ |
|
仮想関数 |
ルビのオフセット値を取得 |
1.1.5+ |
コンストラクタ#
宣言#
namespace MGL::Render
{
class IndexedFontResource : public FontResource
{
public:
constexpr IndexedFontResource(FontOrigin originType) noexcept;
};
}
引数#
- MGL::Render::FontOrigin originType
このフォントリソースの原点位置
説明#
このクラスのコンストラクタです。引数にはこのフォントリソースが扱う原点の位置を指定します。
原点の位置についてはMGL::Render::FontOriginの説明を参照してください。
利用例#
class YourFontResource : public MGL::Render::IndexedFontResource
{
public:
// コンストラクタで原点にベースラインを設定
constexpr YourFontResource() noexcept
: MGL::Render::IndexedFontResource(MGL::Render::FontOrigin::BaseLine)
{
}
};
バージョン情報#
- MGL 1.1.5
初回リリース
関連#
GetIndex#
グリフのインデックスを取得
宣言#
namespace MGL::Render
{
class IndexedFontResource : public FontResource
{
public:
[[nodiscard]] virtual size_t GetIndex(
char32_t character,
FontFaceType faceType) const noexcept = 0;
};
}
引数#
- char32_t character
UTF-32文字
- MGL::Render::FontFaceType faceType
書体の指定
戻り値#
- size_t
引数に対応したグリフのインデックス。扱えない文字を指定された場合は
size_t
型の最大値
説明#
UTF-32文字と書体タイプから対応したインデックスを返す関数です。この関数で返した値がインデックス文字へと変換されます。
継承先においては、GetGlyphで対応したグリフを取得できる値を返してください。
インデックスはインデックス文字に変換されるため、MGL::Text::kIndexedCharacterReserveStart (0xD000)
よりも大きい値を扱うことはできません。この値より大きなインデックスを返した場合は無効な文字(MGL::Text::kIndexedCharacterInvalid
)へと変換されます。
扱えない文字や書体を指定され、対応したインデックスが存在しない場合はSIZE_MAX
などのsize_t
型の最大値を返してください。
ヒント
size_t
の最大値を返す代わりに有効ないずれかのインデックスを返すことで、そのグリフを代替文字として表示できるようにもなります。
利用例#
フォントリソースの作成(準備中)を参照してください。
バージョン情報#
- MGL 1.1.5
初回リリース
- MGL 1.1.13
関数の戻り値に
[[nodiscard]]
属性を付与
関連#
GetGlyph#
グリフを取得
宣言#
namespace MGL::Render
{
class IndexedFontResource : public FontResource
{
public:
[[nodiscard]] virtual const FontGlyph *GetGlyph(
size_t index,
FontFaceType faceType,
const FontOption &option) const noexcept = 0;
};
}
引数#
- size_t index
インデックス
- MGL::Render::FontFaceType faceType
書体の指定
- const MGL::Render::FontOption &option
フォントの描画オプション
戻り値#
- const MGL::Render::FontGlyph *
引数に対応したグリフ情報のアドレス。一致するものがない場合は
nullptr
説明#
インデックスからグリフを取得するための関数です。
引数index
にはGetIndexで返した値が指定されます。faceType
はその際に指定されていた書体が渡されます。
option
は描画オプションに応じてグリフを変更する場合に使用します。この引数の使用は必須ではなく、多くの場合は参照する必要はありません。
対応するグリフが見つからない場合はnullptr
を返してください。
利用例#
フォントリソースの作成(準備中)を参照してください。
バージョン情報#
- MGL 1.1.5
初回リリース
- MGL 1.1.13
関数の戻り値に
[[nodiscard]]
属性を付与
関連#
HasFontFace#
指定した書体を保持しているかを取得
宣言#
namespace MGL::Render
{
class IndexedFontResource : public FontResource
{
public:
[[nodiscard]] virtual bool HasFontFace(FontFaceType faceType) const noexcept override = 0;
};
}
引数#
- MGL::Render::FontFaceType faceType
書体の種類
戻り値#
- bool
書体を保持していれば
true
、そうでなければfalse
説明#
このフォントリソースが指定された書体を保持しているかを取得します。
継承先においては、MGL::Render::FontFaceType::Default
は常にtrue
を返し、それ以外の書体については保持している場合にのみtrue
を返してください。
利用例#
- 継承先
class YourFontResource : MGL::Render::IndexedFontResource { public: // ... 省略 // デフォルトの書体のみを保持しているフォントリソースでの実装例 [[nodiscard]] bool HasFontFace(MGL::Render::FontFaceType faceType) const noexcept override { if (faceType == MGL::Render::FontFaceType::Default) { return true; } return false; } // ... 省略 };
バージョン情報#
- MGL 1.1.5
初回リリース
- MGL 1.1.13
関数の戻り値に
[[nodiscard]]
属性を付与
関連#
IsValid#
このフォントリソースの有効状態を取得
宣言#
namespace MGL::Render
{
class IndexedFontResource : public FontResource
{
public:
[[nodiscard]] virtual bool IsValid() const noexcept override = 0;
};
}
戻り値#
- bool
有効な場合に
true
、無効な場合にfalse
説明#
このフォントリソースが有効であるかを取得するための関数です。この関数の戻り値はそのままMGL::Render::Font::IsValidの戻り値となります。
継承先においては、フォントリソースが利用可能な場合にtrue
を返すように実装してください。
利用例#
- 継承先
class YourFontResource : MGL::Render::IndexedFontResource { public: // コンストラクタ YourFontResource() noexcept : MGL::Render::IndexedFontResource(MGL::Render::FontOption::BaseLine) { _isValid = Initialize(); } // 有効状態を返す [[nodiscard]] bool IsValid() const noexcept override { return _isValid; } /* ... 省略 */ private: bool _isValid; };
バージョン情報#
- MGL 1.1.5
初回リリース
- MGL 1.1.13
関数の戻り値に
[[nodiscard]]
属性を付与
GetLineAdvance#
改行の送りサイズを取得
宣言#
namespace MGL::Render
{
class IndexedFontResource : public FontResource
{
public:
[[nodiscard]] virtual float GetLineAdvance() const noexcept = 0;
};
}
戻り値#
- float
改行の送りサイズ
説明#
改行の際の送りサイズを返す関数です。継承先においては、次の行までのオフセット値を返すよう実装してください。
実際の送りサイズはこの関数の戻り値の他に、MGL::Render::Font::SetMarginおよびMGL::Render::Font::SetScaleの値が適用されます。
利用例#
- 継承先
class YourFontResource : MGL::Render::IndexedFontResource { public: /* ... 省略 */ [[nodiscard]] float GetLineAdvance() const noexcept override { return _lineAdvance; } /* ... 省略 */ private: float _lineAdvance; // 行の送り幅 };
バージョン情報#
- MGL 1.1.5
初回リリース
- MGL 1.1.13
関数の戻り値に
[[nodiscard]]
属性を付与
GetRubyOffset#
ルビのオフセット値を取得
宣言#
namespace MGL::Render
{
class IndexedFontResource : public FontResource
{
public:
[[nodiscard]] virtual float GetRubyOffset() const noexcept;
};
}
戻り値#
- float
ルビのオフセット値
説明#
フォントリソースがルビ文字を表示する場合において、親文字の原点位置からルビ文字の原点位置までのオフセットを返すための関数です。
原点位置がベースラインの横書き文字と仮定した場合、この値はスクリーン座標系におけるY座標のマイナス方向へと適用されます。
フォントリソースがルビ文字に対応していない場合、この関数を実装する必要はありません。その場合は常に0.0f
が返ります。
利用例#
- 継承先
class YourFontResource : MGL::Render::IndexedFontResource { public: /* ... 省略 */ [[nodiscard]] float GetRubyOffset() const noexcept override { return _rubyOffset; } /* ... 省略 */ private: float _rubyOffset; // 親文字からルビ文字までのオフセット値 };
バージョン情報#
- MGL 1.1.5
初回リリース
- MGL 1.1.13
関数の戻り値に
[[nodiscard]]
属性を付与