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同时使用多个字体的主要内容,如果未能解决你的问题,请参考以下文章