我在Mac OS X 10.6.3上的Qt上发现了一些错误:
QFont font = QFont("Wingdings"); //font.family() == "Wingdings"
QRawFont rawFont = QRawFont::fromFont(font); //rawFont.familyName() == "Lucida Grande"
我认为rawFont.familyName()应该是“Wingdings”。 在Windows上,此代码可以正常工作。
我试过这个方法:
QRawFont ( const QString & fileName, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting )
在字体文件上,它可以正常工作。
我真的不知道如何纠正这个问题。 任何帮助表示赞赏。
答案 0 :(得分:0)
你可能发现了一个错误。
如果查看4.8 implementation of QRawFont::fromFont,您会看到:
[...]
#if defined(Q_WS_MAC)
QTextLayout layout(QFontDatabase::writingSystemSample(writingSystem), font);
layout.beginLayout();
QTextLine line = layout.createLine();
layout.endLayout();
QList<QGlyphRun> list = layout.glyphRuns();
if (list.size()) {
for (int i = 0; i < list.size(); i++) {
rawFont = list.at(i).rawFont();
if (rawFont.familyName() == font.family())
return rawFont;
}
return list.at(0).rawFont();
}
#else
[...]
显然,这种方法在Mac OS X上是一个黑客攻击。该方法在HEAD修订版中发生了变化(大概是5.x),并且不再对OS X进行破解。