((̵̵́ ̆͒͟˚̩̭ ̆͒)̵̵̀)一堆符号挤在一起的组合文字表情
发布时间:2016-03-05, 16:44:19 分类:HTML | 编辑 off 网址 | 辅助
图集1/5
正文 1882字数 374,210阅读
((̵̵́ ̆͒͟˚̩̭ ̆͒)̵̵̀)我是小叮当 ˡ̩˙̮̑͞͡˓̱ͯ˙̮̑͏͜ˉ̀ᵓ̗ͮ̕我是大雄 ˱ˏ́ˡ̩̀ʰ᷆͡͡˓̬ˡ̀͏͜ʰ᷆ᵓ̗̀̕ˎ̀˲我是静香 (ᴑ̨̨̍̆͞͡ ͦ̆ ॑ᵓ̩̗̍我是胖虎 ˡ̗͐͐͟ˋ̨̮̑͞͞ˊ̮̑͏͜ʹ̍ᵓ̗ͥ我是小夫。这里排版上有点乱,但也基本可以看出个大概,具体见下图。第一个图在网易跟帖看到的原始贴。
第二个图我尝试复制到微博里,发布出来在手机上显示的效果。但是与原贴略有不同,尤其是大雄和静香。
第三个图是同一条微博在电脑上的显示,更加糟糕了。
问题就是:1. 如不用专门软件,这种一堆符号挤在一起的组合是如何打出来的。2. 为什么在不同的场合下显示不同,原理是什么。

拿 ((̵̵́ ̆͒͟˚̩̭ ̆͒)̵̵̀) 举例子吧。
首先我们看看这一坨符号有多长。

答:20个字符。
然后一个一个看这些字符是什么就可以了。

有几个比较好认。比如左小括号"(",右小括号")",还有空格" "。
剩下的字符我们来看看它们的Unicode码。

前面两个都是左小括号(U+28):(
第3个符号(U+335)叫Combining Short Stroke Overlay(组合短连字符),效果是上个字符和这个字符之间会出现一个不占空间的短横线。举个例子:a̵b。
第4个符号(U+301)叫Combining Acute Accent(组合尖音符),用于标某些字符的重音用。显示效果是在它前面一个字母的顶上出现一个声调符号。使用方式如下:X́
第5个符号又是U+335。
然后是U+20,空格。
第7个符号是U+306,Combining Breve(组合短音符),开口向上的半圆弧,标在上个字母的上方,表示短元音用:Ŭ。
第8个符号是U+352,Combining Fermata(组合延音符),是用在五线谱记谱的一个特殊符号,标在上一个字母的上方,表示该音符延长发声。形状就像一个半圆弧中间一个圆点:B͒。
第9个符号是U+35F,Combining Double Macron Below(组合双下长音符),就是两倍长的普通长音符,形状就像两倍长的下划线:U͟E。
第10个符号是U+2DA,Ring Above(上圆圈)(这个:˚ 注意这不是一个组合字符,所以这个字符会独占一个字符的空间,而前面的那些组合xxx字符都是不占空间的。)
第11个符号是U+329,Combining Vertical Line Below(组合下垂直线),上一个字母下部附加上的一个短竖线:O̩。
第12个符号是U+32D,Combining Circumflex Accent Below(组合下扬抑符),在上一个字母下部附上一个^形状的符号:Ḙ。
第13个符号U+20,空格。
第14个符号U+306,开口向上的半圆弧(不占空间)。
第15个符号U+352,一个半圆弧中间一个圆点(不占空间)。
第16个符号U+29,)
第17个符号U+335,在前一个符号上附着一个连字符。
第18个符号U+300,Combining Grave Accent(组合重音符),在上一个字母上面出现一个`符号,方向刚好和前面的U+301相反:X̀。
然后又是一个U+335,又来一个连字符。
最后是U+29,最后一个右小括号完成。
分析完毕。
显示最准的是你微博iPhone上显示的那张图。

我们再来对照这个图看一遍估计就能看懂了。
首先这一堆字符里面有普通字符(占一个字符空间)和组合字符(附着在前一个字符之上)。
一共7个普通字符:(( ° ))
两个左小括号、空格、上圆圈、空格、两个右小括号。
然后我们来看每个普通字符上都附着了哪些组合字符。
第一个左小括号,没有附着组合字符。
第二个左小括号,附着了U+335,U+301,U+335。于是在这个小括号上面会出现一个尖音符号(很像拼音的二声的那个符号),并且还有两个短横线。
然后是空格,这个空格上附着的组合字符是:U+306、U+352(分别是下圆弧和延音记号,组成了一只眼睛。)、U+35F(最下面那条线)
上圆圈,这个符号后面附着了两个字符:U+329、U+32D,就是那个圆圈下面的竖线和尖号。
又一个空格,附加了U+306和U+352,组成另一个眼睛。
然后是右小括号,上面附加了U+335、U+300、U+335,组成那个小括号上两条横线和上面的声调符号。
最后一个没有附加字符的右小括号结束。
http://unicode-table.com/en/
Run code
Cut to clipboard
(支付宝)给作者钱财以资鼓励 (微信)→
有过 1 条评论 »
怎么打出来?
答:复制。
题主肯定会追问,去哪复制?
答:Unicode® character table,找到你要的Unicode字符点复制即可。
为什么在不同的场合下显示不同,原理是什么?
答:每种字体对Unicode各种字符的支持都不一样,不同的渲染环境对各种字符的支持也不一样。
Unicode说到底只是制定了一个字符集,告诉大家世界上所有的字符并给它们编了号,不是每个环境都能完全支持Unicode中的每一个字符的。
还有不同的渲染环境对于同一个字符,尤其是这种无宽度的组合字符的渲染策略不同。
比如在同一个位置上出现的两条组合连字符,有些系统就会渲染到一起,看起来是一条线,而有些系统就会在轴上区别高度渲染,你就能看到两条线。