Отображение текста с глифами

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

 

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

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

Эта страница объясняет, как отображать текст с помощью глифов, но подробное объяснение функции предоставлено в статье Использование объектов Glyph . Там вы найдёте больше примеров кода C++ и узнаете о возможностях Aspose.Font для работы с глифами и объектами Glyph. Вы также можете ознакомиться с полными примерами и файлами данных в проекте Aspose Github Project .

Для набора текста с глифами нам требуется:

  • Aspose.Font для C++ API — это функциональный, мощный и простой в использовании API для работы с документами и их конвертации.

  • Откройте менеджер пакетов NuGet, найдите Aspose.Font и установите его. Вы также можете использовать следующую команду в консоли диспетчера пакетов.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Отображение текста с глифами с использованием C++

Обычно для рендеринга текста с глифами требуются следующие шаги:

  1. Загрузите файл шрифта в память. Здесь необходимо создать объект шрифта, например объект Type1Font, и указать путь к файлу шрифта.
  2. Декодируйте текст в соответствующие идентификаторы глифов. Для этого пропустите каждый символ текста через объект кодирования шрифта и декодируйте его в соответствующий ID глифа.
  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. Что такое хинтинг шрифта?

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