Завантаження та збереження шрифтів 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>
FAQ
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, щоб записати двійкові дані шрифту безпосередньо в мережеві потоки або потоки в пам’яті.