summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qfontdatabase.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.5' into devFrederik Gladhorn2015-08-061-19/+66
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/global/qt-cpp-defines.qdocconf src/3rdparty/forkfd/forkfd.c src/corelib/codecs/qtextcodec.cpp src/corelib/kernel/qmetatype.cpp src/corelib/tools/qset.qdoc src/gui/accessible/qaccessible.cpp src/gui/image/qpixmapcache.cpp src/opengl/qgl.cpp src/tools/qdoc/generator.cpp src/widgets/kernel/qwidget.cpp tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp Change-Id: I4fbe1fa756a54c6843aa75f4ef70a1069ba7b085
| * Don't expose qt_setQtEnableTestFont(bool) by defaultKonstantin Ritt2015-07-311-6/+11
| | | | | | | | | | | | | | | | | | Build it only in -developer-build mode for tests that might depend on exact-matching font behavior. Return earlier to avoid doing any useless job. Change-Id: I966ee5689f03403e45f4c957b63e3113f0467803 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
| * Default implementation for QPlatformFontDatabase::fallbacksForFamily()Konstantin Ritt2015-07-311-0/+40
| | | | | | | | | | | | | | | | | | ...mainly for platforms that do not provide a native/unified way to obtain system-defined font fallbacks list (ie !CoreText && !FontConfig). Change-Id: I23c5589d79ddecb6311ccc52ec8b29977f06d408 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
| * [QFontDatabase] Defer the fallback families list initializationKonstantin Ritt2015-07-311-13/+15
| | | | | | | | | | | | | | | | | | | | Use the same trick the WebKit related path has used for years: if there is no explicit list that takes a precedence over the default one (i.e. QFont("Arial,SimHei")), then defer the fallback families list initialization until it gets requested. Change-Id: If5a74294bdebb24865c619bc0d7328b3e706de76 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.5' into devLiang Qi2015-07-011-9/+20
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qglobal.cpp src/corelib/global/qglobal.h src/corelib/global/qsysinfo.h src/corelib/global/qsystemdetection.h src/corelib/kernel/qobjectdefs.h src/plugins/plugins.pro tests/auto/widgets/itemviews/qlistview/qlistview.pro Change-Id: Ib55aa79d707c4c1453fb9d697f6cf92211ed665c
| * Extend generated style strings to include new font weightsAllan Sandfeld Jensen2015-06-151-9/+20
| | | | | | | | | | | | | | | | | | | | | | When a font style-name is not directly available from the font we need to generate it with the data we have, so we should include all the new supported weights. Change-Id: I45cc0114f8c76f45bc7a639f9d0d8096a064bc51 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: René J.V. Bertin <rjvbertin@gmail.com> Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com>
* | Remove quadratic behavior in QFontDatabase::writingSystems()Marc Mutz2015-06-191-8/+16
|/ | | | | | | | | | | | | | | | | Looping over QList::contains() constitutes O(N²) behavior, the more so as this QList is horribly inefficient since WritingSystem is not a Q_MOVABLE_TYPE. Since the range of possible unique values in the result is severly limited (by virtue of being enumerated values), use a bitmask to remember which WritingSystems were encountered, then, after releaseing the mutex again, use that bitmask to populate the QList. Change-Id: I1d12eb487513ec17faa6f38942f8b681819dc0e8 Reviewed-by: Adam Majer <adamm@zombino.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Better match thin font stylesAllan Sandfeld Jensen2015-05-141-0/+2
| | | | | | | | A style name 'Extra Thin' or 'Thin Italic' should be parsed as Thin font weight. Change-Id: I8acebed7330c23231b3742d887081d8b3d0aeb19 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Fix overcaching the fallback families list for a requested familyKonstantin Ritt2015-05-131-15/+6
| | | | | | | | | | The cached list didn't take fontStyle, styleHint and script into account. As long as QFontCache isn't explicitly disabled, loadEngine() rarely called for the same family, foundry, style and size - so avoid caching anything here at all. Change-Id: I7779bf33fc074edc00799f9a39d67327f8c88ccc Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Simplify QFontDatabase::findFont()Konstantin Ritt2015-05-131-17/+20
| | | | | | | | | | | | QFontDatabase::load() is the only caller that passes non-null QFontPrivate* to QFontDatabase::findFont(), to adjust the pointSize with regards to the font's dpi; do that right in QFontDatabase::load(). The `multi` param's meaning is, in fact, an absence of the QFont::NoFontMerging flag, so prefer the latter and prevent ambiguity in the future. Change-Id: Icc7751044e454ca438e7627364faa415287bf1ae Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* [QFontDatabase::findFont] Get rid of the refactoring leftoversKonstantin Ritt2015-05-131-13/+3
| | | | | | | | The logic this code was aimed for has been covered by a more complete solution in QFontDatabase::load() years ago; simply drop the dead code. Change-Id: Id8860353ff4f4d2f1529aa89810d6c5725e97d24 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* [QFontDatabase] Get rid of QtFontEncodingKonstantin Ritt2015-05-011-30/+8
| | | | | | | | This one has not been unsed for ages (since Qt3?). Change-Id: Iaf514db1b698b34a303f34c150b72db989eb176c Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* [QFontDatabase] Drop QtFontDesc's familyIndex memberKonstantin Ritt2015-05-011-4/+1
| | | | | | | | Many times set but never used. Change-Id: I297f21d4b9878e5f9559a2dfdb2d3de34107bb7d Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* [QFontDatabase] Get rid of some dead codeKonstantin Ritt2015-05-011-3/+0
| | | | | | | | | 1. Checking if `db->count == 0` inside the `for (int x = 0; x < db->count; ++x)` loop makes absolutely no sense; 2. The family gets loaded just a line above (ensurePopulated()). Change-Id: I72dbd42565c4f5a5d9ff8879f10ee0ece7298fa7 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* [QtFontFamily] Get rid of unused memberKonstantin Ritt2015-04-081-2/+0
| | | | | | Change-Id: I8c70995767bfb5fdbd6e9e9464029beeccf41f53 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Add explanatory text to translated strings in font database.Friedemann Kleint2015-02-201-0/+2
| | | | | | | Notify the translator that those are substrings used for searching. Change-Id: I242f701ff23929fe84099c40a696acfca3388f7b Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Use C++ <cmath> instead of <math.h>Allan Sandfeld Jensen2015-02-161-1/+1
| | | | | | | | | | | | | | Including math.h can pollute the default namespace, and break some compilers if cmath versions of the method are declared as using. Switching to C++ math functions also greatly simplifies handling of float qreal as C++ automatically chooses the right method. [ChangeLog][QtCore][QtMath] qmath.h no longer includes math.h, so any sources depending on that indirect inclusion may fail to build. Change-Id: I4d0e331dafba354ec05dc5052e61ef4ff8d387fe Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* QFontDatabase: Move style key near usage to avoid heap allocsRobin Burchell2015-02-151-8/+4
| | | | | | | Raises delegates_text.qml to 233 ops/frame Change-Id: I88a26d2a9e4dc12ebbbc07329141976c194555ec Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* QFontDatabase: Optimize QtFontStyle::Key::Key().Robin Burchell2015-02-151-6/+13
| | | | | | | | | | | Similar to 46b2c74eaf95fc607518988c7958574c7f70f5ae, skip the translations at all costs. They allocate, and are very expensive. To ensure we try harder to skip them, also avoid checking styles at all unless one has been provided. This increases delegates_text from 209 items to 221 items for me. Change-Id: Ia18b07de7b48cee356e9506a0c5d7129621d79d2 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Pass params of shareable type by const-ref rather than by valueKonstantin Ritt2015-02-131-1/+1
| | | | | | | | ...where passing them by value was not intentional. Change-Id: Ifd5036d57b41fddeeacfbd3f5890881605b80647 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Update copyright headersJani Heikkinen2015-02-111-7/+7
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2015-02-101-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro src/gui/image/qimage_conversions.cpp src/gui/opengl/qopenglextensions_p.h src/gui/text/qtextengine.cpp src/network/ssl/qsslsocket_openssl.cpp src/plugins/platforms/eglfs/qeglfshooks_stub.cpp src/plugins/platforms/eglfs/qeglfsscreen.cpp src/plugins/platforms/eglfs/qeglfswindow.cpp src/plugins/platforms/windows/qwindowsfontdatabase.cpp src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp src/plugins/platforms/windows/qwindowsnativeinterface.cpp src/plugins/platforms/windows/qwindowsscreen.cpp src/plugins/platforms/windows/qwindowswindow.cpp src/plugins/platforms/windows/qwindowswindow.h src/plugins/platforms/xcb/qxcbdrag.h src/widgets/itemviews/qabstractitemview.cpp src/widgets/kernel/qwidget.cpp src/widgets/util/qsystemtrayicon_p.h tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp Thanks to Friedemann Kleint for resolving the qwindowsfontdatabase.cpp conflicts. Change-Id: I937232c30523d5121c195d947d92aec6f129b03e
| * QFontDatabase: Make assert about failed delayed font population more verbose.Friedemann Kleint2015-01-211-1/+1
| | | | | | | | | | | | Task-number: QTBUG-43774 Change-Id: Ie55de75e31e1e569f4b4e336900a8f96f7c1b9c0 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
* | Use prefix instead of postfix for iteratorsMaks Naumov2015-02-081-1/+1
| | | | | | | | | | | | | | | | | | | | The postfix increment(decrement) creates a temp copy of *this before the modification and then returns that copy. It's needed only when using the old iterator and then incrementing it. Change-Id: I7f6702de78f5f987cec3556047e76049b4ee063a Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | [QFontDatabase] Speed-up is(Bitmap|Smoothly)ScalableKonstantin Ritt2015-02-041-0/+6
| | | | | | | | | | | | | | | | | | | | ...with hints provided by platform font database. Namely, if database reports fontsAlwaysScalable(), then we could simply return true in QFontDatabase::is(Bitmap|Smoothly)Scalable. Change-Id: I7af082718e007dfdaf430d3c4852005f62efa41a Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Introduce QFontDatabase::isPrivateFamily()Gabriel de Dietrich2015-01-211-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | Some platforms have the concept of private fonts (e.g., OS X and iOS) which are generally used as system UI fonts. Since 909d3f5c7, the platform font database has a similar but private API. [ChangeLog][QtGui][Fonts] Added QFontDatabase::isPrivateFamily() Change-Id: Ibdce9de534fadbbc3965be8a942c8012edeed209 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
* | Make it obvious we never expect QFontDatabase::Any to be supportedKonstantin Ritt2014-12-231-1/+1
| | | | | | | | | | | | | | | | | | This also unbreaks matching for scripts not covered by qt_script_for_writing_system(). Change-Id: Iddf015281a57a9dbae2e09f0408359441b020df8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* | Re-use cached font engines when request only differs in scriptKonstantin Ritt2014-12-231-2/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When looking for engine of non-Common script and lookup in the font cache failed, first check if we have already loaded that engine for the same request but different script. In general, this gives an arbitrary font engine a chance to be re-used multiple times when request only differs in script, which saves a LOT of memory (~10MB on my win7, after scrolling the QFontComboBox'es list). Change-Id: I9c752ce65c27142237a0ed74b33742b6a8d90a24 Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* | [QFontDatabasePrivate] Drop unused `fallbackFamilies` memberKonstantin Ritt2014-12-231-5/+1
| | | | | | | | | | | | | | | | It is probably a refactoring left-over. Change-Id: Ic6f1e1a87c8603f600cd1736cf12c03ef0188074 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* | [QFontDatabase] Don't look for best foundry twiceKonstantin Ritt2014-12-231-1/+1
| | | | | | | | | | | | | | | | | | In case the foundry name was empty and foundry lookup has failed, don't look for *any* foundry since it does exactly the same as previous call. Change-Id: I2a81949df06c31e1ae6999a6bbbe973408d4b814 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com>
* | Simplify QFontDatabase::load() a bitKonstantin Ritt2014-12-211-19/+15
| | | | | | | | | | | | Change-Id: Iaf7db1eb542db1ea0f2ca6c83282961bf4341243 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* | Add QFont::Weight enum valuesPierre Rossi2014-12-121-33/+37
| | | | | | | | | | | | | | | | | | | | And try to make good use of them in order to match the QFont request more closely. Task-number: QTBUG-38482 Change-Id: I768dfa8828e370d77a1c17ecf4796d750b3edd9b Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
* | Use special value SMOOTH_SCALABLE where appropriateKonstantin Ritt2014-11-291-3/+2
| | | | | | | | | | | | | | | | It is the same as USHRT_MAX but mentioning a special value makes the code more readable. Change-Id: I91063e472a6130ceb47f866344709786e4b05f20 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-11-271-1/+2
|\| | | | | | | Change-Id: Id20053d261b4fbbcc0ac8ba49dd3ef2253fa4b95
| * Deprecate implementations of functions deprecated in headersShawn Rutledge2014-11-271-1/+2
| | | | | | | | | | | | | | | | | | If you build with configure -DQT_NO_DEPRECATED this will avoid some build errors. Change-Id: If2b2e57b6919091f3f077ebc2aeca0c3fd2421aa Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* | QFontDatabase: Fall back to "Any" writing system if none matchesUlf Hermann2014-11-261-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The scriptForWritingSystem array has significantly fewer entries than QChar::Script. It can easily happen that we don't find a writing system for a given script. In that case, just assume any writing system can be used. This fixes an out-of-bounds array access resulting from the writing system index being one-past-end if std::find doesn't find a match. Change-Id: Ic277be1dad71af42d479e70e0b4bf29a7dc8d0a7 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-11-241-5/+5
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qiodevice.cpp src/plugins/bearer/linux_common/qofonoservice_linux.cpp src/plugins/bearer/linux_common/qofonoservice_linux_p.h src/plugins/platforms/android/qandroidplatformtheme.cpp src/tools/bootstrap/bootstrap.pro src/widgets/styles/qmacstyle_mac.mm Change-Id: Ia02aab6c4598ce74e9c30bb4666d5e2ef000f99b
| * Revert "Fix fallbacks for adapted common script"Eskil Abrahamsen Blomfeldt2014-11-131-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts 1dd9a0af4f577ccb5578cea562a98686c8e290e6. It was a band-aid for a change in the unicode itemizing algorithm which caused the script of a script item to become unreliable. This change has since been reverted, so the band-aid is no longer needed, and it also causes problems for WebKit on Windows when it ends up preferring Arial Unicode MS as the font for Uchen script, even though the font does not support this script. The autotest from the reverted commit is kept in place and still passes. [ChangeLog][Text] Fixed regression when rendering Uchen text in WebKit on Windows. Change-Id: I488c84703bb55a050d90092c6bf9e5c70a9e31c2 Task-number: QTBUG-41372 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-10-271-2/+7
|\| | | | | | | | | | | | | Conflicts: src/gui/text/qfontdatabase.cpp Change-Id: I6ac1f55faa22b8e7b591386fb67f0333d0ea443d
| * Add support for more font weights internallyPierre Rossi2014-10-241-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We should have more font weights in QFont::Weight to allow for finer grained control. For the time being, we can simply use intermediate weights to better support the different font weights falling in between the ones defined in QFont::Weight. Also amend the documentation to clarify the fact that QFont supports and can return weights falling outside the predefined values, which is already the case (e.g. when using fontconfig). Done-with: Gabriel de Dietrich Change-Id: I693cdd48b8b77e7ed550cdf991227bcb819d8e7b Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into devOswald Buddenhagen2014-09-291-23/+22
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qbytearray.cpp src/gui/image/qimage.cpp src/gui/image/qppmhandler.cpp src/gui/kernel/qguiapplication.cpp src/gui/painting/qpaintengine_raster.cpp Change-Id: I7c1a8e7ebdfd7f7ae767fdb932823498a7660765
| * Update license headers and add new license filesMatti Paaso2014-09-241-19/+11
| | | | | | | | | | | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
| * Fix rendering of fonts matched based on stretchAllan Sandfeld Jensen2014-08-141-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | If the fontdatabase matches a font based on the stretch aka width then the stretch factor on the font-engine needs to be 100 to avoid the fontengine doing manual stretching. Without this a font requested with 75 stretch and matched with a font of 75 stretch would be further condensed 25% by the fontengine. Change-Id: Ib85ff027420c0ce891b0808dab13d25417d22df1 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Fix selection of fonts based on styleNameAllan Sandfeld Jensen2014-08-141-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | By carrying the styleName through from QFontDef to bestFoundry and giving it to bestStyle that can use it we can accurately match fonts based on styleName. This makes it possible to match styles such as DejaVu Sans Condensed and Ubuntu Medium. The example fontsampler is updated so it can actually sample all the different styles it lists. Change-Id: I381effc74130311f98794cd07d30be10dee4fe45 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | QFontDatabase: Micro-optimize getFontWeight.Robin Burchell2014-09-151-22/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Translation is an expensive thing, and probably quite uncommon - so don't penalise any common cases by checking for it until we're quite sure they have failed. In addition, we avoid repeated string construction when translating (caching the result) and avoid repeated case-insensitive comparison by toLowering the string data. This change either speeds up most runtime cases that were unfairly penalised (such as "light") by 50-70% or doesn't impact the runtime speed at all (or, results were within the margin-of-error). Of course, calling with translated content will be a bit slower now, but the slowness of the translations should more than dwarf the real change there. Change-Id: If24685dfd553e4aed07fbf07678b2585e22b0a3a Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* | Fix font family name mismatch between localized and non-localized versionLi Qiu2014-08-281-0/+9
|/ | | | | | | | | | Localized font family names and their aliases are stored in font database. However, fallbacksForFamily gets non-localized family names which results in family name mismatch. Change-Id: Iddf9101e15a0e49c5ba4c049969fc90cb7853443 Task-number: QTBUG-40978 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Fix fallbacks for adapted common scriptEskil Abrahamsen Blomfeldt2014-07-101-5/+5
| | | | | | | | | | | | | | | | | | | | | | When the platform plugin gives us specific fallbacks for a specific script, we need to respect this, and load the correct font family regardless of which writing systems it supports. This is especially important since the common script is adapted to match surrounding, proper scripts, so characters such as digits next to e.g. Hebrew text will be marked as Hebrew. On stock Android, there is a single Hebrew font, and this would previously be put in all fallback slots for Hebrew regardless of what fallback fonts were dictated by the platform plugin. Since this font does not support the digits, they would show up as boxes. [ChangeLog][Android] Fixed common characters like digits and punctuation showing as boxes when positioned next to non-latin scripts. Task-number: QTBUG-39377 Change-Id: I1555e208a8ddc587c0bbdbfff1600cafdd9442e9 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Respect fixed pitch request when font family is not availableEskil Abrahamsen Blomfeldt2014-05-121-1/+5
| | | | | | | | | | | | | | | | | | | | | In particular, if you have a <pre> tag in your HTML, this will become a QFont with family "Courier New" and fixedPitch==true. On Android, there's no "Courier New" font, and since the style hint is AnyStyle, we will just return Roboto, which is a proportional font. Note that this exactly matches the condition when fetching the fallback families for the font in the loadEngine() function, which was introduced by 06568ff89c48dee8aab278b8b0538c331aa84595 in Qt 4. [ChangeLog][Text] Respect QFont::fixedPitch() for fallbacks when font family cannot be matched. Task-number: QTBUG-36083 Change-Id: I64787c547dc492b9dd3c49f1edf0d9626d198260 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Android: Fix font mergingEskil Abrahamsen Blomfeldt2014-03-251-1/+1
| | | | | | | | | | | | | Our fallback fonts would contain a minimal list of hardcoded fallback fonts, which is neither sufficient for displaying all text, nor portable to different vendors which can supply different font sets. [ChangeLog][Android] Fixed font merging problem which caused e.g. missing glyphs for Arabic numerals. Task-number: QTBUG-37738 Change-Id: Ic971343a1cd5610c79a81f6f6152c637937b5626 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Teach font database to populate families lazilyTor Arne Vestbø2014-03-201-25/+66
| | | | | | | | | | | | | | | | | | | | | | Instead of requiring that QPlatformFontDatabase::populateFontDatabase() populates every single font in the system by calling registerFont(), we now allow the platform database to call registerFontFamily() instead, and then keep track of which families we've yet to fully populate in the font database. Once a property of a family is requested (such as its writing system, style, etc), the family is lazily populated by calling back to the platform database through QPlatformFontDatabase::populateFamily(), which in turn does the final call to registerFont() as before. This cuts application startup on OS X and iOS (of which the font population used to be a major limiting factor) from roughly one second to about 350ms. Task-number: QTBUG-37165 Change-Id: Ic2fc3447beb818ffe23635a5b7816ed7e70c93a7 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>