Unicode双向算法(bidi算法)详解(一)(中)

简介: Unicode双向算法(bidi算法)详解


3
、定向格式化字符的分类


字向格式化字符分为隐式定向格式化字符和显示定向格式化字符两大类,显示定向格式化字符又分为显示定向嵌入格式化字符、显示定向重写格式化字符、显示定向隔离格式化字符,分别简称为嵌入格式化字符、重写格式化字符、隔离格式化字符。其中隔离格式化字符是在Unicode 6.3中引入的。具体的分类规则详见表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

PDF

U+202C

pop directional formatting

嵌入和重写终止符。用于终止LRERLELRORLO的作用范围

显示定向隔离格式化字符

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

隔离终止符。用于终止LRIRLIFSI的作用范围,该终止符还会同时终止LRERLELRORLO的作用范围

4、组合字符

1)、组合字符(Combining character)是指General_Category属性的值为Mc (Spacing Combining Mark,间距组合标记)、Mn (Nonspacing Mark,无间距标记)、Me(Enclosing Mark,嵌入标记)的所有字符。

2)、组合字符通常用于与它的基本字符组合为一个字符,比如

67.png

以上字符由字符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)、注意:HTML5HTML4.0不同,早期版本的bdi元素与隔离(LRIRLI)相对应,bdo元素与重写(LRORLO)相对应。

 

各平台对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代码,比如RLOUnicode代码为U+202E

2)Unicode字符可在Word、浏览器、记事本等应用上以Unicode代码的形式输入,定向格式化字符同样可以被输入,但是不会被显示

3)HTML的格式如下:

&#x+mmmm;(16进制),或  &#+mmmm;(10进制) 注意:末尾有个分号

      示例:&#x0061;表示字符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字符,其界面和使用方法如下图所示

68.png



相关文章
|
存储 自然语言处理 算法
|
6月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
600 0
|
6月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
386 2
|
7月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
331 3
|
7月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
238 6
|
6月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
301 8
|
6月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
346 8
|
6月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
7月前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
369 14

热门文章

最新文章

下一篇
开通oss服务