062fdbdbb9
Add upstream patches: - Fix moc parsing correctly glibc 2.25+ system headers - 0001-Fix-exclusion-of-anonymous-ciphers.patch -- Exclude more ciphers from being used by default - fix-medium-font.diff -- fix bolder fonts in qt4 apps [QTBUG#27301] - fix_assistant_segfault_QTBUG-25324.patch [QTBUG#25324]
106 lines
4.6 KiB
Diff
106 lines
4.6 KiB
Diff
From: Ken VanDine <ken.vandine@canonical.com>
|
|
Description: Default to regular font in X11
|
|
Default to Regular/Normal instead of Medium in QFontDatabase for X11.
|
|
.
|
|
Tweak the buckets so that Medium has preference over Bold when DemiBold
|
|
is requested.
|
|
Bug-Ubuntu: https://launchpad.net/bugs/744812
|
|
Bug: https://bugreports.qt-project.org/browse/QTBUG-27301
|
|
Forwarded: https://codereview.qt-project.org/#change,35591
|
|
Author: Michał Sawicz<michal.sawicz@canonical.com>
|
|
|
|
--- a/src/gui/text/qfontdatabase_x11.cpp
|
|
+++ b/src/gui/text/qfontdatabase_x11.cpp
|
|
@@ -729,10 +729,17 @@
|
|
static int getFCWeight(int fc_weight)
|
|
{
|
|
int qtweight = QFont::Black;
|
|
- if (fc_weight <= (FC_WEIGHT_LIGHT + FC_WEIGHT_MEDIUM) / 2)
|
|
+ if (fc_weight <= (FC_WEIGHT_LIGHT + FC_WEIGHT_REGULAR) / 2)
|
|
qtweight = QFont::Light;
|
|
- else if (fc_weight <= (FC_WEIGHT_MEDIUM + FC_WEIGHT_DEMIBOLD) / 2)
|
|
+ else if (fc_weight <= (FC_WEIGHT_REGULAR + FC_WEIGHT_MEDIUM) / 2)
|
|
qtweight = QFont::Normal;
|
|
+#if 0
|
|
+ // FIXME: Uncomment this when it's safe to expand the Enum to include ::Medium
|
|
+ // Will map Medium to DemiBold via fallthrough for the moment,
|
|
+ // but avoids API/ABI break
|
|
+ else if (fc_weight <= (FC_WEIGHT_MEDIUM + FC_WEIGHT_DEMIBOLD) / 2)
|
|
+ qtweight = QFont::Medium;
|
|
+#endif
|
|
else if (fc_weight <= (FC_WEIGHT_DEMIBOLD + FC_WEIGHT_BOLD) / 2)
|
|
qtweight = QFont::DemiBold;
|
|
else if (fc_weight <= (FC_WEIGHT_BOLD + FC_WEIGHT_BLACK) / 2)
|
|
@@ -772,9 +779,13 @@
|
|
fontDef.styleHint
|
|
*/
|
|
|
|
+ // Default to Regular and thus to the common case. Previous
|
|
+ // versions of Qt requested Medium as default. This is fine until
|
|
+ // a Medium weight is actually provided by a font, and so gets
|
|
+ // promoted to bold fallthrough.
|
|
int weight;
|
|
if (FcPatternGetInteger(pattern, FC_WEIGHT, 0, &weight) != FcResultMatch)
|
|
- weight = FC_WEIGHT_MEDIUM;
|
|
+ weight = FC_WEIGHT_REGULAR;
|
|
fontDef.weight = getFCWeight(weight);
|
|
|
|
int slant;
|
|
@@ -1066,16 +1077,19 @@
|
|
// capitalize(value);
|
|
familyName = QString::fromUtf8((const char *)value);
|
|
slant_value = FC_SLANT_ROMAN;
|
|
- weight_value = FC_WEIGHT_MEDIUM;
|
|
+ weight_value = FC_WEIGHT_REGULAR;
|
|
spacing_value = FC_PROPORTIONAL;
|
|
file_value = 0;
|
|
index_value = 0;
|
|
scalable = FcTrue;
|
|
|
|
+ // Fallthroughs in case a match was not found. In previous
|
|
+ // versions of Qt, Medium was requested from FontConfig,
|
|
+ // leading to a promotion from Medium to Bold.
|
|
if (FcPatternGetInteger (fonts->fonts[i], FC_SLANT, 0, &slant_value) != FcResultMatch)
|
|
slant_value = FC_SLANT_ROMAN;
|
|
if (FcPatternGetInteger (fonts->fonts[i], FC_WEIGHT, 0, &weight_value) != FcResultMatch)
|
|
- weight_value = FC_WEIGHT_MEDIUM;
|
|
+ weight_value = FC_WEIGHT_REGULAR;
|
|
if (FcPatternGetInteger (fonts->fonts[i], FC_SPACING, 0, &spacing_value) != FcResultMatch)
|
|
spacing_value = FC_PROPORTIONAL;
|
|
if (FcPatternGetString (fonts->fonts[i], FC_FILE, 0, &file_value) != FcResultMatch)
|
|
@@ -1487,14 +1501,32 @@
|
|
}
|
|
|
|
int weight_value = FC_WEIGHT_BLACK;
|
|
+ // Default and request Regular font weight if none specified
|
|
+ // Previous versions of Qt default to requesting Medium, even
|
|
+ // though this weight does not typically exist.
|
|
if (request.weight == 0)
|
|
- weight_value = FC_WEIGHT_MEDIUM;
|
|
+ weight_value = FC_WEIGHT_REGULAR;
|
|
else if (request.weight < (QFont::Light + QFont::Normal) / 2)
|
|
weight_value = FC_WEIGHT_LIGHT;
|
|
- else if (request.weight < (QFont::Normal + QFont::DemiBold) / 2)
|
|
+#if 0
|
|
+ // FIXME: Avoid ABI Break; active this full codepath when
|
|
+ // QFont::Medium enum is available in the future
|
|
+ else if (request.weight < (QFont::Normal + QFont::Medium) / 2)
|
|
+ weight_value = FC_WEIGHT_REGULAR;
|
|
+ else if (request.weight < (QFont::Medium + QFont::DemiBold) / 2)
|
|
weight_value = FC_WEIGHT_MEDIUM;
|
|
else if (request.weight < (QFont::DemiBold + QFont::Bold) / 2)
|
|
weight_value = FC_WEIGHT_DEMIBOLD;
|
|
+#else
|
|
+ // For the moment This may still not full-circle correctly; via
|
|
+ // Medium->DemiBold->Bold promotion. However It's hard to do much
|
|
+ // about this without an ABI/API tweak to include the fuller set
|
|
+ // of standard TTF/CSS/FontConfig weights.
|
|
+ else if (request.weight < (QFont::Normal + QFont::DemiBold) / 2)
|
|
+ weight_value = FC_WEIGHT_REGULAR;
|
|
+ else if (request.weight < (QFont::DemiBold + QFont::Bold) / 2)
|
|
+ weight_value = (FC_WEIGHT_MEDIUM + FC_WEIGHT_DEMIBOLD) / 2;
|
|
+#endif
|
|
else if (request.weight < (QFont::Bold + QFont::Black) / 2)
|
|
weight_value = FC_WEIGHT_BOLD;
|
|
FcPatternDel(pattern, FC_WEIGHT);
|