sono stato in grado di ottenere questo lavoro utilizzando una reimplementazione di CGFontGetGlyphsForUnichars da Jens Egeblad: GlyphDrawing.mm
Prima di carico in un font giapponese come file sistema organizzato di negoziazione dal bundle app:
// 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);
Poi si in grado di convertire il testo UNICHAR di glifi e disegnarli:
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]);
fonte
2010-09-29 12:34:58
Thanks :)! Dopo aver letto un po 'nella Docs, sembra che ho codificato qualcosa sulla falsariga della classe NSAttributedString quindi credo che ora dovrei passare tutto il mio codice per che :( – kiyoshi
Non c'è di che. Ps Non c'è NSAttributeString su iPhone, quindi controlla NSLabel. –
Le routine di disegno del testo di Core Graphics sono state utilizzate per molto tempo sul Mac, immagino che prima che il supporto Unicode diventi comune, quindi non sorprende che supportino solo il set di caratteri che fanno. Potresti anche essere in grado di stampare caratteri personalizzati con CGContextShowGlyphsAtPoint(), ma la sfida sta generando i glifi su iPhone. Questo post ha un esempio: http://www.gogo-robot.com/devblog/?p=5 –