CGBitmapContext中没有德语变音符号

时间:2011-06-01 12:32:47

标签: xamarin.ios

我们在使用CGBitmapContext中的“ShowTextAtPoint”函数替换带有德语umlaute的文本时遇到问题。不显示变音字符。 有没有人知道任何解决方法?

感谢您的回答, 弗兰克

2 个答案:

答案 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。