引言
平常我们知道一个字体的绝对路径后,想获取该字体绝对路径下的字体名称。即:
E:\test\build\debug\abc.ttf。其中abc.ttf为字体文件,那么想要从这个路径E:\test\build\debug\abc.ttf中得到abc,我们一般的方法都是从字体的绝对路径中提取abc,即字体名。本文记录一种不用做字符串提取的方法,可直接从该字体所在的绝对路径中得到字体名称。
实现
下面就如何从字体所在的绝对路径中得到字体名。提供所需的代码实现。
QString fontFamilyPath =
QCoreApplication::applicationDirPath() + "/abc.ttf";
int fontID = QFontDatabase::addApplicationFont(fontFamilyPath);
QStringList familiesList = QFontDatabase::applicationFontFamilies(fontID);
QString appFontName = QString("Arial,%1").arg(familiesList[0]);
相关的头文件
#include <QFontDatabase>
#include <QStringList>
#include <QCoreApplication>
头文件若有多余或者不足,自己查询不足吧。
代码解释
fontFamilyPath 保存了字体的绝对路径。接下来根据字体的绝对路径获取字体的fontID ,再根据字体的id得到当前的字体名称列表,其字体名称列表中就是从当前字体的绝对路径中提取的字体名称abc,最后一行将得到的字体名称与新的字体Arial一起组成一个字符串appFontName 。
本文比较简洁,旨在记录自己接触到的比较新颖的解决方式,而不是采用惯用的字符串提取方法得到字体名。