情况
在客户网站上使用泰文表示的是,我们无法控制特定的单词/句子在行之间的中断位置(Web浏览器将如何处理它)。通常,本地评论者会将内容显示为不正确。

解决方法
这是因为撰稿人需要提供泰文内容,其中包含破折号 ​ 和不破折号  零宽度空格字符。

实际上,而不是:ของเพื่อนๆ ที่ออนไลน์อยู่我们应该使用如下丑陋的东西:ของเพื่อนๆ​ที่​ออนไลน์อยู่
以上只是一个例子,我真的不知道到底在哪里允许断点。
实际上,单独使用不间断零空间也可以解决问题……为了更准确地使用不间断零空间也更加严格和正确。

尽管这样做绝对可行,但是对于大型站点内容管理来说,这也是一个耗时且不是很有效的解决方案。简而言之,投入的精力与所需的效果不符。

研究
到目前为止,已经导致了解决方法,寻找一种更好的方式来处理此问题。甚至W3C doesn't have a solution yet都在讨论是否应将其作为CSS3规范的一部分。

泰语很少使用空格,主要用于区分句子等。因此,泰语句子的常见外观是一个很长的字符串。
当更多行的文本放在一起时,在何处中断这样的字符串取决于特定的单词标识。对于单词识别,使用本地词典,这些词典很可能是操作系统或Web浏览器的一部分,对此我并不完全确定。

显然,您检查的网络浏览器/操作系统越多,获得的结果就越多!此外,由于它是系统驱动的,因此您无能为力,也没有“泰拳破解”设置可用。

使用 <wbr/> &#8203; &shy; 指示断点的真正位置并不会阻止网络浏览器(即使错误)认为在未定义断点的地方也可能出现一些断点,例如在语法上可能不正确的单词中间。

如果将这样的单词放在一行的末尾(取决于屏幕分辨率,副本长度,定义的CSS规则),并且浏览器对其应用了错误的换行规则,那么您将最终遇到泰式换行问题您在单词的之前,之后或其他位置定义了另一个断点-浏览器将始终使用他认为最接近EOL的断点,而不仅仅是您通过在标记中插入上述字符之一而轻轻暗示的断点。

这就是为什么您实际上需要专注于不破坏文本的地方(不破坏零宽度空格),而不是允许的地方。这就是使我们回到上面“解决方法”部分中丑陋且冗长的标记示例的原因。这样一来,换行符就只能发生在您允许的范围内,但这很麻烦。

任何其他解决方案
我们将不胜感激如何更有效地处理此问题……还有谁知道,它甚至可能有助于W3C的实现?

谢谢!

最佳答案

我知道这个话题已经有一段时间了,但是作为泰国人我有话要说。我每天都会阅读很多泰国网页,并且我认为当今现代网络浏览器打破泰国线路的质量是完全可以接受的。

据我所知,谷歌浏览器使用ICU4C,Internet Explorer使用Uniscribe API,而Firefox使用libthai将泰语句子分解为单词。我知道对于泰国人来说,这些网络浏览器如何用泰语处理换行符对他们来说是完全可以接受的。 (实际上,我们以前在Firefox(1.x)的早期版本中就有这个问题,但是现在可以解决。)

与西方语言不同,泰语换行和断字仍然被认为是一个尚未解决的问题,许多语言学研究人员仍在积极解决。当前,尚无任何实现可以完美地将泰语单词的句子打断。 IBM ICU Boundary Analysis页面包含有关此问题的一些分析。

很多时候,它与上下文有关。例如,短语“ตากลม” 可以正确地分解为“ตา”,“กลม” “ตาก”,“ลม” 。每种方式都说完全不同的话,但是泰国读者在给定上下文的情况下仍可以完全理解其预期含义。

鉴于您的本地评论者已经熟悉阅读泰国网站,所以我认为他们可能过于急于解决您的问题。对于所有泰国网站,Web浏览器,甚至Microsoft Word,这都是常见的无法解决的问题。

最好等到(或对IBM ICU有所帮助),直到泰语断句实现变得更好为止。让网络浏览器处理此问题。我不认为尝试解决此问题值得您花费宝贵的时间。据我所知,即使是泰国的网站发行商也根本不在乎做到这一点。

如果您需要发布具有完美的换行/断行符的文档,则可以考虑使用其他媒介,例如PDF文档,您应该在其中更好地控制换行符。

希望这可以帮助 :)

关于html - 泰语换行:如何有效地打破泰文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8492763/

10-10 10:31