diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index fbd836f..9426cf1 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -480,9 +480,27 @@ QStringList QCoreTextFontDatabase::addApplicationFont(const QByteArray &fontData CGFontRelease(cgFont); } } else { + // CTFontManagerRegisterFontsForURL() outputs console errors if the font URL is already loaded. + // So, check whether the font is loaded before trying to register it. + CFStringRef fileNameCFString = QCFString::toCFStringRef(fileName); + CFArrayRef availableFonts = CTFontManagerCopyAvailableFontURLs(); + CFIndex availableFontCount = CFArrayGetCount(availableFonts); + CFIndex i; + bool fontAlreadyLoaded = false; + for (i=0; i fontURL = CFURLCreateWithFileSystemPath(NULL, QCFString(fileName), kCFURLPOSIXPathStyle, false); - bool success = CTFontManagerRegisterFontsForURL(fontURL, kCTFontManagerScopeProcess, &error); + bool success = fontAlreadyLoaded ? TRUE : CTFontManagerRegisterFontsForURL(fontURL, kCTFontManagerScopeProcess, &error); if (success) { const void *keys[] = { fontURL }; const void *values[] = { kCTFontURLAttribute };