Memuat dan menyimpan font CFF di Java
Memproses file Compact Font Format (.cff) berbasis PostScript secara terprogram dengan Aspose.Font untuk Java. Buka biner font CFF dari jalur file lokal atau array byte dalam memori, periksa struktur font menggunakan kelas CffFont, dan simpan data font yang telah dimodifikasi kembali ke disk atau stream tanpa dependensi eksternal.
Compact Font Format (CFF) adalah representasi ringkas dari outline font PostScript Type 1, yang banyak digunakan dalam dokumen PDF, font OpenType CFF (.otf), dan alur kerja penerbitan digital. Dengan Aspose.Font untuk Java, pengembang dapat:
- Pemrosesan font dalam memori: Memuat byte font CFF langsung dari BLOB database, stream PDF, atau penyimpanan cloud tanpa menulis file sementara ke disk.
- Manajemen penyimpanan ringkas: Memanipulasi struktur font outline PostScript dengan penggunaan ruang yang rendah untuk penyematan dokumen yang optimal.
- Operasi File yang Fleksibel: Membaca file font CFF menggunakan
FileSystemStreamSourceatauByteContentStreamSourcedan mengekspornya melaluiCffFont.save().
Alur kerja pemrosesan font CFF
Memuat CFF dari disk - menggunakan (jalur file (.cff)) dan FontDefinition + FileSystemStreamSource
Memuat CFF dari memori - menggunakan array byte biner (byte[]) dan FontDefinition + ByteContentStreamSource
Memeriksa/mengedit data CFF - menggunakan objek CffFont dan CffFont.getFontName(), CffFont.getNumGlyphs(), dll.
Menyimpan CFF ke disk - menggunakan objek CffFont dan CffFont.getFontName(), CffFont.getNumGlyphs(), dll.
Bagaimana cara memuat CFF dari font di disk di Java?
Memuat file font .cff dengan mendefinisikan FontDefinition dengan FontType.CFF dan 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.");
}
}Bagaimana cara memuat font CFF dari array byte (`byte[]`)?
Setelah memuat font ke dalam memori dan melakukan ekstraksi atau modifikasi data, Anda dapat menyimpan font kembali ke penyimpanan disk lokal atau menuliskannya ke stream byte keluaran.
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());
}
}Bagaimana cara memodifikasi dan menyimpan font CFF ke disk?
Setelah memuat dan berinteraksi dengan instance CffFont, tulis file font ke lokasi baru menggunakan metode 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);
}
}Instalasi dan Penyiapan
Sertakan Aspose.Font untuk Java dalam proyek Anda melalui 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>
Pertanyaan Umum
1. Apa perbedaan antara OpenType CFF (.otf) dan CFF mandiri (.cff)?
File .cff mandiri berisi data program font PostScript mentah tanpa pembungkus tabel OpenType. File .otf dengan outline CFF membungkus aliran .cff di dalam struktur tabel OpenType standar (CFF, cmap, head, dll.). Aspose.Font for Java mendukung penanganan format CFF mandiri dan OpenType CFF.
2. Bisakah saya mengonversi font CFF ke format font lain seperti TTF atau WOFF di Java?
Ya. Setelah dimuat ke dalam instance CffFont, Aspose.Font for Java menyediakan fasilitas rendering dan encoding yang memungkinkan konversi data font ke format target lain seperti TTF, WOFF, atau WOFF2.
3. Bisakah saya menyimpan CffFont yang telah dimodifikasi langsung ke OutputStream?
Ya. Selain meneruskan string jalur file ke font.save(fileName), Anda dapat meneruskan java.io.OutputStream untuk menulis data font biner secara langsung ke aliran jaringan atau memori.