
Aspose.Font for C++
C++ 字体 API 用于读取、保存和转换字体
C++ 库允许在基于 C++ 的应用程序中加载、读取、保存和转换不同的字体格式,如 TrueType、WOFF、EOT、OpenType、CFF 和 Type1。
Aspose.Font for C++ 是一个非常强大的工具,简化了字体处理,并为软件开发人员和程序员提供了广泛的功能集。它使 C++ 开发者能够使用各种字体格式并执行广泛的字体相关任务。它允许软件开发者加载、生成、编辑和转换各种格式的字体文件,如 TrueType (TTF)、OpenType (OTF)、PostScript Type 1 (PFB/PFA)、WOFF、EOT 等等。该 API 可以在没有任何外部依赖的情况下,将您的字体相关任务提升到新的水平。
Aspose.Font for C++ 是一个功能丰富的库,为 C++ 开发者提供全面的字体操作能力。该库支持广泛的字体操作,包括提取字体元数据、从磁盘或流加载字体文件、访问字形信息、将字体转换为不同格式、读取字体信息、更新字体文件并保存到磁盘、从字体文件读取度量信息、使用字体字形渲染文本、合并 TrueType 字体等。它支持 32 位和 64 位操作系统。
Aspose.Font for C++ 提供高级排版功能,包括处理连字、上下文和可选字形替换以及高级文本布局选项。这些功能在处理需要复杂文字成形和渲染的复杂脚本或语言时尤为有用。该 API 跨平台,允许用户在不同操作系统上无缝使用,包括 Windows、Linux 和 macOS。如果您希望在 C++ 应用程序中增强字体操作能力,Aspose.Font 无疑值得考虑。
Aspose.Font for C++ 入门指南
推荐的安装Aspose.Font for C++的方式是使用NuGet。请使用以下命令进行顺利安装。
通过 NuGet 命令安装 Aspose.Font for C++
NuGet\Install-Package Aspose.Font.Cpp -Version 23.4.0您可以直接从Aspose.Font for C++产品页面下载库。
通过 C++ API 将字体转换为受支持的文件格式
Aspose.Font for C++的一个显著特性是能够在不同支持的文件格式之间转换字体。当软件开发人员需要将字体转换为与目标环境或平台兼容的特定格式时,这非常方便。该库支持在TrueType、OpenType、CFF、PostScript Type 1字体等之间无缝转换,帮助开发人员满足各种场景的需求。以下示例展示了如何使用C++命令从任何受支持的格式(如TTF)加载字体并将其转换为WOFF2。
使用 C++ API 将 TTF 转换为 WOFF2
using namespace System;
using namespace Aspose::Font::Sources;
using namespace Aspose::Font::Ttf;
using namespace Aspose::Font;
// Open TTF font
SharedPtr fontFileDefinition = MakeObject(MakeObject(u"Montserrat-Regular.ttf"));
SharedPtr fontDefinition = MakeObject(FontType::TTF, fontFileDefinition);
SharedPtr font = Font::Open(fontDefinition);
// WOFF2 output settings
SharedPtr outStream = IO::File::Create(u"Montserrat-Regular.woff2");
// Convert TTF to WOFF2
font->SaveToFormat(outStream, FontSavingFormats::WOFF2);
通过 C++ API 加载和提取 Type1 字体
Aspose.Font for C++ 允许软件开发人员从不同来源(如本地文件、流或 URL)加载 Type1 以及其他受支持的字体格式。软件开发人员可以单个或批量加载字体,轻松同时处理多个字体。加载后,开发人员可以更新字体属性并将其保存回所需格式,或轻松导出为其他格式。以下示例展示了如何在 C++ 应用程序中加载并提取 Type1 字体的数据。
如何使用 C++ API 加载和提取 Type1 字体数据?
System::String fileName = dataDir + u"courier.pfb";
//Font file name with full path
System::SharedPtr fd = System::MakeObject(Aspose::Font::FontType::Type1, System::MakeObject(u"pfb", System::MakeObject(fileName)));
System::SharedPtr font = System::DynamicCast_noexcept(Aspose::Font::Font::Open(fd));
字体度量和字形支持
Aspose.Font for C++ 是一个功能丰富的库,提供对大量字体度量的访问,包括上升线、下降线、行间距以及其他各种关键测量值。软件开发人员可以检索字形信息,如 Unicode 值、边界框、前进宽度等。这些功能使用户能够在您的应用程序中准确定位和渲染文本。以下示例展示了软件开发人员如何使用 C++ 命令通过字形渲染文本。
如何在 C++ 应用程序中使用字形渲染文本?
using Aspose::Font::Glyphs;
using Aspose::Font::Rendering;
using Aspose::Font::RenderingPath;
class GlyphOutlinePainter: IGlyphOutlinePainter
RenderingText::GlyphOutlinePainter::GlyphOutlinePainter(System::SharedPtr path)
{
_path = path;
}
void RenderingText::GlyphOutlinePainter::MoveTo(System::SharedPtr moveTo)
{
_path->CloseFigure();
_currentPoint.set_X((float)moveTo->get_X());
_currentPoint.set_Y((float)moveTo->get_Y());
}
void RenderingText::GlyphOutlinePainter::LineTo(System::SharedPtr 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 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;
}
通过 C++ API 进行字体操作与编辑
Aspose.Font for C++ 允许软件开发人员从不同来源(如本地文件、流或 URL)加载 Type1 以及其他受支持的字体格式。软件开发人员可以单个或批量加载字体,轻松同时处理多个字体。加载后,开发人员可以更新字体属性并将其保存回所需格式,或轻松导出为其他格式。以下示例展示了如何在 C++ 应用程序中加载和提取 type1 字体的数据。
在 C++ 应用中读取 Type1 字体的字体度量信息
System::String fileName = dataDir + u"courier.pfb";
//Font file name with full path
System::SharedPtr fd = System::MakeObject(Aspose::Font::FontType::Type1, System::MakeObject(u"pfb", System::MakeObject(fileName)));
System::SharedPtr font = System::DynamicCast_noexcept(Aspose::Font::Font::Open(fd));
System::String name = font->get_FontName();
System::Console::WriteLine(System::String(u"Font name: ") + name);
System::Console::WriteLine(System::String(u"Glyph count: ") + font->get_NumGlyphs());
System::String metrics = System::String::Format(u"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}", font->get_Metrics()->get_Ascender(), font->get_Metrics()->get_Descender(), font->get_Metrics()->get_TypoAscender(), font->get_Metrics()->get_TypoDescender(), font->get_Metrics()->get_UnitsPerEM());
System::Console::WriteLine(metrics);
