字體是一組具有不同樣式、粗細等的可打印或可顯示的字符,用於根據不同的要求為文檔或網頁添加不同的外觀和感覺。字體文件包含有關字體的設計和其他信息。在本文中,我們將使用字體文件通過 Java 以編程方式檢測字體是否支持拉丁符號。
用於檢測 TrueType 和 Type1 字體中的拉丁符號的 Java API
Aspose.Font for Java 是一個用於處理 TrueType、CFF、Type1 等字體的庫。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 提供了許多用於處理字體的附加功能,您可以通過訪問官方文檔 詳細了解這些功能。如有任何疑問,請隨時通過我們的免費支持論壇與我們聯繫。