From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Vincent Lefevre Newsgroups: gmane.emacs.bugs Subject: bug#44284: 27.1; with some Unicode font, scrolling upward with the mouse wheel actually scrolls downward when the cursor needs repositioning Date: Sun, 1 Nov 2020 18:32:40 +0100 Message-ID: <20201101173240.GO27593@zira.vinc17.org> References: <20201030203453.GF27593@zira.vinc17.org> <20201030205702.GG27593@zira.vinc17.org> <83y2jn8lqr.fsf@gnu.org> <20201030230035.GH27593@zira.vinc17.org> <20201031004617.GI27593@zira.vinc17.org> <20201031011350.GJ27593@zira.vinc17.org> <83r1pe975u.fsf@gnu.org> <20201031224324.GK27593@zira.vinc17.org> <20201101002430.GL27593@zira.vinc17.org> <83ft5tf3zr.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39344"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/1.14.5+76 (bb407ec3) vl-127292 (2020-06-24) Cc: 44284@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Nov 01 18:33:38 2020 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 1kZHEX-000A1D-FG for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 01 Nov 2020 18:33:37 +0100 Original-Received: from localhost ([::1]:56916 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kZHEW-0000JI-6t for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 01 Nov 2020 12:33:36 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:50376) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kZHDy-0000IN-3A for bug-gnu-emacs@gnu.org; Sun, 01 Nov 2020 12:33:04 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:55070) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kZHDx-0004in-QX for bug-gnu-emacs@gnu.org; Sun, 01 Nov 2020 12:33:01 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kZHDx-0002tQ-Mi for bug-gnu-emacs@gnu.org; Sun, 01 Nov 2020 12:33:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Vincent Lefevre Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 01 Nov 2020 17:33:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 44284 X-GNU-PR-Package: emacs Original-Received: via spool by 44284-submit@debbugs.gnu.org id=B44284.160425196311094 (code B ref 44284); Sun, 01 Nov 2020 17:33:01 +0000 Original-Received: (at 44284) by debbugs.gnu.org; 1 Nov 2020 17:32:43 +0000 Original-Received: from localhost ([127.0.0.1]:38383 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kZHDf-0002sr-3r for submit@debbugs.gnu.org; Sun, 01 Nov 2020 12:32:43 -0500 Original-Received: from joooj.vinc17.net ([155.133.131.76]:57534) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kZHDd-0002sj-Ak for 44284@debbugs.gnu.org; Sun, 01 Nov 2020 12:32:41 -0500 Original-Received: from smtp-zira.vinc17.net (128.119.75.86.rev.sfr.net [86.75.119.128]) by joooj.vinc17.net (Postfix) with ESMTPSA id 687FD3A4; Sun, 1 Nov 2020 18:32:40 +0100 (CET) Original-Received: by zira.vinc17.org (Postfix, from userid 1000) id 244C6C23E7A; Sun, 1 Nov 2020 18:32:40 +0100 (CET) Content-Disposition: inline In-Reply-To: <83ft5tf3zr.fsf@gnu.org> X-Mailer-Info: https://www.vinc17.net/mutt/ 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:192421 Archived-At: On 2020-11-01 18:15:04 +0200, Eli Zaretskii wrote: > Interesting. Once you understand where did the value 12 come from, > perhaps you could see how things are different in a non-Cairo build. It appears that Cairo uses floating point with poor rounding control (see below). I suppose that the non-cairo driver keeps integers. > Let me describe how row->phys_ascent is computed, so that you could > take a closer look. [...] Yes, this is what I've found: The row->phys_ascent comes from function display_line, in the loop generating characters: if (/* Not a newline. */ nglyphs > 0 /* Glyphs produced fit entirely in the line. */ && it->current_x < it->last_visible_x) { [...] row->phys_ascent = max (row->phys_ascent, it->max_phys_ascent); [...] } At the first iteration, row->phys_ascent is changed from 0 to 12. So, it comes from it->max_phys_ascent, which is set to 12 by PRODUCE_GLYPHS (it); earlier in the loop. In this context (X protocol), this macro calls gui_produce_glyphs (defined in xdisp.c). In gui_produce_glyphs, this is case it->what == IT_CHARACTER, with it->char_to_display == 'F'; pcm is true and it->phys_ascent is set to 12 by it->phys_ascent = pcm->ascent + boff; where pcm->ascent = 12 and boff = 0, while for Emacs without cairo, pcm->ascent = 11 (and boff = 0) as expected. With size 14 (with or without cairo), one has pcm->ascent = 12. Thus the issue comes from pcm->ascent. It is set by get_per_char_metric, where char2b = 40. With cairo, it calls function ftcrfont_text_extents (defined in ftcrfont.c), which calls ftcrfont_glyph_extents, which sets metrics->ascent to 12 from the cache. When the cache is filled with cache->ascent = ceil (- extents.y_bearing); extents.y_bearing (whose type is double) is equal to: Font size 13: -0x1.6000000000001p+3 ≈ -11.000000000000002 Font size 14: -0x1.8p+3 = -12 With ceil(), 11.000000000000002 rounds to 12, while the expected value is 11. A rounding issue, as I guessed at https://debbugs.gnu.org/cgi/bugreport.cgi?bug=44284#29 -- Vincent Lefèvre - Web: 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)