Swift 98.3%
Shell 1.7%
1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2// KAFonts.swift — les polices OFFICIELLES des sites du Groupe KA (tokens.css) :3// display Space Grotesk · micro-étiquettes JetBrains Mono (embarquées, OFL).4// Le corps de texte reste SF (équivalent d'Inter côté macOS).5// Spec : app iOS KA (~/Desktop/KA/KA/Design/KAFonts.swift).6import SwiftUI7import CoreText89enum KAFont {10 /// Enregistre les TTF embarquées dans le bundle SPM — à appeler UNE fois11 /// au démarrage (avant le premier rendu SwiftUI).12 static func register() {13 for name in ["SpaceGrotesk-Regular", "SpaceGrotesk-Medium", "SpaceGrotesk-Bold",14 "JetBrainsMono-Regular", "JetBrainsMono-Bold"] {15 guard let url = Bundle.module.url(forResource: name, withExtension: "ttf",16 subdirectory: "Fonts") else { continue }17 CTFontManagerRegisterFontsForURL(url as CFURL, .process, nil)18 }19 }2021 /// Display « Space Grotesk » — titres, wordmarks, chiffres héros22 static func display(_ size: CGFloat, _ weight: Font.Weight = .bold) -> Font {23 switch weight {24 case .bold, .heavy, .black: return .custom("SpaceGrotesk-Bold", size: size)25 case .medium, .semibold: return .custom("SpaceGrotesk-Medium", size: size)26 default: return .custom("SpaceGrotesk-Regular", size: size)27 }28 }2930 /// Micro-étiquettes « JetBrains Mono » — kickers, compteurs, puces31 static func mono(_ size: CGFloat, bold: Bool = true) -> Font {32 .custom(bold ? "JetBrainsMono-Bold" : "JetBrainsMono-Regular", size: size)33 }34}35