Візуалізація тексту за допомогою гліфів

Рішення C++ API яке можна використовувати для того, щоб відобразити текст із потрібним шрифтом.

 

API Рішення Aspose.Font пропонує широкі можливості для роботи зі шрифтами, включаючи конвертацію, маніпуляції з гліфами, виявлення латинських символів тощо. Деякі функції пов’язані з роботою із гліфами, наприклад відтворенням тексту.

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

На цій сторінці пояснюється, як відображати текст за допомогою гліфів, але вичерпне пояснення функціональності надається в статті Використання об’єктів гліфів . Там ви знайдете більше прикладів коду C++ і дізнаєтесь про можливості Aspose.Font для роботи з гліфами та зокрема з об’єктами Glyph. Ви також можете дізнатися повні приклади та файли даних на Aspose Github Project .

Для відтворення текстів гліфами необхідно:

  • API Aspose.Font для C++, який є багатофункціональним, потужним і простим у використанні 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;
    }



FAQ

1. Як шрифт відображається через Aspose.Font?

Щоб відобразити шрифти за допомогою цього рішення API, вам знадобляться сутності Aspose.Font.Rendering і Aspose.Font.Renderers простори імен. Спочатку реалізуйте методи IGlyphOutlinePainter. Потім створіть метод DrawText(). Створіть метод утиліти для обчислення ширини шрифту та виклику функціональних можливостей відтворення тексту.

2. На які фактори слід звернути увагу під час візуалізації тексту з гліфами?

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

3. Що таке підказка шрифту?

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