CoreText:CTFont中的'kern'子表无效

Oh *_*Boy 9 core-text ios

我正在使用应用于CATextLayer的自定义字体.我正在使用此处的教程和示例代码.http://www.freetimestudios.com/2010/09/13/custom-fonts-on-the-ipad-and-ios-4/

但是,每隔一段时间,我就会收到以下错误.没有什么特别可以触发它.有人可以说明这意味着什么吗?要检查什么?

CoreText: Invalid 'kern' Subtable In CTFont <name: Intellect, size: 20.000000, matrix: 0x0>
CTFontDescriptor <attributes: <CFDictionary 0xac07a80 [0x38295d98]>{type = mutable, count = 1, capacity = 3, pairs = (
    0 : <CFString 0x3833f750 [0x38295d98]>{contents = "NSFontNameAttribute"} = <CFString 0x159af0 [0x38295d98]>{contents = "Intellect"}
Run Code Online (Sandbox Code Playgroud)

我使用以下代码加载字体.此代码取自上面链接中的项目.

- (CTFontRef)newCustomFontWithName:(NSString *)fontName
                            ofType:(NSString *)type
                        attributes:(NSDictionary *)attributes
{
    NSString *fontPath = [[NSBundle mainBundle] pathForResource:fontName ofType:type];

    NSData *data = [[NSData alloc] initWithContentsOfFile:fontPath];
    CGDataProviderRef fontProvider = CGDataProviderCreateWithCFData((CFDataRef)data);
    [data release];

    CGFontRef cgFont = CGFontCreateWithDataProvider(fontProvider);
    CGDataProviderRelease(fontProvider);

    CTFontDescriptorRef fontDescriptor = CTFontDescriptorCreateWithAttributes((CFDictionaryRef)attributes);
    CTFontRef font = CTFontCreateWithGraphicsFont(cgFont, 0, NULL, fontDescriptor);
    CFRelease(fontDescriptor);
    CGFontRelease(cgFont);
    return font;
}
Run Code Online (Sandbox Code Playgroud)

小智 9

我有同样的问题,解决方案是我使用了错误的子集.我最初从Google字体下载了Open Sans ,导致了与上面相同的错误.我使用MacRoman子集从Font Squirrel下载了Open Sans 并修复了我的错误.


Oh *_*Boy 5

验证安装的字体显示字体“kern”值存在问题。这就是导致问题的原因。

  • 我有这个问题。除了验证通过。顺便说一下,我正在使用 OpenSans……有人知道如何解决这个问题吗? (5认同)
  • 是的,在 OS X 上使用 OpenSans 并看到相同的错误。想知道谷歌是否知道这一点 (3认同)
  • @Ralphleon 不,它没有。我不得不从另一个站点下载字体,验证并确保它没问题。我认为字距与间距有关,有时是自定义字体的问题。 (2认同)