             : baselineOffset
         var pathCache: [Invisible: CGPath] = [:]
         
-        // locate invisibles glyph by glyph
-        let symbolPaths = CGMutablePath()
+        color.set()
+        
+        // draw invisibles glyph by glyph
         let characterRange = self.characterRange(forGlyphRange: glyphsToShow, actualGlyphRange: nil)
         for charIndex in characterRange.lowerBound..<characterRange.upperBound {
             let codeUnit = string.character(at: charIndex)

            
            let symbolLocation = location.offset(by: origin).offsetBy(dy: baselineOffset - glyphHeight)
            
            symbolPaths.addPath(path, transform: .init(translationX: symbolLocation.x, y: symbolLocation.y))
        }
        
        guard !symbolPaths.isEmpty else { return }
        guard let context = NSGraphicsContext.current?.cgContext else { return assertionFailure() }
        
        // draw invisible symbols
        context.setStrokeColor(color.cgColor)
        context.setLineWidth(lineWidth)
        context.setLineJoin(.round)
        context.setLineCap(.round)
        context.addPath(symbolPaths)
        context.strokePath()
    }
    
    

                path.move(to: endPoint, transform: transform)
                path.addLine(to: endPoint.offsetBy(dx: -max(size.width - 2 * margin, arrow.width), dy: 0), transform: transform)
                // arrow head
                path.move(to: endPoint, transform: transform)
                path.addLine(to: endPoint.offsetBy(dx: -arrow.width, dy: +arrow.height), transform: transform)
                path.move(to: endPoint, transform: transform)
                path.addLine(to: endPoint.offsetBy(dx: -arrow.width, dy: -arrow.height), transform: transform)
                return path
            
