Revert "Make unicode ranges in font take precedence over codepage"

This reverts commit 3a84d92f57
because it caused a regression with certain fonts on Windows that
have divided information about writing system support in unicode
ranges and codepage ranges.

The original commit fixed a problem on Android where one
of the fonts had an entry for Arabic in its codepage range but
no glyphs for this script. This issue has been fixed in a different
way now, by 0b87f4f6c9 which makes
fallback fonts work properly, so the commit is no longer needed
to fix said bug.

[ChangeLog][Fonts] Fixed regression in font families returned by
QFontDatabase::families() for certain writing systems.

Task-number: QTBUG-39846
Change-Id: I3077b1e618b21680549abc1734cb6df6e264387e
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
This commit is contained in:
Eskil Abrahamsen Blomfeldt 2014-08-27 15:39:26 +02:00 committed by Eskil Abrahamsen Blomfeldt
parent 1d7408cc8b
commit 75cf14e413

View File

@ -550,60 +550,58 @@ QSupportedWritingSystems QPlatformFontDatabase::writingSystemsFromTrueTypeBits(q
}
}
}
if (!hasScript) {
if (codePageRange[0] & ((1 << Latin1CsbBit) | (1 << CentralEuropeCsbBit) | (1 << TurkishCsbBit) | (1 << BalticCsbBit))) {
writingSystems.setSupported(QFontDatabase::Latin);
hasScript = true;
//qDebug("font %s supports Latin", familyName.latin1());
}
if (codePageRange[0] & (1 << CyrillicCsbBit)) {
writingSystems.setSupported(QFontDatabase::Cyrillic);
hasScript = true;
//qDebug("font %s supports Cyrillic", familyName.latin1());
}
if (codePageRange[0] & (1 << GreekCsbBit)) {
writingSystems.setSupported(QFontDatabase::Greek);
hasScript = true;
//qDebug("font %s supports Greek", familyName.latin1());
}
if (codePageRange[0] & (1 << HebrewCsbBit)) {
writingSystems.setSupported(QFontDatabase::Hebrew);
hasScript = true;
//qDebug("font %s supports Hebrew", familyName.latin1());
}
if (codePageRange[0] & (1 << ArabicCsbBit)) {
writingSystems.setSupported(QFontDatabase::Arabic);
hasScript = true;
//qDebug("font %s supports Arabic", familyName.latin1());
}
if (codePageRange[0] & (1 << VietnameseCsbBit)) {
writingSystems.setSupported(QFontDatabase::Vietnamese);
hasScript = true;
//qDebug("font %s supports Vietnamese", familyName.latin1());
}
if (codePageRange[0] & (1 << SimplifiedChineseCsbBit)) {
writingSystems.setSupported(QFontDatabase::SimplifiedChinese);
hasScript = true;
//qDebug("font %s supports Simplified Chinese", familyName.latin1());
}
if (codePageRange[0] & (1 << TraditionalChineseCsbBit)) {
writingSystems.setSupported(QFontDatabase::TraditionalChinese);
hasScript = true;
//qDebug("font %s supports Traditional Chinese", familyName.latin1());
}
if (codePageRange[0] & (1 << JapaneseCsbBit)) {
writingSystems.setSupported(QFontDatabase::Japanese);
hasScript = true;
//qDebug("font %s supports Japanese", familyName.latin1());
}
if (codePageRange[0] & ((1 << KoreanCsbBit) | (1 << KoreanJohabCsbBit))) {
writingSystems.setSupported(QFontDatabase::Korean);
hasScript = true;
//qDebug("font %s supports Korean", familyName.latin1());
}
if (!hasScript)
writingSystems.setSupported(QFontDatabase::Symbol);
if (codePageRange[0] & ((1 << Latin1CsbBit) | (1 << CentralEuropeCsbBit) | (1 << TurkishCsbBit) | (1 << BalticCsbBit))) {
writingSystems.setSupported(QFontDatabase::Latin);
hasScript = true;
//qDebug("font %s supports Latin", familyName.latin1());
}
if (codePageRange[0] & (1 << CyrillicCsbBit)) {
writingSystems.setSupported(QFontDatabase::Cyrillic);
hasScript = true;
//qDebug("font %s supports Cyrillic", familyName.latin1());
}
if (codePageRange[0] & (1 << GreekCsbBit)) {
writingSystems.setSupported(QFontDatabase::Greek);
hasScript = true;
//qDebug("font %s supports Greek", familyName.latin1());
}
if (codePageRange[0] & (1 << HebrewCsbBit)) {
writingSystems.setSupported(QFontDatabase::Hebrew);
hasScript = true;
//qDebug("font %s supports Hebrew", familyName.latin1());
}
if (codePageRange[0] & (1 << ArabicCsbBit)) {
writingSystems.setSupported(QFontDatabase::Arabic);
hasScript = true;
//qDebug("font %s supports Arabic", familyName.latin1());
}
if (codePageRange[0] & (1 << VietnameseCsbBit)) {
writingSystems.setSupported(QFontDatabase::Vietnamese);
hasScript = true;
//qDebug("font %s supports Vietnamese", familyName.latin1());
}
if (codePageRange[0] & (1 << SimplifiedChineseCsbBit)) {
writingSystems.setSupported(QFontDatabase::SimplifiedChinese);
hasScript = true;
//qDebug("font %s supports Simplified Chinese", familyName.latin1());
}
if (codePageRange[0] & (1 << TraditionalChineseCsbBit)) {
writingSystems.setSupported(QFontDatabase::TraditionalChinese);
hasScript = true;
//qDebug("font %s supports Traditional Chinese", familyName.latin1());
}
if (codePageRange[0] & (1 << JapaneseCsbBit)) {
writingSystems.setSupported(QFontDatabase::Japanese);
hasScript = true;
//qDebug("font %s supports Japanese", familyName.latin1());
}
if (codePageRange[0] & ((1 << KoreanCsbBit) | (1 << KoreanJohabCsbBit))) {
writingSystems.setSupported(QFontDatabase::Korean);
hasScript = true;
//qDebug("font %s supports Korean", familyName.latin1());
}
if (!hasScript)
writingSystems.setSupported(QFontDatabase::Symbol);
return writingSystems;
}