Fix the score calculation on matching for multiple values.
Enable 11-lcdfilter-default.conf. Resolves: rhbz#1965684
This commit is contained in:
parent
565d0e4aa3
commit
facd7c0903
40
fontconfig-lcdfilter.patch
Normal file
40
fontconfig-lcdfilter.patch
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
From 2b897d4624f015c0f59a9f46925b758adfc79190 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Akira TAGOH <akira@tagoh.org>
|
||||||
|
Date: Mon, 19 Jul 2021 21:03:20 +0900
|
||||||
|
Subject: [PATCH] Enable 11-lcdfilter-default.conf by default
|
||||||
|
|
||||||
|
Some applications needs this enabled by default on non-GNOME desktops.
|
||||||
|
|
||||||
|
reference: https://bugzilla.redhat.com/show_bug.cgi?id=1965684
|
||||||
|
---
|
||||||
|
conf.d/Makefile.am | 1 +
|
||||||
|
conf.d/meson.build | 1 +
|
||||||
|
2 files changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/conf.d/Makefile.am b/conf.d/Makefile.am
|
||||||
|
index 710318c1..43b6e2b9 100644
|
||||||
|
--- a/conf.d/Makefile.am
|
||||||
|
+++ b/conf.d/Makefile.am
|
||||||
|
@@ -32,6 +32,7 @@ DOC_FILES = $(DOC_SOURCES:.in=)
|
||||||
|
CONF_LINKS = \
|
||||||
|
10-hinting-$(PREFERRED_HINTING).conf \
|
||||||
|
10-scale-bitmap-fonts.conf \
|
||||||
|
+ 11-lcdfilter-default.conf \
|
||||||
|
20-unhint-small-vera.conf \
|
||||||
|
30-metric-aliases.conf \
|
||||||
|
40-nonlatin.conf \
|
||||||
|
diff --git a/conf.d/meson.build b/conf.d/meson.build
|
||||||
|
index 2cb144ee..172e2af2 100644
|
||||||
|
--- a/conf.d/meson.build
|
||||||
|
+++ b/conf.d/meson.build
|
||||||
|
@@ -42,6 +42,7 @@ preferred_hinting = 'slight'
|
||||||
|
conf_links = [
|
||||||
|
'10-hinting-@0@.conf'.format(preferred_hinting),
|
||||||
|
'10-scale-bitmap-fonts.conf',
|
||||||
|
+ '11-lcdfilter-default.conf',
|
||||||
|
'20-unhint-small-vera.conf',
|
||||||
|
'30-metric-aliases.conf',
|
||||||
|
'40-nonlatin.conf',
|
||||||
|
--
|
||||||
|
2.32.0
|
||||||
|
|
188
fontconfig-score-fix.patch
Normal file
188
fontconfig-score-fix.patch
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
From 4d43f84188847a6a77f7259f986fb178c52c1ea7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Akira TAGOH <akira@tagoh.org>
|
||||||
|
Date: Thu, 8 Jul 2021 14:21:50 +0900
|
||||||
|
Subject: [PATCH 1/2] Do not set different score to non-string values
|
||||||
|
|
||||||
|
Non-string values in a cache is supposed to choose one from them.
|
||||||
|
Due to the change of da1c9f7a, there was a regression on scoring for
|
||||||
|
matching functions. So reverting the behavior for evaluating non-string
|
||||||
|
values to the previous one.
|
||||||
|
|
||||||
|
Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/286
|
||||||
|
---
|
||||||
|
src/fcmatch.c | 2 +-
|
||||||
|
test/Makefile.am | 1 +
|
||||||
|
test/run-test-conf.sh | 1 +
|
||||||
|
test/test-conf.c | 71 ++++++++++++++++++++++++++--------------
|
||||||
|
test/test-issue-286.json | 35 ++++++++++++++++++++
|
||||||
|
5 files changed, 85 insertions(+), 25 deletions(-)
|
||||||
|
create mode 100644 test/test-issue-286.json
|
||||||
|
|
||||||
|
diff --git a/src/fcmatch.c b/src/fcmatch.c
|
||||||
|
index c88e3aa..fd43cbd 100644
|
||||||
|
--- a/src/fcmatch.c
|
||||||
|
+++ b/src/fcmatch.c
|
||||||
|
@@ -433,7 +433,7 @@ FcCompareValueList (FcObject object,
|
||||||
|
*result = FcResultTypeMismatch;
|
||||||
|
return FcFalse;
|
||||||
|
}
|
||||||
|
- v = v * 1000 + j * 100 + k;
|
||||||
|
+ v = v * 1000 + j * 100 + k * (v2->value.type == FcTypeString ? 1 : 0);
|
||||||
|
if (v < best)
|
||||||
|
{
|
||||||
|
if (bestValue)
|
||||||
|
diff --git a/test/Makefile.am b/test/Makefile.am
|
||||||
|
index aea8724..d07654b 100644
|
||||||
|
--- a/test/Makefile.am
|
||||||
|
+++ b/test/Makefile.am
|
||||||
|
@@ -47,6 +47,7 @@ TESTDATA = \
|
||||||
|
test-45-generic.json \
|
||||||
|
test-60-generic.json \
|
||||||
|
test-90-synthetic.json \
|
||||||
|
+ test-issue-286.json \
|
||||||
|
test-style-match.json \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
diff --git a/test/run-test-conf.sh b/test/run-test-conf.sh
|
||||||
|
index 0c2bd52..bbb56f4 100644
|
||||||
|
--- a/test/run-test-conf.sh
|
||||||
|
+++ b/test/run-test-conf.sh
|
||||||
|
@@ -49,6 +49,7 @@ for i in \
|
||||||
|
$RUNNER $TESTDIR/../conf.d/$i $TESTDIR/$test_json
|
||||||
|
done
|
||||||
|
for i in \
|
||||||
|
+ test-issue-286.json \
|
||||||
|
test-style-match.json \
|
||||||
|
; do
|
||||||
|
echo $RUNNER $TESTDIR/$i ...
|
||||||
|
diff --git a/test/test-conf.c b/test/test-conf.c
|
||||||
|
index e4e9da4..1a52c6e 100644
|
||||||
|
--- a/test/test-conf.c
|
||||||
|
+++ b/test/test-conf.c
|
||||||
|
@@ -207,35 +207,58 @@ build_pattern (json_object *obj)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (type == json_type_double || type == json_type_int) {
|
||||||
|
+ const FcObjectType *fc_o = FcNameGetObjectType (iter.key);
|
||||||
|
double values[4];
|
||||||
|
- if (n != 2 && n != 4) {
|
||||||
|
- fprintf (stderr, "E: array starting with number not range or matrix\n");
|
||||||
|
+
|
||||||
|
+ if (fc_o && fc_o->type == FcTypeDouble) {
|
||||||
|
+ for (i = 0; i < n; i++)
|
||||||
|
+ {
|
||||||
|
+ o = json_object_array_get_idx (iter.val, i);
|
||||||
|
+ type = json_object_get_type (o);
|
||||||
|
+ if (type == json_type_double) {
|
||||||
|
+ v.type = FcTypeDouble;
|
||||||
|
+ v.u.d = json_object_get_double (o);
|
||||||
|
+ } else if (type == json_type_int) {
|
||||||
|
+ v.type = FcTypeInteger;
|
||||||
|
+ v.u.i = json_object_get_int (o);
|
||||||
|
+ } else {
|
||||||
|
+ fprintf (stderr, "E: unable to convert to double\n");
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ FcPatternAdd (pat, iter.key, v, FcTrue);
|
||||||
|
+ v.type = FcTypeVoid;
|
||||||
|
+ }
|
||||||
|
continue;
|
||||||
|
- }
|
||||||
|
- for (i = 0; i < n; i++) {
|
||||||
|
- o = json_object_array_get_idx (iter.val, i);
|
||||||
|
- type = json_object_get_type (o);
|
||||||
|
- if (type != json_type_double && type != json_type_int) {
|
||||||
|
- fprintf (stderr, "E: numeric array entry not a number\n");
|
||||||
|
+ } else {
|
||||||
|
+ if (n != 2 && n != 4) {
|
||||||
|
+ fprintf (stderr, "E: array starting with number not range or matrix\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
- values[i] = json_object_get_double (o);
|
||||||
|
- }
|
||||||
|
- if (n == 2) {
|
||||||
|
- v.type = FcTypeRange;
|
||||||
|
- v.u.r = FcRangeCreateDouble (values[0], values[1]);
|
||||||
|
- if (!v.u.r) {
|
||||||
|
- fprintf (stderr, "E: failed to create range\n");
|
||||||
|
- continue;
|
||||||
|
+ for (i = 0; i < n; i++) {
|
||||||
|
+ o = json_object_array_get_idx (iter.val, i);
|
||||||
|
+ type = json_object_get_type (o);
|
||||||
|
+ if (type != json_type_double && type != json_type_int) {
|
||||||
|
+ fprintf (stderr, "E: numeric array entry not a number\n");
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ values[i] = json_object_get_double (o);
|
||||||
|
+ }
|
||||||
|
+ if (n == 2) {
|
||||||
|
+ v.type = FcTypeRange;
|
||||||
|
+ v.u.r = FcRangeCreateDouble (values[0], values[1]);
|
||||||
|
+ if (!v.u.r) {
|
||||||
|
+ fprintf (stderr, "E: failed to create range\n");
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ destroy_v = FcTrue;
|
||||||
|
+ } else {
|
||||||
|
+ v.type = FcTypeMatrix;
|
||||||
|
+ v.u.m = &matrix;
|
||||||
|
+ matrix.xx = values[0];
|
||||||
|
+ matrix.xy = values[1];
|
||||||
|
+ matrix.yx = values[2];
|
||||||
|
+ matrix.yy = values[3];
|
||||||
|
}
|
||||||
|
- destroy_v = FcTrue;
|
||||||
|
- } else {
|
||||||
|
- v.type = FcTypeMatrix;
|
||||||
|
- v.u.m = &matrix;
|
||||||
|
- matrix.xx = values[0];
|
||||||
|
- matrix.xy = values[1];
|
||||||
|
- matrix.yx = values[2];
|
||||||
|
- matrix.yy = values[3];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fprintf (stderr, "E: array format not recognized\n");
|
||||||
|
diff --git a/test/test-issue-286.json b/test/test-issue-286.json
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..a3199fa
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/test/test-issue-286.json
|
||||||
|
@@ -0,0 +1,35 @@
|
||||||
|
+{
|
||||||
|
+ "fonts": [
|
||||||
|
+ {
|
||||||
|
+ "family": "Foo",
|
||||||
|
+ "style": "Italic",
|
||||||
|
+ "pixelsize": [15, 16, 17, 18],
|
||||||
|
+ "file": "/path/to/Foo-Italic.ttf",
|
||||||
|
+ "fontversion": 133365
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ "family": "Foo",
|
||||||
|
+ "style": "Regular",
|
||||||
|
+ "pixelsize": [11, 12, 13, 14, 15, 16, 17, 18, 22],
|
||||||
|
+ "file": "/path/to/Foo-Regular.ttf",
|
||||||
|
+ "fontversion": 133365
|
||||||
|
+ }
|
||||||
|
+ ],
|
||||||
|
+ "tests": [
|
||||||
|
+ {
|
||||||
|
+ "method": "match",
|
||||||
|
+ "query": {
|
||||||
|
+ "family": "Foo",
|
||||||
|
+ "style": "Regular",
|
||||||
|
+ "pixelsize": 16
|
||||||
|
+ },
|
||||||
|
+ "result": {
|
||||||
|
+ "family": "Foo",
|
||||||
|
+ "style": "Regular",
|
||||||
|
+ "pixelsize": 16,
|
||||||
|
+ "file": "/path/to/Foo-Regular.ttf",
|
||||||
|
+ "fontversion": 133365
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ ]
|
||||||
|
+}
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -5,7 +5,7 @@
|
|||||||
Summary: Font configuration and customization library
|
Summary: Font configuration and customization library
|
||||||
Name: fontconfig
|
Name: fontconfig
|
||||||
Version: 2.13.94
|
Version: 2.13.94
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
# src/ftglue.[ch] is in Public Domain
|
# src/ftglue.[ch] is in Public Domain
|
||||||
# src/fccache.c contains Public Domain code
|
# src/fccache.c contains Public Domain code
|
||||||
# fc-case/CaseFolding.txt is in the UCD
|
# fc-case/CaseFolding.txt is in the UCD
|
||||||
@ -20,6 +20,8 @@ Source2: fc-cache
|
|||||||
Patch0: %{name}-sleep-less.patch
|
Patch0: %{name}-sleep-less.patch
|
||||||
Patch4: %{name}-drop-lang-from-pkgkit-format.patch
|
Patch4: %{name}-drop-lang-from-pkgkit-format.patch
|
||||||
Patch5: %{name}-disable-network-required-test.patch
|
Patch5: %{name}-disable-network-required-test.patch
|
||||||
|
Patch6: %{name}-score-fix.patch
|
||||||
|
Patch7: %{name}-lcdfilter.patch
|
||||||
|
|
||||||
BuildRequires: libxml2-devel
|
BuildRequires: libxml2-devel
|
||||||
BuildRequires: freetype-devel >= %{freetype_version}
|
BuildRequires: freetype-devel >= %{freetype_version}
|
||||||
@ -187,6 +189,11 @@ fi
|
|||||||
%doc fontconfig-devel.txt fontconfig-devel
|
%doc fontconfig-devel.txt fontconfig-devel
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jul 20 2021 Akira TAGOH <tagoh@redhat.com> - 2.13.94-2
|
||||||
|
- Fix the score calculation on matching for multiple values.
|
||||||
|
- Enable 11-lcdfilter-default.conf.
|
||||||
|
Resolves: rhbz#1965684
|
||||||
|
|
||||||
* Thu Jun 29 2021 Akira TAGOH <tagoh@redhat.com> - 2.13.94-1
|
* Thu Jun 29 2021 Akira TAGOH <tagoh@redhat.com> - 2.13.94-1
|
||||||
- New upstream release.
|
- New upstream release.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user