تتيح ميزة "الخطوط القابلة للتنزيل" لواجهات برمجة التطبيقات طلب الخطوط من تطبيق موفِّر بدلاً من تجميع الملفات في التطبيق أو السماح للتطبيق بتنزيل الخطوط. تتوفّر ميزة "الخطوط القابلة للتنزيل" على الأجهزة التي تعمل بالإصدار 14 من واجهة برمجة التطبيقات لنظام التشغيل Android والإصدارات الأحدث من خلال مكتبة AndroidX Core.
يقلّل من حجم التطبيق، وبالتالي يزيد من معدّل نجاح تثبيته.
تحسين حالة النظام بشكل عام، حيث يمكن لعدة تطبيقات مشاركة الخط نفسه من خلال
مقدّم خدمة ويوفّر ذلك للمستخدمين بيانات شبكة الجوّال وذاكرة الهاتف ومساحة القرص. في هذا النموذج، يتم جلب الخط عبر الشبكة عند الحاجة.
للحصول على تجربة عملية مع الخطوط القابلة للتنزيل، يمكنك الاطّلاع على نموذج تطبيق
DownloadableFonts.
كيف تعمل ميزة "الخطوط القابلة للتنزيل"؟
موفّر الخطوط هو تطبيق يسترد الخطوط ويخزّنها مؤقتًا على الجهاز لكي تتمكّن التطبيقات الأخرى من طلب الخطوط ومشاركتها. يوضّح الشكل التالي هذه العملية.
الشكل 1: عملية "الخطوط القابلة للتنزيل"
الأساسيات
يمكنك استخدام ميزة "الخطوط القابلة للتنزيل" بالطرق التالية، والتي تتم مناقشتها بالتفصيل'
في الأقسام اللاحقة:
استخدام ميزة "الخطوط القابلة للتنزيل" مع "استوديو Android" و"خدمات Google Play"
يمكنك ضبط تطبيقك لتنزيل الخطوط باستخدام الإصدار 3.0 من "استوديو Android" أو إصدار أحدث. لمساعدتك في بدء استخدام ميزات "الخطوط القابلة للتنزيل"، يمكنك استخدام موفّر الخطوط من خدمات Google Play.
في محرِّر التنسيق، اختَر TextView. بعد ذلك، ضمن السمات،
اختَر fontFamily > المزيد من الخطوط.
الشكل 2. استخدام محرِّر التنسيق
ستظهر نافذة الموارد.
في قائمة المصدر، اختَر Google Fonts.
في مربّع الخطوط، اختَر خطًا ضمن قسم "قابل للتنزيل".
اختَر إنشاء خط قابل للتنزيل (Create downloadable font) وانقر على حسنًا (OK).
الشكل 3. اختيار خط من نافذة المراجع
ينشئ استوديو Android تلقائيًا ملفات XML ذات الصلة اللازمة لعرض الخط بشكل صحيح في تطبيقك.
الشكل 4. معاينة ملف الخط
استخدام ميزة "الخطوط القابلة للتنزيل" آليًا
اعتبارًا من الإصدار 8.0 من نظام التشغيل Android (المستوى 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.
يوفّر نظام التشغيل 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-10-24 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2026-10-24 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]