フォント リソース

フォント リソースは、アプリ内で使用できるカスタム フォントを定義します。個々のフォント ファイルも、XML 内で定義したフォント ファイルのコレクション(フォント ファミリー)も、フォントとして使用できます。

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>
フォント ファミリー内の 1 つのフォントを定義します。子ノードは格納しません。

属性:

android:fontStyle
キーワード。フォント スタイルを定義します。この属性は、フォントをフォント スタックにロードする際に使用され、フォントのヘッダー テーブル内のスタイル情報をオーバーライドします。この属性を指定しなかった場合、アプリは、フォントのヘッダー テーブルにある値を使用します。定数値は、normal または italic です。
android:fontWeight
整数。フォントの太さ。この属性は、フォントをフォント スタックにロードする際に使用され、フォントのヘッダー テーブル内の太さ情報をオーバーライドします。属性値は、100 以上 900 以下の 100 の倍数にする必要があります。この属性を指定しなかった場合、アプリは、フォントのヘッダー テーブルにある値を使用します。最も一般的な値は、通常の太さでは 400 で、太字では 700 です。
例:
res/font/lobster.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>

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
文字列。必須。リクエストに対して使用するフォント プロバイダのパッケージ名。これは、プロバイダの ID を確認するために使用されます。
android:fontProviderQuery
文字列。必須。フォントの文字列クエリ。この文字列の形式については、フォント プロバイダのドキュメントをご覧ください。
android:fontProviderCerts
配列リソース。必須。このプロバイダに署名する際に使用する証明書のハッシュのセットを定義します。この属性を使用して、プロバイダの ID が検証されます。プロバイダがシステム イメージの一部を構成していない場合に限り必須です。値としては、単一のリスト(文字列配列リソース)か、リストのリスト(配列リソース)を指定できます。各リストは、署名ハッシュのコレクションを示します。各値については、フォント プロバイダのドキュメントをご覧ください。
例:
res/font/lobster.xml に保存された 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!" />