Javaでファイル、ストリーム、バイト配列からフォントを読み込む

Aspose.Font for Javaを使用して、TrueType (TTF)、OpenType (OTF)、WOFF/WOFF2、Embedded OpenType (EOT)、Type1、Compact Font Format (CFF) フォントをプログラムで読み込み、初期化します。ネイティブJava AWTやOSに依存したフォントのインストールに頼ることなく、ディスクパス、システムファイル、バイトストリーム、またはメモリ内の配列からフォントをシームレスに読み込めます。

 

Aspose.Font for Javaで任意のフォントを開いて操作するには、2つの主要なパラメーターが必要です:

  • フォント形式 (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());
    }
}

インストールとセットアップ

Mavenを使用して、Aspose.Font for Javaをプロジェクトに追加します。

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. フォントを読み込む際に、FontType と fileExtension の両方を渡す必要があるのはなぜですか?

FontType は全体的な形式ファミリー (たとえば FontType.TTF) を表しますが、このファミリーには複数の異なるファイル形式 (たとえば .ttf、.eot、.ttc) が含まれます。fileExtension を指定することで、ライブラリがその特定のコンテナ形式に適したパーサーを使用することが保証されます。

2. データベースの BLOB フィールドからフォントを直接読み込めますか?

はい。BLOB データを byte[] 配列として取得し、ByteContentStreamSource を使用して、データをディスクに書き込むことなく FontDefinition を初期化できます。

3. バイナリデータがファイル内の特定のオフセットから始まる場合、フォントを読み込むにはどうすればよいですか?

FontFileDefinition(String fileExtension, StreamSource streamSource, long offset) コンストラクターを使用し、フォントデータが開始するバイトオフセットを渡します。