อ่านข้อมูลร่ายมนตร์และเมตริก

โซลูชัน .NET API เพื่อคำนวณความกว้างของสตริง คำนวณพิกัดสัญลักษณ์ และการปรับแต่งอื่นๆ ด้วยร่ายมนตร์

 

โซลูชัน Aspose.Font API มีฟังก์ชันการทำงานที่หลากหลายเพื่อทำงานกับแบบอักษร การแปลง การปรับแต่งด้วยร่ายมนตร์ การตรวจจับสัญลักษณ์ละติน และอื่นๆ อีกมากมาย คุณลักษณะบางอย่างเชื่อมโยงกับการปรับแต่งด้วยร่ายมนตร์

Glyph เป็นอักขระที่ออกแบบเฉพาะตัวของแบบอักษร หรือเป็นการแสดงกราฟิกของสัญลักษณ์/อักขระ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับหน่วยฟอนต์นี้ โปรดอ่านบทความ Introduction to Glyph

หน้านี้อธิบายตัวเลือกเกี่ยวกับวิธีการอ่านข้อมูล Glyphs และ Metrics แต่มีการอธิบายการทำงานทั้งหมดอย่างละเอียดใน Using Glyph object บทความ คุณจะพบตัวอย่างโค้ด C# เพิ่มเติม และเรียนรู้การทำงานของ Aspose.Font สำหรับการทำงานกับร่ายมนตร์และอ็อบเจกต์ Glyph โดยเฉพาะ ตัวอย่างโค้ดเพิ่มเติมของการใช้ Aspose.Font เพื่อจัดการ Glyphs จะถูกเก็บไว้ใน Aspose.Font.Examples.sln โซลูชัน

ในการทำงานกับร่ายมนตร์เราต้องการ:

  • Aspose.Font สำหรับ .NET API ซึ่งเป็น API การจัดการและการแปลงเอกสารที่มีคุณลักษณะหลากหลาย มีประสิทธิภาพ และใช้งานง่ายสำหรับแพลตฟอร์ม C#

  • เปิดตัวจัดการแพ็คเกจ NuGet และค้นหา Aspose.Font และติดตั้ง คุณสามารถใช้คำสั่งต่อไปนี้จาก Package Manager Console

Package Manager Console Command


    PM> Install-Package Aspose.Font

ขั้นตอนในการคำนวณความกว้างของสตริงโดยใช้ C#:

  1. ประกาศข้อความและค่าคงที่อื่นๆ นี่เป็นตัวอย่างวลี ‘สวัสดีชาวโลก’ ที่ใช้
  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);
    }



คำถามที่พบบ่อย

1. ตัวชี้วัดสัญลักษณ์คืออะไร?

เมตริกสัญลักษณ์ คือพารามิเตอร์ที่มีผลต่อการวางตำแหน่งสัญลักษณ์เมื่อสร้างเค้าโครงข้อความ

2. ตัวชี้วัดสัญลักษณ์คืออะไร?

ตัวชี้วัดสัญลักษณ์ที่ใช้มากที่สุด ได้แก่ ความกว้างล่วงหน้า จุดกำเนิด ทิศทางด้านข้าง เส้นฐาน ขึ้น ขึ้น ลง ลง ลงล่าง กล่องขอบ ความสูง ความกว้าง และการจัดช่องไฟ

3. วิธีจัดการ Glyphs ด้วยโซลูชัน API นี้

หากต้องการโค้ดสัญลักษณ์ใน C# ให้ใช้เอนทิตีของเนมสเปซ Aspose.Font.Glyphs

4. ร่ายมนตร์คืออะไร?

Glyph เป็นตัวอักษรที่ออกแบบเฉพาะตัวของแบบอักษร นอกจากนี้ยังสามารถกำหนดเป็นการแสดงกราฟิกของสัญลักษณ์/อักขระ