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

From: Ken Brown <[email-masked]>
Date: Mon, 24 Jun 2024 21:18:31 -0400

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.