מהו קובץ 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) |
FWORD | int16 שמתאר כמות ביחידות עיצוב גופנים. |
UFWORD | uint16 שמתאר כמות ביחידות עיצוב גופנים. |
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.
הקלד | שם | תיאור |
---|---|---|
uint32 | sfntVersion | 0x00010000 או 0x4F54544F (‘OTTO’) |
uint16 | numTables | מספר טבלאות. |
uint16 | searchRange | חזקה מקסימלית של 2 פחות או שווה ל-numTables, כפול 16 ((2**floor(log2(numTables))) * 16, כאשר “**” הוא אופרטור אקספוננציה). |
uint16 | entrySelector Log2 של העוצמה המקסימלית של 2 פחות או שווה ל-numTables (log2(searchRange/16), ששווה ל-floor(log2(numTables))). | |
uint16 | rangeShift | numTables כפול 16, מינוס searchRange ((numTables * 16) - searchRange). |
tableRecord | tableRecords[numTables] | מערך רשומות טבלה-אחד עבור כל טבלה ברמה העליונה בגופן |
שיא טבלה
לכל טבלה ברמה העליונה בגופן, יש רשומה של טבלה המורכבת מהשדות הבאים.
הקלד | שם | תיאור |
---|---|---|
תג | tableTag | מזהה טבלה. |
uint32 | סכום בדיקה | סכום בדיקה עבור טבלה זו. |
Offset32 | קיזוז | היסט מתחילת קובץ הגופן. |
uint32 | אורך אורך טבלה זו. |
כל טבלה בקובץ הגופן של OpenType מיוצגת על ידי שמות המכונים תגי טבלה. חובה שכל הרשומות במערך יהיו ממוינות בסדר עולה לפי תג.