маніпулювати шрифтами в java

Шрифти відіграють важливу роль у представленні тексту в документах і на веб-сторінках. Доступні різні сімейства шрифтів, які дозволяють використовувати химерні символи, щоб зробити ваш текст привабливим. Оскільки Aspose займається автоматизацією форматів файлів, ми запустили спеціальний API для обробки шрифтів для роботи з форматами файлів шрифтів. У цій статті ви познайомитеся з нашим Java Font API і навчитеся працювати зі шрифтами CFF, TrueType, OpenType і Type1 у своїх програмах Java.

Java Font Manipulation API

Aspose.Font for Java – це API керування шрифтами, який дозволяє завантажувати, зберігати та маніпулювати популярними шрифтами, зокрема CFF, TrueType, Type1, EOT і OpenType. Крім того, API підтримує отримання показників шрифту, а також відтворення тексту з використанням підтримуваних типів шрифтів. Ви можете завантажити API або встановити його у своїх програмах на основі Maven, використовуючи такі конфігурації.

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

Завантажуйте шрифти CFF, TrueType і Type1 за допомогою Java

Ви можете легко завантажити шрифт із файлу, який знаходиться у вашому сховищі, у програмі Java. Після завантаження шрифту ви можете виконувати подальші операції за потреби. Нижче наведено кроки для завантаження шрифту за допомогою Aspose.Font for Java.

  • Використовуйте клас FontDefinition, щоб завантажити шрифт, вказавши його тип, наприклад TrueType, Type1 тощо.
  • Використовуйте клас CffFont, TtfFont або Type1Font для доступу до шрифтів CFF, TrueType і Type1 відповідно з об’єкта FontDefinition.

Завантажуйте шрифти CFF за допомогою Java

Ось як ви можете завантажити шрифт CFF із файлу за допомогою Java.

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку 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");

Завантажуйте шрифти TrueType за допомогою Java

У наступному прикладі коду Java завантажується шрифт TrueType.

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку 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);        

Завантажте шрифти Type1 за допомогою Java

У наступному прикладі коду показано, як завантажити шрифт Type1 за допомогою Java.

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку 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);

Отримайте показники шрифту зі шрифтів TrueType або Type1 за допомогою Java

Файли шрифтів також містять інформацію про шрифт, яка використовується для визначення міжрядкового інтервалу, розміщення нижнього та верхнього індексів, вирівнювання тощо. Aspose.Font for Java також дозволяє видобувати метричну інформацію шрифту, зокрема Ascender, Descender, TypoAscender, TypoDescender і UnitsPerEm. Нижче наведено кроки для виконання цієї операції.

  • Використовуйте клас FontDefinition, щоб завантажити шрифт TrueType або Type1.
  • Отримайте доступ до шрифту за допомогою класу TtfFont або Type1Font відповідно до типу шрифту.
  • Витягніть інформацію про метрику шрифту.

Отримайте показники шрифту зі шрифту TrueType за допомогою Java

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку 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);
      
    //Отримайте таблицю кодування cmap Unicode зі шрифту як об’єкт TtfCMapFormatBaseTable для доступу до інформації про гліф шрифту для символу «A».
      //Також перевірте, чи має шрифт об’єкт TtfGlyfTable (таблиця 'glyf') для доступу до гліфа.
      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());

          //Код для символу "А".
          char unicode = (char)65;

          //Індекс гліфа для «A»
          long glIndex = cmapTable.getGlyphIndex(unicode);

          if (glIndex != 0)
          {
              //Гліф для "А"
              Glyph glyph = font.getGlyphById(glIndex);
              if (glyph != null)
              {
                  //Друкувати метрики гліфів
              	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)));
              }
          }
      }

Видобудьте показники шрифту зі шрифту Type1 за допомогою Java

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку 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);

Висновок

У цій статті ви дізналися, як програмно працювати зі шрифтами CFF, TrueType і Type1 за допомогою Java. Крім того, ви бачили, як отримати доступ до інформації про показники певного шрифту. Ви можете дізнатися більше про API обробки шрифтів Java за допомогою документації і зразків вихідного коду.