بدءًا من الإصدار 15 من نظام Android، يتم عرض الخطوط المتغيّرة في
وقت التشغيل بكفاءة ودقة أفضل. بعد هذا التعديل، على المورّدين
إضافة إعدادات جديدة للخطوط المتغيّرة إلى
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
، ينشئ النظام ديناميكيًا
مثيل خط لقيمة الوزن والنمط المحدّدة في وقت التشغيل.
يمكن للمطوّرين استخدام 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
لوظيفت تعديل التطبيق
.