Unicode控制字符
一、前言
在所有主要的Web浏览器中内存中的字符顺序(逻辑)与它们显示的顺序(可视)是不同的。Unicode 定义了它其中每个字符的方向属性,浏览器应用的一组规则(通过这个来进行自动判断文本Unicode方向属性应该使用哪种方向)在显示时产生正确的顺序由Unicode双向算法进行描述,也可简称为BIDI算法。控制字符,有时候也称非打印字符,是出现在特定的信息文本中,表示某一控制功能的字符。这类字符并不显示,只包含某种特定的功能。
二、Unicode方向属性
Unicode方向属性包含以下三种类型:
- 强字符:大部分的字符都属于强字符,比如英文字母、汉字和阿拉伯字母。它们的方向性是确定的(英文字母是从左到右,而阿拉伯字母则从右到左),和其上下文的bidi属性无关。并且,强字符在bidi算法中可能会影响其前后字符的方向性;
- 弱字符:数字和数字相关的符号属于弱字符。它们的方向性是确定的,但对其前后字符的方向性不会产生影响;
- 中性字符:大部分的标点符号和空格属于中性字符。它们的方向性是不确定的,由上下文的bidi属性来决定其方向。
方向性 | 相关字符 | 效果 |
---|---|---|
Left-to-Right (LTR) | 强字符从左至右(英文字母、汉字以及世界上大部分从左到右书写的文字) | 方向性确定,LTR,和上下文无关。并且可能会影响其前后字符的方向性。 |
Right-to-Left (RTL) | 强字符从右至左(阿拉伯文字、波斯语以及大部分从右到左书写的文字) | 方向性确定,RTL,和上下文无关。并且可能会影响其前后字符的方向性。 |
Left-to-Right (LTR) / Right-to-Left (RTL) | 弱字符(数字和数字相关的符号) | 和强字符一样方向性也是确定的,但是不会影响前后字符的方向性。 |
Neutral | 中性字符(大部分标点符号和空格) | 方向性不确定,由上下文环境决定其方向。 |
2.1 全局方向
也可以成为基础方向。全局方向是一个区域中的总体方向。中英文环境一般是 (LTR) 从左至右,而阿拉伯文环境则为 (RTL) 右至左的书写顺序。我们可以通过dir
属性或者direction
样式,设置指定方向。
2.2 方向串
方向串是指在一段文字中具有相同方向性的连续字符,并且其前后没有相同方向性的其它方向串。如以下例子: