Я был в состоянии получить эту работу, используя переопределение CGFontGetGlyphsForUnichars Йенс Egeblad: GlyphDrawing.mm
Первой загрузка в японском шрифте в виде файл OTF из приложения пачки:
// 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);
Тогда вы может преобразовать ваш unichar текст в символы и нарисовать их:
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]);
Спасибо :)! Прочитав немного в Документах, кажется, что я закодировал что-то в соответствии с классом NSAttributedString, поэтому, я думаю, теперь я должен переключить весь свой код на это :( – kiyoshi
Добро пожаловать. Ps На iPhone нет NSAttributeString, поэтому ознакомьтесь с NSLabel. –
Процедуры рисования графических объектов Core Graphics давно существуют на Mac, я догадываюсь о том, что поддержка Unicode стала обычной, поэтому неудивительно, что они поддерживают только набор символов, который они выполняют. Вы также можете печатать пользовательские символы с помощью CGContextShowGlyphsAtPoint(), но проблема заключается в создании глифов на iPhone. У этого поста есть пример: http://www.gogo-robot.com/devblog/?p=5 –