ใช้แบบอักษรที่กำหนดเอง

ใน 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 สังเกตสามวิธีต่อไปนี้ที่คุณ สามารถกำหนด แบบอักษรของคุณเองได้:

  1. แทนที่ไฟล์ NotoColorEmoji.ttf ด้วยแบบอักษรอิโมจิของแบรนด์ OEM
  2. แก้ไขไฟล์ NotoColorEmoji.ttf ให้ตรงกับความต้องการของตลาดในพื้นที่ของคุณ
  3. แทนที่หรือแก้ไขไฟล์ฟอนต์อื่นๆ

หากคุณไม่ได้แก้ไขแบบอักษรอิโมจิใน AOSP คุณไม่จำเป็นต้องดำเนินการใดๆ หากคุณต้องการปรับแต่งแบบอักษรอิโมจิ ให้ใช้คำแนะนำในส่วนต่อไปนี้

แทนที่ NotoColorEmoji.ttf ด้วยแบบอักษรอิโมจิของแบรนด์ OEM

หากต้องการแทนที่ไฟล์ NotoColorEmoji.ttf ด้วยไฟล์ฟอนต์อีโมจิของแบรนด์ OEM ให้วางฟอนต์อิโมจิไว้ข้างหน้ากลุ่มฟอนต์ทางเลือก:

  1. วางแบบอักษรของคุณเองที่เรียกว่า OEMCustomEmoji.ttf ในพาร์ติชัน /system
  2. แก้ไข /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 ให้ตรงกับความต้องการของตลาดท้องถิ่น

ทำตามขั้นตอนเหล่านี้เพื่อปรับแต่งให้เหมาะกับความต้องการของตลาดท้องถิ่นของคุณ:

  1. สร้างไฟล์ NotoColorEmoji ของคุณเองด้วยชื่ออื่น ตัวอย่างเช่น ตั้งชื่อมัน Modified\_NotoColorEmoji.ttf
  2. วางไว้หน้าไฟล์ 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 สำหรับฟังก์ชันอัปเดตของแอปของคุณ