现在我在 Xamarin Android 上使用 SkiaSharp。
我想用 SKCanvas.DrawText 绘制日语文本,但是日语字符是乱码。
我看到了这个 类似的问题,所以我尝试将文本转换为 UTF-8,但结果是一样的。
我试过如下。
var s = "abc???123???";
var buf = System.Text.Encoding.UTF8.GetBytes(s);
var utf8s = Encoding.UTF8.GetString(buf);
skcanvas.DrawText(utf8s, 50, 50, paint);
Run Code Online (Sandbox Code Playgroud)
另一个。
var s = "abc???123???";
var dest = Encoding.UTF8;
var src = Encoding.Default;
var buf = src.GetBytes(s);
var buf2 = Encoding.Convert(src,dest, buf);
var utf8s = dest.GetString(buf2);
skcanvas.DrawText(utf8s, 50, 50, paint);
Run Code Online (Sandbox Code Playgroud)
两者结果相同。“abc”和“123”画得很好,但是日文乱码。
任何的想法?
我想FormattedString用SkiaSharp绘制iOS的Attributed Text或Xamarin.Forms等富文本,但我找不到如何.
我找到了这个DrawText方法,但它是用一种颜色和一种字体进行简单的文本渲染.没有混合颜色和/或字体,也没有粗体,斜体,透视或下划线等样式.
我是否必须使用自己的富文本渲染逻辑?