Estrarre le restrizioni di licenza dei font TrueType e OpenType con Java
Quando si lavora con font digitali in applicazioni software, motori di generazione di documenti o piattaforme web, è fondamentale rispettare le restrizioni di licenza dei font. I fornitori di font incorporano le regole di licenza e utilizzo direttamente nei file dei font per definire come i font possono essere incorporati, installati o modificati. Con Aspose.Font for Java, gli sviluppatori possono esaminare le metriche incorporate della tabella OS/2 ed estrarre programmaticamente le restrizioni di licenza dai file di font TrueType (.ttf) e OpenType (.otf).
Comprendere le modalità di licenza dei font
Le specifiche dei font TrueType e OpenType memorizzano le autorizzazioni di incorporamento nel flag fsType all’interno della tabella OS/2 del font. Aspose.Font for Java classifica queste restrizioni di licenza incorporate in modalità distinte tramite la classe LicenseFlags:
- Incorporamento installabile: Il font può essere incorporato e installato in modo permanente su sistemi remoti o per essere utilizzato da altri utenti.
- Incorporamento modificabile: Il font può essere incorporato e caricato temporaneamente su altri sistemi. È consentita la modifica, inclusa la formattazione di nuovo testo utilizzando il font incorporato, e le modifiche possono essere salvate.
- Incorporamento per anteprima e stampa: Il font può essere incorporato e caricato temporaneamente su altri sistemi esclusivamente per visualizzare o stampare il documento.
- Incorporamento con licenza limitata: Il font non deve essere modificato, incorporato o scambiato in alcun modo senza aver prima ottenuto l’autorizzazione esplicita del proprietario legale.
Estrarre le restrizioni di licenza TTF in Java
Per leggere le autorizzazioni di licenza utilizzando Aspose.Font for Java:
- Caricare il file del font utilizzando
FontFileDefinitioneFontDefinition, specificandoFontType.TTF. - Recuperare la tabella
OS/2dalla raccolta di tabelle del font (getTtfTables().getOs2Table()). - Ottenere i flag di licenza utilizzando
getLicenseFlags(). - Valutare i diritti di incorporamento utilizzando metodi di supporto come
isEditableEmbedding(),isInstallableEmbedding(),isPreviewAndPrintEmbedding()oisRestrictedLicenseEmbedding().
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()));
}
}Installazione e configurazione
Includere Aspose.Font for Java nel progetto tramite 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. I font Type1 supportano l’estrazione delle restrizioni di licenza utilizzando LicenseFlags?
No. I formati di font Type1 standard (.pfb/.pfa) non contengono una tabella OS/2. Il flag fsType e la struttura della tabella OS/2 sono specifici dei formati di font TrueType (.ttf) e OpenType (.otf).
2. Cosa significa se licenseFlags.isFSTypeAbsent() restituisce true?
Se isFSTypeAbsent() restituisce true (oppure se licenseFlags è null), ciò indica che nella tabella OS/2 del file del font non sono presenti flag di restrizione della licenza incorporati.
3. Come posso verificare se un font consente la modifica del contenuto di un documento?
È possibile verificare licenseFlags.isEditableEmbedding(). Se il valore è true, il font consente il caricamento e la modifica temporanei, permettendo agli utenti di formattare nuovo testo con il font incorporato e salvare le modifiche.