我的中文字体为什么这么奇怪?

具体情况是: 不同的文字用的是不同的字体。

最先是在Emacs里发现的,如下图

有一些生僻字的字体和常见的不一样,我觉得是我的Emacs没设置好,而且这些字也不常用,就没有在意。

可是最近在用spyder IDE时也发现了类似的问题,而且表现得更为严重,一些常用字都显示得怪怪的: 上图中“是”就用了不同的字体。

有没有人知道这是什么原因,是不是系统没设置好的原因,我是Ubuntu 16.04.

生僻字不一样可能是因为你用的字体里面没有这个字。然后就fallback了。

比如你用了日文字体就会这样。然后一些中文字体字符集也不是很全。

不过一些老牌的字体,比如黑体宋体字一类的,估计就不会这样。

换黑体后确实可以了。我原来在Emacs中用的中文字体是仿宋_GB2312

那另外那个难道也是编辑器设置的问题,我在spyder 的font设置里改了好几种字体了,显示都不正常。

另外一个我没用过,但是可能不是同样的原因,说不定是编码问题。。

不知道是不是你字体库不全,可以装一下google noto cjk sc

第一个的原因大家已经说了,明显是生癖字在字体中不存在所以 fallback 到另外的字体上了。 第二个推测是 spyder-ide 自身的问题,在 github issue 上也看见了诸如中文字体大小无法修改的 bug(已修复), issue 列表里也有大量 bug report, 看起来是一个活跃的新的 ide,那么有 bug 再所难免。提供你的问题以及详细描述到 github issue 上帮助它改进吧~

PS: 有点强迫症了,你试试在注释符 # 后面加个空格吧,说不定和 py 标准有关系(我也不知道我在扯什么哈哈哈

我已经装了许多中文字体了,包括 noto。

可能确实是spyder的bug吧。 @smallst

我的/etc/fonts/conf.avail/64-language-selector-prefer.conf是这样子的。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
	<alias>
		<family>sans-serif</family>
		<prefer>
			<family>Noto Sans CJK SC</family>
			<family>Noto Sans CJK TC</family>
			<family>Noto Sans CJK JP</family>
		</prefer>
	</alias>
	<alias>
		<family>monospace</family>
		<prefer>
			<family>Noto Sans Mono CJK SC</family>
			<family>Noto Sans Mono CJK TC</family>
			<family>Noto Sans Mono CJK JP</family>
		</prefer>
	</alias>
</fontconfig>

默认配置是日文在第一个,我现在修改成这样后,然后重启电脑。字体问题就好多了。至少“门”,再也不会是那个奇怪的“门”了。