تنفيذ الخطوط المخصّصة

بدءًا من نظام 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 ثم يقوم بتهيئة إعدادات الخط للاستخدام من خلال عملية التطبيق.

دعم الخطوط المختلفة

بدءًا من 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 وbuildVariableFamily.

تخصيص الخطوط

يثبّت بعض المصنّعين الأصليين ملفات الخطوط أو يستبدلونها في AOSP لعرض علاماتهم التجارية. يوفّر Android 12 هذه الوظيفة، ولكنه يضيف متطلبات تحديث خطوط الرموز التعبيرية في الأجهزة. المصنّعين الأصليين للأجهزة التي لا تُجري تعديلات تحديث ملفات خطوط الرموز التعبيرية لا يلزم استخدام هذه الميزة.

تعدّل Google ملفات الخطوط، ولا سيما ملفات NotoColorEmoji من خلال GMS. أساسي، لذا لا تعدِّل ملف NotoColorEmoji.ttf أو تزيله من قسم /system، وعدم إزالته من /frameworks/base/data/fonts/fonts.xml لاحظ الطرق الثلاث التالية التي يمكنك من خلالها تخصيص الخطوط:

  1. استبدِل ملف NotoColorEmoji.ttf بخط رمز تعبيري يحمل علامة المصنّع الأصلي للجهاز.
  2. عدِّل ملف NotoColorEmoji.ttf بما يتناسب مع احتياجات السوق المحلية.
  3. استبدِل ملفات الخطوط الأخرى أو عدِّلها.

إذا كنت لا تعدّل خطوط الرموز التعبيرية في ميزة AOSP، ليس عليك اتّخاذ أي إجراء. في حال حذف إذا كنت تريد تخصيص خطوط الرموز التعبيرية، استخدم التعليمات الواردة في ما يلي الأقسام.

استبدال NotoColorEmoji.ttf بخطوط رموز تعبيرية تحمل العلامة التجارية للمصنّع الأصلي للجهاز

لاستبدال ملف NotoColorEmoji.ttf بملف خطوط الرموز التعبيرية الذي يحمل العلامة التجارية للمصنّع الأصلي للجهاز، يُرجى اتّباع الخطوات التالية: ضع خط الرموز التعبيرية قبل السلسلة الاحتياطية للخط مباشرةً:

  1. ضَع الخط الخاص بك، المُسمّى OEMCustomEmoji.ttf، في القسم /system.
  2. تعديل /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 لاحتياجات السوق المحلية

اتّبِع الخطوات التالية للتخصيص وفقًا لاحتياجات السوق المحلية:

  1. إنشاء ملف NotoColorEmoji باسم مختلف: على سبيل المثال، ونسميه Modified\_NotoColorEmoji.ttf.
  2. ضَعه قبل ملف NotoColorEmoji.ttf الأصلي.

بعد تنفيذ الخطوة 2، سيعتمد الحرف الرسومي المعدَّل عرض Modified\NotoColorEmoji.ttf بدلاً من NotoColorEmoji.ttf الأصلي. تنصح Google بما يلي:

  • لا تتضمّن سوى الحرف الرسومي اللازم في هذا الخط.
  • يُرجى تفويض الرموز الرسومية غير المعدَّلة إلى ملف NotoColorEmoji.ttf الأصلي لكي ستتلقّى أجهزتك أي إصلاحات للتصميمات في إصدارات الرموز التعبيرية المستقبلية.

إزالة الرموز الرسومية: لإزالة الرموز الرسومية من ملف NotoColorEmoji.ttf، اتبع الخطوتين الأولى والثانية، وتحديد glyph ID = 0 في برنامج الرحلة.

استخدام علامة منطقة: إذا كان الحرف الرسومي المستهدف هو علامة إقليمية، حدِّد الحرف الرسومي كرمز بلد غير معروف. (استخدِم country code = "ZZ".)

إنشاء حرف رسومي للتوفو: يمكنك تحديد رقم تعريف رسومي للتوفو بشكل واضح إذا أردت ذلك. لاستخدام واحدة. عند تحديد glyphID = 0، يفسّر التطبيق المرتبط ذلك على أنه "الرسم البياني غير متاح". على سبيل المثال، عند استخدام هذه السمة، سيتم تحديد قيمة يعرض تطبيق "Paint#hasGlyph" القيمة false.

استبدال ملفات الخطوط الأخرى أو تعديلها

لاستبدال الخطوط الأخرى أو تعديلها، يكون التخصيص مثل ذلك تعديل ملفات TTF لاحتياجات السوق المحلية. ملفات خطوط غير معروفة التي يتم تحديثها في AOSP في وقت التشغيل، ولا يتم تحديثها. يتجاهل محرك بحث Google الخطوط غير المعروفة في جهازك. يتضمن هذا ملفات الخطوط التي تم تعديلها من الخطوط الأصلية في AOSP.

وعلى الرغم من إجراء Google لتحديثات الخطوط في GMS Core، فإن التحديث العام للخط الآلية متاحة لجميع المصنّعين الأصليين للأجهزة. يمكن للمصنّعين الأصليين للأجهزة تثبيت أدوات تعديل إضافية للخطوط باستخدام الخطوات الواردة في المتطلبات الأساسية للاجتماعات وتوقيع ملفات الخطوط وإجراء تعديلات على الخطوط في بيئة التشغيل

استيفاء المتطلبات الأساسية

تستخدم آلية تعديل الخط ميزة نواة Linux في fs-verity. تأكَّد من أنّ جهازك متوافق مع fs-verity ويتضمن الشهادة في جهازك.

توقيع ملفات الخطوط

بما أنّ ملفات الخطوط تُعدّ موارد خطيرة، يجب إثبات ملكيتها باستخدام مفاتيح موثوق بها. راجع جميع ملفات الخطوط التي سيتم تحديثها بعناية، ووقِّع باستخدام الخاص. يجب أن يكون التوقيع متوافقًا معfs-verity.

إجراء تعديلات على الخط في بيئة التشغيل

يجري تطبيق النظام FontManager تعديلات على الخط. تطبيق "FontManager" توفير أحدث حالة لخطوط النظام المثبَّتة وإمكانية تعديل الخط الملفات التي تحتوي على توقيعات. للاتصال بتطبيقات تحديث الأجهزة، يمكنك إضافة إذن "UPDATE_FONT signature|privileged" إلى القائمة المسموح بها للتطبيقات، وفي بيان التطبيق

عليك تقديم إذن "UPDATE_FONT signature|privileged" إلى أداة تحديث تطبيقك. الأخرى.