读取字体信息
.NET API 解决方案,用于获取字体信息和指标。
Aspose.Font API 解决方案具有丰富的字体处理功能。转换、字形操作、拉丁符号检测等等。某些功能与使用字形的操作相关联,例如获取有关字体中存在的字形的信息。
字形是字体的单独设计的字符或符号/字符的图形表示。要了解有关此字体单元的更多信息,请阅读 Glyph 简介 文章。
此页面描述了如何获取不同字体指标的选项(字形计数、字母高度、字形“A”的宽度等),但整个功能在 使用字形对象 文章。此示例还包括获取字体元数据的部分代码,具体来说是字体名称。此类功能可以在 Web 软件中实现,例如 Aspose 在其生态系统中的 Font Metadata 应用程序。
要接收字体指标,我们需要:
Aspose.Font for .NET API 是一个功能丰富、功能强大且易于使用的 C# 平台文档操作和转换 API。
打开 NuGet 包管理器,搜索 Aspose.Font 并安装。您也可以从包管理器控制台使用以下命令。
Package Manager Console Command
PM> Install-Package Aspose.Font
使用 C# 获取字体度量的步骤:
- 指定要从中提取信息的字体。
- 使用接口 Aspose.Font.IFontMetrics 来获取指定的指标。
- 从作为对象的字体中获取 cmap Unicode 编码表 TtfCMapFormatBaseTable 以访问有关所需字体字形的信息。
- 要获取“A”符号的字形索引,请使用 GetGlyphIndex() 方法。
- 获取打印的字形指标。
获取有关字体字形信息的 C# 代码
using Aspose.Font;
using Aspose.Font.Glyphs;
using Aspose.Font.Ttf;
//Font to extract info from
TtfFont font;
string name = font.FontName;
Console.WriteLine("Font name: " + name);
Console.WriteLine("Glyph count: " + font.NumGlyphs);
string metrics = string.Format(
"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
font.Metrics.Ascender, font.Metrics.Descender,
font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);
Console.WriteLine(metrics);
//Get the cmap unicode encoding table from the font as an object TtfCMapFormatBaseTable to access information about the font glyph for symbol 'A'.
//Also check that font has the object TtfGlyfTable (table 'glyf') to access glyph.
Aspose.Font.TtfCMapFormats.TtfCMapFormatBaseTable cmapTable = null;
if (font.TtfTables.CMapTable != null)
{
cmapTable = font.TtfTables.CMapTable.FindUnicodeTable();
}
if (cmapTable != null && font.TtfTables.GlyfTable != null)
{
Console.WriteLine("Font cmap unicode table: PlatformID = " + cmapTable.PlatformId + ", PlatformSpecificID = " + cmapTable.PlatformSpecificId);
//Code for 'A' symbol
char unicode = (char)65;
//Glyph index for 'A'
uint glIndex = cmapTable.GetGlyphIndex(unicode);
if (glIndex != 0)
{
//Glyph for 'A'
Glyph glyph = font.GetGlyphById(glIndex);
if (glyph != null)
{
//Print glyph metrics
Console.WriteLine("Glyph metrics for 'A' symbol:");
string bbox = string.Format(
"Glyph BBox: Xmin = {0}, Xmax = {1}" + ", Ymin = {2}, Ymax = {3}",
glyph.GlyphBBox.XMin, glyph.GlyphBBox.XMax,
glyph.GlyphBBox.YMin, glyph.GlyphBBox.YMax);
Console.WriteLine(bbox);
Console.WriteLine("Width:" + font.Metrics.GetGlyphWidth(new GlyphUInt32Id(glIndex)));
}
}
}