कस्टम फ़ॉन्ट लागू करें

एंड्रॉइड 11 और उससे पहले के संस्करण में, AOSP ( /system/fonts विभाजन में) या विक्रेता विभाजन ( /product/fonts या /system/fonts विभाजन में) में डिवाइस-स्थापित फ़ॉन्ट फ़ाइलों को अपडेट करने के लिए OEM से सिस्टम अपडेट की आवश्यकता होती है। इस आवश्यकता का इमोजी संगतता पर महत्वपूर्ण प्रभाव पड़ता है। एंड्रॉइड 12 में आप इंस्टॉल किए गए फ़ॉन्ट फ़ाइलों को प्रबंधित करने और सिस्टम अपडेट के बिना डिवाइस-इंस्टॉल फ़ॉन्ट फ़ाइलों को अपडेट करने के लिए FontManager सिस्टम सेवा का उपयोग कर सकते हैं।

एंड्रॉइड 12 में तीन प्रक्रिया इंटरैक्शन की सुविधा है; FontManagerService , Font Updater , और Application

FontManagerService सिस्टम सर्वर में केंद्रीय प्रबंधन प्रणाली है। FontManagerService नवीनतम प्रति-उपयोगकर्ता सिस्टम फ़ॉन्ट सेटिंग्स संग्रहीत करता है।

FontUpdater एक प्लग करने योग्य फ़ॉन्ट अपडेटर है जिस पर signature|privileged अनुमति जांच द्वारा भरोसा किया जाता है। FontUpdater वर्तमान सिस्टम फ़ॉन्ट सेटिंग्स को प्राप्त करने, स्थापित करने, हटाने या अपडेट करने के लिए FontManagerService के साथ संचार करता है। FontUpdater अंतर-प्रक्रिया संचार (आईपीसी) तंत्र द्वारा नई फ़ॉन्ट फ़ाइल सामग्री को पास कर सकता है। FontManagerService सामग्री को विश्व-पठनीय भंडारण स्थान पर सहेजती है, जैसे कि /data/fonts फ़ाइलों में। इस भण्डार की सुरक्षा की जाती है। इसे केवल FontManagerService द्वारा, SELinux नीति द्वारा लिखा जा सकता है।

जब Application क्लास लॉन्च होता है, तो यह सिस्टम फ़ॉन्ट सेटिंग्स को bindApplication विधि के तर्क के रूप में पास करता है; फिर यह ऐप प्रक्रिया द्वारा उपयोग के लिए फ़ॉन्ट सेटिंग्स को आरंभ करता है।

फ़ॉन्ट अनुकूलित करें

कुछ OEM अपने ब्रांड दिखाने के लिए AOSP में फ़ॉन्ट फ़ाइलें स्थापित या प्रतिस्थापित करते हैं। एंड्रॉइड 12 इस कार्यक्षमता का समर्थन करता है, लेकिन उपकरणों में इमोजी फ़ॉन्ट को अपडेट रखने के लिए आवश्यकताएं जोड़ता है। जो OEM इमोजी फ़ॉन्ट फ़ाइलों को संशोधित या अद्यतन नहीं करते हैं उन्हें इस सुविधा का उपयोग करने की आवश्यकता नहीं है।

Google GMS Core के माध्यम से फ़ॉन्ट फ़ाइलों, विशेष रूप से NotoColorEmoji फ़ाइलों को अपडेट करता है, इसलिए /system विभाजन से NotoColorEmoji.ttf फ़ाइल को संशोधित या हटाएं नहीं, और इसे /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 करने के बाद, मूल NotoColorEmoji.ttf के बजाय Modified\NotoColorEmoji.ttf द्वारा समर्थित संशोधित ग्लिफ़ दिखाई देता है। Google निम्नलिखित की अनुशंसा करता है:

  • इस फ़ॉन्ट में केवल आवश्यक ग्लिफ़ रखें।
  • असंशोधित ग्लिफ़ को मूल NotoColorEmoji.ttf फ़ाइल में सौंपें ताकि आपके डिवाइस को भविष्य में इमोजी रिलीज़ में किए गए कोई भी डिज़ाइन सुधार प्राप्त हो सकें।

ग्लिफ़ हटाएं: NotoColorEmoji.ttf फ़ाइल से ग्लिफ़ हटाने के लिए, चरण 1 और 2 का पालन करें, और अपने सीएमएपी में glyph ID = 0 निर्दिष्ट करें।

क्षेत्रीय ध्वज का उपयोग करें: यदि लक्ष्य ग्लिफ़ एक क्षेत्रीय ध्वज है, तो अज्ञात देश कोड के रूप में ग्लिफ़ आईडी निर्दिष्ट करें। ( country code = "ZZ" प्रयोग करें।)

एक टोफू ग्लिफ़ बनाएं: यदि आप टोफू ग्लिफ़ आईडी का उपयोग करना चाहते हैं तो आप स्पष्ट रूप से एक टोफू ग्लिफ़ आईडी निर्दिष्ट कर सकते हैं। जब आप glyphID = 0 निर्दिष्ट करते हैं, तो संबंधित ऐप इसकी व्याख्या "ग्लिफ़ उपलब्ध नहीं है" के रूप में करता है। उदाहरण के लिए, जब आप इस विशेषता का उपयोग करते हैं, Paint#hasGlyph ऐप false रिटर्न देता है।

अन्य फ़ॉन्ट फ़ाइलें बदलें या संशोधित करें

अन्य फ़ॉन्ट को बदलने या संशोधित करने के लिए, अनुकूलन स्थानीय बाजार की जरूरतों के लिए टीटीएफ फ़ाइलों को संशोधित करने के समान है। रनटाइम पर AOSP में अपडेट की गई अज्ञात फ़ॉन्ट फ़ाइलों को अनदेखा कर दिया जाता है, और अपडेट नहीं किया जाता है। Google आपके डिवाइस में अज्ञात फ़ॉन्ट को अनदेखा कर देता है. इसमें वे फ़ॉन्ट फ़ाइलें शामिल हैं जिन्हें AOSP में मूल फ़ॉन्ट से संशोधित किया गया था।

हालाँकि GMS Core में फ़ॉन्ट अद्यतन Google द्वारा किया जाता है, सामान्य फ़ॉन्ट अद्यतन तंत्र सभी OEM के लिए खुला है। ओईएम पूर्वापेक्षाओं को पूरा करने , फ़ॉन्ट फ़ाइलों पर हस्ताक्षर करने और रनटाइम फ़ॉन्ट अपडेट करने के चरणों का उपयोग करके अतिरिक्त फ़ॉन्ट अपडेटर स्थापित कर सकते हैं।

पूर्वापेक्षाएँ पूरी करें

फ़ॉन्ट अद्यतन तंत्र fs-verity Linux कर्नेल सुविधा का उपयोग करता है। सत्यापित करें कि आपका डिवाइस fs-verity के अनुरूप है और प्रमाणपत्र को अपने डिवाइस में शामिल करें।

फ़ॉन्ट फ़ाइलों पर हस्ताक्षर करें

चूँकि फ़ॉन्ट फ़ाइलें जोखिम भरे संसाधन हैं, इसलिए उन्हें विश्वसनीय कुंजियों से सत्यापित किया जाना चाहिए। अद्यतन की जाने वाली सभी फ़ॉन्ट फ़ाइलों की सावधानीपूर्वक समीक्षा करें और अपनी निजी कुंजी से हस्ताक्षर करें। हस्ताक्षर fs-verity संगत होना चाहिए।

रनटाइम फ़ॉन्ट अपडेट करें

FontManger सिस्टम ऐप फ़ॉन्ट अपडेट करता है। FontManager ऐप नवीनतम स्थापित सिस्टम फ़ॉन्ट स्थिति और हस्ताक्षर के साथ फ़ॉन्ट फ़ाइलों को अपडेट करने की क्षमता प्रदान करता है। अपडेट ऐप्स को कॉल करने के लिए, अपनी ऐप अनुमति सूची और अपने मेनिफेस्ट में UPDATE_FONT signature|privileged अनुमति जोड़ें।

अपने ऐप के अपडेटर फ़ंक्शन के लिए UPDATE_FONT signature|privileged अनुमति प्रदान करें।