答案 0 :(得分:4)
如About page for the project所述,生成器需要检索字形的形状,以便能够计算放置其他单词“安全”的位置。 about页面更详细地解释了这个过程,但这是我们关心的:
<canvas>
元素。现在,关键的见解是,在西方(和许多其他)脚本中,字形不会经常根据上下文改变形状。是的,有连字这样的东西,但它们通常很少见,而且对于剧本来说绝对不是必要的。
然而,在波斯语中,字形将根据上下文而改变。对于非波斯语读者,请查看ی和س,当它们合并时,它们会成为。是的,最后一个是两个字形!
该算法在处理波斯语字符时实际上没有问题,正如您可以通过在关于页面的黑客攻击中看到的那样,在生成d.code
之后放置一个断点,以便能够修改它:
将1740
替换为上面第一个波斯字形的charCode
,让算法运行,在字形周围显示漂亮且完全正确的边界框:
问题在于,当实际渲染单词云时,字形将放置在上下文中并且...更改形状。但是,生成器不知道这一点,并继续使用旧的边界数据来放置其他单词,从而创建您目睹的重叠。此外,可能还存在从右到左处理文本的问题,这当然无济于事。
我鼓励你直接把它作为发电机的作者。该项目有一个GitHub页面:https://github.com/jasondavies/d3-cloud所以在那里打开一个问题(也许可以回过头来看这个答案)会有所帮助!