manipuler les polices en java

Les polices jouent un rôle important dans la présentation du texte dans les documents et les pages Web. Différentes familles de polices sont disponibles qui vous permettent d’utiliser des caractères fantaisistes afin de rendre votre texte attrayant. Depuis qu’Aspose s’occupe de l’automatisation des formats de fichiers, nous avons lancé une API dédiée à la manipulation des polices pour travailler avec les formats de fichiers de polices. Dans cet article, vous vous familiariserez avec notre API Java Font et apprendrez à utiliser les polices CFF, TrueType, OpenType et Type1 à partir de vos applications Java.

API de manipulation de polices Java

Aspose.Font for Java est l’API de manipulation de polices qui vous permet de charger, d’enregistrer et de manipuler des polices populaires, notamment CFF, TrueType, Type1, EOT et OpenType. De plus, l’API prend en charge la récupération des métriques de police ainsi que le rendu du texte à l’aide des types de police pris en charge. Vous pouvez télécharger l’API ou l’installer dans vos applications basées sur Maven en utilisant les configurations suivantes.

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

Charger les polices CFF, TrueType et Type1 à l’aide de Java

Vous pouvez facilement charger la police à partir d’un fichier situé sur votre stockage à partir de votre programme Java. Une fois que vous avez chargé la police, vous pouvez effectuer d’autres opérations si nécessaire. Voici les étapes pour charger une police à l’aide de Aspose.Font for Java.

  • Utilisez la classe FontDefinition pour charger la police en spécifiant son type tel que TrueType, Type1, etc.
  • Utilisez la classe CffFont, TtfFont ou Type1Font pour accéder respectivement aux polices CFF, TrueType et Type1 à partir de l’objet FontDefinition.

Charger les polices CFF à l’aide de Java

C’est ainsi que vous pouvez charger une police CFF à partir d’un fichier en utilisant Java.

// Pour des exemples complets et des fichiers de données, rendez-vous sur 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");

Charger les polices TrueType à l’aide de Java

L’exemple de code Java suivant charge une police TrueType.

// Pour des exemples complets et des fichiers de données, rendez-vous sur 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);        

Charger les polices Type1 à l’aide de Java

L’exemple de code suivant montre comment charger une police Type1 à l’aide de Java.

// Pour des exemples complets et des fichiers de données, rendez-vous sur 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);

Extraire les métriques de police des polices TrueType ou Type1 à l’aide de Java

Les fichiers de police contiennent également les informations de la police qui sont utilisées pour spécifier l’espacement des lignes, le placement des indices et des exposants, l’alignement, etc. , et UnitsPerEm. Voici les étapes pour effectuer cette opération.

  • Utilisez la classe FontDefinition pour charger la police TrueType ou Type1.
  • Accédez à la police à l’aide de la classe TtfFont ou Type1Font selon le type de police.
  • Extrayez les informations de métrique de la police.

Obtenir les métriques de police à partir de la police TrueType à l’aide de Java

// Pour des exemples complets et des fichiers de données, rendez-vous sur 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);
      
    //Obtenez la table d'encodage Unicode cmap de la police en tant qu'objet TtfCMapFormatBaseTable pour accéder aux informations sur le glyphe de police pour le symbole 'A'.
      //Vérifiez également que la police a l'objet TtfGlyfTable (table 'glyf') pour accéder au glyphe.
      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());

          //Code pour le symbole 'A'
          char unicode = (char)65;

          //Index glyphe pour 'A'
          long glIndex = cmapTable.getGlyphIndex(unicode);

          if (glIndex != 0)
          {
              //Glyphe pour 'A'
              Glyph glyph = font.getGlyphById(glIndex);
              if (glyph != null)
              {
                  //Imprimer les métriques de glyphe
              	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)));
              }
          }
      }

Extraire les métriques de police de la police Type1 à l’aide de Java

// Pour des exemples complets et des fichiers de données, rendez-vous sur 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);

Conclusion

Dans cet article, vous avez appris à utiliser les polices CFF, TrueType et Type1 par programmation à l’aide de Java. De plus, vous avez vu comment accéder aux informations de métrique de police d’une police spécifique. Vous pouvez en savoir plus sur l’API de manipulation de polices Java à l’aide de la documentation et des exemples de code source.