ডাউনলোডযোগ্য ফন্ট ব্যবহার করুন

রচনা পদ্ধতি চেষ্টা করুন
জেটপ্যাক কম্পোজ হল Android এর জন্য প্রস্তাবিত UI টুলকিট। কম্পোজে টেক্সট ব্যবহার করতে শিখুন।

ডাউনলোডযোগ্য ফন্ট বৈশিষ্ট্যটি API গুলিকে অ্যাপে ফাইলগুলি বান্ডল করার পরিবর্তে বা অ্যাপটিকে ফন্ট ডাউনলোড করতে দেওয়ার পরিবর্তে একটি প্রদানকারী অ্যাপ্লিকেশন থেকে ফন্টের অনুরোধ করতে দেয়। ডাউনলোডযোগ্য ফন্ট Androidএক্স কোর লাইব্রেরির মাধ্যমে Android API সংস্করণ 14 এবং উচ্চতর চলমান ডিভাইসগুলিতে উপলব্ধ।

ডাউনলোডযোগ্য ফন্টগুলি নিম্নলিখিত সুবিধাগুলি অফার করে:

  • অ্যাপের আকার হ্রাস করে, তাই অ্যাপ ইনস্টলেশনের সাফল্যের হার বৃদ্ধি করে।
  • সামগ্রিক সিস্টেমের স্বাস্থ্যের উন্নতি করে, কারণ একাধিক অ্যাপ একটি প্রদানকারীর মাধ্যমে একই ফন্ট শেয়ার করতে পারে। এটি ব্যবহারকারীদের সেলুলার ডেটা, ফোন মেমরি এবং ডিস্কের স্থান সংরক্ষণ করে। এই মডেলে, প্রয়োজনে ফন্টটি নেটওয়ার্কে আনা হয়।
ডাউনলোডযোগ্য ফন্টের সাথে অভিজ্ঞতার জন্য, ডাউনলোডযোগ্য ফন্টের নমুনা অ্যাপটি দেখুন।

ডাউনলোডযোগ্য ফন্ট কিভাবে কাজ করে?

একটি ফন্ট প্রদানকারী এমন একটি অ্যাপ্লিকেশন যা ফন্টগুলি পুনরুদ্ধার করে এবং সেগুলিকে স্থানীয়ভাবে ক্যাশ করে যাতে অন্যান্য অ্যাপ্লিকেশনগুলি ফন্টগুলির অনুরোধ এবং ভাগ করতে পারে৷ নিম্নলিখিত চিত্রটি প্রক্রিয়াটি চিত্রিত করে।

ইমোজি কম্প্যাট প্রক্রিয়ার প্রধান উপাদানগুলি দেখানো একটি চিত্র৷
চিত্র 1. ডাউনলোডযোগ্য ফন্ট প্রক্রিয়া।

বুনিয়াদি

আপনি নিম্নলিখিত উপায়ে ডাউনলোডযোগ্য ফন্ট বৈশিষ্ট্যটি ব্যবহার করতে পারেন, যা পরবর্তী বিভাগে বিস্তারিতভাবে আলোচনা করা হয়েছে:

অ্যান্ড্রয়েড স্টুডিও এবং গুগল প্লে পরিষেবাগুলির সাথে ডাউনলোডযোগ্য ফন্টগুলি ব্যবহার করুন৷

আপনি Android Studio 3.0 বা উচ্চতর ব্যবহার করে ফন্ট ডাউনলোড করার জন্য আপনার অ্যাপ্লিকেশন সেট করতে পারেন। ডাউনলোডযোগ্য ফন্ট বৈশিষ্ট্যগুলির সাথে শুরু করতে সাহায্য করার জন্য, আপনি Google Play পরিষেবাগুলি থেকে ফন্ট প্রদানকারী ব্যবহার করতে পারেন৷

  1. লেআউট এডিটরে , একটি TextView নির্বাচন করুন। তারপর, বৈশিষ্ট্যের অধীনে, fontFamily > More Fonts নির্বাচন করুন।
    অ্যান্ড্রয়েড স্টুডিও লেআউট সম্পাদক দেখানো একটি চিত্র৷
    চিত্র 2. লেআউট এডিটর ব্যবহার করা।
    রিসোর্স উইন্ডো প্রদর্শিত হবে।
  2. উৎস মেনুতে, Google Fonts নির্বাচন করুন।
  3. ফন্ট বাক্সে, "ডাউনলোডযোগ্য" এলাকার অধীনে একটি ফন্ট নির্বাচন করুন।
  4. ডাউনলোডযোগ্য ফন্ট তৈরি করুন নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন।
    রিসোর্স উইন্ডো থেকে কীভাবে ফন্ট নির্বাচন করতে হয় তা দেখানো একটি চিত্র
    চিত্র 3. সম্পদ উইন্ডো থেকে একটি ফন্ট নির্বাচন করা।
  5. অ্যান্ড্রয়েড স্টুডিও স্বয়ংক্রিয়ভাবে প্রাসঙ্গিক XML ফাইলগুলি তৈরি করে যা আপনার অ্যাপে সঠিকভাবে ফন্ট রেন্ডার করার জন্য প্রয়োজন।

    কিভাবে ফন্ট পূর্বরূপ দেখায় একটি চিত্র
    চিত্র 4. ফন্ট ফাইলের পূর্বরূপ দেখা হচ্ছে।

