ダウンロード可能フォント機能を使用すると、API は、 アプリにファイルをバンドルしたり、フォントのダウンロードをアプリに許可したりできます。ダウンロード可能なフォントは AndroidX Core ライブラリを介して Android API バージョン 14 以降を搭載したデバイス
ダウンロード可能フォントには次のようなメリットがあります。
- アプリのサイズが小さくなるため、アプリのインストール成功率が向上します。
- 複数のアプリで同じフォントを共有できるので、 接続します。これにより、ユーザーのモバイルデータ、スマートフォンのメモリ、ディスク容量を節約できます。このモデルでは、 必要に応じてネットワーク経由で取得されます。
ダウンロード可能なフォントの仕組み
フォント プロバイダとは、フォントを取得してローカルにキャッシュし、他のアプリが フォントのリクエストや共有を行えます。次の図は、このプロセスを示しています。
![絵文字互換プロセスの主要コンポーネントを示す画像](https://developer.android.com/static/guide/topics/ui/images/look-and-feel/downloadable-fonts/downloadable-fonts-process.png?authuser=0000&hl=ja)
基本情報
[ダウンロード可能フォント] 機能を使用する方法は次のとおりです。 説明します。
Android Studio や Google Play 開発者サービスでダウンロード可能なフォントを使用する
Android Studio 3.0 以降を使用すると、アプリでフォントをダウンロードするように設定できます。Google の ダウンロード可能なフォント機能を使用するには、Google Play のフォント プロバイダを使用してください 提供します。
<ph type="x-smartling-placeholder">- Layout Editor で
TextView
を選択します。[属性] で、 [fontFamily]>その他のフォント。 <ph type="x-smartling-placeholder"></ph> [Resources] ウィンドウが表示されます。<ph type="x-smartling-placeholder">
</ph> 図 2.Layout Editor を使用する。 で確認できます。 - [ソース] メニューで [Google Fonts] を選択します。
- [フォント] ボックスで、[ダウンロード可能] の下のフォントを選択します。エリアです。
- [Create downloadable font] を選択して [OK] をクリックします。
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 図 3.[Resources] ウィンドウからのフォントの選択。
Android Studio が、フォントのレンダリングに必要な関連する XML ファイルを自動的に生成する 正しく実装する必要があります
<ph type="x-smartling-placeholder">![フォントのプレビュー方法を示す画像](https://developer.android.com/static/guide/topics/ui/images/look-and-feel/downloadable-fonts/preview-fonts.png?authuser=0000&hl=ja)
プログラムでダウンロード可能フォントを使用する
Android 8.0(API レベル 26)以降、AndroidX Core はダウンロード可能フォントを完全にサポートしています。対象 AndroidX Core ライブラリの使用方法については、 このページのダウンロード可能フォントの AndroidX Core ライブラリのセクション。
「ダウンロード可能フォント」機能をプログラムで使用するには、次の 2 つの主要なクラスを操作します。
android.graphics.fonts.FontRequest
: このクラスを使用すると、フォント リクエストを作成できます。FontsContractCompat
: このクラスを使用すると、Typeface
オブジェクトに基づく 表示されます。
アプリは、FontsContract
API を使用してフォント プロバイダからフォントを取得します。各
プロバイダがサポートする Android のバージョンとクエリ言語に関して、独自の制限があります。対象
Android のバージョンとクエリ形式について詳しくは、プロバイダの
ご覧ください
フォントをダウンロードする手順は次のとおりです。
android.graphics.fonts.FontRequest
クラスのインスタンスを作成して、 。リクエストを作成するには、次のパラメータを渡します。 <ph type="x-smartling-placeholder">- </ph>
- フォント プロバイダ オーソリティ。
- プロバイダの ID を確認するためのフォント プロバイダ パッケージ
- フォントの文字列クエリ。クエリ形式の詳細については、フォント リソースを プロバイダのドキュメントなど、 Google Fonts。
- プロバイダの ID を確認するための証明書のハッシュセットのリスト。 <ph type="x-smartling-placeholder">
Kotlin
val request = FontRequest( "com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs )
Java
FontRequest request = new FontRequest("com.example.fontprovider", "com.example.fontprovider", "my font", certs);
- 新しい Pod を作成する
FontsContract.FontRequestCallback
クラスです。 onTypefaceRetrieved()
メソッドをオーバーライドして、フォント リクエストが完了したことを示します。取得したフォントをパラメータとして指定します。 このメソッドを使用して、必要に応じてフォントを設定できます。たとえば、TextView
。- オーバーライドする
onTypefaceRequestFailed()
メソッドを使用して、フォント リクエスト プロセスのエラーに関する情報を受け取ります。詳細情報 詳細は、このモジュールのコースリソースに記載の エラーコード定数。 FontsContract.requestFont()
メソッドを呼び出して、フォントからフォントを取得する 接続します。このメソッドは、フォントがキャッシュに存在するかどうかを判断するためのチェックを開始します。条件 フォントをローカルで使用できない場合、フォント プロバイダを呼び出してフォントを取得し、 結果をコールバックに渡します。次のパラメータを渡します。 <ph type="x-smartling-placeholder">- </ph>
- アプリケーションの
Context
クラス android.graphics.fonts.FontRequest
クラスのインスタンス- フォント リクエストの結果を受け取るコールバック
- スレッド上のフォントを取得するハンドラ <ph type="x-smartling-placeholder">
- アプリケーションの
次のサンプルコードは、ダウンロード可能なフォントのプロセス全体を示しています。
Kotlin
val request = FontRequest( "com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs ) val callback = object : FontsContract.FontRequestCallback() { override fun onTypefaceRetrieved(typeface: Typeface) { // Your code to use the font goes here. ... } override fun onTypefaceRequestFailed(reason: Int) { // Your code to deal with the failure goes here. ... } } FontsContract.requestFonts(context, request, handler, null, callback)
Java
FontRequest request = new FontRequest("com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs); FontsContract.FontRequestCallback callback = new FontsContract.FontRequestCallback() { @Override public void onTypefaceRetrieved(Typeface typeface) { // Your code to use the font goes here. ... } @Override public void onTypefaceRequestFailed(int reason) { // Your code to deal with the failure goes here. ... } }; FontsContract.requestFonts(context, request, handler, null, callback);
フォント プロバイダからフォントをダウンロードする方法について詳しくは、 ダウンロード可能なフォント サンプルアプリです。
AndroidX Core でダウンロード可能フォントを使用する
AndroidX Core は、Android 搭載デバイスで「ダウンロード可能フォント」機能をサポートする
API バージョン 14 以降。「
androidx.core.provider
パッケージには、実装する FontsContractCompat
クラスと FontRequest
クラスが含まれます。
下位互換性のあるダウンロード可能フォント機能のサポートも追加されました。AndroidX クラスには、以下のメソッドが含まれます。
フレームワークのメソッドとほぼ同じです。フォントをダウンロードするプロセスは、
(このページのこのセクションで
プログラムからダウンロード可能なフォントを使用するをご覧ください。
AndroidX を使用してフォントをダウンロードするには、FontsContractCompat
と
androidx.core.provider
パッケージの FontRequest
クラス。作成
これらのクラスのインスタンスを
FontsContract
、
android.graphics.fonts.FontRequest
フレームワーク クラス。
AndroidX Core の依存関係を追加する
FontsContractCompat
クラスと FontRequest
クラスを使用するには、次のように変更する必要があります。
アプリ プロジェクトのクラスパス依存関係を開発環境内で修正する必要があります。
AndroidX Core をアプリ プロジェクトに追加するには、アプリのプロジェクトに次の依存関係を追加します。
build.gradle
ファイル:
Groovy
dependencies { ... implementation "androidx.core:core-ktx:2.2.0" }
Kotlin
dependencies { ... implementation("androidx.core:core-ktx:2.2.0") }
ダウンロード可能なフォントを XML のリソースとして使用する
Android 8.0(API レベル 26)と AndroidX Core では、 XML レイアウトのリソースとしてカスタム フォントを使用する。つまり、フォントを 作成します。テーマ全体にカスタム フォントを定義すると、 太字、中、薄など複数の太さとスタイルを指定できます。
res/font
フォルダに新しい XML ファイルを作成します。<font-family>
ルート要素を追加し、フォント関連の属性を次のように設定します。 次のサンプル XML ファイルに示します。- レイアウト XML ファイルで
@font/font_file_name
としてファイルを参照します。また、 使用getFont()
メソッドを使用して、ファイルをプログラムから取得できます。たとえば、getFont(R.font.font_file_name)
。
<?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="example font" android:fontProviderCerts="@array/certs"> </font-family>
マニフェストでフォントを事前に宣言する
レイアウトのインフレーションとリソースの取得は同期タスクです。デフォルトでは、最初の試行は フォントを取得すると、フォント プロバイダへのリクエストがトリガーされ、 あります。この遅延を回避するには、取得する必要があるフォントをマニフェストで事前に宣言します。 フォントがプロバイダから取得されると、すぐに使用できるようになります。if フォント 取得に時間がかかる場合、システムは取得プロセスを中止し、デフォルトの あります。
マニフェストでフォントを事前に宣言する手順は次のとおりです。
res/values/arrays.xml
にリソース配列を作成し、使用するフォントを宣言する 選択します。meta-data
タグを使用して、マニフェストでリソース配列を宣言します。
res/values/arrays.xml <?xml version="1.0" encoding="utf-8"?> <resources> <array name="preloaded_fonts"> <item>@font/font1</item> <item>@font/font2</item> </array> </resources>
<meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />
証明書を追加
フォント プロバイダがプリインストールされていない場合、または AndroidX Core ライブラリを使用している場合は、 フォント プロバイダの署名に使用されている証明書。システムは証明書を使用して、 フォント プロバイダの ID を指定します。
<ph type="x-smartling-placeholder">証明書を追加するには、次の手順に従います。
- 証明書の詳細を含む文字列配列を作成します。証明書の詳細については、 詳しくは、フォント プロバイダのドキュメントをご覧ください。
fontProviderCerts
属性を配列に設定します。
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="certs"> <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item> </string-array> </resources>
android:fontProviderCerts="@array/certs"
Compose のダウンロード可能なフォント
開始まであと Compose 1.2-alpha07 Compose アプリで Downloadable Fonts API を使用して、 Google Fonts を非同期で使用して、アプリで使用できるようにします。対象 詳細については、 Compose のダウンロード可能フォントのドキュメントをご覧ください。