Extrair restrições de licença de fontes TrueType e OpenType com Java
Ao trabalhar com fontes digitais em aplicativos de software, mecanismos de geração de documentos ou plataformas web, é fundamental respeitar as restrições de licença das fontes. Os fornecedores de fontes incorporam regras de licenciamento e uso diretamente nos arquivos de fontes para definir como as fontes podem ser incorporadas, instaladas ou modificadas. Com o Aspose.Font for Java, os desenvolvedores podem inspecionar as métricas incorporadas da tabela OS/2 e extrair programaticamente as restrições de licença de arquivos de fontes TrueType (.ttf) e OpenType (.otf).
Compreender os modos de licenciamento de fontes
As especificações de fontes TrueType e OpenType armazenam as permissões de incorporação no sinalizador fsType dentro da tabela OS/2 da fonte. O Aspose.Font for Java categoriza essas restrições de licença incorporadas em diferentes modos por meio da classe LicenseFlags:
- Incorporação instalável: A fonte pode ser incorporada e instalada permanentemente em sistemas remotos ou para uso por outros usuários.
- Incorporação editável: A fonte pode ser incorporada e carregada temporariamente em outros sistemas. A edição é permitida, incluindo a formatação de novo texto usando a fonte incorporada, e as alterações podem ser salvas.
- Incorporação para visualização e impressão: A fonte pode ser incorporada e carregada temporariamente em outros sistemas estritamente para visualização ou impressão do documento.
- Incorporação com licença restrita: A fonte não deve ser modificada, incorporada ou trocada de qualquer forma sem obter primeiro a permissão explícita do proprietário legal.
Extrair restrições de licença TTF em Java
Para ler as permissões de licença usando o Aspose.Font for Java:
- Carregue o arquivo de fonte usando
FontFileDefinitioneFontDefinition, especificandoFontType.TTF. - Recupere a tabela
OS/2da coleção de tabelas da fonte (getTtfTables().getOs2Table()). - Obtenha os sinalizadores de licença usando
getLicenseFlags(). - Avalie os direitos de incorporação usando métodos auxiliares, como
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()));
}
}Instalação e configuração
Inclua o Aspose.Font for Java em seu projeto por meio do 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. As fontes Type1 oferecem suporte à extração de restrições de licença usando LicenseFlags?
Não. Os formatos de fonte Type1 padrão (.pfb/.pfa) não contêm uma tabela OS/2. O sinalizador fsType e a estrutura da tabela OS/2 são específicos dos formatos de fonte TrueType (.ttf) e OpenType (.otf).
2. O que significa se licenseFlags.isFSTypeAbsent() retornar true?
Se isFSTypeAbsent() retornar true (ou se licenseFlags for null), isso indica que não há sinalizadores de restrição de licença incorporados na tabela OS/2 do arquivo de fonte.
3. Como verifico se uma fonte permite a edição do conteúdo de um documento?
Você pode verificar licenseFlags.isEditableEmbedding(). Se o valor for true, a fonte permite o carregamento e a edição temporários, permitindo que os usuários formatem novos textos usando a fonte incorporada e salvem as alterações.