استخراج قيود ترخيص خطوط 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، فإن الخط يسمح بالتحميل المؤقت والتحرير، مما يتيح للمستخدمين تنسيق نص جديد باستخدام الخط المضمّن وحفظ التغييرات.