Windows: Default to DirectWrite font backend
The GDI font backend is missing support for certain modern features, and has a lot of work arounds for missing APIs. DirectWrite is the modern way to handle fonts on Windows, so we make this the default now, but keep the old backend as a fail safe. Fixes: QTBUG-119420 Change-Id: I0ea5cdfdcd759ccc894efb01b2410826c44aa1ea Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Lars Knoll <lars@knoll.priv.no>
This commit is contained in:
parent
bd6d7d4d74
commit
24224f1fe4
@ -587,13 +587,10 @@ static QWindowGeometrySpecification windowGeometrySpecification = Q_WINDOW_GEOME
|
|||||||
\c none disables them.
|
\c none disables them.
|
||||||
|
|
||||||
\li \c {fontengine=freetype}, uses the FreeType font engine.
|
\li \c {fontengine=freetype}, uses the FreeType font engine.
|
||||||
\li \c {fontengine=directwrite}, uses the experimental DirectWrite
|
\li \c {fontengine=gdi}, uses the legacy GDI-based
|
||||||
font database and defaults to using the DirectWrite font
|
font database and defaults to using the GDI font
|
||||||
engine (which is otherwise only used for some font types
|
engine (which is otherwise only used for some font types
|
||||||
or font properties.) This affects font selection and aims
|
or font properties.) (Since Qt 6.8).
|
||||||
to provide font naming more consistent with other platforms,
|
|
||||||
but does not support all font formats, such as Postscript
|
|
||||||
Type-1 or Microsoft FNT fonts.
|
|
||||||
\li \c {menus=[native|none]}, controls the use of native menus.
|
\li \c {menus=[native|none]}, controls the use of native menus.
|
||||||
|
|
||||||
Native menus are implemented using Win32 API and are simpler than
|
Native menus are implemented using Win32 API and are simpler than
|
||||||
@ -607,7 +604,8 @@ static QWindowGeometrySpecification windowGeometrySpecification = Q_WINDOW_GEOME
|
|||||||
\li \c {nocolorfonts} Turn off DirectWrite Color fonts
|
\li \c {nocolorfonts} Turn off DirectWrite Color fonts
|
||||||
(since Qt 5.8).
|
(since Qt 5.8).
|
||||||
|
|
||||||
\li \c {nodirectwrite} Turn off DirectWrite fonts (since Qt 5.8).
|
\li \c {nodirectwrite} Turn off DirectWrite fonts (since Qt 5.8). This implicitly
|
||||||
|
also selects the GDI font engine.
|
||||||
|
|
||||||
\li \c {nomousefromtouch} Ignores mouse events synthesized
|
\li \c {nomousefromtouch} Ignores mouse events synthesized
|
||||||
from touch events by the operating system.
|
from touch events by the operating system.
|
||||||
|
@ -142,8 +142,8 @@ static inline unsigned parseOptions(const QStringList ¶mList,
|
|||||||
unsigned options = 0;
|
unsigned options = 0;
|
||||||
for (const QString ¶m : paramList) {
|
for (const QString ¶m : paramList) {
|
||||||
if (param.startsWith(u"fontengine=")) {
|
if (param.startsWith(u"fontengine=")) {
|
||||||
if (param.endsWith(u"directwrite")) {
|
if (param.endsWith(u"gdi")) {
|
||||||
options |= QWindowsIntegration::FontDatabaseDirectWrite;
|
options |= QWindowsIntegration::FontDatabaseGDI;
|
||||||
} else if (param.endsWith(u"freetype")) {
|
} else if (param.endsWith(u"freetype")) {
|
||||||
options |= QWindowsIntegration::FontDatabaseFreeType;
|
options |= QWindowsIntegration::FontDatabaseFreeType;
|
||||||
} else if (param.endsWith(u"native")) {
|
} else if (param.endsWith(u"native")) {
|
||||||
@ -482,17 +482,17 @@ QWindowsStaticOpenGLContext *QWindowsIntegration::staticOpenGLContext()
|
|||||||
QPlatformFontDatabase *QWindowsIntegration::fontDatabase() const
|
QPlatformFontDatabase *QWindowsIntegration::fontDatabase() const
|
||||||
{
|
{
|
||||||
if (!d->m_fontDatabase) {
|
if (!d->m_fontDatabase) {
|
||||||
#if QT_CONFIG(directwrite3)
|
|
||||||
if (d->m_options & QWindowsIntegration::FontDatabaseDirectWrite)
|
|
||||||
d->m_fontDatabase = new QWindowsDirectWriteFontDatabase;
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
#ifndef QT_NO_FREETYPE
|
#ifndef QT_NO_FREETYPE
|
||||||
if (d->m_options & QWindowsIntegration::FontDatabaseFreeType)
|
if (d->m_options & QWindowsIntegration::FontDatabaseFreeType)
|
||||||
d->m_fontDatabase = new QWindowsFontDatabaseFT;
|
d->m_fontDatabase = new QWindowsFontDatabaseFT;
|
||||||
else
|
else
|
||||||
#endif // QT_NO_FREETYPE
|
#endif // QT_NO_FREETYPE
|
||||||
d->m_fontDatabase = new QWindowsFontDatabase();
|
#if QT_CONFIG(directwrite3)
|
||||||
|
if (!(d->m_options & (QWindowsIntegration::FontDatabaseGDI | QWindowsIntegration::DontUseDirectWriteFonts)))
|
||||||
|
d->m_fontDatabase = new QWindowsDirectWriteFontDatabase;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
d->m_fontDatabase = new QWindowsFontDatabase;
|
||||||
}
|
}
|
||||||
return d->m_fontDatabase;
|
return d->m_fontDatabase;
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ public:
|
|||||||
DontUseWMPointer = 0x400,
|
DontUseWMPointer = 0x400,
|
||||||
DetectAltGrModifier = 0x800,
|
DetectAltGrModifier = 0x800,
|
||||||
RtlEnabled = 0x1000,
|
RtlEnabled = 0x1000,
|
||||||
FontDatabaseDirectWrite = 0x2000
|
FontDatabaseGDI = 0x2000
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit QWindowsIntegration(const QStringList ¶mList);
|
explicit QWindowsIntegration(const QStringList ¶mList);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user