Читайте інформацію про гліфи та їх метрики

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

 

API Рішення Aspose.Font має широкий набор функціональностей для роботи зі шрифтами. Конвертація, маніпуляції з гліфами, виявлення латинських символів і багато іншого. Деякі операції пов’язані з маніпуляціями з гліфами.

Гліф — це один індивідуально розроблений символ гарнітури або графічне зображення символу. Щоб дізнатися більше про цю одиницю шрифту, прочитайте статтю Вступ до гліфа .

На цій сторінці описано, як читати інформацію про гліфи та метрики, але вся функціональність докладно описана в статті Використання об’єктів гліфів . Там ви знайдете набагато більше прикладів коду C# та дізнаєтесь про функціональність Aspose.Font для роботи з гліфами та об’єктами Glyph зокрема. Інші приклади коду використання Aspose.Font для роботи з гліфами зберігаються в Aspose.Font.Examples.sln .

Для роботи з гліфами нам знадобляться:

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

  • Відкрити менеджер пакунків NuGet і знайти і встановити Aspose.Font. Ви також можете використати наступну команду з консолі менеджера пакетів.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Покрокова інструкція для обчислення ширини рядка за допомогою C#:

  1. Оголошення тексту та інших констант. Тут як приклад використовується фраза «Hello world».
  2. Оголошення змінної для ширини рядка.
  3. Отримайте гліф для кожної літери в тексті за допомогою класу GlyphId . Обчисліть ширину всього тексту.
  4. Такого ж результату можна досягти за допомогою методу MeasureString() .
  5. Виведіть на екран результати.

C# Код для визначення ширини рядка

    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. Повторіть усі сегменти шляху гліфа та підсумуйте бали.

Код C# для пошуку точок гліфів

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



FAQ

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

Метрики гліфа – це параметри, які впливають на розташування гліфа під час створення макета тексту.

2. Наведіть приклади метрик гліфів.

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

3. Як керувати гліфами за допомогою цього рішення API?

Щоб кодувати гліфи в C#, використовуйте сутності простору імен Aspose.Font.Glyphs .

4. Що таке гліф?

Гліф — це один індивідуально розроблений символ гарнітури. Його також можна визначити як графічне представлення символу/символу.