manipulować czcionkami w Javie

Czcionki odgrywają ważną rolę w prezentacji tekstu w dokumentach i na stronach internetowych. Dostępne są różne rodziny czcionek, które pozwalają używać wymyślnych znaków, aby tekst był atrakcyjny. Ponieważ Aspose zajmuje się automatyzacją formatów plików, uruchomiliśmy dedykowane API do manipulacji czcionkami do pracy z formatami plików czcionek. W tym artykule zapoznasz się z naszym API czcionek Java i nauczysz się pracować z czcionkami CFF, TrueType, OpenType i Type1 z poziomu aplikacji Java.

Interfejs API manipulacji czcionkami Java

Aspose.Font for Java to interfejs API do manipulacji czcionkami, który umożliwia ładowanie, zapisywanie i manipulowanie popularnymi czcionkami, w tym CFF, TrueType, Type1, EOT i OpenType. Ponadto interfejs API obsługuje pobieranie metryk czcionek, a także renderowanie tekstu przy użyciu obsługiwanych typów czcionek. Możesz pobrać API lub zainstalować je w swoich aplikacjach opartych na Maven, korzystając z poniższych konfiguracji.

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

Załaduj czcionki CFF, TrueType i Type1 przy użyciu języka Java

Możesz łatwo załadować czcionkę z pliku znajdującego się w pamięci z poziomu programu Java. Po załadowaniu czcionki możesz wykonać dalsze operacje zgodnie z wymaganiami. Poniżej przedstawiono kroki, aby załadować czcionkę przy użyciu Aspose.Font dla języka Java.

  • Użyj klasy FontDefinition, aby załadować czcionkę, określając jej typ, taki jak TrueType, Type1 itp.
  • Użyj klasy CffFont, TtfFont lub Type1Font, aby uzyskać dostęp odpowiednio do czcionek CFF, TrueType i Type1 z obiektu FontDefinition.

Załaduj czcionki CFF przy użyciu języka Java

W ten sposób możesz załadować czcionkę CFF z pliku za pomocą Java.

// Aby uzyskać pełne przykłady i pliki danych, przejdź do 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");

Załaduj czcionki TrueType przy użyciu języka Java

Poniższy przykładowy kod Java ładuje czcionkę TrueType.

// Aby uzyskać pełne przykłady i pliki danych, przejdź do 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);        

Załaduj czcionki Type1 przy użyciu języka Java

Poniższy przykładowy kod pokazuje, jak załadować czcionkę Type1 przy użyciu języka Java.

// Aby uzyskać pełne przykłady i pliki danych, przejdź do 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);

Wyodrębnij metryki czcionek z czcionek TrueType lub Type1 przy użyciu języka Java

Pliki czcionek zawierają również informacje o czcionce, które są używane do określania odstępów między wierszami, umieszczania indeksu dolnego i górnego, wyrównania itp. Aspose.Font dla języka Java umożliwia również wyodrębnienie informacji o czcionce, w tym Ascender, Descender, TypoAscender, TypoDescender i Jednostki na em. Poniżej przedstawiono kroki, aby wykonać tę operację.

  • Użyj klasy FontDefinition, aby załadować czcionkę TrueType lub Type1.
  • Uzyskaj dostęp do czcionki za pomocą klasy TtfFont lub Type1Font w zależności od typu czcionki.
  • Wyodrębnij informacje o metrykach czcionki.

Uzyskaj metryki czcionek z czcionek TrueType przy użyciu języka Java

// Aby uzyskać pełne przykłady i pliki danych, przejdź do 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);
      
    //Uzyskaj tabelę kodowania Unicode cmap z czcionki jako obiekt TtfCMapFormatBaseTable, aby uzyskać dostęp do informacji o glifie czcionki dla symbolu „A”.
      //Sprawdź również, czy czcionka ma obiekt TtfGlyfTable (tabela „glyf”), aby uzyskać dostęp do glifu.
      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());

          //Kod dla symbolu „A”.
          char unicode = (char)65;

          //Indeks glifów dla „A”
          long glIndex = cmapTable.getGlyphIndex(unicode);

          if (glIndex != 0)
          {
              //Glif dla „A”
              Glyph glyph = font.getGlyphById(glIndex);
              if (glyph != null)
              {
                  //Wydrukuj metryki glifów
              	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)));
              }
          }
      }

Wyodrębnij metryki czcionek z czcionki Type1 przy użyciu języka Java

// Aby uzyskać pełne przykłady i pliki danych, przejdź do 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);

Wniosek

W tym artykule nauczyłeś się, jak programowo pracować z czcionkami CFF, TrueType i Type1 przy użyciu języka Java. Ponadto widziałeś, jak uzyskać dostęp do informacji o metrykach czcionki dla określonej czcionki. Możesz dowiedzieć się więcej o interfejsie API manipulacji czcionkami Java, korzystając z dokumentacji i przykładów kodu źródłowego.