数据流
本节讨论了双向文本环境的数据流。
双向文本环境使用以下数据流:
| 数据流 | 描述 |
|---|---|
| 可视数据流 | 系统按照字符在屏幕上显示的次序组织字符。 如果可视数据流从左向右显示,数据流的第一个字符就是视区(viewport,如屏幕、窗口、行、字段等)的左端。 如果同一数据流在右至左的视区中显示,那么数据流的首字符在右。 如果书写方向相反的语言嵌入到该可视数据流中,当视区方向反转时,每种文本的顺序保持不变。 例如,(小写文本表示双向文本),如果击键顺序如下: 那么可视数据流是: 这段显示在左至右视区的可视数据流是左对齐的,如下所示: 箭头表示阅读方向。 如果将视区方向改为右至左,那么可视数据流将反向,变成右对齐并且不可读,如下所示: 因此,如果英文文本嵌入了阿拉伯语或希伯来语文本,那么只有在左至右视区中两种文本才都能处于正确的阅读顺序。 对于嵌入英语中的阿拉伯语或希伯来语,亦是如此。 反转视区方向使两种文本都不可读。 |
| 逻辑数据流 | 系统按照可读顺序组织字符。 双向表示管理函数以可读顺序排列文本字符串。 如果逻辑数据流显示在左至右视区中,那么数据流的首字符显示在左端。 如果同一数据流在右至左的视区中显示,那么数据流的首字符显示在右端,尽管这样依然以可读顺序显示。 如果书写方向相反的语言嵌入了该逻辑数据流,由双向表示管理函数来保持每种文本的方向。 例如,如果击键顺序如下: 那么逻辑数据流相同。 例如: 这段逻辑数据流在左至右视区(左对齐)中表示如下: 这段逻辑数据流在右至左视区(右对齐)中表示如下: 该逻辑数据流按照两种视区方向都可读。 |