2014-09-22 125 views
0

在Linux上使用并使用Qt框架。 所有.ttf字体位于/ usr/lib/fonts /中。 如果我在这个文件夹中同时保存日文和中文,日文将使用中文字体;如果中文字体被删除,日文字体可以正常显示,所以我认为这是一个优先问题。.ttf Qt中的字体优先级

而且我还注意到有一篇文章在网上讨论如何使用fontconfig来解决这个问题。 然而,有没有在应用程序/ fontconfig的-2.8.0/src目录/ conf.d font.conf,而是有很多的.conf喜欢的:

10-autohint.conf 
10-no-sub-pixel.conf 
10-sub-pixel-bgr.conf 
10-sub-pixel-rgb.conf 
10-sub-pixel-vbgr.conf 
10-sub-pixel-vrgb.conf 
10-unhinted.conf 
20-fix-globaladvance.conf 
20-unhint-small-vera.conf 
25-unhint-nonlatin.conf 
30-metric-aliases.conf 
30-urw-aliases.conf 
40-nonlatin.conf 
45-latin.conf 
49-sansserif.conf 
50-user.conf 
51-local.conf 
60-latin.conf 
65-fonts-persian.conf 
65-khmer.conf 
65-nonlatin.conf 
69-unifont.conf 
70-no-bitmaps.conf 
70-yes-bitmaps.conf 
80-delicious.conf 
90-synthetic.conf 

那么,哪一个我应该使用?

顺便说一句,fc-list总是对我没有任何帮助。

任何帮助和提示将不胜感激。

回答

0

没有特定的文件可以使用,它们按照命名顺序进行评估,因此10-foo.conf中的指令将在90-bar.conf中的指令之前读取。然而,配置语言允许覆盖,所以以前并不总是更强。在现代fontconfig安装中,您经常会发现诸如“如果区域设置是日文比较喜欢日文字体”的规则,并且只有在最后评估时才能使用。

通常,当您的应用/环境未向字体系统提供目标语言环境时,您会遇到问题。由于unicode统一,字体系统无法推断出是否需要日语中的中国式字形来自代码点,因此需要明确告知。因此,如果您正在强制执行en_US语言环境而不是使用中文或日语语言环境,则至少有50%的机会会导致系统错误。

然后,即使您确实声明了正确的语言环境,所有应用程序也不会将其正确传播到字体堆栈,这就是所有要填充的错误。

没有简单或简单的解决方案:确保你没有在系统中说谎,你的语言环境是固定的,如果你无法忍受,填写仍然不适用的应用程序的错误。

另一种方法是通过卸载或隐藏其中一种字体集来强制执行单一样式的呈现,但如果您需要显示该语言,也会中断该语言的呈现。