使用字形渲染文本

C++ API 解决方案,用于显示所需字体的文本。

 

Aspose.Font API 解决方案提供了丰富的字体处理功能,包括转换、字形操作、拉丁符号检测等。其中一些功能与字形操作相关,例如文本渲染。

字形是字形设计中字符的独特外观,或符号、字符的图形表示。要深入了解这种字体单元,请阅读 Introduction to Glyph 文章。

本页说明如何使用字形显示文本,关于该功能的完整解释请参阅文章 Using Glyph objects 。在那里,您将找到更多 C++ 代码示例,并了解 Aspose.Font 在字形及 Glyph 对象方面的能力。您还可以在 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.RenderingAspose.Font.Renderers 命名空间。首先,实现 IGlyphOutlinePainter 方法。然后创建 DrawText() 方法。 创建实用方法来计算字体宽度并调用渲染文本功能

2. 用字形渲染文本时需要注意哪些因素

使用字形渲染文本时,需要考虑几个重要因素,以确保获得准确且具有视觉吸引力的结果,例如字体选择、提示、字距调整和跟踪、字形度量、颜色和对比度等。

3. 什么是字体提示?

提示可以帮助保持文本的清晰度和易读性,特别是在较小尺寸或低分辨率屏幕上。