2012-11-20 161 views
3

我需要一些PHP和/或java(当前的Spring + Hibernate)工具用于连接内容的线索。我在包含文件中有一些文本内容,有些在数据库中。所有的文本都是UTF-8编码的,我需要软连字符作为支持,这在大多数浏览器中都很常见。连接预处理

所以这个存储的原始:

<p> These words need hyphenation</p> 

将在最后加载网页的源代码转变成这样

<p> The&shy;se wor&shy;ds need hyp&shy;he&shy;na&shy;tion</p> 

东西。

任何想法如何实现这一目标?

对于没有使用任何服务器端代码且仅使用纯HTML源文件的情况,也欢迎对HTML标记中包含连字符的文本编辑工具的建议。

此外,我还没有找到连字词列表的好来源。

+0

你随机添加连字符? – 2012-11-20 19:25:54

+0

*你是..... :) – OldCurmudgeon

+0

Dagon,其实这只是一个例子,它可能看起来取决于语言的连字规则。在某些语言中,至少有几个方向可以继续如何做适当的连字符。 随着语言的正确列表,它当然会看起来更准确。 – MiB

回答

4

CSS3定义client-side hyphenation

这意味着,在支持浏览器¹时,您只需指定文本的语言和自动连字的要求,并且会自动连字符,而不需要您做任何工作。显然这意味着连字点由浏览器的语言资源控制。

对于手动控制,您可以在您希望使用的每个连字点处放置自由连字符,并指示浏览器仅使用那些连字符。

实际上,要找到连字点并插入任意连字符,最好的方法可能是使用古老的,其中指定分层连字符或无连字点的子字词模式与连字符字匹配。这些模式现在已被广泛使用(包括OpenOffice,LibreOffice和Adobe InDesign),并且适用于大多数语言。

实现算法只需要几行代码。更重要的是,有多种语言的现成实现:诸如phpHyphenator之类的PHP实现,诸如TeXHyphenator-JHyphenation之类的Java实现以及用于libhyphen的C++实现(如jhyphen)的Java绑定。

¹目前,Firefox,Safari和IE都支持自动匹配,Chrome和Opera不支持。

2

连字实际上是非常困难的。那里没有真正的单词列表。如果您使用PHP,您可能可以制作Perl library TeX::Hyphen。我不知道任何Java解决方案。

有关详细信息,read this Wikipedia article.

+1

durron597,在我看来,很多情况下非常需要软连接来获得良好的版式。Adobe Indesign会自动连字符并且必须将其算法基于某些东西。 OpenOffice有连字词典,我认为它们也许可以使用。 TeX是一个有趣的提示。我会检查出来的。谢谢。 – MiB

+1

我在adobe InDesign上看到一个链接,同时在这个问题上寻找答案,整个线程就像是“是的,我们不知道它是如何工作的,除了词不需要是英语” – durron597