From: Sean Whitton <spwhitton@spwhitton.name>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 52888@debbugs.gnu.org
Subject: bug#52888: 29.0.50; font_{delete_unmatched,score} do not handle nil FONT_WEIGHT_INDEX
Date: Thu, 06 Jan 2022 11:10:12 -0700 [thread overview]
Message-ID: <87pmp4d9bv.fsf@melete.silentflame.com> (raw)
In-Reply-To: <83a6g982tt.fsf@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 366 bytes --]
Hello,
On Thu 06 Jan 2022 at 02:29PM +02, Eli Zaretskii wrote:
> OK, but (a) we need a comment there explaining why FC_VARIABLE is used
> as the condition, and (b) we'd also need to merge the temporary fix in
> font.c to master.
Here's an updated patch. I don't think I can help with (b) but let me
know if there's something I can do.
Thanks!
--
Sean Whitton
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v3-0001-Skip-virtual-FcPattern-entries-for-variable-weigh.patch --]
[-- Type: text/x-patch, Size: 2029 bytes --]
From 8f2c3b969af77e707429ac4a51fa439831c5d075 Mon Sep 17 00:00:00 2001
From: Sean Whitton <spwhitton@spwhitton.name>
Date: Tue, 4 Jan 2022 19:07:29 -0700
Subject: [PATCH v3] Skip virtual FcPattern entries for variable weight fonts
* src/ftfont.c (ftfont_list): Pass FC_VARIABLE to FcObjectSetBuild.
* src/ftfont.c (ftfont_pattern_entity): Skip meta/virtual FcPattern
entries for variable weight fonts (Bug#52888).
---
src/ftfont.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/src/ftfont.c b/src/ftfont.c
index 2bdcce306b..5797300d23 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -189,6 +189,24 @@ ftfont_pattern_entity (FcPattern *p, Lisp_Object extra)
return Qnil;
if (FcPatternGetInteger (p, FC_INDEX, 0, &idx) != FcResultMatch)
return Qnil;
+#ifdef FC_VARIABLE
+ /* This is a virtual/meta FcPattern for a variable weight font, from
+ which it is possible to extract an FcRange value specifying the
+ minimum and maximum weights available in this file. We don't
+ need to know that information explicitly, so skip it. We will be
+ called with an FcPattern for each actually available, non-virtual
+ weight.
+
+ Fontconfig started generating virtual/meta patterns for variable
+ weight fonts in the same release that FC_VARIABLE was added, so
+ we conditionalize on that constant. This also ensures that
+ FcPatternGetRange is available. */
+ FcRange *range;
+ if (FcPatternGetRange (p, FC_WEIGHT, 0, &range) == FcResultMatch
+ && FcPatternGetBool (p, FC_VARIABLE, 0, &b) == FcResultMatch
+ && b == FcTrue)
+ return Qnil;
+#endif /* FC_VARIABLE */
file = (char *) str;
key = Fcons (build_unibyte_string (file), make_fixnum (idx));
@@ -863,6 +881,9 @@ ftfont_list (struct frame *f, Lisp_Object spec)
#if defined HAVE_XFT && defined FC_COLOR
FC_COLOR,
#endif
+#ifdef FC_VARIABLE
+ FC_VARIABLE,
+#endif /* FC_VARIABLE */
NULL);
if (! objset)
goto err;
--
2.30.2
next prev parent reply other threads:[~2022-01-06 18:10 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-30 5:28 bug#52888: 29.0.50; font_{delete_unmatched,score} do not handle nil FONT_WEIGHT_INDEX Sean Whitton
2021-12-30 7:33 ` Eli Zaretskii
2021-12-30 17:13 ` Sean Whitton
2021-12-30 18:39 ` Eli Zaretskii
2022-01-01 0:30 ` Sean Whitton
2022-01-01 2:35 ` Sean Whitton
2022-01-01 7:15 ` Eli Zaretskii
2022-01-01 22:31 ` Sean Whitton
2022-01-03 2:04 ` Sean Whitton
2022-01-05 2:10 ` Sean Whitton
2022-01-05 12:37 ` Eli Zaretskii
2022-01-05 13:55 ` Robert Pluim
2022-01-05 14:08 ` Eli Zaretskii
2022-01-06 5:41 ` Sean Whitton
2022-01-06 12:29 ` Eli Zaretskii
2022-01-06 18:10 ` Sean Whitton [this message]
2022-01-12 14:56 ` Eli Zaretskii
2022-01-12 21:41 ` Sean Whitton
2022-01-13 6:52 ` Eli Zaretskii
2022-01-01 6:56 ` Eli Zaretskii
[not found] ` <87pmpbm8j2.fsf@melete.silentflame.com>
[not found] ` <83v8z2eizk.fsf@gnu.org>
[not found] ` <87pmp9wyo3.fsf@melete.silentflame.com>
[not found] ` <83r19pc8ax.fsf@gnu.org>
[not found] ` <87v8yzb1v7.fsf@melete.silentflame.com>
[not found] ` <83v8yy9ybv.fsf@gnu.org>
2022-01-06 18:20 ` bug#53058: etc/DEBUG could say more about --enable-check-lisp-object-type Sean Whitton
2022-01-06 20:11 ` Eli Zaretskii
2022-01-06 23:46 ` Sean Whitton
2022-01-07 6:58 ` Eli Zaretskii
2022-01-07 20:41 ` Sean Whitton
2022-01-08 6:55 ` Eli Zaretskii
2022-02-03 0:19 ` Sean Whitton
2022-02-03 7:28 ` Eli Zaretskii
2022-01-13 11:54 ` bug#52888: André Silva
2022-01-13 16:40 ` bug#52888: Eli Zaretskii
[not found] ` <CANfyKeBjec0z2c33Fph1=ESr-4ACH0BNKXq_wW-Vtr6sEfJ_VA@mail.gmail.com>
2022-01-13 18:13 ` bug#52888: Eli Zaretskii
[not found] ` <CANfyKeD2-sP4tO0dH0rbjbyD+rR+ahiDgBn+Pnx89EG1iKqiYg@mail.gmail.com>
2022-01-13 19:49 ` bug#52888: Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87pmp4d9bv.fsf@melete.silentflame.com \
--to=spwhitton@spwhitton.name \
--cc=52888@debbugs.gnu.org \
--cc=eliz@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).