// // UIFont.swift // CoreDataStack // // Created by sxiaojian on 2021/1/28. // import UIKit extension UIFont { // refs: https://stackoverflow.com/questions/26371024/limit-supported-dynamic-type-font-sizes static func preferredFont(withTextStyle textStyle: UIFont.TextStyle, maxSize: CGFloat) -> UIFont { // Get the descriptor let fontDescriptor = UIFontDescriptor.preferredFontDescriptor(withTextStyle: textStyle) // Return a font with the minimum size return UIFont(descriptor: fontDescriptor, size: min(fontDescriptor.pointSize, maxSize)) } public static func preferredMonospacedFont(withTextStyle textStyle: UIFont.TextStyle, compatibleWith traitCollection: UITraitCollection? = nil) -> UIFont { let fontDescription = UIFontDescriptor.preferredFontDescriptor(withTextStyle: textStyle).addingAttributes([ UIFontDescriptor.AttributeName.featureSettings: [ [ UIFontDescriptor.FeatureKey.featureIdentifier: kNumberSpacingType, UIFontDescriptor.FeatureKey.typeIdentifier: kMonospacedNumbersSelector ] ] ]) return UIFontMetrics(forTextStyle: textStyle).scaledFont(for: UIFont(descriptor: fontDescription, size: 0), compatibleWith: traitCollection) } }