int main(int argc, char **argv) { QApplication app(argc, argv); //! [0] QFontDatabase database; QTreeWidget fontTree; fontTree.setColumnCount(2); fontTree.setHeaderLabels(QStringList() << "Font" << "Smooth Sizes"); foreach (const QString &family, database.families()) { QTreeWidgetItem *familyItem = new QTreeWidgetItem(&fontTree); familyItem->setText(0, family); foreach (const QString &style, database.styles(family)) { QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem); styleItem->setText(0, style); QString sizes; foreach (int points, database.smoothSizes(family, style)) sizes += QString::number(points) + " "; styleItem->setText(1, sizes.trimmed()); } //! [0] //! [1] } //! [1] fontTree.resizeColumnToContents(0); fontTree.show(); return app.exec(); }
QRectF GlyphElement::renderToPath( const QString& raw, QPainterPath& path ) const { Q_UNUSED( raw ) Q_UNUSED( path ) // try to lookup the char in the font database AttributeManager am; QString fontFamily = am.stringOf( "fontfamily", this ); QFontDatabase db; QFont tmpFont; // determine if the specified font and glyph can be found if( db.families().contains( fontFamily ) ) { tmpFont.setFamily( fontFamily ); path.addText( path.currentPosition(), tmpFont, QChar( am.stringOf( "index", this ).toInt() ) ); QFontMetricsF fm(tmpFont); return fm.boundingRect(QChar( am.stringOf( "index", this ).toInt() ) ); } else { // if not found use alt text path.addText( path.currentPosition(), font(), am.stringOf( "alt", this ) ); QFontMetricsF fm(font()); return fm.boundingRect(am.stringOf( "alt", this )); } }
void tst_QFontDatabase::localizedFonts() { QFontDatabase db; QVERIFY(db.hasFamily(QString::fromUtf8("ヒラギノ明朝 Pro"))); QVERIFY(!db.hasFamily(QString::fromUtf8("NotValidFont"))); }
QFont stringToFont(const QString& font) { QFontDatabase fdb; QString fontFamily; int familyIdx=-1; QStringList allFamilies = fdb.families(); for(int idx=font.indexOf(' '); idx<font.size() && idx>=0; idx=font.indexOf(' ', idx+1)) { QString testFont = font.left(idx); if(allFamilies.contains(testFont)) { fontFamily = testFont; familyIdx = idx; } } QFont f; f.setFamily(fontFamily); QRegularExpression fontRx(QStringLiteral(" (.*) +([0-9]+)$")); QRegularExpressionMatch match = fontRx.match(font, familyIdx); if (match.isValid()) { QString fontStyle = match.captured(1).trimmed(); int fontSize = match.captured(2).toInt(); f.setStyleName(fontStyle); f.setPointSize(fontSize); } else { qWarning() << "Couldn't figure out syle and size" << font; } return f; }
void DevGUI::setupTextActions() { QToolBar *tb = new QToolBar(this); tb->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea); tb->setWindowTitle(tr("Format Actions")); addToolBarBreak(Qt::TopToolBarArea); addToolBar(tb); Font = new QComboBox(tb); tb->addWidget(Font); Font->setEditable(true); QFontDatabase db; Font->addItems(db.families()); connect(Font, SIGNAL(activated(const QString &)), this, SLOT(textFamily(const QString &))); Font->setCurrentIndex(Font->findText(DevApp::font().family())); Size = new QComboBox(tb); Size->setObjectName("Size"); tb->addWidget(Size); Size->setEditable(true); foreach(int size, db.standardSizes()) Size->addItem(QString::number(size)); connect(Size, SIGNAL(activated(const QString &)), this, SLOT(textSize(const QString &))); Size->setCurrentIndex(Size->findText(QString::number(DevApp::font().pointSize()))); }
void PreferencesDialog::initFontFamilyValues( QComboBox* comboBox, bool withEmptyEntry = false ) const { QFontDatabase fontDatabase; QStringList families = fontDatabase.families( false ); if( withEmptyEntry ) comboBox->insertItem( QString::null ); comboBox->insertStringList( families ); }
/// Set a font void ScriptFileInterpreter::setFont(const QString &fontFamily) { // This needs to check if the font exists and use default if not QFontDatabase database; // Select saved choice. If not available, use current font QString fontToUse = m_editor->lexer()->defaultFont().family(); if (database.families().contains(fontFamily)) fontToUse = fontFamily; QFont defaultFont = m_editor->lexer()->defaultFont(); defaultFont.setFamily(fontToUse); m_editor->lexer()->setDefaultFont(defaultFont); // Check through all styles until it starts creating new ones (they match the // default style) // On each, copy the font and change only the family int count = 0; while (m_editor->lexer()->font(count) != m_editor->lexer()->defaultFont()) { QFont font = m_editor->lexer()->font(count); font.setFamily(fontToUse); m_editor->lexer()->setFont(font, count); count++; } }
void tst_QRawFont::fromFont() { QFETCH(QString, fileName); QFETCH(QFont::HintingPreference, hintingPreference); QFETCH(QString, familyName); QFETCH(QFontDatabase::WritingSystem, writingSystem); QFontDatabase fontDatabase; int id = fontDatabase.addApplicationFont(fileName); QVERIFY(id >= 0); QFont font(familyName); font.setHintingPreference(hintingPreference); font.setPixelSize(26.0); QRawFont rawFont = QRawFont::fromFont(font, writingSystem); QVERIFY(rawFont.isValid()); #ifdef Q_WS_QPA QEXPECT_FAIL("", "QTBUG-20976 fails on qpa", Abort); #endif QCOMPARE(rawFont.familyName(), familyName); QCOMPARE(rawFont.pixelSize(), 26.0); QVERIFY(fontDatabase.removeApplicationFont(id)); }
QFont stripStyleName(QFont &f, QFontDatabase &db) { const QString &styleName = f.styleName(); if (styleName.isEmpty()) { return f; } else { QFont g = (db.styleString(f) != styleName) ? db.font(f.family(), styleName, f.pointSize()) : QFont(f.family(), f.pointSize(), f.weight()); if (auto s = f.pixelSize() > 0) { g.setPixelSize(s); } g.setStyleHint(f.styleHint(), f.styleStrategy()); g.setStyle(f.style()); if (f.underline()) { g.setUnderline(true); } if (f.strikeOut()) { g.setStrikeOut(true); } if (f.fixedPitch()) { g.setFixedPitch(true); } return g; } }
void SettingsDialog::setupFontLists() { QFontDatabase database; const QStringList families = database.families(); console->post(PmChart::DebugUi, "SettingsDialog::setupFontLists: default %s [%d]", PmChart::defaultFontFamily(), PmChart::defaultFontSize()); QCompleter *completeFamily = new QCompleter(families, familyLineEdit); familyLineEdit->setCompleter(completeFamily); familyListWidget->insertItems(0, families); QString family = globalSettings.fontFamily; familyLineEdit->setText(family); updateFontList(familyListWidget, family); styleListWidget->insertItems(0, database.styles(family)); QString style = globalSettings.fontStyle; styleLineEdit->setText(style); updateFontList(styleListWidget, style); QStringList sizes; foreach (int points, database.smoothSizes(family, style)) sizes << QString::number(points); sizeListWidget->insertItems(0, sizes); QString size = QString::number(globalSettings.fontSize); sizeLineEdit->setText(size); updateFontList(sizeListWidget, size); }
bool QgsFontUtils::updateFontViaStyle( QFont& f, const QString& fontstyle, bool fallback ) { if ( fontstyle.isEmpty() ) { return false; } QFontDatabase fontDB; if ( !fallback ) { // does the font even have the requested style? bool hasstyle = false; foreach ( const QString &style, fontDB.styles( f.family() ) ) { if ( style == fontstyle ) { hasstyle = true; break; } } if ( !hasstyle ) { return false; } }
void ThemeDialog::fontChanged() { QFontDatabase db; QFont font = m_font_names->currentFont(); QList<int> font_sizes = db.smoothSizes(font.family(), QString()); if (font_sizes.isEmpty()) { font_sizes = db.standardSizes(); } qreal font_size = m_font_sizes->currentText().toDouble(); if (font_size < 0.1) { font_size = std::lround(m_theme.textFont().pointSizeF() * 10.0) * 0.1; } m_font_sizes->blockSignals(true); m_font_sizes->clear(); int index = 0; for (int i = 0; i < font_sizes.count(); ++i) { int size = font_sizes.at(i); if (size <= font_size) { index = i; } m_font_sizes->addItem(QString::number(size)); } m_font_sizes->setCurrentIndex(index); m_font_sizes->setEditText(QString::number(font_size)); m_font_sizes->setValidator(new QDoubleValidator(font_sizes.first(), font_sizes.last(), 1, m_font_sizes)); m_font_sizes->blockSignals(false); }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), device(NULL), preseed(NULL) { ui->setupUi(this); /* Set up logging */ logger = new Logger(); logger->addLine("Starting OSMC installer"); /* UI set up */ #ifdef Q_WS_QWS QWSServer *server = QWSServer::instance(); if(server) { server->setCursorVisible(false); server->setBackground(QBrush(Qt::black)); this->setWindowFlags(Qt::Tool|Qt::CustomizeWindowHint); } #endif this->setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, this->size(), qApp->desktop()->availableGeometry())); QFontDatabase fontDatabase; fontDatabase.addApplicationFont(":/assets/resources/SourceSansPro-Regular.ttf"); /* Populate target list map */ targetList = new TargetList(); utils = new Utils(logger); }
// public QFontDatabase::WritingSystem writingSystem() const void tst_QFontComboBox::writingSystem() { QFETCH(QFontDatabase::WritingSystem, writingSystem); SubQFontComboBox box; QSignalSpy spy0(&box, SIGNAL(currentFontChanged(QFont))); QFont currentFont = box.currentFont(); box.setWritingSystem(writingSystem); QCOMPARE(box.writingSystem(), writingSystem); QFontDatabase db; QStringList list = db.families(writingSystem); int c = list.count(); for (int i = 0; i < list.count(); ++i) { if (db.isPrivateFamily(list[i])) c--; } QCOMPARE(box.model()->rowCount(), c); if (list.count() == 0) QCOMPARE(box.currentFont(), QFont()); QCOMPARE(spy0.count(), (currentFont != box.currentFont()) ? 1 : 0); }
void PreferencesDialog::initFontFamilyValues( QComboBox* comboBox, bool withEmptyEntry /*= false*/ ) const { QFontDatabase fontDatabase; QStringList families = fontDatabase.families(); if( withEmptyEntry ) comboBox->addItem( QString( "" ) ); comboBox->addItems( families ); }
QStringList _k_fontList(const QFontComboBox::FontFilters &fontFilters = QFontComboBox::AllFonts) { QFontDatabase dbase; QStringList families; if (fontFilters == QFontComboBox::AllFonts) { families = dbase.families(); } else { const QFontComboBox::FontFilters scalableMask = (QFontComboBox::ScalableFonts | QFontComboBox::NonScalableFonts); const QFontComboBox::FontFilters spacingMask = (QFontComboBox::ProportionalFonts | QFontComboBox::MonospacedFonts); foreach (const QString &family, dbase.families()) { if ((fontFilters & scalableMask) && (fontFilters & scalableMask) != scalableMask) { if (bool(fontFilters & QFontComboBox::ScalableFonts) != dbase.isSmoothlyScalable(family)) continue; } if ((fontFilters & spacingMask) && (fontFilters & spacingMask) != spacingMask) { if (bool(fontFilters & QFontComboBox::MonospacedFonts) != dbase.isFixedPitch(family)) continue; } families << family; } } families.sort(); return families; }
// Load the list of font sizes void EditorButtonBar::loadFontSizeComboBox(QString name) { QFontDatabase fdb; fontSizes->clear(); QList<int> sizes = fdb.smoothSizes(name, "Normal"); for (int i=0; i<sizes.size(); i++) { fontSizes->addItem(QString::number(sizes[i]), sizes[i]); } if (sizes.size() == 0) { fontSizes->addItem("8", 8); fontSizes->addItem("9", 9); fontSizes->addItem("10", 10); fontSizes->addItem("11", 11); fontSizes->addItem("12", 12); fontSizes->addItem("14", 14); fontSizes->addItem("15", 15); fontSizes->addItem("16", 16); fontSizes->addItem("17", 17); fontSizes->addItem("18", 18); fontSizes->addItem("19", 19); fontSizes->addItem("20", 20); fontSizes->addItem("21", 21); fontSizes->addItem("22", 22); } }
void tst_QRawFont::textLayout() { QFontDatabase fontDatabase; int id = fontDatabase.addApplicationFont(SRCDIR "testfont.ttf"); QVERIFY(id >= 0); QString familyName = QString::fromLatin1("QtBidiTestFont"); QFont font(familyName); font.setPixelSize(18.0); QCOMPARE(QFontInfo(font).family(), familyName); QTextLayout layout(QLatin1String("Foobar")); layout.setFont(font); layout.beginLayout(); layout.createLine(); layout.endLayout(); QList<QGlyphRun> glyphRuns = layout.glyphRuns(); QCOMPARE(glyphRuns.size(), 1); QGlyphRun glyphs = glyphRuns.at(0); QRawFont rawFont = glyphs.rawFont(); QVERIFY(rawFont.isValid()); QCOMPARE(rawFont.familyName(), familyName); QCOMPARE(rawFont.pixelSize(), 18.0); QVector<quint32> expectedGlyphIndices; expectedGlyphIndices << 44 << 83 << 83 << 70 << 69 << 86; QCOMPARE(glyphs.glyphIndexes(), expectedGlyphIndices); QVERIFY(fontDatabase.removeApplicationFont(id)); }
void tst_QFont::italicOblique() { QFontDatabase fdb; QStringList families = fdb.families(); if (families.isEmpty()) return; QStringList::ConstIterator f_it, f_end = families.end(); for (f_it = families.begin(); f_it != f_end; ++f_it) { QString family = *f_it; QStringList styles = fdb.styles(family); QVERIFY(!styles.isEmpty()); QStringList::ConstIterator s_it, s_end = styles.end(); for (s_it = styles.begin(); s_it != s_end; ++s_it) { QString style = *s_it; if (fdb.isSmoothlyScalable(family, style)) { if (style.contains("Oblique")) { style.replace("Oblique", "Italic"); } else if (style.contains("Italic")) { style.replace("Italic", "Oblique"); } else { continue; } QFont f = fdb.font(family, style, 12); QVERIFY(f.italic()); } } } }
void ZLQtPaintContext::fillFamiliesList(std::vector<std::string> &families) const { bool helveticaFlag = false; #ifdef USE_ZAURUS_FONTHACK std::set<std::string> famSet = ZLZaurusFontHack::families(); for (std::set<std::string>::const_iterator it = famSet.begin(); it != famSet.end(); ++it) { if (*it == HELVETICA) { helveticaFlag = true; } families.push_back(*it); } #else /* USE_ZAURUS_FONTHACK */ QFontDatabase db; QStringList qFamilies = db.families(); for (QStringList::Iterator it = qFamilies.begin(); it != qFamilies.end(); ++it) { std::string family = (*it).ascii(); if (family == HELVETICA) { helveticaFlag = true; } families.push_back(family); } #endif /* USE_ZAURUS_FONTHACK */ if (!helveticaFlag) { families.push_back(HELVETICA); } }
void PQTextEditor::slotChangeFontSize(int index) { QFontDatabase db; int fontSize = db.standardSizes().at(index); QTextCharFormat format; format.setFontPointSize(fontSize); }
void ZLQtPaintContext::fillFamiliesList(std::vector<std::string> &families) const { QFontDatabase db; QStringList qFamilies = db.families(); for (QStringList::Iterator it = qFamilies.begin(); it != qFamilies.end(); ++it) { std::string family = (*it).ascii(); families.push_back(family); } }
void PreferencesBase::init() { setupUi(this); QFontDatabase fdb; comboFamily->addItems(fdb.families()); listElements->setCurrentItem( listElements->item(0) ); currentElement = ""; }
X11FontDialog::X11FontDialog(QWidget *parent) :QDialog( parent) { setModal(true); ui.setupUi(this); QFontDatabase fdb; ui.comboBoxFont->addItems( fdb.families() ); }
void MRichTextEditDialogsManager::initTextStylingDialog() { selectedFontSize = -1; selectedFontFamily = QString(); selectedFontColor = QColor(); if (dialogs.textStyles.first) { return; } //% "Text styles" dialogs.textStyles.first = new MDialog(qtTrId("qtn_comm_text_styles"),M::DoneButton); dialogs.textStyles.second = false; QGraphicsWidget *centralWidget = dialogs.textStyles.first->centralWidget(); MLayout *layout = new MLayout(centralWidget); MLinearLayoutPolicy *policy = new MLinearLayoutPolicy(layout, Qt::Vertical); // Initialize Font Family combo box QFontDatabase fontDatabase; QStringList fontFamilyValues = fontDatabase.families(); // NOTE: black listing some ill-behaving fonts temporarily fontFamilyValues.removeAll("Webdings"); fontFamilyValues.removeAll("Wingdings"); fontFamilyCombo = new MComboBox(centralWidget); //% "Font" fontFamilyCombo->setTitle(qtTrId("qtn_comm_font")); QStringListModel *fontModel = new QStringListModel(centralWidget); fontModel->setStringList(fontFamilyValues); fontFamilyCombo->setItemModel(fontModel); policy->addItem(fontFamilyCombo); connect(fontFamilyCombo, SIGNAL(activated(QString)), this, SLOT(rememberFontFamily(QString))); // Initialize Font Size combo box fontSizeCombo = new MComboBox(centralWidget); //% "Font size" fontSizeCombo->setTitle(qtTrId("qtn_comm_font_size")); QStringListModel *sizeModel = new QStringListModel(centralWidget); fontSizeCombo->setItemModel(sizeModel); policy->addItem(fontSizeCombo); connect(fontSizeCombo, SIGNAL(activated(QString)), this, SLOT(rememberFontSize())); // Initialize Font Color item fontColorCombo = new MColorComboBox(centralWidget); //% "Font color" fontColorCombo->setTitle(qtTrId("qtn_comm_font_color_combobox")); policy->addItem(fontColorCombo); connect(fontColorCombo, SIGNAL(colorPicked(QColor)), this, SLOT(rememberFontColor(QColor))); // Selections are applied at pressing button "Done" connect(dialogs.textStyles.first, SIGNAL(accepted()), this, SLOT(applySelection())); }
void BtFontChooserWidget::loadStyles(const QString& font) { m_styleListWidget->clear(); QFontDatabase database; Q_FOREACH (const QString &style, database.styles(font)) { m_styleListWidget->addItem(style); // This triggers loading the sizes for the first style restoreListWidgetValue(m_styleListWidget, m_choosenStyle); } }
void MainWindow::buildFont() { QFontDatabase db; QFont font = db.font(ui->fontFamilyCombo->currentText(), ui->fontStyleCombo->currentText(), ui->pointSizeCombo->currentText().toInt()); ui->sampleLineEdit->setFont(font); setModified(true); }
QFont Theme::font(const QString& name) { if(!d->fontsAdded) { QDir fontDir(d->basePath + '/' + d->fontPath); QStringList entries = fontDir.entryList(QDir::Files); QFontDatabase db; Q_FOREACH(const QString &entry, entries) { d->addedFonts.append(db.addApplicationFont(fontDir.absoluteFilePath(entry))); }
Theme::~Theme() { QFontDatabase db; Q_FOREACH(int id, d->addedFonts) { db.removeApplicationFont(id); } delete d; }
QFont KGlobalSettings::largeFont(const QString &text) { QFontDatabase db; QStringList fam = db.families(); // Move a bunch of preferred fonts to the front. if (fam.remove("Arial")) fam.prepend("Arial"); if (fam.remove("Verdana")) fam.prepend("Verdana"); if (fam.remove("Tahoma")) fam.prepend("Tahoma"); if (fam.remove("Lucida Sans")) fam.prepend("Lucida Sans"); if (fam.remove("Lucidux Sans")) fam.prepend("Lucidux Sans"); if (fam.remove("Nimbus Sans")) fam.prepend("Nimbus Sans"); if (fam.remove("Gothic I")) fam.prepend("Gothic I"); if (_largeFont) fam.prepend(_largeFont->family()); for(QStringList::ConstIterator it = fam.begin(); it != fam.end(); ++it) { if (db.isSmoothlyScalable(*it) && !db.isFixedPitch(*it)) { QFont font(*it); font.setPixelSize(75); QFontMetrics metrics(font); int h = metrics.height(); if ((h < 60) || ( h > 90)) continue; bool ok = true; for(unsigned int i = 0; i < text.length(); i++) { if (!metrics.inFont(text[i])) { ok = false; break; } } if (!ok) continue; font.setPointSize(48); _largeFont = new QFont(font); return *_largeFont; } } _largeFont = new QFont(KGlobalSettings::generalFont()); _largeFont->setPointSize(48); return *_largeFont; }