डाउनलोड किए जा सकने वाले फ़ॉन्ट इस्तेमाल करें

लिखने का तरीका आज़माएं
Android के लिए, Jetpack Compose हमारा सुझाया गया यूज़र इंटरफ़ेस (यूआई) टूलकिट है. Compose में टेक्स्ट इस्तेमाल करने का तरीका जानें.

डाउनलोड किए जा सकने वाले फ़ॉन्ट की सुविधा से एपीआई, इसके बजाय किसी प्रोवाइडर ऐप्लिकेशन से फ़ॉन्ट का अनुरोध कर सकते हैं ऐप्लिकेशन में फ़ाइलों का बंडल बनाना या ऐप्लिकेशन को फ़ॉन्ट डाउनलोड करने देना. डाउनलोड किए जा सकने वाले फ़ॉन्ट यहां उपलब्ध हैं Android API वर्शन 14 और उसके बाद के वर्शन पर चलने वाले डिवाइसों में AndroidX Core लाइब्रेरी की सुविधा होती है.

डाउनलोड किए जा सकने वाले फ़ॉन्ट के ये फ़ायदे हैं:

  • ऐप्लिकेशन का साइज़ कम करता है. इससे ऐप्लिकेशन इंस्टॉल होने की संभावना बढ़ जाती है.
  • इससे सिस्टम की परफ़ॉर्मेंस बेहतर होती है, क्योंकि कई ऐप्लिकेशन एक ही फ़ॉन्ट का इस्तेमाल करके कंपनी. इससे उपयोगकर्ताओं का मोबाइल डेटा, फ़ोन की मेमोरी, और डिस्क में जगह बचाई जाती है. इस मॉडल में, ज़रूरत पड़ने पर फ़ॉन्ट को नेटवर्क पर फ़ेच किया जाता है.
डाउनलोड किए जा सकने वाले फ़ॉन्ट को इस्तेमाल करने का अनुभव पाने के लिए, डाउनलोड किए जा सकने वाले फ़ॉन्ट सैंपल के तौर पर मिला है.

डाउनलोड किए जा सकने वाले फ़ॉन्ट कैसे काम करते हैं?

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

इमोजी कंपैट करने की प्रोसेस के दौरान मुख्य कॉम्पोनेंट को दिखाने वाली इमेज
पहली इमेज. फ़ॉन्ट को डाउनलोड करने की प्रोसेस.

बुनियादी बातें

डाउनलोड किए जा सकने वाले फ़ॉन्ट की सुविधा का इस्तेमाल नीचे दिए गए तरीकों से किया जा सकता है. इन तरीकों के बारे में ज़्यादा जानकारी दी गई है बाद के सेक्शन में:

Android Studio और Google Play सेवाओं की मदद से, डाउनलोड किए जा सकने वाले फ़ॉन्ट इस्तेमाल करना

Android Studio 3.0 या इसके बाद के वर्शन का इस्तेमाल करके, ऐप्लिकेशन को फ़ॉन्ट डाउनलोड करने के लिए सेट किया जा सकता है. आपकी मदद करने के लिए डाउनलोड करने लायक फ़ॉन्ट की सुविधाओं का इस्तेमाल शुरू करें. Google Play से फ़ॉन्ट प्रोवाइडर का इस्तेमाल किया जा सकता है सेवाओं.

  1. लेआउट एडिटर में, कोई TextView चुनें. इसके बाद, एट्रिब्यूट में जाकर चुनें fontFamily > ज़्यादा फ़ॉन्ट.
    Android Studio लेआउट एडिटर दिखाने वाली इमेज
    दूसरी इमेज. लेआउट एडिटर का इस्तेमाल करके.
    ऐसा करने पर, संसाधन विंडो दिखेगी.
  2. सोर्स मेन्यू में, Google Fonts चुनें.
  3. फ़ॉन्ट बॉक्स में, "डाउनलोड किया जा सकने वाला" के नीचे दिया गया कोई फ़ॉन्ट चुनें क्षेत्र.
  4. डाउनलोड किया जा सकने वाला फ़ॉन्ट बनाएं चुनें और ठीक है पर क्लिक करें.
    रिसॉर्स विंडो से फ़ॉन्ट चुनने का तरीका दिखाने वाली इमेज
    तीसरी इमेज. संसाधन विंडो से कोई फ़ॉन्ट चुनना.
  5. Android Studio, उन एक्सएमएल फ़ाइलों को अपने-आप जनरेट करता है जो फ़ॉन्ट को रेंडर करने के लिए ज़रूरी होती हैं आपके ऐप्लिकेशन में सही तरह से.

    फ़ॉन्ट की झलक देखने का तरीका दिखाने वाली इमेज
    चौथी इमेज. फ़ॉन्ट फ़ाइल की झलक देखी जा रही है.

