Qt同时使用多个字体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt同时使用多个字体相关的知识,希望对你有一定的参考价值。

我想在我的软件中使用三种字体:

  • FontA:包含拉丁语,希腊语,西里尔字符
  • FontB:包含韩文字符
  • FontC:包含日文,中文字符

这些字体没有重叠。

我想设置我的应用程序,以便所有这些字体一次使用,因为来自不同语言的字符可能出现在我的软件中的相同上下文中。

如果在FontA中找到一个字符,请使用它。否则,查看FontB,如果找到则使用它。看看FontC作为最后的手段,如果找到,使用它,否则什么都不做。

如何设置Qt以这种方式运行?

(我的环境是嵌入式linux,Qt 4.8)

P.S。:我尝试过QFont :: insertSubstitution,但是在系统上没有安装FontA的情况下使用它,所以在我的情况下并没有真正帮助。 P.P.S。:将这些字体合并为单一字体是不可能的,因为它们是专有字体。

答案

像其他人说的那样 - 如果您的QT版本使用fontconfig通过fontconfig执行,它的唯一功能是管理智能字体替换。如果你的版本没有使用fontconfig你运气不好,因为我怀疑有人花了很多时间让它工作,因为现在fontconfig已经广泛使用了。

另一答案

尝试使用这种方法:How to (properly) output multilingual text in Qt-Embedded?

它可以同时使用多种语言(西里尔语,欧洲语,泰语,日语等)。

  • 将Droid字体(不是必需的,它也可以与其他字体一起使用)放到Qt可以找到它的目录中,
  • 导出特殊环境变量:export QWS_NO_SHARE_FONTS=1
  • 使用-fn "Droid Sans"参数运行您的应用程序
另一答案

对于这种情况,Qt有一个后备机器。在Qt4 documentation我发现你可以自定义这种后备机制。看起来很有希望,应该解决你的问题。

在Qt5中,我没有看到与QPlatformFontDatabase类的直接链接。只有this。看起来你应该写一些插件。还有this page suggest that QPlatformFontDatabase apeared in Qt 5.2所以它应该在Qt5中工作。出于某种原因,Qt5没有关于它的文档。

你应该尝试一下,看看或至少选择一个来源。

以上是关于Qt同时使用多个字体的主要内容,如果未能解决你的问题,请参考以下文章

QT 实用代码片段

Chrome-Devtools代码片段中的多个JS库

Qt Creator IDE 中的自定义字体

QT中在QLabel中同时显示文字和图片?

如何同时在不同的 QT 小部件上显示多个视频

多个用户访问同一段代码