Manipulieren von Schriftarten in Java

Schriftarten spielen eine wichtige Rolle bei der Darstellung des Textes innerhalb der Dokumente und Webseiten. Es stehen verschiedene Schriftfamilien zur Verfügung, mit denen Sie ausgefallene Zeichen verwenden können, um Ihren Text ansprechend zu gestalten. Da sich Aspose mit der Automatisierung von Dateiformaten befasst, haben wir eine spezielle API zur Bearbeitung von Schriftarten eingeführt, um mit Schriftartdateiformaten zu arbeiten. In diesem Artikel machen Sie sich mit unserer Java-Font-API vertraut und erfahren, wie Sie in Ihren Java Anwendungen mit CFF, TrueType, OpenType und Type1-Fonts arbeiten.

API zur Bearbeitung von Java-Schriftarten

Aspose.Font for Java ist die Schriftartbearbeitungs-API, mit der Sie beliebte Schriftarten laden, speichern und bearbeiten können, darunter CFF, TrueType, Type1, EOT und OpenType. Darüber hinaus unterstützt die API das Abrufen von Schriftartmetriken sowie das Rendern des Textes mit den unterstützten Schriftarten. Sie können die API herunterladen oder sie mit den folgenden Konfigurationen in Ihren Maven-basierten Anwendungen installieren.

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

Laden Sie CFF, TrueType und Type1-Schriftarten mit Java

Sie können die Schriftart einfach aus einer Datei, die sich auf Ihrem Speicher befindet, aus Ihrem Java-Programm laden. Nachdem Sie die Schriftart geladen haben, können Sie nach Bedarf weitere Vorgänge ausführen. Im Folgenden sind die Schritte zum Laden einer Schriftart mit Aspose.Font for Java aufgeführt.

  • Verwenden Sie die Klasse FontDefinition, um die Schriftart zu laden, indem Sie ihren Typ wie TrueType, Type1 usw. angeben.
  • Verwenden Sie die Klassen CffFont, TtfFont oder Type1Font, um vom FontDefinition objekt auf die CFF, TrueType und Type1-Schriftarten zuzugreifen.

Laden Sie CFF-Schriftarten mit Java

So können Sie mit Java eine CFF-Schriftart aus einer Datei laden.

// Vollständige Beispiele und Datendateien finden Sie unter 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");

Laden Sie TrueType-Schriftarten mit Java

Das folgende Java-Codebeispiel lädt eine TrueType-Schriftart.

// Vollständige Beispiele und Datendateien finden Sie unter 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);        

Laden Sie Type1-Fonts mit Java

Das folgende Codebeispiel zeigt, wie eine Type1-Schriftart mit Java geladen wird.

// Vollständige Beispiele und Datendateien finden Sie unter 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);

Extrahieren Sie Font-Metriken aus TrueType oder Type1-Fonts mit Java

Die Schriftartdateien enthalten auch die Schriftartinformationen, die verwendet werden, um den Zeilenabstand, die Platzierung von tiefgestellten und hochgestellten Zeichen, die Ausrichtung usw. festzulegen. Mit Aspose.Font for Java können Sie auch die Schriftartmetrikinformationen extrahieren, einschließlich Ascender, Descender, TypoAscender, TypoDescender , und UnitsPerEm. Im Folgenden sind die Schritte zum Ausführen dieses Vorgangs aufgeführt.

  • Verwenden Sie die Klasse FontDefinition, um TrueType oder Type1-Schriftarten zu laden.
  • Greifen Sie je nach Typ der Schriftart mit der Klasse TtfFont oder Type1Font auf die Schriftart zu.
  • Extrahieren Sie die Metrikinformationen der Schriftart.

Rufen Sie Font-Metriken von TrueType-Fonts mit Java ab

// Vollständige Beispiele und Datendateien finden Sie unter 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);
      
    //Holen Sie sich die Cmap-Unicode-Codierungstabelle aus der Schriftart als Objekt TtfCMapFormatBaseTable, um auf Informationen über die Schriftart-Glyphe für das Symbol „A“ zuzugreifen.
      //Überprüfen Sie auch, ob die Schriftart das Objekt TtfGlyfTable (Tabelle 'glyf') hat, um auf die Glyphe zuzugreifen.
      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 für 'A'-Symbol
          char unicode = (char)65;

          //Glyphenindex für 'A'
          long glIndex = cmapTable.getGlyphIndex(unicode);

          if (glIndex != 0)
          {
              //Glyphe für 'A'
              Glyph glyph = font.getGlyphById(glIndex);
              if (glyph != null)
              {
                  //Drucken Sie Glyphenmetriken
              	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)));
              }
          }
      }

Extrahieren Sie Font-Metriken aus Type1 Font mit Java

// Vollständige Beispiele und Datendateien finden Sie unter 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);

Fazit

In diesem Artikel haben Sie gelernt, wie Sie mit Java programmgesteuert mit CFF, TrueType und Type1-Schriftarten arbeiten. Darüber hinaus haben Sie gesehen, wie Sie auf die Schriftartmetrikinformationen einer bestimmten Schriftart zugreifen können. Sie können mehr über die Java-Schriftbearbeitungs-API erfahren, indem Sie Dokumentation und Quellcodebeispiele verwenden.