拉丁字符符号是标记、符号或单词形式的字符。字体定义字符/符号应如何以数字方式显示或使用一组属性以可打印的形式显示。字体文件包含有关字体的设计和其他信息。在某些情况下,我们可能需要检查任何特定字体是否支持拉丁符号。在本文中,我们将学习如何在 C# 中检查拉丁符号对 TrueType 或 Type1 字体的支持。
本文将涵盖以下主题:
C# API 检测字体中的拉丁符号支持
为了检测字体中的拉丁符号支持,我们将使用 Aspose.Font for .NET API。它允许从 支持的字体类型 加载、保存和提取信息。请下载 API 的 DLL 或使用 NuGet 安装它。
PM> Install-Package Aspose.Font
使用 C# 检测 TrueType 字体中的拉丁符号
我们可以按照以下步骤检测 TrueType 字体中的拉丁符号:
- 首先,使用 FontFileDefinition 类加载字体文件。
- 接下来,使用 FontType (TTF) 和 FontFileDefinition 对象作为参数初始化 FontDefinition 类对象。
- 然后,以 FontDefinition 对象为参数调用 Font.Open() 方法并初始化 TtfFont 类对象。
- 之后,遍历不同的代码并将它们解码为 Glyph ID。
- 最后,检查字形 ID 是否支持拉丁符号。
以下代码示例显示如何在 C# 中检测特定 TrueType 字体是否支持拉丁符号。
// 此代码示例演示如何检测特定 TrueType 字体是否支持拉丁符号。
// TTF 文件路径
string fontPath = @"D:\Files\font\Montserrat-Regular.ttf";
// 加载字体文件
FontFileDefinition fontFileDefinition = new FontFileDefinition("ttf", new FileSystemStreamSource(fontPath));
// 字体定义对象
FontDefinition fd = new FontDefinition(FontType.TTF, fontFileDefinition);
// 打开字体
TtfFont font = (TtfFont)Font.Open(fd);
var latinText = true;
// 检查是否支持拉丁符号
for (uint code = 65; code < 123; code++)
{
GlyphId gid = font.Encoding.DecodeToGid(code);
if (gid == null || gid == GlyphUInt32Id.NotDefId)
{
latinText = false;
}
}
if (latinText)
{
Console.WriteLine("Font {0} supports latin symbols.", font.FontName);
}
else
{
Console.WriteLine("Latin symbols are not supported by font {0}.", font.FontName);
}
使用 C# 检测 Type1 字体中的拉丁符号
我们还可以按照以下步骤检测 Type1 字体中的拉丁符号:
- 首先,使用 FontFileDefinition 类加载字体文件。
- 接下来,使用 FontType (Type1) 和 FontFileDefinition 对象作为参数初始化 FontDefinition 类对象。
- 然后,以 FontDefinition 对象为参数调用 Font.Open() 方法并初始化 Type1Font 类对象。
- 之后,遍历不同的代码并将它们解码为 Glyph ID。
- 最后,检查字形 ID 是否支持拉丁符号。
以下代码示例展示了如何在 C# 中检测特定 Type1 字体是否支持拉丁符号。
// 此代码示例演示如何检测特定 Type1 字体是否支持拉丁符号。
// Type1字体文件路径
string fontPath = @"D:\Files\font\courier.pfb";
// 加载字体文件
FontFileDefinition fontFileDefinition = new FontFileDefinition("pfb", new FileSystemStreamSource(fontPath));
// 字体定义对象
FontDefinition fd = new FontDefinition(FontType.Type1, fontFileDefinition);
// 打开字体
Type1Font font = (Type1Font)Font.Open(fd);
var latinText = true;
// 检查是否支持拉丁符号
for (uint code = 65; code < 123; code++)
{
GlyphId gid = font.Encoding.DecodeToGid(code);
if (gid == null || gid == GlyphUInt32Id.NotDefId)
{
latinText = false;
}
}
if (latinText)
{
Console.WriteLine("Font {0} supports latin symbols.", font.FontName);
}
else
{
Console.WriteLine("Latin symbols are not supported by font {0}.", font.FontName);
}
获得免费许可证
您可以获得免费的临时许可证 试用该库而不受评估限制。
结论
在本文中,我们学习了如何在 C# 中确定任何特定的 TrueType 或 Type1 字体是否支持拉丁符号。此外,您可以使用 documentation 了解更多关于 Aspose.Font for .NET API 的信息。如有任何歧义,请随时在 论坛 上与我们联系。