# FontsContractCompat

Artifact: [androidx.core:core](https://developer.android.com/jetpack/androidx/releases/core) [View Source](https://cs.android.com/search?q=file:androidx/core/provider/FontsContractCompat.java+class:androidx.core.provider.FontsContractCompat) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

*** ** * ** ***


```
class FontsContractCompat
```

<br />

*** ** * ** ***

Utility class to deal with Font ContentProviders.

## Summary

| ### Nested types |
|---|
| `class https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.Columns : https://developer.android.com/reference/android/provider/BaseColumns.html` Defines the constants used in a response from a Font Provider. |
| `class https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontFamilyResult` Object returned from `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat#fetchFonts(android.content.Context,android.os.CancellationSignal,androidx.core.provider.FontRequest)`. |
| `class https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontInfo` Object represent a font entry in the family returned from `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat#fetchFonts(android.content.Context,android.os.CancellationSignal,androidx.core.provider.FontRequest)`. |
| `class https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontRequestCallback` Interface used to receive asynchronously fetched typefaces. |

| ### Public functions |
|---|---|
| `java-static https://developer.android.com/reference/android/graphics/Typeface.html?` | `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat#buildTypeface(android.content.Context,android.os.CancellationSignal,androidx.core.provider.FontsContractCompat.FontInfo[])( context: https://developer.android.com/reference/android/content/Context.html, cancellationSignal: https://developer.android.com/reference/android/os/CancellationSignal.html?, fonts: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontInfo!> )` Build a Typeface from an array of `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontInfo` Results that are marked as not ready will be skipped. |
| `java-static https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontFamilyResult` | `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat#fetchFonts(android.content.Context,android.os.CancellationSignal,androidx.core.provider.FontRequest)( context: https://developer.android.com/reference/android/content/Context.html, cancellationSignal: https://developer.android.com/reference/android/os/CancellationSignal.html?, request: https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest )` Fetch fonts given a font request. |
| `java-static https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `[requestFont](https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat#requestFont(android.content.Context,androidx.core.provider.FontRequest,androidx.core.provider.FontsContractCompat.FontRequestCallback,android.os.Handler))( context: https://developer.android.com/reference/android/content/Context.html, request: https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest, callback: https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontRequestCallback, handler: https://developer.android.com/reference/android/os/Handler.html )` **This function is deprecated.** due to the non-standard pattern of taking a handler for a non-UI thread - leading to both easily passing an incorrect handler and requiring all callers spin up an extra thread. <br /> |
| `java-static https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat#requestFont(android.content.Context,androidx.core.provider.FontRequest,int,java.util.concurrent.Executor,java.util.concurrent.Executor,androidx.core.provider.FontsContractCompat.FontRequestCallback)( context: https://developer.android.com/reference/android/content/Context.html, request: https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest, style: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, loadingExecutor: https://developer.android.com/reference/java/util/concurrent/Executor.html?, callbackExecutor: https://developer.android.com/reference/java/util/concurrent/Executor.html, callback: https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontRequestCallback )` Request a font async as specified with `https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest` Loading may take several seconds, and the `loadingExecutor` passed should be available to run blocking requests for several seconds. |
| `java-static https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat#requestFontWithFallbackChain(android.content.Context,java.util.List<androidx.core.provider.FontRequest>,int,java.util.concurrent.Executor,java.util.concurrent.Executor,androidx.core.provider.FontsContractCompat.FontRequestCallback)( context: https://developer.android.com/reference/android/content/Context.html, requests: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest!>, style: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, loadingExecutor: https://developer.android.com/reference/java/util/concurrent/Executor.html?, callbackExecutor: https://developer.android.com/reference/java/util/concurrent/Executor.html, callback: https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontRequestCallback )` Request a font async as specified with `https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest` Loading may take several seconds, and the `loadingExecutor` passed should be available to run blocking requests for several seconds. |

## Public functions

### buildTypeface

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
java-static fun buildTypeface(
    context: Context,
    cancellationSignal: CancellationSignal?,
    fonts: Array<FontsContractCompat.FontInfo!>
): Typeface?
```

Build a Typeface from an array of `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontInfo` Results that are marked as not ready will be skipped.

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html` | A `https://developer.android.com/reference/android/content/Context.html` that will be used to fetch the font contents. |
| `cancellationSignal: https://developer.android.com/reference/android/os/CancellationSignal.html?` | A signal to cancel the operation in progress, or null if none. If the operation is canceled, then `https://developer.android.com/reference/android/os/OperationCanceledException.html` will be thrown. |
| `fonts: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontInfo!>` | An array of `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontInfo` to be used to create a Typeface. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/graphics/Typeface.html?` | A Typeface object. Returns null if typeface creation fails. |

### fetchFonts

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
java-static fun fetchFonts(
    context: Context,
    cancellationSignal: CancellationSignal?,
    request: FontRequest
): FontsContractCompat.FontFamilyResult
```

Fetch fonts given a font request.

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html` | A `https://developer.android.com/reference/android/content/Context.html` to be used for fetching fonts. |
| `cancellationSignal: https://developer.android.com/reference/android/os/CancellationSignal.html?` | A signal to cancel the operation in progress, or null if none. If the operation is canceled, then `https://developer.android.com/reference/android/os/OperationCanceledException.html` will be thrown when the query is executed. |
| `request: https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest` | A `https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest` object that identifies the provider and query for the request. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontFamilyResult` | `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontFamilyResult` |

| Throws |
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException.html` | If requested package or authority was not found in the system. |

### requestFont

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0) Deprecated in [1.15.0](https://developer.android.com/jetpack/androidx/releases/core#1.15.0)

```
java-static fun [requestFont](https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat#requestFont(android.content.Context,androidx.core.provider.FontRequest,androidx.core.provider.FontsContractCompat.FontRequestCallback,android.os.Handler))(
    context: Context,
    request: FontRequest,
    callback: FontsContractCompat.FontRequestCallback,
    handler: Handler
): Unit
```

> [!CAUTION]
> **This function is deprecated.**   
>
> due to the non-standard pattern of taking a handler for a non-UI thread - leading to both easily passing an incorrect handler and requiring all callers spin up an extra thread.

Create a typeface object given a font request. The font will be asynchronously fetched, therefore the result is delivered to the given callback. See `https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest`. Only one of the methods in callback will be invoked, depending on whether the request succeeds or fails. These calls will happen on the main thread.

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html` | A context to be used for fetching from font provider. |
| `request: https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest` | A `https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest` object that identifies the provider and query for the request. May not be null. |
| `callback: https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontRequestCallback` | A callback that will be triggered when results are obtained. May not be null. |
| `handler: https://developer.android.com/reference/android/os/Handler.html` | A handler for running font fetch tasks on. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat#requestFont(android.content.Context,androidx.core.provider.FontRequest,int,java.util.concurrent.Executor,java.util.concurrent.Executor,androidx.core.provider.FontsContractCompat.FontRequestCallback)` |   |

### requestFont

Added in [1.15.0](https://developer.android.com/jetpack/androidx/releases/core#1.15.0)

```
java-static fun requestFont(
    context: Context,
    request: FontRequest,
    style: Int,
    loadingExecutor: Executor?,
    callbackExecutor: Executor,
    callback: FontsContractCompat.FontRequestCallback
): Unit
```

Request a font async as specified with `https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest` Loading may take several seconds, and the `loadingExecutor` passed should be available to run blocking requests for several seconds. Results will be returned via `callbackExecutor`.

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html` | A context to be used for fetching from font provider |
| `request: https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest` | A `https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest` object that identifies the provider and query for the request. |
| `style: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | Typeface Style such as `https://developer.android.com/reference/android/graphics/Typeface.html#NORMAL`, `https://developer.android.com/reference/android/graphics/Typeface.html#BOLD``https://developer.android.com/reference/android/graphics/Typeface.html#ITALIC`, `https://developer.android.com/reference/android/graphics/Typeface.html#BOLD_ITALIC`. Value is one of the following: - `Typeface.NORMAL` - `Typeface.BOLD` - `Typeface.ITALIC` - `Typeface.BOLD_ITALIC` <br /> |
| `loadingExecutor: https://developer.android.com/reference/java/util/concurrent/Executor.html?` | executor to load font on. Loading may take several _seconds_. If `null`, a default executor shared with other null-requests will be used. |
| `callbackExecutor: https://developer.android.com/reference/java/util/concurrent/Executor.html` | Used to dispatch callback |
| `callback: https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontRequestCallback` | A callback that will be triggered when results are obtained. |

### requestFontWithFallbackChain

Added in [1.15.0](https://developer.android.com/jetpack/androidx/releases/core#1.15.0)

```
java-static fun requestFontWithFallbackChain(
    context: Context,
    requests: (Mutable)List<FontRequest!>,
    style: Int,
    loadingExecutor: Executor?,
    callbackExecutor: Executor,
    callback: FontsContractCompat.FontRequestCallback
): Unit
```

Request a font async as specified with `https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest` Loading may take several seconds, and the `loadingExecutor` passed should be available to run blocking requests for several seconds. Results will be returned via `callbackExecutor`.

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html` | A context to be used for fetching from font provider |
| `requests: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest!>` | An array of `https://developer.android.com/reference/kotlin/androidx/core/provider/FontRequest` objects that identify the provider and query for the request, followed by any fallbacks. Fallbacks are used in the order specified. Note that the performance implications of font fallback scale with the number of fonts involved, so the length of this parameter should be kept to a minimum; we recommend no more than 2 (that is, the primary font and a single downloadable custom fallback). |
| `style: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | Typeface Style such as `https://developer.android.com/reference/android/graphics/Typeface.html#NORMAL`, `https://developer.android.com/reference/android/graphics/Typeface.html#BOLD``https://developer.android.com/reference/android/graphics/Typeface.html#ITALIC`, `https://developer.android.com/reference/android/graphics/Typeface.html#BOLD_ITALIC`. Value is one of the following: - `Typeface.NORMAL` - `Typeface.BOLD` - `Typeface.ITALIC` - `Typeface.BOLD_ITALIC` <br /> |
| `loadingExecutor: https://developer.android.com/reference/java/util/concurrent/Executor.html?` | executor to load font on. Loading may take several _seconds_. If `null`, a default executor shared with other null-requests will be used. |
| `callbackExecutor: https://developer.android.com/reference/java/util/concurrent/Executor.html` | Used to dispatch callback |
| `callback: https://developer.android.com/reference/kotlin/androidx/core/provider/FontsContractCompat.FontRequestCallback` | A callback that will be triggered when results are obtained. |