2010-10-19 11 views
9

Sto utilizzando un carattere personalizzato applicato a un CATextLayer. Sto usando il tutorial e il codice di esempio trovato qui. http://www.freetimestudios.com/2010/09/13/custom-fonts-on-the-ipad-and-ios-4/CoreText: Sottotabella 'kern' non valida in CTFont

Tuttavia, ogni tanto, ottengo il seguente errore. Nulla in particolare sembra attivarlo. Qualcuno può far luce su ciò che significa? Cosa controllare?

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

Carico il carattere utilizzando il seguente codice. Questo codice è preso dal progetto nel link sopra.

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

risposta

4

La convalida del font installato ha mostrato che c'era un problema con i valori dei caratteri "kern". Questo era ciò che stava causando il problema.

+0

Così ha risolto la convalida? – Ralphleon

+2

@Ralphleon No, non è stato così. Dovevo scaricare il font da un altro sito, convalidarlo e assicurarmi che andasse bene. La kern credo abbia a che fare con la spaziatura, a volte un problema con un font personalizzato. –

+4

Ho questo problema. Tranne che le convalide passano. A proposito, sto usando OpenSans ... qualcuno sa come risolvere questo problema? – bogardon

9

Ho avuto lo stesso problema e la soluzione era che stavo usando il sottoinsieme sbagliato. Inizialmente ho scaricato Open Sans da Google Fonts che ha causato lo stesso errore di cui sopra. Ho scaricato Open Sans da Font Squirrel usando il sottoinsieme MacRoman e ho corretto il mio errore.

+0

Ho lavorato per me, dovevo assicurarmi di pulire anche il prodotto. –