Linux安装中文字体-以QT控件显示中文为例
1. 问题介绍
在Qt中,笔者在使用QPainter的drawText在QImage/QPixmap中绘制中文文字显示为一系列方框,可能是因为字体设置的问题。你需要确保你的系统支持你选择的字体,并且这个字体支持中文字符。
可以尝试使用下面的代码来设置字体:
QPainter painter(this);
QFont font("Simsun", 15, QFont::Bold, true); //字体,大小,粗体,斜体
painter.setFont(font);
painter.drawText(rect, Qt::AlignHCenter, "你的中文字符串");
在这段代码中,我们首先创建了一个QPainter对象,然后创建了一个QFont对象并设置了字体为"宋体",字体大小为15,字体样式为粗体,然后我们将这个字体设置给QPainter对象,并使用drawText方法绘制中文字符串。
注意,需要在项目的.pro文件中添加以下行以确保Qt正确处理中文字符:
QT += core gui
CONFIG += c++11
CODECFORTR = UTF-8
2. 检查系统内的字体,并安装缺失的中文字体
如果,完成上述操作,可视化界面仍然显示不了中文时,需要检查系统内字体设置,以笔者的Linux系统为例,
- 在终端中,输入
fc-list
检查系统内已经安装的字体。 - 如果想检查系统内支持的中文字体,使用命令
fc-list :lang=zh
。 - 如果系统内没有相关的字体,需要手动下载并安装相关字体;
- 下载.ttf后缀的字体安装包,笔者在链接内提供了宋体的安装包:SimSun Font
cp /path/to/your/.ttf /usr/share/fonts
- 复制完成后,更新系统内的字体缓存。
fc-cache -fv
- 完成安装操作后,重新运行操作2即可。