Чтение информации о глифах и метриках

Решение .NET API для расчета ширины строки, вычисления координат глифов и других манипуляций с глифами.

 

Aspose.Font API Solution имеет богатый функционал для работы со шрифтами. Преобразование, манипуляции с глифами, обнаружение латинских символов и многое другое. Некоторые функции связаны с манипуляциями с глифами.

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

На этой странице описывается возможность чтения информации о глифах и метриках, но вся функциональность подробно описана в Статье Использование объектов глифов . Там вы найдете гораздо больше примеров кода C# и узнаете о возможностях Aspose.Font для работы с глифами и объектами Glyph в частности. Дополнительные примеры кода использования Aspose.Font для управления глифами хранятся в Aspose.Font.Examples.sln .

Для работы с глифами нам понадобится:

  • Aspose.Font for .NET API — многофункциональный, мощный и простой в использовании API для работы с документами и преобразования для платформы C#.

  • Откройте диспетчер пакетов NuGet, найдите Aspose.Font и установите его. Вы также можете использовать следующую команду из консоли диспетчера пакетов.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Шаги для вычисления ширины строки с помощью С#:

  1. Объявите текст и другие константы. Здесь в качестве примера используется фраза «Hello world».
  2. Объявите переменную для ширины строки.
  3. Получите глиф для каждой буквы в тексте, используя класс GlyphId . Рассчитайте ширину всего текста.
  4. Тот же результат может быть достигнут с помощью Mетода MeasureString() .
  5. Распечатайте результаты вывода.

Код С# для определения ширины строки

    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));

Шаги для вычисления всех точек глифов с координатами с помощью C#:

  1. Объявите полученный список с помощью points .
  2. Укажите ссылку на службу Init на интерфейсе IPathSegment .
  3. Повторите все сегменты пути глифа и просуммируйте точки.

Код С# для определения точек глифов

    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);
    }



Часто задаваемые вопросы

1. Что такое метрика глифа?

Метрики глифа — это параметры, влияющие на расположение глифа при создании макета текста.

2. Что такое мертики глифов?

Наиболее часто используемые метрики глифов — это ширина продвижения, начало координат, боковые азимуты, базовая линия, восхождение, восхождение, спуск, спуск, ограничительная рамка, высота, ширина и кернинг.

3. Как управлять глифами с помощью этого API-решения?

Чтобы кодировать глифы на C#, используйте сущности пространства имен Aspose.Font.Glyphs .

4. Что такое глиф?

Глиф — это один индивидуально разработанный символ шрифта. Его также можно определить как графическое представление символа/знака.