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 <QUrl>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
const int kDragDistance = 5;
|
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))
|
#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0))
|
||||||
font->setFamilies(familyNames);
|
font->setFamilies(familyNames);
|
||||||
#else
|
#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());
|
font->setFamily(familyNames.last());
|
||||||
for (const QString &name : qAsConst(familyNames))
|
for (const QString &name : qAsConst(familyNames)) {
|
||||||
if (knownFamilies.contains(name))
|
const auto found = knownFamilies.find(name);
|
||||||
font->setFamily(name);
|
if (found != knownFamilies.end()) {
|
||||||
|
font->setFamily(*found);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
font->setPixelSize(size);
|
font->setPixelSize(size);
|
||||||
font->setWeight(cssWeightToQtWeight(weight));
|
font->setWeight(cssWeightToQtWeight(weight));
|
||||||
|
Reference in New Issue
Block a user