C#中使用TextGeometry.Explode()方法的疑问


#1

大家好,我在使用TextGeometry.Explode()方法炸开中文字体的时候,线会偏移,如下图

线偏移的中文字体是Arial,线不偏移的中文字体是微软雅黑

这是我的Rhino和GH文件:
TEXT Explode.3dm (31.5 KB)
Text Explode.gh (6.5 KB)

把文件复制到rhino5中运行是没有问题的。

这是一个BUG吗?谢谢


#3

这个并不是 bug,造成这个现象的原因是英文字体 Arial 中并不包含“中文”字样,但是为了正常显示会调用系统默认的中文字体“微软雅黑”,但是它的字体缩放确采用的是 Arial 的缩放。实际上你炸开以后是原始大小的微软雅黑字体,而不是缩放后的微软雅黑。所以注意观察,炸开后的文字并不是偏移了,而是缩放了。你可以试试把这个 Text 对象复制一份,改成微软雅黑不用炸开,然后去和前面那个 Arial 炸开的去对比,是完全一样的。
Rhino 5 没有这个问题是因为 Rhino 5 里面 Arial 中写中文会显示为“宋体”,宋体和 Arial 的字体比例是一样的。
所以这个问题需要开发者在写脚本或者程序的时候自己去解决。如果觉得麻烦,可以避免用英文字体显示中文,因为它用的根本就不是你设定的那个英文字体。


#4

懂了,感谢jorin大大