path: root/src/plugins/platforms/cocoa/
diff options
authorGabriel de Dietrich <>2014-07-02 13:18:50 +0200
committerGabriel de Dietrich <>2014-08-11 10:46:13 +0200
commit909d3f5c733dde02074a737a5f1dbe3e51dbef32 (patch)
tree9707cd00cd97215df12724df79597f74f3c2ed44 /src/plugins/platforms/cocoa/
parent3924805d595f18820f127ab33486d076102afec6 (diff)
Font Database: Add support for private, system UI font families
We introduce QPlatformFontDatabase::isPrivateFontFamily() to allow testing for private, system UI font families. Both QFontComboBox and QFontDialog need to filter out those private font families which, by definition, should be hidden from the end user. (The textedit example had to be updated to fix the issue where the default font would be private. In 5.4, we will be adding an equivalent, public API in QFontDatabase, and a better solution for the textedit example and QTexEdit in general). In particular, on OS X and iOS, private fonts are used for the system UI font. Those have their font family name prefixed by a dot. QCoreTextFontDatabase knows about this, and makes sure those are tested positive as private font families. In order to have a cleaner layer separation, we moved the QPA theme font resolution from the platform theme classes into QCoreTextFontDatabase for both Cocoa and iOS QPA plugins. In both cases, we use CoreText's CTFontCreateUIFontForLanguage(), that nicely maps to the HITheme API we were using so far on Mac. That means one HITheme dependency less. We also cache the font descriptors we get for these font for each time QCTFD::populateFamilies() gets called. (While not common, this currently happens in auto-tests, like tst_QFontDatabase, and could happen in actual applications -- specially when adding and removing application fonts.) Change-Id: Ic6f0b60f9f597afee1a43596a669742dc546b97f Reviewed-by: Morten Johan Sørvig <>
Diffstat (limited to 'src/plugins/platforms/cocoa/')
1 files changed, 7 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/ b/src/plugins/platforms/cocoa/
index dce1671800..ae42fee82c 100644
--- a/src/plugins/platforms/cocoa/
+++ b/src/plugins/platforms/cocoa/
@@ -60,6 +60,7 @@
#include <QtCore/qfileinfo.h>
#include <QtGui/private/qguiapplication_p.h>
#include <QtGui/qpainter.h>
+#include <QtPlatformSupport/private/qcoretextfontdatabase_p.h>
#include <qpa/qplatformintegration.h>
#include <qpa/qplatformnativeinterface.h>
@@ -134,6 +135,12 @@ const QPalette *QCocoaTheme::palette(Palette type) const
return 0;
+QHash<QPlatformTheme::Font, QFont *> qt_mac_createRoleFonts()
+ QCoreTextFontDatabase *ctfd = static_cast<QCoreTextFontDatabase *>(QGuiApplicationPrivate::platformIntegration()->fontDatabase());
+ return ctfd->themeFonts();
const QFont *QCocoaTheme::font(Font type) const
if (m_fonts.isEmpty()) {