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