forked from qt-creator/qt-creator
Help/litehtml: Fix resolution of font name
- check case-insensitively - need to break after the first font was found in database Change-Id: Iddd58ec88d61b2506965a618441205e8176e383f Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -40,6 +40,7 @@
|
||||
#include <QUrl>
|
||||
|
||||
#include <algorithm>
|
||||
#include <set>
|
||||
|
||||
const int kDragDistance = 5;
|
||||
|
||||
@@ -453,11 +454,24 @@ litehtml::uint_ptr DocumentContainer::create_font(const litehtml::tchar_t *faceN
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0))
|
||||
font->setFamilies(familyNames);
|
||||
#else
|
||||
static const auto knownFamilies = QFontDatabase().families().toSet();
|
||||
struct CompareCaseinsensitive
|
||||
{
|
||||
bool operator()(const QString &a, const QString &b) const
|
||||
{
|
||||
return a.compare(b, Qt::CaseInsensitive) < 0;
|
||||
}
|
||||
};
|
||||
static const QStringList known = QFontDatabase().families();
|
||||
static const std::set<QString, CompareCaseinsensitive> knownFamilies(known.cbegin(),
|
||||
known.cend());
|
||||
font->setFamily(familyNames.last());
|
||||
for (const QString &name : qAsConst(familyNames))
|
||||
if (knownFamilies.contains(name))
|
||||
font->setFamily(name);
|
||||
for (const QString &name : qAsConst(familyNames)) {
|
||||
const auto found = knownFamilies.find(name);
|
||||
if (found != knownFamilies.end()) {
|
||||
font->setFamily(*found);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
font->setPixelSize(size);
|
||||
font->setWeight(cssWeightToQtWeight(weight));
|
||||
|
Reference in New Issue
Block a user