התכונה 'גופנים שניתנים להורדה' מאפשרת לממשקי API לבקש גופנים מאפליקציה של ספק במקום קיבוץ קבצים באפליקציה או מתן אפשרות לאפליקציה להוריד גופנים. גופנים ניתנים להורדה זמינים ב- מכשירים שבהם פועלת גרסת Android API בגרסה 14 ומעלה דרך ספריית AndroidX Core.
אלה היתרונות שאפשר להפיק משימוש בגופנים שניתנים להורדה:
- מקטין את גודל האפליקציה, ולכן הגדלת שיעור ההצלחה של התקנת האפליקציה.
- משפר את התקינות הכוללת של המערכת, כי אפליקציות מרובות יכולות לשתף את אותו גופן באמצעות ספק. הפעולה הזו חוסכת למשתמשים נתונים סלולריים, זיכרון הטלפון ומקום בכונן. במודל הזה, הגופן מאוחזר דרך הרשת במקרה הצורך.
איך פועלים הגופנים שניתנים להורדה?
ספק גופנים הוא אפליקציה שמאחזרת גופנים ושומרת אותם במטמון באופן מקומי כדי שאפליקציות אחרות יוכלו לבקש ולשתף גופנים. האיור הבא ממחיש את התהליך.
העקרונות הבסיסיים
ניתן להשתמש בתכונה 'גופנים ניתנים להורדה' בדרכים הבאות, המפורטות בהרחבה בהמשך' בהמשך:
שימוש בגופנים שניתנים להורדה ב-Android Studio וב-Google Play Services
אתם יכולים להגדיר את האפליקציה להורדת גופנים באמצעות Android Studio 3.0 ואילך. כדי לעזור לך כדי להתחיל להשתמש בתכונות הגופנים להורדה, ניתן להשתמש בספק הגופנים מ-Google Play שירותים שונים.
- בעורך הפריסה, בוחרים
TextView
. לאחר מכן, בקטע מאפיינים, בוחרים באפשרות fontFamily > גופנים נוספים. החלון Resources יופיע. - בתפריט Source, בוחרים באפשרות Google Fonts.
- בתיבה גופנים, בוחרים גופן בקטע 'הורדה'. אזור.
- בוחרים באפשרות יצירת גופן להורדה ולוחצים על אישור.
מערכת Android Studio יוצרת באופן אוטומטי את קובצי ה-XML הרלוונטיים שדרושים לעיבוד הגופן. נכון באפליקציה.
שימוש פרוגרמטי בגופנים שניתנים להורדה
החל מ-Android 8.0 (רמת API 26), ב-AndroidX Core יש תמיכה מלאה בגופנים שניתנים להורדה. עבור למידע נוסף על השימוש בספריית AndroidX Core, אפשר לעיין הקטע Downloadable Fonts AndroidX Core Library בדף הזה.
כדי להשתמש באופן פרוגרמטי בתכונה 'גופנים שניתנים להורדה', יש ליצור אינטראקציה עם שתי סוגי מפתחות:
android.graphics.fonts.FontRequest
: בכיתה הזו אפשר ליצור בקשה לגופן.FontsContractCompat
: בכיתה הזו תוכלו ליצור אובייקטTypeface
מבוסס על לבקשת הגופן.
האפליקציה שלך מאחזרת גופנים מספק הגופנים באמצעות ה-API של FontsContract
. כל אחד
לספק יש קבוצה משלו של הגבלות על גרסאות Android ושפת השאילתות שהוא תומך בהן. עבור
מידע נוסף על גרסאות Android ועל פורמט השאילתה, אפשר לעיין
התיעוד.
כדי להוריד גופן, מבצעים את השלבים הבאים:
- יוצרים מופע של המחלקה
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);
- יוצרים מופע של
FontsContract.FontRequestCallback
בכיתה. - לשנות את
onTypefaceRetrieved()
כדי לציין שבקשת הגופן הושלמה. מזינים את הגופן שאוחזר כפרמטר. אפשר להשתמש בשיטה הזו כדי להגדיר את הגופן לפי הצורך. לדוגמה, ניתן להגדיר את הגופן שלTextView
- לשנות את
onTypefaceRequestFailed()
לקבלת מידע על שגיאות בתהליך בקשת הגופן. אפשר לקבל מידע נוסף על קודי שגיאה, קבועים של קודי שגיאה. - מפעילים את השיטה
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. המשמעות היא שאין צורך לקבץ את הגופן כפי שהוא. נכס. אפשר להגדיר גופן מותאם אישית לכל העיצוב, כדי לזרז את נוחות השימוש עבור יש כמה משקולות וסגנונות, למשל מודגש, בינוני או בהיר, אם צוין.
- יוצרים קובץ XML חדש בתיקייה
res/font
. - מוסיפים רכיב בסיס (root)
<font-family>
ומגדירים את המאפיינים הקשורים לגופנים, כך: מוצגת בקובץ ה-XML לדוגמה הבא: - יש לעיין בקובץ כ-
@font/font_file_name
בקובץ ה-XML של הפריסה. אפשר גם להשתמשgetFont()
כדי לאחזר את הקובץ באופן פרוגרמטי, כמוgetFont(R.font.font_file_name)
.
<?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>
הצהרה מראש על גופנים במניפסט
ניפוח הפריסה ואחזור המשאבים הן משימות סינכרוניות. כברירת מחדל, בניסיון הראשון אחזור גופנים מפעיל בקשה לספק הגופנים, ולכן מגדיל את הפריסה הראשונה בזמן האימון. כדי למנוע את העיכוב, אפשר להצהיר מראש על גופנים שצריך לאחזר במניפסט. אחרי שהמערכת תאחזר את הגופן מהספק, הוא יהיה זמין מייד. אם גופן השליפה נמשכת יותר זמן מהצפוי, המערכת מבטלת את תהליך השליפה ומשתמשת בברירת המחדל גופן.
כדי להצהיר מראש על גופנים במניפסט, מבצעים את השלבים הבאים:
- יצירת מערך משאבים ב-
res/values/arrays.xml
והצהרה על הגופנים שרוצים לבצע שליפה מראש (prefetch). - צריך להשתמש בתג
meta-data
כדי להצהיר על מערך המשאבים במניפסט.
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>
<meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />
הוספת אישורים
אם ספק גופנים לא מותקן מראש, או אם משתמשים בספריית AndroidX Core, צריך להצהיר האישורים שספק הגופנים חתום איתם. המערכת משתמשת באישורים כדי לאמת הזהות של ספק הגופנים.
כדי להוסיף אישורים:
- יוצרים מערך מחרוזת עם פרטי האישור. מידע נוסף על אישור פרטים נוספים, אפשר לעיין במסמכים של ספק הגופנים.
- מגדירים את המאפיין
fontProviderCerts
למערך.
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="certs"> <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item> </string-array> </resources>
android:fontProviderCerts="@array/certs"
גופנים שניתנים להורדה ב'כתיבה'
מתחיל בעוד לכתוב 1.2-alpha07, אפשר להשתמש ב-Downloadable Fonts API באפליקציית 'כתיבה' כדי להוריד Google Fonts משמש באופן אסינכרוני ומשתמשים בהם באפליקציה. עבור מידע נוסף זמין במאמר מסמכי תיעוד של כתיבת גופנים שניתנים להורדה.