Objective c NSGlyph的替代品';s-字形编码:?

Objective c NSGlyph的替代品';s-字形编码:?,objective-c,macos,cocoa,Objective C,Macos,Cocoa,在移植一些古老的代码时,我遇到了一个特殊的类,它在OSX10.4中大部分被弃用,名为NSGlyph。在谷歌搜索了一段时间后,我想到了它到底做了什么,以及为什么它对框架中的if-else分支很重要。特别是,方法NSFont-glyphIsEncoded:似乎是一些分支的重要组成部分,如果有什么东西坏了,我就把它挖出来继续前进,这将是一件很遗憾的事。有谁知道有合适的替代品可以替代NSFont-glyphIsEncoded: if (glyph == 0xffff || ![font glyphIsE

在移植一些古老的代码时,我遇到了一个特殊的类,它在OSX10.4中大部分被弃用,名为NSGlyph。在谷歌搜索了一段时间后,我想到了它到底做了什么,以及为什么它对框架中的if-else分支很重要。特别是,方法
NSFont-glyphIsEncoded:
似乎是一些分支的重要组成部分,如果有什么东西坏了,我就把它挖出来继续前进,这将是一件很遗憾的事。有谁知道有合适的替代品可以替代
NSFont-glyphIsEncoded:

if (glyph == 0xffff || ![font glyphIsEncoded:glyph]) {
    // Switch to getting it from the system font for "normal" keys
    // get the glyph from the layout manager (this normally will be the ascii value)
    glyph = [layoutManager glyphAtIndex: i];
font = [NSFont systemFontOfSize:[font pointSize]]; // use the system font
        //NSLog(@"Asking layout manager for glyph for %@, got %d", glyphName, glyph);
    }
    if (glyph != 0xffff && [font glyphIsEncoded:glyph]) {
        NSRect bounds = [font boundingRectForGlyph:glyph];
        [path moveToPoint: NSMakePoint(left, 0.0 - [font descender])];
        [path appendBezierPathWithGlyph: glyph inFont: font];
    left += [font advancementForGlyph: glyph].width;
        continue; // rendered a character
    } //etc...
据报道,

可以用

glyph < [font numberOfGlyphs]
glyph<[font-numberOfGlyphs]

啊,谢谢。由于某些原因,该文档不会显示为NSGlyph的搜索结果。。。奇怪的知道这个类的用途吗?@CodaFi:所有字体都包含连续编号的字体。(这对于TrueType字体来说绝对是正确的,PostScript字体的情况有点不同。)
NSGlyph
只是一个
无符号int
来指定字体中的某个glyph。在TrueType规范中,该数字称为“glyph id”。通常情况下,您不会使用字形id,因为字体也有一个“字符映射”,它将字符编码(例如Unicode)映射到字体中的字形id。如果要按名称指定glyph,请参阅
glyphWithName:
glyph < [font numberOfGlyphs]