تحميل وحفظ خطوط CFF في Java
عالج ملفات Compact Font Format (.cff) المستندة إلى PostScript برمجيًا باستخدام Aspose.Font for Java. افتح ملفات الخطوط الثنائية CFF من مسارات الملفات المحلية أو من مصفوفات البايت الموجودة في الذاكرة، وافحص هياكل الخطوط باستخدام الفئة CffFont، واحفظ بيانات الخط المعدلة مرة أخرى على القرص أو في التدفقات دون تبعيات خارجية.
إن Compact Font Format (CFF) هو تمثيل مضغوط لمخططات خطوط PostScript Type 1، ويُستخدم على نطاق واسع داخل مستندات PDF وخطوط OpenType CFF (.otf) ومسارات النشر الرقمي. باستخدام Aspose.Font for Java، يمكن للمطورين:
- معالجة الخطوط في الذاكرة: تحميل بايتات خطوط CFF مباشرة من كائنات BLOB في قواعد البيانات أو تدفقات PDF أو التخزين السحابي دون كتابة ملفات مؤقتة على القرص.
- إدارة التخزين المضغوط: التعامل مع هياكل خطوط مخططات PostScript منخفضة الحجم لتحسين تضمينها في المستندات.
- عمليات الملفات المرنة: قراءة ملفات خطوط CFF باستخدام
FileSystemStreamSourceأوByteContentStreamSourceوتصديرها عبرCffFont.save().
سير عمل معالجة خطوط CFF
تحميل CFF من القرص - يستخدم (مسار الملف (.cff)) وFontDefinition + FileSystemStreamSource
تحميل CFF من الذاكرة - يستخدم مصفوفة بايت ثنائية (byte[]) وFontDefinition + ByteContentStreamSource
فحص/تحرير بيانات CFF - يستخدم كائن CffFont وCffFont.getFontName() وCffFont.getNumGlyphs()، وما إلى ذلك.
حفظ CFF على القرص - يستخدم كائن CffFont وCffFont.getFontName() وCffFont.getNumGlyphs()، وما إلى ذلك.
كيفية تحميل CFF من ملف خط موجود على القرص في Java؟
حمّل ملف خط .cff عن طريق تعريف FontDefinition باستخدام FontType.CFF وFileSystemStreamSource.
import com.aspose.font.*;
public class LoadCffFontFromDisk {
public static void main(String[] args) {
// Step 1: Specify path to the .cff font file
String fileName = "path/to/OpenSans-Regular.cff";
// Step 2: Initialize FontDefinition with CFF format and FileSystemStreamSource
FontDefinition fd = new FontDefinition(
FontType.CFF,
new FontFileDefinition("cff", new FileSystemStreamSource(fileName))
);
// Step 3: Open the CFF font
CffFont font = (CffFont) Font.open(fd);
// Step 4: Verify font properties
System.out.println("Font Name: " + font.getFontName());
System.out.println("Glyph Count: " + font.getNumGlyphs());
System.out.println("CFF Font successfully loaded from disk.");
}
}كيفية تحميل خط CFF من مصفوفة بايت (`byte[]`)?
بعد تحميل الخط إلى الذاكرة وإجراء استخراج البيانات أو تعديلها، يمكنك حفظ الخط مرة أخرى في وحدة التخزين المحلية أو كتابته في تدفق بايتات الإخراج.
import com.aspose.font.*;
import java.nio.file.Files;
import java.nio.file.Paths;
public class LoadCffFontFromByteArray {
public static void main(String[] args) throws Exception {
String fileName = "path/to/OpenSans-Regular.cff";
// Step 1: Read font file bytes into memory
byte[] fontMemoryData = Files.readAllBytes(Paths.get(fileName));
// Step 2: Create FontDefinition using ByteContentStreamSource
FontDefinition fd = new FontDefinition(
FontType.CFF,
new FontFileDefinition("cff", new ByteContentStreamSource(fontMemoryData))
);
// Step 3: Open font instance from byte array
CffFont font = (CffFont) Font.open(fd);
System.out.println("Loaded CFF Font Name from memory: " + font.getFontName());
}
}كيفية تعديل خطوط CFF وحفظها على القرص؟
بعد تحميل نسخة من CffFont والتعامل معها، اكتب ملف الخط إلى موقع جديد باستخدام الطريقة save().
import com.aspose.font.*;
import java.nio.file.Files;
import java.nio.file.Paths;
public class SaveCffFontToDisk {
public static void main(String[] args) throws Exception {
String inputPath = "path/to/OpenSans-Regular.cff";
String outputPath = "path/to/OpenSans-Regular_out.cff";
// Step 1: Load font from byte array
byte[] fontMemoryData = Files.readAllBytes(Paths.get(inputPath));
FontDefinition fd = new FontDefinition(
FontType.CFF,
new FontFileDefinition("cff", new ByteContentStreamSource(fontMemoryData))
);
CffFont font = (CffFont) Font.open(fd);
System.out.println("Loaded CFF Font: " + font.getFontName());
// Step 2: Work with font data (inspect metrics, glyphs, or update properties)
// Step 3: Save CFF font back to disk
font.save(outputPath);
System.out.println("CFF Font successfully saved to: " + outputPath);
}
}التثبيت والإعداد
أضف 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. ما الفرق بين OpenType CFF (.otf) وCFF المستقل (.cff)؟
يحتوي ملف .cff المستقل على بيانات برنامج خط PostScript الخام دون أغلفة جداول OpenType. بينما يغلّف ملف .otf الذي يحتوي على مخططات CFF تدفق .cff داخل هياكل جداول OpenType القياسية (CFF وcmap وhead وما إلى ذلك). يدعم Aspose.Font for Java التعامل مع كل من تنسيقات CFF المستقلة وOpenType CFF.
2. هل يمكنني تحويل خطوط CFF إلى تنسيقات خطوط أخرى مثل TTF أو WOFF في Java؟
نعم. بمجرد تحميل الخط في مثيل CffFont، يوفر Aspose.Font for Java إمكانات العرض والترميز التي تسمح بتحويل بيانات الخط إلى تنسيقات مستهدفة أخرى مثل TTF أو WOFF أو WOFF2.
3. هل يمكنني حفظ CffFont معدّل مباشرةً في OutputStream؟
نعم. بالإضافة إلى تمرير سلسلة مسار ملف إلى font.save(fileName)، يمكنك تمرير java.io.OutputStream لكتابة بيانات الخط الثنائية مباشرةً إلى تدفقات الشبكة أو الذاكرة.