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

אנסה לכתוב
‫Jetpack Compose היא ערכת הכלים המומלצת לבניית ממשק משתמש ל-Android. איך משתמשים בטקסט בכתיבה.

התכונה 'גופנים להורדה' מאפשרת לממשקי API לבקש גופנים מאפליקציית ספק במקום לארוז קבצים באפליקציה או לאפשר לאפליקציה להוריד גופנים. התכונה 'גופנים להורדה' זמינה במכשירים עם Android מגרסה 14 ואילך דרך ספריית AndroidX Core.

היתרונות של גופנים להורדה:

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

איך פועלים גופנים להורדה?

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

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

העקרונות הבסיסיים

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

שימוש בגופנים להורדה עם Android Studio ושירותי Google Play

אתם יכולים להגדיר את האפליקציה להורדת גופנים באמצעות Android Studio בגרסה 3.0 ומעלה. כדי לעזור לכם להתחיל להשתמש בתכונות של גופנים להורדה, אתם יכולים להשתמש בספק הגופנים מ-Google Play Services.

  1. בכלי לעריכת פריסות, בוחרים בTextView. לאחר מכן, בקטע מאפיינים, בוחרים באפשרות fontFamily > עוד גופנים.
    תמונה שבה רואים את עורך הפריסה ב-Android Studio
    איור 2. שימוש בעורך הפריסות.
    יופיע החלון Resources (מקורות מידע).
  2. בתפריט מקור, בוחרים באפשרות גופנים של Google.
  3. בתיבה גופנים, בוחרים גופן באזור 'ניתן להורדה'.
  4. בוחרים באפשרות יצירת גופן להורדה ולוחצים על אישור.
    תמונה שמראה איך בוחרים גופנים מחלון המשאבים
    איור 3. בחירת גופן מהחלון Resources.
  5. ‫Android Studio יוצר באופן אוטומטי את קובצי ה-XML הרלוונטיים שנדרשים כדי שהגופן יוצג בצורה נכונה באפליקציה.

    תמונה שמראה איך לראות תצוגה מקדימה של גופנים
    איור 4. תצוגה מקדימה של קובץ הגופן.

שימוש בגופנים להורדה באופן פרוגרמטי

החל מ-Android 8.0 (רמת API‏ 26), ‏ AndroidX Core מספק תמיכה מלאה בגופנים להורדה. מידע נוסף על השימוש בספריית AndroidX Core זמין בקטע ספריית AndroidX Core של גופנים להורדה בדף הזה.

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

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

כדי להוריד גופן, פועלים לפי השלבים הבאים:

  1. יוצרים מופע של המחלקה android.graphics.fonts.FontRequest כדי לבקש את הגופן מהספק. כדי ליצור בקשה, מעבירים את הפרמטרים הבאים:
    • הגורם המוסמך של ספק הגופן.
    • חבילת ספק הגופנים לאימות הזהות של הספק.
    • מחרוזת השאילתה של הגופן. מידע נוסף על פורמטים של שאילתות זמין במסמכי התיעוד של ספק הגופנים, כמו Google Fonts.
    • רשימה של קבוצות גיבוב לאימות הזהות של הספק.

    Kotlin

    val request = FontRequest(
            "com.example.fontprovider.authority",
            "com.example.fontprovider",
            "my font",
            certs
    )

    Java

    FontRequest request = new FontRequest("com.example.fontprovider",
                       "com.example.fontprovider", "my font", certs);
  2. יוצרים מופע של המחלקה FontsContract.FontRequestCallback.
  3. מבטלים את ההגדרה של השיטה onTypefaceRetrieved() כדי לציין שהבקשה לגופן הושלמה. מספקים את הגופן שאוחזר כפרמטר. אתם יכולים להשתמש בשיטה הזו כדי להגדיר את הגופן לפי הצורך. לדוגמה, אפשר להגדיר את הגופן ב-TextView.
  4. אפשר לבטל את השיטה onTypefaceRequestFailed() כדי לקבל מידע על שגיאות בתהליך הבקשה לגופן. מידע נוסף על קודי שגיאה זמין במאמר בנושא קבועים של קודי שגיאה.
  5. מפעילים את השיטה FontsContract.requestFont() כדי לאחזר את הגופן מספק הגופנים. השיטה מתחילה בדיקה כדי לקבוע אם הגופן קיים במטמון. אם הגופן לא זמין באופן מקומי, הפונקציה קוראת לספק הגופנים, מאחזרת את הגופן באופן אסינכרוני ומעבירה את התוצאה לקריאה החוזרת. מעבירים את הפרמטרים הבאים:
    • מופע של המחלקה Context
    • מופע של המחלקה android.graphics.fonts.FontRequest
    • התקשרות חזרה כדי לקבל את התוצאות של בקשת הגופן
    • רכיב handler לאחזור גופנים בשרשור

קוד לדוגמה שממחיש את התהליך הכולל של גופנים להורדה:

Kotlin

