summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/text/qfontengine.cpp2
-rw-r--r--src/gui/text/qfontengine_p.h2
-rw-r--r--src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm17
3 files changed, 8 insertions, 13 deletions
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index 9b0b0ec0d5..eb7e416dd1 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -1755,7 +1755,7 @@ QImage QFontEngineBox::alphaMapForGlyph(glyph_t)
// Multi engine
// ------------------------------------------------------------------
-static inline uchar highByte(glyph_t glyph)
+uchar QFontEngineMulti::highByte(glyph_t glyph)
{ return glyph >> 24; }
// strip high byte from glyph
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index a411e9ce4c..708c79c2ae 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -485,6 +485,8 @@ public:
void setFallbackFamiliesList(const QStringList &fallbackFamilies);
+ static uchar highByte(glyph_t glyph); // Used for determining engine
+
inline QFontEngine *engine(int at) const
{ Q_ASSERT(at < m_engines.size()); return m_engines.at(at); }
diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
index 7fb22c0675..0f8727a13c 100644
--- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
+++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
@@ -885,10 +885,8 @@ void QCoreTextFontEngine::recalcAdvances(QGlyphLayout *glyphs, QFontEngine::Shap
QVarLengthArray<CGGlyph> cgGlyphs(numGlyphs);
for (int i = 0; i < numGlyphs; ++i) {
- if (glyphs->glyphs[i] & 0xff000000)
- cgGlyphs[i] = 0;
- else
- cgGlyphs[i] = glyphs->glyphs[i];
+ Q_ASSERT(!QFontEngineMulti::highByte(glyphs->glyphs[i]));
+ cgGlyphs[i] = glyphs->glyphs[i];
}
loadAdvancesForGlyphs(cgGlyphs, glyphs);
@@ -901,14 +899,9 @@ void QCoreTextFontEngine::loadAdvancesForGlyphs(QVarLengthArray<CGGlyph> &cgGlyp
CTFontGetAdvancesForGlyphs(ctfont, kCTFontOrientationHorizontal, cgGlyphs.data(), advances.data(), numGlyphs);
for (int i = 0; i < numGlyphs; ++i) {
- if (glyphs->glyphs[i] & 0xff000000)
- continue;
- glyphs->advances[i] = QFixed::fromReal(advances[i].width);
- }
-
- if (fontDef.styleStrategy & QFont::ForceIntegerMetrics) {
- for (int i = 0; i < numGlyphs; ++i)
- glyphs->advances[i] = glyphs->advances[i].round();
+ QFixed advance = QFixed::fromReal(advances[i].width);
+ glyphs->advances[i] = fontDef.styleStrategy & QFont::ForceIntegerMetrics
+ ? advance.round() : advance;
}
}