udało mi się uzyskać tej pracy za pomocą powtórną implementację CGFontGetGlyphsForUnichars Jens Egeblad: GlyphDrawing.mm
pierwsze obciążenie w japońskiej czcionki jako plik OTF z aplikacji pakietu:
// Load font file from otf file
NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"HStdNW8" ofType:@"otf"];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]);
CGFontRef _cgFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
Wtedy można przekonwertować tekst unichar na glify i narysować je:
NSString *text = @"日本語"
CGContextSetFont(context, _cgFont);
CGContextSetFontSize(context, 12);
CGGlyph textGlyphs[[text length]];
unichar textChars[[text length]];
for(int i = 0; i < [text length]; i++) {
textChars[i] = [text characterAtIndex:i];
}
CMFontGetGlyphsForUnichars(_cgFont, textChars, textGlyphs, [text length]);
CGContextShowGlyphsAtPoint(context, xCoord, yCoord, textGlyphs, [text length]);
Dzięki :)! Po przeczytaniu trochę w Dokumentach, wydaje mi się, że zakodowałem coś na wzór klasy NSAttributedString, więc myślę, że powinienem teraz zamienić cały mój kod na :( – kiyoshi
Nie ma za co. Ps Na telefonie iPhone nie ma NSAttributeString, więc sprawdź NSLabel. –
Rutyny rysowania rdzenia graficznego są na komputerze Mac od dłuższego czasu. Zgaduję, że zanim obsługa Unicode stała się powszechna, nie jest to zbyt zaskakujące, że wspierają tylko zestaw znaków, który robią. Możliwe jest również drukowanie niestandardowych znaków za pomocą CGContextShowGlyphsAtPoint(), ale wyzwaniem jest generowanie glifów na telefonie iPhone. Ten post ma przykład: http://www.gogo-robot.com/devblog/?p=5 –