Отображение текста с помощью глифов
С++ 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++
Следующие шаги обычно требуются для рендеринга текста с глифами:
- Загрузите файл шрифта в память. Здесь вам нужно создать объект шрифта, такой как объект Type1Font, и передать его в пути к файлу шрифта.
- Декодируйте текст в соответствующие идентификаторы глифов. Для этого передайте каждый символ текста через объект кодирования шрифта и декодируйте его в соответствующий идентификатор глифа.
- Получите контур каждого глифа. Контур — это контур, определяющий форму персонажа. Этого можно добиться с помощью метода GetGlyphOutline() объекта Font .
- Нарисуйте контуры каждого глифа с помощью графического объекта, такого как объект GraphicsPath. Просто создайте объект, реализующий интерфейс IGlyphOutlinePainter, отвечающий за отрисовку контуров глифов.
- Отобразите текст, используя графический объект для рисования контуров каждого глифа. Это можно сделать с помощью метода 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. Что такое хинтинг шрифта?
Хинтинг может помочь сохранить ясность и разборчивость текста, особенно при меньшем размере или на экранах с низким разрешением.