memanipulasi font di java

Font memainkan peran penting dalam penyajian teks dalam dokumen dan halaman web. Berbagai keluarga font tersedia yang memungkinkan Anda menggunakan karakter mewah untuk membuat teks Anda menarik. Sejak Aspose berurusan dengan otomatisasi format file, kami telah meluncurkan API manipulasi font khusus untuk bekerja dengan format file font. Pada artikel ini, Anda akan mengenal Java Font API kami dan mempelajari cara bekerja dengan font CFF, TrueType, OpenType, dan Type1 dari dalam aplikasi Java Anda.

API Manipulasi Font Java

Aspose.Font for Java adalah API manipulasi font yang memungkinkan Anda memuat, menyimpan, dan memanipulasi font populer termasuk CFF, TrueType, Type1, EOT, dan OpenType. Selain itu, API mendukung pengambilan metrik font serta merender teks menggunakan jenis font yang didukung. Anda dapat mengunduh API atau menginstalnya dalam aplikasi berbasis Maven menggunakan konfigurasi berikut.

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

Muat Font CFF, TrueType, dan Type1 menggunakan Java

Anda dapat dengan mudah memuat font dari file yang terletak di penyimpanan Anda dari dalam program Java Anda. Setelah Anda memuat font, Anda dapat melakukan operasi lebih lanjut sesuai kebutuhan. Berikut langkah-langkah memuat font menggunakan Aspose.Font for Java.

  • Gunakan kelas FontDefinition untuk memuat font dengan menentukan jenisnya seperti TrueType, Type1, dll.
  • Gunakan kelas CffFont, TtfFont, atau Type1Font untuk mengakses masing-masing font CFF, TrueType, dan Type1 dari objek FontDefinition.

Muat Font CFF menggunakan Java

Ini adalah bagaimana Anda dapat memuat font CFF dari file menggunakan Java.

// Untuk contoh lengkap dan file data, silakan buka 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");

Muat TrueType Fonts menggunakan Java

Contoh kode Java berikut memuat font TrueType.

// Untuk contoh lengkap dan file data, silakan buka 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);        

Muat Font Type1 menggunakan Java

Contoh kode berikut menunjukkan cara memuat font Type1 menggunakan Java.

// Untuk contoh lengkap dan file data, silakan buka 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);

Ekstrak Metrik Font dari TrueType atau Type1 Fonts menggunakan Java

File font juga berisi informasi font yang digunakan untuk menentukan spasi baris, penempatan subskrip dan superskrip, perataan, dan lain-lain. Aspose.Font for Java juga memungkinkan Anda mengekstrak informasi metrik font termasuk Ascender, Descender, TypoAscender, TypoDescender , dan UnitPerEm. Berikut ini adalah langkah-langkah untuk melakukan operasi ini.

  • Gunakan kelas FontDefinition untuk memuat font TrueType atau Type1.
  • Akses font menggunakan kelas TtfFont atau Type1Font sesuai dengan jenis font.
  • Ekstrak informasi metrik font.

Dapatkan Metrik Font dari TrueType Font menggunakan Java

// Untuk contoh lengkap dan file data, silakan buka 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);
      
    //Dapatkan tabel encoding unicode cmap dari font sebagai objek TtfCMapFormatBaseTable untuk mengakses informasi tentang font glyph untuk simbol 'A'.
      //Periksa juga apakah font memiliki objek TtfGlyfTable (tabel 'glyf') untuk mengakses mesin terbang.
      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());

          //Kode untuk simbol 'A'
          char unicode = (char)65;

          //Indeks mesin terbang untuk 'A'
          long glIndex = cmapTable.getGlyphIndex(unicode);

          if (glIndex != 0)
          {
              //Glyph untuk 'A'
              Glyph glyph = font.getGlyphById(glIndex);
              if (glyph != null)
              {
                  //Cetak metrik mesin terbang
              	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)));
              }
          }
      }

Ekstrak Metrik Font dari Font Type1 menggunakan Java

// Untuk contoh lengkap dan file data, silakan buka 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);

Kesimpulan

Pada artikel ini, Anda telah mempelajari cara bekerja dengan font CFF, TrueType, dan Type1 secara terprogram menggunakan Java. Selanjutnya, Anda telah melihat cara mengakses informasi metrik font dari font tertentu. Anda dapat menjelajahi lebih lanjut tentang API manipulasi font Java menggunakan dokumentasi dan contoh kode sumber.