“文案/乱涂乱画是怎么打出来的?”的版本间差异
(创建页面,内容为“你们是否见过这种评论?像是在纸上写错字胡乱涂改的痕迹。今天这期视频将会告诉你这是什么以及它是怎么打出来的。<br> 在此之前,我需要先讲一下Unicode组合字符的相关知识。 何为组合字符?组合字符又叫合成字符,是用来定位联合其它基本字符的一类字符。<br> 在中文拼音里,四种声调便可以使用组合字符实现。你甚至可以给声母也加上组合…”) |
(没有差异)
|
2022年6月16日 (四) 14:15的最新版本
你们是否见过这种评论?像是在纸上写错字胡乱涂改的痕迹。今天这期视频将会告诉你这是什么以及它是怎么打出来的。
在此之前,我需要先讲一下Unicode组合字符的相关知识。
何为组合字符?组合字符又叫合成字符,是用来定位联合其它基本字符的一类字符。
在中文拼音里,四种声调便可以使用组合字符实现。你甚至可以给声母也加上组合字符,从而构成一个不存在且没什么用的字符。
然而对于大部分人而言,你们经常见到的是已经组合好且只占一个Unicode码位的字符。
把它们放大来看,你们可以看出有什么区别吗?很明显它们是一样的,因为字符码位只表示其含义信息,并不规定字形。而字形是由字体文件所控制的。我们可以将这“两”个字符放到这个网站来看,以拆解它们的码位信息。
这样一来就很明显了,第1个仅是一个字符,它就是代表字母A头上加一个第2声调,我们常称其为锐音符。而第2个则是字母A和锐音符组合字符拼起来的看起来像是一个整体的字符。
问题来了:我们可以将其视作同一个字符吗?
对于此类情况,在Unicode 5.0标准这本书上,官方的解释为其严格意义上的等价序列且两种序列必须采用相同的显示方式和诠释方式。那么这样做的意义是什么呢?
举个例子,在日常写文章时,批量替换是非常常用的操作,如果在一篇文档里,我们同时出现了上述两种等价的序列,当我们需要将其批量替换为其它字符时,我们期望的是,两者可以被同时替换。这也是Unicode标准所倡导的。那么,我们来看看市面上常用的文字处理软件可不可以实现呢?首先请出我们的元老级记事本,我们将这两个字符序列输入进去。然后将其替换为字母B。嗯,非常成功!接着,我们来看看Word的表现吧。可以注意到左下角的字符个数为2个,感觉有戏。然后进行批量替换操作。然而并没有成功。最后我们来看看浏览器对这类字符的处理情况吧。打开Chrome随便进入一个有输入框的网页,将二者输入,然后按Ctrl+F进行查找。输入任意一个字符,可以看到这两个都被标黄了,但是,再往下翻看可以发现字母A和a也同时被标黄了。其它浏览器和WPS的处理情况小伙伴们可以自行测试,我也会把视频中的测试字符发到评论区中。
由上面的实验结果来看,各类软件对Unicode此类标准的执行情况并不是很好。
让我们移至下一个问题:既然可以通过基本字母和组合字符结合的序列实现所需的效果,那么为什么还要单独分出一个码位给组合好的字符呢?
在回答这个问题之前首先我们要知道这么两点知识:
- 并不是所有基本字母和组合字符结合的序列都会单独分出一个码位。通过查看Unicode拉丁文拓展区我们可以发现,大部分带有装饰的字符都是一些传统意义上的元音字母。当然还有一些辅音字母,比如拉脱维亚语里就会在一些辅音字母上方或下方加上一个逗号一样的装饰。像是亚欧的一些小语种,比如瑞典语,芬兰语,土耳其语,越南语。字母的装饰更是数不胜数。既然设立了这么一个拉丁文扩展区,为的就是将这些常用的字母整合起来方便处理。当然西里尔字母,阿拉伯字母,还有印度和东南亚的一些元音附标文字的处理方式,也是根据具体需求由相关专家共同研究制定的。像是阿拉伯语中的各种静符和动符,都是相当规范的,Unicode中并没有为其与所有字母的组合都分配码位。
- 理论上来讲,所有组合字符可以应用于任何基本字符。这意味着你可以把拼音里的声调加到汉字上,只不过并没有什么含义罢了。而实际打印出来的样式也没有像想象中那样,这是字体所导致的,因为字体开发者也并没有预想到会有人这么做。一些西文字体对各种拉丁字母和组合字符的处理还是不错的。还是看看远处的新罗马吧家人们。
说了这么多,终于可以解答最初的问题,这些东西是怎么打出来的?
通过将这一团的文字拆解以后,我们可以发现它们全都是一些组合字符,一些位于基本字符上方一些位于下方,由于叠加数量不受限制并且甚至可以穿过整个的文字框结构,才会造成各种字符糊在一起的现象。粗略估计这么一段话所包含的字符个数为114514个。不知道有人是否记得曾经在贴吧也有一团类似的字符,只不过那个更长,当时如果将其复制到QQ的输入框会直接将软件卡死。不知道现在的QQ对此类字符的显示优化会是什么样子?有兴趣的小伙伴可以去试试。
写下这篇视频的文案以后,才发现本来要讲的一些知识还没有讲,一方面是限于篇幅限制,一方面是讲这么多内容未免有些枯燥。比如使用组合字符时与基本字符的排序问题,还有多重合成字符的规范化等等。如果你喜欢这期视频,还请动动小手给个三连支持。想看更多语言文字的科普视频欢迎关注我!我们下期再见。