从字节数组加载字体文件

从 MemoryStream 加载 TTF、WOFF、EOT、Type 1 和 CFF 字体的 C++ API 解决方案。

 

Aspose.Font API 解决方案为您提供了处理字体的广泛功能,包括转换、字形操作、拉丁符号检测等等。但是字体操作的第一步是加载字体文件以供以后使用。

本文概述了如何从流中加载字体文件,但有关字体加载的更多详细信息,请参阅文章 How to Load Files? 。您将在其中找到大量 C++ 代码示例并了解字体加载所需的对象和参数。

API 支持多种字体格式,包括 TrueType(单一字体)、TrueType(字体集合)、Web Open Font Format、Web Open Font Format version 2.0、Embedded OpenType、Adobe Type 1 字体(pfa、pfb、afm、pfm)和压缩字体格式。提供的代码片段演示了如何从流中加载 True Type 字体 (TTF) 文件。

我们可以从 Wikipedia TTF 代表 TrueType 字体,是一种可缩放计算机字体的文件格式。它最初由 Apple Computer 开发,但现在广泛用于 Mac 和 Windows 操作系统。 TTF 文件包含有关如何以不同的字体大小和样式呈现字体的每个字符的说明,并且可以轻松调整大小并在不同的应用程序中使用它们而不会降低质量。 TTF 字体广泛用于数字排版,常用于网页设计、文字处理和桌面出版。

要加载字体,您将需要 Aspose.Font for C++ API,这是一个功能强大、易于使用的 C++ 平台文档操作和转换 API。要获取 API,请打开 NuGet 包管理器并搜索 Aspose.Font,然后安装它。您还可以在程序包管理器控制台中使用以下命令。

Package Manager Console Command


    PM> Install-Package Aspose.Font

使用 C++ 从字节数组/MemoryStream 加载 TTF

此代码片段是用 C++ 编写的,演示了如何使用 Aspose.Font API 加载 TrueType 字体 (TTF) 文件。该代码执行以下步骤:

  1. 构造字体文件的路径。此处,DataDir 是一个预定义变量,包含字体文件 Montserrat-Regular.ttf 所在目录的路径。 Path.Combine 方法组合两个路径以创建字体文件的完整路径。
  2. 将字体二进制数据加载到字节数组中。 File.ReadAllBytes() 方法读取字体文件的内容并将数据作为字节数组返回。
  3. 初始化一个 FontDefinition 对象。 FontType.TTF 表示字体文件是 TrueType Font(.ttf) 和新的 ByteContentStreamSource (fontBytes) 根据存储在 fontBytes 数组中的字体二进制数据创建一个 ByteContentStreamSource 对象。
  4. 加载字体。 Font.Open() 方法将 FontDefinition 对象作为参数并返回加载的字体, 然后可以用于进一步的操作。

用于从流中加载字体的 C++ 代码

    using Aspose::Font;
    using Aspose::Font::Sources;
    using Aspose::Font::Ttf;
     // Construct the path to the file
    System::String fontPath = System::IO::Path::Combine(get_DataDir(), u"Montserrat-Regular.ttf");

	// Load font binary data into the byte array
    System::ArrayPtr<uint8_t> fontBytes = System::IO::File::ReadAllBytes(fontPath);
    
    // Initialize the FontDefinition object  passing TTF as the FontType value, "ttf" as the fileExtension value, 
    // and ByteContentStreamSource object based on the fontBytes array
    System::SharedPtr<FontDefinition> fontDef = System::MakeObject<FontDefinition (Aspose::Font::FontType::TTF, u"ttf", System::MakeObject<ByteContentStreamSource>(fontBytes));

     // Load the font
    System::SharedPtr<Aspose::Font::Font> font = Aspose::Font::Font::Open(fontDef);



常问问题

1. 以编程方式加载字体的参数是什么?

为了正确加载字体,您需要知道两个关键参数。它们是字体格式和存储。

2. 字体位于我的计算机上的什么位置?

要查看计算机上可用的字体,请转至 C:>Windows>Fonts 目录。在那里您将能够管理您的字体。

3. 如何从流中加载字体?

使用 FontFileDefinition 设置路径数组,并通过 Open() 方法创建对象。指定字体格式。使用 Aspose.Font.Font.Open() 方法完成加载。