Шрифты — это набор печатаемых или отображаемых символов с различными стилями, насыщенностью и т. д. Они используются для придания документам или веб-страницам различного вида и восприятия в зависимости от различных требований. Файлы шрифтов содержат дизайн и другую информацию о шрифте. В этой статье мы будем использовать файлы шрифтов, чтобы определить, поддерживает ли шрифт латинские символы или нет программно с Java.

Java API для обнаружения латинских символов в шрифтах TrueType и Type1

Aspose.Font for Java — библиотека для работы со шрифтами, такими как TrueType, CFF, Type1 и т. д. API поддерживает загрузку, сохранение и извлечение информации о шрифтах. API также позволяет определить поддержку латинских символов в шрифтах. Вы можете загрузить API с помощью Maven или загрузить 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>

Обнаружение латинских символов в шрифтах TrueType с использованием Java

Ниже приведены шаги, чтобы определить, поддерживает ли конкретный шрифт TrueType латинские символы или нет.

  • Создайте экземпляр класса FontDefinition, используя файл шрифта.
  • Создайте экземпляр класса TtfFont, используя объект FontDefinition, созданный на предыдущем шаге.
  • Переберите различные коды и расшифруйте их в идентификаторы глифов.
  • Проверьте идентификаторы глифов на предмет поддержки латинских символов.

В следующем примере кода показано, как определить, поддерживает ли конкретный шрифт 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()));
}

Обнаружение латинских символов в шрифтах Type1 с использованием Java

Процесс определения поддержки латинских символов в шрифтах Type1 аналогичен шрифтам TrueType. Единственное отличие состоит в том, что мы будем использовать класс Type1Font для доступа к информации о шрифте. Ниже приведены шаги для обнаружения поддержки латинских символов в шрифтах Type1.

  • Создайте экземпляр класса FontDefinition, используя файл шрифта.
  • Создайте экземпляр класса Type1Font, используя объект FontDefinition, созданный на предыдущем шаге.
  • Переберите различные коды и расшифруйте их в идентификаторы глифов.
  • Проверьте идентификаторы глифов на предмет поддержки латинских символов.

В следующем примере кода показано, как определить, поддерживает ли конкретный шрифт 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 для Java предоставляет множество дополнительных функций для работы со шрифтами, которые вы можете подробно изучить, посетив официальную документацию. Если у вас возникнут вопросы, обращайтесь к нам на бесплатный форум поддержки.

Смотрите также