TrueType ve OpenType yazı tipi lisans kısıtlamalarını Java ile çıkarma

Yazılım uygulamalarında, belge oluşturma motorlarında veya web platformlarında dijital yazı tipleriyle çalışırken, yazı tipi lisans kısıtlamalarına uymak kritik önem taşır. Yazı tipi sağlayıcıları, yazı tiplerinin nasıl gömülebileceğini, yüklenebileceğini veya değiştirilebileceğini tanımlamak için lisanslama ve kullanım kurallarını doğrudan yazı tipi dosyalarına yerleştirir. Aspose.Font for Java kullanarak geliştiriciler, gömülü OS/2 tablosu ölçümlerini inceleyebilir ve TrueType (.ttf) ve OpenType (.otf) yazı tipi dosyalarındaki lisans kısıtlamalarını programlı olarak çıkarabilir.

 

Yazı tipi lisanslama modlarını anlama

TrueType ve OpenType yazı tipi belirtimleri, gömme izinlerini yazı tipinin OS/2 tablosundaki fsType bayrağında depolar. Aspose.Font for Java, bu gömülü lisans kısıtlamalarını LicenseFlags sınıfı aracılığıyla farklı modlara ayırır:

  • Yüklenebilir gömme: Yazı tipi gömülebilir ve uzak sistemlere kalıcı olarak yüklenebilir veya diğer kullanıcılar tarafından kullanılabilir.
  • Düzenlenebilir gömme: Yazı tipi gömülebilir ve diğer sistemlerde geçici olarak yüklenebilir. Gömülü yazı tipini kullanarak yeni metni biçimlendirme de dahil olmak üzere düzenlemeye izin verilir ve değişiklikler kaydedilebilir.
  • Önizleme ve yazdırma gömmesi: Yazı tipi, yalnızca belgeyi görüntülemek veya yazdırmak amacıyla diğer sistemlere gömülebilir ve geçici olarak yüklenebilir.
  • Kısıtlı lisanslı gömme: Yasal sahibinden önceden açık izin alınmadan yazı tipi hiçbir şekilde değiştirilemez, gömülemez veya paylaşılmaz.

Java'da TTF lisans kısıtlamalarını çıkarma

Aspose.Font for Java kullanarak lisans izinlerini okumak için:

  • FontType.TTF. belirterek FontFileDefinition ve FontDefinition kullanarak yazı tipi dosyasını yükleyin.
  • Yazı tipinin tablo koleksiyonundan (getTtfTables().getOs2Table()) OS/2 tablosunu alın.
  • getLicenseFlags() kullanarak lisans bayraklarını alın.
  • isEditableEmbedding(), isInstallableEmbedding(), isPreviewAndPrintEmbedding() veya isRestrictedLicenseEmbedding() gibi yardımcı yöntemleri kullanarak gömme haklarını değerlendirin.

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

Kurulum ve Ayarlar

Aspose.Font for Java’yı Maven aracılığıyla projenize dahil edin.

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>

SSS

1. Type1 yazı tipleri, LicenseFlags kullanarak lisans kısıtlamalarının çıkarılmasını destekliyor mu?

Hayır. Standart Type1 yazı tipi biçimleri (.pfb/.pfa) bir OS/2 tablosu içermez. fsType bayrağı ve OS/2 tablo yapısı, TrueType (.ttf) ve OpenType (.otf) yazı tipi biçimlerine özgüdür.

2. licenseFlags.isFSTypeAbsent() değerinin true döndürmesi ne anlama gelir?

isFSTypeAbsent() true döndürürse (veya licenseFlags değeri null ise), yazı tipi dosyasının OS/2 tablosunda gömülü lisans kısıtlaması bayraklarının bulunmadığını belirtir.

3. Bir yazı tipinin belge içeriğinin düzenlenmesine izin verip vermediğini nasıl kontrol edebilirim?

licenseFlags.isEditableEmbedding() değerini kontrol edebilirsiniz. Değer true ise yazı tipi geçici olarak yüklenmeye ve düzenlenmeye izin verir; böylece kullanıcılar gömülü yazı tipini kullanarak yeni metni biçimlendirebilir ve değişiklikleri kaydedebilir.