manipular fontes em java

Fontes desempenham um papel importante na apresentação do texto nos documentos e páginas da web. Estão disponíveis várias famílias de fontes que permitem que você use caracteres sofisticados para tornar seu texto atraente. Como o Aspose lida com automação de formato de arquivo, lançamos uma API de manipulação de fonte dedicada para trabalhar com formatos de arquivo de fonte. Neste artigo, você se familiarizará com nossa API de fontes Java e aprenderá a trabalhar com fontes CFF, TrueType, OpenType e Type1 em seus aplicativos Java.

API de manipulação de fontes Java

Aspose.Font for Java é a API de manipulação de fontes que permite carregar, salvar e manipular fontes populares, incluindo CFF, TrueType, Type1, EOT e OpenType. Além disso, a API suporta a recuperação de métricas de fonte, bem como a renderização do texto usando os tipos de fonte suportados. Você pode baixar a API ou instalá-la em seus aplicativos baseados em Maven usando as seguintes configurações.

<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>

Carregar fontes CFF, TrueType e Type1 usando Java

Você pode carregar facilmente a fonte de um arquivo localizado em seu armazenamento de dentro do seu programa Java. Depois de carregar a fonte, você pode realizar outras operações conforme necessário. A seguir estão as etapas para carregar uma fonte usando Aspose.Font para Java.

  • Use a classe FontDefinition para carregar a fonte especificando seu tipo, como TrueType, Type1, etc.
  • Use a classe CffFont, TtfFont ou Type1Font para acessar as fontes CFF, TrueType e Type1, respectivamente, do objeto FontDefinition.

Carregar fontes CFF usando Java

É assim que você pode carregar uma fonte CFF de um arquivo usando Java.

// Para exemplos completos e arquivos de dados, acesse 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");

Carregar fontes TrueType usando Java

O exemplo de código Java a seguir carrega uma fonte TrueType.

// Para exemplos completos e arquivos de dados, acesse 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);        

Carregar fontes Type1 usando Java

O exemplo de código a seguir mostra como carregar uma fonte Type1 usando Java.

// Para exemplos completos e arquivos de dados, acesse 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);

Extraia métricas de fonte de fontes TrueType ou Type1 usando Java

Os arquivos de fonte também contêm as informações da fonte que são usadas para especificar o espaçamento entre linhas, posicionamento de subscrito e sobrescrito, alinhamento e etc. , e UnitsPerEm. A seguir estão as etapas para realizar esta operação.

  • Use a classe FontDefinition para carregar a fonte TrueType ou Type1.
  • Acesse a fonte usando a classe TtfFont ou Type1Font de acordo com o tipo da fonte.
  • Extraia as informações de métricas da fonte.

Obter métricas de fonte da fonte TrueType usando Java

// Para exemplos completos e arquivos de dados, acesse 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);
      
    //Obtenha a tabela de codificação unicode cmap da fonte como objeto TtfCMapFormatBaseTable para acessar informações sobre o glifo de fonte para o símbolo 'A'.
      //Verifique também se a fonte possui o objeto TtfGlyfTable (tabela 'glyf') para acessar o 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 o símbolo 'A'
          char unicode = (char)65;

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

          if (glIndex != 0)
          {
              //Glifo para '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)));
              }
          }
      }

Extrair métricas de fonte da fonte Type1 usando Java

// Para exemplos completos e arquivos de dados, acesse 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);

Conclusão

Neste artigo, você aprendeu a trabalhar com fontes CFF, TrueType e Type1 programaticamente usando Java. Além disso, você viu como acessar as informações de métricas de uma fonte específica. Você pode explorar mais sobre a API de manipulação de fontes Java usando documentação e amostras de código-fonte.