【发布时间】:2016-01-28 10:28:18
【问题描述】:
【问题讨论】:
-
@Paul R,感谢编辑。
标签: javascript persian word-cloud farsi
【问题讨论】:
标签: javascript persian word-cloud farsi
正如About page for the project 中所解释的,生成器需要检索字形的形状,以便能够计算出放置其他词的“安全”位置。关于页面更详细地解释了该过程,但这是我们关心的:
<canvas> 元素。现在,关键的见解是,在西方(和许多其他)脚本中,字形不会经常根据上下文改变形状。是的,有诸如连字之类的东西,但它们通常很少见,而且对于脚本来说绝对不是必需的。
然而,在波斯语中,字形形状会根据上下文而变化。对于非波斯语读者,请查看 ی 和 س,当它们组合在一起时,会变成 یس。是的,最后一个是两个字形!
该算法实际上在处理波斯字符时没有问题,正如您可以通过在 about 页面上 hack 演示看到的那样,在生成 d.code 之后放置一个断点,以便能够对其进行修改:
将其替换为1740,即上面第一个波斯字形的charCode,并让算法运行,在字形周围显示漂亮且完全正确的边界框:
问题在于,当实际渲染词云时,字形被放置在上下文中并且......改变了形状。但是,生成器不知道这一点,并继续使用旧的边界数据来放置其他词,从而创建您所看到的重叠。此外,可能还有一个关于从右到左处理文本的问题,这肯定没有帮助。
我鼓励您直接向生成器的作者提出此问题。该项目有一个 GitHub 页面:https://github.com/jasondavies/d3-cloud 所以在那里打开一个问题(并且可能参考这个答案)会有所帮助!
【讨论】: