पसंद के मुताबिक फ़ॉन्ट का इस्तेमाल करना

Android 15 की शुरुआत में, वैरिएबल फ़ॉन्ट यहां रेंडर किए जाते हैं का इस्तेमाल करें. इस अपडेट के बाद, वेंडर को ये काम करने होंगे नए वैरिएबल फ़ॉन्ट कॉन्फ़िगरेशन को इसमें जोड़ें font_fallback.xml की जगह fonts.xml का इस्तेमाल किया जाएगा, क्योंकि fonts.xml अब काम नहीं करता है. ज़्यादा जानकारी के लिए, वैरिएबल फ़ॉन्ट के लिए सहायता देखें.

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

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

FontManagerService, सिस्टम सर्वर में सेंट्रल मैनेजमेंट सिस्टम होता है. FontManagerService हर उपयोगकर्ता के हिसाब से, सिस्टम की सबसे नई फ़ॉन्ट सेटिंग सेव करता है.

FontUpdater, प्लग किया जा सकने वाला फ़ॉन्ट अपडेटर है. यह signature|privileged की अनुमति की जांच. FontUpdater, मौजूदा सिस्टम फ़ॉन्ट पाने, इंस्टॉल करने, हटाने या अपडेट करने के लिए FontManagerService सेटिंग. FontUpdater, इंटर-प्रोसेस से नई फ़ॉन्ट फ़ाइल के कॉन्टेंट पास कर सकता है के लिए इस्तेमाल किया जाता है. 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, ताकि सिस्टम से इंस्टॉल की गई फ़ॉन्ट फ़ाइलों की सूची मिल सके. इस पर जानकारी के लिए ऐसे डेवलपर एपीआई जो इस अपडेट के साथ काम करते हैं, देखें बेहतर OpenType वैरिएबल फ़ॉन्ट एपीआई और buildVariableFamily.

फ़ॉन्ट को पसंद के मुताबिक बनाएं

कुछ OEM अपने ब्रैंड दिखाने के लिए, AOSP में फ़ॉन्ट फ़ाइलें इंस्टॉल करते हैं या बदलते हैं. यह सुविधा, Android 12 पर काम करती है. हालांकि, यह सुविधा साथ ही, यह भी ज़रूरी है कि आप डिवाइसों में इमोजी फ़ॉन्ट अपडेट करते रहें. ऐसे OEM जिनमें बदलाव नहीं किया जाता है या इमोजी फ़ॉन्ट फ़ाइलों को अपडेट करने के लिए इस सुविधा की ज़रूरत नहीं है.

Google, GMS की मदद से फ़ॉन्ट फ़ाइलों को अपडेट करता है, खास तौर पर NotoColorEmoji फ़ाइलों को कोर, इसलिए NotoColorEmoji.ttf फ़ाइल को /system विभाजन और उसे यहां से न निकालें /frameworks/base/data/fonts/fonts.xml. अपने फ़ॉन्ट को पसंद के मुताबिक बनाने के इन तीन तरीकों पर ध्यान दें:

  1. NotoColorEmoji.ttf फ़ाइल की जगह, OEM ब्रैंड वाले इमोजी फ़ॉन्ट का इस्तेमाल करें.
  2. अपने स्थानीय बाज़ार की ज़रूरतों के हिसाब से, NotoColorEmoji.ttf फ़ाइल में बदलाव करें.
  3. अन्य फ़ॉन्ट फ़ाइलों को बदलें या उनमें बदलाव करें.

अगर एओएसपी में इमोजी के फ़ॉन्ट में बदलाव नहीं किया जा रहा है, तो आपको कोई कार्रवाई करने की ज़रूरत नहीं है. अगर आपने आप इमोजी फ़ॉन्ट को कस्टमाइज़ करना चाहते हैं, तो नीचे दिए गए निर्देशों का पालन करें सेक्शन.

NotoColorEmoji.ttf की जगह OEM-ब्रैंड वाले इमोजी फ़ॉन्ट इस्तेमाल करें

