تتيح ميزة "الخطوط القابلة للتنزيل" لواجهات برمجة التطبيقات طلب الخطوط من تطبيق مقدِّم بدلاً من تجميع الملفات في التطبيق أو السماح للتطبيق بتنزيل الخطوط. تتوفّر ميزة "الخطوط القابلة للتنزيل" على الأجهزة التي تعمل بالإصدار 14 من واجهة برمجة التطبيقات Android والإصدارات الأحدث من خلال مكتبة AndroidX Core.
تقليل حجم التطبيق، ما يؤدي إلى زيادة معدّل نجاح تثبيت التطبيق
تحسين حالة النظام العامة، إذ يمكن لتطبيقات متعددة مشاركة الخط نفسه من خلال مقدِّم
ما يوفّر على المستخدمين بيانات شبكة الجوّال وذاكرة الهاتف ومساحة القرص في هذا النموذج، يتم جلب الخط عبر الشبكة عند الحاجة إليه.
للحصول على تجربة عملية مع ميزة "الخطوط القابلة للتنزيل"، يمكنك الاطّلاع على تطبيق
DownloadableFonts
النموذجي.
كيف تعمل ميزة "الخطوط القابلة للتنزيل"؟
مقدِّم الخط هو تطبيق يسترد الخطوط ويخزّنها مؤقتًا محليًا ليتمكّن من طلب الخطوط ومشاركتها مع التطبيقات الأخرى. يوضّح الشكل التالي العملية.
الشكل 1. عملية "الخطوط القابلة للتنزيل"
الأساسيات
يمكنك استخدام ميزة "الخطوط القابلة للتنزيل" بالطرق التالية، والتي سيتم تناولها بالتفصيل في الأقسام اللاحقة:
استخدام ميزة "الخطوط القابلة للتنزيل" مع "استوديو Android" و"خدمات Google Play"
يمكنك ضبط تطبيقك لتنزيل الخطوط باستخدام "استوديو Android" 3.0 أو إصدار أحدث. لمساعدتك في البدء بميزات "الخطوط القابلة للتنزيل"، يمكنك استخدام مقدِّم الخط من "خدمات Google Play".
في أداة تعديل التنسيق، اختَر TextView. بعد ذلك، ضمن السمات،
اختر fontFamily > المزيد من الخطوط.
الشكل 2. استخدام أداة تعديل التنسيق
تظهر نافذة الموارد.
في قائمة المصدر ، اختَر خطوط Google.
في مربّع الخطوط ، اختَر خطًا ضمن منطقة "قابل للتنزيل".
اختَر إنشاء خط قابل للتنزيل وانقر على حسنًا.
الشكل 3. اختيار خط من نافذة الموارد
ينشئ "استوديو Android" تلقائيًا ملفات XML ذات الصلة اللازمة لعرض الخط بشكل صحيح في تطبيقك.
الشكل 4. معاينة ملف الخط
استخدام ميزة "الخطوط القابلة للتنزيل" برمجيًا
اعتبارًا من Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات)، توفّر مكتبة AndroidX Core دعمًا كاملاً لميزة "الخطوط القابلة للتنزيل". لمزيد من المعلومات عن استخدام مكتبة AndroidX Core، يُرجى الاطّلاع على قسم
مكتبة AndroidX Core لميزة "الخطوط القابلة للتنزيل" في هذه الصفحة.
لاستخدام ميزة "الخطوط القابلة للتنزيل" برمجيًا، يمكنك التفاعل مع فئتَين رئيسيتَين:
يسترد تطبيقك الخطوط من مقدِّم الخط باستخدام واجهة برمجة التطبيقات FontsContract. لكل مقدِّم مجموعة القيود الخاصة به على إصدارات Android ولغة طلب البحث التي يتيحها. لمزيد من المعلومات عن إصدارات Android وتنسيق طلب البحث، يُرجى الرجوع إلى مستندات مقدِّم الخدمة.
لتنزيل خط، يُرجى اتّباع الخطوات التالية:
أنشئ مثيلاً لفئة android.graphics.fonts.FontRequest لطلب الخط من مقدِّم الخدمة. لإنشاء طلب، مرِّر المَعلمات التالية:
مرجع مقدِّم الخط
حزمة مقدِّم الخط للتحقّق من هوية مقدِّم الخدمة
طلب البحث عن الخط كسلسلة نصية لمزيد من المعلومات عن تنسيقات طلب البحث، يُرجى الاطّلاع على مستندات مقدِّم الخط
، مثل
Google Fonts.
قائمة بمجموعات من قيم التجزئة للشهادات للتحقّق من هوية مقدِّم الخدمة
ألغِ طريقة
onTypefaceRetrieved()
للإشارة إلى اكتمال طلب الخط. قدِّم الخط الذي تم استرداده كمعلَمة.
يمكنك استخدام هذه الطريقة لضبط الخط حسب الحاجة. على سبيل المثال، يمكنك ضبط الخط على
TextView.
استدعِ طريقة FontsContract.requestFont() لاسترداد الخط من مقدِّم الخط. تبدأ الطريقة عملية تحقّق لتحديد ما إذا كان الخط متوفّرًا في ذاكرة التخزين المؤقت. إذا لم يكن الخط متوفّرًا محليًا، يتم استدعاء مقدِّم الخط واسترداد الخط
بشكل غير متزامن وتمرير النتيجة إلى معاودة الاتصال. مرِّر المَعلمات التالية:
يوضّح الرمز النموذجي التالي عملية "الخطوط القابلة للتنزيل" بشكل عام:
Kotlin
valrequest=FontRequest("com.example.fontprovider.authority","com.example.fontprovider","my font",certs)valcallback=object:FontsContract.FontRequestCallback(){overridefunonTypefaceRetrieved(typeface:Typeface){// Your code to use the font goes here....}overridefunonTypefaceRequestFailed(reason:Int){// Your code to deal with the failure goes here....}}FontsContract.requestFonts(context,request,handler,null,callback)
Java
FontRequestrequest=newFontRequest("com.example.fontprovider.authority","com.example.fontprovider","my font",certs);FontsContract.FontRequestCallbackcallback=newFontsContract.FontRequestCallback(){@OverridepublicvoidonTypefaceRetrieved(Typefacetypeface){// Your code to use the font goes here....}@OverridepublicvoidonTypefaceRequestFailed(intreason){// 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 الخاص بتطبيقك:
استخدام ميزة "الخطوط القابلة للتنزيل" كموارد في 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).
الإعلان المسبَق عن الخطوط في ملف البيان
توسيع التنسيق واسترداد الموارد هما مهمتان متزامنتان. تؤدي المحاولة الأولى لاسترداد الخطوط تلقائيًا إلى إرسال طلب إلى مقدِّم الخط، وبالتالي زيادة وقت التنسيق الأول. لتجنُّب التأخير، يمكنك الإعلان مسبقًا عن الخطوط التي يجب استردادها في ملف البيان.
بعد أن يسترد النظام الخط من مقدِّم الخدمة، يصبح متاحًا على الفور. إذا استغرق استرداد الخط وقتًا أطول من المتوقع، سيوقف النظام عملية الجلب ويستخدم الخط التلقائي.
للإعلان مسبقًا عن الخطوط في ملف البيان، يُرجى اتّباع الخطوات التالية:
أنشئ مصفوفة موارد في res/values/arrays.xml وأعلِن عن الخطوط التي تريد جلبها مسبقًا.
عندما لا يكون مقدِّم الخط مثبّتًا مسبقًا، أو إذا كنت تستخدم مكتبة AndroidX Core، أعلِن عن الشهادات التي تم توقيع مقدِّم الخط بها. يستخدم النظام الشهادات للتحقّق من هوية مقدِّم الخط.
يُرجى اتّباع الخطوات التالية لإضافة الشهادات:
أنشئ مصفوفة سلاسل نصية تتضمّن تفاصيل الشهادة. لمزيد من المعلومات عن تفاصيل الشهادة
، يُرجى الرجوع إلى مستندات مقدِّم الخط.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2026-04-26 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2026-04-26 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]