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();
426 QList<
int> QPlatformFontDatabase::standardSizes()
const
429 static const quint8 standard[] =
430 { 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72 };
431 static const int num_standards =
int(
sizeof standard /
sizeof *standard);
432 ret.reserve(num_standards);
433 std::copy(standard, standard + num_standards, std::back_inserter(ret));
500QSupportedWritingSystems QPlatformFontDatabase::writingSystemsFromOS2Table(
const char *os2Table, size_t length)
503 quint32 unicodeRange[4] = {
504 qFromBigEndian<quint32>(os2Table + 42),
505 qFromBigEndian<quint32>(os2Table + 46),
506 qFromBigEndian<quint32>(os2Table + 50),
507 qFromBigEndian<quint32>(os2Table + 54)
509 quint32 codePageRange[2] = {
510 qFromBigEndian<quint32>(os2Table + 78),
511 qFromBigEndian<quint32>(os2Table + 82)
514 return writingSystemsFromTrueTypeBits(unicodeRange, codePageRange);
517 return QSupportedWritingSystems();
526QSupportedWritingSystems QPlatformFontDatabase::writingSystemsFromTrueTypeBits(quint32 unicodeRange[4], quint32 codePageRange[2])
528 QSupportedWritingSystems writingSystems;
530 bool hasScript =
false;
531 for (
int i = 0; i < QFontDatabase::WritingSystemsCount; ++i) {
532 int bit = requiredUnicodeBits[i][0];
534 int flag = 1 << (bit&31);
535 if (bit != 126 && (unicodeRange[index] & flag)) {
536 bit = requiredUnicodeBits[i][1];
539 flag = 1 << (bit&31);
540 if (bit == 127 || (unicodeRange[index] & flag)) {
541 writingSystems.setSupported(QFontDatabase::WritingSystem(i));
547 if (codePageRange[0] & ((1 << Latin1CsbBit) | (1 << CentralEuropeCsbBit) | (1 << TurkishCsbBit) | (1 << BalticCsbBit))) {
548 writingSystems.setSupported(QFontDatabase::Latin);
552 if (codePageRange[0] & (1 << CyrillicCsbBit)) {
553 writingSystems.setSupported(QFontDatabase::Cyrillic);
557 if (codePageRange[0] & (1 << GreekCsbBit)) {
558 writingSystems.setSupported(QFontDatabase::Greek);
562 if (codePageRange[0] & (1 << HebrewCsbBit)) {
563 writingSystems.setSupported(QFontDatabase::Hebrew);
567 if (codePageRange[0] & (1 << ArabicCsbBit)) {
568 writingSystems.setSupported(QFontDatabase::Arabic);
572 if (codePageRange[0] & (1 << ThaiCsbBit)) {
573 writingSystems.setSupported(QFontDatabase::Thai);
577 if (codePageRange[0] & (1 << VietnameseCsbBit)) {
578 writingSystems.setSupported(QFontDatabase::Vietnamese);
582 if (codePageRange[0] & (1 << SimplifiedChineseCsbBit)) {
583 writingSystems.setSupported(QFontDatabase::SimplifiedChinese);
587 if (codePageRange[0] & (1 << TraditionalChineseCsbBit)) {
588 writingSystems.setSupported(QFontDatabase::TraditionalChinese);
592 if (codePageRange[0] & (1 << JapaneseCsbBit)) {
593 writingSystems.setSupported(QFontDatabase::Japanese);
597 if (codePageRange[0] & ((1 << KoreanCsbBit) | (1 << KoreanJohabCsbBit))) {
598 writingSystems.setSupported(QFontDatabase::Korean);
602 if (codePageRange[0] & (1U << SymbolCsbBit)) {
603 writingSystems = QSupportedWritingSystems();
608 writingSystems.setSupported(QFontDatabase::Symbol);
610 return writingSystems;