یک فونت به عنوان منبع XML اضافه کنید

روش نوشتن را امتحان کنید
Jetpack Compose ابزار رابط کاربری پیشنهادی برای اندروید است. یاد بگیرید که چگونه از متن در Compose استفاده کنید.

اندروید ۸.۰ (سطح API ۲۶) فونت‌ها را در XML معرفی می‌کند، قابلیتی که به شما امکان می‌دهد از فونت‌ها به عنوان منبع استفاده کنید. می‌توانید فایل font را در پوشه res/font/ اضافه کنید تا فونت‌ها را به عنوان منبع دسته‌بندی کنید. این فونت‌ها در فایل R شما کامپایل می‌شوند و به طور خودکار در اندروید استودیو در دسترس هستند. می‌توانید با استفاده از نوع منبع فونت به منابع font دسترسی پیدا کنید. به عنوان مثال، برای دسترسی به یک منبع فونت، @font/myfont یا R.font.myfont استفاده کنید.

برای استفاده از ویژگی فونت‌ها در XML در دستگاه‌هایی که اندروید ۴.۱ (سطح API ۱۶) و بالاتر دارند، از کتابخانه پشتیبانی ۲۶.۰ استفاده کنید. برای اطلاعات بیشتر در مورد استفاده از کتابخانه پشتیبانی، به بخش «استفاده از کتابخانه پشتیبانی» مراجعه کنید.

برای افزودن فونت‌ها به عنوان منابع، مراحل زیر را در اندروید استودیو انجام دهید:

  1. روی پوشه res کلیک راست کرده و به New > Android resource directory بروید. پنجره New Resource Directory ظاهر می‌شود.
  2. در لیست نوع منبع ، فونت را انتخاب کنید، سپس روی تأیید کلیک کنید.

    نکته : نام دایرکتوری منبع باید font باشد.

    افزودن دایرکتوری منبع فونت

    شکل ۱. افزودن دایرکتوری منبع فونت.

  3. فایل‌های فونت خود را در پوشه font اضافه کنید.

    ساختار پوشه زیر فایل‌های R.font.dancing_script ، R.font.lobster و R.font.typo_graphica را تولید می‌کند.

    اضافه کردن فایل‌های فونت در دایرکتوری منابع

    شکل ۲. اضافه کردن فایل‌های فونت در پوشه res/font

  4. برای پیش‌نمایش فونت‌های فایل در ویرایشگر، روی یک فایل فونت دوبار کلیک کنید. پیش‌نمایش فایل فونت

    شکل ۳. پیش‌نمایش فایل فونت.

ایجاد یک خانواده فونت

یک خانواده فونت مجموعه‌ای از فایل‌های فونت به همراه جزئیات سبک و وزن فونت است. در اندروید، می‌توانید یک خانواده فونت جدید را به عنوان یک منبع XML ایجاد کنید و به جای ارجاع به هر سبک و وزن به عنوان منابع جداگانه، به عنوان یک واحد واحد به آن دسترسی داشته باشید. با انجام این کار، به سیستم اجازه می‌دهید فونت صحیح را بر اساس سبک متنی که استفاده می‌کنید انتخاب کند.

برای ایجاد یک خانواده فونت، مراحل زیر را در اندروید استودیو انجام دهید:

  1. روی پوشه font کلیک راست کرده و New > Font resource file را انتخاب کنید. پنجره New Resource File ظاهر می‌شود.
  2. نام فایل را وارد کنید، سپس روی تأیید کلیک کنید. منبع فونت جدید XML در ویرایشگر باز می‌شود.
  3. هر فایل فونت، ویژگی style و وزن را در عنصر <font> قرار دهید. XML زیر نحوه افزودن ویژگی‌های مربوط به فونت را در منبع فونت XML نشان می‌دهد:
    <?xml version="1.0" encoding="utf-8"?>
    <font-family xmlns:android="http://schemas.android.com/apk/res/android">
        <font
            android:fontStyle="normal"
            android:fontWeight="400"
            android:font="@font/lobster_regular" />
        <font
            android:fontStyle="italic"
            android:fontWeight="400"
            android:font="@font/lobster_italic" />
    </font-family>

استفاده از فونت‌ها در طرح‌بندی‌های XML

