Renderizar texto usando glifos

Solução API C++. para exibir texto com a fonte desejada.

 

A solução API Aspose.Font oferece recursos ricos para trabalhar com fontes, incluindo conversão, manipulação de glifos, detecção de símbolos latinos e muito mais. Algumas das funcionalidades estão relacionadas à manipulação de glifos, como a renderização de texto.

Um glifo é um design único de um carácter numa tipografia ou uma representação gráfica de um símbolo ou carácter. Para obter uma compreensão mais profunda desta unidade tipográfica, leia o artigo Introduction to Glyph .

Esta página explica como exibir texto usando glifos, mas uma explicação abrangente da funcionalidade é fornecida no artigo Using Glyph objects . Lá, encontrará mais exemplos de código C++ e aprenderá sobre as capacidades da Aspose.Font para trabalhar com glifos e objetos Glyph especificamente. Também pode aprender exemplos completos e arquivos de dados no Aspose Github Project .

Para escrever textos com glifos precisamos:

  • Aspose.Font para C++ API, que é uma API rica em recursos, poderosa e fácil de usar para manipulação e conversão de documentos.

  • Abra o gestor de pacotes NuGet, procure por Aspose.Font e instale. Também pode usar o seguinte comando no Console do Gestor de Pacotes.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Renderizar texto com glifos usando C++

Os passos seguintes são normalmente necessários para renderizar texto com os glifos:

  1. Carregue o ficheiro de fonte na memória. Aqui precisa de criar um objeto de fonte, como um objeto Type1Font, e passar o caminho do ficheiro de fonte.
  2. Decodifique o texto nos respetivos IDs de glifos correspondentes. Para isso, passe cada carácter do texto através do objeto de codificação da fonte e decodifique-o para o ID de glifo correspondente.
  3. Obtenha o contorno de cada glifo. O contorno é um caminho que define a forma do carácter. Isto pode ser conseguido usando o método GetGlyphOutline() do objeto Font .
  4. 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.
  5. Exiba o texto usando um objeto gráfico para desenhar os contornos de cada glifo. Isto 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.