Fix text run display node

This commit is contained in:
Guille Gonzalez
2026-01-04 06:42:53 +01:00
parent 55abc5b2bd
commit 0e865739f5
3 changed files with 16 additions and 17 deletions

View File

@@ -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()

View File

@@ -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()

View File

@@ -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,