ส็็็็的秘密
字符长高咯~是不是很有趣?

在讲解进行之前,让我们先做一个小实验。















请将这个字符ส็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็复制到一个空白的Word文档中,增加字号,并调整行距为500磅左右。

是不是变成下图这样?
138616


138617

此时,默认字体显示为“Tahoma”。如果你试着删除它,就会发现这是一件不容易的事:你需要连按几十次Backspace,才能让它从屏幕上消失。神奇的是,在删除它的过程中,字符的“身高”会越变越矮。

接下来,将行距调整回单倍,并为这个字符应用“Symbol”字体。
138618

你猜到了什么?

没错,神奇的字符是由一个起始部分与多个重复部分组成的,这是它能长高的原因。

如果将其复制到GOOGLE搜索栏,网页会提示文字太冗长而无法进行搜索,这也证实了上文的发现。



而在刚才的小实验中,眼尖的同学可能看出这些会长高的字符都是泰文组成的。



恭喜!经过我们的努力,谜底已经揭开了三分之二,下面就请允许我来介绍剩余的部分。





ฐ้้ฐ้้้ฐ้้้้ฐ้้้้้ฐ้้้้้้ฐ้้้้้้้ฐ้้้้้้้้ฐ้้้้้้้้้ฐ้้้้้้้้้้ฐ้้้้้้้้้้้ฐ้้้้้้้้้้้้ฐ้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฐ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้

根据泰文的拼写规则,常将字符分为鞋子字符、帽子字符、主体字符、声调字符、独立字符、标点字符。  
138620

图示中的 ส 编码为0E2A、即主体字符;所谓的“绕绕(็)“编码为0E47、即帽子字符。
按照拼写规则,,帽子字符必须是叠加在主体字符之上的。因此,正常的泰文拼写应该是像”ส็“这样。
至于发射过远,应该是泰文编码时设计者未考虑到重复叠加”帽子“或者”声调“而产生的BUG。毕竟,主体字符上是可以叠加帽子字符的,帽子字符上又是可以叠加声调字符;再者,主体字符下还可以叠加鞋子字符,确实难以限定叠加层数。

至于如何显示,主体字符的Unicode 编码+声调字符(或者帽子字符)的Unicode 编码即可。比如刚才例子中的图形编码为:
  138621

有兴趣的同学请参阅:

泰文排版规则:http://blog.sina.com.cn/s/blog_5d8cc6410100s2ux.html

泰文(Thai) Unicode 编码表:http://www.nengcha.com/code/unicode/class/31/



当然,不仅仅是泰文。

例如:「I think there's a smudge on.̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̨̨̨̨̨̨̨̨̨̨̨̨.̸̸̨̨your screen」



这个效果主要是利用 Unicode U+0300 到 U+03FF 区的组合标记 (combining marks) 实现的,这些标记本身没有水平“增量”(advance),只会重叠在前一个非 combining mark 的字符上。

上面这段,其实组成就是首先一个 U+002E,也就是【 .】小数点,然后放一堆 U+0338,也就是你看到的斜杠,这个斜杠叫 NON-SPACING LONG SLASH OVERLAY,就是负责重叠在一起用的,它没有垂直 advance 也没有水平 advance,所以后一个字符总是会叠在前一个上面,越叠越黑;然后接着用 U+0328,也就是下面一圈圈的弯曲图案,每个是其中的一环,这个字符叫 COMBINING OGONEK,它有垂直 advance 但没有水平 advance,所以后一个字符会接在前一个的下面而不是后面。第二组的原理是一样的,也是先放一个 . 然后接多个 U+0338 和 U+0328。

这是堆在一起的 3 种字符:
U+002E FULL STOP(就是西文句点)
U+0338 COMBINING LONG SOLIDUS OVERLAY(是用于和其他字符组合显示的 solidus,用于分数或金额的斜线 [1],我们一般都用 slash)
U+0328 COMBINING OGONEK(这是用于用于和拉丁字母组合显示的变音符号 [2])

一共有 2 个 U+002E,26 个 U+0338 和 14 个 U+0328:
U+002E U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0338 U+0328 U+0328 U+0328 U+0328 U+0328 U+0328 U+0328 U+0328 U+0328 U+0328 U+0328 U+0328 U+002E U+0338 U+0338 U+0328 U+0328

U+0338 和 U+0328 都是用于「和其他字符组合显示的」字符,所以它们会附着在前一个字符上,它们的位置是相对于前一个字符来确定的。
所以,以 U+002E 为基础,后面的 U+0338 和 U+0328 都依次附着在前一个字符上,就成这样了。其它很多用特殊字符玩的奇怪图形的原理基本也都是这样。
===============完===============

BY KXR

本篇文章根据果壳、知网讨论帖和其他网络资源整理。

原帖地址:

http://www.guokr.com/question/162799/

http://www.zhihu.com/question/19617804

Thanks for your attention...  138619

+25  科创币    jrcsh   2012-06-28   高质量发帖
+10  科创币    delete   2012-06-28   不错
+10  科创币    摩比   2012-06-28   真真正正的牛逼!!!佩服!!!
来自 科创茶话
2012-6-28 21:02:30
1楼
真新鲜~谁用这个字抢注一个用户名一定很拉风。
+1  科创币    jrcsh   2012-06-28   登陆不了就更拉风了
折叠评论
加载评论中,请稍候...
折叠评论
2楼
这是啥编程软件?
折叠评论
加载评论中,请稍候...
折叠评论
3楼
黑苹果系统显示不出来这个字符,XP 无压力。[s:275]
折叠评论
加载评论中,请稍候...
折叠评论
4楼
嘿,还真删不了。。。用的安卓版uc浏览器
折叠评论
加载评论中,请稍候...
折叠评论
2012-6-29 12:24:10
5楼
泰国人是极品,文字也是极品。
折叠评论
加载评论中,请稍候...
折叠评论
6楼
ส็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็


我来试试~~~~
折叠评论
加载评论中,请稍候...
折叠评论
2012-7-1 23:25:33
2012-7-1 23:25:33
7楼
 
















      ส็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็尝试一下
果然很高s
折叠评论
加载评论中,请稍候...
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
ID:{{user.uid}}
{{user.username}}
{{user.info.certsName}}
{{user.description}}
{{format("YYYY/MM/DD", user.toc)}}注册,{{fromNow(user.tlv)}}活动
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png