manipular fuentes en java

Fuentes juegan un papel importante en la presentación del texto dentro de los documentos y páginas web. Hay varias familias de fuentes disponibles que le permiten usar caracteres elegantes para que su texto sea atractivo. Dado que Aspose se ocupa de la automatización del formato de archivo, hemos lanzado una API de manipulación de fuentes dedicada para trabajar con formatos de archivos de fuentes. En este artículo, se familiarizará con nuestra API de fuentes Java y aprenderá a trabajar con fuentes CFF, TrueType, OpenType y Type1 desde sus aplicaciones Java.

API de manipulación de fuentes Java

Aspose.Font for Java es la API de manipulación de fuentes que le permite cargar, guardar y manipular fuentes populares, incluidas CFF, TrueType, Type1, EOT y OpenType. Además, la API admite la recuperación de métricas de fuentes, así como la representación del texto con los tipos de fuentes admitidos. Puede descargar la API o instalarla dentro de sus aplicaciones basadas en Maven usando las siguientes configuraciones.

<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>20.10</version>
</dependency>

Cargue fuentes CFF, TrueType y Type1 usando Java

Puede cargar fácilmente la fuente desde un archivo ubicado en su almacenamiento desde su programa Java. Una vez que haya cargado la fuente, puede realizar más operaciones según sea necesario. Los siguientes son los pasos para cargar una fuente usando Aspose.Font for Java.

  • Utilice la clase FontDefinition para cargar la fuente especificando su tipo, como TrueType, Type1, etc.
  • Utilice la clase CffFont, TtfFont o Type1Font para acceder a las fuentes CFF, TrueType y Type1 respectivamente desde el objeto FontDefinition.

Cargue fuentes CFF usando Java

Así es como puede cargar una fuente CFF desde un archivo usando Java.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-Java
String fileName = Utils.getDataDir() + "OpenSans-Regular.cff"; //Font file name with full path

      FontDefinition fd = new FontDefinition(FontType.CFF, new FontFileDefinition("cff", new FileSystemStreamSource(fileName)));
      CffFont ttfFont = (CffFont) Font.open(fd);
      
      System.out.println("Font has been loaded");

Cargue fuentes TrueType usando Java

El siguiente ejemplo de código Java carga una fuente TrueType.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-Java
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);        

Cargue fuentes Type1 usando Java

El siguiente ejemplo de código muestra cómo cargar una fuente Type1 usando Java.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-Java
String fileName = Utils.getDataDir() + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
      Type1Font font = (Type1Font) Font.open(fd);

Extraiga métricas de fuentes de fuentes TrueType o Type1 usando Java

Los archivos de fuente también contienen la información de la fuente que se utiliza para especificar el espacio entre líneas, la ubicación de los subíndices y superíndices, la alineación, etc. Aspose.Font for Java también le permite extraer la información métrica de la fuente, incluidos Ascender, Descender, TypoAscender, TypoDescender. y UnidadesPerEm. Los siguientes son los pasos para realizar esta operación.

  • Use la clase FontDefinition para cargar la fuente TrueType o Type1.
  • Acceda a la fuente usando la clase TtfFont o Type1Font según el tipo de fuente.
  • Extrae la información de las métricas de la fuente.

Obtenga métricas de fuentes de fuentes TrueType usando Java

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-Java
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);

      String name = font.getFontName();
      System.out.println("Font name: " + name);
      System.out.println("Glyph count: " + font.getNumGlyphs());
      String metrics = MessageFormat.format(
          "Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
          font.getMetrics().getAscender(), font.getMetrics().getDescender(),
          font.getMetrics().getTypoAscender(), font.getMetrics().getTypoDescender(), font.getMetrics().getUnitsPerEM());

      System.out.println(metrics);
      
    //Obtenga la tabla de codificación cmap Unicode de la fuente como objeto TtfCMapFormatBaseTable para acceder a información sobre el glifo de fuente para el símbolo 'A'.
      //También verifique que la fuente tenga el objeto TtfGlyfTable (tabla 'glyf') para acceder al glifo.
      TtfCMapFormatBaseTable cmapTable = null;
      if (font.getTtfTables().getCMapTable() != null)
      {
          cmapTable = font.getTtfTables().getCMapTable().findUnicodeTable();
      }
      if (cmapTable != null && font.getTtfTables().getGlyfTable() != null)
      {
      	System.out.println("Font cmap unicode table: PlatformID = " + cmapTable.getPlatformId() +
      			", PlatformSpecificID = " + cmapTable.getPlatformSpecificId());

          //Código para el símbolo 'A'
          char unicode = (char)65;

          //Índice de glifos para 'A'
          long glIndex = cmapTable.getGlyphIndex(unicode);

          if (glIndex != 0)
          {
              //Glifo de 'A'
              Glyph glyph = font.getGlyphById(glIndex);
              if (glyph != null)
              {
                  //Imprimir métricas de glifo
              	System.out.println("Glyph metrics for 'A' symbol:");
                  String bbox = MessageFormat.format(
                      "Glyph BBox: Xmin = {0}, Xmax = {1}" + ", Ymin = {2}, Ymax = {3}",
                      glyph.getGlyphBBox().getXMin(), glyph.getGlyphBBox().getXMax(),
                      glyph.getGlyphBBox().getYMin(), glyph.getGlyphBBox().getYMax());
                  System.out.println(bbox);
                  System.out.println("Width:" + font.getMetrics().getGlyphWidth(new GlyphUInt32Id(glIndex)));
              }
          }
      }

Extraiga métricas de fuentes de la fuente Type1 usando Java

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-Java
String fileName = Utils.getDataDir() + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
      Type1Font font = (Type1Font) Font.open(fd);

      String name = font.getFontName();
      System.out.println("Font name: " + name);
      System.out.println("Glyph count: " + font.getNumGlyphs());
      String metrics = MessageFormat.format(
          "Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
          font.getMetrics().getAscender(), font.getMetrics().getDescender(),
          font.getMetrics().getTypoAscender(), font.getMetrics().getTypoDescender(), font.getMetrics().getUnitsPerEM());

      System.out.println(metrics);

Conclusión

En este artículo, ha aprendido a trabajar con fuentes CFF, TrueType y Type1 mediante programación utilizando Java. Además, ha visto cómo acceder a la información de métricas de fuente de una fuente específica. Puede explorar más sobre la API de manipulación de fuentes de Java usando documentación y ejemplos de código fuente.