גופנים וקטוריים של COLRv1 צבעים ב-Chrome 98

Dominik Röttsches
Dominik Röttsches
Rod Sheeter
Rod Sheeter

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

ב-Chrome 98, הצוותים של Chrome ושל Fonts הוסיפו תמיכה ב-COLRv1, שהוא גרסה מתקדמת של פורמט הגופן COLRv0. המטרה היא להפוך את השימוש בגופנים צבעוניים לנפוץ יותר על ידי הוספת מעברי צבע, קומפוזיציה ומיזוג, ושיפור השימוש החוזר בצורות פנימיות ליצירת קובצי גופנים חדים וקומפקטיים שניתנים לדחיסה טובה.

צובעים עכשיו

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

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

עכשיו אפשר ליצור גופני COLRv1 משלכם באמצעות כלים חינמיים וקוד פתוח. אפשר לנסות את הקומפיילר של גופן nanoemoji, שמאפשר ליצור גופני COLRv1 מתמונות מקוריות בפורמט SVG, ואז לנסות אותם ב-Chrome 98 ואילך. אפשר לנסות ליצור גרסה משלכם של Bungee Spice על ידי שינוי צבעי המעבר באמצעות ההוראות האלה.

לדוגמה, אפשר לשנות את הגופן Bungee Spice כך שיהיה בו מעבר צבעים כחול ואדום, כמו בדוגמה הבאה:

המילה dune בגופן הצבעוני Bungee Spice, עם מעברי צבע כחולים ואדומים.

אפשר לפרסם את התוצאות בטוויטר ולתייג את @googlefonts 🙂 למה לא לנסות מעבר צבע רדיאלי או סוחף?

מה חדש ב-COLRv1

פורמט הגופן תומך בכמה דרכים להוספת צבע, שלכל אחת מהן יש יתרונות וחסרונות שונים – אבל אף אחת מהן לא הצליחה באינטרנט עד עכשיו. (למידע נוסף על היתרונות והחסרונות, אפשר לצפות בהרצאה של דומיניק בכנס BlinkOn 15). גרסה 98 של Chrome כוללת תמיכה ב-COLRv1, שהוא גרסה מתקדמת של COLRv0. אנחנו מקווים שהשילוב של יכולות גרפיות וקבצים קומפקטיים ב-COLRv1 יהפוך אותו לבחירה טובה עבור תרחישי שימוש רבים בגופנים צבעוניים. ‫COLRv1 מוסיף מעברי צבע, שילוב ומיזוג, ומשפר את השימוש החוזר בצורות פנימיות כדי ליצור קבצים קומפקטיים עוד יותר.

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

אמוג'י של כדור בדולח כחול וסגול עם כוכבים בשימוש חוזר על בסיס חום.
שימוש חוזר בצורה באמוג'י של כדור הבדולח

לדוגמה, אם ניקח את אימוג'י כדור הבדולח: ההדגשות בצורת כוכב הן באותה צורה אבל בגדלים שונים, מה שאומר שאפשר לשנות את המיקום של צורה אחת ולעשות בה שימוש חוזר בלי לשכפל אותה בתוך הקובץ. הפורמט מאפשר לכם להשתמש מחדש בסימן מלא בתוך סימן חדש, בלי שתצטרכו לקודד בצורה מיותרת את אותן צורות לכל סימן. תארו לעצמכם גופן צבעוני דקורטיבי עם קישוטים פרחוניים, שבו צורות פרחים זהות ממוקמות על אותיות שונות רק על ידי הפניה לגליפים צבעוניים קיימים. במקרה השימוש של גופן לאינטרנט, דחיסת COLRv1 טובה יותר בפורמט woff2. לדוגמה, גרסת בדיקה של Twemoji באמצעות COLRv1 תופסת נפח של כ-1.2MB אחרי פתיחת הדחיסה, אבל כ-0.6MB בפורמט woff2. גרסה מלאה של מערך הגליפים של Noto Emoji מצטמצמת מ-9MB בגרסת מפת הסיביות ל-1.85MB בפורמט COLRv1+woff2.

תרשים עמודות להשוואה בין Noto Emoji כגופן Bitmap לבין גופן COLRv1, בערך 9MB לעומת 1.85MB
גודל הגופן Noto Emoji בפורמט CBDT/CBLC לעומת COLRv1 אחרי דחיסה בפורמט WOFF2.

תרחישים לדוגמה לשימוש בגופנים צבעוניים

אין יותר החלפת תמונות: גופני אמוג'י

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

קטע קוד שבו מוצגות תמונות מוטבעות כתגי img ומטא-נתונים כחלק מהיסטוריית הצ'אט
החלפת תמונות ב-Google Chat

