ویژگی فونتهای دانلودی به APIها اجازه میدهد به جای اینکه فایلها را در برنامه دستهبندی کنند یا به برنامه اجازه دانلود فونتها را بدهند، فونتها را از یک برنامه ارائهدهنده درخواست کنند. فونتهای دانلودی در دستگاههای دارای Android API نسخه ۱۴ و بالاتر از طریق کتابخانه AndroidX Core در دسترس است.
فونت های دانلودی مزایای زیر را ارائه می دهد:
اندازه برنامه را کاهش می دهد، بنابراین نرخ موفقیت نصب برنامه را افزایش می دهد.
سلامت کلی سیستم را بهبود می بخشد، زیرا چندین برنامه می توانند فونت یکسانی را از طریق یک ارائه دهنده به اشتراک بگذارند. این باعث صرفه جویی در داده های تلفن همراه، حافظه تلفن و فضای دیسک کاربران می شود. در این مدل فونت در صورت نیاز از طریق شبکه واکشی می شود.
برای تجربه عملی با فونت های دانلودی، به برنامه نمونه DownloadableFonts مراجعه کنید.
فونت های دانلودی چگونه کار می کنند؟
ارائهدهنده فونت برنامهای است که فونتها را بازیابی میکند و آنها را به صورت محلی ذخیره میکند تا سایر برنامهها بتوانند فونتها را درخواست کرده و به اشتراک بگذارند. شکل زیر فرآیند را نشان می دهد.
شکل 1. فرآیند فونت های قابل دانلود.
اصول اولیه
میتوانید از ویژگی فونتهای دانلودی به روشهای زیر استفاده کنید، که در بخشهای بعدی به تفصیل مورد بحث قرار خواهند گرفت:
از فونت های دانلودی با Android Studio و سرویس های Google Play استفاده کنید
با استفاده از Android Studio 3.0 یا بالاتر می توانید برنامه خود را طوری تنظیم کنید که فونت ها را بارگیری کند. برای کمک به شروع کار با ویژگیهای فونتهای قابل دانلود، میتوانید از ارائهدهنده فونت سرویسهای Google Play استفاده کنید.
در ویرایشگر Layout ، یک TextView انتخاب کنید. سپس در قسمت Attributes ، fontFamily > More Fonts را انتخاب کنید. شکل 2. با استفاده از ویرایشگر Layout . پنجره Resources ظاهر می شود.
در منوی منبع ، فونت های Google را انتخاب کنید.
در کادر Fonts ، یک فونت را در قسمت «دانلود» انتخاب کنید.
ایجاد فونت قابل دانلود را انتخاب کرده و OK را کلیک کنید. شکل 3. انتخاب یک فونت از پنجره Resources .
Android Studio بهطور خودکار فایلهای XML مربوطه را تولید میکند که برای نمایش صحیح فونت در برنامه شما مورد نیاز است.
شکل 4. پیش نمایش فایل فونت.
از فونت های دانلودی به صورت برنامه نویسی استفاده کنید
از Android 8.0 (سطح API 26)، AndroidX Core پشتیبانی کامل از فونت های دانلودی را ارائه می دهد. برای اطلاعات بیشتر در مورد استفاده از کتابخانه AndroidX Core، به بخش کتابخانه فونت های دانلودی AndroidX Core در این صفحه مراجعه کنید.
برای استفاده برنامهنویسی از ویژگی فونتهای دانلودی، با دو کلاس کلیدی تعامل داشته باشید:
برنامه شما با استفاده از FontsContract API فونت ها را از ارائه دهنده فونت بازیابی می کند. هر ارائه دهنده مجموعه ای از محدودیت های خاص خود را بر روی نسخه های اندروید و زبان پرس و جو پشتیبانی می کند. برای اطلاعات بیشتر در مورد نسخه های اندروید و فرمت پرس و جو، به مستندات ارائه دهنده خود مراجعه کنید.
برای دانلود فونت مراحل زیر را انجام دهید:
یک نمونه از کلاس android.graphics.fonts.FontRequest ایجاد کنید تا فونت را از ارائه دهنده درخواست کنید. برای ایجاد یک درخواست، پارامترهای زیر را ارسال کنید:
مرجع ارائه دهنده فونت
بسته ارائه دهنده فونت برای تأیید هویت ارائه دهنده.
پرس و جو رشته فونت. برای اطلاعات بیشتر درباره قالبهای پرس و جو، به مستندات ارائهدهنده فونت خود، مانند فونتهای Google مراجعه کنید.
فهرستی از مجموعههای هش برای گواهیها برای تأیید هویت ارائهدهنده.
روش onTypefaceRetrieved() را نادیده بگیرید تا نشان دهید درخواست فونت کامل شده است. فونت بازیابی شده را به عنوان پارامتر ارائه کنید. می توانید از این روش برای تنظیم فونت در صورت نیاز استفاده کنید. به عنوان مثال، می توانید فونت را روی TextView تنظیم کنید.
روش onTypefaceRequestFailed() را نادیده بگیرید تا اطلاعات مربوط به خطاهای فرآیند درخواست فونت را دریافت کنید. برای اطلاعات بیشتر در مورد کدهای خطا، به ثابت کد خطا مراجعه کنید.
برای بازیابی فونت از ارائه دهنده فونت، متد FontsContract.requestFont() فراخوانی کنید. این روش یک بررسی را برای تعیین اینکه آیا فونت در حافظه پنهان وجود دارد یا خیر آغاز می کند. اگر فونت به صورت محلی در دسترس نباشد، با ارائهدهنده فونت تماس میگیرد، فونت را بهصورت ناهمزمان بازیابی میکند و نتیجه را به پاسخ تماس میدهد. پارامترهای زیر را پاس کنید:
نمونه ای از کلاس 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 (سطح API 26) و AndroidX Core راه سریعتر و راحتتری برای اعلام یک فونت سفارشی به عنوان منبع در طرح XML ارائه میدهند. این بدان معنی است که نیازی به بسته بندی فونت به عنوان یک دارایی نیست. میتوانید یک فونت سفارشی برای کل موضوع خود تعریف کنید، که در صورت ارائه، قابلیت استفاده برای وزنها و سبکهای مختلف مانند پررنگ، متوسط یا روشن را تسریع میکند.
یک فایل XML جدید در پوشه res/font ایجاد کنید.
یک عنصر ریشه <font-family> اضافه کنید و ویژگی های مربوط به فونت را همانطور که در نمونه فایل XML زیر نشان داده شده است تنظیم کنید:
در فایل XML layout به فایل به نام @font/font_file_name مراجعه کنید. همچنین می توانید از متد getFont() برای بازیابی فایل به صورت برنامه نویسی استفاده کنید، مانند getFont(R.font.font_file_name) .
فونت ها را از قبل در مانیفست اعلام کنید
تورم طرح و بازیابی منابع وظایف همزمان هستند. بهطور پیشفرض، اولین تلاش برای بازیابی فونتها، درخواستی را به ارائهدهنده فونت راهاندازی میکند و بنابراین زمان طرحبندی اول را افزایش میدهد. برای جلوگیری از تاخیر، می توانید فونت هایی را که باید در مانیفست خود بازیابی شوند، از قبل اعلام کنید. پس از اینکه سیستم فونت را از ارائه دهنده بازیابی کرد، فورا در دسترس است. اگر بازیابی فونت بیش از حد انتظار طول بکشد، سیستم فرآیند واکشی را متوقف می کند و از فونت پیش فرض استفاده می کند.
برای از پیش اعلام کردن فونت ها در مانیفست، مراحل زیر را انجام دهید:
یک آرایه منابع در res/values/arrays.xml ایجاد کنید و فونت هایی را که می خواهید از قبل واکشی کنید، اعلام کنید.
وقتی یک ارائهدهنده فونت از قبل نصب نشده است، یا اگر از کتابخانه AndroidX Core استفاده میکنید، گواهیهایی را که ارائهدهنده فونت با آن امضا کرده است، اعلام کنید. سیستم از گواهی ها برای تأیید هویت ارائه دهنده فونت استفاده می کند.
برای افزودن گواهینامه مراحل زیر را انجام دهید:
یک آرایه رشته ای با جزئیات گواهی ایجاد کنید. برای اطلاعات بیشتر در مورد جزئیات گواهی، به مستندات ارائه دهنده فونت خود مراجعه کنید.
با شروع در Compose 1.2-alpha07 ، می توانید از API فونت های دانلودی در برنامه Compose خود برای دانلود فونت های Google به صورت ناهمزمان و استفاده از آنها در برنامه خود استفاده کنید. برای اطلاعات بیشتر، به مستندات Compose Fonts Downloadable مراجعه کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2024-08-20 بهوقت ساعت هماهنگ جهانی.