2010-10-19 28 views
9

J'utilise une police personnalisée appliquée à un CATextLayer. J'utilise le tutoriel et l'exemple de code trouvés ici. http://www.freetimestudios.com/2010/09/13/custom-fonts-on-the-ipad-and-ios-4/CoreText: Subvalable 'kern' Subtable In CTFont

Cependant, de temps en temps, j'obtiens l'erreur suivante. Rien en particulier ne semble le déclencher. Quelqu'un peut-il nous éclairer sur ce que cela signifie? Que vérifier?

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"} 

Je charge la police en utilisant le code suivant. Ce code provient du projet dans le lien ci-dessus.

- (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; 
} 

Répondre

4

La validation de la police installée a montré qu'il y avait un problème avec les valeurs «kern» des polices. C'était ce qui causait le problème.

+0

Alors la validation l'a-t-elle corrigée? – Ralphleon

+2

@Ralphleon Non, ce n'est pas le cas. J'ai dû télécharger la police d'un autre site, valider et m'assurer que tout allait bien. Le kern je crois a à voir avec l'espacement, parfois un problème avec une police personnalisée. –

+4

J'ai ce problème. Sauf les validations passent. J'utilise OpenSans en passant ... quelqu'un sait comment résoudre ce problème? – bogardon

9

J'ai eu le même problème et la solution était que j'utilisais le mauvais sous-ensemble. J'ai d'abord téléchargé Open Sans de Google Fonts qui a causé la même erreur que ci-dessus. J'ai téléchargé Open Sans à partir de Font Squirrel en utilisant le sous-ensemble MacRoman et cela a corrigé mon erreur.

+0

A travaillé pour moi, a dû s'assurer de nettoyer le produit d'abord aussi. –