java'da yazı tiplerini değiştirme

Yazı Tipleri, belgelerde ve web sayfalarında metnin sunumunda önemli bir rol oynar. Metninizi çekici hale getirmek için süslü karakterler kullanmanıza izin veren çeşitli yazı tipi aileleri mevcuttur. Aspose, dosya biçimi otomasyonu ile ilgilendiği için, yazı tipi dosyası biçimleriyle çalışmak için özel bir yazı tipi işleme API’si başlattık. Bu makalede, Java Yazı Tipi API’mizi tanıyacak ve Java uygulamalarınızdan CFF, TrueType, OpenType ve Type1 yazı tipleriyle nasıl çalışacağınızı öğreneceksiniz.

Java Yazı Tipi Düzenleme API’sı

Aspose.Font for Java, CFF, TrueType, Type1, EOT ve OpenType. Ek olarak, API, desteklenen yazı tipi türlerini kullanarak metni oluşturmanın yanı sıra yazı tipi ölçümlerini almayı da destekler. Aşağıdaki yapılandırmaları kullanarak API’yi indirebilir veya Maven tabanlı uygulamalarınıza yükleyebilirsiniz.

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

Java kullanarak CFF, TrueType ve Type1 Yazı Tiplerini yükleyin

Yazı tipini, Java programınızın içinden, depolama alanınızda bulunan bir dosyadan kolayca yükleyebilirsiniz. Yazı tipini yükledikten sonra, gereken diğer işlemleri gerçekleştirebilirsiniz. Aşağıda, Aspose.Font for Java kullanarak bir yazı tipini yükleme adımları yer almaktadır.

  • TrueType, Type1 vb. gibi türünü belirterek yazı tipini yüklemek için FontDefinition sınıfını kullanın.
  • FontDefinition nesnesinden sırasıyla CFF, TrueType ve Type1 yazı tiplerine erişmek için CffFont, TtfFont veya Type1Font sınıfını kullanın.

Java kullanarak CFF Yazı Tiplerini yükleyin

Java kullanarak dosyadan bir CFF yazı tipini bu şekilde yükleyebilirsiniz.

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-Java adresine gidin.
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");

TrueType Yazı Tiplerini Java kullanarak yükleyin

Aşağıdaki Java kodu örneği, bir TrueType yazı tipini yükler.

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-Java adresine gidin.
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);        

Type1 Yazı Tiplerini Java kullanarak yükleyin

Aşağıdaki kod örneği, Java kullanarak bir Type1 yazı tipinin nasıl yükleneceğini gösterir.

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-Java adresine gidin.
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);

Java kullanarak TrueType veya Type1 Yazı Tiplerinden Yazı Tipi Metriklerini Çıkarın

Yazı tipi dosyaları ayrıca satır aralığını, alt simge ve üst simgenin yerleşimini, hizalamayı vb. belirtmek için kullanılan yazı tipi bilgilerini içerir. Aspose.Font for Java ayrıca Ascender, Descender, TypoAscender, TypoDescender dahil olmak üzere yazı tipi metrik bilgilerini ayıklamanıza olanak tanır. ve UnitsPerEm. Aşağıda bu işlemi gerçekleştirmek için adımlar verilmiştir.

  • TrueType veya Type1 yazı tipini yüklemek için FontDefinition sınıfını kullanın.
  • Yazı tipine, yazı tipinin türüne göre TtfFont veya Type1Font sınıfını kullanarak erişin.
  • Yazı tipinin ölçüm bilgilerini çıkarın.

Java kullanarak TrueType Yazı Tipinden Yazı Tipi Metriklerini Alın

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-Java adresine gidin.
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);
      
    //'A' sembolü için yazı tipi glifi hakkındaki bilgilere erişmek için yazı tipinden TtfCMapFormatBaseTable nesnesi olarak cmap unicode kodlama tablosunu alın.
      //Ayrıca glif'e erişmek için fontun TtfGlyfTable (tablo 'glyf') nesnesine sahip olduğunu kontrol edin.
      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());

          //'A' sembolü için kod
          char unicode = (char)65;

          //'A' için glif dizini
          long glIndex = cmapTable.getGlyphIndex(unicode);

          if (glIndex != 0)
          {
              //'A' için glif
              Glyph glyph = font.getGlyphById(glIndex);
              if (glyph != null)
              {
                  //Glif ölçümlerini yazdır
              	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)));
              }
          }
      }

Java kullanarak Type1 Font’tan Font Metriklerini Çıkarın

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-Java adresine gidin.
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);

Çözüm

Bu makalede, Java kullanarak programlı olarak CFF, TrueType ve Type1 yazı tipleriyle nasıl çalışılacağını öğrendiniz. Ayrıca, belirli bir yazı tipinin yazı tipi ölçüm bilgilerine nasıl erişileceğini gördünüz. Belgeleme ve kaynak kodu örneklerini kullanarak Java yazı tipi işleme API’si hakkında daha fazlasını keşfedebilirsiniz.