summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix stretched fonts with large pixel sizeEirik Aavitsland2019-03-271-11/+14
| | | | | | | | | | The Windows and Cocoa font engines ignored the stretch factor when the pixel size is so large that QPainterPath rendering is used instead of native. Fixes: QTBUG-14315 Change-Id: I93390528ac264452b7d6af7d39f49f4b0dd56279 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Remove specialized multi font engine on WindowsEskil Abrahamsen Blomfeldt2018-12-171-114/+0
| | | | | | | | | | | | | | | | | | | | | | | | | This was added as a platform-specific implementation of the multi engine in 2005, before this code was generalized, and it currently only has the purpose of special handling loadEngine(). The way this was special handled was by creating a new QFontEngine for every fallback family *every* time, never checking if the font engine already exists in the cache (like the superclass implementation does). The result of this was that if you had 500 fonts and each of them had 500 fallback fonts, and made a loop that would load all of them, then you would get 250000 font engines. At some point before this, we would run out of available handles and crash. There shouldn't be any need to have special handling of fallback font loading on Windows (i.e. all the platform specific parts should go through the normal mechanisms in QPA), so lets just go through the superclass implementation instead. [ChangeLog][Windows][Text] Reduced the number of font engines that are created when loading new fonts, fixing crashes in some special cases where a large number of fonts are created during a short period of time. Fixes: QTBUG-70032 Change-Id: I05040dd458e820510685e8c6df8f31876d9bdb89 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Windows code: Fix clang-tidy warnings about C-style castsFriedemann Kleint2018-08-301-4/+3
| | | | | | | | | | | Replace by reinterpret_cast or const_cast, respectively. Use auto when initializing a variable to fix Clang warnings about repeating the type name, do minor tidying along the way, and a few conversions of 0 or NULL to nullptr. Change-Id: Ieb271a87ddcf064f536e1ff05d23b1e688b1b56a Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Windows: Support application fonts as fallbacksEskil Abrahamsen Blomfeldt2017-12-141-12/+17
| | | | | | | | | | | | | | | | | | | In order to support the generated EUDC.TTE font for End-User Defined Characters on Windows, we need to allow fallback fonts which are not part of the default font collection. This is the same as change 21c7421d4e86b6048f9c2c7a9a81ec4ff1ed278c, but adapted to the fallback font code path. Without this change, the EUDC file would still be loaded, but it would be loaded through the GDI fallback, and we would display an error message on the console. Task-number: QTBUG-44594 Change-Id: Id2404228c7fd345523e4e5c99f31862e256930e3 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Merge remote-tracking branch 'origin/5.9' into devOswald Buddenhagen2017-08-021-2/+22
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/xcb/qxcbconnection.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp src/plugins/styles/mac/qmacstyle_mac.mm src/widgets/widgets/qdockarealayout.cpp src/widgets/widgets/qmainwindow.cpp src/widgets/widgets/qmainwindowlayout.cpp src/widgets/widgets/qmainwindowlayout_p.h tests/auto/corelib/tools/qlocale/tst_qlocale.cpp tests/auto/other/macnativeevents/BLACKLIST tests/auto/widgets/widgets/qmenu/BLACKLIST Change-Id: Ic8e724b80a65e7b1af25511b0e674d209265e567
| * Windows font database: Make DirectWrite warnings more verboseFriedemann Kleint2017-07-271-2/+22
| | | | | | | | | | | | | | | | | | | | | | Output family and format error message using _comerror struct. QWindowsMultiFontEngine::loadEngine: CreateFontFromLOGFONT failed (The operation completed successfully.) becomes QWindowsMultiFontEngine::loadEngine: CreateFontFromLOGFONT failed for "8514oem": error 0x88985002 : Indicates the specified font does not exist. Change-Id: Iccd4622127d94870b4b7465a4b4fdbf34ad1c434 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Windows: Stop considering Calibri as bitmap fontEskil Abrahamsen Blomfeldt2017-07-311-15/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts 2bc619c30ef08c9b5e2aaa3370d184670acd73ad, which tried to fix an unspecified problem by regarding all fonts with EBDT tables as potential bitmap fonts. The change log does not have any reference to a bug report or a problematic font. It also singled out Windows and GDI as the only font engine where this was necessary, which caused difference in behavior between different platforms, and even a difference in behavior on Windows when setting the hinting preference or turning on high-DPI scaling. The fact is that any font may have an EBDT table, and Microsoft has this for the smaller pixel sizes of many of their default fonts, e.g. Calibri. The result was that Qt would detect these as bitmap fonts and refuse to use distance field rendering for them. If there are fonts where it is a real problem that some glyphs only exist as bitmaps, we first need to know about them. Then we need to find some other solution than a blanket blacklist of all fonts with EBDT tables. For instance, we could separate the bitmap glyphs into their own QGlyphRuns and use native rendering only for those specific glyphs. [ChangeLog][Windows][Fonts] Some key fonts, such as Calibri, were being detected as bitmap fonts and not rendered correctly in Qt Quick. This has now been fixed. Task-number: QTBUG-62176 Change-Id: If892390cc74f180c5df9ef80484ba2eb0319f987 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-04-061-0/+2
|\ | | | | | | | | | | | | | | | | | | Conflicts: src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp src/platformsupport/fontdatabases/freetype/qfreetypefontdatabase.cpp src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp src/widgets/widgets/qtabbar.cpp Change-Id: Iaa9daee5f7a6490d56257a3824730a35751ceb05
| * Copy stretch to multifont fontDefAllan Sandfeld Jensen2017-04-051-0/+2
| | | | | | | | | | | | | | | | If we do not the fontDef of the multifont will be the default 0. Task-number: QTBUG-59443 Change-Id: Ib223517975b2a57b2371e309d12cd8f918d30825 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* | Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-02-081-1/+1
|\| | | | | | | | | | | | | | | Conflicts: configure.json mkspecs/win32-icc/qmake.conf Change-Id: Ibf40546b024d644c7d9ed490bee15b82597f4d3f
| * Windows: Restrict synthesizing of bold to < 750 weightAndy Shaw2017-02-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | When a black font is used, such as Arial Black, it would cause the font to appear to be rendered twice, particularly at large point sizes. This is down to the synthesizing of the bold aspect, however since the font is actually weighted as black this is not required. Change-Id: Ie32e0da8bc67c94123631253854312ed5c25ad9f Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* | Merge remote-tracking branch 'origin/5.8' into devLiang Qi2016-12-131-12/+4
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure qmake/Makefile.unix.macos qmake/Makefile.unix.win32 qmake/generators/win32/msvc_vcproj.cpp src/3rdparty/pcre/qt_attribution.json src/corelib/io/qsettings.cpp src/corelib/kernel/qdeadlinetimer.cpp src/platformsupport/kmsconvenience/qkmsdevice.cpp src/platformsupport/kmsconvenience/qkmsdevice_p.h src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.cpp src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsdevice.cpp src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h tests/manual/qstorageinfo/printvolumes.cpp tools/configure/configureapp.cpp Change-Id: Ibaabcc8e965c44926f9fb018466e8b132b8df49e
| * Register fonts with preferred names on WindowsAllan Sandfeld Jensen2016-11-231-12/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Looks up the canonical names of enumerated fonts and register them under their preferred names if present. Also changes the logic handling registration of english aliases, so it is always done, even if it might in rare cases cause a double registration since that is safe. Task-number: QTBUG-53458 Change-Id: Ia010774b26072192b55697b717cc37442c852881 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* | Platform support/Windows classes: Use member initializationFriedemann Kleint2016-11-241-13/+1
|/ | | | | | | | Use C++ 11 member initialization in value-type structs. Task-number: QTBUG-51673 Change-Id: Ic45ab21c738ec7b7d526e30a1de2e19206da89ed Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Move Windows font DB and engines to QtFontDatabaseSupportGabriel de Dietrich2016-10-281-0/+1330
This allows creating or extending QPA plugins to provide access to QFont and related types. It concerns both GDI and DirectWrite engines, as well as the regular and the freetype based font databases. The qt.qpa.fonts logging category has been moved together into the QWindowsFontDatabase related files to avoid depending on the qwindowscontext.h header file. Finally, QwindowsNativeImage is following pending a future refactor with similar code in qpixmap_win.cpp and the Windows XP style. Change-Id: Iddff2f3d715e3ab7695e6c2052b7596a01fd6fa8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>