Qt同时使用多个字体

时间:2013-11-15 13:26:38

标签: qt fonts embedded

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

  • FontA:包含拉丁文,希腊文,Cryllic字符
  • FontB:包含韩文字符
  • FontC:包含日文,中文字符

这些字体没有重叠。

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

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

它同时适用于许多语言(西里尔语,欧洲语,泰语,日语等)。

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

答案 2 :(得分:0)

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

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

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

相关问题