Add font variation settings support to TextInput (#57805) - #57805
Open
evankatz14 wants to merge 2 commits into
Open
Add font variation settings support to TextInput (#57805)#57805evankatz14 wants to merge 2 commits into
evankatz14 wants to merge 2 commits into
Conversation
Summary: Add a `fontVariationSettings` text style prop and carry it through Fabric text attributes into Android text rendering. Android now deserializes the prop for `<Text>`, applies it to `Paint`, and includes it in text measurement cache identity because variable axes can affect layout. Preserve the distinction between an absent setting and an explicitly empty setting so nested text can inherit or clear the parent variation axes. Apply high-level font properties before low-level variation settings so explicit axes take precedence, matching CSS font realization order. Settings syntax is intentionally forwarded unchanged through common text attributes and validated only by the Android font variation parser. This avoids narrowing the grammar Android accepts. As a result, malformed child settings are outside the supported inheritance contract: they replace an inherited value before Android validation and are not guaranteed to fall back to the parent settings. Android also accepts `normal` and the React Native empty-string convention as explicit resets. Changelog: [Android][Added] - Add `fontVariationSettings` support for `<Text>` Differential Revision: D113580491 Reviewed By: Abbondanzo
|
@evankatz14 has exported this pull request. If you are a Meta employee, you can view the originating Diff in D113580493. |
evankatz14
added a commit
to evankatz14/react-native
that referenced
this pull request
Aug 3, 2026
Summary: Pull Request resolved: react#57805 Extend Android `TextInput` support for the existing `fontVariationSettings` text style prop. Fabric now forwards changes and resets through `AndroidTextInputProps`, and `ReactTextInputManager` applies the normalized value to the underlying `ReactEditText` paint after typeface updates. Using the `EditText` paint as the source of truth applies variable font axes consistently to placeholders, controlled values, and newly typed text. Equivalent `CustomStyleSpan`s are stripped while spans with different variation settings remain intact for attributed text ranges. As with `<Text>`, common text attributes forward settings syntax unchanged and Android remains the validation authority. This avoids narrowing Android-compatible grammar; malformed settings are outside the supported inheritance contract. Both `normal` and the React Native empty-string convention explicitly reset variation settings. Changelog: [Android][Added] - Add `fontVariationSettings` support for `TextInput` Reviewed By: Abbondanzo Differential Revision: D113580493
evankatz14
force-pushed
the
export-D113580493
branch
from
August 3, 2026 19:41
c45a919 to
dca86ce
Compare
|
Warning JavaScript API change detected This PR commits an update to
This change was flagged as: |
Summary: Pull Request resolved: react#57805 Extend Android `TextInput` support for the existing `fontVariationSettings` text style prop. Fabric now forwards changes and resets through `AndroidTextInputProps`, and `ReactTextInputManager` applies the normalized value to the underlying `ReactEditText` paint after typeface updates. Using the `EditText` paint as the source of truth applies variable font axes consistently to placeholders, controlled values, and newly typed text. Equivalent `CustomStyleSpan`s are stripped while spans with different variation settings remain intact for attributed text ranges. As with `<Text>`, common text attributes forward settings syntax unchanged and Android remains the validation authority. This avoids narrowing Android-compatible grammar; malformed settings are outside the supported inheritance contract. Both `normal` and the React Native empty-string convention explicitly reset variation settings. Changelog: [Android][Added] - Add `fontVariationSettings` support for `TextInput` Reviewed By: Abbondanzo Differential Revision: D113580493
evankatz14
force-pushed
the
export-D113580493
branch
from
August 4, 2026 14:47
dca86ce to
714bb5d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
Extend Android
TextInputsupport for the existingfontVariationSettingstext style prop. Fabric now forwards changes and resets throughAndroidTextInputProps, andReactTextInputManagerapplies the normalized value to the underlyingReactEditTextpaint after typeface updates.Using the
EditTextpaint as the source of truth applies variable font axes consistently to placeholders, controlled values, and newly typed text. EquivalentCustomStyleSpans are stripped while spans with different variation settings remain intact for attributed text ranges.As with
<Text>, common text attributes forward settings syntax unchanged and Android remains the validation authority. This avoids narrowing Android-compatible grammar; malformed settings are outside the supported inheritance contract. Bothnormaland the React Native empty-string convention explicitly reset variation settings.Changelog:
[Android][Added] - Add
fontVariationSettingssupport forTextInputReviewed By: Abbondanzo
Differential Revision: D113580493