ตอนนี้คุณสามารถใช้การซ้อนทับทรัพยากรรันไทม์ (RRO) เพื่อเปลี่ยนแบบอักษรได้แล้ว ด้วยการเพิ่มฟอนต์แบบกำหนดเองเพื่อสร้างแพ็คเกจฟอนต์ คุณสามารถใช้ฟอนต์ในธีมและใช้ RRO เพื่อใช้การกำหนดเองได้
ทำงานเหล่านี้ให้เสร็จสิ้น:
โครงสร้างไฟล์ตัวอย่างและไฟล์ตัวอย่างมีอยู่ใน custom-fonts.zip ดาวน์โหลดแล้วแตกไฟล์นี้ในเครื่องเพื่อการใช้งานของคุณเอง
ทำแพ็คเกจฟอนต์
หากต้องการสร้างแพ็คเกจแบบอักษร:
- เพิ่มไฟล์ฟอนต์
ttf
ทั้งหมดลงในแพ็คเกจฟอนต์ในพาร์ติชันvendor
ตัวอย่างเช่น:vendor/[oem]/fonts/[oem]-sans/
- สร้างไฟล์
Android.mk
สำหรับแพ็คเกจฟอนต์ ตัวอย่างเช่น:vendor/[oem]/fonts/[oem]-[fontname]/Android.mk
- ตรวจสอบให้แน่ใจว่าโมดูลจะถูกติดตั้งในพาร์ติชัน
product
ในโฟลเดอร์etc
โดยยืนยันว่าโมดูลมีแฟล็กต่อไปนี้:LOCAL_MODULE_CLASS := ETC LOCAL_PRODUCT_MODULE := true LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
โค้ดตัวอย่างที่ให้ไว้ข้างต้นแสดงคำจำกัดความที่สมบูรณ์ของโมดูลแพ็คเกจฟอนต์
- สร้างไฟล์ชื่อ
fonts.mk
สำหรับแพ็คเกจฟอนต์ จากนั้นเพิ่มไฟล์ฟอนต์ttf
ลงในPRODUCT_PACKAGES
ตัวอย่างเช่น:vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk
ตัวอย่างเช่น:
PRODUCT_PACKAGES := \ [font name].ttf \
สร้างแพ็คเกจโอเวอร์เลย์อุปกรณ์
- สร้างโมดูลชื่อ
fonts_customization.xml
ที่จะเพิ่มเข้ากับบิลด์ โมดูลนี้ชี้ไปที่ไฟล์fonts_customization.xml
ที่มีตระกูลฟอนต์และเรียกไฟล์ make ของแพ็คเกจฟอนต์ทั้งหมด ตัวอย่างเช่น:vendor/[oem]/[device]_overlay/fonts/Android.mk
- สร้างตระกูลแบบอักษร:
vendor/[oem]/[device]_overlay/fonts/fonts_customization.xml
ระดับรากของไฟล์จะต้องเป็นแท็ก
fonts-modification
เพิ่มตระกูลแบบอักษรสำหรับแต่ละแพ็คเกจแบบอักษรภายใต้องค์ประกอบนี้ นอกจากนี้ ให้เพิ่มcustomizationType="new-named-family"
ให้กับทุกตระกูลแบบอักษร และตรวจสอบให้แน่ใจว่าแต่ละตระกูลมีแอตทริบิวต์name
ชื่อนี้ใช้ในภายหลังเพื่อเข้าถึงตระกูลแบบอักษร ต้องเพิ่มไฟล์นี้ลงในโมดูลfonts_customizations.xml
ที่กำหนดไว้ก่อนหน้านี้ในAndroid.mk
ตัวอย่างที่ให้ไว้ข้างต้นมีไฟล์
fonts_customization.xml
ที่ถูกต้อง - สร้าง
fonts.mk
.mk ตัวอย่างเช่น:vendor/[oem]/[device]_overlay/fonts/fonts.mk
- เพิ่ม
fonts_customization.xml
ใต้แฟล็กPRODUCT_PACKAGES
- โทรเข้าแต่ละแพ็คเกจฟอนต์ที่สร้างขึ้นก่อนหน้านี้
$(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)
- เพิ่มโมดูลแบบอักษรให้กับบิลด์ภายใต้
PRODUCT_PACKAGES
แล้วสร้างใหม่ ฟอนต์จะถูกติดตั้งบนระบบ - ตรวจสอบว่าไฟล์ฟอนต์
ttf
อยู่ในโฟลเดอร์/product/fonts
บนอุปกรณ์ - ตรวจสอบว่า
fonts_customization.xml
อยู่ใน/product/etc/
บนอุปกรณ์
ใช้ตระกูลแบบอักษรของระบบใหม่
หากต้องการใช้ตระกูลแบบอักษรของระบบใหม่:
<style name="customstyle"> <item name="android:fontFamily">customfontfamily</item> </style>