اعتبارًا من Android 15، يتم عرض الخطوط المتغيرة أثناء
التشغيل بكفاءة ونطاق أفضل. بعد هذا التعديل، على المورّدين
إضافة إعدادات جديدة للخطوط المتغيّرة إلى
font_fallback.xml
بدلاً من fonts.xml
، لأنّه سيتم إيقاف fonts.xml
نهائيًا.
اطّلِع على إتاحة استخدام الخطوط المتغيّرة للحصول على مزيد من المعلومات.
في نظام التشغيل Android 11 والإصدارات الأقدم، يتطلّب تحديث ملفات الخطوط المثبَّتة على الجهاز في 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
، ثم يتم إعداد إعدادات الخط
لاستخدامها من خلال عملية التطبيق.
إتاحة الخطوط المتغيّرة
بدءًا من الإصدار 15 من Android، يتم تحديد إعدادات الخطوط المتغيّرة
في
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
، ينشئ النظام مثيلًا
للخط ديناميكيًا لقيمة الوزن والأسلوب المحدّدة في وقت التشغيل.
يمكن للمطوّرين استخدام واجهة برمجة تطبيقات android.graphics.fonts.SystemFonts#getAvailableFonts
Java API أو واجهة برمجة تطبيقات ASystemFontIterator_open
NDK API للحصول على قائمة بملفات الخطوط المثبَّتة على النظام. للحصول على معلومات عن
واجهات برمجة التطبيقات للمطوّرين التي تتيح هذا التعديل، يُرجى الاطّلاع على واجهة برمجة التطبيقات المحسّنة لـ OpenType Variable Font API
و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
في الإصدار 15 من Android والإصدارات الأحدث) كما هو موضّح في الرمز البرمجي التالي:<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
في جدول ترميز الأحرف.
استخدام علم إقليمي: إذا كان الرمز المستهدف هو علم إقليمي، حدِّد رقم تعريف
الرمز على أنّه رمز بلد غير معروف. (استخدِم country code = "ZZ"
.)
إنشاء رمز tofu: يمكنك تحديد معرّف رمز tofu صراحةً إذا أردت
استخدامه. عند تحديد glyphID = 0
، يفسّر التطبيق ذي الصلة ذلك على أنّه
"الرمز غير متاح". على سبيل المثال، عند استخدام هذه السمة، يعرض
Paint#hasGlyph
التطبيق القيمة false
.
استبدال ملفات الخطوط الأخرى أو تعديلها
لاستبدال الخطوط الأخرى أو تعديلها، يكون التخصيص مشابهًا لتعديل ملفات TTF لتلبية احتياجات السوق المحلية. يتم تجاهل ملفات الخطوط غير المعروفة التي يتم تعديلها في AOSP أثناء التشغيل، ولا يتم تعديلها. تتجاهل Google أشكال الخطوط غير المعروفة في جهازك. ويشمل ذلك ملفات الخطوط التي تم تعديلها من الخطوط الأصلية في AOSP.
على الرغم من أنّ Google هي التي تُجري تحديثات الخطوط في GMS Core، إلا أنّ آلية تحديث الخطوط العامة متاحة لجميع المصنّعين الأصليّين للأجهزة. يمكن لمصنّعي المعدّات الأصلية تثبيت أدوات إضافية لتعديل الخطوط باستخدام الخطوات الواردة في استيفاء المتطلبات الأساسية وتوقيع ملفات الخطوط وإجراء تعديلات على الخطوط أثناء التشغيل.
استيفاء المتطلبات الأساسية
تستخدم آلية تحديث الخطوط ميزة fs-verity
لنظام التشغيل Linux. تأكَّد من أنّ
جهازك متوافق مع fs-verity
وأنّه يتضمّن الشهادة.
توقيع ملفات الخطوط
بما أنّ ملفات الخطوط هي مصادر خطيرة، يجب إثبات ملكيتها باستخدام مفاتيح موثوقة.
راجِع بعناية جميع ملفات الخطوط التي سيتم تعديلها، وامضِ عليها باستخدام
مفتاحك الخاص. يجب أن يكون التوقيع متوافقًا معfs-verity
.
إجراء تعديلات على الخطوط في وقت التشغيل
يُجري تطبيق النظام FontManager
تحديثات للخطوط. يقدّم تطبيق FontManager
حالة أحدث خط نظام مثبّت وإمكانية تعديل ملفات
الخطوط باستخدام التوقيعات. لطلب تحديث التطبيقات، أضِف إذن
UPDATE_FONT signature|privileged
إلى
قائمة التطبيقات المسموح بها،
وإلى ملف البيان.
امنح الإذن UPDATE_FONT signature|privileged
لوظيفت تعديل التطبيق.