1

我想显示多语言(英语、希伯来语、泰语、阿拉伯语、中文)作为选择列表,首先,我使用调试消息来显示支持系列,我不知道这是否是正确的查找方式支持字体,如果是错误的解决方案,请纠正我

/* output the support font */
QFontDatabase qfd ;
qDebug() << qfd.families(QFontDatabase::Hebrew);
qDebug() << qfd.families(QFontDatabase::Arabic);
qDebug() << qfd.families(QFontDatabase::Thai);
qDebug() << qfd.families(QFontDatabase::TraditionalChinese);

得到调试消息后,我正在使用工具“makeqpf”创建 qpf2 文件发现一些关于插入替换 QFont::insertSubstitutionQFont::insertSubstitutions的 QFont 函数 ,我需要加载所有这些函数以显示正确的单词

其中 DejaVu Sans 用于 HEBREW、ARABIC 和 waree 用于泰语

这样,我可以显示中文、英文、希伯来文、阿拉伯文但不能显示泰文,

QFont font1("WenQuanYi Micro Hei [prerendered]",14,50,FALSE);
subs << "DejaVu Sans [prerendered]" << "Waree" ;
font1.insertSubstitutions("WenQuanYi Micro Hei [prerendered]", subs);
qApp->setFont(font1);

qDebug() << font1.family() ;
QStringList sl = font1.substitutions() ;
qDebug() << sl.isEmpty() ;
qDebug() << sl ;
qDebug() << font1.substitutes("WenQuanYi Micro Hei [prerendered]") ;

我只是做另一个测试来改变字体系列

QFont font1("DejaVu Sans [prerendered]",14,50,FALSE);
subs << "WenQuanYi Micro Hei [prerendered]" << "Waree" ;
font1.insertSubstitutions("DejaVu Sans [prerendered]", subs);
qApp->setFont(font1);

如果我先插入“DejaVu Sans”,当我打开多语言页面时,程序崩溃了,我猜是因为程序无法显示中文而崩溃,

我也尝试过独立阅读“泰语”字体“Waree”,如下所示

QFont font1("Waree",14,50,FALSE);

这样,我可以在我的程序中看到“Thai”字体,但只有“Thai”,(希伯来语,阿拉伯语,繁体中文)都保持空白

最终目标是同时显示所有语言,所以我需要加载 waree 并正确显示,请帮助并感谢您的阅读!

任何回复将不胜感激!

4

0 回答 0