Fix text run display node
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user