Завантаження шрифтів із файлів, потоків і масивів байтів у Java
Програмно завантажуйте та ініціалізуйте шрифти TrueType (TTF), OpenType (OTF), WOFF/WOFF2, Embedded OpenType (EOT), Type1 і Compact Font Format (CFF) за допомогою Aspose.Font for Java. Легко завантажуйте шрифти зі шляхів на диску, системних файлів, потоків байтів або масивів у пам’яті без залежності від нативного Java AWT або встановлення шрифтів, специфічного для операційної системи.
Щоб відкрити та працювати з будь-яким шрифтом в Aspose.Font for Java, потрібні два основні параметри:
- Формат шрифту (FontType): Визначає загальну категорію (наприклад, FontType.TTF, FontType.Type1, FontType.CFF).
- Двійкове джерело шрифту (StreamSource/FontFileDefinition): Інкапсулює базовий двійковий потік незалежно від того, чи знаходиться він на диску, у базі даних або всередині потоків документів (наприклад, PDF/DOCX).
- Центральний клас
FontDefinitionоб’єднує ці параметри, дозволяючиFont.open(fontDefinition) повертати уніфікований об’єктcom.aspose.font.Font.
Як завантажити шрифт за допомогою java.io.File?
Найпростіший спосіб завантажити шрифти, що зберігаються на локальних дисках, за допомогою FontFileDefinition(File file).
import com.aspose.font.*;
import java.io.File;
import java.nio.file.Paths;
public class LoadFontFromFile {
public static void main(String[] args) {
// Step 1: Define path to font file
String fontPath = Paths.get("data", "Montserrat-Regular.ttf").toString();
// Step 2: Create FontFileDefinition from java.io.File
FontFileDefinition fileDef = new FontFileDefinition(new File(fontPath));
// Step 3: Create FontDefinition (extension is auto-detected from FontFileDefinition)
FontDefinition fontDef = new FontDefinition(FontType.TTF, fileDef);
// Step 4: Open and load font instance
Font font = Font.open(fontDef);
System.out.println("Successfully loaded font: " + font.getFontName());
}
}Як завантажити шрифт за допомогою FileSystemStreamSource?
Забезпечує явну обробку розширення файлу для точного визначення формату під час завантаження шрифтів зі шляхів на диску.
import com.aspose.font.*;
import java.nio.file.Paths;
public class LoadFontFromStreamSource {
public static void main(String[] args) {
String fontPath = Paths.get("data", "Montserrat-Regular.ttf").toString();
// Pass 'ttf' explicitly to ensure proper format mapping
FontFileDefinition fileDef = new FontFileDefinition("ttf", new FileSystemStreamSource(fontPath));
FontDefinition fontDef = new FontDefinition(FontType.TTF, fileDef);
Font font = Font.open(fontDef);
System.out.println("Loaded Font Name: " + font.getFontName());
}
}Як завантажити шрифт безпосередньо з джерела потоку (без FontFileDefinition)?
Передайте FileSystemStreamSource безпосередньо до FontDefinition для спрощеного завантаження.
import com.aspose.font.*;
import java.nio.file.Paths;
public class LoadFontDirectStream {
public static void main(String[] args) {
String fontPath = Paths.get("data", "Montserrat-Regular.ttf").toString();
// Provide FontType, file extension, and StreamSource directly
FontDefinition fontDef = new FontDefinition(FontType.TTF, "ttf", new FileSystemStreamSource(fontPath));
Font font = Font.open(fontDef);
System.out.println("Loaded Font Name: " + font.getFontName());
}
}Як завантажити шрифт із масиву байтів у пам'яті (byte[])?
Ідеально підходить для завантаження шрифтів, отриманих із баз даних, мережевих запитів, хмарного сховища або вбудованих ресурсів PDF/DOCX за допомогою ByteContentStreamSource.
import com.aspose.font.*;
import java.nio.file.Files;
import java.nio.file.Paths;
public class LoadFontFromByteArray {
public static void main(String[] args) throws Exception {
String fontPath = Paths.get("data", "Montserrat-Regular.ttf").toString();
// Read font binary data into byte array
byte[] fontBytes = Files.readAllBytes(Paths.get(fontPath));
// Initialize FontDefinition with ByteContentStreamSource
FontDefinition fontDef = new FontDefinition(FontType.TTF, "ttf", new ByteContentStreamSource(fontBytes));
// Open font from memory
Font font = Font.open(fontDef);
System.out.println("Loaded Font from Memory: " + font.getFontName());
}
}Встановлення та налаштування
Додайте 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. Чому під час завантаження шрифтів потрібно передавати і FontType, і fileExtension?
FontType представляє загальне сімейство форматів (наприклад, FontType.TTF), але до цього сімейства належать кілька різних форматів файлів (наприклад, .ttf, .eot і .ttc). Зазначення fileExtension гарантує, що бібліотека використовуватиме правильний парсер для конкретного формату контейнера.
2. Чи можу я завантажувати шрифти безпосередньо з полів BLOB бази даних?
Так. Отримайте дані BLOB як масив byte[] і використовуйте ByteContentStreamSource для ініціалізації FontDefinition без запису даних на диск.
3. Як завантажити шрифт, якщо двійкові дані починаються з певного зміщення всередині файлу?
Використовуйте FontFileDefinition(String fileExtension, StreamSource streamSource, long offset) constructor, передавши зміщення в байтах, з якого починаються дані шрифту.