diff --git a/Sources/SwiftUIMath/Internal/Display/CGContext+DisplayNode.swift b/Sources/SwiftUIMath/Internal/Display/CGContext+DisplayNode.swift index 5d0279a..9916469 100644 --- a/Sources/SwiftUIMath/Internal/Display/CGContext+DisplayNode.swift +++ b/Sources/SwiftUIMath/Internal/Display/CGContext+DisplayNode.swift @@ -49,18 +49,10 @@ extension CGContext { } private func draw(_ textRun: Math.DisplayTextRun, foregroundColor: CGColor) { - guard let platformFont = Math.PlatformFont(font: textRun.font) else { - return - } - - let attributes: [NSAttributedString.Key: Any] = [ - NSAttributedString.Key(kCTFontAttributeName as String): platformFont.ctFont, - NSAttributedString.Key(kCTForegroundColorAttributeName as String): foregroundColor, - ] - let attributedString = NSAttributedString(string: textRun.text, attributes: attributes) - let line = CTLineCreateWithAttributedString(attributedString) + let line = CTLineCreateWithAttributedString(textRun.attributedString) saveGState() + setFillColor(foregroundColor) textPosition = textRun.position CTLineDraw(line, self) restoreGState() diff --git a/Sources/SwiftUIMath/Internal/Display/DisplayTextRun.swift b/Sources/SwiftUIMath/Internal/Display/DisplayTextRun.swift index 0015378..202b668 100644 --- a/Sources/SwiftUIMath/Internal/Display/DisplayTextRun.swift +++ b/Sources/SwiftUIMath/Internal/Display/DisplayTextRun.swift @@ -3,14 +3,19 @@ import Foundation extension Math { final class DisplayTextRun: DisplayNode { - var text: String + var attributedString: NSAttributedString var font: Math.Font var atoms: [Math.Atom] + var text: String { attributedString.string } init( - text: String, font: Math.Font, position: CGPoint = .zero, range: NSRange, atoms: [Math.Atom] + attributedString: NSAttributedString, + font: Math.Font, + position: CGPoint = .zero, + range: NSRange, + atoms: [Math.Atom] ) { - self.text = text + self.attributedString = attributedString self.font = font self.atoms = atoms super.init() diff --git a/Sources/SwiftUIMath/Internal/Display/Typesetter.swift b/Sources/SwiftUIMath/Internal/Display/Typesetter.swift index d361d2f..b0934ae 100644 --- a/Sources/SwiftUIMath/Internal/Display/Typesetter.swift +++ b/Sources/SwiftUIMath/Internal/Display/Typesetter.swift @@ -1794,9 +1794,10 @@ extension Math { "The length of the current line: %@ does not match the length of the range (%d, %d)", currentLine, currentLineIndexRange.location, currentLineIndexRange.length);*/ - let line = CTLineCreateWithAttributedString(currentLine) + let attributedString = currentLine.copy() as! NSAttributedString + let line = CTLineCreateWithAttributedString(attributedString) let displayAtom = DisplayTextRun( - text: currentLine.string, + attributedString: attributedString, font: styleFont.font, position: currentPosition, range: currentLineIndexRange, @@ -2406,9 +2407,10 @@ extension Math { line.addAttribute( kCTFontAttributeName as NSAttributedString.Key, value: styleFont.ctFont, range: NSMakeRange(0, line.length)) - let ctLine = CTLineCreateWithAttributedString(line) + let attributedString = line.copy() as! NSAttributedString + let ctLine = CTLineCreateWithAttributedString(attributedString) let displayAtom = DisplayTextRun( - text: line.string, + attributedString: attributedString, font: styleFont.font, position: currentPosition, range: op.indexRange,