// Auteur : Simon-Pierre Boucher — contact@spboucher.ai // KAFonts.swift — les polices OFFICIELLES des sites du Groupe KA (tokens.css) : // display Space Grotesk · micro-étiquettes JetBrains Mono (embarquées, OFL). // Le corps de texte reste SF (équivalent d'Inter côté macOS). // Spec : app iOS KA (~/Desktop/KA/KA/Design/KAFonts.swift). import SwiftUI import CoreText enum KAFont { /// Enregistre les TTF embarquées dans le bundle SPM — à appeler UNE fois /// au démarrage (avant le premier rendu SwiftUI). static func register() { for name in ["SpaceGrotesk-Regular", "SpaceGrotesk-Medium", "SpaceGrotesk-Bold", "JetBrainsMono-Regular", "JetBrainsMono-Bold"] { guard let url = Bundle.module.url(forResource: name, withExtension: "ttf", subdirectory: "Fonts") else { continue } CTFontManagerRegisterFontsForURL(url as CFURL, .process, nil) } } /// Display « Space Grotesk » — titres, wordmarks, chiffres héros static func display(_ size: CGFloat, _ weight: Font.Weight = .bold) -> Font { switch weight { case .bold, .heavy, .black: return .custom("SpaceGrotesk-Bold", size: size) case .medium, .semibold: return .custom("SpaceGrotesk-Medium", size: size) default: return .custom("SpaceGrotesk-Regular", size: size) } } /// Micro-étiquettes « JetBrains Mono » — kickers, compteurs, puces static func mono(_ size: CGFloat, bold: Bool = true) -> Font { .custom(bold ? "JetBrainsMono-Bold" : "JetBrainsMono-Regular", size: size) } }