NotoColorEmoji.ttf फ़ाइल को OEM ब्रैंड वाले इमोजी फ़ॉन्ट की फ़ाइल से बदलने के लिए, इमोजी फ़ॉन्ट को फ़ॉन्ट फ़ॉलबैक चेन से ठीक पहले रखें:

  1. /system पार्टीशन में OEMCustomEmoji.ttf नाम का अपना फ़ॉन्ट रखें.
  2. /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 में बदलाव करें

अपने स्थानीय मार्केट की ज़रूरतों के मुताबिक बदलाव करने के लिए, यह तरीका अपनाएं:

  1. किसी दूसरे नाम से अपनी खुद की NotoColorEmoji फ़ाइल बनाएं; उदाहरण के लिए, इसे Modified\_NotoColorEmoji.ttf नाम दें.
  2. इसे मूल NotoColorEmoji.ttf फ़ाइल से पहले रखें.

दूसरा चरण पूरा करने के बाद, बदला गया ग्लिफ़ मूल NotoColorEmoji.ttf के बजाय Modified\NotoColorEmoji.ttf में दिखता है. Google ये सुझाव देता है:

  • इस फ़ॉन्ट में सिर्फ़ ज़रूरी ग्लिफ़ है.
  • मूल NotoColorEmoji.ttf फ़ाइल में, बिना बदलाव किए गए ग्लिफ़ असाइन करें, ताकि इससे, आपके डिवाइसों के डिज़ाइन में किए गए हर बदलाव की जानकारी मिलती है. ये बदलाव आने वाले इमोजी रिलीज़ में किए जाएंगे.

ग्लिफ़ हटाएं: NotoColorEmoji.ttf फ़ाइल से ग्लिफ़ हटाने के लिए, फ़ॉलो करें चरण 1 और 2 को चुनें और अपने Cmap में glyph ID = 0 डालें.

क्षेत्रीय फ़्लैग का इस्तेमाल करें: अगर टारगेट ग्लिफ़ एक क्षेत्रीय फ़्लैग है, तो अनजान देश के कोड के तौर पर glyph आईडी. (country code = "ZZ" का इस्तेमाल करें.)

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

अन्य फ़ॉन्ट फ़ाइलों को बदलें या उनमें बदलाव करें

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

हालांकि, फ़ॉन्ट अपडेट Google की ओर से GMS Core में किया जाता है, लेकिन सामान्य फ़ॉन्ट अपडेट यह तरीका सभी OEM के लिए उपलब्ध है. OEM, इसका इस्तेमाल करके अतिरिक्त फ़ॉन्ट अपडेटर इंस्टॉल कर सकते हैं मीटिंग से जुड़ी ज़रूरी शर्तें, फ़ॉन्ट फ़ाइलें साइन करना, में दिए गए चरण और रनटाइम के फ़ॉन्ट में बदलाव करना.

शर्तें पूरी करें

फ़ॉन्ट अपडेट करने का तरीका, fs-verity Linux कर्नेल सुविधा का इस्तेमाल करता है. पुष्टि करें कि आपका डिवाइस fs-verity का पालन करता है और सर्टिफ़िकेट को अपने डिवाइस में शामिल करें.

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

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

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

FontManager का सिस्टम ऐप्लिकेशन, फ़ॉन्ट को अपडेट करता है. FontManager ऐप्लिकेशन नवीनतम इंस्टॉल किए गए सिस्टम फ़ॉन्ट की स्थिति और फ़ॉन्ट को अपडेट करने की क्षमता उपलब्ध कराता है हस्ताक्षर वाली फ़ाइलें. ऐप्लिकेशन अपडेट करने के लिए, कॉल करने के लिए UPDATE_FONT signature|privileged अनुमति ऐप्लिकेशन की अनुमति वाली सूची, और अपने मेनिफ़ेस्ट में सबमिट करें.

अपने ऐप्लिकेशन के अपडेटर को UPDATE_FONT signature|privileged की अनुमति दें फ़ंक्शन का इस्तेमाल करना होगा.