
Aspose.Font для C++
C++ API шрифтов для чтения, сохранения и конвертации шрифтов
Библиотека C++ позволяет загружать, читать, сохранять и конвертировать различные форматы шрифтов, такие как TrueType, WOFF, EOT, OpenType, CFF и Type1, в приложениях на C++.
Aspose.Font for C++ — очень мощный инструмент, упрощающий работу со шрифтами и предлагающий обширный набор функций для разработчиков программного обеспечения и программистов. Он дает возможность разработчикам C++ работать с различными форматами шрифтов и выполнять широкий спектр задач, связанных со шрифтами. Он позволяет разработчикам загружать, генерировать, редактировать и конвертировать файлы шрифтов в различных форматах, таких как TrueType (TTF), OpenType (OTF), PostScript Type 1 (PFB/PFA), WOFF, EOT и многие другие. API может поднять ваши задачи, связанные со шрифтами, на новый уровень без каких-либо внешних зависимостей.
Aspose.Font для C++ — это богатая функциями библиотека, предоставляющая комплексные возможности манипуляции шрифтами для разработчиков C++. Библиотека поддерживает широкий спектр операций со шрифтами, включая извлечение метаданных шрифта, загрузку файлов шрифтов с диска или потока, доступ к информации о глифах, конвертацию шрифтов в различные форматы, чтение информации о шрифте, обновление файлов шрифтов и их сохранение на диск, чтение метрических данных из файлов шрифтов, рендеринг текста с использованием глифов шрифта, объединение TrueType‑шрифтов и многое другое. Она поддерживает 32‑разрядные и 64‑разрядные операционные системы.
Aspose.Font для C++ предлагает расширенные типографические возможности, включая обработку лигатур, контекстных и дискреционных замен глифов, а также продвинутые варианты раскладки текста. Эти функции особенно полезны при работе со сложными письменностями или языками, требующими сложного формирования и рендеринга текста. API кроссплатформенный и позволяет пользователям бесшовно использовать его на разных операционных системах, включая Windows, Linux и macOS. Если вы хотите расширить возможности манипуляции шрифтами в своих C++ приложениях, Aspose.Font определённо стоит рассмотреть.
Начало работы с Aspose.Font для C++
Рекомендуемый способ установки Aspose.Font для C++ — использование NuGet. Пожалуйста, используйте следующую команду для беспроблемной установки.
Установите Aspose.Font для C++ с помощью команды NuGet
NuGet\Install-Package Aspose.Font.Cpp -Version 23.4.0Вы можете скачать библиотеку напрямую со Aspose.Font для C++ страницы продукта
Преобразование шрифтов в поддерживаемые форматы файлов с помощью C++ API
Одна из заметных возможностей Aspose.Font для C++ — способность конвертировать шрифты между различными поддерживаемыми форматами файлов. Это очень удобно, когда разработчикам программного обеспечения необходимо преобразовать шрифты в конкретный формат, совместимый с целевой средой или платформой. Библиотека поддерживает бесшовную конверсию между TrueType, OpenType, CFF, шрифтами PostScript Type 1 и другими, позволяя разработчикам охватывать широкий спектр сценариев. Следующий пример показывает, как загрузить шрифт из любого поддерживаемого формата, например TTF, и конвертировать его в WOFF2 с помощью команд C++.
Конвертировать TTF в WOFF2 с использованием C++ API
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);
Загрузка и извлечение шрифтов Type1 с помощью C++ API
Aspose.Font для C++ позволяет разработчикам программного обеспечения загружать Type1, а также другие поддерживаемые форматы шрифтов из различных источников, таких как локальные файлы, потоки или URL-адреса. Разработчики могут загружать шрифты по отдельности или пакетно, что упрощает обработку нескольких шрифтов одновременно. После загрузки разработчики могут обновлять свойства шрифтов и сохранять их в нужном формате или экспортировать в другие форматы с легкостью. Следующий пример показывает, как загрузить и извлечь данные из шрифтов type1 в приложениях C++.
Как загрузить и извлечь данные из шрифтов Type1 с помощью C++ API?
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 для 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++ позволяет разработчикам программного обеспечения загружать Type1, а также другие поддерживаемые форматы шрифтов из разных источников, таких как локальные файлы, потоки или URL-адреса. Разработчики могут загружать шрифты по отдельности или пакетно, что упрощает обработку нескольких шрифтов одновременно. После загрузки разработчики могут обновлять свойства шрифтов и сохранять их в нужном формате или экспортировать в другие форматы с легкостью. Ниже приведён пример, показывающий, как загружать и извлекать данные из шрифтов type1 в приложениях C++.
Чтение информации о метриках шрифтов из Type1 шрифтов в приложениях C++
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);
