Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qcoretextfontdatabase_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QCORETEXTFONTDATABASE_H
5#define QCORETEXTFONTDATABASE_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <qglobal.h>
19
20#include <qpa/qplatformfontdatabase.h>
21#include <qpa/qplatformtheme.h>
22#include <private/qcore_mac_p.h>
23
26
27QT_DECL_METATYPE_EXTERN_TAGGED(QCFType<CGFontRef>, QCFType_CGFontRef, Q_GUI_EXPORT)
28QT_DECL_METATYPE_EXTERN_TAGGED(QCFType<CFURLRef>, QCFType_CFURLRef, Q_GUI_EXPORT)
29
30QT_BEGIN_NAMESPACE
31
32class Q_GUI_EXPORT QCoreTextFontDatabase : public QPlatformFontDatabase
33{
34public:
35 QCoreTextFontDatabase();
36 ~QCoreTextFontDatabase();
37 void populateFontDatabase() override;
38 bool populateFamilyAliases(const QString &missingFamily) override;
39 void populateFamily(const QString &familyName) override;
40 void invalidate() override;
41
42 QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QFontDatabasePrivate::ExtendedScript script) const override;
43 QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName, QFontDatabasePrivate::ApplicationFont *applicationFont = nullptr) override;
44 void releaseHandle(void *handle) override;
45 bool isPrivateFontFamily(const QString &family) const override;
46 QFont defaultFont() const override;
47 bool fontsAlwaysScalable() const override;
48 QList<int> standardSizes() const override;
49 bool supportsVariableApplicationFonts() const override;
50 bool supportsColrv0Fonts() const override;
51
52 // For iOS and macOS platform themes
53 QFont *themeFont(QPlatformTheme::Font) const;
54
55private:
56 void populateThemeFonts();
57 void populateFromDescriptor(CTFontDescriptorRef font, const QString &familyName = QString(), QFontDatabasePrivate::ApplicationFont *applicationFont = nullptr);
58 static CFArrayRef fallbacksForFamily(const QString &family);
59 QStringList fallbacksForScript(QFontDatabasePrivate::ExtendedScript script) const;
60
61 QHash<QPlatformTheme::Font, QFont *> m_themeFonts;
62 QHash<QString, QList<QCFType<CTFontDescriptorRef>>> m_systemFontDescriptors;
63 QHash<QChar::Script, QString> m_hardcodedFallbackFonts;
64 mutable QSet<QString> m_privateFamilies;
65
66 bool m_hasPopulatedAliases;
67
68#if defined(Q_OS_MACOS)
69 QMacNotificationObserver m_fontSetObserver;
70#endif
71};
72
73// Split out into separate template class so that the compiler doesn't have
74// to generate code for each override in QCoreTextFontDatabase for each T.
75
76template <class T>
77class Q_GUI_EXPORT QCoreTextFontDatabaseEngineFactory : public QCoreTextFontDatabase
78{
79public:
80 QFontEngine *fontEngine(const QFontDef &fontDef, void *handle) override;
81 QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) override;
82};
83
84QT_END_NAMESPACE
85
86#endif // QCORETEXTFONTDATABASE_H
CFArrayRef fallbacksForDescriptor(CTFontDescriptorRef descriptor)
CGAffineTransform qt_transform_from_fontdef(const QFontDef &fontDef)
static NSString *const kQtFontDataAttribute
static Q_DECL_UNUSED QDebug operator<<(QDebug debug, const FontDescription &fd)
CTFontDescriptorRef descriptorForFamily(const QString &familyName)
static void getFontDescription(CTFontDescriptorRef font, FontDescription *fd)
static CTFontUIFontType fontTypeFromTheme(QPlatformTheme::Font f)
static CTFontDescriptorRef fontDescriptorFromTheme(QPlatformTheme::Font f)
CTFontDescriptorRef descriptorForFamily(const char *familyName)
CTFontDescriptorRef descriptorForFontType(CTFontUIFontType uiType)
T * descriptorAttribute(CTFontDescriptorRef descriptor, CFStringRef name)
CTFontDescriptorRef descriptorForStyle(QFont::StyleHint styleHint)
Q_FORWARD_DECLARE_CF_TYPE(CTFont)
Q_FORWARD_DECLARE_CF_TYPE(CTFontDescriptor)
QSupportedWritingSystems writingSystems