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

ใน 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 ดั้งเดิม เพื่อให้อุปกรณ์ของคุณได้รับการแก้ไขการออกแบบที่ทำในอีโมจิที่ออกในอนาคต

Remove glyphs: ในการลบ glyphs จากไฟล์ NotoColorEmoji.ttf ให้ทำตามขั้นตอนที่ 1 และ 2 และระบุ glyph ID = 0 ใน cmap ของคุณ

ใช้ธงประจำภูมิภาค: หากสัญลักษณ์เป้าหมายเป็นธงประจำภูมิภาค ให้ระบุรหัสสัญลักษณ์เป็นรหัสประเทศที่ไม่รู้จัก (ใช้ country code = "ZZ" .)

สร้างสัญลักษณ์เต้าหู้: คุณสามารถระบุรหัสสัญลักษณ์เต้าหู้ได้อย่างชัดเจนหากต้องการใช้ เมื่อคุณระบุ glyphID = 0 แอพที่เกี่ยวข้องจะตีความว่าเป็น “glyph is not available” ตัวอย่างเช่น เมื่อคุณใช้แอตทริบิวต์นี้ แอป Paint#hasGlyph จะคืนค่า false

แทนที่หรือแก้ไขไฟล์ฟอนต์อื่นๆ

ในการแทนที่หรือแก้ไขฟอนต์อื่น การปรับแต่งจะคล้ายกับการปรับแต่งไฟล์ tff สำหรับความต้องการของตลาดท้องถิ่น ไฟล์ฟอนต์ที่ไม่รู้จักซึ่งอัปเดตใน 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 สำหรับฟังก์ชันตัวอัปเดตแอปของคุณ