2

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 )

フォントファイルで、正しく動作します。

これを修正する方法が本当にわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

0

バグを見つけたかもしれません。

QRawFont::fromFontの 4.8 実装を見ると、次のようになります。

[...]
#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 のハックはなくなりました。

于 2012-09-26T10:16:55.093 に答える