summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/fontdatabases
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-01-16 01:22:45 +0100
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2013-01-16 01:22:45 +0100
commit7075e291998612a3c0a530bb37a515dd07739e28 (patch)
tree4e1992498d82ee3f6f92fd6d42754c92928dd581 /src/platformsupport/fontdatabases
parent1161a8a62907796ea45b1877bec31e66aeef77f6 (diff)
parent3d9a40038f01bc2a3df0027a9be04e7fa3ce3850 (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.mm13
-rw-r--r--src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h15
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;