diff options
Diffstat (limited to 'src/gui/text')
-rw-r--r-- | src/gui/text/qfont.cpp | 9 | ||||
-rw-r--r-- | src/gui/text/qfont_p.h | 5 | ||||
-rw-r--r-- | src/gui/text/qfontdatabase.cpp | 34 | ||||
-rw-r--r-- | src/gui/text/qfontdatabase_qpa.cpp | 30 | ||||
-rw-r--r-- | src/gui/text/qfontengine_ft.cpp | 46 | ||||
-rw-r--r-- | src/gui/text/qfontengine_ft_p.h | 2 | ||||
-rw-r--r-- | src/gui/text/qtextdocument.cpp | 2 | ||||
-rw-r--r-- | src/gui/text/qtextdocument_p.cpp | 76 | ||||
-rw-r--r-- | src/gui/text/qtextdocument_p.h | 2 | ||||
-rw-r--r-- | src/gui/text/qtextlist.cpp | 4 | ||||
-rw-r--r-- | src/gui/text/qtexttable.cpp | 14 | ||||
-rw-r--r-- | src/gui/text/text.pri | 144 |
12 files changed, 202 insertions, 166 deletions
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp index a410004c06..49b5a9ba46 100644 --- a/src/gui/text/qfont.cpp +++ b/src/gui/text/qfont.cpp @@ -208,7 +208,7 @@ QFontEngine *QFontPrivate::engineForScript(int script) const QMutexLocker locker(qt_fontdatabase_mutex()); if (script <= QChar::Script_Latin) script = QChar::Script_Common; - if (engineData && engineData->fontCache != QFontCache::instance()) { + if (engineData && engineData->fontCacheId != QFontCache::instance()->id()) { // throw out engineData that came from a different thread if (!engineData->ref.deref()) delete engineData; @@ -317,7 +317,7 @@ void QFontPrivate::resolve(uint mask, const QFontPrivate *other) QFontEngineData::QFontEngineData() - : ref(0), fontCache(QFontCache::instance()) + : ref(0), fontCacheId(QFontCache::instance()->id()) { memset(engines, 0, QChar::ScriptCount * sizeof(QFontEngine *)); } @@ -2638,9 +2638,12 @@ void QFontCache::cleanup() } #endif // QT_NO_THREAD +QBasicAtomicInt font_cache_id = Q_BASIC_ATOMIC_INITIALIZER(1); + QFontCache::QFontCache() : QObject(), total_cost(0), max_cost(min_cost), - current_timestamp(0), fast(false), timer_id(-1) + current_timestamp(0), fast(false), timer_id(-1), + m_id(font_cache_id.fetchAndAddRelaxed(1)) { } diff --git a/src/gui/text/qfont_p.h b/src/gui/text/qfont_p.h index 115e866f24..5b7f918e21 100644 --- a/src/gui/text/qfont_p.h +++ b/src/gui/text/qfont_p.h @@ -140,7 +140,7 @@ public: ~QFontEngineData(); QAtomicInt ref; - QFontCache *fontCache; + const int fontCacheId; QFontEngine *engines[QChar::ScriptCount]; @@ -206,6 +206,8 @@ public: QFontCache(); ~QFontCache(); + int id() const { return m_id; } + void clear(); struct Key { @@ -263,6 +265,7 @@ private: uint current_timestamp; bool fast; int timer_id; + const int m_id; }; Q_GUI_EXPORT int qt_defaultDpiX(); diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index ff050d1758..61c93dc2ac 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -499,6 +499,8 @@ static const int scriptForWritingSystem[] = { QChar::Script_Nko // Nko }; +Q_STATIC_ASSERT(sizeof(scriptForWritingSystem) / sizeof(scriptForWritingSystem[0]) == QFontDatabase::WritingSystemsCount); + int qt_script_for_writing_system(QFontDatabase::WritingSystem writingSystem) { return scriptForWritingSystem[writingSystem]; @@ -562,9 +564,9 @@ struct QtFontDesc int familyIndex; }; -static void match(int script, const QFontDef &request, - const QString &family_name, const QString &foundry_name, int force_encoding_id, - QtFontDesc *desc, const QList<int> &blacklistedFamilies = QList<int>()); +static int match(int script, const QFontDef &request, + const QString &family_name, const QString &foundry_name, int force_encoding_id, + QtFontDesc *desc, const QList<int> &blacklisted); static void initFontDef(const QtFontDesc &desc, const QFontDef &request, QFontDef *fontDef, bool multi) { @@ -846,11 +848,12 @@ static bool matchFamilyName(const QString &familyName, QtFontFamily *f) Tries to find the best match for a given request and family/foundry */ -static void match(int script, const QFontDef &request, - const QString &family_name, const QString &foundry_name, int force_encoding_id, - QtFontDesc *desc, const QList<int> &blacklistedFamilies) +static int match(int script, const QFontDef &request, + const QString &family_name, const QString &foundry_name, int force_encoding_id, + QtFontDesc *desc, const QList<int> &blacklistedFamilies) { Q_UNUSED(force_encoding_id); + int result = -1; QtFontStyle::Key styleKey; styleKey.style = request.style; @@ -881,6 +884,8 @@ static void match(int script, const QFontDef &request, load(family_name, script); + const size_t writingSystem = std::find(scriptForWritingSystem, scriptForWritingSystem + QFontDatabase::WritingSystemsCount, script) - scriptForWritingSystem; + QFontDatabasePrivate *db = privateDb(); for (int x = 0; x < db->count; ++x) { if (blacklistedFamilies.contains(x)) @@ -895,19 +900,9 @@ static void match(int script, const QFontDef &request, if (family_name.isEmpty()) load(test.family->name, script); - uint score_adjust = 0; - - bool supported = (script == QChar::Script_Common); - for (int ws = 1; !supported && ws < QFontDatabase::WritingSystemsCount; ++ws) { - if (scriptForWritingSystem[ws] != script) - continue; - if (test.family->writingSystems[ws] & QtFontFamily::Supported) - supported = true; - } - if (!supported) { - // family not supported in the script we want + // Check if family is supported in the script we want + if (script != QChar::Script_Common && !(test.family->writingSystems[writingSystem] & QtFontFamily::Supported)) continue; - } // as we know the script is supported, we can be sure // to find a matching font here. @@ -922,15 +917,16 @@ static void match(int script, const QFontDef &request, QString(), styleKey, request.pixelSize, pitch, &test, force_encoding_id); } - newscore += score_adjust; if (newscore < score) { + result = x; score = newscore; *desc = test; } if (newscore < 10) // xlfd instead of FT... just accept it break; } + return result; } static QString styleStringHelper(int weight, QFont::Style style) diff --git a/src/gui/text/qfontdatabase_qpa.cpp b/src/gui/text/qfontdatabase_qpa.cpp index 6c0be950dc..6f4971e267 100644 --- a/src/gui/text/qfontdatabase_qpa.cpp +++ b/src/gui/text/qfontdatabase_qpa.cpp @@ -305,9 +305,12 @@ QFontDatabase::findFont(int script, const QFontPrivate *fp, } QtFontDesc desc; - match(script, request, family_name, foundry_name, force_encoding_id, &desc); - if (desc.family != 0 && desc.foundry != 0 && desc.style != 0) { + QList<int> blackListed; + int index = match(script, request, family_name, foundry_name, force_encoding_id, &desc, blackListed); + if (index >= 0) { engine = loadEngine(script, request, desc.family, desc.foundry, desc.style, desc.size); + if (!engine) + blackListed.append(index); } else { FM_DEBUG(" NO MATCH FOUND\n"); } @@ -331,6 +334,8 @@ QFontDatabase::findFont(int script, const QFontPrivate *fp, QFont::Style(request.style), QFont::StyleHint(request.styleHint), QChar::Script(script)); + if (script > QChar::Script_Common) + fallbacks += QString(); // Find the first font matching the specified script. for (int i = 0; !engine && i < fallbacks.size(); i++) { QFontDef def = request; @@ -339,14 +344,19 @@ QFontDatabase::findFont(int script, const QFontPrivate *fp, engine = QFontCache::instance()->findEngine(key); if (!engine) { QtFontDesc desc; - match(script, def, def.family, QLatin1String(""), 0, &desc); - if (desc.family == 0 && desc.foundry == 0 && desc.style == 0) { - continue; - } - engine = loadEngine(script, def, desc.family, desc.foundry, desc.style, desc.size); - if (engine) { - initFontDef(desc, def, &engine->fontDef, engine->type() == QFontEngine::Multi); - } + do { + index = match(script, def, def.family, QLatin1String(""), 0, &desc, blackListed); + if (index >= 0) { + QFontDef loadDef = def; + if (loadDef.family.isEmpty()) + loadDef.family = desc.family->name; + engine = loadEngine(script, loadDef, desc.family, desc.foundry, desc.style, desc.size); + if (engine) + initFontDef(desc, loadDef, &engine->fontDef, engine->type() == QFontEngine::Multi); + else + blackListed.append(index); + } + } while (index >= 0 && !engine); } } } diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 5f53a36629..42cf15ee3b 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -112,7 +112,7 @@ QT_BEGIN_NAMESPACE #endif #define FLOOR(x) ((x) & -64) -#define CEIL(x) (((x)+63) & -64) +#define CEIL(x) (((x)+63) & -64) #define TRUNC(x) ((x) >> 6) #define ROUND(x) (((x)+32) & -64) @@ -124,11 +124,21 @@ public: QtFreetypeData() : library(0) { } + ~QtFreetypeData(); FT_Library library; QHash<QFontEngine::FaceId, QFreetypeFace *> faces; }; +QtFreetypeData::~QtFreetypeData() +{ + for (QHash<QFontEngine::FaceId, QFreetypeFace *>::ConstIterator iter = faces.begin(); iter != faces.end(); ++iter) + iter.value()->cleanup(); + faces.clear(); + FT_Done_FreeType(library); + library = 0; +} + #ifdef QT_NO_THREAD Q_GLOBAL_STATIC(QtFreetypeData, theFreetypeData) @@ -292,23 +302,35 @@ QFreetypeFace *QFreetypeFace::getFace(const QFontEngine::FaceId &face_id, return freetype; } +void QFreetypeFace::cleanup() +{ + if (hbFace && hbFace_destroy_func) { + hbFace_destroy_func(hbFace); + hbFace = 0; + } + FT_Done_Face(face); + face = 0; +} + void QFreetypeFace::release(const QFontEngine::FaceId &face_id) { - QtFreetypeData *freetypeData = qt_getFreetypeData(); if (!ref.deref()) { - if (hbFace && hbFace_destroy_func) { - hbFace_destroy_func(hbFace); - hbFace = 0; + if (face) { + QtFreetypeData *freetypeData = qt_getFreetypeData(); + + cleanup(); + + if (freetypeData->faces.contains(face_id)) + freetypeData->faces.take(face_id); + + if (freetypeData->faces.isEmpty()) { + FT_Done_FreeType(freetypeData->library); + freetypeData->library = 0; + } } - FT_Done_Face(face); - if(freetypeData->faces.contains(face_id)) - freetypeData->faces.take(face_id); + delete this; } - if (freetypeData->faces.isEmpty()) { - FT_Done_FreeType(freetypeData->library); - freetypeData->library = 0; - } } diff --git a/src/gui/text/qfontengine_ft_p.h b/src/gui/text/qfontengine_ft_p.h index e64fec2f27..7df66b9678 100644 --- a/src/gui/text/qfontengine_ft_p.h +++ b/src/gui/text/qfontengine_ft_p.h @@ -114,9 +114,11 @@ public: private: friend class QFontEngineFT; + friend class QtFreetypeData; friend struct QScopedPointerDeleter<QFreetypeFace>; QFreetypeFace() : _lock(QMutex::Recursive) {} ~QFreetypeFace() {} + void cleanup(); QAtomicInt ref; QMutex _lock; QByteArray fontData; diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp index 30e0f32547..4a34f0d3c3 100644 --- a/src/gui/text/qtextdocument.cpp +++ b/src/gui/text/qtextdocument.cpp @@ -2491,7 +2491,7 @@ static bool isOrderedList(int style) || style == QTextListFormat::ListUpperAlpha || style == QTextListFormat::ListUpperRoman || style == QTextListFormat::ListLowerRoman - ; + ; } void QTextHtmlExporter::emitBlockAttributes(const QTextBlock &block) diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp index f0910dd52d..4b6ce667fa 100644 --- a/src/gui/text/qtextdocument_p.cpp +++ b/src/gui/text/qtextdocument_p.cpp @@ -632,7 +632,7 @@ void QTextDocumentPrivate::move(int pos, int to, int length, QTextUndoCommand::O blockRevision); if (key+1 != blocks.position(b)) { -// qDebug("remove_string from %d length %d", key, X->size_array[0]); +// qDebug("remove_string from %d length %d", key, X->size_array[0]); Q_ASSERT(noBlockInString(text.mid(X->stringPosition, X->size_array[0]))); w = remove_string(key, X->size_array[0], op); @@ -641,7 +641,7 @@ void QTextDocumentPrivate::move(int pos, int to, int length, QTextUndoCommand::O dstKey += X->size_array[0]; } } else { -// qDebug("remove_block at %d", key); +// qDebug("remove_block at %d", key); Q_ASSERT(X->size_array[0] == 1 && isValidBlockSeparator(text.at(X->stringPosition))); b = blocks.previous(b); B = 0; @@ -779,7 +779,7 @@ void QTextDocumentPrivate::setCharFormat(int pos, int length, const QTextCharFor } void QTextDocumentPrivate::setBlockFormat(const QTextBlock &from, const QTextBlock &to, - const QTextBlockFormat &newFormat, FormatChangeMode mode) + const QTextBlockFormat &newFormat, FormatChangeMode mode) { beginEditBlock(); @@ -795,7 +795,7 @@ void QTextDocumentPrivate::setBlockFormat(const QTextBlock &from, const QTextBlo QTextBlock it = from; QTextBlock end = to; if (end.isValid()) - end = end.next(); + end = end.next(); for (; it != end; it = it.next()) { int oldFormat = block(it)->format; @@ -820,8 +820,8 @@ void QTextDocumentPrivate::setBlockFormat(const QTextBlock &from, const QTextBlo if (group) group->blockInserted(it); } else if (group) { - group->blockFormatChanged(it); - } + group->blockFormatChanged(it); + } } documentChange(from.position(), to.position() + to.length() - from.position()); @@ -892,14 +892,14 @@ int QTextDocumentPrivate::undoRedo(bool undo) QTextUndoCommand &c = undoStack[undoState]; int resetBlockRevision = c.pos; - switch(c.command) { + switch (c.command) { case QTextUndoCommand::Inserted: remove(c.pos, c.length, (QTextUndoCommand::Operation)c.operation); PMDEBUG(" erase: from %d, length %d", c.pos, c.length); c.command = QTextUndoCommand::Removed; editPos = c.pos; editLength = 0; - break; + break; case QTextUndoCommand::Removed: PMDEBUG(" insert: format %d (from %d, length %d, strpos=%d)", c.format, c.pos, c.length, c.strPos); insert_string(c.pos, c.strPos, c.length, c.format, (QTextUndoCommand::Operation)c.operation); @@ -908,33 +908,33 @@ int QTextDocumentPrivate::undoRedo(bool undo) editLength = 0; editPos = c.pos; editLength += c.length; - break; - case QTextUndoCommand::BlockInserted: - case QTextUndoCommand::BlockAdded: + break; + case QTextUndoCommand::BlockInserted: + case QTextUndoCommand::BlockAdded: remove_block(c.pos, &c.blockFormat, c.command, (QTextUndoCommand::Operation)c.operation); PMDEBUG(" blockremove: from %d", c.pos); - if (c.command == QTextUndoCommand::BlockInserted) - c.command = QTextUndoCommand::BlockRemoved; - else - c.command = QTextUndoCommand::BlockDeleted; + if (c.command == QTextUndoCommand::BlockInserted) + c.command = QTextUndoCommand::BlockRemoved; + else + c.command = QTextUndoCommand::BlockDeleted; editPos = c.pos; editLength = 0; - break; - case QTextUndoCommand::BlockRemoved: - case QTextUndoCommand::BlockDeleted: + break; + case QTextUndoCommand::BlockRemoved: + case QTextUndoCommand::BlockDeleted: PMDEBUG(" blockinsert: charformat %d blockformat %d (pos %d, strpos=%d)", c.format, c.blockFormat, c.pos, c.strPos); insert_block(c.pos, c.strPos, c.format, c.blockFormat, (QTextUndoCommand::Operation)c.operation, c.command); resetBlockRevision += 1; - if (c.command == QTextUndoCommand::BlockRemoved) - c.command = QTextUndoCommand::BlockInserted; - else - c.command = QTextUndoCommand::BlockAdded; + if (c.command == QTextUndoCommand::BlockRemoved) + c.command = QTextUndoCommand::BlockInserted; + else + c.command = QTextUndoCommand::BlockAdded; if (editPos != (int)c.pos) editLength = 0; editPos = c.pos; editLength += 1; - break; - case QTextUndoCommand::CharFormatChanged: { + break; + case QTextUndoCommand::CharFormatChanged: { resetBlockRevision = -1; // ## TODO PMDEBUG(" charFormat: format %d (from %d, length %d)", c.format, c.pos, c.length); FragmentIterator it = find(c.pos); @@ -947,9 +947,9 @@ int QTextDocumentPrivate::undoRedo(bool undo) editLength = 0; editPos = c.pos; editLength += c.length; - break; - } - case QTextUndoCommand::BlockFormatChanged: { + break; + } + case QTextUndoCommand::BlockFormatChanged: { resetBlockRevision = -1; // ## TODO PMDEBUG(" blockformat: format %d pos %d", c.format, c.pos); QTextBlock it = blocksFind(c.pos); @@ -970,9 +970,9 @@ int QTextDocumentPrivate::undoRedo(bool undo) } documentChange(it.position(), it.length()); editPos = -1; - break; - } - case QTextUndoCommand::GroupFormatChange: { + break; + } + case QTextUndoCommand::GroupFormatChange: { resetBlockRevision = -1; // ## TODO PMDEBUG(" group format change"); QTextObject *object = objectForIndex(c.objectIndex); @@ -980,22 +980,22 @@ int QTextDocumentPrivate::undoRedo(bool undo) changeObjectFormat(object, c.format); c.format = oldFormat; editPos = -1; - break; - } + break; + } case QTextUndoCommand::CursorMoved: editPos = c.pos; editLength = 0; break; - case QTextUndoCommand::Custom: + case QTextUndoCommand::Custom: resetBlockRevision = -1; // ## TODO if (undo) c.custom->undo(); else c.custom->redo(); editPos = -1; - break; - default: - Q_ASSERT(false); + break; + default: + Q_ASSERT(false); } if (resetBlockRevision >= 0) { @@ -1315,9 +1315,9 @@ void QTextDocumentPrivate::adjustDocumentChangesAndCursors(int from, int addedOr int removed = qMax(0, -addedOrRemoved); int diff = 0; - if(from + removed < docChangeFrom) + if (from + removed < docChangeFrom) diff = docChangeFrom - from - removed; - else if(from > docChangeFrom + docChangeLength) + else if (from > docChangeFrom + docChangeLength) diff = from - (docChangeFrom + docChangeLength); int overlap_start = qMax(from, docChangeFrom); diff --git a/src/gui/text/qtextdocument_p.h b/src/gui/text/qtextdocument_p.h index 1394e88465..8d4cab30ae 100644 --- a/src/gui/text/qtextdocument_p.h +++ b/src/gui/text/qtextdocument_p.h @@ -194,7 +194,7 @@ public: void setCharFormat(int pos, int length, const QTextCharFormat &newFormat, FormatChangeMode mode = SetFormat); void setBlockFormat(const QTextBlock &from, const QTextBlock &to, - const QTextBlockFormat &newFormat, FormatChangeMode mode = SetFormat); + const QTextBlockFormat &newFormat, FormatChangeMode mode = SetFormat); void emitUndoAvailable(bool available); void emitRedoAvailable(bool available); diff --git a/src/gui/text/qtextlist.cpp b/src/gui/text/qtextlist.cpp index f969f66006..15c16f1ec0 100644 --- a/src/gui/text/qtextlist.cpp +++ b/src/gui/text/qtextlist.cpp @@ -265,8 +265,8 @@ QString QTextList::itemText(const QTextBlock &blockIt) const result = QLatin1String("?"); } - } - break; + } + break; default: Q_ASSERT(false); } diff --git a/src/gui/text/qtexttable.cpp b/src/gui/text/qtexttable.cpp index d77cbf9671..045fe7f957 100644 --- a/src/gui/text/qtexttable.cpp +++ b/src/gui/text/qtexttable.cpp @@ -355,12 +355,12 @@ QTextTable *QTextTablePrivate::createTable(QTextDocumentPrivate *pieceTable, int for (int i = 1; i < rows*cols; ++i) { d->cells.append(pieceTable->insertBlock(QTextBeginningOfFrame, pos, cellIdx, charIdx)); -// qDebug(" addCell at %d", pos); +// qDebug(" addCell at %d", pos); ++pos; } d->fragment_end = pieceTable->insertBlock(QTextEndOfFrame, pos, cellIdx, charIdx); -// qDebug(" addEOR at %d", pos); +// qDebug(" addEOR at %d", pos); ++pos; d->blockFragmentUpdates = false; @@ -482,7 +482,7 @@ void QTextTablePrivate::update() const for (int jj = 0; jj < colspan; ++jj) { Q_ASSERT(grid[(r+ii)*nCols + c+jj] == 0); grid[(r+ii)*nCols + c+jj] = fragment; -// qDebug(" setting cell %d span=%d/%d at %d/%d", fragment, rowspan, colspan, r+ii, c+jj); +// qDebug(" setting cell %d span=%d/%d at %d/%d", fragment, rowspan, colspan, r+ii, c+jj); } } } @@ -654,7 +654,7 @@ void QTextTable::resize(int rows, int cols) int nCols = this->columns(); if (rows == nRows && cols == nCols) - return; + return; d->pieceTable->beginEditBlock(); @@ -682,7 +682,7 @@ void QTextTable::insertRows(int pos, int num) { Q_D(QTextTable); if (num <= 0) - return; + return; if (d->dirty) d->update(); @@ -744,7 +744,7 @@ void QTextTable::insertColumns(int pos, int num) { Q_D(QTextTable); if (num <= 0) - return; + return; if (d->dirty) d->update(); @@ -932,7 +932,7 @@ void QTextTable::removeColumns(int pos, int num) // qDebug() << "-------- removeCols" << pos << num; if (num <= 0 || pos < 0) - return; + return; if (d->dirty) d->update(); if (pos >= d->nCols) diff --git a/src/gui/text/text.pri b/src/gui/text/text.pri index 59a6f346e2..2a0e4eff32 100644 --- a/src/gui/text/text.pri +++ b/src/gui/text/text.pri @@ -1,89 +1,89 @@ # Qt kernel module HEADERS += \ - text/qfont.h \ - text/qfontdatabase.h \ - text/qfontengine_p.h \ - text/qfontengineglyphcache_p.h \ - text/qfontinfo.h \ - text/qfontmetrics.h \ - text/qfont_p.h \ - text/qfontsubset_p.h \ - text/qtextengine_p.h \ - text/qtextlayout.h \ - text/qtextformat.h \ - text/qtextformat_p.h \ - text/qtextobject.h \ - text/qtextobject_p.h \ - text/qtextoption.h \ - text/qfragmentmap_p.h \ - text/qtextdocument.h \ - text/qtextdocument_p.h \ - text/qtexthtmlparser_p.h \ - text/qabstracttextdocumentlayout.h \ - text/qtextdocumentlayout_p.h \ - text/qtextcursor.h \ - text/qtextcursor_p.h \ - text/qtextdocumentfragment.h \ - text/qtextdocumentfragment_p.h \ - text/qtextimagehandler_p.h \ - text/qtexttable.h \ - text/qtextlist.h \ - text/qsyntaxhighlighter.h \ - text/qtextdocumentwriter.h \ - text/qcssparser_p.h \ - text/qtexttable_p.h \ - text/qzipreader_p.h \ - text/qzipwriter_p.h \ - text/qtextodfwriter_p.h \ - text/qstatictext_p.h \ - text/qstatictext.h \ - text/qrawfont.h \ - text/qrawfont_p.h \ + text/qfont.h \ + text/qfontdatabase.h \ + text/qfontengine_p.h \ + text/qfontengineglyphcache_p.h \ + text/qfontinfo.h \ + text/qfontmetrics.h \ + text/qfont_p.h \ + text/qfontsubset_p.h \ + text/qtextengine_p.h \ + text/qtextlayout.h \ + text/qtextformat.h \ + text/qtextformat_p.h \ + text/qtextobject.h \ + text/qtextobject_p.h \ + text/qtextoption.h \ + text/qfragmentmap_p.h \ + text/qtextdocument.h \ + text/qtextdocument_p.h \ + text/qtexthtmlparser_p.h \ + text/qabstracttextdocumentlayout.h \ + text/qtextdocumentlayout_p.h \ + text/qtextcursor.h \ + text/qtextcursor_p.h \ + text/qtextdocumentfragment.h \ + text/qtextdocumentfragment_p.h \ + text/qtextimagehandler_p.h \ + text/qtexttable.h \ + text/qtextlist.h \ + text/qsyntaxhighlighter.h \ + text/qtextdocumentwriter.h \ + text/qcssparser_p.h \ + text/qtexttable_p.h \ + text/qzipreader_p.h \ + text/qzipwriter_p.h \ + text/qtextodfwriter_p.h \ + text/qstatictext_p.h \ + text/qstatictext.h \ + text/qrawfont.h \ + text/qrawfont_p.h \ text/qglyphrun.h \ text/qglyphrun_p.h \ text/qdistancefield_p.h SOURCES += \ - text/qfont.cpp \ - text/qfontengine.cpp \ - text/qfontsubset.cpp \ - text/qfontmetrics.cpp \ - text/qfontdatabase.cpp \ - text/qtextengine.cpp \ - text/qtextlayout.cpp \ - text/qtextformat.cpp \ - text/qtextobject.cpp \ - text/qtextoption.cpp \ - text/qfragmentmap.cpp \ - text/qtextdocument.cpp \ - text/qtextdocument_p.cpp \ - text/qtexthtmlparser.cpp \ - text/qabstracttextdocumentlayout.cpp \ - text/qtextdocumentlayout.cpp \ - text/qtextcursor.cpp \ - text/qtextdocumentfragment.cpp \ - text/qtextimagehandler.cpp \ - text/qtexttable.cpp \ - text/qtextlist.cpp \ - text/qtextdocumentwriter.cpp \ - text/qsyntaxhighlighter.cpp \ - text/qcssparser.cpp \ - text/qzip.cpp \ - text/qtextodfwriter.cpp \ - text/qstatictext.cpp \ - text/qrawfont.cpp \ + text/qfont.cpp \ + text/qfontengine.cpp \ + text/qfontsubset.cpp \ + text/qfontmetrics.cpp \ + text/qfontdatabase.cpp \ + text/qtextengine.cpp \ + text/qtextlayout.cpp \ + text/qtextformat.cpp \ + text/qtextobject.cpp \ + text/qtextoption.cpp \ + text/qfragmentmap.cpp \ + text/qtextdocument.cpp \ + text/qtextdocument_p.cpp \ + text/qtexthtmlparser.cpp \ + text/qabstracttextdocumentlayout.cpp \ + text/qtextdocumentlayout.cpp \ + text/qtextcursor.cpp \ + text/qtextdocumentfragment.cpp \ + text/qtextimagehandler.cpp \ + text/qtexttable.cpp \ + text/qtextlist.cpp \ + text/qtextdocumentwriter.cpp \ + text/qsyntaxhighlighter.cpp \ + text/qcssparser.cpp \ + text/qzip.cpp \ + text/qtextodfwriter.cpp \ + text/qstatictext.cpp \ + text/qrawfont.cpp \ text/qglyphrun.cpp \ text/qdistancefield.cpp SOURCES += \ - text/qfont_qpa.cpp \ - text/qfontengine_qpa.cpp \ - text/qplatformfontdatabase.cpp \ - text/qrawfont_qpa.cpp + text/qfont_qpa.cpp \ + text/qfontengine_qpa.cpp \ + text/qplatformfontdatabase.cpp \ + text/qrawfont_qpa.cpp HEADERS += \ - text/qplatformfontdatabase.h + text/qplatformfontdatabase.h contains(QT_CONFIG, harfbuzz)|contains(QT_CONFIG, system-harfbuzz) { DEFINES += QT_ENABLE_HARFBUZZ_NG |