3、定向格式化字符的分类
字向格式化字符分为隐式定向格式化字符和显示定向格式化字符两大类,显示定向格式化字符又分为显示定向嵌入格式化字符、显示定向重写格式化字符、显示定向隔离格式化字符,分别简称为嵌入格式化字符、重写格式化字符、隔离格式化字符。其中隔离格式化字符是在Unicode 6.3中引入的。具体的分类规则详见表2
表2 定向格式化字符的分类 |
||||
类型 |
控制符 |
Unicode代码 |
简述 |
说明 |
隐式定向格式化字符 |
LRM |
U+200E |
left to right mark |
从左到右的零宽度字符 |
RLM |
U+200F |
right to left mark |
从右到左的零宽度非阿拉伯字符 |
|
ALM |
U+061C |
arabic letter mark |
从右到左的零宽度阿拉伯语字符 |
|
显示定向嵌入和重写格式化字符 |
LRE |
U+202A |
left to right embedding |
嵌入。把后面的文本看作是从左到右(LRE)或从右到左(RLE)的嵌入 |
RLE |
U+202B |
right to left embedding |
||
LRO |
U+202D |
left to right override |
重写。强制改变其后的文本的方向为从左向右(LRO)或从右向左(RLO) |
|
RLO |
U+202E |
right to left override |
||
U+202C |
pop directional formatting |
嵌入和重写终止符。用于终止LRE、RLE、LRO、RLO的作用范围 |
||
显示定向隔离格式化字符 |
LRI |
U+2066 |
left to right isolate |
从左到右(LRI)或从右到左(RLI)的隔离之后的文本 |
RLI |
U+2067 |
right to left isolate |
||
FSI |
U+2068 |
first strong isolate |
隔离之后的文本,文本的方向由第一个非嵌套在隔离中的强字符决定 |
|
PDI |
U+2069 |
pop directional isolate |
隔离终止符。用于终止LRI、RLI、FSI的作用范围,该终止符还会同时终止LRE、RLE、LRO、RLO的作用范围 |
4、组合字符
1)、组合字符(Combining character)是指General_Category属性的值为Mc (Spacing Combining Mark,间距组合标记)、Mn (Nonspacing Mark,无间距标记)、Me(Enclosing Mark,嵌入标记)的所有字符。
2)、组合字符通常用于与它的基本字符组合为一个字符,比如
以上字符由字符g (u+0067)和 (U+0308)组合而成,其中字符g就是基本字符,而U+0308就是组合字符。
3)、无间距标记(Mn)通常不单独占据空间位置,其占据的位置取决于它的基本字符。
5、零宽度字符 ( LRM、RLM、ALM )
表2中的LRM、RLM、ALM是一种零宽度字符,可将其理解为在该处插入了一个相应方向的强字符,但该字符是不可见的(宽度为零所以不可见)。比如aLRMb,相当于在a和b之间插入了一个从左向右的强字符,但该字符宽度为零且不可见(即不会被显示)。
6、与定向格式化字符对应的HTML5元素和CSS等效项
1)、HTML5没有提供对LRE、RLE、LRO、RLO的精确等效项,可使用CSS来获取LRE、RLE、LRO、RLO、LRI、RLI、FSI的精确等效项。表3为HTML和CSS与bidi算法的等效情形。由表3可见,在HTML5中,bdi元素更多用于对字符的隔离,以避免文本被周围字符方向性所影响,或避免隔离的文本影响周围字符的方向性,而bdo元素主要用于强制改变文本的方向性。
2)、注意:HTML5与HTML4.0不同,早期版本的bdi元素与隔离(LRI、RLI)相对应,bdo元素与重写(LRO、RLO)相对应。
表3 各平台对bidi算法的实现 |
||
bidi算法 |
HTML5的等效项 |
CSS的等效项 |
RLI ... PDI |
dir = "rtl" (任意元素的dir属性) |
direction:rtl; unicode-bidi:isoloate; |
LRI ... PDI |
dir = "ltr"(任意元素的dir属性) |
direction:ltr; unicode-bidi:isoloate; |
FSI ... PDI |
<bdi>或dir = "auto" |
unicode-bidi:plaintext; |
RLE ... PDF |
无对应元素 |
direction:rtl; unicode-bidi:embed; |
LRE ... PDF |
无对应元素 |
direction:ltr; unicode-bidi:embed; |
RLO ... PDF |
无对应元素 |
direction:rtl; unicode-bidi:bidi-override; |
LRO ... PDF |
无对应元素 |
direction:ltr; unicode-bidi:bidi-override; |
FSI RLO ... PDF PDI |
<bdo dir = "rtl"> |
direction:rtl; unicode-bidi:isoloate-override; |
FSI LRO ... PDF PDI |
<bdo dir = "ltr"> |
direction:ltr; unicode-bidi:isoloate-override; |
7、以Unicode代码(即数字)的形式输入字符
1)、注意:定向格式化字符是Unicode字符集中的一个字符,只是不会被显示出来,每个定向格式化字符都有其对应的Unicode代码,比如RLO的Unicode代码为U+202E
2)、Unicode字符可在Word、浏览器、记事本等应用上以Unicode代码的形式输入,定向格式化字符同样可以被输入,但是不会被显示
3)、HTML的格式如下:
&#x+mmmm;(16进制),或 &#+mmmm;(10进制) 注意:末尾有个分号
示例:a表示字符a
4)、CSS的格式为:+mmmm(16进制)
示例:0061表示字符a
5)、Word的方法如下(注:记事本采用的是Word的第2种方法):
- 方法1:输入相应的Unicode代码,然后选中该代码或在该代码末尾按下ALT+x,这时会把相应代码转换为字符,同时在Word中还可使用ALT+x把相应的字符转换为相应的Unicode代码。
- 方法2:按住ALT键不放,然后以10进制的形式输入Unicode代码,然后释放ALT键,便会产生相应的字符,比如,按住ALT键,同时输入97,然后释放ALT时便会产生字符a。
- 方法3:选择【插入】---【符号】---【其他符号】,弹出一个对话框,在该对话框中插入Unicode字符,其界面和使用方法如下图所示