310QFontEngine *QPlatformFontDatabase::fontEngine(
const QByteArray &fontData, qreal pixelSize,
311 QFont::HintingPreference hintingPreference)
315 Q_UNUSED(hintingPreference);
316 qWarning(
"This plugin does not support font engines created directly from font data");
335QStringList QPlatformFontDatabase::addApplicationFont(
const QByteArray &fontData,
const QString &fileName, QFontDatabasePrivate::ApplicationFont *applicationFont)
339 Q_UNUSED(applicationFont);
341 if (applicationFont !=
nullptr)
342 applicationFont->properties.clear();
344 qWarning(
"This plugin does not support application fonts");
346 return QStringList();
423 QList<
int> QPlatformFontDatabase::standardSizes()
const
426 static const quint8 standard[] =
427 { 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72 };
428 static const int num_standards =
int(
sizeof standard /
sizeof *standard);
429 ret.reserve(num_standards);
430 std::copy(standard, standard + num_standards, std::back_inserter(ret));
497QSupportedWritingSystems QPlatformFontDatabase::writingSystemsFromOS2Table(
const char *os2Table, size_t length)
500 quint32 unicodeRange[4] = {
501 qFromBigEndian<quint32>(os2Table + 42),
502 qFromBigEndian<quint32>(os2Table + 46),
503 qFromBigEndian<quint32>(os2Table + 50),
504 qFromBigEndian<quint32>(os2Table + 54)
506 quint32 codePageRange[2] = {
507 qFromBigEndian<quint32>(os2Table + 78),
508 qFromBigEndian<quint32>(os2Table + 82)
511 return writingSystemsFromTrueTypeBits(unicodeRange, codePageRange);
514 return QSupportedWritingSystems();
523QSupportedWritingSystems QPlatformFontDatabase::writingSystemsFromTrueTypeBits(quint32 unicodeRange[4], quint32 codePageRange[2])
525 QSupportedWritingSystems writingSystems;
527 bool hasScript =
false;
528 for (
int i = 0; i < QFontDatabase::WritingSystemsCount; ++i) {
529 int bit = requiredUnicodeBits[i][0];
531 int flag = 1 << (bit&31);
532 if (bit != 126 && (unicodeRange[index] & flag)) {
533 bit = requiredUnicodeBits[i][1];
536 flag = 1 << (bit&31);
537 if (bit == 127 || (unicodeRange[index] & flag)) {
538 writingSystems.setSupported(QFontDatabase::WritingSystem(i));
544 if (codePageRange[0] & ((1 << Latin1CsbBit) | (1 << CentralEuropeCsbBit) | (1 << TurkishCsbBit) | (1 << BalticCsbBit))) {
545 writingSystems.setSupported(QFontDatabase::Latin);
549 if (codePageRange[0] & (1 << CyrillicCsbBit)) {
550 writingSystems.setSupported(QFontDatabase::Cyrillic);
554 if (codePageRange[0] & (1 << GreekCsbBit)) {
555 writingSystems.setSupported(QFontDatabase::Greek);
559 if (codePageRange[0] & (1 << HebrewCsbBit)) {
560 writingSystems.setSupported(QFontDatabase::Hebrew);
564 if (codePageRange[0] & (1 << ArabicCsbBit)) {
565 writingSystems.setSupported(QFontDatabase::Arabic);
569 if (codePageRange[0] & (1 << ThaiCsbBit)) {
570 writingSystems.setSupported(QFontDatabase::Thai);
574 if (codePageRange[0] & (1 << VietnameseCsbBit)) {
575 writingSystems.setSupported(QFontDatabase::Vietnamese);
579 if (codePageRange[0] & (1 << SimplifiedChineseCsbBit)) {
580 writingSystems.setSupported(QFontDatabase::SimplifiedChinese);
584 if (codePageRange[0] & (1 << TraditionalChineseCsbBit)) {
585 writingSystems.setSupported(QFontDatabase::TraditionalChinese);
589 if (codePageRange[0] & (1 << JapaneseCsbBit)) {
590 writingSystems.setSupported(QFontDatabase::Japanese);
594 if (codePageRange[0] & ((1 << KoreanCsbBit) | (1 << KoreanJohabCsbBit))) {
595 writingSystems.setSupported(QFontDatabase::Korean);
599 if (codePageRange[0] & (1U << SymbolCsbBit)) {
600 writingSystems = QSupportedWritingSystems();
605 writingSystems.setSupported(QFontDatabase::Symbol);
607 return writingSystems;