প্রোগ্রাম্যাটিকভাবে ডাউনলোডযোগ্য ফন্ট ব্যবহার করুন

Android 8.0 (API লেভেল 26) অনুযায়ী, AndroidX Core ডাউনলোডযোগ্য ফন্টগুলির জন্য সম্পূর্ণ সমর্থন প্রদান করে। AndroidX কোর লাইব্রেরি ব্যবহার সম্পর্কে আরও তথ্যের জন্য, এই পৃষ্ঠায় ডাউনলোডযোগ্য ফন্ট AndroidX কোর লাইব্রেরি বিভাগটি দেখুন।

ডাউনলোডযোগ্য ফন্ট বৈশিষ্ট্য প্রোগ্রামগতভাবে ব্যবহার করতে, দুটি কী ক্লাসের সাথে ইন্টারঅ্যাক্ট করুন:

  • android.graphics.fonts.FontRequest : এই ক্লাসটি আপনাকে একটি ফন্ট অনুরোধ তৈরি করতে দেয়।
  • FontsContractCompat : এই ক্লাসটি আপনাকে ফন্ট অনুরোধের উপর ভিত্তি করে একটি নতুন Typeface অবজেক্ট তৈরি করতে দেয়।

আপনার অ্যাপ FontsContract API ব্যবহার করে ফন্ট প্রদানকারীর কাছ থেকে ফন্ট পুনরুদ্ধার করে। প্রতিটি প্রদানকারীর Android সংস্করণ এবং এটি সমর্থন করে এমন প্রশ্নের ভাষাতে নিজস্ব বিধিনিষেধের সেট রয়েছে৷ Android সংস্করণ এবং ক্যোয়ারী বিন্যাস সম্পর্কে আরও তথ্যের জন্য, আপনার প্রদানকারীর ডকুমেন্টেশন পড়ুন।

একটি ফন্ট ডাউনলোড করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. প্রদানকারীর কাছ থেকে ফন্টের অনুরোধ করার জন্য android.graphics.fonts.FontRequest ক্লাসের একটি উদাহরণ তৈরি করুন। একটি অনুরোধ তৈরি করতে, নিম্নলিখিত পরামিতিগুলি পাস করুন:
    • ফন্ট প্রদানকারী কর্তৃপক্ষ।
    • প্রদানকারীর পরিচয় যাচাই করার জন্য ফন্ট প্রদানকারী প্যাকেজ।
    • ফন্টের স্ট্রিং কোয়েরি। ক্যোয়ারী ফর্ম্যাট সম্পর্কে আরও তথ্যের জন্য, আপনার ফন্ট প্রদানকারীর ডকুমেন্টেশন দেখুন, যেমন Google ফন্ট
    • প্রদানকারীর পরিচয় যাচাই করার জন্য সার্টিফিকেটের জন্য হ্যাশের সেটের একটি তালিকা।

    কোটলিন

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

    জাভা

    FontRequest request = new FontRequest("com.example.fontprovider",
                       "com.example.fontprovider", "my font", certs);
  2. FontsContract.FontRequestCallback ক্লাসের একটি উদাহরণ তৈরি করুন।
  3. ফন্ট অনুরোধ সম্পূর্ণ হয়েছে নির্দেশ করতে onTypefaceRetrieved() পদ্ধতি ওভাররাইড করুন। প্যারামিটার হিসাবে পুনরুদ্ধার করা ফন্ট প্রদান করুন। আপনি প্রয়োজন অনুযায়ী ফন্ট সেট করতে এই পদ্ধতি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি একটি TextView এ ফন্ট সেট করতে পারেন।
  4. ফন্ট অনুরোধ প্রক্রিয়ার ত্রুটি সম্পর্কে তথ্য পেতে onTypefaceRequestFailed() পদ্ধতিটি ওভাররাইড করুন। ত্রুটি কোড সম্পর্কে আরও তথ্যের জন্য, ত্রুটি কোড ধ্রুবকগুলি পড়ুন।
  5. ফন্ট প্রদানকারীর কাছ থেকে ফন্ট পুনরুদ্ধার করতে FontsContract.requestFont() পদ্ধতিতে কল করুন। ক্যাশে ফন্ট বিদ্যমান কিনা তা নির্ধারণ করতে পদ্ধতিটি একটি পরীক্ষা শুরু করে। ফন্ট স্থানীয়ভাবে উপলব্ধ না হলে, এটি ফন্ট প্রদানকারীকে কল করে, অসিঙ্ক্রোনাসভাবে ফন্টটি পুনরুদ্ধার করে এবং ফলাফলটি কলব্যাকে পাঠায়। নিম্নলিখিত পরামিতিগুলি পাস করুন:
    • Context ক্লাসের একটি উদাহরণ
    • android.graphics.fonts.FontRequest ক্লাসের একটি উদাহরণ
    • ফন্ট অনুরোধের ফলাফল পেতে একটি কলব্যাক
    • থ্রেডে ফন্ট আনার জন্য একজন হ্যান্ডলার

