CGContextShowTextAtPoint和欧元符号

时间:2012-05-04 23:16:53

标签: ios encoding pdf-generation

我正在使用以下内容在iOS上的PDF上绘制文字:

CGContextSelectFont (pdfContext, "Helvetica Bold", 14, kCGEncodingMacRoman);
NSString *str1 = [NSString stringWithString:@"€ 10"];  
CGContextShowTextAtPoint(pdfContext, 25, y-60 , [str1 cStringUsingEncoding:NSMacOSRomanStringEncoding], [str1 length]); 

欧元符号显示为方形。

你有什么建议吗?

PS。我也试过[str1 UTF8String],结果相同

2 个答案:

答案 0 :(得分:2)

在大多数情况下,使用NSString方法- (CGSize)drawAtPoint:(CGPoint)point withFont:(UIFont *)font- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font而不是CoreGraphic等效项更容易。 Apple会为您提供正确的转换,编码等方式。

答案 1 :(得分:0)

我不知道它是否有效,但您是否尝试将kCGEncodingFontSpecific用于CGContextSelectFont的第四个参数?如果不这样做,您可能必须使用Core Text。我从来没有使用过Core Text,但看起来它的文本生成比纯粹的Quartz 2D更强大。

对于@ jonathan-cichon的建议,我还从我刚刚提出的UIView生成了PDF(他提出了NSString的drawAtPoint等等,我实际上使用了普通的UILabel s!)然后将其呈现给我的pdfContext,但这也有明显的缺点。如果您已经在PDF环境的道路上,我建议您在kCGEncodingFontSpecific没有这样做时继续使用Core Text。有关该主题的其他想法,请参阅此SO discussion

最后一点,我发现PDF生成有点受限(但另一方面,很难,iOS可以创建PDF)。在我的情况下,我对PDF中缺少字体嵌入感到沮丧,所以我最终创建了由不太常见的字体呈现的文本图像(因为我得到了你在问题中引用的方块)。