تتيح ميزة "الخطوط القابلة للتنزيل" لواجهات برمجة التطبيقات طلب الخطوط من تطبيق موفِّر بدلاً من تجميع الملفات في التطبيق أو السماح للتطبيق بتنزيل الخطوط. تتوفّر ميزة "الخطوط القابلة للتنزيل" على الأجهزة التي تعمل بإصدار 14 من Android API والإصدارات الأحدث من خلال مكتبة AndroidX Core.
توفّر "الخطوط القابلة للتنزيل" المزايا التالية:
- تقليل حجم التطبيق، وبالتالي زيادة معدّل نجاح تثبيت التطبيق
- تحسين صحة النظام بشكل عام، لأنّه يمكن لعدة تطبيقات مشاركة الخط نفسه من خلال موفِّر ويؤدي ذلك إلى توفير بيانات شبكة الجوّال وذاكرة الهاتف ومساحة القرص للمستخدمين. في هذا النموذج، يتم جلب الخط عبر الشبكة عند الحاجة.
كيف تعمل ميزة "الخطوط القابلة للتنزيل"؟
موفِّر الخطوط هو تطبيق يسترجع الخطوط ويخزّنها مؤقتًا على الجهاز حتى تتمكّن التطبيقات الأخرى من طلب الخطوط ومشاركتها. يوضح الشكل التالي هذه العملية.
الأساسيات
يمكنك استخدام ميزة "الخطوط القابلة للتنزيل" بالطرق التالية، والتي تتم مناقشتها بالتفصيل في الأقسام اللاحقة:
استخدام "الخطوط القابلة للتنزيل" مع "استوديو Android" و"خدمات Google Play"
يمكنك ضبط تطبيقك لتنزيل الخطوط باستخدام Android Studio 3.0 أو إصدار أحدث. لمساعدتك في بدء استخدام ميزات "الخطوط القابلة للتنزيل"، يمكنك استخدام موفِّر الخطوط من خدمات Google Play.
- في محرِّر التنسيق، اختَر
TextView
. بعد ذلك، ضمن السمات، اختَر fontFamily > المزيد من الخطوط. تظهر نافذة الموارد. - في قائمة المصدر، اختَر Google Fonts.
- في مربّع الخطوط، اختَر خطًا ضمن منطقة "الخطوط القابلة للتنزيل".
- اختَر إنشاء خط قابل للتنزيل وانقر على حسنًا.
ينشئ Android Studio تلقائيًا ملفات XML ذات الصلة اللازمة لعرض الخط بشكل صحيح في تطبيقك.
استخدام ميزة "الخطوط القابلة للتنزيل" آليًا
بدءًا من الإصدار Android 8.0 (المستوى 26 لواجهة برمجة التطبيقات)، سيوفّر AndroidX Core توافقًا كاملاً مع الخطوط القابلة للتنزيل. للحصول على مزيد من المعلومات حول استخدام مكتبة AndroidX Core، يُرجى الاطّلاع على قسم مكتبة AndroidX Core للخطوط القابلة للتنزيل في هذه الصفحة.
لاستخدام ميزة "الخطوط القابلة للتنزيل" آليًا، عليك التفاعل مع فئتَين رئيسيتين:
android.graphics.fonts.FontRequest
: تتيح لك هذه الفئة إنشاء طلب خط.FontsContractCompat
: تتيح لك هذه الفئة إنشاء عنصرTypeface
جديد استنادًا إلى طلب الخط.
يسترجع تطبيقك الخطوط من موفِّر الخطوط باستخدام واجهة برمجة التطبيقات 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()
لاسترداد الخط من موفِّر الخط. تبدأ الطريقة عملية تحقّق لتحديد ما إذا كان الخط متوفّرًا في ذاكرة التخزين المؤقت. إذا كان الخط غير متاح على الجهاز، يتم استدعاء موفّر الخط واسترداد الخط بشكل غير متزامن وتمرير النتيجة إلى رد الاتصال. أدخِل المَعلمات التالية:- مثيل لفئة
Context
- مثيل لفئة
android.graphics.fonts.FontRequest
- إعادة الاتصال لتلقّي نتائج طلب الخط
- معالِج لاسترداد الخطوط في سلسلة محادثات
- مثيل لفئة
يوضّح الرمز البرمجي النموذجي التالي العملية الكاملة للاستخدام المتوافق مع الويب للخطوط:
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 ميزة "الخطوط القابلة للتنزيل" على الأجهزة التي تعمل بالإصدار 14 من
واجهة برمجة تطبيقات Android أو إصدار أحدث. تحتوي
الحزمة 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:2.2.0" }
Kotlin
dependencies { ... implementation("androidx.core:core-ktx:2.2.0") }
استخدام الخطوط القابلة للتنزيل كمصادر في ملف XML
يقدّم نظام التشغيل Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) وAndroidX Core طريقة أسرع وأكثر ملاءمةً لتعريف خط مخصّص كمورد في تنسيق XML. وهذا يعني أنّه ما مِن حاجة إلى تجميع الخط كهيأة مادة عرض. يمكنك تحديد خط مخصّص للتصميم بالكامل، ما يسرع سهولة الاستخدام لعدة سمك وأنماط، مثل غامق أو متوسط أو خفيف، عند توفّرها.
- أنشئ ملف XML جديدًا في مجلد
res/font
. - أضِف عنصر جذر
<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
وأعلِن عن الخطوط التي تريد جلبها مسبقًا. - استخدِم علامة
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"