【问题标题】:.ttf font priority in QtQt 中的 .ttf 字体优先级
【发布时间】:2014-09-29 23:43:30
【问题描述】:

在 Linux 上工作并使用 Qt 框架。 所有 .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

那么我应该使用哪一个?

顺便说一句,fc-list 总是给我什么。

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

【问题讨论】:

    标签: linux qt fonts truetype


    【解决方案1】:

    没有要使用的特定文件,它们按命名顺序进行评估,因此 10-foo.conf 中的指令将在 90-bar.conf 中的指令之前读取。然而,配置语言允许覆盖,所以更早并不总是更强大。在现代 fontconfig 安装中,您经常会发现诸如“如果语言环境是日文,则首选日文字体”之类的规则,并且它们仅在最后评估时才有效。

    当您的应用程序/环境没有为字体系统提供目标语言环境时,通常会遇到您描述的问题。鉴于 unicode han 统一,字体系统无法从代码点推断出您是否想要日文的中国式字形,需要明确告知。因此,如果您要强制使用 en_US 语言环境而不是使用中文或日文语言环境,那么系统至少有 50% 的机会会出错。

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

    没有简单的解决方案:确保您没有对系统的语言环境撒谎,如果您无法忍受,请修复您的语言环境,在仍然不应用它的应用程序上填补错误。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 2015-03-04
      • 2018-12-24
      • 2013-02-13
      相关资源
      最近更新 更多