ویژگی «قلمهای بارگیریشدنی» به میاناهای برنامهسازی کاربردی امکان میدهد قلمها را از برنامه ارائهدهنده درخواست کنند، بهجای اینکه
فایلها را در برنامه بستهبندی کنند یا به برنامه اجازه دهند قلمها را بارگیری کند. «قلمهای بارگیریشدنی» در دستگاههای دارای Android API نسخه ۱۴ و بالاتر ازطریق کتابخانه AndroidX Core دردسترس است.
«قلمهای بارگیریشدنی» مزایای زیر را ارائه میدهد:
حجم برنامه را کاهش میدهد و درنتیجه نرخ موفقیت نصب برنامه را افزایش میدهد.
سلامت کلی سیستم را بهبود میبخشد، زیرا چند برنامه میتوانند قلم یکسانی را ازطریق یک
ارائهدهنده همرسانی کنند. این کار باعث صرفهجویی در داده تلفن همراه، حافظه تلفن، و فضای دیسک کاربران میشود. در این مدل،
قلم درصورت نیاز ازطریق شبکه واکشی میشود.
برای تجربه عملی با «قلمهای بارگیریشدنی»،
برنامه نمونه
DownloadableFonts را ببینید.
«قلمهای بارگیریشدنی» چگونه کار میکند؟
ارائهدهنده قلم برنامهای است که قلمها را بازیابی میکند و آنها را بهصورت محلی ذخیره میکند تا برنامههای دیگر بتوانند
قلمها را درخواست و همرسانی کنند. شکل زیر این فرایند را نشان میدهد.
شکل ۱. فرایند «قلمهای بارگیریشدنی».
اصول اولیه
میتوانید از ویژگی «قلمهای بارگیریشدنی» به روشهای زیر استفاده کنید که در بخشهای بعدی بهطور مفصل شرح داده شده است:
استفاده از قلمهای بارگیریشدنی با «استودیو Android» و خدمات Google Play
میتوانید برنامهتان را طوری تنظیم کنید که قلمها را بااستفاده از Android Studio نسخه ۳.۰ یا بالاتر بارگیری کند. برای کمک به شما در
شروع کار با ویژگیهای «قلمهای بارگیریشدنی»، میتوانید از ارائهدهنده قلم از خدمات
Google Play استفاده کنید.
در ویرایشگر چیدمان، TextView را انتخاب کنید. سپس، در بخش ویژگیها،
fontFamily > قلمهای بیشتر را انتخاب کنید.
شکل ۲. استفاده از ویرایشگر چیدمان.
پنجره منابع ظاهر میشود.
در منوِ منبع، Google Fonts را انتخاب کنید.
در چارگوش قلمها، قلمی را در بخش «بارگیریشدنی» انتخاب کنید.
ایجاد قلم بارگیریشدنی را انتخاب کنید و روی تأیید کلیک کنید.
شکل ۳. انتخاب قلم از پنجره منابع.
Android Studio بهطور خودکار فایلهای XML مربوطه را که برای ارائه صحیح قلم در برنامهتان لازم است تولید میکند.
شکل ۴. درحال پیشنمایش فایل قلم.
استفاده از «قلمهای بارگیریشدنی» بهصورت برنامهنویسیشده
از Android 8.0 (سطح API ۲۶)، AndroidX Core پشتیبانی کامل از «قلمهای بارگیریشدنی» را ارائه میدهد. برای
اطلاعات بیشتر درباره استفاده از کتابخانه AndroidX Core، به
بخش کتابخانه AndroidX Core قلمهای بارگیریشدنی در این صفحه مراجعه کنید.
برای استفاده از ویژگی «قلمهای بارگیریشدنی» بهصورت برنامهنویسیشده، با دو کلاس کلیدی تعامل برقرار کنید:
برنامه شما بااستفاده از FontsContract API قلمها را از ارائهدهنده قلم بازیابی میکند. هر ارائهدهنده مجموعه محدودیتهای خاص خود را درخصوص نسخههای Android و زبان پُرسمانی که پشتیبانی میکند دارد. برای
کسب اطلاعات بیشتر درباره نسخههای Android و قالب پُرسمان، به اسناد ارائهدهندهتان
مراجعه کنید.
برای بارگیری قلم، مراحل زیر را تکمیل کنید:
نمونهای از کلاس android.graphics.fonts.FontRequest ایجاد کنید تا قلم را از ارائهدهنده درخواست کنید. برای ایجاد درخواست، پارامترهای زیر را ارسال کنید:
مرجع ارائهدهنده قلم.
بسته ارائهدهنده قلم برای درستیسنجی هویت ارائهدهنده.
پُرسمان رشتهای قلم. برای اطلاعات بیشتر درباره قالبهای پُرسمان، به اسناد ارائهدهنده قلمتان، مثل قلمهای Google، مراجعه کنید.
فهرستی از مجموعههای درهمسازی برای گواهیها جهت تأیید هویت ارائهدهنده.
روش
onTypefaceRetrieved()
را لغو کنید تا نشان دهید درخواست قلم کامل شده است. قلم بازیابیشده را بهعنوان پارامتر ارائه دهید.
میتوانید از این روش برای تنظیم قلم درصورت نیاز استفاده کنید. برای مثال، میتوانید قلم را روی
TextView تنظیم کنید.
روش
onTypefaceRequestFailed()
را لغو کنید تا اطلاعات مربوط به خطاهای فرایند درخواست قلم را دریافت کنید. برای اطلاعات بیشتر درباره کدهای خطا، به ثابتهای کد خطا مراجعه کنید.
برای بازیابی قلم از ارائهدهنده قلم، روش FontsContract.requestFont() را فراخوانی کنید. این روش بررسی را برای تعیین اینکه آیا قلم در حافظه پنهان وجود دارد یا نه آغاز میکند. اگر
قلم بهصورت محلی دردسترس نباشد، ارائهدهنده قلم را فراخوانی میکند، قلم را
بهصورت ناهمگام بازیابی میکند، و نتیجه را به callback ارسال میکند. پارامترهای زیر را ارسال کنید:
نمونهای از کلاس android.graphics.fonts.FontRequest
یک فراخوانی برای دریافت نتایج درخواست قلم
یک گرداننده برای واکشی قلمها در یک رشته
کد نمونه زیر فرایند کلی «قلمهای بارگیریشدنی» را نشان میدهد:
کاتلین
valrequest=FontRequest("com.example.fontprovider.authority","com.example.fontprovider","my font",certs)valcallback=object:FontsContract.FontRequestCallback(){overridefunonTypefaceRetrieved(typeface:Typeface){// Your code to use the font goes here....}overridefunonTypefaceRequestFailed(reason:Int){// Your code to deal with the failure goes here....}}FontsContract.requestFonts(context,request,handler,null,callback)
جاوا
FontRequestrequest=newFontRequest("com.example.fontprovider.authority","com.example.fontprovider","my font",certs);FontsContract.FontRequestCallbackcallback=newFontsContract.FontRequestCallback(){@OverridepublicvoidonTypefaceRetrieved(Typefacetypeface){// Your code to use the font goes here....}@OverridepublicvoidonTypefaceRequestFailed(intreason){// Your code to deal with the failure goes here....}};FontsContract.requestFonts(context,request,handler,null,callback);
برای کسب اطلاعات بیشتر درباره نحوه بارگیری قلم از ارائهدهنده قلم، به برنامه نمونه
DownloadableFonts
مراجعه کنید.
استفاده از «قلمهای بارگیریشدنی» با AndroidX Core
AndroidX Core از ویژگی «قلمهای بارگیریشدنی» در دستگاههای دارای Android
API نسخه ۱۴ یا بالاتر پشتیبانی میکند. بسته
androidx.core.provider
حاوی کلاسهای FontsContractCompat و FontRequest برای پیادهسازی
پشتیبانی از ویژگی «قلمهای بارگیریشدنی» سازگار با نسخه قدیمی است. کلاسهای AndroidX حاوی روشهایی
مشابه روشهای چارچوب هستند و فرایند بارگیری قلمها مشابه فرایند
شرحدادهشده در بخش مربوط به
استفاده از «قلمهای بارگیریشدنی» بهصورت برنامهنویسیشده در این صفحه است.
برای بارگیری قلمها بااستفاده از AndroidX، کلاسهای FontsContractCompat و
FontRequest را از بسته androidx.core.provider وارد کنید. بهجای کلاسهای چارچوب FontsContract و android.graphics.fonts.FontRequest، نمونههایی از این کلاسها ایجاد کنید.
افزودن وابستگی AndroidX Core
برای استفاده از کلاسهای FontsContractCompat و FontRequest، باید
وابستگیهای مسیر کلاس پروژه برنامهتان را در محیط توسعه نرمافزار اصلاح کنید.
برای افزودن AndroidX Core به پروژه برنامهتان، وابستگی زیر را به فایل
build.gradle برنامهتان اضافه کنید:
استفاده از «قلمهای بارگیریشدنی» بهعنوان منابع در XML
Android 8.0 (سطح میانای برنامهسازی کاربردی ۲۶) و AndroidX Core روشی سریعتر و راحتتر برای اعلام
قلم سفارشی بهعنوان منبع در چیدمان XML ارائه میدهند. این یعنی نیازی نیست قلم را بهعنوان دارایی بستهبندی کنید. میتوانید قلم سفارشی برای کل زمینهتان تعریف کنید که قابلیت استفاده را برای
چندین وزن و سبک، مثل پررنگ، متوسط، یا سبک، درصورت ارائه، تسریع میکند.
فایل XML جدیدی در پوشه res/font ایجاد کنید.
عنصر ریشه <font-family> را اضافه کنید و مشخصههای مربوط به قلم را تنظیم کنید، همانطور که در نمونه فایل XML زیر نشان داده شده است:
در فایل XML چیدمان، به فایل بهعنوان @font/font_file_name ارجاع دهید. همچنین میتوانید
از روش
getFont()
برای بازیابی فایل بهصورت برنامهنویسیشده استفاده کنید، مانند
getFont(R.font.font_file_name).
قلمها را ازقبل در مانیفست اعلام کنید
تورم چیدمان و بازیابی منابع تکالیف همگام هستند. بهطور پیشفرض، اولین تلاش برای بازیابی قلمها درخواستی را به ارائهدهنده قلم ارسال میکند و بنابراین زمان اولین چیدمان را افزایش میدهد. برای جلوگیری از تأخیر، میتوانید قلمهایی را که باید بازیابی شوند ازقبل در مانیفست خود اعلام کنید.
پساز اینکه سیستم قلم را از ارائهدهنده بازیابی کرد، قلم بلافاصله دردسترس قرار میگیرد. اگر بازیابی قلم بیشتر از حد انتظار طول بکشد، سیستم فرایند واکشی را لغو میکند و از قلم پیشفرض استفاده میکند.
برای پیشاعلام قلمها در مانیفست، مراحل زیر را تکمیل کنید:
آرایه منابع را در res/values/arrays.xml ایجاد کنید و قلمهایی را که میخواهید پیشواکشی کنید اعلام کنید.
وقتی ارائهدهنده قلم ازپیش نصب نشده باشد، یا اگر از کتابخانه AndroidX Core استفاده میکنید، گواهینامههایی را که ارائهدهنده قلم با آنها امضا شده است اعلام کنید. سیستم از گواهیها برای تأیید هویت ارائهدهنده قلم استفاده میکند.
برای افزودن گواهینامهها، مراحل زیر را انجام دهید:
آرایه رشتهای با جزئیات گواهینامه ایجاد کنید. برای اطلاعات بیشتر درباره جزئیات گواهی، به اسناد ارائهدهنده قلم مراجعه کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2026-10-24 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2026-10-24 بهوقت ساعت هماهنگ جهانی."],[],[]]