グリフを使用してテキストをレンダリングする

C++ API ソリューション。目的のフォントでテキストを表示します。

 

Aspose.Font API ソリューションは、変換、グリフの操作、ラテン記号の検出など、フォントを操作するための豊富な機能を提供します。一部の機能は、テキスト レンダリングなどのグリフ操作に関連しています。

グリフとは、書体内の文字の独自のデザイン、または記号や文字のグラフィック表現です。このフォント ユニットをより深く理解するには、 Introduction to Glyph の記事をお読みください。

このページでは、グリフを使用してテキストを表示する方法について説明しますが、機能の包括的な説明は記事 Glyph オブジェクトの使用 。そこには、より多くの C++ コード例があり、特にグリフおよび Glyph オブジェクトを操作するための Aspose.Font 機能について学習できます。また、Aspose Github Project で完全な例とデータ ファイルを学ぶこともできます。

グリフでテキストを入力するには、次のものが必要です。

  • Aspose.Font for C++ API は、機能が豊富で強力で使いやすいドキュメント操作および変換 API です。

  • NuGet パッケージ マネージャーを開き、Aspose.Font を検索してインストールします。パッケージ マネージャー コンソールから次のコマンドを使用することもできます。

Package Manager Console Command


    PM> Install-Package Aspose.Font

C++ を使用してグリフを含むテキストをレンダリングする

グリフを使用してテキストをレンダリングするには、通常、次の手順が必要です。

  1. フォント ファイルをメモリにロードします。ここでは、Type1Font オブジェクトなどのフォント オブジェクトを作成し、それをフォント ファイル パスに渡す必要があります。
  2. テキストを対応するグリフ ID にデコードします。このために、テキストの各文字をフォントのエンコーディング オブジェクトに渡し、対応するグリフ ID にデコードします。
  3. 各グリフのアウトラインを取得します。アウトラインは、文字の形状を定義するパスです。これは、 Font オブジェクトの GetGlyphOutline() メソッドを使用して実現できます。
  4. GraphicsPath オブジェクトなどのグラフィックス オブジェクトを使用して、各グリフのアウトラインを描画します。 IGlyphOutlinePainter インターフェイスを実装するオブジェクトを作成するだけで、グリフのアウトラインを描画できます。
  5. グラフィックス オブジェクトを使用して各グリフのアウトラインを描画することにより、テキストを表示します。これは、グラフィック オブジェクトの 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. フォントヒンティングとは何ですか?

ヒントは、特に小さなサイズや低解像度の画面で、テキストの明瞭さと読みやすさを維持するのに役立ちます。