Mastering how text grows on Android This is no longer a minor issue: since the system incorporates non-linear scaling, small sizes increase more than large ones, keeping the interface usable and without surprises. If you also combine accessibility settings like bold, outline, color correction, inversion, or extra dimming, you can adapt your phone to your vision and every context without any hassle.
This article brings together Everything you need as a user and as a developerWhere to change font and display sizes, what happens with dark mode and inversion, how to enable outlined text, what limitations Wear OS imposes, and the implementation guidelines for accessibility compliance (WCAG 1.4.4) using sp, flexible layouts, and scrollable views. You'll also see how to avoid common mistakes (such as locking system scaling) and, if you're into customization, What options do you have for changing the font? on different layers of Android without complicating things.
What does the non-linear scaling of sources mean?
In recent versions, Android applies a non-linear scaleSmall texts grow proportionally more than large headings when the user increases the preferred size (up to 200% or more, depending on the version). Thanks to this, Improves the readability of paragraphs, labels, and body text without disrupting compositions with huge headings or causing overflows.
This approach is key for small screens or dense designs because it reduces overlaps and truncation. However, there are cases where growth is limited by space and usability (as in Wear OS), and certain styles above 20 sp stop scaling to maintain clarity.
Quick access and initial setup
Android places several accessibility controls in the quick settings This allows you to change the text size or content on the fly to improve readability. This is perfect if you alternate between indoor and outdoor use, or if you prefer larger font only at certain times.
Also, during the first boot setup wizard You can set your preferred size, contrast, and text visibility, ensuring a comfortable initial experience from the very beginning without having to navigate through menus later.
How to change font size and display size
Android separates font size from interface size (icons, buttons, menus). To adjust the system font, Open Settings and search Font sizeMove the slider left or right for your preferred size. Some apps may not respect this setting.
If you want to enlarge or reduce the interface elements, go to Display size and moves its slider. By varying either of the two, you will see a preview of the changes; if you're not convinced, tap the option to Hola and return to the device's original settings.
Bold text and outlined text

