ใน Android 11 และต่ำกว่า การอัปเดตไฟล์ฟอนต์ที่ติดตั้งอุปกรณ์ใน AOSP (ในพาร์ติชัน /system/fonts
) หรือพาร์ติชันผู้จำหน่าย (ในพาร์ติชัน /product/fonts
หรือ /system/fonts
) จำเป็นต้องมีการอัปเดตระบบจาก OEM ข้อกำหนดนี้มีผลกระทบอย่างมากต่อความเข้ากันได้ของอีโมจิ ใน 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
จากนั้นจะเริ่มต้นการตั้งค่าแบบอักษรเพื่อใช้โดยกระบวนการแอป
ปรับแต่งแบบอักษร
OEM บางรายติดตั้งหรือเปลี่ยนไฟล์ฟอนต์ใน AOSP เพื่อแสดงแบรนด์ของตน Android 12 รองรับฟังก์ชันนี้ แต่เพิ่มข้อกำหนดเพื่อให้แบบอักษรอีโมจิอัปเดตในอุปกรณ์อยู่เสมอ OEM ที่ไม่แก้ไขหรืออัปเดตไฟล์ฟอนต์อิโมจิไม่จำเป็นต้องใช้ฟีเจอร์นี้
Google อัปเดตไฟล์แบบอักษร โดยเฉพาะไฟล์ NotoColorEmoji
ผ่านทาง GMS Core ดังนั้นอย่าแก้ไขหรือลบไฟล์ NotoColorEmoji.ttf
ออกจากพาร์ติชัน /system
และอย่าลบออกจาก /system/etc/fonts.xml
สังเกตสามวิธีต่อไปนี้ที่คุณ สามารถกำหนด แบบอักษรของคุณเองได้:
- แทนที่ไฟล์
NotoColorEmoji.ttf
ด้วยแบบอักษรอิโมจิของแบรนด์ OEM - แก้ไขไฟล์
NotoColorEmoji.ttf
ให้ตรงกับความต้องการของตลาดในพื้นที่ของคุณ - แทนที่หรือแก้ไขไฟล์ฟอนต์อื่นๆ
หากคุณไม่ได้แก้ไขแบบอักษรอิโมจิใน AOSP คุณไม่จำเป็นต้องดำเนินการใดๆ หากคุณต้องการปรับแต่งแบบอักษรอิโมจิ ให้ใช้คำแนะนำในส่วนต่อไปนี้
แทนที่ NotoColorEmoji.ttf ด้วยแบบอักษรอิโมจิของแบรนด์ OEM
หากต้องการแทนที่ไฟล์ NotoColorEmoji.ttf
ด้วยไฟล์ฟอนต์อีโมจิของแบรนด์ OEM ให้วางฟอนต์อิโมจิไว้ข้างหน้ากลุ่มฟอนต์ทางเลือก:
- วางแบบอักษรของคุณเองที่เรียกว่า
OEMCustomEmoji.ttf
ในพาร์ติชัน/system
แก้ไข
/system/etc/fonts.xml
ตามโค้ดต่อไปนี้:<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
ใน cmap ของคุณ
ใช้ธงภูมิภาค: หากสัญลักษณ์เป้าหมายเป็นธงภูมิภาค ให้ระบุ ID สัญลักษณ์เป็นรหัสประเทศที่ไม่รู้จัก (ใช้ country code = "ZZ"
.)
สร้างสัญลักษณ์สัญลักษณ์เต้าหู้: คุณสามารถระบุรหัสสัญลักษณ์สัญลักษณ์เต้าหู้ได้อย่างชัดเจนหากต้องการใช้ เมื่อคุณระบุ glyphID = 0
แอปที่เกี่ยวข้องจะตีความว่าเป็น “สัญลักษณ์ไม่พร้อมใช้งาน” ตัวอย่างเช่น เมื่อคุณใช้แอตทริบิวต์นี้ แอป Paint#hasGlyph
จะส่งคืน false
แทนที่หรือแก้ไขไฟล์ฟอนต์อื่นๆ
หากต้องการแทนที่หรือแก้ไขแบบอักษรอื่นๆ การปรับแต่งจะคล้ายกับการแก้ไขไฟล์ TTF สำหรับความต้องการของตลาดท้องถิ่น ไฟล์ฟอนต์ที่ไม่รู้จักซึ่งได้รับการอัพเดตใน AOSP ณ รันไทม์จะถูกละเว้นและไม่ได้รับการอัปเดต Google ละเว้นแบบอักษรที่ไม่รู้จักในอุปกรณ์ของคุณ ซึ่งรวมถึงไฟล์ฟอนต์ที่ได้รับการแก้ไขจากฟอนต์ดั้งเดิมใน AOSP
แม้ว่า Google จะอัปเดตแบบอักษรใน GMS Core แต่กลไกการอัปเดตแบบอักษรทั่วไปนั้นเปิดสำหรับ OEM ทั้งหมด OEM สามารถติดตั้งตัวอัพเดตแบบอักษรเพิ่มเติมได้โดยใช้ขั้นตอนใน ข้อกำหนดเบื้องต้นของการประชุม การเซ็นชื่อไฟล์ฟอนต์ และ การปรับปรุงแบบอักษรรันไทม์
ตรงตามข้อกำหนดเบื้องต้น
กลไกการอัพเดตแบบอักษรใช้คุณสมบัติเคอร์เนล fs-verity
Linux ตรวจสอบว่าอุปกรณ์ของคุณเป็นไปตามมาตรฐาน fs-verity
และรวมใบรับรองไว้ในอุปกรณ์ของคุณ
เซ็นชื่อไฟล์ฟอนต์
เนื่องจากไฟล์ฟอนต์เป็นทรัพยากรที่มีความเสี่ยง จึงต้องตรวจสอบด้วยคีย์ที่เชื่อถือได้ ตรวจสอบไฟล์ฟอนต์ทั้งหมดที่จะอัปเดตอย่างรอบคอบ และเซ็นชื่อด้วยคีย์ส่วนตัวของคุณ ลายเซ็นจะต้องเข้ากันได้กับ fs-verity
ทำการอัปเดตแบบอักษรรันไทม์
แอพ FontManger
System ทำการอัพเดตแบบอักษร แอพ FontManager
มอบสถานะฟอนต์ของระบบที่ติดตั้งล่าสุดและความสามารถในการอัพเดตไฟล์ฟอนต์ด้วยลายเซ็น หากต้องการเรียกใช้การอัปเดตแอป ให้เพิ่ม UPDATE_FONT signature|privileged
ใน รายการที่อนุญาตของแอป และ ในไฟล์ Manifest ของคุณ
ระบุ UPDATE_FONT signature|privileged
สำหรับฟังก์ชันอัปเดตของแอปของคุณ