泰国破线:如何有效打破泰国文本

joo*_*ooc 28 html css unicode internationalization browser-bugs

在客户端站点上使用泰语文本的情况是我们无法控制特定单词/句子在行之间断开的位置(Web浏览器将如何处理它).通常,本地审阅者表示内容外观不正确.

解决 这个问题的方法是,撰稿人需要提供包含破坏​和不间断的零宽度空间字符的泰语内容.

在实践中,而不是:
?????????? ??????????????
我们应该使用丑陋的东西:
??????????​???​???????????

以上只是一个例子,我真的不知道断点的确切位置.
实际上,单独的非零破坏空间也可以做到这一点......使用破碎的零空间以及更高的准确性更加严格和正确.

虽然它确实是可行的,但它对于大型网站内容管理来说也是一个耗时且不是非常有效的解决方案.简单地说,投入的努力与所需的效果不相符.

到目前为止的研究已经导致了所提到的解决方法,寻找更好的方法来处理这个问题.甚至W3C还没有解决方案,只是讨论它是否应该成为CSS3规范的一部分.

泰语很少使用空间,主要用于区分句子等.因此,泰语句子的常见外观是一个looong字符串.当更多行文本放在一起时,在哪里打破这样的字符串由特定的单词标识确定.对于单词识别,使用本地词典,这些词典很可能是操作系统或Web浏览器的一部分,我不完全确定这些.

显然,您检查的Web浏览器/操作系统越多,您获得的结果就越多!此外,由于它是系统驱动的,并且没有"在哪里打破泰国"设置,因此您无法做到这一点.

使用<wbr/>,&#8203;&shy;以指示断点真的是不会阻止的网页浏览器的思想(即使是错误的),一些休息也是可能的地方,在这里你还没有一个字的中间定义他们如这可能是语法上不正确.

如果将这样的单词放在一行的末尾(取决于屏幕分辨率,复制长度,定义的CSS规则),并且浏览器在其上应用了错误的换行规则,那么最终会出现泰语断行问题,无论如何你已经在单词之前,之后或其他地方定义了另一个断点 - 浏览器将始终使用他认为最接近EOL的断点,而不仅仅是你通过在标记中插入一个提到的字符而轻轻建议的断点.

这就是为什么你真的需要专注于不打破文本的地方(不打破零宽度空间),而不是它允许的地方.这就是我们回到上面"解决方法"部分中的丑陋和长标记示例的原因.这样一个换行符只能在你允许它的地方发生,但它很麻烦.

任何其他解决方案 如何更有效地处理这一点将不胜感激......谁知道,它甚至可能帮助W3C实施?

谢谢!

Gan*_*ant 27

我知道这个帖子已经有一段时间了,但我有话要说作为泰国本土人.我每天都阅读很多泰国网页,我觉得现在的现代网络浏览器打破泰国线的质量是完全可以接受的.

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

与西方语言不同,泰语断线和断字仍然被认为是一个未解决的问题,并且仍然被许多语言学研究人员积极处理.目前没有任何实施可以完美地将句子打破泰语单词.IBM ICU 边界分析页面包含对此问题的一些分析.

很多时候,它与上下文有关.例如,短语"ตากลม"可以正确地分解为"ตา","กลม""ตาก","ลม".每种方式都说完全不同的东西,但鉴于上下文,泰国读者仍然可以完全理解其意图.

鉴于您的本地审稿人已经熟悉阅读泰国网站,我想他们可能太过于咄咄逼人地解决了这个问题.对于所有泰国网站,Web浏览器甚至Microsoft Word,这都是常见的无法解决的问题.

最好等到(或者为IBM ICU做出贡献),直到泰语句子实施变得更好.让Web浏览器处理这个问题.我不认为尝试解决这个问题值得您花费宝贵的时间.据我所知,即使是泰国网站出版商也不在乎这一点.

如果您需要发布具有完美行/分词的文档,您可以考虑其他媒介,例如PDF文档,您应该在其中更多地控制换行符.

希望这可以帮助 :)