איך עושים הינטינג אוטומטי?

בהמשך לפוסט "התחלת הינטינג", בו הוצגו סוגים שונים של הינטינג, הפעם נתמקד בהינטינג האוטומטי ונראה תכל'ס איך עושים את זה. הינטינג אוטומטי מאפשר, תוך מספר דקות, להתאים כמעט כל פונט למסך (גם לתצוגה בגדלים קטנים). כמובן, שיש עוד מקום לשיפור ופיתוח, אבל בינתיים זה יכול לחסוך הרבה שעות עבודה ולתת תוצאה ראויה לשימוש.

הינטינג אוטומטי באמצעות TTF Auto Hint:

השלבים להינטינג אוטומטי בTTF Auto Hint הם מאוד פשוטים:

  1. בוחרים את קובץ הTTF נטול ההינטינג
  2. מסמנים/משנים הגדרות כדי שיתאימו לפונט שבחרנו
  3. לוחצים על "Run" ומקבלים פונט מוכן

קישור להורדה (TTF Auto Hint היא תוכנה בקוד פתוח)
קישור למדריך TTF Auto Hint

 

הינטינג אוטומטי באמצעות Font Squirrel Font-Face Generator:

גם כאן השלבים פשוטים, אך במידה והפונט עברי צריך לסמן עוד כמה דברים:

  1. לוחצים על "Add Fonts" ומוסיפים את הפונטים (אפשר גם כמה פונטים במקביל)
  2. במידת הצורך* משנים הגדרות.
  3. מסמנים בV שהפונט חוקי לשימוש ברשת
  4. לוחצים על "Download Your Kit" ומקבלים פונטים בפורמטים שונים + ספסימן
*במידה וישנם תווים עבריים בפונט:
לוחצים על "Expert" ובשורה של Subsetting, בוחרים באחת מהאופציות הבאות:
  • No-Subsetting
  • Custom Subsetting, ומסמנים Hebrew
(Font Squirrel Font-Face Generator אינו בקוד פתוח אבל הוא שירות וובי חינמי לחלוטין)

 

התחלת הינטינג

אנחנו שמחים מאוד לארח את ניר ייני בפוסט על תהליך ההינטינג. ניר, בוגר טרי מהמחלקה לתקשורת חזותית בבצלאל עיצב כפרויקט גמר את הפונט כרמלה, פונט מסך עברי (פתוח!) עם הישגים ממש מרשימים גם בגדלים קטנים. ניר מגייס את הנסיון שרכש ומצטרף אלינו בעבודה על ההינטינג של הפונט החדש (ששמו עוד לא נודע). אהלן ניר!

תזכורת: בתהליך ההינטינג מיוצרות למעשה הנחיות לפונט כיצד להסתדר על מתווה הפיקסלים בכל גודל רלוונטי ובעיקר בגדלים קטנים. מערכת ההפעלה וינדוז מתייחסת לאותן רמיזות ומשתמשת בהן ככלי המאפשר למעצבים לדייק את רינדור האותיות. במק וברוב ההפצות של לינוקס מערכת הרינדור המובנית עושה עבודת רינדור ראשונית טובה יותר משל וינדוז ומתעלמת מהנחיות ההינטינג. לכן, במידה רבה, ההינטינג רלוונטי בעיקר לוינדוז. מדובר בתהליך ארוך ומיגע ולכן שווה לבדוק אופציות אוטומטיות אל מול אופציות ידניות ולהשוות אותן למצב הבסיסי ללא ההינטינג – מצב בו מוצג הרינדור האוטומטי של וינדוז ללא סיוע או רמיזה מהצד.

כשאנחנו ניגשים למשימת ההינטינג, אנחנו בוחנים מספר סוגי רנדור:

  1. מצב ללא הינטינג
  2. היטינג אוטומטי באמצעות TTF AutoHint
  3. הינטינג אוטומטי באמצעות Font Squirrel
  4. הינטינג ידני באמצעות VTT

בדוגמא המצורפת אפשר לראות השוואה בין סוגי הרנדור השונים (אפרט בהמשך על תהליך ביצועם) [גודל 1:1]:

 

ניתן לראות שעיקר הבעיה מתרחשת במעבר בין פיקסל לשניים בקווים האופקיים (גדלים 17-20).

