Subject: bug#71766: closed (Re: bug#71766: 30.0.60; HarfBuzz is not used in the Cygwin-w32 build)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 25 Jun 2024 15:38:02 +0000

Your bug report

#71766: 30.0.60; HarfBuzz is not used in the Cygwin-w32 build

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
71766: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=71766
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#71766: 30.0.60; HarfBuzz is not used in the Cygwin-w32 build
From: Ken Brown <[email-masked]>
To: Eli Zaretskii <[email-masked]>
Cc: [email-masked]
Date: Tue, 25 Jun 2024 11:36:43 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

On 6/24/2024 10:34 PM, Eli Zaretskii wrote:
>> Date: Mon, 24 Jun 2024 21:18:31 -0400
>> From: Ken Brown <[email-masked]>
>>
>> The HarfBuzz library is hard-coded as libharfbuzz-0.dll in
>> w32uniscribe.c, but this is only valid on MS-Windows.  On Cygwin the
>> library is cygharfbuzz-0.dll.  As a result, HarfBuzz is not used in the
>> Cygwin-w32 build.  The obvious fix is
> 
> Please install this on the emacs-30 branch if it's all that is needed.

Done.

>> Before pushing this, I'd like to test it, but I don't know enough about
>> HarfBuzz to do that.  Can someone tell me how to test that HarfBuzz is
>> actually being used as intended?  All I've done so far is to start emacs
>> and note that the display looks reasonable.
> 
> Type "C-u C-x =" on some character, it should tell you what is the
> backend (at the beginning of the font name).  I would also use "C-h h"
> to compare the display with another configuration where you know
> HarfBuzz is being used.

Thanks, it looks good.  Closing.

Ken

Subject: 30.0.60; HarfBuzz is not used in the Cygwin-w32 build
From: Ken Brown <[email-masked]>
To: [email-masked]
Date: Mon, 24 Jun 2024 21:18:31 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

The HarfBuzz library is hard-coded as libharfbuzz-0.dll in 
w32uniscribe.c, but this is only valid on MS-Windows.  On Cygwin the 
library is cygharfbuzz-0.dll.  As a result, HarfBuzz is not used in the 
Cygwin-w32 build.  The obvious fix is

diff --git a/src/w32uniscribe.c b/src/w32uniscribe.c
index b3112912c767..dacd6dd766ed 100644
--- a/src/w32uniscribe.c
+++ b/src/w32uniscribe.c
@@ -1527,12 +1527,17 @@ syms_of_w32uniscribe_for_pdumper (void)
      uniscribe_new_apis = false;

  #ifdef HAVE_HARFBUZZ
-  /* Currently, HarfBuzz DLLs are always named libharfbuzz-0.dll, as
+  /* Currently, HarfBuzz DLLs are always named libharfbuzz-0.dll on
+     MS-Windows and cygharfbuzz-0.dll on Cygwin, as
       the project keeps the ABI backward-compatible.  So we can
       hard-code the name of the library here, for now.  If they ever
       break ABI compatibility, we may need to load the DLL that
       corresponds to the HarfBuzz version for which Emacs was built.  */
+# ifdef WINDOWSNT
    HMODULE harfbuzz = LoadLibrary ("libharfbuzz-0.dll");
+# else /* CYGWIN */
+  HMODULE harfbuzz = LoadLibrary ("cygharfbuzz-0.dll");
+# endif /* CYGWIN */
    /* Don't register if HarfBuzz is not available.  */
    if (!harfbuzz)
      return;

Before pushing this, I'd like to test it, but I don't know enough about 
HarfBuzz to do that.  Can someone tell me how to test that HarfBuzz is 
actually being used as intended?  All I've done so far is to start emacs 
and note that the display looks reasonable.

Ken

P.S. I had a problem sending this email the first time I tried.  I 
apologize in advance if I ended up sending it twice.