检查 C# 中 TrueType 或 Type1 字体的拉丁符号支持

拉丁字符符号是标记、符号或单词形式的字符。字体定义字符/符号应如何以数字方式显示或使用一组属性以可打印的形式显示。字体文件包含有关字体的设计和其他信息。在某些情况下,我们可能需要检查任何特定字体是否支持拉丁符号。在本文中,我们将学习如何在 C# 中检查拉丁符号对 TrueType 或 Type1 字体的支持。

本文将涵盖以下主题:

  1. 检测字体中拉丁符号支持的 C# API
  2. 使用 C# 检测 TrueType 字体中的拉丁符号
  3. 使用C#检测Type1字体中的拉丁符号

C# API 检测字体中的拉丁符号支持

为了检测字体中的拉丁符号支持,我们将使用 Aspose.Font for .NET API。它允许从 支持的字体类型 加载、保存和提取信息。请下载 API 的 DLL 或使用 NuGet 安装它。

PM> Install-Package Aspose.Font

使用 C# 检测 TrueType 字体中的拉丁符号

我们可以按照以下步骤检测 TrueType 字体中的拉丁符号:

  1. 首先,使用 FontFileDefinition 类加载字体文件。
  2. 接下来,使用 FontType (TTF) 和 FontFileDefinition 对象作为参数初始化 FontDefinition 类对象。
  3. 然后,以 FontDefinition 对象为参数调用 Font.Open() 方法并初始化 TtfFont 类对象。
  4. 之后,遍历不同的代码并将它们解码为 Glyph ID。
  5. 最后,检查字形 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 字体中的拉丁符号:

  1. 首先,使用 FontFileDefinition 类加载字体文件。
  2. 接下来,使用 FontType (Type1) 和 FontFileDefinition 对象作为参数初始化 FontDefinition 类对象。
  3. 然后,以 FontDefinition 对象为参数调用 Font.Open() 方法并初始化 Type1Font 类对象。
  4. 之后,遍历不同的代码并将它们解码为 Glyph ID。
  5. 最后,检查字形 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 的信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看