Arch Linux里鬼一样的宋体
问题描述
有一天闲着无事,把安装在Windows里的「方正新书宋」复制到Arch Linux里(我购买了这个字体的个人授权,这是合法使用)。
夭寿啦!Emacs的默认中文字体变成了方正新书宋。奇怪的是,如果我在启动后再eval那段字体配置文件,就一切正常了。
不论我怎么折腾,改fontconfig,Emacs的默认中文字体都是方正新书宋,Emacs的配置文件更是一改再改(可以看配置文件的修改记录)。对这个问题我是毫无头绪,欲哭无泪。
解决思路
折腾了快一天,突然想到,会不会是编码捣的鬼呢。在出问题的时候,用describ-char
查看中文字符,得到了preferred charset: chinese-gbk (GBK Chinese simplified.)
,说明Emacs认为这个字符是gbk编码的,而如果把语言环境换成UTF-8:
1 | (set-language-environment "UTF-8") |
Update:
之前写错了,这里有两个长得差不多的函数 一个是set-language-environment
,参数是编码;还有一个是set-locale-environment
,接收的参数是类似zh_CN.UTF-8
的locale-name。
字体配置就正常了。
思考
看来这Linux下同样需要配置UTF-8环境,否则就会出问题,怪不得Hick的指南里开头就是配置UTF-8环境啊[1]。
但问题还没完。为什么Emacs会认为我的环境是GBK而不是UTF-8呢?我的locale关掉了gbk编码它还是这么认为。
未解之谜。如果你知道欢迎留言告诉我。谢谢。
Update:
我稍微深挖了一下,似乎在语言环境设置里面有一段代码把UTF-8
「纠正」成了GBK
,导致就算你用
1 | (set-locale-environment "zh_CN.UTF-8") |
也没法把环境变成UTF-8,得到的还是GBK。我猜测,可能Emacs认为UTF-8是不分什么zh_CN
和en_US
的。
Hick的Emacs中文化指南 ↩
或者您可以把评论发在别处,添加指向本页的连接,然后把网址告诉我:
本文标题:Arch Linux里鬼一样的宋体
文章作者:Chris
发布时间:2016-02-13
最后更新:2022-03-23
原始链接:https://chriszheng.science/2016/02/13/Ghost-Song-in-Arch-Linux/
版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明出处!
分享