QRawFont :: fromFont无法正常工作

时间:2012-09-26 08:29:13

标签: macos qt

我在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 )

在字体文件上,它可以正常工作。

我真的不知道如何纠正这个问题。 任何帮助表示赞赏。

1 个答案:

答案 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进行破解。