Sublime Text 2 能逻辑上“正确的”显示阿拉伯语字母(虽然不正确,但程序员需要这样的错误)

  计算机中显示Arabic字母会有变形的问题

阿拉伯语要求,是从右到左显示的,并且,阿拉伯语字母在句子中有变形规则,你在计算机界面上(包括大部分编辑器中)看到的 Arabic  字母,并不一定是实际物理上保存的字母的排列顺序和那个字母的形状。显示的时候,字母被变形(连写)处理过了,并从右到左的显示出来。

(一般情况下,)阿拉伯语的数据文件,的是阿拉伯字母的原型,Unicode编码是0x06**在显示的文件的时候,各种显示软件,会根据阿拉伯语的书写规则,执行一套视觉变换操作(shape):变形 & 连写、反向等一系列显示处理。被变形处理(shaped)之后的阿拉伯字的Unicode编码是0xFE**。参考:

 

阿拉伯语字母变形表

 

大部分的编辑器,都完美的解决了Arabic的显示的问题,Arabic字符串原始数据,无论是没有经过变形处理的,显示的时候,都能按照阿拉伯语的书写规则,变形(连写)之后,在从右到左呈现出来。这种显示处理,显然对(不懂阿拉伯语的)程序员不太友好,程序员看到的字符,并不是实际保存的字符!

试用了许多文本编辑器, 终于找到了 Sublime Text 2能不变形(&不连写)的显示 Arabic 字母 (不进行视觉处理),而且还是从左到右显示的

 Sublime Text 2 编辑器,显示的字符串,是于计算机内部存储字符串一致的。这时阿拉伯语不正确的显示,但是恰恰是程序员需要的。

下图是阿拉伯语字符串:

سمير

显示的例子。下图右边是Sublime Text 2 显示的样式,是“逻辑上正确”的,显示了这个字符串的每一个字母,而且从右到左。

左图是自己编写的一个程序,拆解了阿拉伯语字符串,在显示变形(shape)前后,实际显示的字符上的变化情况。通过程序分析结果可以看出,变形之后的阿拉伯字符的Unicode 是 0FE**。

Sublime Text 2 的缺点也是明显的,不能显示阿拉伯字母的变形后字母(Unicode 是 0FE**)。只能显示阿拉伯字母的“原型”(Unicode是06**),变形过的字母在Sublime Text 2 显示方块中一个?号。

 

 

各种编辑器显示Arabic字母的效果比较:

windows 笔记本:可以正确显示、编辑。

UltraEdit:可以正确显示、编辑。

TED Notepad:显示不正确,只是按照单词“反向”显示,不是按照句子“反向”显示。选中变形之后的字符时,字符会变形成原型。

Sublime Text2:显示不正确,但是显示的字符,与实际保存的字符是一致的。没有变形、连写和“反向”处理。

 

 

RJ TextEd:显示不正确,只是按照单词“反向”显示,不是按照句子“反向”显示。选中变形之后的字符时,字符会变形成原型。

Code::Block:显示似乎正确。光标控制似乎不正确。

 

 

 

 

posted on 2021-12-06 12:32  johnphan  阅读(776)  评论(4编辑  收藏  举报

导航