Extraire les restrictions de licence des polices TrueType et OpenType avec Java
Lors de l’utilisation de polices numériques dans des applications logicielles, des moteurs de génération de documents ou des plateformes web, il est essentiel de respecter les restrictions de licence des polices. Les fournisseurs de polices intègrent directement les règles de licence et d’utilisation dans les fichiers de police afin de définir comment les polices peuvent être incorporées, installées ou modifiées. Avec Aspose.Font for Java, les développeurs peuvent examiner les métriques intégrées de la table OS/2 et extraire par programmation les restrictions de licence des fichiers de polices TrueType (.ttf) et OpenType (.otf).
Comprendre les modes de licence des polices
Les spécifications des polices TrueType et OpenType stockent les autorisations d’incorporation dans l’indicateur fsType de la table OS/2 de la police. Aspose.Font for Java classe ces restrictions de licence intégrées en différents modes à l’aide de la classe LicenseFlags :
- Incorporation installable : La police peut être incorporée et installée de manière permanente sur des systèmes distants ou être utilisée par d’autres utilisateurs.
- Incorporation modifiable : La police peut être incorporée et chargée temporairement sur d’autres systèmes. La modification est autorisée, notamment la mise en forme d’un nouveau texte à l’aide de la police incorporée, et les modifications peuvent être enregistrées.
- Incorporation pour aperçu et impression : La police peut être incorporée et chargée temporairement sur d’autres systèmes, uniquement pour afficher ou imprimer le document.
- Incorporation avec licence restreinte : La police ne doit en aucun cas être modifiée, incorporée ou échangée sans avoir obtenu au préalable l’autorisation explicite du propriétaire légal.
Extraire les restrictions de licence TTF en Java
Pour lire les autorisations de licence avec Aspose.Font for Java :
- Chargez le fichier de police à l’aide de
FontFileDefinitionetFontDefinition, en spécifiantFontType.TTF. - Récupérez la table
OS/2de la collection de tables de la police (getTtfTables().getOs2Table()). - Obtenez les indicateurs de licence à l’aide de
getLicenseFlags(). - Évaluez les droits d’incorporation à l’aide de méthodes utilitaires telles que
isEditableEmbedding(),isInstallableEmbedding(),isPreviewAndPrintEmbedding()ouisRestrictedLicenseEmbedding().
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()));
}
}Installation et configuration
Ajoutez Aspose.Font for Java à votre projet via 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. Les polices Type1 permettent-elles d’extraire les restrictions de licence à l’aide de LicenseFlags ?
Non. Les formats de police Type1 standard (.pfb/.pfa) ne contiennent pas de table OS/2. L’indicateur fsType et la structure de la table OS/2 sont spécifiques aux formats de police TrueType (.ttf) et OpenType (.otf).
2. Que signifie le fait que licenseFlags.isFSTypeAbsent() renvoie true ?
Si isFSTypeAbsent() renvoie true (ou si licenseFlags est null), cela indique qu’aucun indicateur de restriction de licence intégré n’est présent dans la table OS/2 du fichier de police.
3. Comment vérifier si une police autorise la modification du contenu d’un document ?
Vous pouvez vérifier licenseFlags.isEditableEmbedding(). Si la valeur est true, la police autorise le chargement temporaire et la modification, ce qui permet aux utilisateurs de mettre en forme un nouveau texte avec la police incorporée et d’enregistrer les modifications.