Renderizar texto usando glifos
Solução API C++. para exibir o texto com a fonte desejada.
Aspose.Font API Solution oferece recursos avançados para trabalhar com fontes, incluindo conversão, manipulação de glifos, detecção de símbolos latinos e muito mais. Alguns dos recursos estão relacionados à manipulação de glifos, como renderização de texto.
Um glifo é um design exclusivo de um caractere em um tipo de letra ou uma representação gráfica de um símbolo ou caractere. Para entender melhor essa unidade de fonte, leia o artigo Introduction to Glyph .
Esta página explica como exibir o texto usando glifos, mas uma explicação abrangente da funcionalidade é fornecida no artigo Using Glyph objects . Lá, você encontrará mais exemplos de código C++ e aprenderá sobre os recursos do Aspose.Font para trabalhar com glifos e objetos Glyph especificamente. Você também pode aprender exemplos completos e arquivos de dados em Aspose Github Project .
Para digitar textos com glifos, precisamos:
Aspose.Font para C++ API, que é uma API de manipulação e conversão de documentos rica em recursos, poderosa e fácil de usar.
Abra o gerenciador de pacotes NuGet e procure por Aspose.Font e instale. Você também pode usar o seguinte comando no console do gerenciador de pacotes.
Package Manager Console Command
PM> Install-Package Aspose.Font
Renderizar texto com glifos usando C++
As próximas etapas geralmente são necessárias para renderizar o texto com os glifos:
- Carregue o arquivo de fonte na memória. Aqui você precisa criar um objeto de fonte, como um objeto Type1Font, e passá-lo no caminho do arquivo de fonte.
- Decodifique o texto em seus IDs de glifos correspondentes. Para isso, passe cada caractere do texto pelo objeto de codificação da fonte e decodifique-o para seu ID de glifo correspondente.
- Obtenha o contorno de cada glifo. O contorno é um caminho que define a forma do personagem. Isso pode ser obtido usando o método GetGlyphOutline() do objeto Font .
- Desenhe os contornos de cada glifo usando um objeto gráfico, como um objeto GraphicsPath. Basta criar um objeto que implemente a interface IGlyphOutlinePainter, responsável por desenhar os contornos dos glifos.
- Exiba o texto usando um objeto gráfico para desenhar os contornos de cada glifo. Isso pode ser feito usando o método DrawPath() do objeto gráfico.
Código C++ para renderizar texto
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;
}
Perguntas frequentes
1. Como a fonte é renderizada via Aspose.Font?
Para renderizar fontes usando esta solução de API, você precisará das entidades de Aspose.Font.Rendering e Aspose.Font.Renderers namespaces. Primeiro, implemente os métodos IGlyphOutlinePainter. Em seguida, crie o método DrawText(). Crie o método utilitário para calcular a largura da fonte e chame a funcionalidade de renderização de texto.
2. A quais fatores você deve prestar atenção ao renderizar texto com glifos?
Ao renderizar texto com glifos, há vários fatores importantes a serem considerados para garantir resultados precisos e visualmente atraentes, como seleção de fonte, dicas, kerning e rastreamento, métricas de glifo, cor e contraste, etc.
3. O que é sugestão de fonte?
As dicas podem ajudar a manter a clareza e a legibilidade do texto, principalmente em tamanhos menores ou em telas de baixa resolução.