From ec4903008188b6a51175870b617b85b06caf032f Mon Sep 17 00:00:00 2001 From: Nate Weaver Date: Thu, 30 Apr 2020 02:34:45 -0500 Subject: [PATCH] Consolidate some repeated code --- .../NSAttributedString+NetNewsWire.swift | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/Shared/Extensions/NSAttributedString+NetNewsWire.swift b/Shared/Extensions/NSAttributedString+NetNewsWire.swift index f1555e0b0..d9b7e6f2a 100644 --- a/Shared/Extensions/NSAttributedString+NetNewsWire.swift +++ b/Shared/Extensions/NSAttributedString+NetNewsWire.swift @@ -227,24 +227,22 @@ extension NSAttributedString { var attributes: [NSAttributedString.Key: Any] = [:] + var symbolicTraits = currentDescriptor.symbolicTraits + if styles.contains(.bold) { - let traits: [FontDescriptor.TraitKey: Any] = [.weight: Font.Weight.bold] - let descriptorAttributes: [FontDescriptor.AttributeName: Any] = [.traits: traits] - descriptor = descriptor.addingAttributes(descriptorAttributes) + symbolicTraits.insert(.bold) } if styles.contains(.italic) { - var symbolicTraits = currentDescriptor.symbolicTraits symbolicTraits.insert(.italic) - descriptor = descriptor.withSymbolicTraits(symbolicTraits) } if styles.contains(.monospace) { - var symbolicTraits = currentDescriptor.symbolicTraits symbolicTraits.insert(.monoSpace) - descriptor = descriptor.withSymbolicTraits(symbolicTraits) } + descriptor = descriptor.withSymbolicTraits(symbolicTraits) + func verticalPositionFeature(forSuperscript: Bool) -> [FontDescriptor.FeatureKey: Any] { #if canImport(AppKit) let features: [FontDescriptor.FeatureKey: Any] = [.typeIdentifier: kVerticalPositionType, .selectorIdentifier: forSuperscript ? kSuperiorsSelector : kInferiorsSelector] @@ -254,18 +252,12 @@ extension NSAttributedString { return features } - if styles.contains(.superscript) { - let features = verticalPositionFeature(forSuperscript: true) + if styles.contains(.superscript) || styles.contains(.subscript) { + let features = verticalPositionFeature(forSuperscript: styles.contains(.superscript)) let descriptorAttributes: [FontDescriptor.AttributeName: Any] = [.featureSettings: [features]] descriptor = descriptor.addingAttributes(descriptorAttributes) } - if styles.contains(.subscript) { - let features = verticalPositionFeature(forSuperscript: false) - let descriptorAttributes: [FontDescriptor.AttributeName: Any] = [.featureSettings: [features]] - descriptor = currentDescriptor.addingAttributes(descriptorAttributes) - } - attributes[.font] = Font(descriptor: descriptor, size: baseFont.pointSize) if styles.contains(.strikethrough) {