Mengekstrak batasan lisensi font TrueType dan OpenType dengan Java

Saat bekerja dengan font digital dalam aplikasi perangkat lunak, mesin pembuatan dokumen, atau platform web, sangat penting untuk mematuhi batasan lisensi font. Vendor font menyematkan aturan lisensi dan penggunaan langsung ke dalam file font untuk menentukan bagaimana font dapat disematkan, diinstal, atau dimodifikasi. Dengan Aspose.Font for Java, pengembang dapat memeriksa metrik tabel OS/2 yang disematkan dan mengekstrak batasan lisensi secara terprogram dari file font TrueType (.ttf) dan OpenType (.otf).

 

Memahami mode lisensi font

Spesifikasi font TrueType dan OpenType menyimpan izin penyematan dalam flag fsType di dalam tabel OS/2 font. Aspose.Font for Java mengategorikan batasan lisensi yang disematkan ini ke dalam mode-mode berbeda melalui kelas LicenseFlags:

  • Penyematan yang dapat diinstal: Font dapat disematkan dan diinstal secara permanen pada sistem jarak jauh atau untuk digunakan oleh pengguna lain.
  • Penyematan yang dapat diedit: Font dapat disematkan dan dimuat sementara pada sistem lain. Pengeditan diizinkan, termasuk memformat teks baru menggunakan font yang disematkan, dan perubahan dapat disimpan.
  • Penyematan untuk pratinjau dan pencetakan: Font dapat disematkan dan dimuat sementara pada sistem lain khusus untuk melihat atau mencetak dokumen.
  • Penyematan dengan lisensi terbatas: Font tidak boleh dimodifikasi, disematkan, atau ditukar dengan cara apa pun tanpa terlebih dahulu memperoleh izin eksplisit dari pemilik yang sah.

Mengekstrak batasan lisensi TTF di Java

Untuk membaca izin lisensi menggunakan Aspose.Font for Java:

  • Muat file font menggunakan FontFileDefinition dan FontDefinition, dengan menentukan FontType.TTF.
  • Ambil tabel OS/2 dari kumpulan tabel font (getTtfTables().getOs2Table()).
  • Dapatkan flag lisensi menggunakan getLicenseFlags().
  • Evaluasi hak penyematan menggunakan metode pembantu seperti isEditableEmbedding(), isInstallableEmbedding(), isPreviewAndPrintEmbedding(), atau 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()));
    }
}

Instalasi dan Penyiapan

Sertakan Aspose.Font for Java dalam proyek Anda melalui 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. Apakah font Type1 mendukung ekstraksi pembatasan lisensi menggunakan LicenseFlags?

Tidak. Format font Type1 standar (.pfb/.pfa) tidak memiliki tabel OS/2. Flag fsType dan struktur tabel OS/2 khusus untuk format font TrueType (.ttf) dan OpenType (.otf).

2. Apa artinya jika licenseFlags.isFSTypeAbsent() mengembalikan true?

Jika isFSTypeAbsent() mengembalikan true (atau jika licenseFlags adalah null), hal ini menunjukkan bahwa tidak ada flag pembatasan lisensi yang tertanam dalam tabel OS/2 pada file font.

3. Bagaimana cara memeriksa apakah font mengizinkan pengeditan konten dokumen?

Anda dapat memeriksa licenseFlags.isEditableEmbedding(). Jika nilainya true, font mengizinkan pemuatan dan pengeditan sementara, sehingga pengguna dapat memformat teks baru menggunakan font yang disematkan dan menyimpan perubahan.