双向文稿
此条目需要补充更多来源。 (2018年1月31日) |
双向文本(英语:Bi-directional text)用于某些文字上,特别是如阿拉伯语(包含其变体波斯体)和希伯来语等文字是由右至左书写,即从右手边书写而结束于左手边。这不同于世界上的其它许多语言是由左至右书写的。当在同一段落混合使用这两种文字且其各自使用自己的书写方向时,这种文稿被称为双向文稿。如果使用多层的引用时,问题将会变得更复杂。
许多计算机程序无法正确地处理双向文稿。譬如,这个希伯来语的名字 Sarah (שרה),其拼法应为从右至左的:shin(ש)、resh(ר)、heh(ה)。一些浏览器则会以相反的方式来显示希伯来语文句。
有一些书写系统则可以使用任一种方向来书写。如在埃及语的圣书体中,会有一个符号含有"头"(用来标示一行开始的方向)和"尾"(用来标示一行结束的方向)。汉字也可以用于任一方向,特别是用于招牌时(但是个别字符的方向则不会改变)。
另一种称作牛耕式转行书写法的文字,则是用于一些古希腊语碑文、图瓦雷克、古匈牙利文稿(Hungarian runes)中。这种书写方法在写下一行时,会改变书写方向,并且常会反转个别的字符。
双向文稿支援则是指电脑系统可以正确处理及显示双向文稿的能力。其行话则常用BiDi或bidi。
统一码
早期的电脑只设计成支援一种书写方向,传统上是只支援源于拉丁字母的由左至右方向。增加一个字符集和字符编码则不过是多支援一种由左至右的语言,但是无法支援由右至左的文稿,如阿拉伯语和希伯来语,也无法混合使用两者。单纯地把由左至右改为由右至左是可行的,但是这牺牲了处理左至右文稿的能力。若有双向文稿支援,则它可以在同一页混合使用两种文字而不用理会其书写方向。
特别地,统一码准则提供了完整的双向文稿支援,清楚描述如何编码及显示混合左至右及右至左的文句。
在统一码中,所有非标点符号字符都以书写顺序储存。这意味着,字符书写方向的资讯是储存在字符里的。如此的话,这种字符称之为强字符。标点符号可以出现在左至右和右至左的语言里。因为它们没有包含方向上的资讯,所以被称为弱字符。而弱字符要放置于文稿中的方式则是由软件自行决定的。然而,即使依照此双向演算的规则来扫过、辨识强字符,同时指定弱字符的方向,(在混合方向的文字中)有时仍会导致显示上的错误。
在两个具有一样方向的强字符中的弱字符会得到相同的方向。如果一个弱字符处于有着不同方向的强字符中,则会得到主文的书写方向(在左至右文件中,会变成左至右;在右至左文件中,则会变成右至左)。如果一个弱字符跟着另一个弱字符,这个算法会寻找第一个相邻的强字符。有时,这会导致非预期的显示错误。要校正或预防这些错误,用户可以使用假强字符。这类的统一码控制字符被称作“标记”。在文件中插入标记(左至右符号U+200E用于左至右或右至左符号U+200F用于右至左),会使得被包围其中的字符得到同于标记的书写方向。
譬如,在阿拉伯语文章中,要想正确显示用于一个英文名字的品牌的商标符号(U+2122 ™ TRADE MARK),如果商标符号后并没有接着左向右的文句,用户须要在商标符号后加上一个左至右的标记。这是因为如果不加上左至右的标记的话,™这个弱符号就会变介于一个左至右的强字符和一个右至左的强字符之间。于是,在右至左的文档中,它会被认为是右至左,从而以不正确的顺序来显示。
另见
参考文献
外部链接
- (英文)Unicode Standards Annex #9 (页面存档备份,存于互联网档案馆) 双向文稿算法
- (英文)W3C 对于编写双向网页文稿的指引 (页面存档备份,存于互联网档案馆) -包含范例和不错的扩充性。
- (英文)GNU FriBidi (页面存档备份,存于互联网档案馆) 一个统一码双向文稿算法的自由实作
- ICU (页面存档备份,存于互联网档案馆) International Components for Unicode contains an implementation of the bidirectional algorithm — along with other internationalization services
- UCData: "Pretty Good Bidi Algorithm Library" A small and fast bidirectional reordering algorithm that works pretty good, but not necessarily compliant to the Unicode algorithm
- (英文)桌面软件上的双向文稿 自由软件中支援双方文稿的工作小组。包含一些有关在计算机系统中双向文稿的链接。
- (英文)另一个关于双向文稿的维基
- (英文)双向文稿-范例和实作建议 (页面存档备份,存于互联网档案馆)
- .Net (英文)双向文稿实件