From 64d9ca37774bdef9b33b1293ced129070e88eecd Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 10 Nov 2022 14:42:29 -0600 Subject: [PATCH] only return a font if a style is found Signed-off-by: Matt Bruce --- VDS/Typography/Typography.swift | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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! }