gpt4 book ai didi

javascript - 其他语言的词云

转载 作者:行者123 更新时间:2023-11-29 18:00:52 24 4
gpt4 key购买 nike

我使用 JasonDavies's Word Cloud对于我的项目,但是我使用波斯 [波斯语] 字符串时出现问题,而我的问题是 Svg 中的单词重叠。

这是我的项目的输出:

This is my project's output

波斯语单词怎么了?

最佳答案

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

  1. 字形被单独渲染到一个隐藏的<canvas>元素。
  2. 检索像素数据
  3. 导出边界框
  4. 词云生成。

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

然而,在波斯语中,字形形状会根据上下文发生变化。对于非波斯语读者,请查看  和 س,它们结合起来就变成了。是的,最后一个是两个字形!

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

source of bbtree.js on the about page, with a breakpoint at line 129

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

render of ی and its bounding boxes

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

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

关于javascript - 其他语言的词云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35058827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com