@@ -53,15 +53,29 @@ private func chatInputStateString(attributedString: NSAttributedString) -> NSAtt
5353 }
5454 if let value = attributes [ . font] , let font = value as? UIFont {
5555 let fontName = font. fontName. lowercased ( )
56- if fontName. contains ( " bolditalic " ) {
57- string. addAttribute ( ChatTextInputAttributes . bold, value: true as NSNumber , range: range)
58- string. addAttribute ( ChatTextInputAttributes . italic, value: true as NSNumber , range: range)
59- } else if fontName. contains ( " bold " ) {
60- string. addAttribute ( ChatTextInputAttributes . bold, value: true as NSNumber , range: range)
61- } else if fontName. contains ( " italic " ) {
62- string. addAttribute ( ChatTextInputAttributes . italic, value: true as NSNumber , range: range)
63- } else if fontName. contains ( " menlo " ) || fontName. contains ( " courier " ) || fontName. contains ( " sfmono " ) {
64- string. addAttribute ( ChatTextInputAttributes . monospace, value: true as NSNumber , range: range)
56+ if fontName. hasPrefix ( " .sfui " ) {
57+ let traits = font. fontDescriptor. symbolicTraits
58+ if traits. contains ( . traitMonoSpace) {
59+ string. addAttribute ( ChatTextInputAttributes . monospace, value: true as NSNumber , range: range)
60+ } else {
61+ if traits. contains ( . traitBold) {
62+ string. addAttribute ( ChatTextInputAttributes . bold, value: true as NSNumber , range: range)
63+ }
64+ if traits. contains ( . traitItalic) {
65+ string. addAttribute ( ChatTextInputAttributes . italic, value: true as NSNumber , range: range)
66+ }
67+ }
68+ } else {
69+ if fontName. contains ( " bolditalic " ) {
70+ string. addAttribute ( ChatTextInputAttributes . bold, value: true as NSNumber , range: range)
71+ string. addAttribute ( ChatTextInputAttributes . italic, value: true as NSNumber , range: range)
72+ } else if fontName. contains ( " bold " ) {
73+ string. addAttribute ( ChatTextInputAttributes . bold, value: true as NSNumber , range: range)
74+ } else if fontName. contains ( " italic " ) {
75+ string. addAttribute ( ChatTextInputAttributes . italic, value: true as NSNumber , range: range)
76+ } else if fontName. contains ( " menlo " ) || fontName. contains ( " courier " ) || fontName. contains ( " sfmono " ) {
77+ string. addAttribute ( ChatTextInputAttributes . monospace, value: true as NSNumber , range: range)
78+ }
6579 }
6680 }
6781 if let value = attributes [ . backgroundColor] as? UIColor , value. rgb == UIColor . gray. rgb {
0 commit comments