1. Товары
  2.   Font
  3.   C++
  4.   Aspose.Font для C++

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 определённо стоит рассмотреть.

Previous Next

Начало работы с 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);

 Русский