diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-01-16 01:22:45 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-01-16 01:22:45 +0100 |
commit | 7075e291998612a3c0a530bb37a515dd07739e28 (patch) | |
tree | 4e1992498d82ee3f6f92fd6d42754c92928dd581 /src/platformsupport/fontdatabases | |
parent | 1161a8a62907796ea45b1877bec31e66aeef77f6 (diff) | |
parent | 3d9a40038f01bc2a3df0027a9be04e7fa3ce3850 (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
src/widgets/styles/qstyleanimation.cpp
Change-Id: Iae570895be6544de80f9c1ec309d1a08c59daff8
Diffstat (limited to 'src/platformsupport/fontdatabases')
-rw-r--r-- | src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm | 13 | ||||
-rw-r--r-- | src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h | 15 |
2 files changed, 26 insertions, 2 deletions
diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm index 961b28961c..8603ec337e 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm @@ -149,8 +149,6 @@ void QCoreTextFontEngine::init() Q_ASSERT(ctfont != NULL); Q_ASSERT(cgFont != NULL); - glyphFormat = defaultGlyphFormat; - QCFString family = CTFontCopyFamilyName(ctfont); fontDef.family = family; @@ -159,6 +157,14 @@ void QCoreTextFontEngine::init() synthesisFlags = 0; CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(ctfont); + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 + if (supportsColorGlyphs() && (traits & kCTFontColorGlyphsTrait)) + glyphFormat = QFontEngineGlyphCache::Raster_ARGB; + else +#endif + glyphFormat = defaultGlyphFormat; + if (traits & kCTFontItalicTrait) fontDef.style = QFont::StyleItalic; @@ -422,6 +428,9 @@ static void convertCGPathToQPainterPath(void *info, const CGPathElement *element void QCoreTextFontEngine::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nGlyphs, QPainterPath *path, QTextItem::RenderFlags) { + if (glyphFormat == QFontEngineGlyphCache::Raster_ARGB) + return; // We can't convert color-glyphs to path + CGAffineTransform cgMatrix = CGAffineTransformIdentity; cgMatrix = CGAffineTransformScale(cgMatrix, 1, -1); diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h index b4e94fe889..b8f1f95ac4 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h @@ -109,6 +109,21 @@ public: virtual QFontEngine *cloneWithSize(qreal pixelSize) const; virtual int glyphMargin(QFontEngineGlyphCache::Type type) { Q_UNUSED(type); return 0; } + static bool supportsColorGlyphs() + { +#if defined(Q_OS_IOS) + return true; +#elif MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 + #if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 + return &CTFontDrawGlyphs; + #else + return true; + #endif +#else + return false; +#endif + } + static int antialiasingThreshold; static QFontEngineGlyphCache::Type defaultGlyphFormat; |