Skip to content

Commit

Permalink
Merge pull request #51 from pvuorela/fix_indic
Browse files Browse the repository at this point in the history
[qtbase] Fix rectangle shown with hindi text. Fixes JB#32619
  • Loading branch information
Mikko Harju committed Oct 20, 2015
2 parents 838163b + 6ef9198 commit d826d97
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 2 deletions.
6 changes: 6 additions & 0 deletions src/corelib/tools/qunicodetools.cpp
Expand Up @@ -688,6 +688,7 @@ Q_CORE_EXPORT void initScripts(const ushort *string, int length, uchar *scripts)
script = QChar::Script(prop->script);
}

#if 0 // ### Disabled due to regressions. The font selection algorithm is not prepared for this change.
if (Q_LIKELY(script != QChar::Script_Common)) {
// override preceding Common-s
while (sor > 0 && scripts[sor - 1] == QChar::Script_Common)
Expand All @@ -697,13 +698,16 @@ Q_CORE_EXPORT void initScripts(const ushort *string, int length, uchar *scripts)
if (sor > 0)
script = scripts[sor - 1];
}
#endif

while (sor < eor)
scripts[sor++] = script;

script = prop->script;
}
eor = length;

#if 0 // ### Disabled due to regressions. The font selection algorithm is not prepared for this change.
if (Q_LIKELY(script != QChar::Script_Common)) {
// override preceding Common-s
while (sor > 0 && scripts[sor - 1] == QChar::Script_Common)
Expand All @@ -713,6 +717,8 @@ Q_CORE_EXPORT void initScripts(const ushort *string, int length, uchar *scripts)
if (sor > 0)
script = scripts[sor - 1];
}
#endif

while (sor < eor)
scripts[sor++] = script;
}
Expand Down
2 changes: 1 addition & 1 deletion src/gui/text/qtextengine.cpp
Expand Up @@ -124,7 +124,7 @@ class Itemizer {
for (int i = start + 1; i < end; ++i) {
if (m_analysis[i].bidiLevel == m_analysis[start].bidiLevel
&& m_analysis[i].flags == m_analysis[start].flags
&& m_analysis[i].script == m_analysis[start].script
&& (m_analysis[i].script == m_analysis[start].script || m_string[i] == QLatin1Char('.'))
&& m_analysis[i].flags < QScriptAnalysis::SpaceTabOrObject
&& i - start < MaxItemLength)
continue;
Expand Down
Binary file modified tests/auto/gui/text/qglyphrun/test.ttf
Binary file not shown.
20 changes: 19 additions & 1 deletion tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp
Expand Up @@ -77,6 +77,7 @@ private slots:
void setRawData();
void setRawDataAndGetAsVector();
void boundingRect();
void mixedScripts();

private:
int m_testFontId;
Expand Down Expand Up @@ -399,7 +400,7 @@ void tst_QGlyphRun::setRawDataAndGetAsVector()
void tst_QGlyphRun::drawNonExistentGlyphs()
{
QVector<quint32> glyphIndexes;
glyphIndexes.append(3);
glyphIndexes.append(4);

QVector<QPointF> glyphPositions;
glyphPositions.append(QPointF(0, 0));
Expand Down Expand Up @@ -725,6 +726,23 @@ void tst_QGlyphRun::boundingRect()
QCOMPARE(glyphs.boundingRect(), boundingRect);
}

void tst_QGlyphRun::mixedScripts()
{
QString s;
s += QChar(0x31); // The character '1'
s += QChar(0xbc14); // Hangul character

QTextLayout layout;
layout.setFont(m_testFont);
layout.setText(s);
layout.beginLayout();
layout.createLine();
layout.endLayout();

QList<QGlyphRun> glyphRuns = layout.glyphRuns();
QCOMPARE(glyphRuns.size(), 2);
}

#endif // QT_NO_RAWFONT

QTEST_MAIN(tst_QGlyphRun)
Expand Down

0 comments on commit d826d97

Please sign in to comment.