Skip to main content
Question

Font are downloaded although they are available

  • January 26, 2026
  • 0 replies
  • 21 views

Forum|alt.badge.img

I'm using custom fonts in my iOS app. They're provided via a Design System Swift Package and registered programmatically using `CTFontManagerRegisterFontsForURL`:
 

private static func registerFonts() {
guard let fontURLs = Bundle.module.urls(forResourcesWithExtension: "ttf", subdirectory: nil) else {
return
}

for url in fontURLs {
var error: Unmanaged<CFError>?
let success = CTFontManagerRegisterFontsForURL(
url as CFURL,
.process,
&error
)
// ... error handling
}
}

The fonts are registered at app launch before Revenue Cat Paywall is displayed. However, when the Paywall tries to use these fonts, the SDK appears to not detect that they're already registered and attempts to download them from the Revenue Cat CDN, resulting in this error:

GSFont: "NewSpiritTRIAL-Bold" already exists.
ERROR: 😿‼️ Error installing font with url: 'https://fonts.pawwalls.com/1356886_2e523ecc_084cd089f3d2e468f0b8.ttf': Font registration error: Font registration was unsuccessful.

Questions:
1. Does Revenue Cat SDK only detect fonts registered via `UIAppFonts` in Info.plist, or should it also detect fonts registered programmatically via `CTFontManagerRegisterFontsForURL`?
2. Is this a known limitation, or should I move the fonts to the main App target and register them via Info.plist instead?
3. Is there a way to tell Revenue Cat SDK that fonts are already available, or to prevent it from attempting to download fonts that match names already registered?

Env
- Revenue Cat SDK: purchases-hybrid-common 17.26.1
- Revenue Cat UI: purchases-ios-spm (latest)
- iOS: 26.0
- Font registration: Programmatic via `CTFontManagerRegisterFontsForURL` with `.process` scope

Any guidance would be appreciated. Thanks!