Does SkipUI Text honor the Android system font-size setting (Dynamic Type / fontScale)?
Summary
In a SkipFuse app, SkipUI Text does not appear to change size when the Android system font-size setting ("Display → Font size", i.e. Settings.System.font_scale) changes. As a result, Dynamic Type modifiers such as dynamicTypeSize(_:) (and, I suspect, @ScaledMetric) have nothing to act on. I'd like to understand whether this is intentional before building on top of it.
Repro
- A simple screen with a few
Text(...).font(.title) rows.
- Set the system font scale and relaunch so it reflows:
adb shell settings put system font_scale 1.5
adb shell am force-stop <app-id>
- Launch and compare against
font_scale 1.0.
Observed: the text renders at the same size at 1.5 as at 1.0. A row with no modifier renders at the same size as a row with a Dynamic-Type cap applied.
Expected (iOS / typical Compose): Compose lays text out in sp, which normally scales with LocalDensity.fontScale, so the unconstrained text would grow at 1.5×.
Consequence
Because the base text never scales with the system setting, dynamicTypeSize(...) — which is a cap on Dynamic Type growth — is effectively a no-op on Android: there is no growth to clamp. (dynamicTypeSize(_:) is currently @available(*, unavailable) anyway; this is about whether implementing it would be meaningful.)
Questions
- Is the Compose density
fontScale intentionally pinned (e.g. the host Activity/Configuration forces fontScale = 1f) so that Skip apps ignore the system font-size setting — presumably to keep layouts stable, matching fixed iOS sizing?
- If so, is there a supported way to opt in to system font scaling, so the app can respect the user's accessibility font-size preference?
- Given the above, should
dynamicTypeSize(_:) stay @available(*, unavailable), or is honoring Dynamic Type on Android on the roadmap?
Environment
- skip-ui 1.55.0, skip-fuse-ui 1.16.0
- Android emulator, API 36 (Android 16)
Does SkipUI
Texthonor the Android system font-size setting (Dynamic Type /fontScale)?Summary
In a SkipFuse app, SkipUI
Textdoes not appear to change size when the Android system font-size setting ("Display → Font size", i.e.Settings.System.font_scale) changes. As a result, Dynamic Type modifiers such asdynamicTypeSize(_:)(and, I suspect,@ScaledMetric) have nothing to act on. I'd like to understand whether this is intentional before building on top of it.Repro
Text(...).font(.title)rows.font_scale 1.0.Observed: the text renders at the same size at
1.5as at1.0. A row with no modifier renders at the same size as a row with a Dynamic-Type cap applied.Expected (iOS / typical Compose): Compose lays text out in
sp, which normally scales withLocalDensity.fontScale, so the unconstrained text would grow at1.5×.Consequence
Because the base text never scales with the system setting,
dynamicTypeSize(...)— which is a cap on Dynamic Type growth — is effectively a no-op on Android: there is no growth to clamp. (dynamicTypeSize(_:)is currently@available(*, unavailable)anyway; this is about whether implementing it would be meaningful.)Questions
fontScaleintentionally pinned (e.g. the hostActivity/Configuration forcesfontScale = 1f) so that Skip apps ignore the system font-size setting — presumably to keep layouts stable, matching fixed iOS sizing?dynamicTypeSize(_:)stay@available(*, unavailable), or is honoring Dynamic Type on Android on the roadmap?Environment