Ler informações de Glifos e Métricas

.NET API Solução para calcular largura de string, calcular coordenadas de glifos e outras manipulações com glifos.

 

Aspose.Font API Solution tem uma funcionalidade rica para trabalhar com fontes. Conversão, manipulações com glifos, detecção de símbolos latinos e muito mais. Alguns dos recursos estão ligados a manipulações com glifos.

Glifo é um caractere projetado individualmente de um tipo de letra, ou é uma representação gráfica de um símbolo/caractere. Para saber mais sobre essa unidade de fonte, leia o artigo Introdução ao Glyph .

Esta página descreve a opção de como ler as informações de Glifos e Métricas, mas toda a funcionalidade é cuidadosamente descrita em Usando objetos Glyph artigo. Lá você encontrará muito mais exemplos de código C# e aprenderá a funcionalidade do Aspose.Font para trabalhar com glifos e os objetos Glyph em particular. Mais exemplos de código do uso do Aspose.Font para manipular Glyphs são armazenados em Aspose.Font.Examples.sln .

Para trabalhar com glifos, precisamos:

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

  • Abra o gerenciador de pacotes NuGet e procure por Aspose.Font e instale. Você também pode usar o seguinte comando do Console do Gerenciador de Pacotes.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Etapas para calcular a largura da string usando C#:

  1. Declare o texto e outras constantes. Aqui, como exemplo, a frase «Hello world» é usada.
  2. Declare uma variável para a largura da string.
  3. Obtenha um glifo para cada letra no texto usando a classe GlyphId . Calcule a largura de todo o texto.
  4. O mesmo resultado pode ser obtido usando o método MeasureString() .
  5. Imprima os resultados de saída.

Código C# para descobrir a largura da string

    using System;
    using System.IO;
    using System.Drawing;
    using System.Collections.Generic;
    using Aspose.Font.Sources;
    using Aspose.Font.Glyphs;
    using Aspose.Font.RenderingPath;
    //Declare the text and other constants
    const string text = "Hello world";
    const int fontSize = 10;

    //Declare a variable for string width
    double width = 0;

    //Get a glyph for each letter in text and calculate width for whole text.
    //The same result can be achieved using the method font.Metrics.MeasureString(text, fontSize).
    foreach (char symbol in text)
    {
        GlyphId gid = this._font.Encoding.DecodeToGid(symbol);
        Glyph glyph = this._font.GetGlyphById(gid);
        width += (glyph.WidthVectorX / this._font.Metrics.UnitsPerEM) * fontSize;
    }            

    //Print output results
    Console.WriteLine(string.Format("Width for text \"{0}\" with font size {2} is equal {3}." , 
        text, FontName, fontSize, width));

Etapas para calcular todos os pontos de glifo com coordenadas usando C#:

  1. Declare a lista resultante com pontos .
  2. Especifique a referência do serviço de inicialização na interface IPathSegment .
  3. Itere todos os segmentos de caminho de glifo e some os pontos.

Código C# para descobrir pontos de glifo

    Glyph glyph;

    //Declare the resultant list with points
    List<Point> points = new List<Point>();

    //Init service reference on IPathSegment
    IPathSegment prevSegment = null;

    //Iterate all the glyph path segments and collect points
    foreach (IPathSegment segment in glyph.Path.Segments)
    {
        if ((segment is LineTo)
            || (segment is CurveTo))
        {
            if (prevSegment is MoveTo)
            {
                MoveTo moveTo = prevSegment as MoveTo;
                AddPoint((int)moveTo.X, (int)moveTo.Y, points);
            }
            if (segment is LineTo)
            {
                LineTo line = segment as LineTo;
                AddPoint((int)line.X, (int)line.Y, points);
            }
            else if (segment is CurveTo)
            {
                CurveTo curve = segment as CurveTo;
                AddPoint((int)curve.X1, (int)curve.Y1, points);
                AddPoint((int)curve.X2, (int)curve.Y2, points);
                AddPoint((int)curve.X3, (int)curve.Y3, points);
            }
        }
        prevSegment = segment;
    }	

    void AddPoint(int x, int y, List<Point> points)
    {
        Point p = new Point();
        p.X = x;
        p.Y = y;
        points.Add(p);
    }



Perguntas frequentes

1. O que é uma métrica de glifo?

Métricas de glifo são os parâmetros que influenciam como o glifo é posicionado quando o layout de texto é criado.

2. O que são métricas de glifos?

As métricas de glifo mais usadas são largura de avanço, origem, rolamentos laterais, linha de base, subida, subida, descida, descida, caixa delimitadora, altura, largura e kerning.

3. Como gerenciar glifos com esta solução de API?

Para codificar glifos em C#, use as entidades do namespace Aspose.Font.Glyphs .

4. O que é um glifo?

Glyph é um caractere projetado individualmente de um tipo de letra. Também pode ser definido como uma representação gráfica de um símbolo/caractere.