我有一个用Qt/QML编写的嵌入式Linux上运行的软件。我使用的字体系列,让我们称之为SomeFontFamily.otf。这个字体系列不支持汉字,因此当我想显示中文文本时,我得到的是空方格。如果我在我的桌面Linux上运行相同的软件,我的中文文本会得到相同的结果,但是如果我在我的.font文件夹中添加了一个字体家族支持中文的home目录,那么它就会显示这些字符。所以我想我可以在嵌入式设备上做同样的事情,在我的home目录中添加一个home文件夹,字体是对的,但不幸的是,它没有工作。然后,我在嵌入式设备上找到了关于Qt字体的这文档。它说我应该把我的字体放在lib/fonts目录下,因为Qt会在嵌入式设备上搜索它。我试过了,但不幸的是没有成功。有人有类似的问题吗?为了记录在案,这与翻译无关。我只想能在英文文本中显示汉字。
发布于 2016-10-05 14:27:19
我的最后一个解决方案实际上是为QFont创建一个包装类,并在构造函数中为我设置的字体添加QFont::insertSubstitution(...)。然后将其公开给QML,并将其用作默认字体。就像一种魅力。
请注意:如果您已经将字体绑定到资源文件(.qrc)中,则必须使用QFontDatabase::addApplicationFont添加这些字体。
发布于 2016-10-04 07:49:51
嵌入式QT版本通常缺乏特性,那些想要在不检查依赖项存在的情况下打开依赖项的人就禁用了这些特性。
要使字体替换工作,需要启用fontconfig的生成。为了获得复杂的文本支持(任何比拉丁文符号更多的练习),您需要harfbuzz,更新的版本(Harfbuzz Ng)越好。
发布于 2016-10-04 07:56:38
我用自己的FontConfig解决了阿拉伯语的问题。您必须使用FontConfig和字体Qt嵌入启用它
https://stackoverflow.com/questions/39840442
复制相似问题