数据流

本节讨论了双向文本环境的数据流。

双向文本环境使用以下数据流:

数据流 描述
可视数据流 系统按照字符在屏幕上显示的次序组织字符。

如果可视数据流从左向右显示,数据流的第一个字符就是视区(viewport,如屏幕、窗口、行、字段等)的左端。 如果同一数据流在右至左的视区中显示,那么数据流的首字符在右。

如果书写方向相反的语言嵌入到该可视数据流中,当视区方向反转时,每种文本的顺序保持不变。 例如,(小写文本表示双向文本),如果击键顺序如下:

THERE IS bidirectional text IN THIS SENTENCE.

那么可视数据流是:

THERE IS txet lanoitceridib IN THIS SENTENCE.

这段显示在左至右视区的可视数据流是左对齐的,如下所示:

THERE IS txet lanoitceridib IN THIS SENTENCE.
-------> <----------------- ---------------->

箭头表示阅读方向。

如果将视区方向改为右至左,那么可视数据流将反向,变成右对齐并且不可读,如下所示:

.ECNETNES SIHT NI bidirectional text SI EREHT
<---------------- -----------------> <-------

因此,如果英文文本嵌入了阿拉伯语或希伯来语文本,那么只有在左至右视区中两种文本才都能处于正确的阅读顺序。 对于嵌入英语中的阿拉伯语或希伯来语,亦是如此。 反转视区方向使两种文本都不可读。

逻辑数据流 系统按照可读顺序组织字符。 双向表示管理函数以可读顺序排列文本字符串。

如果逻辑数据流显示在左至右视区中,那么数据流的首字符显示在左端。 如果同一数据流在右至左的视区中显示,那么数据流的首字符显示在右端,尽管这样依然以可读顺序显示。

如果书写方向相反的语言嵌入了该逻辑数据流,由双向表示管理函数来保持每种文本的方向。 例如,如果击键顺序如下:

THERE IS bidirectional text IN THIS SENTENCE.

那么逻辑数据流相同。 例如:

THERE IS bidirectional text IN THIS SENTENCE.

这段逻辑数据流在左至右视区(左对齐)中表示如下:

THERE IS txet lanoitceridib IN THIS SENTENCE.
-------> <----------------- ---------------->

这段逻辑数据流在右至左视区(右对齐)中表示如下:

IN THIS SENTENCE. txet lanoitceridib THERE IS
----------------> <----------------- ------->

该逻辑数据流按照两种视区方向都可读。