כיצד לעבוד עם טבלות חוטים ב- Python

כיצד לעבוד עם טבלות חוטים ב- Python

מדריך זה מראה כיצד לקרוא את טבלאות TTF הנקרא, לקבל ביטים ירוקים של לוח בינארי ולכתוב נתוני לוח משתנים באמצעות TtfFont ב Aspose.Font FOSS עבור Python. TrueType fonts store all data in binary tables identified by 4-character tags. Aspose.Font פוסים מציגים את כל הנתונים בטבלות בינאריות המזהות על ידי תגיות 4 אותיות. TtfTableSet על מנת לקבל גישה לשולחן השם ו TtfFont.get_table_bytes() / TtfFont.set_table_bytes() גישה בינארית ירוקה.

הדרכה שלב אחר צעד

שלב 1: התקנת החבילה

התקנת חבילת Aspose.Font 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(...) כדי לקבל A דוגמאות של התייחסות.

get_table_bytes החזיר את הוויטות הריקות התווית חייבת להיות בדיוק 4 תווים. (למשל, יש צורך במגוון רחב של מקומות, למשל. "kern" לא "KRN").

שאלות נפוצות שואלים

אילו טבלאות נקראות מופיעות ב- TtfTableSet?

ראש, hhea, maxp, os2, שם, פוסט, cmap, loca, Hmtx ו kern.

האם אני יכול להוסיף שולחן חדש לתוך טופס?

כן.עביר כל תווית 4 ביטים ותא נתונים בייט בתור TtfFont.set_table_bytes(tag, data).

ראה גם

 עברית