我们在使用CGBitmapContext中的“ShowTextAtPoint”函数替换带有德语umlaute的文本时遇到问题。不显示变音字符。 有没有人知道任何解决方法?
感谢您的回答, 弗兰克
答案 0 :(得分:1)
问题是CGContext的CoreGraphics API不支持渲染UTF8代码,它仅限于MacRoman中的文本编码(正如您在样本中所示)。
修复是使用UIKit函数,为此,您可以将代码更改为:
UIGraphics.PushContext (mBmpContext);
mBmpContext.SetRGBFillColor(1f,1f,1f,1f);
var font = UIFont.FromName ("Arial", 30);
using (var nsstr = new NSString ("äöü ÜÖÄ")){
nsstr.DrawString (new PointF (10, 400), font);
}
UIGraphics.PopContext ()
答案 1 :(得分:1)
您还可以使用转义序列使其正常工作:
请参阅此页面以获取您想要的字符:http://en.wikipedia.org/wiki/Mac_OS_Roman
“\ x80,\ xE8,\ xEC,\ x85,\ x86”将按顺序给出首都元音:A,E,I,O,U与变音符号
“\ x8A,\ x91,\ x95,\ x9A,\ x9F”将按顺序给出小写元音:a,e,i,o,u with umlaute
MacRoman包含您需要的字符,因此如果您更喜欢使用CoreGraphics,则无需使用UIKit。