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.

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.