הטמעת גופנים מותאמים אישית

ב-Android מגרסה 11 ומטה, מתבצע עדכון של קובצי גופנים שהותקנו במכשיר ב-AOSP ( מחיצת /system/fonts) או מחיצות הספק (ב-/product/fonts או /system/fonts מחיצות) נדרש עדכון מערכת מה-OEM (יצרן הציוד המקורי). הזה לדרישה הזו יש השפעה משמעותית על התאימות של סמלי האמוג'י. לחשבון Android 12 אפשר להשתמש במערכת FontManager שירות לניהול קובצי גופנים שהותקנו ולעדכון קובצי גופנים שהותקנו במכשיר ללא עדכון מערכת.

ב-Android 12 יש שלוש אינטראקציות בתהליך; FontManagerService, Font Updater וגם Application.

FontManagerService היא מערכת הניהול המרכזית בשרת המערכת. ב-FontManagerService נשמרים הגדרות הגופן העדכניות של המערכת לכל משתמש.

FontUpdater הוא כלי לעדכון גופנים שאפשר להשתמש בו, והוא מהימן על ידי בדיקת ההרשאות signature|privileged. FontUpdater מתקשר עם FontManagerService כדי לקבל, להתקין, להסיר או לעדכן את גופן המערכת הנוכחי הגדרות. ל-FontUpdater יש אפשרות להעביר תכנים חדשים של קובצי גופנים באמצעות בין תהליכים ומנגנוני תקשורת (IPC). התוכן נשמר ב-FontManagerService מיקום אחסון שקריא לכולם, כמו בקובצי /data/fonts. הזה האחסון נשמר. אפשר לכתוב אותה על ידי FontManagerService רק, עד מדיניות SELinux.

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

התאמה אישית של הגופנים

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

Google מעדכנת את קובצי הגופנים, במיוחד את קובצי NotoColorEmoji באמצעות GMS חשוב לא לשנות או להסיר את הקובץ NotoColorEmoji.ttf המחיצה /system, ואין להסיר אותה מהמחיצה /system/etc/fonts.xml. שימו לב ל ניתן להתאים אישית את הגופנים בשלוש הדרכים הבאות:

  1. מחליפים את הקובץ NotoColorEmoji.ttf בגופן אמוג'י של ה-OEM (יצרן הציוד המקורי).
  2. עליכם לשנות את הקובץ NotoColorEmoji.ttf בהתאם לצורכי השוק המקומי שלכם.
  3. החלפה או שינוי של קובצי גופנים אחרים.

אם לא משנים את הגופן של האמוג'י ב-AOSP, אין צורך לעשות כלום. אם המיקום ברצונך להתאים אישית את הגופן של האמוג'י, צריך לפעול לפי ההוראות הבאות .

מחליפים את NotoColorEmoji.ttf בגופני אמוג'י ממותגי ה-OEM

כדי להחליף את הקובץ NotoColorEmoji.ttf בקובץ גופנים עם מיתוג של ה-OEM (יצרן הציוד המקורי): מציבים את גופן האמוג'י ממש לפני שרשרת החלופות של הגופנים:

  1. מציבים גופן משלכם, שנקרא OEMCustomEmoji.ttf, במחיצה /system.
  2. משנים את /system/etc/fonts.xml כמו בקוד הבא:

    <family lang="ko">
    <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font>
    </family>
    <!-- ADD FOLLOWING LINE -->
    <family lang="und-Zsye">
       <font weight="400" style="normal">OEMCustomEmoji.ttf</font>
    </family>
    <!-- END OF MODIFICATION -->
    <family lang="und-Zsye">
       <font weight="400" style="normal">NotoColorEmoji.ttf</font>
    </family>
    <family lang="und-Zsym">
       <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted2.ttf</font>
    </family>
    

ביצוע שינויים ב-NotoColorEmoji.ttf לצורכי השוק המקומי

כך מתאימים את עצמנו לצורכי השוק המקומי:

  1. ליצור קובץ NotoColorEmoji משלכם בשם אחר. לדוגמה, נותנים לה את השם Modified\_NotoColorEmoji.ttf.
  2. צריך להציב אותו לפני קובץ NotoColorEmoji.ttf המקורי.

לאחר ביצוע שלב 2, הגליף שהשתנה נתמך על ידי Modified\NotoColorEmoji.ttf מוצג במקום NotoColorEmoji.ttf המקורי. Google ממליצה על הדברים הבאים:

  • יש בגופן הזה רק את הגליף הנדרש.
  • צריך לתת גישה לגליפים שלא בוצעו בהם שינויים לקובץ NotoColorEmoji.ttf המקורי כדי המכשירים שלך יקבלו תיקוני עיצוב שיבוצעו בגרסאות עתידיות של אמוג'י.

הסרת גליפים: כדי להסיר גליפים מהקובץ NotoColorEmoji.ttf, פועלים לפי שלבים 1 ו-2, ומציינים glyph ID = 0 ב-cmap.

שימוש בדגל אזורי: אם הגליף המטורגט הוא דגל אזורי, יש לציין את מזהה הגליף כקוד מדינה לא ידוע. (שימוש ב-country code = "ZZ").

יצירת גליף טופו: אפשר לציין באופן מפורש מזהה גליף של טופו אם רוצים כדי להשתמש בבינה מלאכותית. כשמציינים את הערך glyphID = 0, האפליקציה הקשורה מפרשת את הערך הזה כ- "הגליף לא זמין". לדוגמה, אם משתמשים במאפיין הזה, האפליקציה Paint#hasGlyph מחזירה false.

החלפה או שינוי של קובצי גופנים אחרים

כדי להחליף או לשנות גופנים אחרים, ההתאמה האישית דומה לזו של לשנות את קובצי ה-TTF בהתאם לצרכים של השוק המקומי. קובצי גופנים לא ידועים שהם שמתעדכנים ב-AOSP בזמן הריצה, המערכת מתעלמת מהם והם לא מתעדכנים. Google מתעלמת גופנים לא ידועים במכשיר. הנתון כולל קובצי גופנים ששונו מ- את הגופנים המקוריים ב-AOSP.

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

עמידה בדרישות מוקדמות

מנגנון עדכון הגופנים משתמש בתכונת הליבה של Linux fs-verity. מוודאים ש- המכשיר שלך תואם ל-fs-verity וכולל את האישור במכשיר.

חתימה על קובצי גופנים

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

ביצוע עדכונים לגבי הגופנים בסביבת זמן הריצה

אפליקציית המערכת FontManger מבצעת עדכוני גופנים. אפליקציית FontManager מספקת הסטטוס העדכני של גופן המערכת שהותקן ואפשרות לעדכן קובצי גופנים. עם חתימות. כדי להתקשר לעדכון אפליקציות, צריך להוסיף את UPDATE_FONT signature|privileged הרשאה לרשימת ההיתרים של האפליקציות, וגם במניפסט.

עליך לספק את ההרשאה UPDATE_FONT signature|privileged למעדכן של האפליקציה מותאמת אישית.