प्रोग्राम के हिसाब से, डाउनलोड किए जा सकने वाले फ़ॉन्ट का इस्तेमाल करना

Android 8.0 (एपीआई लेवल 26) के बाद से, AndroidX Core, डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए पूरी तरह से सहायता करता है. इसके लिए AndroidX Core लाइब्रेरी का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, इस पेज पर, डाउनलोड किए जा सकने वाले फ़ॉन्ट AndroidX Core की लाइब्रेरी का सेक्शन देखें.

प्रोग्राम के हिसाब से डाउनलोड किए जा सकने वाले फ़ॉन्ट की सुविधा का इस्तेमाल करने के लिए, दो मुख्य क्लास का इस्तेमाल करें:

  • android.graphics.fonts.FontRequest: इस क्लास में जाकर फ़ॉन्ट का अनुरोध किया जा सकता है.
  • FontsContractCompat: इस क्लास की मदद से, नया इस पर आधारित Typeface ऑब्जेक्ट फ़ॉन्ट अनुरोध.

आपका ऐप्लिकेशन, FontsContract एपीआई का इस्तेमाल करके, फ़ॉन्ट देने वाले से फ़ॉन्ट लेता है. हर प्रोवाइडर के पास, Android वर्शन और उसके लिए इस्तेमाल की जाने वाली क्वेरी की भाषा पर कुछ पाबंदियां हैं. इसके लिए क्वेरी के फ़ॉर्मैट और Android वर्शन के बारे में ज़्यादा जानकारी पाने के लिए, दस्तावेज़.

फ़ॉन्ट डाउनलोड करने के लिए, नीचे दिए गए चरण पूरे करें:

  1. अनुरोध करने के लिए, android.graphics.fonts.FontRequest क्लास का इंस्टेंस बनाएं फ़ॉन्ट का इस्तेमाल करें. अनुरोध करने के लिए, ये पैरामीटर पास करें:
    • फ़ॉन्ट देने वाली संस्था का नाम.
    • फ़ॉन्ट देने वाली कंपनी की पहचान की पुष्टि करने वाला पैकेज.
    • फ़ॉन्ट की स्ट्रिंग क्वेरी. क्वेरी फ़ॉर्मैट के बारे में ज़्यादा जानकारी के लिए, अपना फ़ॉन्ट देखें सेवा देने वाली कंपनी के दस्तावेज़, जैसे कि Google Fonts.
    • सर्टिफ़िकेट देने वाली कंपनी की पहचान की पुष्टि करने के लिए, हैश के सेट की सूची.

    Kotlin

    val request = FontRequest(
            "com.example.fontprovider.authority",
            "com.example.fontprovider",
            "my font",
            certs
    )
    

    Java

    FontRequest request = new FontRequest("com.example.fontprovider",
                       "com.example.fontprovider", "my font", certs);
    
  2. इसका एक इंस्टेंस बनाएं FontsContract.FontRequestCallback अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है क्लास.
  3. onTypefaceRetrieved() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है का तरीका बताएं. पैरामीटर के तौर पर, वापस मिले फ़ॉन्ट का इस्तेमाल करें. ज़रूरत के हिसाब से फ़ॉन्ट सेट करने के लिए, इस तरीके का इस्तेमाल किया जा सकता है. उदाहरण के लिए, आप फ़ॉन्ट TextView.
  4. onTypefaceRequestFailed() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है फ़ॉन्ट अनुरोध प्रक्रिया में गड़बड़ियों के बारे में जानकारी पाने का तरीका. Reader Revenue Manager को सेट अप करने के बारे में के बारे में ज़्यादा जानने के लिए, गड़बड़ी कोड कॉन्सटेंट शामिल है.
  5. फ़ॉन्ट से फ़ॉन्ट पाने के लिए, FontsContract.requestFont() तरीके का इस्तेमाल करें कंपनी. यह तरीका जांच शुरू करके यह पता लगाता है कि फ़ॉन्ट कैश मेमोरी में मौजूद है या नहीं. अगर आपने फ़ॉन्ट स्थानीय तौर पर उपलब्ध नहीं है, यह फ़ॉन्ट उपलब्ध कराने वाले को कॉल करता है, फ़ॉन्ट साथ ही, एसिंक्रोनस तरीके से नतीजे को कॉलबैक में भेजता है. ये पैरामीटर पास करें:
    • उदाहरण के लिए, Context क्लास
    • android.graphics.fonts.FontRequest क्लास का एक इंस्टेंस
    • फ़ॉन्ट के अनुरोध के नतीजे पाने के लिए कॉलबैक
    • थ्रेड पर फ़ॉन्ट फ़ेच करने के लिए हैंडलर

नीचे दिया गया सैंपल कोड, डाउनलोड किए जा सकने वाले फ़ॉन्ट की पूरी प्रोसेस दिखाता है:

Kotlin

val request = FontRequest(
        "com.example.fontprovider.authority",
        "com.example.fontprovider",
        "my font",
        certs
)
val callback = object : FontsContract.FontRequestCallback() {

    override fun onTypefaceRetrieved(typeface: Typeface) {
        // Your code to use the font goes here.
        ...
    }

    override fun onTypefaceRequestFailed(reason: Int) {
        // Your code to deal with the failure goes here.
        ...
    }
}
FontsContract.requestFonts(context, request, handler, null, callback)

Java

FontRequest request = new FontRequest("com.example.fontprovider.authority",
        "com.example.fontprovider", "my font", certs);
FontsContract.FontRequestCallback callback =
    new FontsContract.FontRequestCallback() {
        @Override
        public void onTypefaceRetrieved(Typeface typeface) {
            // Your code to use the font goes here.
            ...
        }

        @Override
        public void onTypefaceRequestFailed(int reason) {
            // Your code to deal with the failure goes here.
            ...
        }
};
FontsContract.requestFonts(context, request, handler, null, callback);

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

AndroidX Core की मदद से, डाउनलोड किए जा सकने वाले फ़ॉन्ट का इस्तेमाल करें

AndroidX Core, Android चलाने वाले डिवाइसों पर डाउनलोड किए जा सकने वाले फ़ॉन्ट की सुविधा के लिए सहायता उपलब्ध कराता है एपीआई वर्शन 14 या उसके बाद के वर्शन. कॉन्टेंट बनाने androidx.core.provider अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है पैकेज में लागू करने के लिए FontsContractCompat और FontRequest क्लास शामिल हैं पुराने सिस्टम के साथ काम करने की सुविधा देने वाली डाउनलोड किए जा सकने वाले फ़ॉन्ट की सुविधा देती है. AndroidX क्लास में तरीके होते हैं से मिलता-जुलता है और फ़ॉन्ट डाउनलोड करने की प्रोसेस, इस पेज पर दिए गए सेक्शन में, प्रोग्रामैटिक तौर पर डाउनलोड किए जा सकने वाले फ़ॉन्ट इस्तेमाल करके.

AndroidX का इस्तेमाल करके फ़ॉन्ट डाउनलोड करने के लिए, FontsContractCompat इंपोर्ट करें और androidx.core.provider पैकेज में शामिल FontRequest क्लास. कुछ लिखने या तैयार करने में मदद पाएँ के बजाय इन क्लास के इंस्टेंस FontsContract और android.graphics.fonts.FontRequest फ़्रेमवर्क क्लास.

AndroidX Core डिपेंडेंसी जोड़ें

FontsContractCompat और FontRequest क्लास का इस्तेमाल करने के लिए, आपको बदलाव करना होगा आपके डेवलपमेंट एनवायरमेंट में, आपके ऐप्लिकेशन प्रोजेक्ट की क्लासपाथ डिपेंडेंसी.

अपने ऐप्लिकेशन प्रोजेक्ट में AndroidX Core को जोड़ने के लिए, अपने ऐप्लिकेशन में नीचे दी गई डिपेंडेंसी जोड़ें build.gradle फ़ाइल:

ग्रूवी

dependencies {
    ...
    implementation "androidx.core:core-ktx:2.2.0"
}

Kotlin

dependencies {
    ...
    implementation("androidx.core:core-ktx:2.2.0")
}

एक्सएमएल में संसाधनों के तौर पर, डाउनलोड किए जा सकने वाले फ़ॉन्ट इस्तेमाल करें

