diff --git a/VDS/Typography/Typography.swift b/VDS/Typography/Typography.swift index 92ff5e9a..86629d91 100644 --- a/VDS/Typography/Typography.swift +++ b/VDS/Typography/Typography.swift @@ -262,17 +262,20 @@ extension TypographicalStyle { } extension TypographicalStyle { - public static func style(for fontName: String, size: CGFloat) -> TypographicalStyle { + public static func style(for fontName: String, size: CGFloat) -> TypographicalStyle? { //filter all styles by fontName let styles = allCases.filter{$0.fontFace.fontName == fontName }.sorted { lhs, rhs in lhs.pointSize < rhs.pointSize } - //if there are no styles then return defaultStyle - guard styles.count > 0 else { return defaultStyle } - styles.forEach{print("\($0.rawValue): \($0.pointSize)")} + + //if there are no styles then return nil + guard styles.count > 0 else { return nil } + //if there is an exact match on a style with this pointSize then return it if let style = styles.first(where: {$0.pointSize == size }) { return style + } else if let largerIndex = styles.firstIndex(where: { $0.pointSize > size}) { //find the closet one to pointSize return styles[max(largerIndex - 1, 0)] + } else { //return the last style return styles.last! }