Control: forwarded -1 https://bugs.freedesktop.org/show_bug.cgi?id=105415 Control: tags -1 + fixed-upstream patch
On 2018-04-14 10:25 +0200, Sven Joachim wrote: > Package: libfontconfig1 > Version: 2.13.0-4 > Severity: normal > > After upgrading the fontconfig packages from 2.12.6-0.1, my window > manager (icewm) does no longer show window titles and menus in bold, > despite being configured to do so. > > This is the font which I have specified for window titles: > > ,---- > | $ fc-match "DejaVu Sans:size=10:bold" > | DejaVuSans.ttf: "DejaVu Sans" "Book" > `---- > > In 2.12.6, fc-match's output is different: > > ,---- > | $ fc-match "DejaVu Sans:size=10:bold" > | DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold" > `---- > > Very likely this is the same problem as > https://bugs.freedesktop.org/show_bug.cgi?id=105415, although they had > the opposite problem there, getting a bold font unexpectedly. I will > cherry-pick the upstream fixes for that bug and rebuild fontconfig to > see if they help. Alright, that worked. :-) Attached are the two patches I cherry-picked, taken from upstream commits 198358dd8ff8 and 4699406a6832.
>From 198358dd8ff858c9e36531a7406ccb2246ae77b7 Mon Sep 17 00:00:00 2001 From: Akira TAGOH <ak...@tagoh.org> Date: Mon, 12 Mar 2018 11:49:58 +0900 Subject: [PATCH 1/3] Allow the constant names in the range https://bugs.freedesktop.org/show_bug.cgi?id=105415 --- src/fcname.c | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/fcname.c b/src/fcname.c index 79e413e..15fb659 100644 --- a/src/fcname.c +++ b/src/fcname.c @@ -330,13 +330,37 @@ FcNameConvert (FcType type, FcChar8 *string) case FcTypeRange: if (sscanf ((char *) string, "[%lg %lg]", &b, &e) != 2) { - v.u.d = strtod ((char *) string, &p); - if (p != NULL && p[0] != 0) + char *sc, *ec; + size_t len = strlen ((const char *) string); + int si, ei; + + sc = malloc (len); + ec = malloc (len); + if (sc && ec && sscanf ((char *) string, "[%s %[^]]]", sc, ec) == 2) { - v.type = FcTypeVoid; - break; + if (FcNameConstant ((const FcChar8 *) sc, &si) && + FcNameConstant ((const FcChar8 *) ec, &ei)) + v.u.r = FcRangeCreateDouble (si, ei); + else + goto bail1; + } + else + { + bail1: + v.type = FcTypeDouble; + if (FcNameConstant (string, &si)) + { + v.u.d = (double) si; + } else { + v.u.d = strtod ((char *) string, &p); + if (p != NULL && p[0] != 0) + v.type = FcTypeVoid; + } } - v.type = FcTypeDouble; + if (sc) + free (sc); + if (ec) + free (ec); } else v.u.r = FcRangeCreateDouble (b, e); -- 2.17.0
>From 4699406a68321179b14fae7412f828e2f37a7033 Mon Sep 17 00:00:00 2001 From: Akira TAGOH <ak...@tagoh.org> Date: Wed, 14 Mar 2018 18:31:30 +0900 Subject: [PATCH 3/3] Add the value of the constant name to the implicit object in the pattern For objects which has been changed the object type to FcTypeRange. https://bugs.freedesktop.org/show_bug.cgi?id=105415 --- src/fcname.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/fcname.c b/src/fcname.c index 15fb659..c9320ae 100644 --- a/src/fcname.c +++ b/src/fcname.c @@ -490,6 +490,10 @@ FcNameParse (const FcChar8 *name) if (!FcPatternAddBool (pat, c->object, c->value)) goto bail2; break; + case FcTypeRange: + if (!FcPatternAddInteger (pat, c->object, c->value)) + goto bail2; + break; default: break; } -- 2.17.0