اضافه کردن فونت های سفارشی

اکنون می توانید از پوشش های منابع زمان اجرا (RRO) برای تغییر فونت ها استفاده کنید. با افزودن فونت های سفارشی برای ایجاد یک بسته فونت، می توانید از فونت ها در تم ها استفاده کنید و از RRO ها برای اعمال سفارشی سازی ها استفاده کنید.

این وظایف را کامل کنید:

ساختار فایل نمونه و فایل های نمونه در custom-fonts.zip ارائه شده است. این فایل را به صورت محلی برای استفاده خودتان دانلود و استخراج کنید.

یک بسته فونت بسازید

برای ساخت یک بسته فونت:

  1. تمام فایل های ttf فونت را به بسته فونت در پارتیشن vendor اضافه کنید. مثلا:

    vendor/[oem]/fonts/[oem]-sans/

  2. فایل Android.mk را برای بسته فونت ایجاد کنید. مثلا:

    vendor/[oem]/fonts/[oem]-[fontname]/Android.mk

  3. مطمئن شوید که ماژول در پارتیشن product در پوشه etc نصب شده باشد. برای انجام این کار، تأیید کنید که ماژول دارای پرچم‌های زیر است:
    LOCAL_MODULE_CLASS := ETC
    LOCAL_PRODUCT_MODULE := true
    LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
    

    کد نمونه ارائه شده در بالا، تعریف کاملی از ماژول بسته فونت را نشان می دهد.

  4. یک فایل با نام fonts.mk برای بسته فونت ایجاد کنید و سپس فایل های فونت ttf را به PRODUCT_PACKAGES اضافه کنید. مثلا:

    vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk

    مثلا:

    PRODUCT_PACKAGES := \
    [font name].ttf \
    

یک بسته پوشش دستگاه ایجاد کنید

  1. یک ماژول به نام fonts_customization.xml بسازید تا به بیلد اضافه شود. این ماژول به فایل fonts_customization.xml اشاره می‌کند که شامل خانواده‌های فونت است و فایل‌های make تمام بسته‌های فونت را فراخوانی می‌کند. مثلا:

    vendor/[oem]/[device]_overlay/fonts/Android.mk

  2. خانواده های فونت را ایجاد کنید:

    vendor/[oem]/[device]_overlay/fonts/fonts_customization.xml

    سطح ریشه فایل باید یک تگ fonts-modification باشد. خانواده های فونت را برای هر یک از بسته های فونت در این عنصر اضافه کنید. علاوه بر این، customizationType="new-named-family" به هر خانواده فونت اضافه کنید و مطمئن شوید که هر کدام یک ویژگی name دارند. این نام بعداً برای دسترسی به خانواده فونت استفاده می شود. این فایل باید به ماژول fonts_customizations.xml که قبلا در Android.mk تعریف شده است اضافه شود.

    نمونه ارائه شده در بالا حاوی یک فایل معتبر fonts_customization.xml است.

  3. ایجاد fonts.mk مثلا:

    vendor/[oem]/[device]_overlay/fonts/fonts.mk

  4. fonts_customization.xml را تحت پرچم PRODUCT_PACKAGES اضافه کنید.
  5. هر یک از بسته های فونت ایجاد شده قبلی را فراخوانی کنید.

    $(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)

  6. ماژول فونت را به بیلد تحت PRODUCT_PACKAGES اضافه کنید و سپس دوباره بسازید. فونت ها روی سیستم نصب خواهند شد.
  7. بررسی کنید که فایل‌های فونت‌های ttf در پوشه /product/fonts روی دستگاه هستند.
  8. بررسی کنید که fonts_customization.xml در /product/etc/ در دستگاه باشد.

از خانواده فونت های سیستم جدید استفاده کنید

برای استفاده از خانواده فونت های سیستم جدید:

<style name="customstyle">
    <item name="android:fontFamily">customfontfamily</item>
</style>