Java を使用して TrueType および OpenType フォントのライセンス制限を抽出する

ソフトウェアアプリケーション、ドキュメント生成エンジン、または Web プラットフォームでデジタルフォントを使用する場合、フォントのライセンス制限を遵守することが重要です。フォントベンダーは、フォントをどのように埋め込み、インストール、または変更できるかを定義するために、ライセンスおよび使用に関するルールをフォントファイルに直接組み込みます。Aspose.Font for Java を使用すると、開発者は埋め込まれた OS/2 テーブルのメトリクスを確認し、TrueType (.ttf) および OpenType (.otf) フォントファイルからライセンス制限をプログラムで抽出できます。

 

フォントライセンスモードを理解する

TrueType および OpenType フォント仕様では、フォントの OS/2 テーブル内の fsType フラグに埋め込み権限が格納されています。Aspose.Font for Java は、LicenseFlags クラスを使用して、これらの埋め込まれたライセンス制限を異なるモードに分類します。

  • インストール可能な埋め込み: フォントを埋め込み、リモートシステムに永続的にインストールしたり、他のユーザーが使用したりできます。
  • 編集可能な埋め込み: フォントを埋め込み、他のシステムに一時的に読み込むことができます。編集が許可されており、埋め込まれたフォントを使用した新しいテキストの書式設定も含まれます。また、変更を保存できます。
  • プレビューおよび印刷用の埋め込み: フォントを埋め込み、他のシステムに一時的に読み込むことができますが、これはドキュメントの表示または印刷のみを目的とします。
  • 制限付きライセンスによる埋め込み: 法的所有者から明示的な許可を事前に取得せずに、フォントを変更、埋め込み、またはいかなる方法でも交換してはなりません。

Java で TTF ライセンス制限を抽出する

Aspose.Font for Java を使用してライセンス権限を読み取るには:

  • FontFileDefinitionFontDefinition を使用してフォントファイルを読み込み、FontType.TTF. を指定します。
  • フォントのテーブルコレクション (getTtfTables().getOs2Table()) から OS/2 テーブルを取得します。
  • getLicenseFlags() を使用してライセンスフラグを取得します。
  • isEditableEmbedding()isInstallableEmbedding()isPreviewAndPrintEmbedding()、または isRestrictedLicenseEmbedding() などのヘルパーメソッドを使用して、埋め込み権限を評価します。

String fileName = Utils.getDataDir() + "Montserrat-Regular.ttf"; // Font file name with full path

FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont font = (TtfFont) Font.open(fd);

LicenseFlags licenseFlags = null;
if (font.getTtfTables().getOs2Table() != null)
{
    licenseFlags = font.getTtfTables().getOs2Table().getLicenseFlags();
}

if (licenseFlags == null || licenseFlags.isFSTypeAbsent())
{
    System.out.println(MessageFormat.format("Font {0} has no embedded license restrictions", font.getFontName()));
}
else
{
    if (licenseFlags.isEditableEmbedding())
    {
        System.out.println(MessageFormat.format("Font {0} may be embedded, and may be temporarily loaded on other systems."
            + " In addition, editing is permitted, including ability to format new text"
            + " using the embedded font, and changes may be saved.", font.getFontName()));
    }
    else if (licenseFlags.isInstallableEmbedding())
    {
        System.out.println(MessageFormat.format("Font {0} may be embedded, and may be permanently installed"
            + " for use on a remote systems, or for use by other users.", font.getFontName()));
    }
    else if (licenseFlags.isPreviewAndPrintEmbedding())
    {
        System.out.println(MessageFormat.format("Font {0} may be embedded, and may be temporarily loaded"
            + " on other systems for purposes of viewing or printing the document.", font.getFontName()));
    }
    else if (licenseFlags.isRestrictedLicenseEmbedding())
    {
        System.out.println(MessageFormat.format("Font {0} must not be modified, embedded or exchanged in any manner"
            + " without first obtaining explicit permission of the legal owner.", 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>

FAQ

1. Type1 フォントでは、LicenseFlags を使用してライセンス制限を抽出できますか?

いいえ。標準の Type1 フォント形式 (.pfb/.pfa) には OS/2 テーブルが含まれていません。fsType フラグと OS/2 テーブル構造は、TrueType (.ttf) および OpenType (.otf) フォント形式に固有のものです。

2. licenseFlags.isFSTypeAbsent() が true を返す場合、何を意味しますか?

isFSTypeAbsent() が true を返す場合(または licenseFlagsnull の場合)、フォントファイルの OS/2 テーブルに埋め込まれたライセンス制限フラグが存在しないことを示します。

3. フォントでドキュメントのコンテンツの編集が許可されているかどうかを確認するにはどうすればよいですか?

licenseFlags.isEditableEmbedding() を確認できます。値が true の場合、フォントは一時的な読み込みと編集を許可しているため、ユーザーは埋め込まれたフォントを使用して新しいテキストをフォーマットし、変更を保存できます。