אם יש לכם גופן אמוג'י, אתם יכולים פשוט לעבד את הטקסט בגופן, כמו בדוגמה הבאה:

<style>
@import url(https://fonts.googleapis.com/css2?family=Noto+Color+Emoji);

.emoji {
  font-family: "Noto Color Emoji", sans-serif;
}
</style>
<span class="emoji">🙂</span>

באופן דומה, ברכיב של תגובה באמוג'י, ‏ COLRv1 מאפשר להשתמש בקובץ גופן קומפקטי במקום בקטלוג של נכסי תמונות.

ממשק משתמש לבחירת אמוג&#39;י כמו ב-GitHub
בוחר תגובות עם אמוג'י ב-GitHub

תחשבו כמה תמונות צריך לאחזר כדי ליצור בוחר אמוג'י מלא!

צבע בגופני סמלים

שימוש בצבע בגופני סמלים מוסיף בהירות ומקל על ההבנה של הגליפים.

שלושה סמלים ירוקים עם קו מתאר שחור
סמלי Material דו-גווניים מתוך https://fonts.google.com/icons

ביטוי אומנותי

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

אותיות בערבית עם מעברי צבע משחור לאדום.
Reem Kufi Ink, an Arabic font by Khaled Hosny

זיהוי תכונות

בשלב הזה, אפשר לברר אם מנוע דפדפן תומך בפורמט גופן צבעוני ספציפי באמצעות סניפינג של סוכן משתמש או באמצעות חיפוש בספרייה כמו ChromaCheck של @PixelAmbacht כדי לבדוק את העיבוד של גליפים צבעוניים ב-Canvas. אף אחד מהפתרונות לא אופטימלי. בבדיקות של תכונות צריך לזהות רק תכונה ספציפית, ולהימנע מהרחרחה של סוכן המשתמש. ספריית ChromaCheck לא צריכה לבצע פעולות אינטנסיביות על משטח ציור דו-ממדי כדי לקבוע אם יש תמיכה.

צוות Chrome רוצה לשפר את זה, והתחיל סדרת דיונים [1,‏ 2] בקבוצת העבודה של CSS כדי לספק מידע על תמיכה בטכנולוגיית גופנים בדפדפן ב-JavaScript ובאופן הצהרתי ב-CSS. הצוות מתכנן להשיק זיהוי יעיל של תכונות עבור גופנים צבעוניים וטכנולוגיות אחרות של גופנים בגרסה עתידית של Chrome.

אם אתם רוצים להשתמש בגופנים צבעוניים בפרויקט שלכם כבר עכשיו, כשנתמך רק ב-Chrome, יש שתי דרכים לעשות את זה: אפשר לבקש מספק הגופנים שלכם גופן COLRv1 שמכיל גם גליפים מונוכרומטיים. סוכני משתמש שלא תומכים ב-COLRv1 יחזרו להצגת גליפים מונוכרומטיים. לחלופין, אפשר להשתמש בספריית ChromaCheck או ב-user agent sniffing כדי לקבוע אם יש תמיכה ב-COLRv1. לאחר מכן, אתם מספקים CSS שמעמיס גופני COLRv1 בסוכני משתמש תומכים, ומשתמשים בפורמט גופן חלופי כמו COLRv0, פורמט גופן של מפת סיביות או OpenType SVG בדפדפנים אחרים.

תמיכה בלוח צבעים של גופנים ב-CSS

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

גופני COLRv1

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

אם יש לכם משוב על COLRv1 ב-Chrome, אתם יכולים לפרסם אותו ברשימת התפוצה blink-dev או לדווח על בעיה בכלי למעקב אחר בעיות. אם יש לכם משוב על פורמט הגופן COLRv1 עצמו, אתם יכולים לפתוח issue במאגר המפרט של COLRv1 ב-GitHub.

אנחנו נרגשים מאוד מהאופן שבו COLRv1 מביא רמה חדשה לגמרי של יצירתיות טיפוגרפית לאינטרנט ב-Chrome 98.

מידע נוסף

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

כדי להבין איך COLRv1 פועל ואיך הוא מיושם ב-Chrome, אפשר לצפות בהרצאה של דומיניק בכנס BlinkOn 15.

תודות

תודה רבה ל-Behdad Esfahbod,‏ Cosimo Lupo,‏ Peter Constable,‏ Ben Wagner,‏ Werner Lemberg,‏ Dave Crossland,‏ Vladimir Levantovsky,‏ Jonathan Kew,‏ Laurence Penney,‏ Chris Lilley,‏ David Jonathan Ross,‏ Underware,‏ Just van Rossum,‏ Roel Nieskens ולאנשים נוספים על התרומה שלהם ל-COLRv1.