字体资源

字体资源定义了您可以在应用中使用的自定义字体。字体可以是单个字体文件,也可以是字体文件的集合(称为字体系列,并在 XML 中定义)。

另请参阅如何在 XML 中定义字体,或者改用可下载字体

捆绑字体

您可以将字体作为资源捆绑在应用中。字体会被编译到 R 文件中,并作为资源自动在系统中可用。然后,您可以通过 font 资源类型访问这些字体。

文件位置
res/font/filename.ttf (`.ttf`、`.ttc`、`.otf` 或 `.xml`)
文件名用作资源 ID。
资源引用
在 XML 中:@[package:]font/font_name
语法
<?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>
元素
<font-family>
必需。 这必须是根节点。

无属性。

<font>
定义字体系列中的单个字体。不包含子节点。

属性

android:fontStyle
关键字。定义字体样式。此属性在字体加载到字体堆栈时使用,并会覆盖字体头表中任何样式信息。如果您未指定该属性,应用将使用字体头表中的值。常量值为 normalitalic
android:fontWeight
整数。字体的粗细。此属性在字体加载到字体堆栈时使用,并会覆盖字体头表中任何粗细信息。属性值必须是 100 到 900 之间(含两端)且为 100 的倍数。如果您未指定该属性,应用将使用字体头表中的值。最常用的值是 400(常规粗细)和 700(粗体粗细)。
示例
XML 文件保存位置: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>

保存到 res/layout/ 且将字体应用到 TextView 的 XML 文件

<?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!" />

可下载字体

可下载字体资源定义了您可以在应用中使用的自定义字体。此字体在应用本身中不可用。相反,该字体是从字体提供程序中检索的。

文件位置
res/font/filename.xml 文件名是资源 ID。
资源引用
在 XML 中:@[package:]font/font_name
语法
<?xml version="1.0" encoding="utf-8"?>
<font-family
    android:fontProviderAuthority="authority"
    android:fontProviderPackage="package"
    android:fontProviderQuery="query"
    android:fontProviderCerts="@[package:]array/array_resource" />
元素
<font-family>
必需。 这必须是根节点。

属性

android:fontProviderAuthority
字符串必需。定义字体请求的字体提供程序的授权。
android:fontProviderPackage
字符串必需。用于请求的字体提供程序的软件包名称。这用于验证提供程序的身份。
android:fontProviderQuery
字符串必需。字体的字符串查询。有关此字符串的格式,请参阅您的字体提供程序的文档。
android:fontProviderCerts
数组资源必需。定义用于签署此提供程序的证书的哈希集。这用于验证提供程序的身份,并且仅当提供程序不是系统映像的一部分时才需要。该值可以指向单个列表(字符串数组资源)或列表的列表(数组资源),其中每个单独的列表代表一个签名哈希集合。有关这些值,请参阅您的字体提供程序的文档。
示例
XML 文件保存位置: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>

保存到 res/values/ 且定义证书数组的 XML 文件

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

保存到 res/layout/ 且将字体应用到 TextView 的 XML 文件

<?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!" />