Извлечение лицензионных ограничений шрифтов TrueType и OpenType с помощью Java
При работе с цифровыми шрифтами в программных приложениях, системах генерации документов или веб-платформах крайне важно соблюдать лицензионные ограничения шрифтов. Поставщики шрифтов встраивают правила лицензирования и использования непосредственно в файлы шрифтов, чтобы определить, каким образом шрифты можно встраивать, устанавливать или изменять. С помощью Aspose.Font for Java разработчики могут проверять метрики встроенной таблицы OS/2 и программно извлекать лицензионные ограничения из файлов шрифтов TrueType (.ttf) и OpenType (.otf).
Понимание режимов лицензирования шрифтов
Спецификации шрифтов TrueType и OpenType хранят разрешения на встраивание во флаге fsType таблицы OS/2 шрифта. Aspose.Font for Java классифицирует эти встроенные лицензионные ограничения на отдельные режимы с помощью класса LicenseFlags:
- Встраивание с возможностью установки: Шрифт можно встраивать и устанавливать на постоянной основе в удаленных системах или для использования другими пользователями.
- Встраивание с возможностью редактирования: Шрифт можно встраивать и временно загружать в другие системы. Редактирование разрешено, включая форматирование нового текста с использованием встроенного шрифта, а изменения можно сохранять.
- Встраивание для предварительного просмотра и печати: Шрифт можно встраивать и временно загружать в другие системы исключительно для просмотра или печати документа.
- Встраивание с ограниченной лицензией: Шрифт нельзя изменять, встраивать или передавать каким-либо образом без предварительного получения явного разрешения от законного владельца.
Извлечение лицензионных ограничений TTF в Java
Чтобы прочитать лицензионные разрешения с помощью Aspose.Font for Java:
- Загрузите файл шрифта с помощью
FontFileDefinitionиFontDefinition, указавFontType.TTF. - Получите таблицу
OS/2из коллекции таблиц шрифта (getTtfTables().getOs2Table()). - Получите флаги лицензии с помощью
getLicenseFlags(). - Оцените права на встраивание с помощью вспомогательных методов, таких как
isEditableEmbedding(),isInstallableEmbedding(),isPreviewAndPrintEmbedding()илиisRestrictedLicenseEmbedding().
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 font = (TtfFont) Font.open(fd);
LicenseFlags licenseFlags = null;
if (font.getTtfTables().getOs2Table() != null)
{
licenseFlags = font.getTtfTables().getOs2Table().getLicenseFlags();
}
if (licenseFlags == null || licenseFlags.isFSTypeAbsent())
{
System.out.println(MessageFormat.format("Font {0} has no embedded license restrictions", font.getFontName()));
}
else
{
if (licenseFlags.isEditableEmbedding())
{
System.out.println(MessageFormat.format("Font {0} may be embedded, and may be temporarily loaded on other systems."
+ " In addition, editing is permitted, including ability to format new text"
+ " using the embedded font, and changes may be saved.", font.getFontName()));
}
else if (licenseFlags.isInstallableEmbedding())
{
System.out.println(MessageFormat.format("Font {0} may be embedded, and may be permanently installed"
+ " for use on a remote systems, or for use by other users.", font.getFontName()));
}
else if (licenseFlags.isPreviewAndPrintEmbedding())
{
System.out.println(MessageFormat.format("Font {0} may be embedded, and may be temporarily loaded"
+ " on other systems for purposes of viewing or printing the document.", font.getFontName()));
}
else if (licenseFlags.isRestrictedLicenseEmbedding())
{
System.out.println(MessageFormat.format("Font {0} must not be modified, embedded or exchanged in any manner"
+ " without first obtaining explicit permission of the legal owner.", font.getFontName()));
}
}Установка и настройка
Добавьте Aspose.Font for Java в свой проект с помощью Maven.
Package Manager Console Command
<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>Latest</version>
</dependency>
FAQ
1. Поддерживают ли шрифты Type1 извлечение лицензионных ограничений с помощью LicenseFlags?
Нет. Стандартные форматы шрифтов Type1 (.pfb/.pfa) не содержат таблицу OS/2. Флаг fsType и структура таблицы OS/2 характерны для форматов шрифтов TrueType (.ttf) и OpenType (.otf).
2. Что означает, если licenseFlags.isFSTypeAbsent() возвращает true?
Если isFSTypeAbsent() возвращает true (или если licenseFlags имеет значение null), это означает, что в таблице OS/2 файла шрифта отсутствуют встроенные флаги лицензионных ограничений.
3. Как проверить, разрешает ли шрифт редактирование содержимого документа?
Вы можете проверить licenseFlags.isEditableEmbedding(). Если значение равно true, шрифт разрешает временную загрузку и редактирование, позволяя пользователям форматировать новый текст с помощью встроенного шрифта и сохранять изменения.