عرض النص باستخدام خطوط Adobe Type 1 في Java

اعرض النص بسلاسة، واستخرج مخططات الحروف الرسومية، وقِس مقاييس النص، وارسم نصوصًا مخصصة باستخدام خطوط Adobe Type 1 (PostScript) في تطبيقات Java. باستخدام Aspose.Font for Java، يمكن للمطورين تحويل النص الخام إلى أشكال حروف رسومية متجهية عالية الدقة وعرضها مباشرةً على سياقات الرسومات أو الصور النقطية دون تبعيات خارجية.

 

تستخدم خطوط Adobe Type 1 تقنية مخططات PostScript، مما يوفر وضوحًا استثنائيًا وتحجيمًا دقيقًا للمتجهات. يتيح عرض نصوص خطوط Type 1 برمجيًا في Java إمكانات مؤسسية رئيسية:

  • إنشاء الرسومات المخصصة: - عرض النصوص الديناميكية على بيئات اللوحة أو الصور المُنشأة أو معاينات المستندات.
  • استخراج مسارات الحروف الرسومية: - استخراج المخططات الهندسية (IGlyphAccessor & GeneralPath) لإجراء تحويلات متجهية مخصصة أو عمليات CAD.
  • دقة مقاييس النص: - حساب الحدود الدقيقة للسلاسل النصية، وعروض التقدم، وارتفاعات الأسطر، والمسافات بين الحروف الرسومية قبل العرض.
  • العرض عبر الأنظمة الأساسية: - تحقيق اتساق مثالي على مستوى وحدات البكسل للطباعة عبر خوادم Linux وحاويات Docker والخدمات المصغرة السحابية.

إمكانات العرض الأساسية

المخططات المتجهية للحروف الرسومية - استرداد المسارات المتجهية الدقيقة (java.awt.geom.GeneralPath) للحروف الرسومية الفردية في خطوط Type 1.

الرسم على سياق الرسومات - رسم السلاسل النصية مباشرةً على Graphics2D أو الصور النقطية (BufferedImage).

الترميزات والمقاييس المخصصة - قياس مقاييس الأحرف، وتحديد مواضع الأحرف، والتعامل مع جداول ترميز PostScript.

بدون تبعيات على واجهة المستخدم الرسومية لنظام التشغيل - تنفيذ عرض النصوص على الخوادم دون واجهة رسومية، دون الحاجة إلى خادم X11 أو متطلبات GDI الأصلية.

كيفية عمل عرض النص في Aspose.Font for Java

تحميل خط Type 1: تهيئة كائن Type1Font من مسارات الملفات (.pfb, .pfm) أو تدفقات البايتات.

استخراج مخططات الحروف الرسومية: الوصول إلى تمثيلات الحروف الرسومية أو حساب هندسة المسار باستخدام ترميز الخط.

الرسم على اللوحة: عرض مسارات الحروف الرسومية أو النص المنسق مباشرةً على لوحة رسومية مستهدفة.

كيفية عمل عرض النص في Aspose.Font for Java

تحميل خط Type 1: تهيئة كائن Type1Font من مسارات الملفات (.pfb, .pfm) أو تدفقات البايتات.

استخراج مخططات الحروف الرسومية: الوصول إلى تمثيلات الحروف الرسومية أو حساب هندسة المسار باستخدام ترميز الخط.

الرسم على اللوحة: عرض مسارات الحروف الرسومية أو النص المنسق مباشرةً على لوحة رسومية مستهدفة.

مثال على كود Java لعرض النص باستخدام خط Type 1

فيما يلي تطبيق كامل بلغة Java يوضح كيفية تحميل خط Type 1، وحساب مخططات الحروف الرسومية، وعرض نص مخصص على لوحة صور.

import com.aspose.font.ByteContentStreamSource;
import com.aspose.font.FontDefinition;
import com.aspose.font.FontType;
import com.aspose.font.Type1Font;
import com.aspose.font.GlyphId;

import java.awt.*;
import java.awt.geom.GeneralPath;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import javax.imageio.ImageIO;

public class RenderType1Text {
    public static void main(String[] args) throws IOException {
        // Load Type 1 font bytes
        String pfbPath = "path/to/font.pfb";
        byte[] fontBytes = Files.readAllBytes(Paths.get(pfbPath));

        // Initialize FontDefinition & open Type1Font
        FontDefinition fontDef = new FontDefinition(FontType.Type1, new ByteContentStreamSource(fontBytes));
        Type1Font font = (Type1Font) com.aspose.font.Font.open(fontDef);

        // Create canvas image and Graphics2D context
        int width = 800;
        int height = 200;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g2d = image.createGraphics();

        // Configure rendering hints for clean vector text
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g2d.setColor(Color.WHITE);
        g2d.fillRect(0, 0, width, height);
        g2d.setColor(Color.BLUE);

        // Render text character by character using glyph paths
        String textToRender = "Type 1 Text Rendering";
        double xPosition = 50;
        double yPosition = 120;
        double fontSize = 36;

        for (char c : textToRender.toCharArray()) {
            // Get Glyph ID for the character
            GlyphId glyphId = font.getEncoding().decodeToGlyphId(c);
            
            // Extract vector outline path
            GeneralPath path = font.getGlyphClass().getGlyphPath(glyphId);

            if (path != null) {
                // Save state and position glyph on canvas
                Graphics2D g2dCopy = (Graphics2D) g2d.create();
                g2dCopy.translate(xPosition, yPosition);
                g2dCopy.scale(fontSize / 1000.0, -fontSize / 1000.0); // Adjust PostScript coordinate scaling

                g2dCopy.fill(path);
                g2dCopy.dispose();
            }

            // Advance cursor position for next character
            xPosition += font.getGlyphClass().getGlyphWidth(glyphId) * (fontSize / 1000.0);
        }

        g2d.dispose();

        // Save rendered image to file
        ImageIO.write(image, "png", new File("rendered_type1_text.png"));
        System.out.println("Text rendered successfully with Type 1 font.");
    }
}

التثبيت والإعداد

قم بتضمين Aspose.Font for Java في مشروعك باستخدام Maven.

Package Manager Console Command

<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>Latest</version>
</dependency>

الأسئلة الشائعة

1. هل يمكنني استخراج مسارات المتجهات الخام من خطوط Type 1 دون عرضها فورًا؟

نعم. يمكنك استرداد الهندسة المتجهية الدقيقة (java.awt.geom.GeneralPath) لأي حرف أو معرّف حرف رسومي في خط Type 1 وتحويل المسارات أو تغيير حجمها أو فحصها بشكل مستقل.

2. كيف يتعامل Aspose.Font مع أنظمة إحداثيات PostScript أثناء عرض النص؟

تستخدم خطوط PostScript Type 1 محور Y معكوسًا مقارنةً بمساحات إحداثيات الشاشة القياسية. يوفر Aspose.Font هندسة الحروف الرسومية التي يمكن تحويلها أو عكسها بسهولة باستخدام تحويلات التحجيم القياسية.

3. هل يتطلب العرض من جانب الخادم محرك عرض أو مكتبات أصلية؟

لا. يعمل Aspose.Font for Java بشكل كامل في وضع headless. يمكنك حساب هياكل الحروف الرسومية وعرض النصوص كصور على الخوادم السحابية أو خدمات Linux أو البيئات المستندة إلى الحاويات دون تثبيت X11 أو برامج تشغيل العرض الرسومية الأصلية.