Betűtípusok betöltése fájlokból, adatfolyamokból és bájttömbökből Java-ban

Programozott módon tölthet be és inicializálhat TrueType (TTF), OpenType (OTF), WOFF/WOFF2, Embedded OpenType (EOT), Type1 és Compact Font Format (CFF) betűtípusokat az Aspose.Font for Java használatával. Töltsön be betűtípusokat zökkenőmentesen lemezútvonalakról, rendszerfájlokból, bájtfolyamokból vagy memóriában lévő tömbökből anélkül, hogy a natív Java AWT-ra vagy az operációs rendszertől függő betűtípus-telepítésre támaszkodna.

 

Az Aspose.Font for Java használatával bármely betűtípus megnyitásához és kezeléséhez két kulcsfontosságú paraméter szükséges:

  • Betűtípus-formátum (FontType): Az általános kategóriát azonosítja (például FontType.TTF, FontType.Type1, FontType.CFF).
  • Betűtípus bináris forrása (StreamSource/FontFileDefinition): A mögöttes bináris adatfolyamot foglalja magában, függetlenül attól, hogy az lemezen, adatbázisban vagy dokumentum-adatfolyamokban (például PDF/DOCX) található.
  • A központi FontDefinition osztály összekapcsolja ezeket a paramétereket, lehetővé téve, hogy a Font.open(fontDefinition) egy egységes com.aspose.font.Font objektumot adjon vissza.

Hogyan tölthet be betűtípust a java.io.File használatával?

A helyi meghajtókon tárolt betűtípusok betöltésének legegyszerűbb módja a FontFileDefinition(File file) használata.

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());
    }
}

Hogyan tölthet be betűtípust a FileSystemStreamSource használatával?

Explicit fájlkiterjesztés-kezelést biztosít a formátum pontos felismeréséhez, amikor betűtípusokat tölt be lemezútvonalakról.

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());
    }
}

Hogyan tölthet be betűtípust közvetlen adatfolyamforrásból (FontFileDefinition nélkül)?

Adja át közvetlenül a FileSystemStreamSource elemet a FontDefinition számára az egyszerűbb betöltés érdekében.

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());
    }
}

Hogyan tölthet be betűtípust memóriában lévő bájttömbből (byte[])?

Ideális adatbázisokból, hálózati kérésekből, felhőalapú tárhelyről vagy beágyazott PDF/DOCX-erőforrásokból lekért betűtípusok betöltéséhez a ByteContentStreamSource használatával.

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());
    }
}

Telepítés és beállítás

Adja hozzá az Aspose.Font for Java csomagot a projekthez a Maven használatával.

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>

Gyakran ismételt kérdések

1. Miért kell a betűtípusok betöltésekor a FontType és a fileExtension értékét is átadnom?

A FontType az általános formátumcsaládot jelöli (például FontType.TTF), azonban több különböző fájlformátum is tartozhat ehhez a családhoz (például .ttf, .eot és .ttc). A fileExtension megadásával biztosítható, hogy a könyvtár az adott tárolóformátumhoz megfelelő elemzőt használja.

2. Betölthetem a betűtípusokat közvetlenül egy adatbázis BLOB-mezőiből?

Igen. Kérje le a BLOB-adatokat byte[] tömbként, és használja a ByteContentStreamSource elemet a FontDefinition inicializálásához anélkül, hogy az adatokat lemezre kellene írnia.

3. Hogyan tölthetek be egy betűtípust, ha a bináris adatok egy fájlon belül egy adott eltolási pozíciónál kezdődnek?

Használja a FontFileDefinition(String fileExtension, StreamSource streamSource, long offset) konstruktort, és adja meg azt a bájtoffsetet, ahol a betűtípus adatai kezdődnek.