معالجة الخطوط في جافا

تلعب الخطوط دورًا مهمًا في تقديم النص داخل المستندات وصفحات الويب. تتوفر مجموعات خطوط مختلفة تتيح لك استخدام أحرف خيالية لجعل نصك جذابًا. نظرًا لأن Aspose يتعامل مع أتمتة تنسيق الملفات ، فقد أطلقنا واجهة برمجة تطبيقات مخصصة لمعالجة الخطوط للعمل مع تنسيقات ملفات الخطوط. في هذه المقالة ، ستتعرف على Java Font API وستتعلم كيفية العمل مع خطوط CFF و TrueType و OpenType و Type1 من داخل تطبيقات Java الخاصة بك.

Java Font Manipulation API

Aspose.Font for Java هي واجهة برمجة تطبيقات معالجة الخطوط التي تسمح لك بتحميل وحفظ ومعالجة الخطوط الشائعة بما في ذلك CFF ، TrueType ، Type1 ، EOT و OpenType. بالإضافة إلى ذلك ، تدعم واجهة برمجة التطبيقات (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 التالي بتحميل خط تروتايب.

// للحصول على أمثلة وملفات بيانات كاملة ، يرجى الانتقال إلى 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 Fonts باستخدام Java

تحتوي ملفات الخط أيضًا على معلومات الخط المستخدمة لتحديد تباعد الأسطر ، ووضع الأحرف المنخفضة والمرتفعة ، والمحاذاة ، وما إلى ذلك. Aspose.Font for Java يسمح لك أيضًا باستخراج معلومات قياس الخط بما في ذلك Ascender و Descender و TypoAscender و TypoDescender ، والوحدات في PerEm. فيما يلي خطوات إجراء هذه العملية.

  • استخدم فئة FontDefinition لتحميل خط TrueType أو Type1.
  • قم بالوصول إلى الخط باستخدام فئة TtfFont أو Type1Font وفقًا لنوع الخط.
  • استخراج معلومات مقاييس الخط.

احصل على مقاييس الخط من TrueType Font باستخدام 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 لـ "A"
              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 Font باستخدام 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. علاوة على ذلك ، لقد رأيت كيفية الوصول إلى معلومات مقاييس الخط لخط معين. يمكنك استكشاف المزيد حول واجهة برمجة تطبيقات معالجة خطوط Java باستخدام التوثيق و نماذج التعليمات البرمجية المصدر.