From 34dee244c49935b834148f8de170867a9d848d8a Mon Sep 17 00:00:00 2001 From: Peter Abbondanzo Date: Tue, 20 Oct 2026 11:01:50 -0700 Subject: [PATCH] Set display density on prepared text layout paint (#59213) Summary: Pull Request resolved: https://github.com/react/react-native/pull/59213 When prepared text layout is enabled, PreparedLayoutTextView draws the cached Layout directly. That Layout is built with a fresh TextPaint that never received the display density, so custom decoration drawing that scales with paint.density rendered wrong: the DOUBLE underline/linethrough gap (thickness + 2dp) collapsed to zero and the two strokes merged into one solid band. Changelog: [Android][Fixed] - Fix double text decorations rendering as a solid band when prepared text layout is enabled Differential Revision: D126198343 --- .../main/java/com/facebook/react/views/text/TextLayoutManager.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt index de92c1ae230d..f5fb94d9bbae 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt @@ -1107,6 +1107,7 @@ internal object TextLayoutManager { fontWeightAdjustment: Int, ): TextPaint { val paint = TextPaint(TextPaint.ANTI_ALIAS_FLAG) + paint.density = DisplayMetricsHolder.getScreenDisplayMetrics().density updateTextPaint(paint, baseTextAttributes, assets, fontWeightAdjustment) return paint }