Accessing iOS & Android accessibility system font scale values in Unity

In a project recently I needed to find the system font size a user had set in their system preferences, on both Android and iOS devices.

unity
ios
android
accessibility

Published 3 years ago

Finding the font scale value on iOS

This refers to the system value found on an iOS device by going to: Settings > Accessibility > Display & Text Size > Larger Text.

With iOS it took a bit of time to really find how it was set. I discovered preferredContentSizeCategory in the Apple developer documentation, and with a little bit of Objective C and creating an iOS Unity plugin, managed to return values we needed.

It returns constants on what the user has set in their system preferences, which will then allow you to set an appropriate scale.

Here's the full list of constants I found.

UICTContentSizeCategoryXS UICTContentSizeCategoryS UICTContentSizeCategoryM UICTContentSizeCategoryL UICTContentSizeCategoryXL UICTContentSizeCategoryXXL UICTContentSizeCategoryXXXL // (This is larger than UICTContentSizeCategoryXXXL) // and is when the "Larger Accessibility Sizes" button is toggled UICTContentSizeCategoryAccessibilityM UICTContentSizeCategoryAccessibilityL UICTContentSizeCategoryAccessibilityXL UICTContentSizeCategoryAccessibilityXXL UICTContentSizeCategoryAccessibilityXXXL

Finding the font scale value in Android

This refers to the Android system font size value.

For Android, there is something similar but it provided an actual scale value we could utilise as opposed to constants like in iOS.

Reading the documentation I was able to find fontScale which helped to provide a value back into Unity with another custom plugin.