丁祥欢
再说说Unicode中的特殊符号
2020-10-15 17:20
阅读:9225
标签:Unicode, 特殊字符, Unicode, 组合型字符, 上标字符, Unicode, Unicode, Unicode


  1. 上下标形式的特定字符

有一次在微信朋友圈中,有个符号m2引起了我的兴趣,因为朋友圈的文本没有类似Word这样的富文本格式控制,这个平方米符号是怎么弄出来的呢?

我特意研究了一下,发现原来符号中还有一类上标符号, 比如说1~9的上标字符, 使用时只要输出这个字符放在m后面就好了,它的位置是设计好偏前一点的. 于是我找出来Unicode字符编码表研究了一阵,得到一些如果如下:

下表列出了这些特殊字符的Unicode码值. 将这个码值输入到Word中,选中,再按Alt+X键就可得到,很方便.

符号上标形式下标形式备注
020702080
1B92081上标形式在ASCII码表中就已经定义. 2071是上标字符 i
2B22082上标形式在ASCII码表中就已经定义
3B32083上标形式在ASCII码表中就已经定义
420742084
520752085
620762086
720772087
820782088
920792089
+207A208A
-207B208B
=207C208C
(207D208D
)207E208E
n207F

从上表可以看出, 上标字符与下标字符除了上标1,2,3之外, 都定义在Unicode码值为2070~208E这一段.  上标1,2,3因为很常用, 早在ASCII码表中就得到了规定,编制Unicode的后人就不再重复规定了.

所以,如果在文本中编写如下公式:

(latex公式实现)

也可以直接用字符来做到的, 指定了正确的字体, 即使在功能简陋的记事本中也可以(这个博客系统反而不行!):

费马定理.png

费马定理.rar

  除了数字与括号之外,还有一些英文字母、希腊字母也有相应的的上标与下标形式,但好象并非全部都有.

不过,如果你的文本文件显示所用的字体不支持这些特殊字符,可能你会看到一个个的问号或是空白. 需要设置一下文本显示使用“支持Unicode字符的字体“ 就好了,比如Arial Unicode MS.

在手机上, 搜狗输入法(iOS版本的我确定有,其它操作系统的不确定)的符号中有一类叫"角标"的符号,里面收集了不少这样的字符,你可以找找看.

当然,这些字符也只是能力比较有限的表达手段, 要想专业、复杂、而又美观的显示公式, 还是得借助专业的工具,比如公式编辑器,Tex语法或专业软件等等。


2. 看起来相似,实际上大不同的字符.

我们不妨叫它"形似神不似"的字符.

之前,我以为定义一个符号很简单,指定一个形状与一个编码就好了,但了解之后才发现, 有的符号在不同的场合或不同的领域有不同的意义, 很可能肉眼看到的同一个符号,其后台可能并不是同一个字符.

在这样的情况,哪些视为同一字符,哪些视为不同的字符,其实是个比较伤脑筋的事,没有我们想像的那么简单!好在这样的事不用我们管,Unicode标准组织想好了相应的规则或具体进行了划分和指定,在字符的说明中指了出来。

一个不太严格的例子就是全角字符与半角字符,看起来相像,实际上是不同的字符(码值不同). 下面举一个更极端的例子,一个中间分隔点有这么多变化,而且都是合法的Unicode字符.

中间圆点圆点符号的不同定义.png

还有一种情况是, 单一的特殊字符与用多个字母表示的字符,如一些特定组合℡、™、㏙  、℻ ,或者是罗马数字Ⅳ  、Ⅷ、Ⅻ 等,他们都有特定的字符编码,与用英文字母拼凑出来的组合当然是完全不同的字符。

这样的现象会造成一些迷惑性的问题,比如你在某些场合使用了这类特殊字符, 但查找时又用了英文拼合的字串(或者其它的相似字符)去搜索,很显然计算机会告诉你找不到!  

以前有一种网址欺骗的手段,也是基于这样的原理, 以其它字符集或编码的外形相同的字符来构建一个看起来相同的网址诱导你去点击, 让你以为那是正确的网址。 由于用户判断时往往只看外形,不会去解析它的码值是否正确,也就不能分辨是否真实的网址, 结果就中招了.


3.组合型字符

而且,Unicode中还有更有意思的字符, 比如定义在Unicode码值 0300~036F区间的组合型字符, 它们可以和前面输入的字符进行组合显示。

换句话说,它们显示时不占有字符的宽度,这样后一个字符就显示在前一个字符的位置上,造成两个字符的叠加而达到特殊的显示效果。但这一情况显然即不属于Latex之类的排版语法的控制,也不是Word的上下标或公式编辑器等特殊对象带来的排版效果,这个可能是从字体显示技术上取巧了。

组合符号.png

在Word中演示一下: 我是一个化学生, 想显示氧原子带有一对孤对电子的样子,选中了上图中的0308组合字符. 在前面输入一个大写的氧原子,后面输入0308,再选中0308,按Alt+X,即可以得到如下的字符:

组合字符示例1.png

组合型字符.rar

这个不需要特殊的画图或插入图片,可以和其它文字一样正常排版.

测试之后我发现,这种显示与字体有关系,不是每种字体都能正常显示,比如"楷体","宋体"不行,但是Arial, 微软雅黑没有问题,即使在记事本中也可以正常显示. 如果按退格键往前删除,可以看到先消失顶上两个小黑点,再消失那个字符O.

利用上面提供的各种小符号,就可以组合出不同的扩展样式出来了.

这样的组合型字符还不止0300~036F这一段,别的地方也有定义,我就不展开了。有兴趣的请参见我上一篇博文中分享的文件Unicode Charts.

转载本文请联系原作者获取授权,同时请注明本文来自丁祥欢科学网博客。

链接地址:https://wap.sciencenet.cn/blog-1213210-1254501.html?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?