diff options
author | Danny Lin <danny@kdrag0n.dev> | 2022-04-10 23:59:12 -0700 |
---|---|---|
committer | alk3pInjection <webmaster@raspii.tech> | 2022-05-07 00:20:58 +0800 |
commit | c5a81e7adda1acced39c23fca2117acf065b39ff (patch) | |
tree | ca5bc0e56e4104c01f40d306779c60deb0fe4df4 | |
parent | e4fa94a25e4cd63e6e70bf537c0f8e65388649fb (diff) |
fonts: Respect font scale for dynamic tracking calculations
This fixes clipped/truncated text in some apps, such as buttons in Shop.
Change-Id: I9a34bcb4faff822ce0dcb66a50f96083126d1b5f
-rw-r--r-- | core/java/com/android/internal/graphics/fonts/DynamicMetrics.java | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/core/java/com/android/internal/graphics/fonts/DynamicMetrics.java b/core/java/com/android/internal/graphics/fonts/DynamicMetrics.java index a3adcdfc0b63..5d723fd5f364 100644 --- a/core/java/com/android/internal/graphics/fonts/DynamicMetrics.java +++ b/core/java/com/android/internal/graphics/fonts/DynamicMetrics.java @@ -17,7 +17,9 @@ package com.android.internal.graphics.fonts; import android.app.ActivityThread; +import android.content.ComponentCallbacks; import android.content.Context; +import android.content.res.Configuration; import android.graphics.Typeface; public class DynamicMetrics { @@ -99,6 +101,16 @@ public class DynamicMetrics { /* 32.0dp */ -0.02160486150154747f, }; + private static final ComponentCallbacks callbacks = new ComponentCallbacks() { + @Override + public void onConfigurationChanged(Configuration newConfig) { + sDensity = getDensity(); + } + + @Override + public void onLowMemory() {} + }; + private DynamicMetrics() {} public static float calcTracking(float sizePx) { @@ -108,7 +120,8 @@ public class DynamicMetrics { return 0.0f; } - sDensity = context.getResources().getDisplayMetrics().density; + sDensity = getDensity(); + context.registerComponentCallbacks(callbacks); } // Pixels -> sp @@ -126,4 +139,13 @@ public class DynamicMetrics { public static boolean shouldModifyFont(Typeface typeface) { return typeface == null || typeface.isSystemFont(); } + + private static float getDensity() { + Context context = ActivityThread.currentApplication(); + if (context == null) { + return 1.0f; + } + + return context.getResources().getDisplayMetrics().scaledDensity; + } } |