diff --git a/src/gui/text/freetype/qfreetypefontdatabase.cpp b/src/gui/text/freetype/qfreetypefontdatabase.cpp index 772485471f5..018e590ac27 100644 --- a/src/gui/text/freetype/qfreetypefontdatabase.cpp +++ b/src/gui/text/freetype/qfreetypefontdatabase.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #undef QT_NO_FREETYPE #include "qfontengine_ft_p.h" @@ -64,6 +65,14 @@ QFontEngine *QFreeTypeFontDatabase::fontEngine(const QFontDef &fontDef, void *us faceId.instanceIndex = fontfile->instanceIndex; faceId.variableAxes = fontDef.variableAxisValues; + // Make sure the FaceId compares uniquely in cases where a + // file name is not provided. + if (faceId.filename.isEmpty()) { + QUuid::Id128Bytes id{}; + memcpy(&id, &usrPtr, sizeof(usrPtr)); + faceId.uuid = QUuid(id).toByteArray(); + } + return QFontEngineFT::create(fontDef, faceId, fontfile->data); }