diff options
Diffstat (limited to 'tests/auto/gui/text')
12 files changed, 620 insertions, 462 deletions
diff --git a/tests/auto/gui/text/qfontcache/.gitignore b/tests/auto/gui/text/qfontcache/.gitignore new file mode 100644 index 0000000000..e963ab010a --- /dev/null +++ b/tests/auto/gui/text/qfontcache/.gitignore @@ -0,0 +1 @@ +tst_qfontcache diff --git a/tests/auto/gui/text/qfontcache/qfontcache.pro b/tests/auto/gui/text/qfontcache/qfontcache.pro new file mode 100644 index 0000000000..313cd78714 --- /dev/null +++ b/tests/auto/gui/text/qfontcache/qfontcache.pro @@ -0,0 +1,8 @@ +CONFIG += testcase +CONFIG += parallel_test +TARGET = tst_qfontcache +QT += testlib +QT += core-private gui-private +SOURCES += tst_qfontcache.cpp + +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/gui/text/qfontcache/tst_qfontcache.cpp b/tests/auto/gui/text/qfontcache/tst_qfontcache.cpp new file mode 100644 index 0000000000..a85fadfce7 --- /dev/null +++ b/tests/auto/gui/text/qfontcache/tst_qfontcache.cpp @@ -0,0 +1,148 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include <QtTest/QtTest> + + +#include <qfont.h> +#include <private/qfont_p.h> +#include <private/qfontengine_p.h> + +class tst_QFontCache : public QObject +{ +Q_OBJECT + +public: + tst_QFontCache(); + virtual ~tst_QFontCache(); + +private slots: + void clear(); +}; + +QT_BEGIN_NAMESPACE +extern void qt_setQtEnableTestFont(bool value); // qfontdatabase.cpp + +#ifdef QT_BUILD_INTERNAL +// qfontengine.cpp +extern void QFontEngine_startCollectingEngines(); +extern QList<QFontEngine *> QFontEngine_stopCollectingEngines(); +#endif +QT_END_NAMESPACE + +tst_QFontCache::tst_QFontCache() +{ +} + +tst_QFontCache::~tst_QFontCache() +{ +} + +void tst_QFontCache::clear() +{ +#ifdef QT_BUILD_INTERNAL + QFontEngine_startCollectingEngines(); +#else + // must not crash, at very least ;) +#endif + + QFontEngine *fontEngine = 0; + + { + // we're never caching the box (and the "test") font engines + // let's ensure we're not leaking them as well as the cached ones + qt_setQtEnableTestFont(true); + + QFont f; + f.setFamily("__Qt__Box__Engine__"); + f.exactMatch(); // loads engine + } + { + QFontDatabase db; + + QFont f; + f.setStyleHint(QFont::Serif); + const QString familyForHint(f.defaultFamily()); + + // it should at least return a family that is available + QVERIFY(db.hasFamily(familyForHint)); + f.exactMatch(); // loads engine + + fontEngine = QFontPrivate::get(f)->engineForScript(QChar::Script_Common); + QVERIFY(fontEngine); + QVERIFY(QFontCache::instance()->engineCacheCount.value(fontEngine) > 0); // ensure it is cached + + // acquire the engine to use it somewhere else: + // (e.g. like the we do in QFontSubset() or like QRawFont does in fromFont()) + fontEngine->ref.ref(); + + // cache the engine once again; there is a special case when the engine is cached more than once + QFontCache::instance()->insertEngine(QFontCache::Key(QFontDef(), 0, 0), fontEngine); + } + + // use it: + // e.g. fontEngine->stringToCMap(..); + + // and whilst it is alive, don't hesitate to add/remove the app-local fonts: + // (QFontDatabase::{add,remove}ApplicationFont() clears the cache) + QFontCache::instance()->clear(); + + // release the acquired engine: + if (fontEngine) { + if (!fontEngine->ref.deref()) + delete fontEngine; + fontEngine = 0; + } + + // we may even exit the application now: + QFontCache::instance()->cleanup(); + +#ifdef QT_BUILD_INTERNAL + QList<QFontEngine *> leakedEngines = QFontEngine_stopCollectingEngines(); +for (int i = 0; i < leakedEngines.size(); ++i) qWarning() << i << leakedEngines.at(i) << leakedEngines.at(i)->ref.load(); + // and we are not leaking! + QCOMPARE(leakedEngines.size(), 0); +#endif +} + +QTEST_MAIN(tst_QFontCache) +#include "tst_qfontcache.moc" diff --git a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp index 15e8c2ee90..cddec5b6e7 100644 --- a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp +++ b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp @@ -281,7 +281,7 @@ void tst_QFontMetrics::inFontUcs4() } { - QFontEngine *engine = QFontPrivate::get(font)->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = QFontPrivate::get(font)->engineForScript(QChar::Script_Common); QGlyphLayout glyphs; glyphs.numGlyphs = 3; uint buf[3]; diff --git a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp index f62e5f188b..46f97840af 100644 --- a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp +++ b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp @@ -224,7 +224,7 @@ void tst_QStaticText::drawToRect() #endif QVERIFY(imageDrawText.toImage() != m_whiteSquare); - QCOMPARE(imageDrawStaticText, imageDrawText); + QCOMPARE(imageDrawStaticText, imageDrawText); } void tst_QStaticText::prepareToCorrectData() diff --git a/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp b/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp index fa2a2985f0..5484c9ed93 100644 --- a/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp +++ b/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp @@ -527,26 +527,26 @@ void tst_QSyntaxHighlighter::rehighlight() void tst_QSyntaxHighlighter::rehighlightBlock() { TestHighlighter *hl = new TestHighlighter(doc); - + cursor.movePosition(QTextCursor::Start); cursor.beginEditBlock(); cursor.insertText("Hello"); cursor.insertBlock(); cursor.insertText("World"); cursor.endEditBlock(); - + hl->callCount = 0; hl->highlightedText.clear(); QTextBlock block = doc->begin(); hl->rehighlightBlock(block); - + QCOMPARE(hl->highlightedText, QString("Hello")); QCOMPARE(hl->callCount, 1); - + hl->callCount = 0; hl->highlightedText.clear(); hl->rehighlightBlock(block.next()); - + QCOMPARE(hl->highlightedText, QString("World")); QCOMPARE(hl->callCount, 1); } diff --git a/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp b/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp index f7b4456c43..1eb073d3b4 100644 --- a/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp +++ b/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp @@ -72,7 +72,7 @@ private slots: /*! \internal This (used to) trigger a crash in: - + QDataStream &operator>>(QDataStream &stream, QTextFormat &fmt) which is most easily produced through QSettings. diff --git a/tests/auto/gui/text/qtextlayout/qtextlayout.pro b/tests/auto/gui/text/qtextlayout/qtextlayout.pro index 9833a5bd1a..9a2388d878 100644 --- a/tests/auto/gui/text/qtextlayout/qtextlayout.pro +++ b/tests/auto/gui/text/qtextlayout/qtextlayout.pro @@ -3,5 +3,4 @@ TARGET = tst_qtextlayout QT += core-private gui-private testlib HEADERS += SOURCES += tst_qtextlayout.cpp -DEFINES += QT_COMPILES_IN_HARFBUZZ DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/gui/text/qtextscriptengine/generate/generate.pro b/tests/auto/gui/text/qtextscriptengine/generate/generate.pro index bd85c108c2..908c309447 100644 --- a/tests/auto/gui/text/qtextscriptengine/generate/generate.pro +++ b/tests/auto/gui/text/qtextscriptengine/generate/generate.pro @@ -1,5 +1,5 @@ CONFIG -= moc -QT += core-private # for harfbuzz +QT += core-private INCLUDEPATH += . /usr/include/freetype2 SOURCES += main.cpp diff --git a/tests/auto/gui/text/qtextscriptengine/generate/main.cpp b/tests/auto/gui/text/qtextscriptengine/generate/main.cpp index 1dcdc28d81..f3fa42ec2e 100644 --- a/tests/auto/gui/text/qtextscriptengine/generate/main.cpp +++ b/tests/auto/gui/text/qtextscriptengine/generate/main.cpp @@ -81,7 +81,7 @@ void MyEdit::setText(const QString &str) result = "Using font '" + e->fontEngine(e->layoutData->items[0])->fontDef.family + "'\n\n"; result += "{ { "; - for (int i = 0; i < str.length(); ++i) + for (int i = 0; i < str.length(); ++i) result += "0x" + QString::number(str.at(i).unicode(), 16) + ", "; result += "0x0 },\n { "; for (int i = 0; i < e->layoutData->items[0].num_glyphs; ++i) diff --git a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp index a6da20cc2b..eebac28323 100644 --- a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp +++ b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp @@ -48,7 +48,7 @@ class tst_QTextScriptEngine : public QObject { -Q_OBJECT + Q_OBJECT public: tst_QTextScriptEngine(); @@ -210,93 +210,93 @@ void tst_QTextScriptEngine::devanagari_data() { if (QFontDatabase().families(QFontDatabase::Devanagari).contains("Raghindi")) { QFont f("Raghindi"); - const ShapeTable shape_table [] = { - // Ka - { { 0x0915, 0x0 }, - { 0x0080, 0x0 } }, - // Ka Halant - { { 0x0915, 0x094d, 0x0 }, - { 0x0080, 0x0051, 0x0 } }, - // Ka Halant Ka - { { 0x0915, 0x094d, 0x0915, 0x0 }, - { 0x00c8, 0x0080, 0x0 } }, - // Ka MatraI - { { 0x0915, 0x093f, 0x0 }, - { 0x01d1, 0x0080, 0x0 } }, - // Ra Halant Ka - { { 0x0930, 0x094d, 0x0915, 0x0 }, - { 0x0080, 0x005b, 0x0 } }, - // Ra Halant Ka MatraI - { { 0x0930, 0x094d, 0x0915, 0x093f, 0x0 }, - { 0x01d1, 0x0080, 0x005b, 0x0 } }, - // MatraI - { { 0x093f, 0x0 }, - { 0x01d4, 0x029c, 0x0 } }, - // Ka Nukta - { { 0x0915, 0x093c, 0x0 }, - { 0x00a4, 0x0 } }, - // Ka Halant Ra - { { 0x0915, 0x094d, 0x0930, 0x0 }, - { 0x0110, 0x0 } }, - // Ka Halant Ra Halant Ka - { { 0x0915, 0x094d, 0x0930, 0x094d, 0x0915, 0x0 }, - { 0x0158, 0x0080, 0x0 } }, - { { 0x0930, 0x094d, 0x200d, 0x0 }, - { 0x00e2, 0x0 } }, - { { 0x0915, 0x094d, 0x0930, 0x094d, 0x200d, 0x0 }, - { 0x0158, 0x0 } }, - - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find Raghindi"); + const ShapeTable shape_table [] = { + // Ka + { { 0x0915, 0x0 }, + { 0x0080, 0x0 } }, + // Ka Halant + { { 0x0915, 0x094d, 0x0 }, + { 0x0080, 0x0051, 0x0 } }, + // Ka Halant Ka + { { 0x0915, 0x094d, 0x0915, 0x0 }, + { 0x00c8, 0x0080, 0x0 } }, + // Ka MatraI + { { 0x0915, 0x093f, 0x0 }, + { 0x01d1, 0x0080, 0x0 } }, + // Ra Halant Ka + { { 0x0930, 0x094d, 0x0915, 0x0 }, + { 0x0080, 0x005b, 0x0 } }, + // Ra Halant Ka MatraI + { { 0x0930, 0x094d, 0x0915, 0x093f, 0x0 }, + { 0x01d1, 0x0080, 0x005b, 0x0 } }, + // MatraI + { { 0x093f, 0x0 }, + { 0x01d4, 0x029c, 0x0 } }, + // Ka Nukta + { { 0x0915, 0x093c, 0x0 }, + { 0x00a4, 0x0 } }, + // Ka Halant Ra + { { 0x0915, 0x094d, 0x0930, 0x0 }, + { 0x0110, 0x0 } }, + // Ka Halant Ra Halant Ka + { { 0x0915, 0x094d, 0x0930, 0x094d, 0x0915, 0x0 }, + { 0x0158, 0x0080, 0x0 } }, + { { 0x0930, 0x094d, 0x200d, 0x0 }, + { 0x00e2, 0x0 } }, + { { 0x0915, 0x094d, 0x0930, 0x094d, 0x200d, 0x0 }, + { 0x0158, 0x0 } }, + + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find Raghindi"); } { if (QFontDatabase().families(QFontDatabase::Devanagari).contains("Mangal")) { QFont f("Mangal"); - const ShapeTable shape_table [] = { - // Ka - { { 0x0915, 0x0 }, - { 0x0080, 0x0 } }, - // Ka Halant - { { 0x0915, 0x094d, 0x0 }, - { 0x0080, 0x0051, 0x0 } }, - // Ka Halant Ka - { { 0x0915, 0x094d, 0x0915, 0x0 }, - { 0x00c8, 0x0080, 0x0 } }, - // Ka MatraI - { { 0x0915, 0x093f, 0x0 }, - { 0x01d1, 0x0080, 0x0 } }, - // Ra Halant Ka - { { 0x0930, 0x094d, 0x0915, 0x0 }, - { 0x0080, 0x005b, 0x0 } }, - // Ra Halant Ka MatraI - { { 0x0930, 0x094d, 0x0915, 0x093f, 0x0 }, - { 0x01d1, 0x0080, 0x005b, 0x0 } }, - // MatraI - { { 0x093f, 0x0 }, - { 0x01d4, 0x029c, 0x0 } }, - // Ka Nukta - { { 0x0915, 0x093c, 0x0 }, - { 0x00a4, 0x0 } }, - // Ka Halant Ra - { { 0x0915, 0x094d, 0x0930, 0x0 }, - { 0x0110, 0x0 } }, - // Ka Halant Ra Halant Ka - { { 0x0915, 0x094d, 0x0930, 0x094d, 0x0915, 0x0 }, - { 0x0158, 0x0080, 0x0 } }, + const ShapeTable shape_table [] = { + // Ka + { { 0x0915, 0x0 }, + { 0x0080, 0x0 } }, + // Ka Halant + { { 0x0915, 0x094d, 0x0 }, + { 0x0080, 0x0051, 0x0 } }, + // Ka Halant Ka + { { 0x0915, 0x094d, 0x0915, 0x0 }, + { 0x00c8, 0x0080, 0x0 } }, + // Ka MatraI + { { 0x0915, 0x093f, 0x0 }, + { 0x01d1, 0x0080, 0x0 } }, + // Ra Halant Ka + { { 0x0930, 0x094d, 0x0915, 0x0 }, + { 0x0080, 0x005b, 0x0 } }, + // Ra Halant Ka MatraI + { { 0x0930, 0x094d, 0x0915, 0x093f, 0x0 }, + { 0x01d1, 0x0080, 0x005b, 0x0 } }, + // MatraI + { { 0x093f, 0x0 }, + { 0x01d4, 0x029c, 0x0 } }, + // Ka Nukta + { { 0x0915, 0x093c, 0x0 }, + { 0x00a4, 0x0 } }, + // Ka Halant Ra + { { 0x0915, 0x094d, 0x0930, 0x0 }, + { 0x0110, 0x0 } }, + // Ka Halant Ra Halant Ka + { { 0x0915, 0x094d, 0x0930, 0x094d, 0x0915, 0x0 }, + { 0x0158, 0x0080, 0x0 } }, { { 0x92b, 0x94d, 0x930, 0x0 }, { 0x125, 0x0 } }, { { 0x92b, 0x93c, 0x94d, 0x930, 0x0 }, - { 0x149, 0x0 } }, - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find mangal"); + { 0x149, 0x0 } }, + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find mangal"); } } @@ -317,224 +317,224 @@ void tst_QTextScriptEngine::bengali_data() { if (QFontDatabase().families(QFontDatabase::Bengali).contains("Akaash")) { QFont f("Akaash"); - const ShapeTable shape_table [] = { - // Ka - { { 0x0995, 0x0 }, - { 0x0151, 0x0 } }, - // Ka Halant - { { 0x0995, 0x09cd, 0x0 }, - { 0x0151, 0x017d, 0x0 } }, - // Ka Halant Ka - { { 0x0995, 0x09cd, 0x0995, 0x0 }, - { 0x019b, 0x0 } }, - // Ka MatraI - { { 0x0995, 0x09bf, 0x0 }, - { 0x0173, 0x0151, 0x0 } }, - // Ra Halant Ka - { { 0x09b0, 0x09cd, 0x0995, 0x0 }, - { 0x0151, 0x0276, 0x0 } }, - // Ra Halant Ka MatraI - { { 0x09b0, 0x09cd, 0x0995, 0x09bf, 0x0 }, - { 0x0173, 0x0151, 0x0276, 0x0 } }, - // Ka Nukta - { { 0x0995, 0x09bc, 0x0 }, - { 0x0151, 0x0171, 0x0 } }, - // Ka Halant Ra - { { 0x0995, 0x09cd, 0x09b0, 0x0 }, - { 0x01f4, 0x0 } }, - // Ka Halant Ra Halant Ka - { { 0x0995, 0x09cd, 0x09b0, 0x09cd, 0x0995, 0x0 }, - { 0x025c, 0x0276, 0x0151, 0x0 } }, - // Ya + Halant - { { 0x09af, 0x09cd, 0x0 }, - { 0x016a, 0x017d, 0x0 } }, - // Da Halant Ya -> Da Ya-Phala - { { 0x09a6, 0x09cd, 0x09af, 0x0 }, - { 0x01e5, 0x0 } }, - // A Halant Ya -> A Ya-phala - { { 0x0985, 0x09cd, 0x09af, 0x0 }, - { 0x0145, 0x01cf, 0x0 } }, - // Na Halant Ka - { { 0x09a8, 0x09cd, 0x0995, 0x0 }, - { 0x026f, 0x0151, 0x0 } }, - // Na Halant ZWNJ Ka - { { 0x09a8, 0x09cd, 0x200c, 0x0995, 0x0 }, - { 0x0164, 0x017d, 0x0151, 0x0 } }, - // Na Halant ZWJ Ka - { { 0x09a8, 0x09cd, 0x200d, 0x0995, 0x0 }, - { 0x026f, 0x0151, 0x0 } }, - // Ka Halant ZWNJ Ka - { { 0x0995, 0x09cd, 0x200c, 0x0995, 0x0 }, - { 0x0151, 0x017d, 0x0151, 0x0 } }, - // Ka Halant ZWJ Ka - { { 0x0995, 0x09cd, 0x200d, 0x0995, 0x0 }, - { 0x025c, 0x0151, 0x0 } }, - // Na Halant Ra - { { 0x09a8, 0x09cd, 0x09b0, 0x0 }, - { 0x0207, 0x0 } }, - // Na Halant ZWNJ Ra - { { 0x09a8, 0x09cd, 0x200c, 0x09b0, 0x0 }, - { 0x0164, 0x017d, 0x016b, 0x0 } }, - // Na Halant ZWJ Ra - { { 0x09a8, 0x09cd, 0x200d, 0x09b0, 0x0 }, - { 0x026f, 0x016b, 0x0 } }, - // Na Halant Ba - { { 0x09a8, 0x09cd, 0x09ac, 0x0 }, - { 0x022f, 0x0 } }, - // Na Halant ZWNJ Ba - { { 0x09a8, 0x09cd, 0x200c, 0x09ac, 0x0 }, - { 0x0164, 0x017d, 0x0167, 0x0 } }, - // Na Halant ZWJ Ba - { { 0x09a8, 0x09cd, 0x200d, 0x09ac, 0x0 }, - { 0x026f, 0x0167, 0x0 } }, - // Na Halant Dha - { { 0x09a8, 0x09cd, 0x09a7, 0x0 }, - { 0x01d3, 0x0 } }, - // Na Halant ZWNJ Dha - { { 0x09a8, 0x09cd, 0x200c, 0x09a7, 0x0 }, - { 0x0164, 0x017d, 0x0163, 0x0 } }, - // Na Halant ZWJ Dha - { { 0x09a8, 0x09cd, 0x200d, 0x09a7, 0x0 }, - { 0x026f, 0x0163, 0x0 } }, - // Ra Halant Ka MatraAU - { { 0x09b0, 0x09cd, 0x0995, 0x09cc, 0x0 }, - { 0x0179, 0x0151, 0x0276, 0x017e, 0x0 } }, - // Ra Halant Ba Halant Ba - { { 0x09b0, 0x09cd, 0x09ac, 0x09cd, 0x09ac, 0x0 }, - { 0x0232, 0x0276, 0x0 } }, + const ShapeTable shape_table [] = { + // Ka + { { 0x0995, 0x0 }, + { 0x0151, 0x0 } }, + // Ka Halant + { { 0x0995, 0x09cd, 0x0 }, + { 0x0151, 0x017d, 0x0 } }, + // Ka Halant Ka + { { 0x0995, 0x09cd, 0x0995, 0x0 }, + { 0x019b, 0x0 } }, + // Ka MatraI + { { 0x0995, 0x09bf, 0x0 }, + { 0x0173, 0x0151, 0x0 } }, + // Ra Halant Ka + { { 0x09b0, 0x09cd, 0x0995, 0x0 }, + { 0x0151, 0x0276, 0x0 } }, + // Ra Halant Ka MatraI + { { 0x09b0, 0x09cd, 0x0995, 0x09bf, 0x0 }, + { 0x0173, 0x0151, 0x0276, 0x0 } }, + // Ka Nukta + { { 0x0995, 0x09bc, 0x0 }, + { 0x0151, 0x0171, 0x0 } }, + // Ka Halant Ra + { { 0x0995, 0x09cd, 0x09b0, 0x0 }, + { 0x01f4, 0x0 } }, + // Ka Halant Ra Halant Ka + { { 0x0995, 0x09cd, 0x09b0, 0x09cd, 0x0995, 0x0 }, + { 0x025c, 0x0276, 0x0151, 0x0 } }, + // Ya + Halant + { { 0x09af, 0x09cd, 0x0 }, + { 0x016a, 0x017d, 0x0 } }, + // Da Halant Ya -> Da Ya-Phala + { { 0x09a6, 0x09cd, 0x09af, 0x0 }, + { 0x01e5, 0x0 } }, + // A Halant Ya -> A Ya-phala + { { 0x0985, 0x09cd, 0x09af, 0x0 }, + { 0x0145, 0x01cf, 0x0 } }, + // Na Halant Ka + { { 0x09a8, 0x09cd, 0x0995, 0x0 }, + { 0x026f, 0x0151, 0x0 } }, + // Na Halant ZWNJ Ka + { { 0x09a8, 0x09cd, 0x200c, 0x0995, 0x0 }, + { 0x0164, 0x017d, 0x0151, 0x0 } }, + // Na Halant ZWJ Ka + { { 0x09a8, 0x09cd, 0x200d, 0x0995, 0x0 }, + { 0x026f, 0x0151, 0x0 } }, + // Ka Halant ZWNJ Ka + { { 0x0995, 0x09cd, 0x200c, 0x0995, 0x0 }, + { 0x0151, 0x017d, 0x0151, 0x0 } }, + // Ka Halant ZWJ Ka + { { 0x0995, 0x09cd, 0x200d, 0x0995, 0x0 }, + { 0x025c, 0x0151, 0x0 } }, + // Na Halant Ra + { { 0x09a8, 0x09cd, 0x09b0, 0x0 }, + { 0x0207, 0x0 } }, + // Na Halant ZWNJ Ra + { { 0x09a8, 0x09cd, 0x200c, 0x09b0, 0x0 }, + { 0x0164, 0x017d, 0x016b, 0x0 } }, + // Na Halant ZWJ Ra + { { 0x09a8, 0x09cd, 0x200d, 0x09b0, 0x0 }, + { 0x026f, 0x016b, 0x0 } }, + // Na Halant Ba + { { 0x09a8, 0x09cd, 0x09ac, 0x0 }, + { 0x022f, 0x0 } }, + // Na Halant ZWNJ Ba + { { 0x09a8, 0x09cd, 0x200c, 0x09ac, 0x0 }, + { 0x0164, 0x017d, 0x0167, 0x0 } }, + // Na Halant ZWJ Ba + { { 0x09a8, 0x09cd, 0x200d, 0x09ac, 0x0 }, + { 0x026f, 0x0167, 0x0 } }, + // Na Halant Dha + { { 0x09a8, 0x09cd, 0x09a7, 0x0 }, + { 0x01d3, 0x0 } }, + // Na Halant ZWNJ Dha + { { 0x09a8, 0x09cd, 0x200c, 0x09a7, 0x0 }, + { 0x0164, 0x017d, 0x0163, 0x0 } }, + // Na Halant ZWJ Dha + { { 0x09a8, 0x09cd, 0x200d, 0x09a7, 0x0 }, + { 0x026f, 0x0163, 0x0 } }, + // Ra Halant Ka MatraAU + { { 0x09b0, 0x09cd, 0x0995, 0x09cc, 0x0 }, + { 0x0179, 0x0151, 0x0276, 0x017e, 0x0 } }, + // Ra Halant Ba Halant Ba + { { 0x09b0, 0x09cd, 0x09ac, 0x09cd, 0x09ac, 0x0 }, + { 0x0232, 0x0276, 0x0 } }, { { 0x9b0, 0x9cd, 0x995, 0x9be, 0x982, 0x0 }, { 0x151, 0x276, 0x172, 0x143, 0x0 } }, { { 0x9b0, 0x9cd, 0x995, 0x9be, 0x983, 0x0 }, - { 0x151, 0x276, 0x172, 0x144, 0x0 } }, + { 0x151, 0x276, 0x172, 0x144, 0x0 } }, // test decomposed two parts matras { { 0x995, 0x9c7, 0x9be, 0x0 }, { 0x179, 0x151, 0x172, 0x0 } }, { { 0x995, 0x9c7, 0x9d7, 0x0 }, { 0x179, 0x151, 0x17e, 0x0 } }, - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find Akaash"); + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find Akaash"); } { if (QFontDatabase().families(QFontDatabase::Bengali).contains("Mukti Narrow")) { QFont f("Mukti Narrow"); - const ShapeTable shape_table [] = { - // Ka - { { 0x0995, 0x0 }, - { 0x0073, 0x0 } }, - // Ka Halant - { { 0x0995, 0x09cd, 0x0 }, - { 0x00b9, 0x0 } }, - // Ka Halant Ka - { { 0x0995, 0x09cd, 0x0995, 0x0 }, - { 0x0109, 0x0 } }, - // Ka MatraI - { { 0x0995, 0x09bf, 0x0 }, - { 0x0095, 0x0073, 0x0 } }, - // Ra Halant Ka - { { 0x09b0, 0x09cd, 0x0995, 0x0 }, - { 0x0073, 0x00e1, 0x0 } }, - // Ra Halant Ka MatraI - { { 0x09b0, 0x09cd, 0x0995, 0x09bf, 0x0 }, - { 0x0095, 0x0073, 0x00e1, 0x0 } }, - // MatraI - { { 0x09bf, 0x0 }, - { 0x0095, 0x01c8, 0x0 } }, - // Ka Nukta - { { 0x0995, 0x09bc, 0x0 }, - { 0x0073, 0x0093, 0x0 } }, - // Ka Halant Ra - { { 0x0995, 0x09cd, 0x09b0, 0x0 }, - { 0x00e5, 0x0 } }, - // Ka Halant Ra Halant Ka + const ShapeTable shape_table [] = { + // Ka + { { 0x0995, 0x0 }, + { 0x0073, 0x0 } }, + // Ka Halant + { { 0x0995, 0x09cd, 0x0 }, + { 0x00b9, 0x0 } }, + // Ka Halant Ka + { { 0x0995, 0x09cd, 0x0995, 0x0 }, + { 0x0109, 0x0 } }, + // Ka MatraI + { { 0x0995, 0x09bf, 0x0 }, + { 0x0095, 0x0073, 0x0 } }, + // Ra Halant Ka + { { 0x09b0, 0x09cd, 0x0995, 0x0 }, + { 0x0073, 0x00e1, 0x0 } }, + // Ra Halant Ka MatraI + { { 0x09b0, 0x09cd, 0x0995, 0x09bf, 0x0 }, + { 0x0095, 0x0073, 0x00e1, 0x0 } }, + // MatraI + { { 0x09bf, 0x0 }, + { 0x0095, 0x01c8, 0x0 } }, + // Ka Nukta + { { 0x0995, 0x09bc, 0x0 }, + { 0x0073, 0x0093, 0x0 } }, + // Ka Halant Ra + { { 0x0995, 0x09cd, 0x09b0, 0x0 }, + { 0x00e5, 0x0 } }, + // Ka Halant Ra Halant Ka { { 0x995, 0x9cd, 0x9b0, 0x9cd, 0x995, 0x0 }, - { 0x234, 0x24e, 0x73, 0x0 } }, - // Ya + Halant - { { 0x09af, 0x09cd, 0x0 }, - { 0x00d2, 0x0 } }, - // Da Halant Ya -> Da Ya-Phala - { { 0x09a6, 0x09cd, 0x09af, 0x0 }, - { 0x0084, 0x00e2, 0x0 } }, - // A Halant Ya -> A Ya-phala - { { 0x0985, 0x09cd, 0x09af, 0x0 }, - { 0x0067, 0x00e2, 0x0 } }, - // Na Halant Ka - { { 0x09a8, 0x09cd, 0x0995, 0x0 }, - { 0x0188, 0x0 } }, - // Na Halant ZWNJ Ka + { 0x234, 0x24e, 0x73, 0x0 } }, + // Ya + Halant + { { 0x09af, 0x09cd, 0x0 }, + { 0x00d2, 0x0 } }, + // Da Halant Ya -> Da Ya-Phala + { { 0x09a6, 0x09cd, 0x09af, 0x0 }, + { 0x0084, 0x00e2, 0x0 } }, + // A Halant Ya -> A Ya-phala + { { 0x0985, 0x09cd, 0x09af, 0x0 }, + { 0x0067, 0x00e2, 0x0 } }, + // Na Halant Ka + { { 0x09a8, 0x09cd, 0x0995, 0x0 }, + { 0x0188, 0x0 } }, + // Na Halant ZWNJ Ka { { 0x9a8, 0x9cd, 0x200c, 0x995, 0x0 }, - { 0xcc, 0x73, 0x0 } }, - // Na Halant ZWJ Ka + { 0xcc, 0x73, 0x0 } }, + // Na Halant ZWJ Ka { { 0x9a8, 0x9cd, 0x200d, 0x995, 0x0 }, - { 0x247, 0x73, 0x0 } }, - // Ka Halant ZWNJ Ka + { 0x247, 0x73, 0x0 } }, + // Ka Halant ZWNJ Ka { { 0x9a8, 0x9cd, 0x200d, 0x995, 0x0 }, - { 0x247, 0x73, 0x0 } }, - // Ka Halant ZWJ Ka + { 0x247, 0x73, 0x0 } }, + // Ka Halant ZWJ Ka { { 0x9a8, 0x9cd, 0x200d, 0x995, 0x0 }, - { 0x247, 0x73, 0x0 } }, - // Na Halant Ra - { { 0x09a8, 0x09cd, 0x09b0, 0x0 }, - { 0x00f8, 0x0 } }, - // Na Halant ZWNJ Ra - { { 0x09a8, 0x09cd, 0x200c, 0x09b0, 0x0 }, - { 0xcc, 0x8d, 0x0 } }, - // Na Halant ZWJ Ra + { 0x247, 0x73, 0x0 } }, + // Na Halant Ra + { { 0x09a8, 0x09cd, 0x09b0, 0x0 }, + { 0x00f8, 0x0 } }, + // Na Halant ZWNJ Ra + { { 0x09a8, 0x09cd, 0x200c, 0x09b0, 0x0 }, + { 0xcc, 0x8d, 0x0 } }, + // Na Halant ZWJ Ra { { 0x9a8, 0x9cd, 0x200d, 0x9b0, 0x0 }, - { 0x247, 0x8d, 0x0 } }, - // Na Halant Ba - { { 0x09a8, 0x09cd, 0x09ac, 0x0 }, - { 0x0139, 0x0 } }, - // Na Halant ZWNJ Ba + { 0x247, 0x8d, 0x0 } }, + // Na Halant Ba + { { 0x09a8, 0x09cd, 0x09ac, 0x0 }, + { 0x0139, 0x0 } }, + // Na Halant ZWNJ Ba { { 0x9a8, 0x9cd, 0x200c, 0x9ac, 0x0 }, - { 0xcc, 0x89, 0x0 } }, - // Na Halant ZWJ Ba + { 0xcc, 0x89, 0x0 } }, + // Na Halant ZWJ Ba { { 0x9a8, 0x9cd, 0x200d, 0x9ac, 0x0 }, - { 0x247, 0x89, 0x0 } }, - // Na Halant Dha - { { 0x09a8, 0x09cd, 0x09a7, 0x0 }, - { 0x0145, 0x0 } }, - // Na Halant ZWNJ Dha - { { 0x09a8, 0x09cd, 0x200c, 0x09a7, 0x0 }, - { 0xcc, 0x85, 0x0 } }, - // Na Halant ZWJ Dha - { { 0x09a8, 0x09cd, 0x200d, 0x09a7, 0x0 }, - { 0x247, 0x85, 0x0 } }, - // Ra Halant Ka MatraAU + { 0x247, 0x89, 0x0 } }, + // Na Halant Dha + { { 0x09a8, 0x09cd, 0x09a7, 0x0 }, + { 0x0145, 0x0 } }, + // Na Halant ZWNJ Dha + { { 0x09a8, 0x09cd, 0x200c, 0x09a7, 0x0 }, + { 0xcc, 0x85, 0x0 } }, + // Na Halant ZWJ Dha + { { 0x09a8, 0x09cd, 0x200d, 0x09a7, 0x0 }, + { 0x247, 0x85, 0x0 } }, + // Ra Halant Ka MatraAU { { 0x9b0, 0x9cd, 0x995, 0x9cc, 0x0 }, - { 0x232, 0x73, 0xe1, 0xa0, 0x0 } }, - // Ra Halant Ba Halant Ba - { { 0x09b0, 0x09cd, 0x09ac, 0x09cd, 0x09ac, 0x0 }, - { 0x013b, 0x00e1, 0x0 } }, - - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find Mukti"); + { 0x232, 0x73, 0xe1, 0xa0, 0x0 } }, + // Ra Halant Ba Halant Ba + { { 0x09b0, 0x09cd, 0x09ac, 0x09cd, 0x09ac, 0x0 }, + { 0x013b, 0x00e1, 0x0 } }, + + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find Mukti"); } { if (QFontDatabase().families(QFontDatabase::Bengali).contains("Likhan")) { QFont f("Likhan"); - const ShapeTable shape_table [] = { + const ShapeTable shape_table [] = { { { 0x9a8, 0x9cd, 0x9af, 0x0 }, { 0x1ca, 0x0 } }, - { { 0x09b8, 0x09cd, 0x09af, 0x0 }, + { { 0x09b8, 0x09cd, 0x09af, 0x0 }, { 0x020e, 0x0 } }, - { { 0x09b6, 0x09cd, 0x09af, 0x0 }, + { { 0x09b6, 0x09cd, 0x09af, 0x0 }, { 0x01f4, 0x0 } }, - { { 0x09b7, 0x09cd, 0x09af, 0x0 }, + { { 0x09b7, 0x09cd, 0x09af, 0x0 }, { 0x01fe, 0x0 } }, - { { 0x09b0, 0x09cd, 0x09a8, 0x09cd, 0x200d, 0x0 }, + { { 0x09b0, 0x09cd, 0x09a8, 0x09cd, 0x200d, 0x0 }, { 0x10b, 0x167, 0x0 } }, - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find Likhan"); + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find Likhan"); } } @@ -555,14 +555,14 @@ void tst_QTextScriptEngine::gurmukhi_data() { if (QFontDatabase().families(QFontDatabase::Gurmukhi).contains("Lohit Punjabi")) { QFont f("Lohit Punjabi"); - const ShapeTable shape_table [] = { - { { 0xA15, 0xA4D, 0xa39, 0x0 }, - { 0x3b, 0x8b, 0x0 } }, - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find Lohit Punjabi"); + const ShapeTable shape_table [] = { + { { 0xA15, 0xA4D, 0xa39, 0x0 }, + { 0x3b, 0x8b, 0x0 } }, + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find Lohit Punjabi"); } } @@ -583,27 +583,27 @@ void tst_QTextScriptEngine::oriya_data() { if (QFontDatabase().families(QFontDatabase::Oriya).contains("utkal")) { QFont f("utkal"); - const ShapeTable shape_table [] = { + const ShapeTable shape_table [] = { { { 0xb15, 0xb4d, 0xb24, 0xb4d, 0xb30, 0x0 }, - { 0x150, 0x125, 0x0 } }, + { 0x150, 0x125, 0x0 } }, { { 0xb24, 0xb4d, 0xb24, 0xb4d, 0xb2c, 0x0 }, - { 0x151, 0x120, 0x0 } }, + { 0x151, 0x120, 0x0 } }, { { 0xb28, 0xb4d, 0xb24, 0xb4d, 0xb2c, 0x0 }, - { 0x152, 0x120, 0x0 } }, + { 0x152, 0x120, 0x0 } }, { { 0xb28, 0xb4d, 0xb24, 0xb4d, 0xb2c, 0x0 }, - { 0x152, 0x120, 0x0 } }, + { 0x152, 0x120, 0x0 } }, { { 0xb28, 0xb4d, 0xb24, 0xb4d, 0xb30, 0x0 }, - { 0x176, 0x0 } }, + { 0x176, 0x0 } }, { { 0xb38, 0xb4d, 0xb24, 0xb4d, 0xb30, 0x0 }, - { 0x177, 0x0 } }, + { 0x177, 0x0 } }, { { 0xb28, 0xb4d, 0xb24, 0xb4d, 0xb30, 0xb4d, 0xb2f, 0x0 }, - { 0x176, 0x124, 0x0 } }, + { 0x176, 0x124, 0x0 } }, { {0}, {0} } }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find utkal"); + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find utkal"); } } @@ -624,51 +624,51 @@ void tst_QTextScriptEngine::tamil_data() { if (QFontDatabase().families(QFontDatabase::Tamil).contains("AkrutiTml1")) { QFont f("AkrutiTml1"); - const ShapeTable shape_table [] = { - { { 0x0b95, 0x0bc2, 0x0 }, - { 0x004e, 0x0 } }, - { { 0x0bae, 0x0bc2, 0x0 }, - { 0x009e, 0x0 } }, - { { 0x0b9a, 0x0bc2, 0x0 }, - { 0x0058, 0x0 } }, - { { 0x0b99, 0x0bc2, 0x0 }, - { 0x0053, 0x0 } }, - { { 0x0bb0, 0x0bc2, 0x0 }, - { 0x00a8, 0x0 } }, - { { 0x0ba4, 0x0bc2, 0x0 }, - { 0x008e, 0x0 } }, - { { 0x0b9f, 0x0bc2, 0x0 }, - { 0x0062, 0x0 } }, - { { 0x0b95, 0x0bc6, 0x0 }, - { 0x000a, 0x0031, 0x0 } }, - { { 0x0b95, 0x0bca, 0x0 }, - { 0x000a, 0x0031, 0x0007, 0x0 } }, - { { 0x0b95, 0x0bc6, 0x0bbe, 0x0 }, - { 0x000a, 0x0031, 0x007, 0x0 } }, - { { 0x0b95, 0x0bcd, 0x0bb7, 0x0 }, - { 0x0049, 0x0 } }, - { { 0x0b95, 0x0bcd, 0x0bb7, 0x0bca, 0x0 }, - { 0x000a, 0x0049, 0x007, 0x0 } }, - { { 0x0b95, 0x0bcd, 0x0bb7, 0x0bc6, 0x0bbe, 0x0 }, - { 0x000a, 0x0049, 0x007, 0x0 } }, - { { 0x0b9f, 0x0bbf, 0x0 }, - { 0x005f, 0x0 } }, - { { 0x0b9f, 0x0bc0, 0x0 }, - { 0x0060, 0x0 } }, - { { 0x0bb2, 0x0bc0, 0x0 }, - { 0x00ab, 0x0 } }, - { { 0x0bb2, 0x0bbf, 0x0 }, - { 0x00aa, 0x0 } }, - { { 0x0bb0, 0x0bcd, 0x0 }, - { 0x00a4, 0x0 } }, - { { 0x0bb0, 0x0bbf, 0x0 }, - { 0x00a5, 0x0 } }, - { { 0x0bb0, 0x0bc0, 0x0 }, - { 0x00a6, 0x0 } }, - { { 0x0b83, 0x0 }, - { 0x0025, 0x0 } }, - { { 0x0b83, 0x0b95, 0x0 }, - { 0x0025, 0x0031, 0x0 } }, + const ShapeTable shape_table [] = { + { { 0x0b95, 0x0bc2, 0x0 }, + { 0x004e, 0x0 } }, + { { 0x0bae, 0x0bc2, 0x0 }, + { 0x009e, 0x0 } }, + { { 0x0b9a, 0x0bc2, 0x0 }, + { 0x0058, 0x0 } }, + { { 0x0b99, 0x0bc2, 0x0 }, + { 0x0053, 0x0 } }, + { { 0x0bb0, 0x0bc2, 0x0 }, + { 0x00a8, 0x0 } }, + { { 0x0ba4, 0x0bc2, 0x0 }, + { 0x008e, 0x0 } }, + { { 0x0b9f, 0x0bc2, 0x0 }, + { 0x0062, 0x0 } }, + { { 0x0b95, 0x0bc6, 0x0 }, + { 0x000a, 0x0031, 0x0 } }, + { { 0x0b95, 0x0bca, 0x0 }, + { 0x000a, 0x0031, 0x0007, 0x0 } }, + { { 0x0b95, 0x0bc6, 0x0bbe, 0x0 }, + { 0x000a, 0x0031, 0x007, 0x0 } }, + { { 0x0b95, 0x0bcd, 0x0bb7, 0x0 }, + { 0x0049, 0x0 } }, + { { 0x0b95, 0x0bcd, 0x0bb7, 0x0bca, 0x0 }, + { 0x000a, 0x0049, 0x007, 0x0 } }, + { { 0x0b95, 0x0bcd, 0x0bb7, 0x0bc6, 0x0bbe, 0x0 }, + { 0x000a, 0x0049, 0x007, 0x0 } }, + { { 0x0b9f, 0x0bbf, 0x0 }, + { 0x005f, 0x0 } }, + { { 0x0b9f, 0x0bc0, 0x0 }, + { 0x0060, 0x0 } }, + { { 0x0bb2, 0x0bc0, 0x0 }, + { 0x00ab, 0x0 } }, + { { 0x0bb2, 0x0bbf, 0x0 }, + { 0x00aa, 0x0 } }, + { { 0x0bb0, 0x0bcd, 0x0 }, + { 0x00a4, 0x0 } }, + { { 0x0bb0, 0x0bbf, 0x0 }, + { 0x00a5, 0x0 } }, + { { 0x0bb0, 0x0bc0, 0x0 }, + { 0x00a6, 0x0 } }, + { { 0x0b83, 0x0 }, + { 0x0025, 0x0 } }, + { { 0x0b83, 0x0b95, 0x0 }, + { 0x0025, 0x0031, 0x0 } }, { { 0xb95, 0xbc6, 0xbbe, 0x0 }, { 0xa, 0x31, 0x7, 0x0 } }, { { 0xb95, 0xbc7, 0xbbe, 0x0 }, @@ -676,11 +676,11 @@ void tst_QTextScriptEngine::tamil_data() { { 0xb95, 0xbc6, 0xbd7, 0x0 }, { 0xa, 0x31, 0x40, 0x0 } }, - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find AkrutiTml1"); + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find AkrutiTml1"); } } @@ -701,35 +701,35 @@ void tst_QTextScriptEngine::telugu_data() { if (QFontDatabase().families(QFontDatabase::Telugu).contains("Pothana2000")) { QFont f("Pothana2000"); - const ShapeTable shape_table [] = { + const ShapeTable shape_table [] = { { { 0xc15, 0xc4d, 0x0 }, - { 0xbb, 0x0 } }, + { 0xbb, 0x0 } }, { { 0xc15, 0xc4d, 0xc37, 0x0 }, - { 0x4b, 0x0 } }, + { 0x4b, 0x0 } }, { { 0xc15, 0xc4d, 0xc37, 0xc4d, 0x0 }, - { 0xe0, 0x0 } }, + { 0xe0, 0x0 } }, { { 0xc15, 0xc4d, 0xc37, 0xc4d, 0xc23, 0x0 }, - { 0x4b, 0x91, 0x0 } }, + { 0x4b, 0x91, 0x0 } }, { { 0xc15, 0xc4d, 0xc30, 0x0 }, - { 0x5a, 0xb2, 0x0 } }, + { 0x5a, 0xb2, 0x0 } }, { { 0xc15, 0xc4d, 0xc30, 0xc4d, 0x0 }, - { 0xbb, 0xb2, 0x0 } }, + { 0xbb, 0xb2, 0x0 } }, { { 0xc15, 0xc4d, 0xc30, 0xc4d, 0xc15, 0x0 }, - { 0x5a, 0xb2, 0x83, 0x0 } }, + { 0x5a, 0xb2, 0x83, 0x0 } }, { { 0xc15, 0xc4d, 0xc30, 0xc3f, 0x0 }, - { 0xe2, 0xb2, 0x0 } }, + { 0xe2, 0xb2, 0x0 } }, { { 0xc15, 0xc4d, 0xc15, 0xc48, 0x0 }, { 0xe6, 0xb3, 0x83, 0x0 } }, { { 0xc15, 0xc4d, 0xc30, 0xc48, 0x0 }, - { 0xe6, 0xb3, 0x9f, 0x0 } }, + { 0xe6, 0xb3, 0x9f, 0x0 } }, { { 0xc15, 0xc46, 0xc56, 0x0 }, { 0xe6, 0xb3, 0x0 } }, { {0}, {0} } }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find Pothana2000"); + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find Pothana2000"); } } @@ -750,42 +750,42 @@ void tst_QTextScriptEngine::kannada_data() { if (QFontDatabase().families(QFontDatabase::Kannada).contains("Sampige")) { QFont f("Sampige"); - const ShapeTable shape_table [] = { - { { 0x0ca8, 0x0ccd, 0x0ca8, 0x0 }, - { 0x0049, 0x00ba, 0x0 } }, - { { 0x0ca8, 0x0ccd, 0x0ca1, 0x0 }, - { 0x0049, 0x00b3, 0x0 } }, - { { 0x0caf, 0x0cc2, 0x0 }, - { 0x004f, 0x005d, 0x0 } }, - { { 0x0ce0, 0x0 }, - { 0x006a, 0x0 } }, - { { 0x0ce6, 0x0ce7, 0x0ce8, 0x0 }, - { 0x006b, 0x006c, 0x006d, 0x0 } }, - { { 0x0cb5, 0x0ccb, 0x0 }, - { 0x015f, 0x0067, 0x0 } }, - { { 0x0cb0, 0x0ccd, 0x0cae, 0x0 }, - { 0x004e, 0x0082, 0x0 } }, - { { 0x0cb0, 0x0ccd, 0x0c95, 0x0 }, - { 0x0036, 0x0082, 0x0 } }, - { { 0x0c95, 0x0ccd, 0x0cb0, 0x0 }, - { 0x0036, 0x00c1, 0x0 } }, - { { 0x0cb0, 0x0ccd, 0x200d, 0x0c95, 0x0 }, - { 0x0050, 0x00a7, 0x0 } }, - - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find Sampige"); + const ShapeTable shape_table [] = { + { { 0x0ca8, 0x0ccd, 0x0ca8, 0x0 }, + { 0x0049, 0x00ba, 0x0 } }, + { { 0x0ca8, 0x0ccd, 0x0ca1, 0x0 }, + { 0x0049, 0x00b3, 0x0 } }, + { { 0x0caf, 0x0cc2, 0x0 }, + { 0x004f, 0x005d, 0x0 } }, + { { 0x0ce0, 0x0 }, + { 0x006a, 0x0 } }, + { { 0x0ce6, 0x0ce7, 0x0ce8, 0x0 }, + { 0x006b, 0x006c, 0x006d, 0x0 } }, + { { 0x0cb5, 0x0ccb, 0x0 }, + { 0x015f, 0x0067, 0x0 } }, + { { 0x0cb0, 0x0ccd, 0x0cae, 0x0 }, + { 0x004e, 0x0082, 0x0 } }, + { { 0x0cb0, 0x0ccd, 0x0c95, 0x0 }, + { 0x0036, 0x0082, 0x0 } }, + { { 0x0c95, 0x0ccd, 0x0cb0, 0x0 }, + { 0x0036, 0x00c1, 0x0 } }, + { { 0x0cb0, 0x0ccd, 0x200d, 0x0c95, 0x0 }, + { 0x0050, 0x00a7, 0x0 } }, + + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find Sampige"); } { if (QFontDatabase().families(QFontDatabase::Kannada).contains("Tunga")) { QFont f("Tunga"); - const ShapeTable shape_table [] = { - { { 0x0cb7, 0x0cc6, 0x0 }, - { 0x00b0, 0x006c, 0x0 } }, - { { 0x0cb7, 0x0ccd, 0x0 }, - { 0x0163, 0x0 } }, + const ShapeTable shape_table [] = { + { { 0x0cb7, 0x0cc6, 0x0 }, + { 0x00b0, 0x006c, 0x0 } }, + { { 0x0cb7, 0x0ccd, 0x0 }, + { 0x0163, 0x0 } }, { { 0xc95, 0xcbf, 0xcd5, 0x0 }, { 0x114, 0x73, 0x0 } }, { { 0xc95, 0xcc6, 0xcd5, 0x0 }, @@ -796,11 +796,11 @@ void tst_QTextScriptEngine::kannada_data() { 0x90, 0x6c, 0x69, 0x0 } }, { { 0xc95, 0xcca, 0xcd5, 0x0 }, { 0x90, 0x6c, 0x69, 0x73, 0x0 } }, - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find Tunga"); + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find Tunga"); } } @@ -821,33 +821,33 @@ void tst_QTextScriptEngine::malayalam_data() { if (QFontDatabase().families(QFontDatabase::Malayalam).contains("AkrutiMal2")) { QFont f("AkrutiMal2"); - const ShapeTable shape_table [] = { - { { 0x0d15, 0x0d46, 0x0 }, - { 0x005e, 0x0034, 0x0 } }, - { { 0x0d15, 0x0d47, 0x0 }, - { 0x005f, 0x0034, 0x0 } }, - { { 0x0d15, 0x0d4b, 0x0 }, - { 0x005f, 0x0034, 0x0058, 0x0 } }, - { { 0x0d15, 0x0d48, 0x0 }, - { 0x0060, 0x0034, 0x0 } }, - { { 0x0d15, 0x0d4a, 0x0 }, - { 0x005e, 0x0034, 0x0058, 0x0 } }, - { { 0x0d30, 0x0d4d, 0x0d15, 0x0 }, - { 0x009e, 0x0034, 0x0 } }, - { { 0x0d15, 0x0d4d, 0x0d35, 0x0 }, - { 0x0034, 0x007a, 0x0 } }, - { { 0x0d15, 0x0d4d, 0x0d2f, 0x0 }, - { 0x0034, 0x00a2, 0x0 } }, - { { 0x0d1f, 0x0d4d, 0x0d1f, 0x0 }, - { 0x0069, 0x0 } }, - { { 0x0d26, 0x0d4d, 0x0d26, 0x0 }, - { 0x0074, 0x0 } }, - { { 0x0d30, 0x0d4d, 0x0 }, - { 0x009e, 0x0 } }, - { { 0x0d30, 0x0d4d, 0x200c, 0x0 }, - { 0x009e, 0x0 } }, - { { 0x0d30, 0x0d4d, 0x200d, 0x0 }, - { 0x009e, 0x0 } }, + const ShapeTable shape_table [] = { + { { 0x0d15, 0x0d46, 0x0 }, + { 0x005e, 0x0034, 0x0 } }, + { { 0x0d15, 0x0d47, 0x0 }, + { 0x005f, 0x0034, 0x0 } }, + { { 0x0d15, 0x0d4b, 0x0 }, + { 0x005f, 0x0034, 0x0058, 0x0 } }, + { { 0x0d15, 0x0d48, 0x0 }, + { 0x0060, 0x0034, 0x0 } }, + { { 0x0d15, 0x0d4a, 0x0 }, + { 0x005e, 0x0034, 0x0058, 0x0 } }, + { { 0x0d30, 0x0d4d, 0x0d15, 0x0 }, + { 0x009e, 0x0034, 0x0 } }, + { { 0x0d15, 0x0d4d, 0x0d35, 0x0 }, + { 0x0034, 0x007a, 0x0 } }, + { { 0x0d15, 0x0d4d, 0x0d2f, 0x0 }, + { 0x0034, 0x00a2, 0x0 } }, + { { 0x0d1f, 0x0d4d, 0x0d1f, 0x0 }, + { 0x0069, 0x0 } }, + { { 0x0d26, 0x0d4d, 0x0d26, 0x0 }, + { 0x0074, 0x0 } }, + { { 0x0d30, 0x0d4d, 0x0 }, + { 0x009e, 0x0 } }, + { { 0x0d30, 0x0d4d, 0x200c, 0x0 }, + { 0x009e, 0x0 } }, + { { 0x0d30, 0x0d4d, 0x200d, 0x0 }, + { 0x009e, 0x0 } }, { { 0xd15, 0xd46, 0xd3e, 0x0 }, { 0x5e, 0x34, 0x58, 0x0 } }, { { 0xd15, 0xd47, 0xd3e, 0x0 }, @@ -856,11 +856,11 @@ void tst_QTextScriptEngine::malayalam_data() { 0x5e, 0x34, 0x65, 0x0 } }, { { 0xd15, 0xd57, 0x0 }, { 0x34, 0x65, 0x0 } }, - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find AkrutiMal2"); + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find AkrutiMal2"); } { if (QFontDatabase().families(QFontDatabase::Malayalam).contains("Rachana")) { @@ -879,7 +879,7 @@ void tst_QTextScriptEngine::malayalam_data() { {0}, {0} } }; - prepareShapingTest(f, shape_table); + prepareShapingTest(f, shape_table); } else QSKIP("couldn't find Rachana"); } @@ -917,7 +917,7 @@ void tst_QTextScriptEngine::sinhala_data() { 0x4a, 0x61, 0x42, 0x41, 0x0 } }, { {0}, {0} } }; - prepareShapingTest(f, shape_table); + prepareShapingTest(f, shape_table); } else QSKIP("couldn't find Malithi Web"); } @@ -940,30 +940,30 @@ void tst_QTextScriptEngine::khmer_data() { if (QFontDatabase().families(QFontDatabase::Khmer).contains("Khmer OS")) { QFont f("Khmer OS"); - const ShapeTable shape_table [] = { - { { 0x179a, 0x17cd, 0x0 }, - { 0x24c, 0x27f, 0x0 } }, - { { 0x179f, 0x17c5, 0x0 }, - { 0x273, 0x203, 0x0 } }, - { { 0x1790, 0x17d2, 0x1784, 0x17c3, 0x0 }, - { 0x275, 0x242, 0x182, 0x0 } }, - { { 0x179a, 0x0 }, - { 0x24c, 0x0 } }, - { { 0x1781, 0x17d2, 0x1798, 0x17c2, 0x0 }, - { 0x274, 0x233, 0x197, 0x0 } }, - { { 0x1798, 0x17b6, 0x0 }, - { 0x1cb, 0x0 } }, - { { 0x179a, 0x17b8, 0x0 }, - { 0x24c, 0x26a, 0x0 } }, - { { 0x1787, 0x17b6, 0x0 }, - { 0x1ba, 0x0 } }, - { { 0x1798, 0x17d2, 0x1796, 0x17bb, 0x0 }, - { 0x24a, 0x195, 0x26d, 0x0 } }, - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find Khmer OS"); + const ShapeTable shape_table [] = { + { { 0x179a, 0x17cd, 0x0 }, + { 0x24c, 0x27f, 0x0 } }, + { { 0x179f, 0x17c5, 0x0 }, + { 0x273, 0x203, 0x0 } }, + { { 0x1790, 0x17d2, 0x1784, 0x17c3, 0x0 }, + { 0x275, 0x242, 0x182, 0x0 } }, + { { 0x179a, 0x0 }, + { 0x24c, 0x0 } }, + { { 0x1781, 0x17d2, 0x1798, 0x17c2, 0x0 }, + { 0x274, 0x233, 0x197, 0x0 } }, + { { 0x1798, 0x17b6, 0x0 }, + { 0x1cb, 0x0 } }, + { { 0x179a, 0x17b8, 0x0 }, + { 0x24c, 0x26a, 0x0 } }, + { { 0x1787, 0x17b6, 0x0 }, + { 0x1ba, 0x0 } }, + { { 0x1798, 0x17d2, 0x1796, 0x17bb, 0x0 }, + { 0x24a, 0x195, 0x26d, 0x0 } }, + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find Khmer OS"); } } @@ -984,14 +984,14 @@ void tst_QTextScriptEngine::linearB_data() { if (QFontDatabase().families(QFontDatabase::Any).contains("Penuturesu")) { QFont f("Penuturesu"); - const ShapeTable shape_table [] = { - { { 0xd800, 0xdc01, 0xd800, 0xdc02, 0xd800, 0xdc03, 0 }, + const ShapeTable shape_table [] = { + { { 0xd800, 0xdc01, 0xd800, 0xdc02, 0xd800, 0xdc03, 0 }, { 0x5, 0x6, 0x7, 0 } }, - { {0}, {0} } - }; - prepareShapingTest(f, shape_table); - } else - QSKIP("couldn't find Penuturesu"); + { {0}, {0} } + }; + prepareShapingTest(f, shape_table); + } else + QSKIP("couldn't find Penuturesu"); } } @@ -1134,8 +1134,8 @@ void tst_QTextScriptEngine::mirroredChars() s.append(QLatin1Char('(')); s.append(QLatin1Char(')')); - HB_Glyph leftParenthesis; - HB_Glyph rightParenthesis; + glyph_t leftParenthesis; + glyph_t rightParenthesis; { QTextLayout layout(s); layout.setCacheEnabled(true); diff --git a/tests/auto/gui/text/text.pro b/tests/auto/gui/text/text.pro index 5055ab61a3..6c0def4d63 100644 --- a/tests/auto/gui/text/text.pro +++ b/tests/auto/gui/text/text.pro @@ -3,6 +3,7 @@ SUBDIRS=\ qabstracttextdocumentlayout \ qcssparser \ qfont \ + qfontcache \ qfontdatabase \ qfontmetrics \ qglyphrun \ @@ -27,6 +28,7 @@ contains(QT_CONFIG, OdfWriter):SUBDIRS += qzip qtextodfwriter win32:SUBDIRS -= qtextpiecetable !contains(QT_CONFIG, private_tests): SUBDIRS -= \ + qfontcache \ qcssparser \ qstatictext \ qtextlayout \ |