在 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 字體是否支持拉丁符號。此外,您可以使用文檔了解更多關於 Aspose.Font for .NET API 的信息。如有任何歧義,請隨時在論壇上與我們聯繫。

也可以看看