回车和换行

其实回车和换行之所以把大家搞迷糊的一个重要原因,是大家把键盘的 “回车键”(0x0d表示“回车”)和我们在Windows的txt文件下敲下的回车键等情况搅在了一起。在键盘上敲下回车键,在不同软件下获得字符大有不同。
  Windows下在txt文件中敲下回车键,然后16进制观察,你会发现获得了2个字符,0x0d和0x0a,这个大家都知道,但这不意味着,在任何情况下敲下回车键,都会获得0x0d和0x0a。
  在Linux下,你对一个文件,敲下回车键,你就会发现,它每次只增加一个字符。

  0x0d就是\r,即return,代表光标回到改行的起始位置
  0x0a就是\n,即new line,代表重新增加一行
具体来说,对于一个字体引擎,究竟使用那个(些)字符作为新开一行的标识,实际上是由字体引擎自己决定的。但是它从外边接受到的回车动作所代表的字符却不一定和字体引擎的一致。例如,如果一个GUI上收到一个键盘的回车键消息,且其对应的字符是\r\n即0x0d 0x0a,而字体引擎本身却只使用\r作为"回车"的标识(就像Linux那样),在这种情况下,字体引擎就需要进行字符过滤,即当收到消息的参数为0x0d的时候,需要判断下一个字符为0x0a,然后将这个字符过滤掉,因为字体引擎本身没有对应0x0a的轮廓字形,所以就显示乱码了。
posted @ 2009-08-16 17:01  芈希有  阅读(342)  评论(0编辑  收藏  举报