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

רוצה לנסות את שיטת הכתיבה?
'Jetpack פיתוח נייטיב' היא ערכת הכלים המומלצת לממשק המשתמש ל-Android. איך משתמשים בטקסט בניסוח האוטומטי.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

האפליקציה שלך מאחזרת גופנים מספק הגופנים באמצעות ה-API של FontsContract. כל אחד לספק יש קבוצה משלו של הגבלות על גרסאות 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() כדי לאחזר את הגופן מהגופן ספק. השיטה מפעילה בדיקה כדי לקבוע אם הגופן קיים במטמון. אם המיקום הגופן לא זמין באופן מקומי, הוא מבצע קריאה לספק הפונט, ומאחזרת את הגופן. באופן אסינכרוני, ומעביר את התוצאה לקריאה החוזרת (callback). מעבירים את הפרמטרים הבאים:
    • מופע של כיתה אחת (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);

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

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

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

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

הוספת תלות ליבה של AndroidX

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

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

מגניב

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

Kotlin

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

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

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

  1. יוצרים קובץ XML חדש בתיקייה res/font.
  2. מוסיפים רכיב בסיס (root) <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 והצהרה על הגופנים שרוצים לבצע שליפה מראש (prefetch).
  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 Core, צריך להצהיר האישורים שספק הגופנים חתום איתם. המערכת משתמשת באישורים כדי לאמת הזהות של ספק הגופנים.

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

  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"
    

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

מתחיל בעוד לכתוב 1.2-alpha07, אפשר להשתמש ב-Downloadable Fonts API באפליקציית 'כתיבה' כדי להוריד Google Fonts משמש באופן אסינכרוני ומשתמשים בהם באפליקציה. עבור מידע נוסף זמין במאמר מסמכי תיעוד של כתיבת גופנים שניתנים להורדה.