aspose.info
HE

OTF - פורמט קובץ גופן TrueType

עודכן

מהו קובץ OTF?

קובץ עם סיומת .otf מתייחס לפורמט גופן OpenType. פורמט גופן OTF ניתן להרחבה יותר ומרחיב את התכונות הקיימות של פורמטים TTF לטיפוגרפיה דיגיטלית. פותח על ידי Microsoft ו-Adobe, OTF משלב את התכונות של פורמטים של גופנים PostScript ו-TrueType. זה הופך את פורמט ה-OTF להתאים למערכות כתיבה של רוב וזו הסיבה שהיא משמשת באופן אחיד בפלטפורמות מחשב גדולות. פורמט הגופן OpenType נתמך על ידי Mac OS X ו-Windows 2000 ואילך.

היסטוריה קצרה

הדרישה של גופני OpenType מקורה כדרישה לפורמט גופן אקספרסיבי יותר שיכול להתמודד עם טיפוגרפיה משובחת. בנוסף, היא נועדה לעמוד בדרישות ההתנהגות המורכבת של רבות ממערכות הכתיבה בעולם. מיקרוסופט ניסתה להעניק רישיון לטכנולוגיית הטיפוגרפיה המתקדמת של אפל, הידועה בשם GX Typography, בתחילת שנות ה-90. זה לא הלך טוב וכתוצאה מכך, מיקרוסופט החלה לשפר את טכנולוגיית הגופנים TrueType שלה בשנת 1994. השינויים כללו גם להציג פורמט גופן מתאים יותר העונה גם על התכונות של פורמטים של גופן Type 1 (PostScript) של Adobe.

אדובי, ב-1996, הצטרפה למיקרוסופט במאמציה להחליף את ה-TrueType של אפל וגם את פורמטי הגופנים מסוג Type 1 שלה. זה הביא לשילוב של שני פורמטי הגופנים הבסיסיים כדי להתגבר על המגבלות ולהוסיף הרחבות חדשות. טכנולוגיה חדשה זו הוצגה באותה שנה בשם OpenType.

מפרטי פורמט קובץ OTF

מפרטי OTF זמינים בפומבי על ידי מיקרוסופט וניתן להתייחס אליהם מנקודת המבט של המפתח. כמו TTF, הוא משתמש באותו מבנה מיכל ‘sfnt’ והוא תואם למפרטי TrueType. נתונים בתוך קובץ גופן OpenType משמשים למטרות שונות כגון חישוב פריסת הטקסט, הגדרת גליפים כמתאר TrueType או Compact Font Format (CFF), אספקת מפות סיביות מונוכרומטיות או צבעוניות או מסמכי SVG כתיאורי גליפים חלופיים ומידע מטא-נתונים.

סוגי נתונים של OTF

קובצי OTF משתמשים בסוגי הנתונים הבאים, כולם ב-Big Endian.

סוג נתוניםתיאור
uint8מספר שלם ללא סימן של 8 סיביות.
int8מספר שלם בסימן 8 סיביות.
uint16מספר שלם ללא סימן של 16 סיביות.
int16מספר שלם בסימן 16 סיביות.
uint24מספר שלם ללא סימן של 24 סיביות.
uint32מספר שלם ללא סימן של 32 סיביות.
int32מספר שלם בסימן 32 סיביות.
תוקןמספר נקודה קבועה בחתימת 32 סיביות (16.16)
FWORDint16 שמתאר כמות ביחידות עיצוב גופנים.
UFWORDuint16 שמתאר כמות ביחידות עיצוב גופנים.
F2DOT14מספר קבוע בסימן 16 סיביות עם השבר הנמוך של 14 סיביות (2.14).
LONGDATETIMEתאריך ושעה מיוצגים במספר שניות מאז 12:00 חצות, 1 בינואר 1904, UTC. הערך מיוצג כמספר שלם של 64 סיביות עם סימן.
תגמערך של ארבע uint8s (אורך = 32 סיביות) המשמש לזיהוי טבלה, ציר עיצוב-וריאציה, סקריפט, מערכת שפה, תכונה או קו בסיס
קיזוז16היסט קצר לטבלה, זהה ל-uint16, היסט NULL = 0x0000
Offset32היסט ארוך לטבלה, זהה ל-uint32, היסט NULL = 0x00000000
גרסה16נקודה16ערך ארוז של 32 סיביות עם מספרי גרסאות ראשיים ומינוריים. (ראה מספרי גרסאות טבלה.)

ספריית טבלאות OTF

קובץ OTF מתחיל בספריית טבלה. ספרייה זו היא האוסף ברמה העליונה של הטבלאות בקובץ הגופן. בהתאם למספר הגופנים בקובץ, ספריית הטבלה עשויה להיות ממוקמת במיקום אחר בקובץ. לדוגמה, במקרה שלקובץ הגופן יש רק גופן אחד, ספריית הטבלה מתחילה בבייט 0 של הקובץ. במקרה של איסוף גופני OpenType מרובים, תחילת ספריית הטבלה מסומנת ב-TTCHeader.

הקלדשםתיאור
uint32sfntVersion0x00010000 או 0x4F54544F (‘OTTO’)
uint16numTablesמספר טבלאות.
uint16searchRangeחזקה מקסימלית של 2 פחות או שווה ל-numTables, כפול 16 ((2**floor(log2(numTables))) * 16, כאשר “**” הוא אופרטור אקספוננציה).
uint16entrySelector Log2 של העוצמה המקסימלית של 2 פחות או שווה ל-numTables (log2(searchRange/16), ששווה ל-floor(log2(numTables))).
uint16rangeShiftnumTables כפול 16, מינוס searchRange ((numTables * 16) - searchRange).
tableRecordtableRecords[numTables]מערך רשומות טבלה-אחד עבור כל טבלה ברמה העליונה בגופן

שיא טבלה

לכל טבלה ברמה העליונה בגופן, יש רשומה של טבלה המורכבת מהשדות הבאים.

הקלדשםתיאור
תגtableTagמזהה טבלה.
uint32סכום בדיקהסכום בדיקה עבור טבלה זו.
Offset32קיזוזהיסט מתחילת קובץ הגופן.
uint32אורך אורך טבלה זו.

כל טבלה בקובץ הגופן של OpenType מיוצגת על ידי שמות המכונים תגי טבלה. חובה שכל הרשומות במערך יהיו ממוינות בסדר עולה לפי תג.

הפניות

ראו גם