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