mirror of https://github.com/qt/qtbase.git
Decrease code duplication
Check engine's supported scripts in a single place and remove unused script parameter from fontEngine(). Change-Id: Ic153803bef519320c370b058e77eac1a4d92afd0 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This commit is contained in:
parent
b13b63e99c
commit
903b9d41f7
|
@ -182,8 +182,16 @@ QFontEngine *loadSingleEngine(int script,
|
|||
QFontCache::Key key(def,script);
|
||||
QFontEngine *engine = QFontCache::instance()->findEngine(key);
|
||||
if (!engine) {
|
||||
engine = pfdb->fontEngine(def, QChar::Script(script), size->handle);
|
||||
engine = pfdb->fontEngine(def, size->handle);
|
||||
if (engine) {
|
||||
// Also check for OpenType tables when using complex scripts
|
||||
if (!engine->supportsScript(QChar::Script(script))) {
|
||||
qWarning(" OpenType support missing for script %d", script);
|
||||
if (engine->ref.load() == 0)
|
||||
delete engine;
|
||||
return 0;
|
||||
}
|
||||
|
||||
QFontCache::instance()->insertEngine(key, engine);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -289,13 +289,11 @@ QFontEngineMulti *QPlatformFontDatabase::fontEngineMulti(QFontEngine *fontEngine
|
|||
Returns the font engine that can be used to render the font described by
|
||||
the font definition, \a fontDef, in the specified \a script.
|
||||
*/
|
||||
QFontEngine *QPlatformFontDatabase::fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle)
|
||||
QFontEngine *QPlatformFontDatabase::fontEngine(const QFontDef &fontDef, void *handle)
|
||||
{
|
||||
Q_UNUSED(script);
|
||||
Q_UNUSED(handle);
|
||||
QByteArray *fileDataPtr = static_cast<QByteArray *>(handle);
|
||||
QFontEngineQPA *engine = new QFontEngineQPA(fontDef,*fileDataPtr);
|
||||
//qDebug() << fontDef.pixelSize << fontDef.weight << fontDef.style << fontDef.stretch << fontDef.styleHint << fontDef.styleStrategy << fontDef.family << script;
|
||||
//qDebug() << fontDef.pixelSize << fontDef.weight << fontDef.style << fontDef.stretch << fontDef.styleHint << fontDef.styleStrategy << fontDef.family;
|
||||
return engine;
|
||||
}
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ public:
|
|||
virtual ~QPlatformFontDatabase();
|
||||
virtual void populateFontDatabase();
|
||||
virtual QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script);
|
||||
virtual QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle);
|
||||
virtual QFontEngine *fontEngine(const QFontDef &fontDef, void *handle);
|
||||
virtual QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const;
|
||||
virtual QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName);
|
||||
virtual void releaseHandle(void *handle);
|
||||
|
|
|
@ -113,27 +113,18 @@ void QBasicFontDatabase::populateFontDatabase()
|
|||
}
|
||||
}
|
||||
|
||||
QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, QChar::Script script, void *usrPtr)
|
||||
QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, void *usrPtr)
|
||||
{
|
||||
QFontEngineFT *engine;
|
||||
FontFile *fontfile = static_cast<FontFile *> (usrPtr);
|
||||
QFontEngine::FaceId fid;
|
||||
fid.filename = QFile::encodeName(fontfile->fileName);
|
||||
fid.index = fontfile->indexValue;
|
||||
engine = new QFontEngineFT(fontDef);
|
||||
|
||||
bool antialias = !(fontDef.styleStrategy & QFont::NoAntialias);
|
||||
QFontEngineFT::GlyphFormat format = antialias? QFontEngineFT::Format_A8 : QFontEngineFT::Format_Mono;
|
||||
if (!engine->init(fid,antialias,format)) {
|
||||
delete engine;
|
||||
engine = 0;
|
||||
return engine;
|
||||
}
|
||||
if (engine->invalid()) {
|
||||
delete engine;
|
||||
engine = 0;
|
||||
} else if (!engine->supportsScript(script)) {
|
||||
qWarning(" OpenType support missing for script %d", int(script));
|
||||
|
||||
QFontEngineFT *engine = new QFontEngineFT(fontDef);
|
||||
if (!engine->init(fid, antialias, format) || engine->invalid()) {
|
||||
delete engine;
|
||||
engine = 0;
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ class QBasicFontDatabase : public QPlatformFontDatabase
|
|||
{
|
||||
public:
|
||||
void populateFontDatabase();
|
||||
QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle);
|
||||
QFontEngine *fontEngine(const QFontDef &fontDef, void *handle);
|
||||
QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference);
|
||||
QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const;
|
||||
QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName);
|
||||
|
|
|
@ -516,7 +516,7 @@ QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine,
|
|||
return new QFontEngineMultiFontConfig(fontEngine, script);
|
||||
}
|
||||
|
||||
QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QChar::Script script, void *usrPtr)
|
||||
QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, void *usrPtr)
|
||||
{
|
||||
if (!usrPtr)
|
||||
return 0;
|
||||
|
@ -652,16 +652,7 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QChar::Script sc
|
|||
|
||||
FcPatternDestroy(pattern);
|
||||
|
||||
if (!engine->init(fid,antialias,format)) {
|
||||
delete engine;
|
||||
engine = 0;
|
||||
return engine;
|
||||
}
|
||||
if (engine->invalid()) {
|
||||
delete engine;
|
||||
engine = 0;
|
||||
} else if (!engine->supportsScript(script)) {
|
||||
qWarning(" OpenType support missing for script %d", int(script));
|
||||
if (!engine->init(fid, antialias, format) || engine->invalid()) {
|
||||
delete engine;
|
||||
engine = 0;
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ class QFontconfigDatabase : public QBasicFontDatabase
|
|||
public:
|
||||
void populateFontDatabase();
|
||||
QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script);
|
||||
QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle);
|
||||
QFontEngine *fontEngine(const QFontDef &fontDef, void *handle);
|
||||
QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const;
|
||||
QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName);
|
||||
QString resolveFontFamilyAlias(const QString &family) const;
|
||||
|
|
|
@ -278,10 +278,8 @@ void QCoreTextFontDatabase::releaseHandle(void *handle)
|
|||
CFRelease(CTFontDescriptorRef(handle));
|
||||
}
|
||||
|
||||
QFontEngine *QCoreTextFontDatabase::fontEngine(const QFontDef &f, QChar::Script script, void *usrPtr)
|
||||
QFontEngine *QCoreTextFontDatabase::fontEngine(const QFontDef &f, void *usrPtr)
|
||||
{
|
||||
Q_UNUSED(script);
|
||||
|
||||
qreal scaledPointSize = f.pixelSize;
|
||||
|
||||
// When 96 DPI is forced, the Mac plugin will use DPI 72 for some
|
||||
|
|
|
@ -72,7 +72,7 @@ public:
|
|||
QCoreTextFontDatabase();
|
||||
~QCoreTextFontDatabase();
|
||||
void populateFontDatabase();
|
||||
QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle);
|
||||
QFontEngine *fontEngine(const QFontDef &fontDef, void *handle);
|
||||
QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference);
|
||||
QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const;
|
||||
QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName);
|
||||
|
|
|
@ -1038,12 +1038,12 @@ QWindowsFontDatabase::~QWindowsFontDatabase()
|
|||
removeApplicationFonts();
|
||||
}
|
||||
|
||||
QFontEngine * QWindowsFontDatabase::fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle)
|
||||
QFontEngine * QWindowsFontDatabase::fontEngine(const QFontDef &fontDef, void *handle)
|
||||
{
|
||||
QFontEngine *fe = QWindowsFontDatabase::createEngine(script, fontDef,
|
||||
QFontEngine *fe = QWindowsFontDatabase::createEngine(QChar::Script_Common, fontDef,
|
||||
0, QWindowsContext::instance()->defaultDPI(), false,
|
||||
QStringList(), sharedFontData());
|
||||
qCDebug(lcQpaFonts) << __FUNCTION__ << "FONTDEF" << fontDef << script << fe << handle;
|
||||
qCDebug(lcQpaFonts) << __FUNCTION__ << "FONTDEF" << fontDef << fe << handle;
|
||||
return fe;
|
||||
}
|
||||
|
||||
|
@ -1746,14 +1746,6 @@ QFontEngine *QWindowsFontDatabase::createEngine(int script, const QFontDef &requ
|
|||
QWindowsFontEngine *few = new QWindowsFontEngine(request.family, hfont, stockFont, lf, data);
|
||||
if (preferClearTypeAA)
|
||||
few->glyphFormat = QFontEngineGlyphCache::Raster_RGBMask;
|
||||
|
||||
// Also check for OpenType tables when using complex scripts
|
||||
if (!few->supportsScript(QChar::Script(script))) {
|
||||
qWarning(" OpenType support missing for script %d", int(script));
|
||||
delete few;
|
||||
return 0;
|
||||
}
|
||||
|
||||
few->initFontInfo(request, fontHdc, dpi);
|
||||
fe = few;
|
||||
}
|
||||
|
|
|
@ -78,7 +78,7 @@ public:
|
|||
~QWindowsFontDatabase();
|
||||
|
||||
virtual void populateFontDatabase();
|
||||
virtual QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle);
|
||||
virtual QFontEngine *fontEngine(const QFontDef &fontDef, void *handle);
|
||||
virtual QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference);
|
||||
virtual QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const;
|
||||
virtual QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName);
|
||||
|
|
|
@ -422,10 +422,10 @@ void QWindowsFontDatabaseFT::populate(const QString &family)
|
|||
ReleaseDC(0, dummy);
|
||||
}
|
||||
|
||||
QFontEngine * QWindowsFontDatabaseFT::fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle)
|
||||
QFontEngine * QWindowsFontDatabaseFT::fontEngine(const QFontDef &fontDef, void *handle)
|
||||
{
|
||||
QFontEngine *fe = QBasicFontDatabase::fontEngine(fontDef, script, handle);
|
||||
qCDebug(lcQpaFonts) << __FUNCTION__ << "FONTDEF" << fontDef.family << script << fe << handle;
|
||||
QFontEngine *fe = QBasicFontDatabase::fontEngine(fontDef, handle);
|
||||
qCDebug(lcQpaFonts) << __FUNCTION__ << "FONTDEF" << fontDef.family << fe << handle;
|
||||
return fe;
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ class QWindowsFontDatabaseFT : public QBasicFontDatabase
|
|||
{
|
||||
public:
|
||||
void populateFontDatabase();
|
||||
QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle);
|
||||
QFontEngine *fontEngine(const QFontDef &fontDef, void *handle);
|
||||
QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference);
|
||||
|
||||
QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const;
|
||||
|
|
Loading…
Reference in New Issue