summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-12-241-3/+0
|\ | | | | | | Change-Id: I2defae1904154283446b069d151c3ef57302ec7b
| * Fix writingSystems determination by code page range bitsKonstantin Ritt2013-12-191-3/+0
| | | | | | | | | | | | | | | | | | | | Do exactly what windows font database does to determine writingSystems in case of non-truetype fonts. Task-number: QTBUG-13585 Change-Id: I4a1a48d74c36e403c31f20847cf80295d89a34bc Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Minor optimizationKonstantin Ritt2013-12-201-1/+2
|/ | | | | | | | | | Querying the "extra" fallback fonts (which are hard-coded names, actually) for family only makes sense for scripts that cover more than just a single WS; these currently are Common (<-Inherited) and Han. Change-Id: I37682f1ae51a476a21b933607de48b01255cf1c3 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Warn if OpenType support missing for script of interestKonstantin Ritt2013-09-131-1/+1
| | | | | | Change-Id: I076cfc5244ca3c060fd005cc3fbf30b357604bc7 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Decrease code duplication in QFontDatabase-sKonstantin Ritt2013-09-131-15/+4
| | | | | | | | Move scriptRequiresOpenType() body right into QFontEngine::supportsScript(), thus centralizing use of this performance cheat. Change-Id: I5f494b086f8f900b631c491f41e9cb800002c0f6 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Make QFontEngine not derive from QObjectKonstantin Ritt2013-09-101-3/+0
| | | | | | | | | | | | | Whilst having the objectName set for each engine is somewhat handy when debugging, deriving from QObject just for that is a wasting of memory in all other cases. This also broke the font engine abstraction by allowing qobject_cast() to access some private data; the only sane way to distinguish engines is querying their Type value. Change-Id: Ib1d195692859eb39089f6d8d9016cb8f9dcc0400 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* API-cleanup: Add QPlatformFontDatabase::registerAliasToFontFamily().Friedemann Kleint2013-07-161-3/+1
| | | | | | | | Unexport free function qt_registerAliasToFontFamily() and Make it a static member of QPlatformFontDatabase instead. Change-Id: I1df49a8e37a24b3961f92288d67b6f1108a7d520 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Windows font database: Resolve aliases for extra fonts.Friedemann Kleint2013-07-111-3/+6
| | | | | | | | | Ensure QFontDataBase::hasFamily() deals with aliases. Task-number: QTBUG-31689 Change-Id: Ia59bfcb93362ac9343c6d30dab1091a4db482dfa Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Windows: Fix compile with -directwrite.Friedemann Kleint2013-04-171-1/+1
| | | | | | | | Task-number: QTBUG-30643 Change-Id: I3a2a0e767a92bc2ff9d7d241dfad6771034e6ad4 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Fix reporting writing systems for non-TrueType fontsKonstantin Ritt2013-04-011-30/+38
| | | | | | | | | | | | | | | | | | According to EnumFontFamExProc docs: > The ENUMLOGFONTEX structure includes the localized name > of the script (character set). lfCharSet ENUMLOGFONT's member must be used instead of comparing these names to non-localized ones. Also, when the font supports more than a single charset, EnumFontFamExProc callback is called for it once per charset; thus, we shouldn't "unsupport" writing systems in a subsequent call. Task-number: QTBUG-30448 Change-Id: I58fcf32958490cf5a3e873db8335e71a39a9c518 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* QFontConfigDatabase: fix fallbacksForFamily() for CJK languagesKonstantin Ritt2013-04-011-1/+1
| | | | | | | | | | For Han Unicode script, the language couldn't be determined algorithmically, the only way is guessing based on the user's locale. The is a regression introduced in 9b0fab6b62df98519ebfab117f14b9d3465d8c68 Change-Id: I84645885a825fdfb6c268edaf10185bf5e447eb5 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fix the font engines leakingKonstantin Ritt2013-03-201-2/+2
| | | | | | | | | | | | | | | 1. when there were some engines with ref > 1 in the cache, prior to calling QFontDatabase::{add,remove}ApplicationFont()/removeAllApplicationFonts() (QFontCache::clear() has never decreased engine's cache_count); 2. when the QFontEngineData's engine is not in cache i.e. the Box or Test font engine (~QFontEngineData() didn't free engines it keeps). Instead of using the font engine's (external) "cache_count" counter, QFontCache now references a given font engine every time it is inserted to the cache and dereferences exactly that number of times in clear(). Change-Id: I87677ebd24c1f4a81a53526f2e726e596b043c61 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Get rid of qt_determine_writing_systems_from_truetype_bits()Konstantin Ritt2013-03-121-125/+1
| | | | | | | Move this code to QPlatformFontDatabase and get rid of all dups of it. Change-Id: Idea6c84819039bf3b345b1305305951ade8d1ac4 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fix selection of fonts that require OpenType featuresKonstantin Ritt2013-03-041-2/+1
| | | | | | | | HB_Face's supported_scripts[] expects HB_Script, so QChar::Script should be remapped via script_to_hbscript(). Change-Id: Ib068c35ab76567fe9a61da7d8ab01133a6f58bc0 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-01-281-8/+36
|\ | | | | | | Change-Id: I12b4d8b99bdccae53b1a978cd6eb8f4ac6fb3c76
| * Doc: Fix module name formatSze Howe Koh2013-01-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow the conventions at http://qt-project.org/wiki/Spelling_Module_Names_in_Qt_Documentation QtCore -> Qt Core QtDBus -> Qt D-Bus QtDesigner -> Qt Designer QtGui -> Qt GUI QtImageFormats -> Qt Image Formats QtNetwork -> Qt Network QtPrintSupport -> Qt Print Support QtScript -> Qt Script QtSql -> Qt SQL QtSvg -> Qt SVG QtTest -> Qt Test QtWebKit -> Qt WebKit QtWidgets -> Qt Widgets QtXml -> Qt XML QtConcurrent -> Qt Concurrent (partial) QtQuick -> Qt Quick (partial) Also, distinguish between "module" and "library" Change-Id: Icb8aa695ae60b0e45920b0c8fce4dc763a12b0cd Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| * Make QWindowsFontEngineData thread-local.Friedemann Kleint2013-01-251-7/+35
| | | | | | | | | | | | | | Task-number: QTBUG-29266 Change-Id: Id963187f1ef03caf4e9ed3c4397225a9ad7362bb Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-01-221-1/+1
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qsavefile_p.h src/corelib/tools/qregularexpression.cpp src/gui/util/qvalidator.cpp src/gui/util/qvalidator.h Change-Id: I58fdf0358bd86e2fad5d9ad0556f3d3f1f535825
| * Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | | | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Merge branch 'stable' into devFrederik Gladhorn2013-01-041-77/+90
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: examples/widgets/painting/shared/shared.pri src/corelib/tools/qharfbuzz_p.h src/corelib/tools/qunicodetools.cpp src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp src/plugins/platforms/windows/qwindowsfontdatabase.cpp Change-Id: Ibc9860abf570e5ce8b052fb88feb73ec35e64bd3
| * Fix styleName support in QPA font databaseJiang Jiang2012-12-141-4/+4
| | | | | | | | | | | | | | | | | | Font styleName support was disconnected since Qt switched to QPA fontdatabase. Now add the code from Qt 4.8 back to enable this in QPA. Change-Id: Iab2cbfd5468f87542183348c2123ca4b2c270692 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
| * QWindowsFontDatabase: provide better fallbackFamilies.Pierre Rossi2012-12-041-74/+87
| | | | | | | | | | | | | | | | | | | | | | Borrowed some code from QWindowsFontDatabase::createEngine that will help ensure our fallback options are thorough enough to display say chinese glyphs when using the QRawFont + QTextLayout combination that QtWebKit relies on. Task-number: QTWEBKIT-383 Change-Id: Ie4c1d5ef7d58588afaa436c89a9575ffd646c314 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Update Qt internals to use QChar::ScriptKonstantin Ritt2012-12-211-8/+6
|/ | | | | | | | | | | | | | ...and remove the outdated QUnicodeTables::Script enum. QFontEngineData now has one extra slot that never used (engines[QChar::Script_Inherited]). engines[QChar::Script_Unknown], if accessed, would be set with a Box engine instance, and could be used as a minor optimization some time later. In order to preserve the existing behavior, we map all scripts up to Latin to Common. Change-Id: Ide4182a0f8447b4bf25713ecc3fe8097b8fed040 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Fix GDI leaks in fontengineMiikka Heikkinen2012-11-051-1/+1
| | | | | | | | | | GDI objects that are created need to be deleted once no longer needed, instead of just released. Task-number: QTBUG-27812 Task-number: QTBUG-27825 Change-Id: I53b04b54cea9e2aaa8fc72365c215f516c5682e6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Use DirectWrite font engine for non-ttf fonts as wellEskil Abrahamsen Blomfeldt2012-07-101-3/+1
| | | | | | | | | | | | DirectWrite supports different font types, not just TTF. In order to enable e.g. CFF support, we simply remove the test for TTF which was initially put in to be on the safe side when handling bitmap fonts. However, using DirectWrite with bitmap fonts also seems to work fine, so there's no reason to have the fallback. Task-number: QTBUG-22654 Change-Id: I8572bc421ab3dd223025ea152ba9b33f7cf33a8a Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Support fallback fonts in DirectWrite font engineEskil Abrahamsen Blomfeldt2012-07-101-85/+96
| | | | | | | | | | | | | When selecting fallback fonts for a DirectWrite font, we would cast the font engine to QWindowsFontEngine and get unpredictable results and crashes. This change factors out getting the LOGFONT data from the QFontDef struct and will use this to create a new DirectWrite engine. Task-number: QTBUG-22658 Change-Id: I743944d9a44d8742b47b1aa3354532493362cc4a Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Windows: Fix warnings about being unable to load fonts from font dir.Friedemann Kleint2012-06-141-1/+0
| | | | | | | | | | | | | Do not call QPlatformFontDatabase::populateFontDatabase(), which tries to load qpf2-fonts from the Qt library directory. This directory is not installed on Windows. Note: This affects non-in-source builds only. Task-number: QTBUG-26066 Change-Id: I5782e61965958fc48e0edd7a3d50eef325529708 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Windows QPA plugin: Add \internal to class documentation.Friedemann Kleint2012-05-291-0/+1
| | | | | | | | Prevent the classes from appearing in the Qt documentation. Change-Id: I62abff0c57effdf16629f9d5a0dc384ea2c43d5a Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Fix font printing on Windows using the native engine.Friedemann Kleint2012-05-151-0/+6
| | | | | | | | | | | - Add HFONT, LOGFONT, trueType as properties of the Windows font engine, make it a real Q_OBJECT. - Query properties in the Windows print engine and use the HFONT, LOGFONT there. Change-Id: I5c35275b32ef6580d7fa15ed83c6e79e33dc3334 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Fix for windows platform plugin to work with WINCE.Bjoern Breitmeyer2012-05-101-2/+30
| | | | | | | | | | | Made opengl optional. Made Clipboard and Accessability optional. Moved internal mime data into its on source file, was implemented in the clipboard source which is just strange. Change-Id: I6ddf0c656533bd45e22e24492fc2254d15b7822f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Change Windows font database to use qendian.hMiikka Heikkinen2012-04-241-111/+85
| | | | | | | | Removed the custom BigEndian class and utilized qendian.h functions instead. Change-Id: Ieb10f77411404e1524fcedaceffa5b0e333c7429 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Windows: Fix QRawFont loading from data.Miikka Heikkinen2012-04-231-3/+629
| | | | | | | | | | | | | The implementation for loading QRawFont from data was missing from Windows QPA plugin. For freetype font database, just called the parent QBasicFontDatabse implementation. For native font database, ported the implementation from Qt 4.8 qrawfont_win.cpp. Task-number: QTBUG-24197 Change-Id: Ia784d4cbc4f37c925aa49e53d04faf06a7169a73 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Fix compilation with QT_NO_DEBUG_OUTPUT definedAndy Shaw2012-04-201-0/+2
| | | | | Change-Id: If96e93c08240e0f626f8e465993b2c38b2cad832 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make it possible to enable non-scalable font scalingMiikka Heikkinen2012-04-101-0/+5
| | | | | | | | | | | | | | | | | | | Windows native font engine supports scaling of non-scalalble fonts, so make it possible to do so. Added two functions to QPlatformFontDatabase: fontsAlwaysScalable() and standardSizes(), and made fontsAlwaysScalable() to return true for Windows native font database. Windows Freetype font engine doesn't seem to support scaling of non-scalable fonts, so didn't enable it in there. Added implementation of standardSizes() for Mac OS. Task-number: QTBUG-24970 Change-Id: I41c9356ede8a37b7c61db94340dbeb5b629f34b9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Don't hardcode the default families in qfont_qpa.cppPierre Rossi2012-04-101-0/+26
| | | | | | | | | Since different platforms come with different fonts, we should probably leave it up to the platform to decide which family to use. Change-Id: I18bb81c0ce87cc7e9ac7f3abaeae1b41c0ce8410 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Implement application font loading for WindowsMiikka Heikkinen2012-03-271-11/+162
| | | | | | | | | | | | | | | | | For FreeType Windows font database, use the application font loading implementation of the parent class. For native Windows font database, the implementation was adapted from Qt 4.8. Also fixed a bug in font database population, where old data was not destroyed before population, resulting in fonts not getting properly repopulated when a new font was added. Task-number: QTBUG-24193 Task-number: QTBUG-24195 Task-number: QTBUG-24196 Change-Id: Ie224a87baf7500b9867aaafa807f62dd4503dee8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Introduce FontSmoothingGamma as a platform style hint.Friedemann Kleint2012-03-271-12/+16
| | | | | | | | | | - Allocate gamma tables on the heap in a thread-safe way, use font smoothing returned by the style hints of the platform to calculate them. - Improve font rendering on Windows. Change-Id: I8cd39b51cf03cbd642474c02b9076814baecd597 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* build fix for -no-freetype in Windowsjian liang2012-03-141-2/+10
| | | | | | | | | | Don't use QWindowsFontDatabaseFT::systemDefaultFont() and QWindowsFontDatabaseFT::LOGFONT_to_QFont() in qwindowsfontdatabase.cpp and qwindowstheme.cpp because it is not available when building with -no-freetype. Change-Id: I11075475ff435c55b0c641540f95a4d3861b79da Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Add fonts to QPlatformTheme.Friedemann Kleint2012-03-071-47/+2
| | | | | | | | | | | | | | | | - Remove QPlatformFontDatabase::defaultFonts() returning a hash containing widget name ->font and the Windows implementation. - Add enumeration and font accessor to QPlatformTheme. The value returned for the enumeration value overwrites the default font of the font database. - Implement for Windows, Mac and KDE. - Add more Windows palettes. Task-number: QTBUG-23686 Change-Id: I8a2abdfd216df23daa7c9630c54264cdf61295db Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Fix Windows -no-freetype buildJonathan Liu2012-02-241-2/+177
| | | | | | | | | | | | | The localizedName and getEnglishName functions were defined in qwindowsfontdatabase_ft.cpp but used in qwindowsfontdatabase.cpp. However if -no-freetype is specified during configure then qwindowsfontdatabase_ft.cpp is not compiled which results in an undefined reference. To resolve this, the functions are moved to qwindowsfontdatabase.cpp which is always compiled whether -no-freetype is specified or not. Change-Id: I085d84cecb29065ba5e6495b52eef7a678947bdc Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Use english name to match font in windows platformjian liang2012-02-161-4/+13
| | | | | | | | | | | | | | In windows platform, simplified chinese envrionment, the default font family name is "SimSun" which is not in the font list generated by EnumFontFamiliesEx(), this will cause chinese font can't be displayed. This patch will generate font's english name during font enumeration in windows platform, and take font's english name into consideration in font matching. The english name generation code is taken from Qt4.8 Change-Id: Ie939ec0c8c08c628a835c7a53fb22d0545626d9c Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
| | | | | | | | | | As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: I311e001373776812699d6efc045b5f742890c689 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update contact information in license headers.Jason McDonald2012-01-231-1/+1
| | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: I431bbbf76d7c27d8b502f87947675c116994c415 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update copyright year in license headers.Jason McDonald2012-01-051-1/+1
| | | | | Change-Id: I02f2c620296fcd91d4967d58767ea33fc4e1e7dc Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Build fix if using '-no-stl' configure optionYuchen Deng2012-01-031-0/+2
| | | | | | | | | | MSVC2010SP1: error C3861: 'wmemcpy': identifier not found Change-Id: Ib28edb5e38d691635c56dac846134e1c88c3f312 Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Support adding application fonts with QFontconfigDatabaseJiang Jiang2011-09-231-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QFontDatabaseQPA should be able to reinitialize database and reregister all the fonts when an application font is added, because it will trigger db->invalidate(). Add cloneWithSize support to QFontEngineBox so that even no usable font is found in QFontDatabase, QRawFont::setPixelSize can still work (without making the result rawfont invalid). Register application fonts with QFontconfigDatabase, the code is adapted from QFontDatabaseX11. Reenable QRawFont tests for QPA, these usages are now supported in QPA. Fix QStaticText tests, raster in QPA does support transformations. Translate the text before ZAxix rotation so that it will be visible in canvas. Add back fixedPitch support to QPA, and fix QFontDatabase tests. Fix QGlyphRun tests, ignore non-existence glyphs in alphaMap locking. Fix QFontMetrics tests. Task-number: QTBUG-21415, QTBUG-20754, QTBUG-20977, QTBUG-20976, QTBUG-20760, QTBUG-20759 Change-Id: I24aea7d6ec6b2ac6342134d1f2591327c23a692b Reviewed-on: http://codereview.qt-project.org/5384 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Fix email address in license headers.Jason McDonald2011-09-151-1/+1
| | | | | | | Change-Id: I5abf378f91a3a8f453058f36254f04258147cc15 Reviewed-on: http://codereview.qt-project.org/4851 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Add Windows to the Lighthouse.Friedemann Kleint2011-08-181-0/+950
Add an initial Lighthouse plugin for the Windows operating system. Change-Id: I6934562266e1aa0ac270bf6107df05a9e56ef82c Reviewed-on: http://codereview.qt.nokia.com/3107 Reviewed-by: Oliver Wolff <oliver.wolff@nokia.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>