我从 NSAttributedString 中获取单个字符的字形,然后使用 NSBezierPath 获取appendBezierPathWithGlyphs:count:inFont:
并最终将扁平路径点输出到 NSArray(请参见下面的代码)以在 Quartz Composer 中使用 OpenGL 显示它们。
对于某些 NSFonts,包括标准字体(American Typewriter、Baskerville、...),字母完全错误(见下图)。
说我正在使用法语键盘和语言可能很重要。
NSBezierPath* path = [NSBezierPath bezierPath];
NSTextStorage *storage = [[[NSTextStorage alloc] initWithString:character] autorelease];
NSLayoutManager *manager = [[[NSLayoutManager alloc] init] autorelease];
NSTextContainer *container = [[[NSTextContainer alloc] init] autorelease];
[storage addLayoutManager:manager];
[manager addTextContainer:container];
NSRange glyphRange = [manager glyphRangeForTextContainer:container];
NSGlyph glyphArray[glyphRange.length];
NSUInteger glyphCount = [manager getGlyphs:glyphArray range:glyphRange];
[manager getGlyphs:glyphArray range:glyphRange];
// ---- Necesary
[path moveToPoint: NSMakePoint(0, 0)];
// STRANGE CHARACTERS
[path appendBezierPathWithGlyphs:glyphArray count:glyphCount inFont:selectedFont];
有人知道这种行为的解释吗?有没有办法用这些字体找到正确的路径?