void tst_QFontDatabase::addAppFont() { QFETCH(bool, useMemoryFont); QSignalSpy fontDbChangedSpy(QGuiApplication::instance(), SIGNAL(fontDatabaseChanged())); QFontDatabase db; const QStringList oldFamilies = db.families(); QVERIFY(!oldFamilies.isEmpty()); fontDbChangedSpy.clear(); int id; if (useMemoryFont) { QFile fontfile("FreeMono.ttf"); fontfile.open(QIODevice::ReadOnly); QByteArray fontdata = fontfile.readAll(); QVERIFY(!fontdata.isEmpty()); id = QFontDatabase::addApplicationFontFromData(fontdata); } else { id = QFontDatabase::addApplicationFont("FreeMono.ttf"); } #if defined(Q_OS_HPUX) && defined(QT_NO_FONTCONFIG) // Documentation says that X11 systems that don't have fontconfig // don't support application fonts. QCOMPARE(id, -1); return; #endif QCOMPARE(fontDbChangedSpy.count(), 1); // addApplicationFont is supported on Mac, don't skip the test if it breaks. #ifndef Q_OS_MAC if (id == -1) QSKIP("Skip the test since app fonts are not supported on this system"); #endif const QStringList addedFamilies = QFontDatabase::applicationFontFamilies(id); QVERIFY(!addedFamilies.isEmpty()); const QStringList newFamilies = db.families(); QVERIFY(!newFamilies.isEmpty()); QVERIFY(newFamilies.count() >= oldFamilies.count()); for (int i = 0; i < addedFamilies.count(); ++i) QVERIFY(newFamilies.contains(addedFamilies.at(i))); QVERIFY(QFontDatabase::removeApplicationFont(id)); QCOMPARE(fontDbChangedSpy.count(), 2); #ifdef Q_OS_MAC QEXPECT_FAIL("font file", "QTBUG-23062", Continue); #endif QCOMPARE(db.families(), oldFamilies); }
QStringList QWebOSFontDatabase::addApplicationFont(const QByteArray &fontData, const QString &fileName) { if (m_debug) qDebug("addApplicationFont(fontData.size() = %d, fileName = \"%s\")", fontData.size(), qPrintable(fileName.toLocal8Bit())); if (!m_qApp) { m_qApp = (QApplication *) QApplication::instance(); QWebOSFontDatabase* self = (QWebOSFontDatabase *) this; connect(m_qApp, SIGNAL(fontDatabaseChanged()), self, SLOT(doFontDatabaseChanged())); } return addFontFile(fontData, fileName, QStringList()); }
/*! Constructs a font combobox with the given \a parent. */ QFontComboBox::QFontComboBox(QWidget *parent) : QComboBox(*new QFontComboBoxPrivate, parent) { Q_D(QFontComboBox); d->currentFont = font(); setEditable(true); QStringListModel *m = new QStringListModel(this); setModel(m); setItemDelegate(new QFontFamilyDelegate(this)); QListView *lview = qobject_cast<QListView*>(view()); if (lview) lview->setUniformItemSizes(true); setWritingSystem(QFontDatabase::Any); connect(this, SIGNAL(currentIndexChanged(QString)), this, SLOT(_q_currentChanged(QString))); connect(qApp, SIGNAL(fontDatabaseChanged()), this, SLOT(_q_updateModel())); }