อ่านข้อมูลร่ายมนตร์และเมตริก
โซลูชัน .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#:
- ประกาศข้อความและค่าคงที่อื่นๆ นี่เป็นตัวอย่างวลี ‘สวัสดีชาวโลก’ ที่ใช้
- ประกาศตัวแปรสำหรับความกว้างของสตริง
- รับสัญลักษณ์สำหรับตัวอักษรแต่ละตัวในข้อความโดยใช้คลาส GlyphId คำนวณความกว้างของข้อความทั้งหมด
- ผลลัพธ์เดียวกันนี้สามารถทำได้โดยใช้เมธอด MeasureString()
- พิมพ์ผลลัพธ์ที่ได้
รหัส 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#:
- ประกาศรายชื่อผลลัพธ์ด้วย points
- ระบุการอ้างอิงบริการ Init บนอินเทอร์เฟซ IPathSegment
- วนซ้ำทุกส่วนของเส้นทางสัญลักษณ์และสรุปคะแนน
รหัส 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 เป็นตัวอักษรที่ออกแบบเฉพาะตัวของแบบอักษร นอกจากนี้ยังสามารถกำหนดเป็นการแสดงกราฟิกของสัญลักษณ์/อักขระ