كيفية العمل مع جداول الخطوط في بايثون

كيفية العمل مع جداول الخطوط في بايثون

تظهر هذه الدورة كيفية قراءة جداول TTF المسماة ، واسترداد بايتات الجدول الثنائي الخام ، وكتابة بيانات جدول معدلة باستخدام TtfFont في Aspose.Font FOSS لبيثون. تخزن الخطوط TrueType جميع البيانات في جداول ثنائية يتم تحديدها بواسطة علامات 4 أحرف. Aspose.Font FosS يكشف TtfTableSet للوصول إلى الجدول باسم، و TtfFont.get_table_bytes() / TtfFont.set_table_bytes() للوصول الثنائي الخام.

خطوة بخطوة دليل

الخطوة 1: قم بتثبيت الحزمة

قم بتثبيت حزمة Aspose.Cells FOSS من PyPI باستخدام أمر pip أدناه:

pip install "aspose-font>=1.0.0"

الخطوة 2: استيراد الدروس المطلوبة

الاستيراد FontLoader و TtfFont لتحميل ملف الخط والوصول إلى مجموعة الجداول:

from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFont

الخطوة 3: الوصول إلى الجداول المسماة

تحميل ملف TTF مع FontLoader.open() والوصول إلى الجداول المسماة عبر ttf_tables العقارات:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
tables = ttf_font.ttf_tables
print("kern present:", tables.kern is not None)
print("cmap present:", tables.cmap is not None)

الخطوة 4: قراءة بايتات الجدول الخام

قراءة البيانات الثنائية الخام لمجموعة محددة من خلال تمرير علامة 4 أحرف إلى get_table_bytes():

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")

الخطوة 5: كتابة بايتات الجدول المعدلة

كتابة البيانات الثنائية المعدلة إلى جدول مسمى باستخدام set_table_bytes() مع العلامة والبايت الحمل المفيد:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..."  # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)

مشكلات و تصحيحات مشتركة

AttributeError: Font has no attribute ttf_tablesttf_tables هو على TtfFont, ليس القاعدة Font استخدام ttf_font: TtfFont = FontLoader.open(...) للحصول على المرجع المكتوب.

get_table_bytes يعود بايتات فارغة يجب أن يكون العلامة 4 أحرف بالضبط. (مكتبة مع الفراغات إذا لزم الأمر، على سبيل المثال. "kern" لا .. "KRN").

الأسئلة المتكررة

أي جداول مسماة عرضت على TtfTableSet؟?

رأس، هيه، ماكسب، أوس2، اسم، موقع، سي ماب، لوكا، ام تي إكس، والقلب.

هل يمكنني إضافة جدول جديد إلى الخط؟?

نعم، مرر أي علامة 4 بايتات صالحة وبايت البيانات إلى TtfFont.set_table_bytes(tag, data).

انظر أيضا

 العربية