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



相关文章
|
存储 自然语言处理 算法
|
2月前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
11天前
|
算法 数据安全/隐私保护 索引
OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度
本项目展示了在MATLAB 2022a环境下,通过选择映射(SLM)与相位截断星座图(PTS)技术有效降低OFDM系统中PAPR的算法实现。包括无水印的算法运行效果预览、核心程序及详尽的中文注释,附带操作步骤视频,适合研究与教学使用。
|
19天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
20天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
21天前
|
存储 算法 决策智能
基于免疫算法的TSP问题求解matlab仿真
旅行商问题(TSP)是一个经典的组合优化问题,目标是寻找经过每个城市恰好一次并返回起点的最短回路。本文介绍了一种基于免疫算法(IA)的解决方案,该算法模拟生物免疫系统的运作机制,通过克隆选择、变异和免疫记忆等步骤,有效解决了TSP问题。程序使用MATLAB 2022a版本运行,展示了良好的优化效果。
|
20天前
|
机器学习/深度学习 算法 芯片
基于GSP工具箱的NILM算法matlab仿真
基于GSP工具箱的NILM算法Matlab仿真,利用图信号处理技术解析家庭或建筑内各电器的独立功耗。GSPBox通过图的节点、边和权重矩阵表示电气系统,实现对未知数据的有效分类。系统使用MATLAB2022a版本,通过滤波或分解技术从全局能耗信号中提取子设备的功耗信息。
|
20天前
|
机器学习/深度学习 算法 5G
基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
基于MIMO系统的SDR-AltMin混合预编码算法通过结合半定松弛和交替最小化技术,优化大规模MIMO系统的预编码矩阵,提高信号质量。Matlab 2022a仿真结果显示,该算法能有效提升系统性能并降低计算复杂度。核心程序包括预编码和接收矩阵的设计,以及不同信噪比下的性能评估。
38 3
|
2月前
|
人工智能 算法 数据安全/隐私保护
基于遗传优化的SVD水印嵌入提取算法matlab仿真
该算法基于遗传优化的SVD水印嵌入与提取技术,通过遗传算法优化水印嵌入参数,提高水印的鲁棒性和隐蔽性。在MATLAB2022a环境下测试,展示了优化前后的性能对比及不同干扰下的水印提取效果。核心程序实现了SVD分解、遗传算法流程及其参数优化,有效提升了水印技术的应用价值。