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("中国"));