您的位置:首页 > 编程语言 > Qt开发

Qt 程序使用自带 ttf 字体示例

2017-12-08 17:24 1021 查看

TTF简介

  TTF(TrueTypeFont)是 Apple 公司和 Microsoft 公司共同推出的字体文件格式,随着二十多年来 windows 的流行,目前 TTF 已经变成最常用的一种字体文件表示方式。truetype 字体的最大优点是可以很方便地把字体轮廓转换成曲线,可以对曲线进行填充,制成各种颜色和效果,它可以进一步变形,制作特殊效果字体,因此经常用来制作一些标题字或花样字。

  桌面出版系统使用的字库有两种标准: postscript字库和truetype字库。这两种字体标准都是采用曲线方式描述字体轮廓,因此都可以输出很高质量的字形。truetype 字体也用来作为 postscript 字库的显示字用,各字库公司同时都有这两种标准的产品。因此当使用 truetype 字体制作版面时,输出时仍然可以将它代换成 postscript 字库输出。

Qt示例

  因为我在嵌入式 Linux 平台开发一个界面程序,需要显示中文字体,所以下载了 LiHeiPro.ttf 来使用。那么下面我们来看一下在 Qt 中应该如何操作。

  (TTF 字库路径为 /home/root/seat_imx/LiHeiPro.ttf)

  代码如下:

#include "gytboxwidget.h"
#include <QApplication>
#include <QTextCodec>
#include <QFontDatabase>
#include <QFont>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

int index = QFontDatabase::addApplicationFont("/home/root/seat_imx/LiHeiPro.ttf");
if(index != -1) {
QStringList fontList(QFontDatabase::applicationFontFamilies(index));

/* font -- LiHei Pro */
if(fontList.count() > 0) {
QFont font_zh(fontList.at(0));
font_zh.setBold(false);
a.setFont(font_zh);
}
}

GytBoxWidget w;
w.show();

return a.exec();
}


  之后就可以显示中文了,比如:

QLabel *label = new QLabel(this);
label->setText(tr("中国"));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: