اعتبارًا من Android 15، يتم عرض الخطوط المتغيّرة في وقت التشغيل بكفاءة ودقة أفضل. في هذا التحديث، على البائعين
إضافة إعدادات جديدة للخطوط المتغيّرة إلى
font_fallback.xml
بدلاً من fonts.xml، لأنّنا سنوقف استخدام fonts.xml.
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة دعم الخطوط المتغيّرة.
في الإصدار 11 من Android والإصدارات الأقدم، يتطلّب تحديث ملفات الخطوط المثبّتة على الجهاز في AOSP (في قسم /system/fonts) أو أقسام البائعين (في أقسام /product/fonts أو /system/fonts) إجراء تحديث للنظام من قِبل الشركة المصنّعة للمعدات الأصلية. يؤثر هذا الشرط بشكل كبير في توافق رموز الإيموجي. في Android 12، يمكنك استخدام خدمة النظام FontManager لإدارة ملفات الخطوط المثبّتة وتحديث ملفات الخطوط المثبّتة على الجهاز بدون إجراء تحديث للنظام.
يتضمّن Android 12 ثلاثة تفاعلات بين العمليات: FontManagerService وFont Updater وApplication.
FontManagerService هو نظام الإدارة المركزي في خادم النظام.
يخزِّن FontManagerService أحدث إعدادات خطوط النظام لكل مستخدم.
FontUpdater هو برنامج قابل للتوصيل لتحديث الخطوط، ويتم الوثوق به من خلال عملية التحقّق من إذن signature|privileged. يتواصل FontUpdater مع FontManagerService للحصول على إعدادات خطوط النظام الحالية أو تثبيتها أو إزالتها أو تعديلها. يمكن أن يمرِّر FontUpdater محتويات ملفات الخطوط الجديدة من خلال آليات الاتصال بين العمليات (IPC). يحفظ FontManagerService المحتويات في موقع تخزين يمكن قراءته من قِبل الجميع، مثل ملفات /data/fonts. هذا التخزين محمي. لا يمكن كتابته إلا من خلال FontManagerService فقط، وذلك بموجب
سياسة SELinux.
عند تشغيل فئة Application، يتم تمرير إعدادات خطوط النظام كـ
معلّمات لطريقة bindApplication، ثم يتم تهيئة إعدادات الخطوط
لاستخدامها من قِبل عملية التطبيق.
دعم الخطوط المتغيّرة
اعتبارًا من Android 15، يتم تحديد إعدادات الخطوط المتغيّرة في
باستخدام التنسيق التالي:
font_fallback.xml
<family lang="und-Ethi" supportedAxes="wght,ital">
<font>NotoSansEthiopic-VF.ttf</font>
</family>
في هذا التنسيق، يتضمّن الخط المتغيّر جميع سمات الخط الثابت مع سمة إضافية هي supportedAxes. سمة supportedAxes هي قائمة قيم مفصولة بفاصلة لعلامات المحاور المتوافقة. في Android 15، يمكن تحديد المحورَين wght وital فقط.
إذا لم يتم تحديد السمة supportedAxes، تعمل عقدة font كخط ثابت من مثيل واحد لخط متغيّر محدّد باستخدام العناصر الفرعية axis.
إذا تم تحديد السمة supportedAxes، ينشئ النظام ديناميكيًا مثيلاً للخط لقيمة الوزن والنمط المحدّدتَين في وقت التشغيل.
يمكن للمطوّرين استخدام واجهة برمجة التطبيقات Java android.graphics.fonts.SystemFonts#getAvailableFonts
أو واجهة برمجة التطبيقات NDK ASystemFontIterator_open
للحصول على قائمة بملفات الخطوط المثبّتة على النظام. للحصول على معلومات عن
واجهات برمجة التطبيقات للمطوّرين التي تتيح هذا التحديث، يُرجى الاطّلاع على
واجهة برمجة التطبيقات المحسّنة للخطوط المتغيّرة بتنسيق OpenType
و buildVariableFamily.
تخصيص الخطوط
تثبِّت بعض الشركات المصنّعة للمعدات الأصلية ملفات الخطوط أو تستبدلها في AOSP لعرض علاماتها التجارية. يتيح Android 12 هذه الوظيفة، ولكنه يضيف متطلبات للحفاظ على تحديث خطوط الإيموجي على الأجهزة. لا تحتاج الشركات المصنّعة للمعدات الأصلية التي لا تعدِّل ملفات خطوط الإيموجي أو تحدِّثها إلى استخدام هذه الميزة.
تعدِّل Google ملفات الخطوط، وخاصةً ملفات NotoColorEmoji من خلال GMS
Core، لذا لا تعدِّل ملف NotoColorEmoji.ttf أو تزِله من قسم
/system، ولا تزِله من
/frameworks/base/data/fonts/fonts.xml.
في ما يلي ثلاث طرق يمكنك من خلالها تخصيص خطوطك:
- استبدال ملف
NotoColorEmoji.ttfبملف خطوط إيموجي يحمل العلامة التجارية للشركة المصنّعة للمعدات الأصلية - تعديل ملف
NotoColorEmoji.ttfلتلبية احتياجات السوق المحلية - استبدال ملفات الخطوط الأخرى أو تعديلها
إذا كنت لا تعدِّل خطوط الإيموجي في AOSP، ليس عليك اتّخاذ أي إجراء. إذا أردت تخصيص خطوط الإيموجي، اتّبِع التعليمات الواردة في الأقسام التالية.
استبدال NotoColorEmoji.ttf بملفات خطوط إيموجي تحمل العلامة التجارية للشركة المصنّعة للمعدات الأصلية
لاستبدال ملف NotoColorEmoji.ttf بملف خطوط الإيموجي الذي يحمل العلامة التجارية للشركة المصنّعة للمعدات الأصلية، ضَع ملف خطوط الإيموجي قبل سلسلة الرجوع إلى الخطوط الاحتياطية مباشرةً:
- ضَع ملف الخط الخاص بك، الذي يُطلق عليه اسم
OEMCustomEmoji.ttf، في قسم/system. عدِّل الملف
/frameworks/base/data/fonts/fonts.xml(والملف/frameworks/base/data/fonts/font-fallback.xmlفي Android 15 والإصدارات الأحدث) كما هو موضّح في الرمز البرمجي التالي:<family lang="ko"> <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font> </family> <!-- ADD FOLLOWING LINE --> <family lang="und-Zsye"> <font weight="400" style="normal">OEMCustomEmoji.ttf</font> </family> <!-- END OF MODIFICATION --> <family lang="und-Zsye"> <font weight="400" style="normal">NotoColorEmoji.ttf</font> </family> <family lang="und-Zsym"> <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted2.ttf</font> </family>
تعديل NotoColorEmoji.ttf لتلبية احتياجات السوق المحلية
اتّبِع الخطوات التالية لتخصيص الخطوط لتلبية احتياجات السوق المحلية:
- أنشِئ ملف
NotoColorEmojiخاصًا بك باسم مختلف، مثلاً اسمِهModified\_NotoColorEmoji.ttf. - ضَع هذا الملف قبل ملف
NotoColorEmoji.ttfالأصلي.
بعد تنفيذ الخطوة 2، يظهر الرمز المعدَّل الذي يتيحه
Modified\NotoColorEmoji.ttf بدلاً من NotoColorEmoji.ttf الأصلي.
تنصح Google بما يلي:
- يجب أن يحتوي هذا الخط على الرمز الضروري فقط.
- يجب تفويض الرموز غير المعدَّلة إلى ملف
NotoColorEmoji.ttfالأصلي لكي تتلقّى أجهزتك أي إصلاحات في التصميم يتم إجراؤها في إصدارات الإيموجي المستقبلية.
إزالة الرموز: لإزالة الرموز من ملف NotoColorEmoji.ttf، اتّبِع الخطوتَين 1 و2، وحدِّد glyph ID = 0 في cmap.
استخدام علم إقليمي: إذا كان الرمز المستهدَف علمًا إقليميًا، حدِّد معرّف الرمز كرمز بلد غير معروف. (استخدِم country code = "ZZ".)
إنشاء رمز التوفو: يمكنك تحديد معرّف رمز التوفو بشكل صريح إذا أردت استخدام رمز. عند تحديد glyphID = 0، يفسّر التطبيق ذو الصلة ذلك على أنّه "الحرف الرسومي غير متاح". على سبيل المثال، عند استخدام هذه السمة، يعرض التطبيق Paint#hasGlyph القيمة false.
استبدال ملفات الخطوط الأخرى أو تعديلها
لاستبدال الخطوط الأخرى أو تعديلها، يكون التخصيص مشابهًا لتعديل ملفات TTF لتلبية احتياجات السوق المحلية. يتم تجاهل ملفات الخطوط غير المعروفة التي يتم تعديلها في AOSP في وقت التشغيل، ولا يتم تعديلها. تتجاهل Google الخطوط غير المعروفة على جهازك. ويشمل ذلك ملفات الخطوط التي تم تعديلها من الخطوط الأصلية في AOSP.
على الرغم من أنّ Google هي التي تجري تعديلات الخطوط في "خدمات Google للأجهزة الجوّالة"، فإنّ آلية تعديل الخطوط العامة متاحة لجميع المصنّعين الأصليين للأجهزة. يمكن للشركات المصنّعة للمعدات الأصلية تثبيت برامج إضافية لتعديل الخطوط باستخدام الخطوات الواردة في تلبية المتطلبات الأساسية وتوقيع ملفات الخطوط و إجراء تعديلات على الخطوط في وقت التشغيل.
تلبية المتطلبات الأساسية
تستخدم آلية تعديل الخطوط ميزة fs-verity في نواة Linux. تأكَّد من أنّ جهازك متوافق مع fs-verity وأدرِج الشهادة في جهازك.
توقيع ملفات الخطوط
بما أنّ ملفات الخطوط هي موارد محفوفة بالمخاطر، يجب التحقّق منها باستخدام مفاتيح موثوق بها.
راجِع بعناية جميع ملفات الخطوط التي سيتم تعديلها، ووقِّعها باستخدام مفتاحك الخاص. يجب أن يكون التوقيع متوافقًا مع fs-verity.
إجراء تعديلات على الخطوط في وقت التشغيل
يُجري تطبيق النظام FontManager تعديلات على الخطوط. يوفّر تطبيق FontManager أحدث حالة لخطوط النظام المثبّتة وإمكانية تعديل ملفات الخطوط باستخدام التوقيعات. لاستدعاء تطبيقات التعديل، أضِف الـ
UPDATE_FONT signature|privileged إذن إلى الـ
قائمة المسموح بها لتطبيقك،
وإلى ملف البيان.
امنح إذن UPDATE_FONT signature|privileged لوظيفة خدمة التحديث في تطبيقك.