Optimize glyph lookups with QFontEngine::glyphIndex(uint)

Change-Id: I56c7e727f3d9b08195f38939106620c744c6eaf0
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Optimize QFontEngineMulti::stringToCMap() in case of missing glyphs

Use recently introduced glyphIndex() method and only recalc advances
if the glyph is present in the font. This allows to avoid restoring
the old advance when the glyph was not found in the fallback fonts.

Change-Id: I3e0aa549961767e5448816327328101cf6a78873
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Get rid of QFontEngine::name()

It was only used in QFontCache debug output,
and some engines weren't even report a name.

Change-Id: I6cec4b75f105f5a4e1405f50188bebb3a3f04e33
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Make QFontEngine::type() non-virtual

Change-Id: I24ece90d6d8f96dad0c41a474a491b4ea96d97c3
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Prevent repeated and unnecessary font population QCoreTextFontDatabase

The platform font database is populated from QFontDatabase, through the
static initializeDb() function, whenever the font database determines
that the platform database has not been initialized (by checking if the
font database is empty).

There are other clients of QPlatformFontDatabase though, such as QFont,
which uses the platform font database to check for the default family.
The CoreText implementation of determining the default family relies
on data that is computed during font population, and hence does an
internal (self-triggered) populate.

To prevent repeated populates as a result of calling QFont::defaultFamily()
we guard the populate by a similar isEmpty() check as QFontDatabase does,
but to ensure that this check works in the case of an invalidated font
database, we need to propagate the font database invalidation down to
the platform font database.

Change-Id: I8d06c6f6fc5da6353c087335859eaca008c2f6a6
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>