diff --git a/MarkdownKit/Sources/Common/Elements/Bold/MarkdownBold.swift b/MarkdownKit/Sources/Common/Elements/Bold/MarkdownBold.swift index ad7b5ac..2bc6e14 100644 --- a/MarkdownKit/Sources/Common/Elements/Bold/MarkdownBold.swift +++ b/MarkdownKit/Sources/Common/Elements/Bold/MarkdownBold.swift @@ -26,20 +26,22 @@ open class MarkdownBold: MarkdownCommonElement { public func match(_ match: NSTextCheckingResult, attributedString: NSMutableAttributedString) { attributedString.deleteCharacters(in: match.range(at: 4)) - attributedString.enumerateAttribute(.font, in: match.range(at: 3)) { value, range, stop in - guard let font = value as? MarkdownFont else { return } + var attributes = self.attributes + + attributedString.enumerateAttribute(.font, in: match.range(at: 3)) { value, range, _ in + guard let currentFont = value as? MarkdownFont else { return } if let customFont = self.font { - self.font = font.isItalic() ? customFont.bold().italic() : customFont.bold() + attributes[.font] = currentFont.isItalic() ? customFont.bold().italic() : customFont.bold() } else { attributedString.addAttribute( NSAttributedString.Key.font, - value: font.bold(), + value: currentFont.bold(), range: range ) } } - addAttributes(attributedString, range: match.range(at: 3)) + attributedString.addAttributes(attributes, range: match.range(at: 3)) attributedString.deleteCharacters(in: match.range(at: 2)) } diff --git a/MarkdownKit/Sources/Common/Elements/Italic/MarkdownItalic.swift b/MarkdownKit/Sources/Common/Elements/Italic/MarkdownItalic.swift index 4dc0cbb..b91c586 100644 --- a/MarkdownKit/Sources/Common/Elements/Italic/MarkdownItalic.swift +++ b/MarkdownKit/Sources/Common/Elements/Italic/MarkdownItalic.swift @@ -26,20 +26,22 @@ open class MarkdownItalic: MarkdownCommonElement { public func match(_ match: NSTextCheckingResult, attributedString: NSMutableAttributedString) { attributedString.deleteCharacters(in: match.range(at: 4)) - attributedString.enumerateAttribute(.font, in: match.range(at: 3)) { value, range, stop in - guard let font = value as? MarkdownFont else { return } + var attributes = self.attributes + + attributedString.enumerateAttribute(.font, in: match.range(at: 3)) { value, range, _ in + guard let currentFont = value as? MarkdownFont else { return } if let customFont = self.font { - self.font = font.isBold() ? customFont.bold().italic() : customFont.italic() + attributes[.font] = currentFont.isBold() ? customFont.bold().italic() : customFont.italic() } else { attributedString.addAttribute( NSAttributedString.Key.font, - value: font.italic(), + value: currentFont.italic(), range: range ) } } - addAttributes(attributedString, range: match.range(at: 3)) + attributedString.addAttributes(attributes, range: match.range(at: 3)) attributedString.deleteCharacters(in: match.range(at: 2)) }