Remove some metrics parsing code from Core Text
The respective value in some of the default fonts like Lucida Grande are simply not reliable. It seems that the only reliable way to get such information is by going through all the glyphs. It seems that these code are not well tested on Mac and should be removed for now since it caused visible regressions in QLineEdit rendering. Reviewed-by: Eskil (cherry picked from commit 8032d6f4ced50837e126f28c1475ad89eaf91ad7) Change-Id: I85e71a2e3228a367659be9f5f6ec3e667e0ce902 Reviewed-on: http://codereview.qt.nokia.com/1264 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>bb10
parent
ab5ff2965c
commit
915ec02cad
|
|
@ -492,17 +492,6 @@ void QCoreTextFontEngine::init()
|
|||
avgCharWidth = QFixed::fromReal(width * fontDef.pixelSize / emSize);
|
||||
} else
|
||||
avgCharWidth = QFontEngine::averageCharWidth();
|
||||
|
||||
ctMaxCharWidth = ctMinLeftBearing = ctMinRightBearing = 0;
|
||||
QByteArray hheaTable = getSfntTable(MAKE_TAG('h', 'h', 'e', 'a'));
|
||||
if (hheaTable.size() >= 16) {
|
||||
quint16 width = qFromBigEndian<quint16>(reinterpret_cast<const uchar *>(hheaTable.constData() + 10));
|
||||
ctMaxCharWidth = width * fontDef.pixelSize / emSize;
|
||||
qint16 bearing = qFromBigEndian<qint16>(reinterpret_cast<const uchar *>(hheaTable.constData() + 12));
|
||||
ctMinLeftBearing = bearing * fontDef.pixelSize / emSize;
|
||||
bearing = qFromBigEndian<qint16>(reinterpret_cast<const uchar *>(hheaTable.constData() + 14));
|
||||
ctMinRightBearing = bearing * fontDef.pixelSize / emSize;
|
||||
}
|
||||
}
|
||||
|
||||
bool QCoreTextFontEngine::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs,
|
||||
|
|
@ -599,20 +588,17 @@ QFixed QCoreTextFontEngine::averageCharWidth() const
|
|||
|
||||
qreal QCoreTextFontEngine::maxCharWidth() const
|
||||
{
|
||||
return (fontDef.styleStrategy & QFont::ForceIntegerMetrics)
|
||||
? qRound(ctMaxCharWidth) : ctMaxCharWidth;
|
||||
return 0;
|
||||
}
|
||||
|
||||
qreal QCoreTextFontEngine::minLeftBearing() const
|
||||
{
|
||||
return (fontDef.styleStrategy & QFont::ForceIntegerMetrics)
|
||||
? qRound(ctMinLeftBearing) : ctMinLeftBearing;
|
||||
return 0;
|
||||
}
|
||||
|
||||
qreal QCoreTextFontEngine::minRightBearing() const
|
||||
{
|
||||
return (fontDef.styleStrategy & QFont::ForceIntegerMetrics)
|
||||
? qRound(ctMinRightBearing) : ctMinLeftBearing;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void QCoreTextFontEngine::draw(CGContextRef ctx, qreal x, qreal y, const QTextItemInt &ti, int paintDeviceHeight)
|
||||
|
|
|
|||
|
|
@ -107,9 +107,6 @@ private:
|
|||
int synthesisFlags;
|
||||
CGAffineTransform transform;
|
||||
QFixed avgCharWidth;
|
||||
qreal ctMaxCharWidth;
|
||||
qreal ctMinLeftBearing;
|
||||
qreal ctMinRightBearing;
|
||||
friend class QCoreTextFontEngineMulti;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue