From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: Emacs text shaping using Harfbuzz Date: Thu, 13 Dec 2018 10:47:18 -0800 Organization: UCLA Computer Science Department Message-ID: <241e97ba-e547-9184-b798-1692be469740@cs.ucla.edu> References: <83lg4tzba0.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------CDFBE584E36E2E3EA73680C6" X-Trace: blaine.gmane.org 1544727836 18208 195.159.176.226 (13 Dec 2018 19:03:56 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 13 Dec 2018 19:03:56 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.1 Cc: Khaled Hosny , Ebrahim Byagowi , Behdad Esfahbod , John Wiegley , Mohammad Nasirifar , Kenichi Handa To: Eli Zaretskii , emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Dec 13 20:03:51 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gXWH1-0004cc-9F for ged-emacs-devel@m.gmane.org; Thu, 13 Dec 2018 20:03:51 +0100 Original-Received: from localhost ([::1]:54346 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXWJ7-00088e-WA for ged-emacs-devel@m.gmane.org; Thu, 13 Dec 2018 14:06:02 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54717) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXW1B-00006p-SS for emacs-devel@gnu.org; Thu, 13 Dec 2018 13:47:30 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXW1A-0008Sr-Us for emacs-devel@gnu.org; Thu, 13 Dec 2018 13:47:29 -0500 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:34648) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXW16-0007lo-Ow; Thu, 13 Dec 2018 13:47:25 -0500 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 0EBF716091C; Thu, 13 Dec 2018 10:47:20 -0800 (PST) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id Eyo-YzibfkdW; Thu, 13 Dec 2018 10:47:19 -0800 (PST) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 363C516091D; Thu, 13 Dec 2018 10:47:19 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id ouGunfro3_dU; Thu, 13 Dec 2018 10:47:19 -0800 (PST) Original-Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 0EA8F16090F; Thu, 13 Dec 2018 10:47:19 -0800 (PST) Openpgp: preference=signencrypt Autocrypt: addr=eggert@cs.ucla.edu; prefer-encrypt=mutual; keydata= xsFNBEyAcmQBEADAAyH2xoTu7ppG5D3a8FMZEon74dCvc4+q1XA2J2tBy2pwaTqfhpxxdGA9 Jj50UJ3PD4bSUEgN8tLZ0san47l5XTAFLi2456ciSl5m8sKaHlGdt9XmAAtmXqeZVIYX/UFS 96fDzf4xhEmm/y7LbYEPQdUdxu47xA5KhTYp5bltF3WYDz1Ygd7gx07Auwp7iw7eNvnoDTAl KAl8KYDZzbDNCQGEbpY3efZIvPdeI+FWQN4W+kghy+P6au6PrIIhYraeua7XDdb2LS1en3Ss mE3QjqfRqI/A2ue8JMwsvXe/WK38Ezs6x74iTaqI3AFH6ilAhDqpMnd/msSESNFt76DiO1ZK QMr9amVPknjfPmJISqdhgB1DlEdw34sROf6V8mZw0xfqT6PKE46LcFefzs0kbg4GORf8vjG2 Sf1tk5eU8MBiyN/bZ03bKNjNYMpODDQQwuP84kYLkX2wBxxMAhBxwbDVZudzxDZJ1C2VXujC OJVxq2kljBM9ETYuUGqd75AW2LXrLw6+MuIsHFAYAgRr7+KcwDgBAfwhPBYX34nSSiHlmLC+ KaHLeCLF5ZI2vKm3HEeCTtlOg7xZEONgwzL+fdKo+D6SoC8RRxJKs8a3sVfI4t6CnrQzvJbB n6gxdgCu5i29J1QCYrCYvql2UyFPAK+do99/1jOXT4m2836j1wARAQABzSBQYXVsIEVnZ2Vy dCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PsLBfgQTAQIAKAUCTIByZAIbAwUJEswDAAYLCQgHAwIG FQgCCQoLBBYCAwECH In-Reply-To: <83lg4tzba0.fsf@gnu.org> Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:231800 Archived-At: This is a multi-part message in MIME format. --------------CDFBE584E36E2E3EA73680C6 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit The Emacs harfbuzz branch built fine for me on Fedora 29 (no surprise). I saw no problems, not that I would catch many (the Arabic I saw displayed OK to me, but I don't read Arabic so am not the best person to judge). One minor tweak proposed in the attached patch, for simplicity/clarity in the mainstream-Harbuzz code. I see that Harbuzz is disabled by default by 'configure', and that there's an environment variable to disable it at runtime. I propose removing the environment variable, and enabling Harfbuzz by default at 'configure' time (if the Harbuzz libraries are available), as I don't see much point in nudging users away from Harfbuzz. I see there are some FIXMEs and suchlike comments. Will someone be working on them? --------------CDFBE584E36E2E3EA73680C6 Content-Type: text/x-patch; name="hb.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="hb.diff" diff --git a/src/ftfont.c b/src/ftfont.c index a645bbf029..47442df0e5 100644 --- a/src/ftfont.c +++ b/src/ftfont.c @@ -478,28 +478,27 @@ ftfont_get_otf (struct ftfont_info *ftfont_info) #ifdef HAVE_HARFBUZZ -#ifndef HAVE_HB_FT_FONT_CREATE_REFERENCED +# ifndef HAVE_HB_FT_FONT_CREATE_REFERENCED static void ft_face_destroy (void *data) { - FT_Done_Face ((FT_Face) data); + FT_Done_Face (data); } -#endif + +static hb_font_t * +hb_ft_font_create_referenced (FT_Face face) +{ + FT_Reference_Face (face); + return hb_ft_font_create (face, ft_face_destroy); +} +# endif static hb_font_t * ftfont_get_hb_font (struct ftfont_info *ftfont_info) { if (! ftfont_info->hb_font) - { - hb_font_t *hb_font; -#ifdef HAVE_HB_FT_FONT_CREATE_REFERENCED - hb_font = hb_ft_font_create_referenced (ftfont_info->ft_size->face); -#else - FT_Reference_Face (ftfont_info->ft_size->face); - hb_font = hb_ft_font_create (ftfont_info->ft_size->face, ft_face_destroy); -#endif - ftfont_info->hb_font = hb_font; - } + ftfont_info->hb_font + = hb_ft_font_create_referenced (ftfont_info->ft_size->face); return ftfont_info->hb_font; } --------------CDFBE584E36E2E3EA73680C6--