val request = FontRequest(
        "com.example.fontprovider.authority",
        "com.example.fontprovider",
        "my font",
        certs
)
val callback = object : FontsContract.FontRequestCallback() {

    override fun onTypefaceRetrieved(typeface: Typeface) {
        // Your code to use the font goes here.
        ...
    }

    override fun onTypefaceRequestFailed(reason: Int) {
        // Your code to deal with the failure goes here.
        ...
    }
}
FontsContract.requestFonts(context, request, handler, null, callback)

Java

FontRequest request = new FontRequest("com.example.fontprovider.authority",
        "com.example.fontprovider", "my font", certs);
FontsContract.FontRequestCallback callback =
    new FontsContract.FontRequestCallback() {
        @Override
        public void onTypefaceRetrieved(Typeface typeface) {
            // Your code to use the font goes here.
            ...
        }

        @Override
        public void onTypefaceRequestFailed(int reason) {
            // Your code to deal with the failure goes here.
            ...
        }
};
FontsContract.requestFonts(context, request, handler, null, callback);

למידע נוסף על הורדת גופן מספק גופנים, אפשר לעיין באפליקציית הדוגמה DownloadableFonts.

שימוש בגופנים להורדה עם AndroidX Core

‫AndroidX Core מספק תמיכה בתכונה 'גופנים להורדה' במכשירים עם Android מגרסה API 14 ואילך. החבילה androidx.core.provider כוללת את המחלקות FontsContractCompat ו-FontRequest כדי להטמיע תמיכה בתכונה 'גופנים להורדה' שתואמת לאחור. המחלקות של AndroidX מכילות שיטות שדומות לשיטות של המסגרת, והתהליך של הורדת גופנים דומה לזה שמתואר בקטע בדף הזה בנושא שימוש בגופנים להורדה באופן פרוגרמטי.

כדי להוריד גופנים באמצעות AndroidX, מייבאים את המחלקות FontsContractCompat ו-FontRequest מהחבילה androidx.core.provider. ליצור מופעים של הכיתות האלה במקום כיתות של מסגרת FontsContract ו-android.graphics.fonts.FontRequest.

הוספת יחסי תלות של AndroidX Core

כדי להשתמש במחלקות FontsContractCompat ו-FontRequest, צריך לשנות את התלויות בנתיב המחלקה של פרויקט האפליקציה בסביבת הפיתוח.

כדי להוסיף את AndroidX Core לפרויקט האפליקציה, מוסיפים את התלות הבאה לקובץ build.gradle של האפליקציה:

מגניב

dependencies {
    ...
    implementation "androidx.core:core-ktx:1.16.0"
}

Kotlin

dependencies {
    ...
    implementation("androidx.core:core-ktx:1.16.0")
}

שימוש בגופנים להורדה כמשאבים ב-XML

‫Android 8.0 (רמת API‏ 26) ו-AndroidX Core מציעים דרך מהירה ונוחה יותר להצהרה על גופן מותאם אישית כמשאב בפריסת ה-XML. כלומר, אין צורך לארוז את הגופן כנכס. אתם יכולים להגדיר גופן בהתאמה אישית לכל העיצוב, וכך לשפר את נוחות השימוש בכמה משקלים וסגנונות, כמו מודגש, בינוני או קליל, אם הם זמינים.

  1. יוצרים קובץ XML חדש בתיקייה res/font.
  2. מוסיפים רכיב בסיס <font-family> ומגדירים את המאפיינים שקשורים לגופן, כמו בדוגמה הבאה של קובץ XML:
  3. <?xml version="1.0" encoding="utf-8"?>
    <font-family xmlns:android="http://schemas.android.com/apk/res/android"
            android:fontProviderAuthority="com.example.fontprovider.authority"
            android:fontProviderPackage="com.example.fontprovider"
            android:fontProviderQuery="example font"
            android:fontProviderCerts="@array/certs">
    </font-family>
  4. מפנים לקובץ כאל @font/font_file_name בקובץ ה-XML של הפריסה. אפשר גם להשתמש בשיטה getFont() כדי לאחזר את הקובץ באופן פרוגרמטי, למשל getFont(R.font.font_file_name).

הצהרה מראש על גופנים במניפסט

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

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

  1. יוצרים מערך של משאבים ב-res/values/arrays.xml ומצהירים על הגופנים שרוצים לבצע להם אחזור מראש.
  2. res/values/arrays.xml
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <array name="preloaded_fonts">
            <item>@font/font1</item>
            <item>@font/font2</item>
        </array>
    </resources>
  3. משתמשים בתג meta-data כדי להצהיר על מערך המשאבים במניפסט.
  4. <meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />

הוספת אישורים

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

כדי להוסיף אישורים:

  1. יוצרים מערך מחרוזות עם פרטי האישור. למידע נוסף על פרטי האישור, אפשר לעיין במסמכי התיעוד של ספק הגופנים.
  2. <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="certs">
           <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item>
        </string-array>
    </resources>
  3. מגדירים את מאפיין fontProviderCerts למערך.
  4. android:fontProviderCerts="@array/certs"

גופנים להורדה בכתיבה