Відображення тексту за допомогою гліфів

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

 

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

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

Ця сторінка пояснює, як відображати текст за допомогою гліфів, але комплексне пояснення функціональності представлено у статті Using Glyph objects . Там ви знайдете більше прикладів коду 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 гліфів. Для цього передайте кожний символ тексту через об’єкт кодування шрифту та декодуйте його у відповідний 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;
    }



FAQ

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

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

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

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

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

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