OSDN Git Service

reduce the allocations for glyph arrays
authorIvailo Monev <xakepa10@gmail.com>
Fri, 21 Jan 2022 15:28:31 +0000 (17:28 +0200)
committerIvailo Monev <xakepa10@gmail.com>
Fri, 21 Jan 2022 15:28:31 +0000 (17:28 +0200)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
src/gui/text/qfontengine.cpp
src/gui/text/qfontmetrics.cpp
src/gui/text/qfontsubset.cpp
src/gui/text/qtextengine.cpp

index 46cb4fb..41b7ac7 100644 (file)
@@ -67,8 +67,8 @@ QFixed QFontEngine::underlinePosition() const
 
 QFixed QFontEngine::xHeight() const
 {
-    QGlyphLayoutArray<8> glyphs;
-    int nglyphs = 7;
+    QGlyphLayoutArray<2> glyphs;
+    int nglyphs = 1;
     QChar x((ushort)'x');
     stringToCMap(&x, 1, &glyphs, &nglyphs, QTextEngine::GlyphIndicesOnly);
 
@@ -78,8 +78,8 @@ QFixed QFontEngine::xHeight() const
 
 QFixed QFontEngine::averageCharWidth() const
 {
-    QGlyphLayoutArray<8> glyphs;
-    int nglyphs = 7;
+    QGlyphLayoutArray<2> glyphs;
+    int nglyphs = 1;
     QChar x((ushort)'x');
     stringToCMap(&x, 1, &glyphs, &nglyphs, QTextEngine::GlyphIndicesOnly);
 
index 283ab9c..66574ca 100644 (file)
@@ -445,8 +445,8 @@ int QFontMetrics::width(QChar ch) const
     QFontEngine *engine = d->engineForScript(script);
     Q_ASSERT(engine != 0);
 
-    QGlyphLayoutArray<8> glyphs;
-    int nglyphs = 7;
+    QGlyphLayoutArray<2> glyphs;
+    int nglyphs = 1;
     engine->stringToCMap(&ch, 1, &glyphs, &nglyphs, 0);
     return qRound(glyphs.advances_x[0]);
 }
@@ -1035,8 +1035,8 @@ qreal QFontMetricsF::width(QChar ch) const
     QFontEngine *engine = d->engineForScript(script);
     Q_ASSERT(engine != 0);
 
-    QGlyphLayoutArray<8> glyphs;
-    int nglyphs = 7;
+    QGlyphLayoutArray<2> glyphs;
+    int nglyphs = 1;
     engine->stringToCMap(&ch, 1, &glyphs, &nglyphs, 0);
     return glyphs.advances_x[0].toReal();
 }
index 21c4e59..144e7c5 100644 (file)
@@ -328,10 +328,10 @@ QVector<int> QFontSubset::getReverseMap() const
     reverseMap.resize(0x10000);
     for (uint i = 0; i < 0x10000; ++i)
         reverseMap[i] = 0;
-    QGlyphLayoutArray<10> glyphs;
+    QGlyphLayoutArray<2> glyphs;
     for (uint uc = 0; uc < 0x10000; ++uc) {
         QChar ch(uc);
-        int nglyphs = 10;
+        int nglyphs = 1;
         fontEngine->stringToCMap(&ch, 1, &glyphs, &nglyphs, QTextEngine::GlyphIndicesOnly);
         int idx = glyph_indices.indexOf(glyphs.glyphs[0]);
         if (idx >= 0 && !reverseMap.at(idx))
index 3349539..181881a 100644 (file)
@@ -980,7 +980,7 @@ QString QTextEngine::elidedText(Qt::TextElideMode mode, const QFixed &width, int
 
         QFontEngine *fe = fnt.d->engineForScript(QUnicodeTables::Common);
 
-        QGlyphLayoutArray<1> ellipsisGlyph;
+        QGlyphLayoutArray<2> ellipsisGlyph;
         {
             if (fe->canRender(&ellipsisChar, 1)) {
                 int nGlyphs = 1;