You can improve visibility by activating Bold text From Settings > Accessibility > Screen size and text. This change doesn't apply to 100% of apps, but it does to most. reinforces the thickness of the strokes and makes reading easier, especially in titles and menus.
El text with outline Draw a border around the letters to separate them from the background. Requires Android 16 or later; if you're using Android 15 or earlier, the alternative is... high contrast text, which adds a thin border (white on black or black on white) to improve contrast.
Color correction, grayscale, and color inversion
For color blindness or other needs, there is the color correction and grayscale In Settings > Accessibility > Color and Motion > Color Correction, turn on the option and choose the mode that suits your needs. Some devices have a intensity control to fine-tune the result, although it is not available on all models.
La color inversion It inverts the screen's color palette and affects everything, including videos and images. Activate it in Settings > Accessibility > Color and motion > Invert colors. If you use a dark theme, there are some nuances: on Android 10 and higher, if an app doesn't support dark mode, you can resort to inverting the colors; on Android 9 and earlier, Dark theme and inversion cannot be used at the same timeActivating one deactivates the other.
Movement, cursor, and brightness: a rest for the eyes
If the transitions distract you, turn off animations from Settings > Accessibility > Color and Motion using the switch Remove animationsBy eliminating unnecessary movement, navigation becomes more straightforward and helps to focus on the content.
In Cursor and Touchpad Accessibility you can increase pointer size with a slider. If you use a mouse or touchpad on your Android, seeing a larger cursor makes it easier to locate and follow on the screen.
La Extra attenuation It lowers the brightness even further below the usual minimum to ease eye strain in dark environments. On Pixel 10 and later, this feature is integrated into the brightness control in the quick settings panel; on Pixel 9 and earlier, Activate it from Accessibility following the steps in the menu.
Preview, reset, and other useful options
When you adjust the font or display size, Android shows a preview window to check the impact on icons and text instantly; it's very useful for finding the exact spot without leaving the flow.
If you want to return to the original state, go to Settings > Display > Screen size and text and tap Reset settings > ResetThis shortcut saves you time if you've made too many changes or if you share the device.
Update before testing: up-to-date software
Before you start messing with the settings, it's a good idea to make sure your phone is up to date. Go to Settings > Software Update > Download and Install and follow the on-screen instructions. Many accessibility features depend on the system version or recent patches.
Official support and response times
Google's assistance team for people with disabilities offers specialized helpPlease note that they are receiving a high volume of inquiries and may take longer than usual to respond; if your problem is related to your YouTube channel, Go to Creator Support to streamline management.
Typographic scale in Material 3 and limits in Wear OS
The expressive nonlinear scale of Material 3 combines 21 styles with defined roles (display, title, label, body, numerals, and arc text), using Roboto Flex by default for cohesive typography. In Wear OS, due to space limitations, there are strict scaling rules with the threshold of 20 sp.
- Display: Display styles do not scale with user preference. At sizes of 20 sp or more, scaling is disabled.
- Title: Titles scale with preference, except when they reach 20 sp or more, where scaling is not permitted. screen limitations.
- Label: LabelMedium and LabelSmall scale; LabelLarge does not. Starting from 20 sp, there is no scaling.
- Body: Body styles are scaled according to user preference, respecting the limit when they exceed 20 sp.
- Numeral: numeric styles they don't climbTabular/mono spacing is recommended when numbers change with movement to avoid visual "jumps".
- Arc (curved text): They scale with user preference and it's worth using tabular/mono spacing to maintain alignment on curved surfaces.
These standards ensure that, even with large text, the interface remains legible, without breakages due to overgrowth, something critical in the wrist.
Options to change the system (user) font
"Pure" Android doesn't always include a system font picker, but you can use it. launchers like Lawnchair 2 To apply global fonts: install it from the Play Store, grant permissions, and go to Theme > Fonts > Global Fonts. It's a simple way to give your system a fresh look without root access.
Want more variety? Download fonts (OTF/TTF) from trusted repositories, unzip them, and then, directly in the launcher, add the families From Theme > Fonts to apply them. In interfaces like MIUI (Xiaomi), the Themes app allows you to change the font; if you don't see the option, temporarily change the region to Hong Kong or India in Settings > Additional settings > Region, select a font, Download it and apply itand then you can return to your region.
Keep in mind that these changes affect system settings, contacts, and popular apps, while web pages within the browser are not usually affected. alter its typography through this route.
Adjusting fonts on iPhone: size, bold, and font installation
If you use an iPhone you can also Adjust system size and bold From Settings > Display & Brightness > Text Size, you can enable Bold Text. You don't need any extra apps to improve readability in compatible titles and menus.
To install fonts on iOS (for use in apps, not to replace the system font), in iOS 13 or later you can use Adobe Creative Cloud or apps like Font Diner. Then manage fonts from Settings > General > Fonts and use them in compatible apps like Pages, Keynote, or Numbers.
Developer guide: SP vs DP, layouts, and WCAG compliance
WCAG 1.4.4 requires that information remain available even when increase text sizeIn Android, the golden rule is to use sp for text and dp for everything else. With sp you respect the user's preference; with dp you block scaling, which can impair accessibility even if it stabilizes the design.
A classic: setTextSize uses sp by default When changing sizes by code, if you need to force a different unit, use the united version by specifying TypedValue.COMPLEX_UNIT_DIP (with appropriate criteria). Avoid hard-coded sizes and test the product with various size preferences and with accessibility enabled.
Prepare the view for scalable text
When text grows, it can easily overflow. Wrap your screens with scrollview If there's static text that can expand: this way the content will remain available even if the height exceeds the screen. Note: don't put a RecyclerView inside a ScrollView; let the RecyclerView manage your own travel.
Navigation elements such as bottom bars, tabs, or toolbars should be at the same level as the ScrollView (not inside) to avoid restricting the viewport. Use a single scrollable view per screen to prevent scrolling conflicts.
ConstraintLayout, RelativeLayout and LinearLayout
ConstraintLayout is your ally: define guidelines and avoid setting rigid heights/widths; let the TextView grow with the content (width 0dp between start/end constraints, height wrap_content). This minimizes unwanted truncation and ellipses.
En RelativeLayoutBe explicit about sibling relationships (start/end/top/bottom) to keep components visible even if the text gets longer. Avoid dependency chains that prevent containers from growing.
With LinearLayoutIf you're using ScrollView, don't set `height_match_parent` to the container or its direct children. If you need a default height, use android:minHeight so that it can expand as the text increases.
Widgets, spans, and dynamic content
For partial changes (e.g., an inline link), use SpannableStringBuilder and spans like AbsoluteSizeSpan, avoiding rigid sizes and respecting scaling. Keep Toolbar titles concise; if they change dynamically, consider solutions that Don't rely on Toolbar if the design cannot withstand large growths.
In the bottom navigation, use clear iconography and content descriptions appropriate so that the label does not overlap. In tabs (Tabs, ViewPager, TabList), enable scrolling if necessary and do not limit the height of the control: the goal is that, with large text, everything remains actionable.
Avoid blocking user preference
Some teams force fontScale = 1.0 to "neutralize" the system preference. It's a measure very invasive that disables what the user has chosen for accessibility; if you decide to apply it, document why and offer a internal size control within the app.
// Kotlin — normalizar la escala no lineal del sistema (uso sensible)
fun normalizeFontScale(context: Context) {
val config = context.resources.configuration
config.fontScale = 1.0f
val metrics = context.resources.displayMetrics
metrics.scaledDensity = config.fontScale * metrics.density
@Suppress("DEPRECATION")
context.resources.updateConfiguration(config, metrics)
}
Equivalent in Java if you decide to adjust the non-linear scale when starting the first activity (last resort due to its impact on accessibility): resets fontScale to 1.0 and recalculate scaledDensity with the current density.
// Java — ajustar fontScale (última opción)
public void adjustFontScale(Configuration configuration){
configuration.fontScale = 1.0f;
DisplayMetrics metrics = getResources().getDisplayMetrics();
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.fontScale * metrics.density;
getBaseContext().getResources().updateConfiguration(configuration, metrics);
}
Before getting to that, design with a good non-linear typographic scaleFlexible containers and real-world testing with maximum text preference. This way you comply with WCAG, preserve design intent, and avoid "patches" that reduce inclusivity.
What about cookies and privacy?
While browsing, you will find cookie notices. strictly necessary They are used to make the service work (transmit communications, manage requests, or stop web attacks). To use certain sites, You will have to accept them yes or yes, since they guarantee stability and security.
Extra tips and helpful reminders
On some terminals you can adjust high contrast To reinforce text edges (black line on white or white line on black). This helps distinguish letters on complex backgrounds, especially if the text with outline It is not available by system version.
If you work with Wear OS, remember the limits: above 20 sp scaling stops in various styles. Accepting this rule from the design stage will prevent the clock from losing legibility, and using tabular numbers on moving components will help. eliminates jumps annoying.
Finally, some changes (global bolding, outline, or color corrections) They do not apply to all appsIt assumes that support is a "best effort" from the system and each developer, so it's advisable to review your critical apps and adjust on a case-by-case basis.
If you use Android daily or develop for the platform, Understanding non-linear scalingThe size, bold, outline, color correction, inversion, movement, cursor, and extra fade sliders will let you fine-tune the details. And as a developer, respecting scripts, preparing scrollable views, following the Material 3 guidelines, and not blocking fontScale makes the difference between a broken interface and one that works. It fits perfectly to each person. Share this information and more people will know how to adjust non-linear scaling on Android.

