tôi đã có thể làm việc này bằng cách sử dụng một reimplementation của CGFontGetGlyphsForUnichars bởi Jens Egeblad: GlyphDrawing.mm
tải đầu tiên trong một phông chữ tiếng Nhật như một tập tin OTF từ gói ứng dụng:
// 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);
Sau đó, bạn có thể chuyển đổi văn bản unichar thành glyphs và vẽ chúng:
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]);
Nguồn
2010-09-29 12:34:58
Cảm ơn :)! Sau khi đọc một chút về Tài liệu, có vẻ như tôi đã mã hóa một cái gì đó dọc theo dòng của lớp NSAttributedString vì vậy tôi đoán bây giờ tôi nên chuyển đổi tất cả mã của tôi thành: ( – kiyoshi
) Chào mừng bạn. Không có NSAttributeString trên iPhone, vì vậy hãy kiểm tra NSLabel. –
Các thói quen vẽ văn bản đồ họa cốt lõi đã tồn tại trên Mac trong một thời gian dài, tôi đoán trước khi hỗ trợ Unicode trở nên phổ biến, do đó, nó không quá ngạc nhiên khi họ chỉ hỗ trợ bộ ký tự mà họ làm. Bạn cũng có thể in các ký tự tùy chỉnh bằng CGContextShowGlyphsAtPoint(), nhưng thử thách đang tạo ra các glyph trên iPhone. Bài viết này có một ví dụ: http://www.gogo-robot.com/devblog/?p=5 –