📄 qfontdatabase.cpp
字号:
#else bool smoothScalable = false; QString familyName, foundryName; parseFontName(family, foundryName, familyName); ::load(familyName); QtFontStyle::Key styleKey(style); QList<int> sizes; QtFontFamily *fam = d->family(familyName); if (!fam) return sizes;#ifdef Q_WS_X11 int dpi = QX11Info::appDpiY();#else const int dpi = qt_defaultDpiY(); // embedded#endif for (int j = 0; j < fam->count; j++) { QtFontFoundry *foundry = fam->foundries[j]; if (foundryName.isEmpty() || foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0) { QtFontStyle *style = foundry->style(styleKey); if (!style) continue; if (style->smoothScalable) { smoothScalable = true; goto end; } for (int l = 0; l < style->count; l++) { const QtFontSize *size = style->pixelSizes + l; if (size->pixelSize != 0 && size->pixelSize != USHRT_MAX) { const uint pointSize = qRound(size->pixelSize * 72.0 / dpi); if (! sizes.contains(pointSize)) sizes.append(pointSize); } } } } end: if (smoothScalable) return QFontDatabase::standardSizes(); qSort(sizes); return sizes;#endif}/*! Returns a list of standard font sizes. \sa smoothSizes(), pointSizes()*/QList<int> QFontDatabase::standardSizes(){ QList<int> ret; static const unsigned short standard[] = { 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72, 0 }; const unsigned short *sizes = standard; while (*sizes) ret << *sizes++; return ret;}/*! Returns true if the font that has family \a family and style \a style is italic; otherwise returns false. \sa weight(), bold()*/bool QFontDatabase::italic(const QString &family, const QString &style) const{ QString familyName, foundryName; parseFontName(family, foundryName, familyName); ::load(familyName); QtFontFoundry allStyles(foundryName); QtFontFamily *f = d->family(familyName); if (!f) return false; for (int j = 0; j < f->count; j++) { QtFontFoundry *foundry = f->foundries[j]; if (foundryName.isEmpty() || foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0) { for (int k = 0; k < foundry->count; k++) allStyles.style(foundry->styles[k]->key, true); } } QtFontStyle::Key styleKey(style); QtFontStyle *s = allStyles.style(styleKey); return s && s->key.style == QFont::StyleItalic;}/*! Returns true if the font that has family \a family and style \a style is bold; otherwise returns false. \sa italic(), weight()*/bool QFontDatabase::bold(const QString &family, const QString &style) const{ QString familyName, foundryName; parseFontName(family, foundryName, familyName); ::load(familyName); QtFontFoundry allStyles(foundryName); QtFontFamily *f = d->family(familyName); if (!f) return false; for (int j = 0; j < f->count; j++) { QtFontFoundry *foundry = f->foundries[j]; if (foundryName.isEmpty() || foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0) { for (int k = 0; k < foundry->count; k++) allStyles.style(foundry->styles[k]->key, true); } } QtFontStyle::Key styleKey(style); QtFontStyle *s = allStyles.style(styleKey); return s && s->key.weight >= QFont::Bold;}/*! Returns the weight of the font that has family \a family and style \a style. If there is no such family and style combination, returns -1. \sa italic(), bold()*/int QFontDatabase::weight(const QString &family, const QString &style) const{ QString familyName, foundryName; parseFontName(family, foundryName, familyName); ::load(familyName); QtFontFoundry allStyles(foundryName); QtFontFamily *f = d->family(familyName); if (!f) return -1; for (int j = 0; j < f->count; j++) { QtFontFoundry *foundry = f->foundries[j]; if (foundryName.isEmpty() || foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0) { for (int k = 0; k < foundry->count; k++) allStyles.style(foundry->styles[k]->key, true); } } QtFontStyle::Key styleKey(style); QtFontStyle *s = allStyles.style(styleKey); return s ? s->key.weight : -1;}/*! Returns the names the \a writingSystem (e.g. for displaying to the user in a dialog).*/QString QFontDatabase::writingSystemName(WritingSystem writingSystem){ const char *name = 0; switch (writingSystem) { case Any: name = QT_TRANSLATE_NOOP("QFontDatabase", "Any"); break; case Latin: name = QT_TRANSLATE_NOOP("QFontDatabase", "Latin"); break; case Greek: name = QT_TRANSLATE_NOOP("QFontDatabase", "Greek"); break; case Cyrillic: name = QT_TRANSLATE_NOOP("QFontDatabase", "Cyrillic"); break; case Armenian: name = QT_TRANSLATE_NOOP("QFontDatabase", "Armenian"); break; case Hebrew: name = QT_TRANSLATE_NOOP("QFontDatabase", "Hebrew"); break; case Arabic: name = QT_TRANSLATE_NOOP("QFontDatabase", "Arabic"); break; case Syriac: name = QT_TRANSLATE_NOOP("QFontDatabase", "Syriac"); break; case Thaana: name = QT_TRANSLATE_NOOP("QFontDatabase", "Thaana"); break; case Devanagari: name = QT_TRANSLATE_NOOP("QFontDatabase", "Devanagari"); break; case Bengali: name = QT_TRANSLATE_NOOP("QFontDatabase", "Bengali"); break; case Gurmukhi: name = QT_TRANSLATE_NOOP("QFontDatabase", "Gurmukhi"); break; case Gujarati: name = QT_TRANSLATE_NOOP("QFontDatabase", "Gujarati"); break; case Oriya: name = QT_TRANSLATE_NOOP("QFontDatabase", "Oriya"); break; case Tamil: name = QT_TRANSLATE_NOOP("QFontDatabase", "Tamil"); break; case Telugu: name = QT_TRANSLATE_NOOP("QFontDatabase", "Telugu"); break; case Kannada: name = QT_TRANSLATE_NOOP("QFontDatabase", "Kannada"); break; case Malayalam: name = QT_TRANSLATE_NOOP("QFontDatabase", "Malayalam"); break; case Sinhala: name = QT_TRANSLATE_NOOP("QFontDatabase", "Sinhala"); break; case Thai: name = QT_TRANSLATE_NOOP("QFontDatabase", "Thai"); break; case Lao: name = QT_TRANSLATE_NOOP("QFontDatabase", "Lao"); break; case Tibetan: name = QT_TRANSLATE_NOOP("QFontDatabase", "Tibetan"); break; case Myanmar: name = QT_TRANSLATE_NOOP("QFontDatabase", "Myanmar"); break; case Georgian: name = QT_TRANSLATE_NOOP("QFontDatabase", "Georgian"); break; case Khmer: name = QT_TRANSLATE_NOOP("QFontDatabase", "Khmer"); break; case SimplifiedChinese: name = QT_TRANSLATE_NOOP("QFontDatabase", "Simplified Chinese"); break; case TraditionalChinese: name = QT_TRANSLATE_NOOP("QFontDatabase", "Traditional Chinese"); break; case Japanese: name = QT_TRANSLATE_NOOP("QFontDatabase", "Japanese"); break; case Korean: name = QT_TRANSLATE_NOOP("QFontDatabase", "Korean"); break; case Vietnamese: name = QT_TRANSLATE_NOOP("QFontDatabase", "Vietnamese"); break; case Symbol: name = QT_TRANSLATE_NOOP("QFontDatabase", "Symbol"); break; case Ogham: name = QT_TRANSLATE_NOOP("QFontDatabase", "Ogham"); break; case Runic: name = QT_TRANSLATE_NOOP("QFontDatabase", "Runic"); break; default: Q_ASSERT_X(false, "QFontDatabase::writingSystemName", "invalid 'writingSystem' parameter"); break; } return qApp ? qApp->translate("QFont", name) : QString::fromLatin1(name);}/*! Returns a string with sample characters from \a writingSystem.*/QString QFontDatabase::writingSystemSample(WritingSystem writingSystem){ QString sample; switch (writingSystem) { case Any: case Symbol: // show only ascii characters sample += QLatin1String("AaBbzZ"); break; case Latin: // This is cheating... we only show latin-1 characters so that we don't // end up loading lots of fonts - at least on X11... sample = QLatin1String("Aa"); sample += QChar(0x00C3); sample += QChar(0x00E1); sample += QLatin1String("Zz"); break; case Greek: sample += QChar(0x0393); sample += QChar(0x03B1); sample += QChar(0x03A9); sample += QChar(0x03C9); break; case Cyrillic: sample += QChar(0x0414); sample += QChar(0x0434); sample += QChar(0x0436); sample += QChar(0x0402); break; case Armenian: sample += QChar(0x053f); sample += QChar(0x054f); sample += QChar(0x056f); sample += QChar(0x057f); break; case Hebrew: sample += QChar(0x05D0); sample += QChar(0x05D1); sample += QChar(0x05D2); sample += QChar(0x05D3); break; case Arabic: sample += QChar(0x0628); sample += QChar(0x0629); sample += QChar(0x062A); sample += QChar(0x063A); break; case Syriac: sample += QChar(0x0715); sample += QChar(0x0725); sample += QChar(0x0716); sample += QChar(0x0726); break; case Thaana: sample += QChar(0x0784); sample += QChar(0x0794); sample += QChar(0x078c); sample += QChar(0x078d); break; case Devanagari: sample += QChar(0x0905); sample += QChar(0x0915); sample += QChar(0x0925); sample += QChar(0x0935); break; case Bengali: sample += QChar(0x0986); sample += QChar(0x0996); sample += QChar(0x09a6); sample += QChar(0x09b6); break; case Gurmukhi: sample += QChar(0x0a05); sample += QChar(0x0a15); sample += QChar(0x0a25); sample += QChar(0x0a35); break; case Gujarati: sample += QChar(0x0a85); sample += QChar(0x0a95); sample += QChar(0x0aa5); sample += QChar(0x0ab5); break; case Oriya: sample += QChar(0x0b06); sample += QChar(0x0b16); sample += QChar(0x0b2b); sample += QChar(0x0b36); break; case Tamil: sample += QChar(0x0b89); sample += QChar(0x0b99); sample += QChar(0x0ba9); sample += QChar(0x0bb9); break; case Telugu: sample += QChar(0x0c05); sample += QChar(0x0c15); sample += QChar(0x0c25); sample += QChar(0x0c35); break; case Kannada: sample += QChar(0x0c85); sample += QChar(0x0c95); sample += QChar(0x0ca5); sample += QChar(0x0cb5); break; case Malayalam: sample += QChar(0x0d05); sample += QChar(0x0d15); sample += QChar(0x0d25); sample += QChar(0x0d35); break; case Sinhala: sample += QChar(0x0d90); sample += QChar(0x0da0); sample += QChar(0x0db0); sample += QChar(0x0dc0); break; case Thai: sample += QChar(0x0e02); sample += QChar(0x0e12); sample += QChar(0x0e22); sample += QChar(0x0e32); break; case Lao: sample += QChar(0x0e8d); sample += QChar(0x0e9d); sample += QChar(0x0ead); sample += QChar(0x0ebd); break; case Tibetan: sample += QChar(0x0f00); sample += QChar(0x0f01); sample += QChar(0x0f02); sample += QChar(0x0f03); break; case Myanmar: sample += QChar(0x1000); sample += QChar(0x1001); sample += QChar(0x1002); sample += QChar(0x1003); break; case Georgian: sample += QChar(0x10a0); sample += QChar(0x10b0); sample += QChar(0x10c0); sample += QChar(0x10d0); break; case Khmer: sample += QC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -