que era capaz de conseguir este trabajo mediante el uso de una reimplementación de CGFontGetGlyphsForUnichars por Jens Egeblad: GlyphDrawing.mm
primera carga en una fuente japonesa como un archivo OTF del paquete de aplicación:
// 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);
A continuación, puede convertir su texto unichar en glifos y dibujarlos:
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]);
Thanks :)! Después de leer un poco en Docs, parece que he codificado algo similar a la clase NSAttributedString, así que ahora debería cambiar todo mi código a :( – kiyoshi
De nada. Ps No hay NSAttributeString en el iPhone, así que echa un vistazo a NSLabel. –
Las rutinas de dibujo de texto de Core Graphics han existido en la Mac durante mucho tiempo, supongo que antes de que el soporte de Unicode se volviera común, por lo que no es demasiado sorprendente que solo admitan el conjunto de caracteres que tienen. También es posible que pueda imprimir caracteres personalizados con CGContextShowGlyphsAtPoint(), pero el reto es generar los glifos en el iPhone. Esta publicación tiene un ejemplo: http://www.gogo-robot.com/devblog/?p=5 –