מבחינת איכות העבודה, האופציות הכי טובות כרגע הן ההינטינג של FontSquirrel וההינטינג הידני ב-VTT. העבודה בVTT עדיין בתהליך (לדוגמא האות ז' בגדלים 10-11 שחורה יחסית לשאר האותיות), היתרון בVTT הוא שתמיד ניתן לחזור ולתקן. החסרון עם היטינג אוטומטי, שלא ניתן לתקן בעיות ספציפיות בגדלים מסוים, דבר שיכול לעלות בהתפשרות על צורת האותיות (לדוגמא, האות ל' בגודל 18 יורדת מהשורה).

מבחינת זמן עבודה, האופציות הכי מהירות (עד חמש דקות עבודה) הן TTF AutoHint ו-Font Squirrel.

מבחינת מורכבות טכנית, TTF AutoHint ו-Font Squirrel מצריכות רמה מאוד בסיסית, וקלות להבנה באמצעות כמה צילומי מסך. הינטינג VTT מצריך למידה, התנסות והרבה למידה.

בכל מקרה, כשמעצבים פונט לשימוש על מסך, תמיד עדיף לעשות לו הינטינג כלשהו ולא להתפשר על הצגה ב'גדלים מומלצים'.

הנדרש לטובת תצוגה חדה של הפונט במערכת ההעפלה חלונות

TTF Auto Hint – המושיע מהינטינג ידני

ישנו קונפליקט בסיסי בכל הנוגע לעיצוב פונטים למסך. הפונט מורכב מקווים, צורות וזוויות "ווקטוריות" חופשיות והמסך מציג הכל כמתווה ריבועי של פיקסלים. הדרך המקובלת להתמודדות עם הבעיה היא יצירת רמיזות – "hinting" אשר ינחו את הפונט כיצד להיראות בגדלים השונים. פונט עם הינטים מכיל גם את סדרת הצורות הבסיסית של אותיותיו וגם סדרות מקבילות עבור מספר גדלים קטנים:  14px, 13px, 12px 11px, 10px ולעיתים אף 9 או 8px. הינטינג היא משימה טכנית קשה ומיגעת והיא הסיבה המרכזית שבגללה פונטי מסך טובים לטקסט (בעלי קריאות גבוהה בגדלים קטנים) הם נדירים כל כך. זו גם הסיבה המרכזית למורכבותו ויוקרו של תהליך פיתוח פונטים מסוג זה.

בזמן שמערכות הפעלה כמו Mac OSX וגרסאות אחרונות של Windows מנסות לרנדר את הפונטים לפיקסל בצורה אוטומטית ללא הצורך להיעזר בהינטינג, ישנן לא מעט מערכות הפעלה שעושות שימוש בהינטינג כשהם זמינים כדי לספק תוצאות טובות הרבה יותר. התוצאה היא שפונט עם הינטיג מוצלח יבטיח קריאות גבוהה על מגוון רחב יותר של מערכות הפעלה. אך האם זה אומר שנידונו לעבודה הסיזיפית והאינסופית של רמיזות עבור כל אות במספר רב של גדלים?

וורנר למברג טוען שלא בהכרח. וורנר הוא המפתח שמאחורי פרויקט הקוד הפתוח FreeType, ספריית קוד אשר מטפלת בתצוגת טקסט על מסך עבור מערכות הפעלה פתוחות כגון לינוקס לגווניה. באופן ספציפי מפתח וורנר את מרכיב הTTFAutoHint תוכנה שמנסה לחשב אוטומטית כיצד ליצר הינטינג מוצלח למספר רב של גדלים ולהוסיף אותם לתוך קובץ הפונט. וורנר, שפועל בהתנדבות מנסה בימים אלה לגייס כספים שיוכלו לקנות לו זמן לשפר את התוכנה. הקמפיין ששואף להשיג $30,000 מקבל מענה יפה מהקהילה (גם אנחנו תרמנו) כמו גם מחברות מסחריות כמו FontLab, Google ו-Microsoft.

במסגרת הפרויקט שלנו אנחנו עובדים עם וורנר על שיפור התפקוד של TTFAutoHint עבור השפה העברית ותמיכה במאפיינים המיוחדים שלה ובהשלכות שלהם על הדרך בה האות מתרנדרת לפיקסל.

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