20

我想通过 JavaScript 在我网站上的一些大文本上实现客户端连字符。(我知道 CSS3 连字符,并且会在可用时使用它,但它通常不可用。)

我一直在使用Hyphenator.js,它运行良好,但非常大(我的优化编译版本只有英文版,大小为 106 KB)而且速度很慢。它又大又慢,我正在考虑完全放弃连字符。无论如何,这只是一种奢侈。

但最近我遇到了一个似乎可以替代的东西:Hypher。让我感到困惑的是,Hypher 怎么能让我变得更小,做同样的事情。我想知道是否有人可以解释这一点。

Hypher 也同样有效吗?有什么理由改用 Hyphenator.js 吗?Hypher 的自述文件在页面底部有一个指向 Hyphenator.js 的链接,但没有任何文字解释这些项目之间的联系。

有人对最有效的客户端连字符有意见吗?

4

2 回答 2

20

我查看了 JavaScript 中的连字符,发现了以下四个库:

  • hy-phen:是 Yevhen Tiurin 自 2016 年以来使用 MIT 许可证开发的纯 JavaScript 库。为您提供了一个 JavaScript 函数,您可以调用该函数来对字符串进行连字符。您只需要包含主 JavaScript 文件和所需的语言文件即可使用它。
  • Hypher:是 Bram Stein 自 2011 年以来使用“三条款 BSD”许可开发的纯 JavaScript 库。为您提供了两种 JavaScript 方法,您可以调用它们来对字符串进行连字符。它只能使用 Node.js 或 jQuery 安装。
  • Hyphenator.js:是 Mathias Nater 自 2008 年以来使用 MIT 许可证开发的 JavaScript/HTML 实现。该项目自 2018年起停产。将其包含到您的项目中并不是那么简单——您需要先使用 Merge&Pack 工具创建一个 JavaScript 文件,然后才能将其包含在内。它会自动扫描 HTML 页面并向选定的 HTML 元素添加连字符。没有可以调用的 JavaScript 函数来手动对字符串进行断字。
  • Hyphenopoly.js:是 Hyphenator.js 的后续项目,由 Mathias Nater 使用 MIT 许可证自 2016 年开始开发。它删除了 Hyphenator.js 的一些功能,并且使用起来更简单一些。尽管如此,它的工作方式相同,这意味着您无法调用 JavaScript 函数来手动连接字符串。

所有四个库都使用由 Franklin M. Liang 开发的断字算法,该算法使用匹配模式来查找单词中的断字点。如梁在他的论文中所述,该算法不能提供 100% 正确的断字:

这些模式在袖珍词典单词列表中找到了 89% 的连字符,基本上没有错误。

于 2019-02-04T10:49:34.960 回答
18

相对而言,Hypher 如此之小的主要原因是它依赖于外部加载的 jQuery 进行页面集成。Hyphenator.js 是完全独立的,因此必须包含更多样板来跨浏览器操作 HTML。(他们甚至重新实现了一些 jQuery 功能。)

公平地说,Hyphenator.js 是一个相对较旧的项目,在此过程中尚未完全重写以利用大量浏览器改进。(请注意,他们自豪地支持 Firefox 3.0。)而且,更慈善的是,Hyphenator.js 有许多更细粒度的设置

如果您已经在使用 jQuery,并且不使用 Hyphenator.js 的高级 API,那么切换到 Hypher 可能是一个值得改进的地方。

于 2014-09-01T04:55:15.263 回答