Qt中的.ttf字体优先级

时间:2014-09-22 23:05:01

标签: linux qt fonts true-type-fonts

使用Linux并使用Qt Framework。 所有.ttf字体都在/ usr / lib / fonts /中。 如果我将日文和中文都保留在此文件夹中,日文将使用中文字体;如果删除中文字体,可以正确显示日文字体,因此我认为这是一个优先问题。

我还注意到有关如何使用fontconfig解决此问题的在线帖子。 但是,在apps / 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

我应该使用哪一个?

BTW,fc-list总是不给我任何东西。

非常感谢任何帮助和提示。

1 个答案:

答案 0 :(得分:1)

没有特定的文件可供使用,它们按命名顺序进行评估,因此在90-bar.conf中的指令之前将读取10-foo.conf中的指令。但是配置语言允许覆盖,因此早期并不总是更强。在现代fontconfig安装中,您经常会找到类似&#34的规则;如果区域设置是日语,则更喜欢日语字体"它们只有在最后评估时才有效。

通常,当您的应用/环境未向字体系统提供目标区域设置时,您会遇到问题。鉴于unicode han统一,字体系统无法推断出是否需要日语中的代码点的中文字形,需要明确告知。因此,如果您正在执行强制en_US语言环境而不是使用中文或日语语言环境,那么您至少有50%的可能性会使系统出错。

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

没有简短或简单的解决方案:确保您不会将您的语言环境置于系统中,如果您无法解决问题,请修复您的语言环境,填写尚未应用它的应用程序上的错误。< / p>

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

相关问题