নিম্নলিখিত নমুনা কোড সামগ্রিক ডাউনলোডযোগ্য ফন্ট প্রক্রিয়ার চিত্র তুলে ধরে:

কোটলিন

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)

জাভা

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 Android API সংস্করণ 14 বা উচ্চতর চলমান ডিভাইসগুলিতে ডাউনলোডযোগ্য ফন্ট বৈশিষ্ট্যের জন্য সমর্থন প্রদান করে। androidx.core.provider প্যাকেজে পশ্চাদগামী-সামঞ্জস্যপূর্ণ ডাউনলোডযোগ্য ফন্ট বৈশিষ্ট্য সমর্থন বাস্তবায়নের জন্য FontsContractCompat এবং FontRequest ক্লাস রয়েছে। অ্যান্ড্রয়েডএক্স ক্লাসে ফ্রেমওয়ার্ক পদ্ধতির অনুরূপ পদ্ধতি রয়েছে এবং ফন্টগুলি ডাউনলোড করার প্রক্রিয়াটি প্রোগ্রামে ডাউনলোডযোগ্য ফন্টগুলি ব্যবহার করার বিষয়ে এই পৃষ্ঠার বিভাগে বর্ণিত একটির অনুরূপ।

AndroidX ব্যবহার করে ফন্ট ডাউনলোড করতে, androidx.core.provider প্যাকেজ থেকে FontsContractCompat এবং FontRequest ক্লাস ইমপোর্ট করুন। FontsContract এবং android.graphics.fonts.FontRequest ফ্রেমওয়ার্ক ক্লাসের পরিবর্তে এই ক্লাসগুলির উদাহরণ তৈরি করুন।

AndroidX কোর নির্ভরতা যোগ করুন

FontsContractCompat এবং FontRequest ক্লাসগুলি ব্যবহার করতে, আপনাকে অবশ্যই আপনার ডেভেলপমেন্ট এনভায়রনমেন্টের মধ্যে আপনার অ্যাপ প্রকল্পের ক্লাসপথ নির্ভরতা পরিবর্তন করতে হবে।

আপনার অ্যাপ্লিকেশন প্রকল্পে AndroidX কোর যোগ করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিত নির্ভরতা যোগ করুন:

গ্রোভি

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

কোটলিন

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

XML-এ রিসোর্স হিসেবে ডাউনলোডযোগ্য ফন্ট ব্যবহার করুন

অ্যান্ড্রয়েড 8.0 (এপিআই লেভেল 26) এবং অ্যান্ড্রয়েডএক্স কোর এক্সএমএল লেআউটে একটি কাস্টম ফন্টকে একটি সংস্থান হিসাবে ঘোষণা করার একটি দ্রুত এবং আরও সুবিধাজনক উপায় অফার করে৷ এর মানে হল যে একটি সম্পদ হিসাবে ফন্ট বান্ডিল করার কোন প্রয়োজন নেই। আপনি আপনার সম্পূর্ণ থিমের জন্য একটি কাস্টম ফন্ট সংজ্ঞায়িত করতে পারেন, যা একাধিক ওজন এবং শৈলীর জন্য ব্যবহারযোগ্যতাকে ত্বরান্বিত করে, যেমন বোল্ড, মাঝারি বা হালকা, প্রদান করা হলে।

  1. res/font ফোল্ডারে একটি নতুন XML ফাইল তৈরি করুন।
  2. একটি <font-family> রুট উপাদান যোগ করুন এবং ফন্ট-সম্পর্কিত বৈশিষ্ট্যগুলি সেট করুন, যেমনটি নিম্নলিখিত নমুনা XML ফাইলে দেখানো হয়েছে:
  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. লেআউট XML ফাইলে ফাইলটিকে @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 কোর লাইব্রেরি ব্যবহার করেন, তখন ফন্ট প্রদানকারীর সাথে স্বাক্ষরিত শংসাপত্রগুলি ঘোষণা করুন৷ সিস্টেমটি ফন্ট প্রদানকারীর পরিচয় যাচাই করতে শংসাপত্র ব্যবহার করে।

শংসাপত্র যোগ করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  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 থেকে শুরু করে, আপনি Google ফন্টগুলিকে অ্যাসিঙ্ক্রোনাসভাবে ডাউনলোড করতে এবং আপনার অ্যাপে ব্যবহার করতে আপনার কম্পোজ অ্যাপে ডাউনলোডযোগ্য ফন্ট API ব্যবহার করতে পারেন। আরও তথ্যের জন্য, কম্পোজ ডাউনলোডযোগ্য ফন্ট ডকুমেন্টেশন দেখুন।