私のアプリでは、パスに沿ってテキストをレンダリングしようとしています。これはほとんどのキャラクターには問題ありませんが、日本語(またはmac-Roman以外のもの)には問題ありません。CATiledLayerに正しい文字を表示する[NSStringdrawAtPoint]を使用することをお勧めします。ただし、約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を使用するのと同じ場所にある場合、それはすでに正しいコンテキストを持っているはずだと思いましたか?