Move setter for QFont::HintingPreference to QFontEngineFT.
Preparation for also using it from QCoreTextFontDatabase. Change-Id: I9cbef59c21f343a88a5cb3fdbee1ed4791d7a36e Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
This commit is contained in:
parent
7a0222fba3
commit
b71b36fa22
@ -99,6 +99,13 @@ static bool ft_getSfntTable(void *user_data, uint tag, uchar *buffer, uint *leng
|
||||
|
||||
static QFontEngineFT::Glyph emptyGlyph = {0, 0, 0, 0, 0, 0, 0, 0};
|
||||
|
||||
static const QFontEngine::HintStyle ftInitialDefaultHintStyle =
|
||||
#ifdef Q_OS_WIN
|
||||
QFontEngineFT::HintFull;
|
||||
#else
|
||||
QFontEngineFT::HintNone;
|
||||
#endif
|
||||
|
||||
// -------------------------- Freetype support ------------------------------
|
||||
|
||||
class QtFreetypeData
|
||||
@ -629,11 +636,7 @@ QFontEngineFT::QFontEngineFT(const QFontDef &fd)
|
||||
antialias = true;
|
||||
freetype = 0;
|
||||
default_load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH;
|
||||
#ifndef Q_OS_WIN
|
||||
default_hint_style = HintNone;
|
||||
#else
|
||||
default_hint_style = HintFull;
|
||||
#endif
|
||||
default_hint_style = ftInitialDefaultHintStyle;
|
||||
subpixelType = Subpixel_None;
|
||||
lcdFilterType = 0;
|
||||
#if defined(FT_LCD_FILTER_H)
|
||||
@ -760,6 +763,24 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format,
|
||||
return true;
|
||||
}
|
||||
|
||||
void QFontEngineFT::setQtDefaultHintStyle(QFont::HintingPreference hintingPreference)
|
||||
{
|
||||
switch (hintingPreference) {
|
||||
case QFont::PreferNoHinting:
|
||||
setDefaultHintStyle(HintNone);
|
||||
break;
|
||||
case QFont::PreferFullHinting:
|
||||
setDefaultHintStyle(HintFull);
|
||||
break;
|
||||
case QFont::PreferVerticalHinting:
|
||||
setDefaultHintStyle(HintLight);
|
||||
break;
|
||||
case QFont::PreferDefaultHinting:
|
||||
setDefaultHintStyle(ftInitialDefaultHintStyle);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void QFontEngineFT::setDefaultHintStyle(HintStyle style)
|
||||
{
|
||||
default_hint_style = style;
|
||||
|
@ -281,7 +281,7 @@ private:
|
||||
|
||||
virtual int getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints) Q_DECL_OVERRIDE;
|
||||
|
||||
|
||||
void setQtDefaultHintStyle(QFont::HintingPreference hintingPreference);
|
||||
virtual void setDefaultHintStyle(HintStyle style) Q_DECL_OVERRIDE;
|
||||
|
||||
virtual QFontEngine *cloneWithSize(qreal pixelSize) const Q_DECL_OVERRIDE;
|
||||
|
@ -76,24 +76,6 @@ void QBasicFontDatabase::populateFontDatabase()
|
||||
}
|
||||
}
|
||||
|
||||
inline static void setHintingPreference(QFontEngine *engine, QFont::HintingPreference hintingPreference)
|
||||
{
|
||||
switch (hintingPreference) {
|
||||
case QFont::PreferNoHinting:
|
||||
engine->setDefaultHintStyle(QFontEngineFT::HintNone);
|
||||
break;
|
||||
case QFont::PreferFullHinting:
|
||||
engine->setDefaultHintStyle(QFontEngineFT::HintFull);
|
||||
break;
|
||||
case QFont::PreferVerticalHinting:
|
||||
engine->setDefaultHintStyle(QFontEngineFT::HintLight);
|
||||
break;
|
||||
case QFont::PreferDefaultHinting:
|
||||
// Leave it as it is
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, void *usrPtr)
|
||||
{
|
||||
FontFile *fontfile = static_cast<FontFile *> (usrPtr);
|
||||
@ -119,7 +101,7 @@ QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, void *usrPt
|
||||
delete engine;
|
||||
engine = 0;
|
||||
} else {
|
||||
setHintingPreference(engine, static_cast<QFont::HintingPreference>(fontDef.hintingPreference));
|
||||
engine->setQtDefaultHintStyle(static_cast<QFont::HintingPreference>(fontDef.hintingPreference));
|
||||
}
|
||||
|
||||
return engine;
|
||||
@ -172,7 +154,7 @@ QFontEngine *QBasicFontDatabase::fontEngine(const QByteArray &fontData, qreal pi
|
||||
}
|
||||
|
||||
fe->updateFamilyNameAndStyle();
|
||||
setHintingPreference(fe, hintingPreference);
|
||||
fe->setQtDefaultHintStyle(static_cast<QFont::HintingPreference>(fontDef.hintingPreference));
|
||||
|
||||
return fe;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user