グリフを使用してテキストを描画
C++ API ソリューション。目的のフォントでテキストを表示します。
Aspose.Font API ソリューションは、フォントの変換、グリフの操作、ラテン文字の検出など、フォント操作に関する豊富な機能を提供します。機能の中には、テキスト描画などのグリフ操作に関連するものがあります。
グリフとは、書体における文字の独自のデザイン、または記号や文字の図形的表現です。このフォント単位を深く理解するには、 Introduction to Glyph 記事をお読みください。
このページではグリフを使用したテキストの表示方法を説明していますが、機能の包括的な説明は Using Glyph objects 記事に掲載されています。そこでは、さらに多くの C++ コード例や Aspose.Font のグリフおよび Glyph オブジェクトに関する機能を学べます。また、Aspose の Github Project で完全な例とデータファイルも確認できます。
グリフでテキストを入力するには、以下が必要です:
機能豊富で強力かつ使いやすいドキュメント操作・変換 API である Aspose.Font for C++ API。
NuGet パッケージマネージャーを開き、Aspose.Font を検索してインストールしてください。Package Manager Console からは次のコマンドも使用できます。
Package Manager Console Command
PM> Install-Package Aspose.Font
C++ でグリフを使用してテキストを描画
通常、グリフでテキストを描画する際に次の手順が必要です:
- フォントファイルをメモリにロードします。ここでは、Type1Font オブジェクトなどのフォントオブジェクトを作成し、フォントファイルのパスを指定します。
- テキストを対応するグリフ ID にデコードします。そのために、テキストの各文字をフォントのエンコーディングオブジェクトに通し、対応するグリフ ID にデコードします。
- 各グリフのアウトラインを取得します。アウトラインは文字の形状を定義するパスです。これは、 Font オブジェクトの GetGlyphOutline() メソッドを使用して取得できます。
- GraphicsPath オブジェクトなどのグラフィックスオブジェクトを使用して、各グリフのアウトラインを描画します。グリフのアウトライン描画を担当する IGlyphOutlinePainter インターフェイスを実装したオブジェクトを作成すればよいです。
- グラフィックスオブジェクトで各グリフのアウトラインを描画し、テキストを表示します。これは、グラフィックスオブジェクトの DrawPath() メソッドを使用して実行できます。
テキストを描画する C++ コード
using Aspose::Font::Glyphs;
using Aspose::Font::Rendering;
using Aspose::Font::RenderingPath; class GlyphOutlinePainter: IGlyphOutlinePainter
RenderingText::GlyphOutlinePainter::GlyphOutlinePainter(System::SharedPtr<System::Drawing::Drawing2D::GraphicsPath> path)
{
_path = path;
}
void RenderingText::GlyphOutlinePainter::MoveTo(System::SharedPtr<Aspose::Font::RenderingPath::MoveTo> moveTo)
{
_path->CloseFigure();
_currentPoint.set_X((float)moveTo->get_X());
_currentPoint.set_Y((float)moveTo->get_Y());
}
void RenderingText::GlyphOutlinePainter::LineTo(System::SharedPtr<Aspose::Font::RenderingPath::LineTo> lineTo)
{
float x = (float)lineTo->get_X();
float y = (float)lineTo->get_Y();
_path->AddLine(_currentPoint.get_X(), _currentPoint.get_Y(), x, y);
_currentPoint.set_X(x);
_currentPoint.set_Y(y);
}
void RenderingText::GlyphOutlinePainter::CurveTo(System::SharedPtr<Aspose::Font::RenderingPath::CurveTo> curveTo)
{
float x3 = (float)curveTo->get_X3();
float y3 = (float)curveTo->get_Y3();
_path->AddBezier(_currentPoint.get_X(), _currentPoint.get_Y(), (float)curveTo->get_X1(), (float)curveTo->get_Y1(), (float)curveTo->get_X2(), (float)curveTo->get_Y2(), x3, y3);
_currentPoint.set_X(x3);
_currentPoint.set_Y(y3);
}
void RenderingText::GlyphOutlinePainter::ClosePath()
{
_path->CloseFigure();
}
System::Object::shared_members_type Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::GetSharedMembers()
{
auto result = System::Object::GetSharedMembers();
result.Add("Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::_path", this->_path);
result.Add("Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::_currentPoint", this->_currentPoint);
return result;
}よくある質問
1. Aspose.Font を介してフォントはどのようにレンダリングされますか?
この API ソリューションを使用してフォントをレンダリングするには、 Aspose.Font.Rendering および Aspose.Font.Renderers 名前空間。まず、IGlyphOutlinePainter メソッドを実装し、次に DrawText() メソッドを作成します。 フォント幅を計算し、テキストのレンダリング機能を呼び出すユーティリティ メソッドを作成します。
2. グリフを含むテキストをレンダリングするときに注意すべき要素は何ですか?
グリフを使用してテキストをレンダリングする場合、フォントの選択、ヒンティング、カーニングとトラッキング、グリフのメトリクス、色とコントラストなど、正確で視覚的に魅力的な結果を保証するために考慮すべき重要な要素がいくつかあります。
3. フォントヒンティングとは何ですか?
ヒントは、特に小さなサイズや低解像度の画面で、テキストの明瞭さと読みやすさを維持するのに役立ちます。