В моем приложении я пытаюсь отобразить текст вдоль пути; это нормально для большинства символов, но не для японского (или чего-то другого, кроме mac-Roman). Мне посоветовали использовать [NSString drawAtPoint], который отображает правильные символы в моем CATiledLayer; однако они исчезают примерно через 5 секунд. За это время я могу масштабировать слой, и они масштабируются должным образом, но они, похоже, не привязаны к CATiledLayer, как обычно остальная часть текста.
Перед рендерингом я проверяю строку и решаю, не будет ли какой-либо из них отображаться. Если у меня возникнут проблемы, я вместо этого использую drawAtpoint:
if (!isFullyDisplayable)
{
CGContextShowGlyphsAtPoint(context, pt.x, pt.y, realGlyph, 1);
}
else {
// fall back on less flexible font rendering for difficult characters
NSString *b = [gv text];
NSString *c = [b substringWithRange:NSMakeRange(j,1)];
[c drawAtPoint:pt withFont:[UIFont fontWithName:@"Helvetica-Bold" size:16.0]];
}
У кого-нибудь есть какие-либо указатели относительно того, почему текст исчезает?
Как только используется drawAtPoint, мой вывод отладки заполняется:
<Error>: CGContextGetShouldSmoothFonts: invalid context
<Error>: CGContextSetFont: invalid context
<Error>: CGContextSetTextMatrix: invalid context
<Error>: CGContextSetFontSize: invalid context
<Error>: CGContextSetTextPosition: invalid context
<Error>: CGContextShowGlyphsWithAdvances: invalid context
Итак, я предполагаю, что это как-то связано с моим управлением контекстом, но я предположил, что если это находится в том же месте, где я использую CGContextShowGlyphsAtPoint, у него уже должен быть правильный контекст?