字體是一組具有不同樣式、粗細等的可打印或可顯示的字符,用於根據不同的要求為文檔或網頁添加不同的外觀和感覺。字體文件包含有關字體的設計和其他信息。在本文中,我們將使用字體文件通過 Java 以編程方式檢測字體是否支持拉丁符號。

用於檢測 TrueType 和 Type1 字體中的拉丁符號的 Java API

Aspose.Font for Java 是一個用於處理 TrueTypeCFFType1 等字體的庫。API 支持加載、保存和提取有關字體的信息。 API 還允許您檢測字體中對拉丁符號的支持。您可以使用 Maven 下載 API 或從 下載 部分下載 JAR。

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-font</artifactId>
    <version>21.4</version>
</dependency>

使用 Java 檢測 TrueType 字體中的拉丁符號

以下是檢測特定 TrueType 字體是否支持拉丁符號的步驟。

  • 使用字體文件創建 FontDefinition 類的實例。
  • 使用在上一步中創建的 FontDefinition 對象創建 TtfFont 類的實例。
  • 遍歷不同的代碼並將它們解碼為字形 ID。
  • 檢查字形 ID 以了解對拉丁符號的支持。

以下示例代碼顯示如何檢測特定 TrueType 字體是否支持拉丁符號。

// 字體文件路徑
String fileName = Utils.getDataDir() + "Montserrat-Regular.ttf"; //Font file name with full path

// 加載字體文件
FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont ttfFont = (TtfFont) Font.open(fd);

boolean latinText = true;

// 檢查是否支持拉丁符號
for (int code = 65; code < 123; code++)
{
    GlyphId gid = ttfFont.getEncoding().decodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.getNotDef())
    {
        latinText = false;
    }
}

if (latinText)
{
    System.out.println(MessageFormat.format("Font {0} supports latin symbols.", ttfFont.getFontName()));
}
else
{
    System.out.println(MessageFormat.format("Latin symbols are not supported by font {0}.", ttfFont.getFontName()));
}

使用 Java 檢測 Type1 字體中的拉丁符號

在 Type1 字體中檢測對拉丁符號的支持的過程類似於 TrueType 字體。唯一的區別是我們將使用 Type1Font 類來訪問字體信息。以下是檢測 Type1 字體是否支持拉丁符號的步驟。

  • 使用字體文件創建 FontDefinition 類的實例。
  • 使用在上一步中創建的 FontDefinition 對象創建 Type1Font 類的實例。
  • 遍歷不同的代碼並將它們解碼為字形 ID。
  • 檢查字形 ID 以了解對拉丁符號的支持。

以下示例代碼顯示如何檢測特定 Type1 字體是否支持拉丁符號。

// 字體文件路徑
String fileName = Utils.getDataDir() + "courier.pfb"; //Font file name with full path

// 加載字體文件
FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = (Type1Font) Font.open(fd);

boolean latinText = true;

// 檢查是否支持拉丁符號
for (int code = 65; code < 123; code++)
{
    GlyphId gid = font.getEncoding().decodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.getNotDef())
    {
        latinText = false;
    }
}

if (latinText)
{
    System.out.println(MessageFormat.format("Font {0} supports latin symbols.", font.getFontName()));
}
else
{
    System.out.println(MessageFormat.format("Latin symbols are not supported by font {0}.", font.getFontName()));
}

獲得免費許可證

為了在沒有評估限制的情況下試用 API,您可以申請免費的臨時許可證

結論

在本文中,您學習瞭如何使用 Java 檢測字體中對拉丁符號的支持。共享代碼示例使您能夠檢測特定字體是否支持拉丁符號。 Aspose.Font for Java 提供了許多用於處理字體的附加功能,您可以通過訪問官方文檔 詳細了解這些功能。如有任何疑問,請隨時通過我們的免費支持論壇與我們聯繫。

也可以看看