Tài nguyên phông chữ

Tài nguyên phông chữ xác định phông chữ tuỳ chỉnh mà bạn có thể dùng trong ứng dụng của mình. Phông chữ có thể là các tệp phông chữ riêng lẻ hoặc một tập hợp các tệp phông chữ, được gọi là bộ phông chữ và được xác định trong XML.

Ngoài ra, hãy xem cách xác định phông chữ trong XML hoặc sử dụng Phông chữ có thể tải xuống.

Phông chữ theo gói

Bạn có thể gói các phông chữ dưới dạng tài nguyên trong một ứng dụng. Phông chữ sẽ được biên dịch trong tệp R và tự động xuất hiện trong hệ thống ở dạng tài nguyên. Sau đó, bạn có thể truy cập vào những phông chữ này với sự trợ giúp của loại tài nguyên font.

vị trí tệp:
res/font/filename.ttf (.ttf, .ttc, .otf, hoặc .xml)
Tên tệp được dùng làm mã nhận dạng tài nguyên.
mã tham chiếu tài nguyên:
Trong XML: @[package:]font/font_name
cú pháp:
<?xml version="1.0" encoding="utf-8"?>
<font-family>
  <font
    android:font="@[package:]font/font_to_include"
    android:fontStyle=["normal" | "italic"]
    android:fontWeight="weight_value" />
</font-family>
phần tử:
<font-family>
Bắt buộc. Đây phải là nút gốc.

Không có thuộc tính nào.

<font>
Xác định phông chữ trong một bộ phông chữ. Không chứa nút con.

Thuộc tính:

android:fontStyle
Từ khoá. Xác định kiểu phông chữ. Thuộc tính này được dùng khi phông chữ được tải vào ngăn xếp phông chữ và ghi đè mọi thông tin về kiểu phông chữ trong bảng tiêu đề của phông chữ. Nếu bạn không chỉ định thuộc tính này, ứng dụng sẽ dùng giá trị trong bảng tiêu đề của phông chữ. Giá trị hằng số là normal hoặc italic.
android:fontWeight
Số nguyên. Độ đậm của phông chữ. Thuộc tính này được dùng khi phông chữ được tải vào ngăn xếp phông chữ và ghi đè mọi thông tin về độ đậm trong bảng tiêu đề của phông chữ. Giá trị thuộc tính phải là bội số của 100, từ 100 đến 900 (tính cả 2 giá trị đầu cuối). Nếu bạn không chỉ định thuộc tính này, ứng dụng sẽ dùng giá trị trong bảng tiêu đề của phông chữ. Các giá trị phổ biến nhất là 400 cho độ đậm thông thường và 700 cho độ đậm in đậm.
ví dụ:
Tệp XML được lưu vào res/font/lobster.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>

Tệp XML được lưu trong res/layout/, áp dụng phông chữ cho TextView:

<?xml version="1.0" encoding="utf-8"?>
<EditText
    android:fontFamily="@font/lobster"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Hello, World!" />

Phông chữ có thể tải xuống

Tài nguyên phông chữ có thể tải xuống xác định phông chữ tuỳ chỉnh mà bạn có thể dùng trong ứng dụng. Phông chữ này không có sẵn trong ứng dụng. Thay vào đó, phông chữ này sẽ được truy xuất từ một trình cung cấp phông chữ.

vị trí tệp:
res/font/filename.xml Tên tệp là mã nhận dạng tài nguyên.
mã tham chiếu tài nguyên:
Trong XML:@[package:]font/font_name
cú pháp:
<?xml version="1.0" encoding="utf-8"?>
<font-family
    android:fontProviderAuthority="authority"
    android:fontProviderPackage="package"
    android:fontProviderQuery="query"
    android:fontProviderCerts="@[package:]array/array_resource" />
phần tử:
<font-family>
Bắt buộc. Đây phải là nút gốc.

thuộc tính:

android:fontProviderAuthority
Chuỗi. Bắt buộc. Quyền của trình cung cấp phông chữ sẽ xác định yêu cầu phông chữ.
android:fontProviderPackage
Chuỗi. Bắt buộc. Tên gói của trình cung cấp phông chữ sẽ được dùng cho yêu cầu. Thông tin này dùng để xác minh danh tính của trình cung cấp.
android:fontProviderQuery
Chuỗi. Bắt buộc. Truy vấn chuỗi phông chữ. Hãy tham khảo tài liệu của trình cung cấp phông chữ về định dạng của chuỗi này.
android:fontProviderCerts
Tài nguyên mảng. Bắt buộc. Xác định tập hợp hàm băm cho các chứng chỉ dùng để ký trình cung cấp này. Thông tin này dùng để xác minh danh tính của trình cung cấp và chỉ bắt buộc nếu trình cung cấp không có trong hình ảnh hệ thống. Giá trị này có thể trỏ đến một danh sách (tài nguyên mảng chuỗi) hoặc một danh sách gồm các danh sách (tài nguyên mảng), trong đó mỗi danh sách riêng lẻ đại diện cho một tập hợp các hàm băm chữ ký. Hãy tham khảo tài liệu của trình cung cấp phông chữ để tìm hiểu về các giá trị này.
ví dụ:
Tệp XML được lưu vào res/font/lobster.xml:
<?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="Lobster"
    android:fontProviderCerts="@array/certs">
</font-family>

Tệp XML được lưu trong res/values/, xác định mảng chứng chỉ:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="certs">
      <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item>
    </string-array>
</resources>

Tệp XML được lưu trong res/layout/, áp dụng phông chữ cho TextView:

<?xml version="1.0" encoding="utf-8"?>
<EditText
    android:fontFamily="@font/lobster"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Hello, World!" />