我目前正在使用以下代码来获取字形的逻辑 NSView 位置,该位置运行良好,但它似乎有点慢,并且位置并不精确地位于字符字距调整点和基线上。很有可能我需要做的就是一个一个地迭代字形本身并自己构建矩形。
现在这段代码(函数),只是想看看它是否可以更有效或更正确地完成。
// lastRange is any valid, bounds checked character range in an NSTextView
NSLayoutManager *layoutManager = [self layoutManager];
NSRect paragraphRect = [layoutManager boundingRectForGlyphRange:lastRange inTextContainer:[self textContainer]];
// Draw a gradient around the range.
NSGradient * gradient = [self indicatorGradient];
CGContextRef myContext = [[NSGraphicsContext currentContext] graphicsPort];
CGContextSetBlendMode(myContext , kCGBlendModeMultiply);
[gradient drawInRect:paragraphRect angle:90];