Extraer restricciones de licencia de fuentes TrueType y OpenType con Java

Al trabajar con fuentes digitales en aplicaciones de software, motores de generación de documentos o plataformas web, es fundamental respetar las restricciones de licencia de las fuentes. Los proveedores de fuentes incorporan las reglas de licencia y uso directamente en los archivos de fuentes para definir cómo se pueden incrustar, instalar o modificar las fuentes. Con Aspose.Font for Java, los desarrolladores pueden inspeccionar las métricas de la tabla OS/2 incrustada y extraer mediante programación las restricciones de licencia de archivos de fuentes TrueType (.ttf) y OpenType (.otf).

 

Comprender los modos de licencia de fuentes

Las especificaciones de fuentes TrueType y OpenType almacenan los permisos de incrustación en el indicador fsType dentro de la tabla OS/2 de la fuente. Aspose.Font for Java clasifica estas restricciones de licencia incrustadas en distintos modos mediante la clase LicenseFlags:

  • Incrustación instalable: La fuente se puede incrustar e instalar permanentemente en sistemas remotos o para que la utilicen otros usuarios.
  • Incrustación editable: La fuente se puede incrustar y cargar temporalmente en otros sistemas. Se permite la edición, incluido el formato de texto nuevo utilizando la fuente incrustada, y se pueden guardar los cambios.
  • Incrustación para vista previa e impresión: La fuente se puede incrustar y cargar temporalmente en otros sistemas estrictamente para visualizar o imprimir el documento.
  • Incrustación con licencia restringida: La fuente no debe modificarse, incrustarse ni intercambiarse de ninguna manera sin obtener previamente el permiso explícito del propietario legal.

Extraer restricciones de licencia TTF en Java

Para leer los permisos de licencia mediante Aspose.Font for Java:

  • Cargue el archivo de fuente utilizando FontFileDefinition y FontDefinition, especificando FontType.TTF.
  • Recupere la tabla OS/2 de la colección de tablas de la fuente (getTtfTables().getOs2Table()).
  • Obtenga los indicadores de licencia mediante getLicenseFlags().
  • Evalúe los derechos de incrustación mediante métodos auxiliares como isEditableEmbedding(), isInstallableEmbedding(), isPreviewAndPrintEmbedding() o 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()));
    }
}

Instalación y configuración

Incluya Aspose.Font for Java en su proyecto mediante 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>

Preguntas frecuentes

1. ¿Las fuentes Type1 admiten la extracción de restricciones de licencia mediante LicenseFlags?

No. Los formatos de fuente Type1 estándar (.pfb/.pfa) no contienen una tabla OS/2. El indicador fsType y la estructura de la tabla OS/2 son específicos de los formatos de fuente TrueType (.ttf) y OpenType (.otf).

2. ¿Qué significa si licenseFlags.isFSTypeAbsent() devuelve true?

Si isFSTypeAbsent() devuelve true (o si licenseFlags es null), indica que no hay indicadores de restricciones de licencia integrados en la tabla OS/2 del archivo de fuente.

3. ¿Cómo compruebo si una fuente permite editar el contenido de un documento?

Puede comprobar licenseFlags.isEditableEmbedding(). Si es true, la fuente permite la carga temporal y la edición, lo que permite a los usuarios dar formato al texto nuevo con la fuente incrustada y guardar los cambios.