Android 8.0 (एपीआई लेवल 26) और AndroidX Core, एक्सएमएल लेआउट में संसाधन के तौर पर पसंद के मुताबिक फ़ॉन्ट का इस्तेमाल किया जा सकता है. इसका मतलब है कि आपको फ़ॉन्ट को ऐसेट. आप अपनी पूरी थीम के लिए पसंद के मुताबिक फ़ॉन्ट तय कर सकते हैं. ऐसा करने से फ़ॉन्ट इस्तेमाल करना ज़्यादा आसान हो जाता है एक से ज़्यादा वज़न और स्टाइल, जैसे कि बोल्ड, मीडियम या लाइट.

  1. res/font फ़ोल्डर में एक नई एक्सएमएल फ़ाइल बनाएं.
  2. <font-family> रूट एलिमेंट जोड़ें और फ़ॉन्ट से जुड़े एट्रिब्यूट इस तरह सेट करें नीचे दी गई एक्सएमएल फ़ाइल में दिखाई गई है:
  3. <?xml version="1.0" encoding="utf-8"?>
    <font-family xmlns:android="http://schemas.android.com/apk/res/android"
            android:fontProviderAuthority="com.example.fontprovider.authority"
            android:fontProviderPackage="com.example.fontprovider"
            android:fontProviderQuery="example font"
            android:fontProviderCerts="@array/certs">
    </font-family>
    
  4. लेआउट एक्सएमएल फ़ाइल में, फ़ाइल को @font/font_file_name के तौर पर देखें. आप यह भी कर सकते हैं का इस्तेमाल करें getFont() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है का उपयोग करके फ़ाइल को प्रोग्रामेटिक रूप से वापस पा सकते हैं, जैसे कि getFont(R.font.font_file_name).

मेनिफ़ेस्ट में फ़ॉन्ट का एलान पहले से करें

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

मेनिफ़ेस्ट में फ़ॉन्ट का पहले से एलान करने के लिए, नीचे दिया गया तरीका अपनाएं:

  1. res/values/arrays.xml में संसाधनों का कलेक्शन बनाएं और उन फ़ॉन्ट का एलान करें जिन्हें आपने प्रीफ़ेच करना चाहते हैं.
  2. res/values/arrays.xml
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <array name="preloaded_fonts">
            <item>@font/font1</item>
            <item>@font/font2</item>
        </array>
    </resources>
    
  3. अपने मेनिफ़ेस्ट में रिसॉर्स कलेक्शन का एलान करने के लिए, meta-data टैग का इस्तेमाल करें.
  4. <meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />
    

सर्टिफ़िकेट जोड़ें

अगर फ़ॉन्ट उपलब्ध कराने वाला कोई टूल पहले से इंस्टॉल नहीं किया गया है या अगर आप AndroidX Core लाइब्रेरी का इस्तेमाल कर रहे हैं, तो वे सर्टिफ़िकेट जिनसे फ़ॉन्ट उपलब्ध कराने वाले व्यक्ति ने हस्ताक्षर किए हैं. सिस्टम, फ़ॉन्ट प्रोवाइडर की पहचान से जुड़ा हो.

सर्टिफ़िकेट जोड़ने के लिए, यह तरीका अपनाएं:

  1. सर्टिफ़िकेट की जानकारी वाला स्ट्रिंग कलेक्शन बनाएं. सर्टिफ़िकेट के बारे में ज़्यादा जानकारी पाने के लिए विवरण के लिए, अपने फ़ॉन्ट उपलब्ध कराने वाले का दस्तावेज़ देखें.
  2. <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="certs">
           <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item>
        </string-array>
    </resources>
    
  3. fontProviderCerts एट्रिब्यूट को कलेक्शन पर सेट करें.
  4. android:fontProviderCerts="@array/certs"
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

कंपोज़ में डाउनलोड किए जा सकने वाले फ़ॉन्ट

इतने समय में शुरू होगा 1.2-alpha07 लिखें, आप डाउनलोड करने के लिए अपने Compose ऐप्लिकेशन में Downloadable Fonts API का इस्तेमाल कर सकते हैं Google Fonts एसिंक्रोनस तरीके से इस्तेमाल किए जा सकते हैं और आपके ऐप्लिकेशन में उनका इस्तेमाल किया जा सकता है. इसके लिए ज़्यादा जानकारी के लिए, डाउनलोड किए जा सकने वाले फ़ॉन्ट कंपोज़ करने का दस्तावेज़.