Отображение текста с помощью глифов

С++ API-решение. для отображения текста нужным шрифтом.

 

Aspose.Font API Solution предлагает широкие возможности для работы со шрифтами, включая преобразование, манипулирование глифами, обнаружение латинских символов и многое другое. Некоторые функции связаны с манипулированием глифами, такими как рендеринг текста.

Глиф — это уникальный дизайн символа в шрифте или графическое представление символа или символа. Чтобы лучше понять этот шрифт, прочитайте статью Introduction to Glyph .

На этой странице объясняется, как отображать текст с помощью глифов, но подробное объяснение функциональности приведено в статье Использование объектов глифов . Там вы найдете больше примеров кода 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. Декодируйте текст в соответствующие идентификаторы глифов. Для этого передайте каждый символ текста через объект кодирования шрифта и декодируйте его в соответствующий идентификатор глифа.
  3. Получите контур каждого глифа. Контур — это контур, определяющий форму персонажа. Этого можно добиться с помощью метода GetGlyphOutline() объекта Font .
  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.Rendering и Aspose.Font.Renderers . Сначала реализуйте методы IGlyphOutlinePainter. Затем создайте метод DrawText(). Создайте служебный метод для расчета ширины шрифта и вызовите функцию рендеринга текста.

2. На какие факторы следует обратить внимание при отображении текста с помощью глифов?

При рендеринге текста с помощью глифов необходимо учитывать несколько важных факторов, чтобы обеспечить точные и визуально привлекательные результаты, такие как выбор шрифта, хинтинг, кернинг и отслеживание, метрики глифов, цвет и контраст и т. д.

3. Что такое хинтинг шрифта?

Хинтинг может помочь сохранить ясность и разборчивость текста, особенно при меньшем размере или на экранах с низким разрешением.