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 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 ------------------------------
|
// -------------------------- Freetype support ------------------------------
|
||||||
|
|
||||||
class QtFreetypeData
|
class QtFreetypeData
|
||||||
@ -629,11 +636,7 @@ QFontEngineFT::QFontEngineFT(const QFontDef &fd)
|
|||||||
antialias = true;
|
antialias = true;
|
||||||
freetype = 0;
|
freetype = 0;
|
||||||
default_load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH;
|
default_load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH;
|
||||||
#ifndef Q_OS_WIN
|
default_hint_style = ftInitialDefaultHintStyle;
|
||||||
default_hint_style = HintNone;
|
|
||||||
#else
|
|
||||||
default_hint_style = HintFull;
|
|
||||||
#endif
|
|
||||||
subpixelType = Subpixel_None;
|
subpixelType = Subpixel_None;
|
||||||
lcdFilterType = 0;
|
lcdFilterType = 0;
|
||||||
#if defined(FT_LCD_FILTER_H)
|
#if defined(FT_LCD_FILTER_H)
|
||||||
@ -760,6 +763,24 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format,
|
|||||||
return true;
|
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)
|
void QFontEngineFT::setDefaultHintStyle(HintStyle style)
|
||||||
{
|
{
|
||||||
default_hint_style = 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;
|
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 void setDefaultHintStyle(HintStyle style) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
virtual QFontEngine *cloneWithSize(qreal pixelSize) const 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)
|
QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, void *usrPtr)
|
||||||
{
|
{
|
||||||
FontFile *fontfile = static_cast<FontFile *> (usrPtr);
|
FontFile *fontfile = static_cast<FontFile *> (usrPtr);
|
||||||
@ -119,7 +101,7 @@ QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, void *usrPt
|
|||||||
delete engine;
|
delete engine;
|
||||||
engine = 0;
|
engine = 0;
|
||||||
} else {
|
} else {
|
||||||
setHintingPreference(engine, static_cast<QFont::HintingPreference>(fontDef.hintingPreference));
|
engine->setQtDefaultHintStyle(static_cast<QFont::HintingPreference>(fontDef.hintingPreference));
|
||||||
}
|
}
|
||||||
|
|
||||||
return engine;
|
return engine;
|
||||||
@ -172,7 +154,7 @@ QFontEngine *QBasicFontDatabase::fontEngine(const QByteArray &fontData, qreal pi
|
|||||||
}
|
}
|
||||||
|
|
||||||
fe->updateFamilyNameAndStyle();
|
fe->updateFamilyNameAndStyle();
|
||||||
setHintingPreference(fe, hintingPreference);
|
fe->setQtDefaultHintStyle(static_cast<QFont::HintingPreference>(fontDef.hintingPreference));
|
||||||
|
|
||||||
return fe;
|
return fe;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user