【问题标题】:Word Cloud for Other Languages其他语言的词云
【发布时间】:2016-01-28 10:28:18
【问题描述】:

我在我的项目中使用JasonDavies's Word Cloud,但有一个问题是我使用波斯语[波斯语]字符串和我的问题是单词在 Svg 中重叠。

这是我项目的输出:

波斯语怎么了?

【问题讨论】:

  • @Paul R,感谢编辑。

标签: javascript persian word-cloud farsi


【解决方案1】:

正如About page for the project 中所解释的,生成器需要检索字形的形状,以便能够计算出放置其他词的“安全”位置。关于页面更详细地解释了该过程,但这是我们关心的:

  1. 字形单独呈现到隐藏的<canvas> 元素。
  2. 已检索像素数据
  3. 边界框派生
  4. 词云生成。

现在,关键的见解是,在西方(和许多其他)脚本中,字形不会经常根据上下文改变形状。是的,有诸如连字之类的东西,但它们通常很少见,而且对于脚本来说绝对不是必需的

然而,在波斯语中,字形形状会根据上下文而变化。对于非波斯语读者,请查看 ی 和 س,当它们组合在一起时,会变成 یس。是的,最后一个是两个字形!

该算法实际上在处理波斯字符时没有问题,正如您可以通过在 about 页面上 hack 演示看到的那样,在生成 d.code 之后放置一个断点,以便能够对其进行修改:

将其替换为1740,即上面第一个波斯字形的charCode,并让算法运行,在字形周围显示漂亮且完全正确的边界框:

问题在于,当实际渲染词云时,字形被放置在上下文中并且......改变了形状。但是,生成器不知道这一点,并继续使用旧的边界数据来放置其他词,从而创建您所看到的重叠。此外,可能还有一个关于从右到左处理文本的问题,这肯定没有帮助。

我鼓励您直接向生成器的作者提出此问题。该项目有一个 GitHub 页面:https://github.com/jasondavies/d3-cloud 所以在那里打开一个问题(并且可能参考这个答案)会有所帮助!

【讨论】:

  • 感谢您的回答。但是不知道怎么办?我的解决方案是什么?!
  • 正如我在底部所说的那样,转到那个链接,也就是项目页面,打开一个问题描述你的问题和这个问题的链接,然后等待作者回来给你。
  • 如果您不想等待,您将不得不弄清楚如何修复软件。你的问题很有趣……但这也意味着它不能简单地解决。需要付出努力。
  • JasonDavies 没有回答我的问题,我很着急。
  • 那么需要付出努力。换句话说,修复它。或者可能,去使用另一个工具。或者付费让开发人员为您修复它。告诉人们你“很匆忙”并且什么都不做来帮助不是事情的发生方式。
猜你喜欢
  • 2015-02-20
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 2016-03-20
  • 2015-11-06
相关资源
最近更新 更多