با استفاده از ویژگی fontFamily ، از فونت‌های خود، چه یک فایل فونت واحد و چه یک فونت از یک خانواده فونت، در اشیاء TextView یا در استایل‌ها استفاده کنید.

نکته: وقتی از یک خانواده فونت استفاده می‌کنید، TextView در صورت نیاز، خودش تغییر حالت می‌دهد تا از فایل‌های فونت آن خانواده استفاده کند.

اضافه کردن فونت به TextView

برای تنظیم فونت برای TextView ، یکی از مراحل زیر را انجام دهید:

  • در فایل XML مربوط به layout، ویژگی fontFamily را به فایل فونتی که می‌خواهید به آن دسترسی داشته باشید، تنظیم کنید.
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="@font/lobster"/>
  • پنجره Properties را باز کنید تا فونت TextView را تنظیم کنید.
    1. برای باز کردن پنجره Properties ، یک نما (view) را انتخاب کنید.

      نکته: پنجره Properties فقط زمانی که ویرایشگر طراحی باز است، در دسترس است. تب Design را در پایین پنجره انتخاب کنید.

    2. ویژگی textAppearance را باز کنید و سپس فونت مورد نظر را از لیست fontFamily انتخاب کنید.
    3. انتخاب فونت از Properties

      شکل ۴. انتخاب فونت از پنجره‌ی Properties .

پیش‌نمایش طرح‌بندی اندروید استودیو، که در سمت راست‌ترین پنل در شکل 5 نشان داده شده است، به شما امکان می‌دهد پیش‌نمایشی از مجموعه فونت در TextView را مشاهده کنید.

پیش‌نمایش فونت‌ها در پیش‌نمایش طرح‌بندی

شکل ۵. پیش‌نمایش فونت‌ها در پیش‌نمایش طرح‌بندی.

اضافه کردن فونت به یک استایل

فایل styles.xml را باز کنید و ویژگی fontFamily را به فایل فونتی که می‌خواهید به آن دسترسی داشته باشید، تنظیم کنید.

  • <style name="customfontstyle" parent="@android:style/TextAppearance.Small">
        <item name="android:fontFamily">@font/lobster</item>
    </style>
  • استفاده از فونت‌ها به صورت برنامه‌نویسی‌شده

    برای بازیابی فونت‌ها به صورت برنامه‌نویسی، متد getFont(int) را فراخوانی کنید و شناسه منبع فونتی را که می‌خواهید بازیابی کنید، ارائه دهید. این متد یک شیء Typeface را برمی‌گرداند. اگرچه سیستم بهترین سبک را از اطلاعات فونت‌ها برای شما انتخاب می‌کند، اما می‌توانید از متد setTypeface(android.graphics.Typeface, int) برای تنظیم فونت با سبک‌های خاص استفاده کنید.

    نکته: TextView این کار را برای شما انجام می‌دهد.

    کاتلین

    val typeface = resources.getFont(R.font.myfont)
    textView.typeface = typeface

    جاوا

    Typeface typeface = getResources().getFont(R.font.myfont);
    textView.setTypeface(typeface);

    از کتابخانه پشتیبانی استفاده کنید

    کتابخانه پشتیبانی ۲۶.۰ از فونت‌های موجود در XML در دستگاه‌هایی که اندروید ۴.۱ (سطح API ۱۶) و بالاتر دارند، پشتیبانی می‌کند.

    نکته : وقتی خانواده‌های فونت را در طرح‌بندی XML از طریق کتابخانه پشتیبانی اعلام می‌کنید، از فضای نام برنامه برای اطمینان از بارگذاری فونت‌هایتان استفاده کنید.

    <?xml version="1.0" encoding="utf-8"?>
    <font-family xmlns:app="http://schemas.android.com/apk/res-auto">
        <font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/>
        <font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont-Italic" />
    </font-family>

    برای بازیابی فونت‌ها به صورت برنامه‌نویسی شده، متد ResourceCompat.getFont(Context, int) را فراخوانی کنید و یک نمونه از Context و شناسه منبع را ارائه دهید.

    کاتلین

    val typeface = ResourcesCompat.getFont(context, R.font.myfont)

    جاوا

    Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);