แยกข้อจำกัดด้านใบอนุญาตของฟอนต์ TrueType และ OpenType ด้วย Java
เมื่อทำงานกับฟอนต์ดิจิทัลในแอปพลิเคชันซอฟต์แวร์ เอนจินสร้างเอกสาร หรือแพลตฟอร์มเว็บ การปฏิบัติตามข้อจำกัดด้านใบอนุญาตของฟอนต์ถือเป็นสิ่งสำคัญ ผู้ให้บริการฟอนต์จะฝังกฎด้านใบอนุญาตและการใช้งานไว้โดยตรงในไฟล์ฟอนต์เพื่อกำหนดวิธีการฝัง ติดตั้ง หรือแก้ไขฟอนต์ ด้วย Aspose.Font for Java นักพัฒนาสามารถตรวจสอบเมตริกของตาราง OS/2 ที่ฝังอยู่ และแยกข้อจำกัดด้านใบอนุญาตจากไฟล์ฟอนต์ TrueType (.ttf) และ OpenType (.otf) ด้วยโปรแกรม
ทำความเข้าใจโหมดการอนุญาตใช้งานฟอนต์
ข้อกำหนดของฟอนต์ TrueType และ OpenType จะจัดเก็บสิทธิ์การฝังไว้ในแฟล็ก fsType ภายในตาราง OS/2 ของฟอนต์ Aspose.Font for Java จัดหมวดหมู่ข้อจำกัดด้านใบอนุญาตที่ฝังอยู่นี้เป็นโหมดต่าง ๆ ผ่านคลาส LicenseFlags:
- การฝังแบบติดตั้งได้: สามารถฝังฟอนต์และติดตั้งอย่างถาวรบนระบบระยะไกล หรือเพื่อให้ผู้ใช้รายอื่นใช้งานได้
- การฝังแบบแก้ไขได้: สามารถฝังฟอนต์และโหลดชั่วคราวบนระบบอื่นได้ อนุญาตให้แก้ไข รวมถึงการจัดรูปแบบข้อความใหม่โดยใช้ฟอนต์ที่ฝังอยู่ และสามารถบันทึกการเปลี่ยนแปลงได้
- การฝังสำหรับการแสดงตัวอย่างและการพิมพ์: สามารถฝังฟอนต์และโหลดชั่วคราวบนระบบอื่นได้ โดยใช้เฉพาะสำหรับการดูหรือพิมพ์เอกสารเท่านั้น
- การฝังภายใต้ใบอนุญาตแบบจำกัด: ห้ามแก้ไข ฝัง หรือแลกเปลี่ยนฟอนต์ไม่ว่าด้วยวิธีใดโดยไม่ได้รับอนุญาตอย่างชัดแจ้งจากเจ้าของตามกฎหมายก่อน
แยกข้อจำกัดด้านใบอนุญาต TTF ใน Java
ในการอ่านสิทธิ์ใบอนุญาตโดยใช้ Aspose.Font for Java:
- โหลดไฟล์ฟอนต์โดยใช้
FontFileDefinitionและFontDefinitionโดยระบุFontType.TTF. - เรียกดูตาราง
OS/2จากคอลเลกชันตารางของฟอนต์ (getTtfTables().getOs2Table()) - รับแฟล็กใบอนุญาตโดยใช้
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()));
}
}การติดตั้งและการตั้งค่า
เพิ่ม Aspose.Font for Java ลงในโปรเจกต์ของคุณผ่าน 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>
คำถามที่พบบ่อย
1. แบบอักษร Type1 รองรับการแยกข้อจำกัดด้านใบอนุญาตโดยใช้ LicenseFlags หรือไม่?
ไม่ รูปแบบแบบอักษร Type1 มาตรฐาน (.pfb/.pfa) ไม่มีตาราง OS/2 แฟล็ก fsType และโครงสร้างตาราง OS/2 เป็นองค์ประกอบเฉพาะของรูปแบบแบบอักษร TrueType (.ttf) และ OpenType (.otf)
2. หมายความว่าอย่างไรหาก licenseFlags.isFSTypeAbsent() ส่งคืนค่า true?
หาก isFSTypeAbsent() ส่งคืนค่า true (หรือหาก licenseFlags เป็น null) แสดงว่าไม่มีแฟล็กข้อจำกัดด้านใบอนุญาตที่ฝังอยู่ในตาราง OS/2 ของไฟล์แบบอักษร
3. ฉันจะตรวจสอบได้อย่างไรว่าแบบอักษรอนุญาตให้แก้ไขเนื้อหาเอกสารหรือไม่?
คุณสามารถตรวจสอบ licenseFlags.isEditableEmbedding() ได้ หากค่าเป็น true แบบอักษรจะอนุญาตให้โหลดและแก้ไขชั่วคราว ทำให้ผู้ใช้สามารถจัดรูปแบบข้อความใหม่ด้วยแบบอักษรที่ฝังอยู่และบันทึกการเปลี่ยนแปลงได้