From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Sean Whitton Newsgroups: gmane.emacs.bugs 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 Message-ID: <87pmp4d9bv.fsf@melete.silentflame.com> References: <87czl55skc.fsf@melete.silentflame.com> <83a6g982tt.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="22161"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Notmuch/0.31.4 (https://notmuchmail.org) Emacs/29.0.50 (x86_64-pc-linux-gnu) Cc: 52888@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Jan 06 19:11:34 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n5XEX-0005XE-05 for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 06 Jan 2022 19:11:31 +0100 Original-Received: from localhost ([::1]:36422 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n5XEV-00018c-AN for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 06 Jan 2022 13:11:27 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:57976) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n5XE8-00018L-JL for bug-gnu-emacs@gnu.org; Thu, 06 Jan 2022 13:11:04 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:49225) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1n5XE6-0006qj-0J for bug-gnu-emacs@gnu.org; Thu, 06 Jan 2022 13:11:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1n5XE5-0004Bv-Ps for bug-gnu-emacs@gnu.org; Thu, 06 Jan 2022 13:11:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Sean Whitton Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 06 Jan 2022 18:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52888 X-GNU-PR-Package: emacs Original-Received: via spool by 52888-submit@debbugs.gnu.org id=B52888.164149262315989 (code B ref 52888); Thu, 06 Jan 2022 18:11:01 +0000 Original-Received: (at 52888) by debbugs.gnu.org; 6 Jan 2022 18:10:23 +0000 Original-Received: from localhost ([127.0.0.1]:42128 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1n5XDS-00049o-Rf for submit@debbugs.gnu.org; Thu, 06 Jan 2022 13:10:23 -0500 Original-Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:49961) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1n5XDQ-00049G-IX for 52888@debbugs.gnu.org; Thu, 06 Jan 2022 13:10:21 -0500 Original-Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 8A289320377B; Thu, 6 Jan 2022 13:10:14 -0500 (EST) Original-Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Thu, 06 Jan 2022 13:10:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=spwhitton.name; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=fm2; bh=vo/p55292W/e1P2qgWvP4C1Oii RuuxmM1iG3m6/jzpI=; b=1eWsm8acy8xhojO39A9L2WnmtwSXHBZJW7FspV263Q hR9G8pST5dKulUpGH65TNwufpTspYBn/oXtSFJlj6HGOHXSB/ppcP8gPOXW02gYE PDUJAAnSxTrROVLMEzQwbS5yO0SBSAqRxFnqmThRgeg92hLZazr21nTNdEHYOGIN 2OuR3OzAxOOux0v82MU4YOv7qCXQENN62PHt/m2L5rEDV3B7mz2ZqY/xeSTcclWQ e2Dp9F4pJ9/vPKguh4gIQ4srPO5smSTPZSRFOeyeQfvWqtwf8f1J0JxmcuRl+Gmr WdTOJgIUU5GgqSHgLsm7xFXw/RxQ6jDTKlic8e2Y3AtA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=vo/p55 292W/e1P2qgWvP4C1OiiRuuxmM1iG3m6/jzpI=; b=Rym3Eb4nAXcgsN48O7x+qC OD7kbSzDky/4+nvlCDxKjiVLcMUZgmW0n+pbOg1nxJSw4S9n7oEfdaD9gTn6uFto 7swuopcBMmSQXbYBfIjVMJJvghMMkj5bBBJXfd6g5G/NNks4GTeIoTxi0Cyjh3Dd DPn44SfF20yktNvrulrdiN2lJgOngxAwyd5ynmEPh14P039TczJBiysc3myyIjNY TGk9M0L1myaJQWtaxlGVjG5vvDEivwLTU/FDcGY1w2rIm+lZmXoz+rX2j4Yv2bsW P/aKWCpQWZGZjEBlrjqG6+EVK0DWkNy/k4/mb2SJQvqctL/4aA3k5ZwSGKSjjRlw == X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvuddrudefledguddtkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefhvffujghffgffkfggtgesmhdttdertdertdenucfhrhhomhepufgvrghn ucghhhhithhtohhnuceoshhpfihhihhtthhonhesshhpfihhihhtthhonhdrnhgrmhgvqe enucggtffrrghtthgvrhhnpefgueeutedvkeffgedvveetheejieetvdduvdffheevgfet vdfghfetteffvdevjeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrih hlfhhrohhmpehsphifhhhithhtohhnsehsphifhhhithhtohhnrdhnrghmvg X-ME-Proxy: Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 6 Jan 2022 13:10:13 -0500 (EST) Original-Received: by melete.silentflame.com (Postfix, from userid 1000) id 9BFDF7F973E; Thu, 6 Jan 2022 11:10:12 -0700 (MST) In-Reply-To: <83a6g982tt.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:223742 Archived-At: --=-=-= Content-Type: text/plain 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 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v3-0001-Skip-virtual-FcPattern-entries-for-variable-weigh.patch >From 8f2c3b969af77e707429ac4a51fa439831c5d075 Mon Sep 17 00:00:00 2001 From: Sean Whitton 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 --=-=-=--