From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Visuwesh Newsgroups: gmane.emacs.bugs Subject: bug#54646: 29.0.50; set-fontset-font and font clipping issues Date: Sun, 03 Apr 2022 16:40:32 +0530 Message-ID: <87v8vqcthz.fsf@gmail.com> References: <875ynuokqt.fsf@gmail.com> <83h77e7as6.fsf@gnu.org> <874k3e79mc.fsf@gmail.com> <83fsmy793g.fsf@gnu.org> <87v8vu5j9k.fsf@gmail.com> <837d8a6wm7.fsf@gnu.org> <87lewqjh41.fsf@gmail.com> <83wnga5ap3.fsf@gnu.org> <87a6d69g46.fsf@gmail.com> <87h77dk3zn.fsf@gmail.com> <87a6d5jyat.fsf@gmail.com> <87wng989ym.fsf@gmail.com> <83ilrt5b1v.fsf@gnu.org> <87h77cetq9.fsf@gmail.com> <831qyg6cyt.fsf@gnu.org> <87czi0eoyx.fsf@gmail.com> <83wng84rf8.fsf@gnu.org> <874k3aede0.fsf@gmail.com> <83y20m32h2.fsf@gnu.org> <87zgl2cvj8.fsf@gmail.com> <83wng630fg.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33271"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) Cc: rpluim@gmail.com, 54646@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Apr 03 13:11:27 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 1nay8k-0008Xe-Gw for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 03 Apr 2022 13:11:26 +0200 Original-Received: from localhost ([::1]:51570 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nay8j-00050K-1L for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 03 Apr 2022 07:11:25 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:46868) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nay8O-0004zr-Hq for bug-gnu-emacs@gnu.org; Sun, 03 Apr 2022 07:11:07 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:53832) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nay8L-0003i8-Qw for bug-gnu-emacs@gnu.org; Sun, 03 Apr 2022 07:11:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nay8L-00059c-Lb for bug-gnu-emacs@gnu.org; Sun, 03 Apr 2022 07:11:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Visuwesh Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 Apr 2022 11:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 54646 X-GNU-PR-Package: emacs Original-Received: via spool by 54646-submit@debbugs.gnu.org id=B54646.164898426019805 (code B ref 54646); Sun, 03 Apr 2022 11:11:01 +0000 Original-Received: (at 54646) by debbugs.gnu.org; 3 Apr 2022 11:11:00 +0000 Original-Received: from localhost ([127.0.0.1]:47729 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nay8K-00059N-Hy for submit@debbugs.gnu.org; Sun, 03 Apr 2022 07:11:00 -0400 Original-Received: from mail-pj1-f68.google.com ([209.85.216.68]:46787) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nay8I-000599-EK for 54646@debbugs.gnu.org; Sun, 03 Apr 2022 07:10:59 -0400 Original-Received: by mail-pj1-f68.google.com with SMTP id j20-20020a17090ae61400b001ca9553d073so363792pjy.5 for <54646@debbugs.gnu.org>; Sun, 03 Apr 2022 04:10:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=NNJR6b6N4G6Riqs/32DmjLyzxDGOWl/uxzALcXateo8=; b=erky/41a08ImawcYUzo7I2Mfc58fkQO+pBcd703LSVVXtFTM2kuz7jcqdOXDmRUrqG QaGmXhAdWQTCTsDNU5sMjiDbww3V/W48GLLMROHzgH/HFUwaV/K1RanU0eXPG0tAzL3z yC103Kzt+UhMWvEfjtr4RYv18bTwwk6JT3jahsUvZgxAI37b3NJrAtCVQoP8A2iLIQOH wF5zsxZXWwHGUpGj1g+g0fyIGQxzidC5kkd78N33OPfCuLTg5/B2bUUvDmifWzN90Kb2 VzMsS2/PGY3/zVWhQzUs0D61/UHP0bBzoUXQPs5qh6jlQshRGQy5dHcTFobqcnx4r5In usnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=NNJR6b6N4G6Riqs/32DmjLyzxDGOWl/uxzALcXateo8=; b=DOVkXFp+Wojk3sTatU194RLp3h95j4TK0syBVBcKo6N/d/Ueeh+YMXgMhN4+ktp4Yp W5yF9Luzc0+51KEVU860RtsHnCWE2Ftjm3MTZsKJoGcc80uhPHgovSWeSrtMbUom37/e WWgltJXMDz8OLRyPjW1MsdZJhE6ao1msaGPJN0nwHm6d3kL0mRaJXuakPthALKjb6hrs yDHF1wG32baUkjfL1d4JQ40swom1cmsrxdzQDtvsdzy29cyUooI5we12HahjGYNEWmvY UmBFykmnkb7yKi1+JA6jgDdn8dcN3gU/tmbiIxcE4UrUKaGwpppbflLXCk4jb3rYVLxg FH3w== X-Gm-Message-State: AOAM532q/AnNRNr8hvn+GiFn1hUlGgnzdLUr9PXfIHq8E13nUZhuy+RC VaMhjBxjqmBC9+NWaqfX3dA= X-Google-Smtp-Source: ABdhPJzk9zgK3Xtt6EGEbLGsIeb5EhqbWOfEkC3eoA/ZYhLkwI2WXza+LUGnc7ISWr6GQE1dRmJezQ== X-Received: by 2002:a17:902:a502:b0:151:8289:b19 with SMTP id s2-20020a170902a50200b0015182890b19mr18520175plq.149.1648984252515; Sun, 03 Apr 2022 04:10:52 -0700 (PDT) Original-Received: from localhost ([115.240.90.130]) by smtp.gmail.com with ESMTPSA id i187-20020a62c1c4000000b004faafada2ffsm8807771pfg.204.2022.04.03.04.10.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 Apr 2022 04:10:51 -0700 (PDT) In-Reply-To: <83wng630fg.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 03 Apr 2022 13:50:59 +0300") 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:229331 Archived-At: [Sunday April 03, 2022] Eli Zaretskii wrote: >> From: Visuwesh >> Cc: rpluim@gmail.com, 54646@debbugs.gnu.org >> Date: Sun, 03 Apr 2022 15:56:35 +0530 >> >> > The %c format is only good for single-byte characters, which these >> > ones aren't. Please use %x to print them (in hex). >> > >> >> Will do, thanks. >> >> > Also, I think printing everything is too much, and doesn't allow to >> > focus. Please print only when the character's code is one of those >> > involved in the problematic display. >> >> Unfortunately, the characters that are problematic tend to differ from >> each run. Nevertheless, I will hand-pick the problematic characters and >> send it. > > That'd be good. We need a reproducible case to work with. > >> > if (chars[char_idx] == CHAR1 >> > || chars[char_idx] == CHAR2 >> > || chars[char_idx] == CHAR3) >> > printf (... >> > >> > where CHAR1, CHAR2, and CHAR3 are the characters involved in the >> > problematic display, according to "C-u C-x =". >> > >> > May I suggest that you show me the code you add to hbfont.c before you >> > run it? This would avoid unnecessary iterations for you. >> > >> >> Sure, > > This is okay, but please don't forget to add that 'if' condition. I > think the characters involved in the composition, and in addition one > character on each side of those, should be enough. It seems like I did not get my point across: the characters that tend to be rendered problematic differ from each run so I will hand-pick the data for the problematic characters in _that_ run and send it. > > Please show the final code, so that I could then interpret the > print-outs correctly. > > Thanks. Considering the above, it would be diff --git a/src/hbfont.c b/src/hbfont.c index 2721a66120..9351359558 100644 --- a/src/hbfont.c +++ b/src/hbfont.c @@ -490,6 +490,7 @@ hbfont_shape (Lisp_Object lgstring, Lisp_Object direction) : NULL; if (!hb_font) return make_fixnum (0); + printf("position_unit begin_hb_font: %f\n", position_unit); hb_bool_t success = hb_shape_full (hb_font, hb_buffer, NULL, 0, NULL); if (font->driver->end_hb_font) @@ -589,10 +590,17 @@ hbfont_shape (Lisp_Object lgstring, Lisp_Object direction) LGLYPH_SET_RBEARING (lglyph, metrics.rbearing); LGLYPH_SET_ASCENT (lglyph, metrics.ascent); LGLYPH_SET_DESCENT (lglyph, metrics.descent); + printf("lbearing %d rbearing %d width %d ascent %d descent %d\n", + metrics.lbearing, metrics.rbearing, metrics.width, metrics.ascent, metrics.descent); xoff = lround (pos[i].x_offset * position_unit); yoff = - lround (pos[i].y_offset * position_unit); wadjust = lround (pos[i].x_advance * position_unit); + printf("%x %x %x xadvance %d yadvance %d xoffset %d yoffset %d\n", + (chars_idx == 0 ? 1 : chars[char_idx-1]), chars[char_idx], + (chars_idx == glyph_len-1 ? 1 : chars[char_idx+1]), + pos[i].x_advance, pos[i].y_advance, pos[i].x_offset, pos[i].y_offset); + printf("xpos %d yoff %d wadjust %d\n", xoff, yoff, wadjust); if (xoff || yoff || wadjust != metrics.width) LGLYPH_SET_ADJUSTMENT (lglyph, CALLN (Fvector, make_fixnum (xoff),