FioriThemeManager bundles the full font family and exposes it through Font extensions that integrate with SwiftUI’s Dynamic Type system.
If Font.registerFioriFonts() has not been called, all Font.fiori(...) APIs fall back to the system font automatically — your UI stays functional, but you lose the SAP 72 rendering.
Font weights
TheFont.FioriWeight type mirrors Font.Weight and adds an SAP 72-specific value:
| Weight | TTF file bundled |
|---|---|
.ultraLight | 72-Light |
.thin | 72-Light |
.light | 72-Light |
.regular | 72-Regular |
.medium | 72-Semibold |
.semibold | 72-Semibold |
.semiboldDuplex | 72-SemiboldDuplex |
.bold | 72-Bold |
.heavy | 72-Black |
.black | 72-Black |
72-Condensed, 72-CondensedBold) is selected by passing isCondensed: true.
Setup
Register fonts in AppDelegate
Call
Font.registerFioriFonts() as early as possible, before any SwiftUI view is initialized. AppDelegate.application(_:didFinishLaunchingWithOptions:) is the recommended location.Dynamic Type — Font.fiori(forTextStyle:)
UseFont.fiori(forTextStyle:) when you want the font size to scale with the user’s preferred text size setting. The font scales relative to the equivalent system text style.
Dynamic Type is the recommended approach for all body and label text. It ensures your app remains accessible to users who rely on larger or smaller text sizes.
FioriTextStyle sizes
The default (non-scaled) point sizes are:| Style | Default size |
|---|---|
.extraLargeTitle | 52 pt |
.extraLargeTitle2 | 48 pt |
.largeTitle | 34 pt |
.largeKPI | 48 pt |
.KPI | 36 pt |
.title1 | 28 pt |
.title2 | 22 pt |
.title3 | 20 pt |
.headline | 17 pt |
.body | 17 pt |
.callout | 16 pt |
.subheadline | 15 pt |
.footnote | 13 pt |
.caption1 | 12 pt |
.caption2 | 11 pt |
Examples
Fixed-size font — Font.fiori(fixedSize:)
UseFont.fiori(fixedSize:) when you need a font that does not scale with Dynamic Type — for example, in charts, diagrams, or custom-rendered elements where layout depends on exact dimensions.
Combining with Fiori colors
Pair SAP 72 fonts withColor.preferredColor for fully Fiori-compliant text styling: