meson: Support GDI integration

...and supersede the configuration option uniscribe with gdi, as Uniscribe is
tightly tied to GDI.  This means that enabling GDI would also mean enabling
Uniscribe.
diff --git a/meson.build b/meson.build
index 7b6fff4..2143d72 100644
--- a/meson.build
+++ b/meson.build
@@ -212,16 +212,17 @@
   deps += [fontconfig_dep]
 endif
 
-# uniscribe (windows)
-if host_machine.system() == 'windows' and not get_option('uniscribe').disabled()
+# GDI (uniscribe) (windows)
+if host_machine.system() == 'windows' and not get_option('gdi').disabled()
   # TODO: make nicer once we have https://github.com/mesonbuild/meson/issues/3940
   if cpp.has_header('usp10.h') and cpp.has_header('windows.h')
     foreach usplib : ['usp10', 'gdi32', 'rpcrt4']
       deps += [cpp.find_library(usplib, required: true)]
     endforeach
     conf.set('HAVE_UNISCRIBE', 1)
-  elif get_option('uniscribe').enabled()
-    error('uniscribe was enabled explicitly, but some required headers are missing.')
+    conf.set('HAVE_GDI', 1)
+  elif get_option('gdi').enabled()
+    error('gdi was enabled explicitly, but some required headers are missing.')
   endif
 endif
 
diff --git a/meson_options.txt b/meson_options.txt
index e27ee30..a4b845b 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -13,8 +13,8 @@
   description: 'Enable Graphite2 complementary shaper')
 option('freetype', type: 'feature', value: 'auto',
   description: 'Enable freetype interop helpers')
-option('uniscribe', type: 'feature', value: 'disabled',
-  description: 'Enable Uniscribe shaper backend (Windows only)')
+option('gdi', type: 'feature', value: 'disabled',
+  description: 'Enable GDI helpers and Uniscribe shaper backend (Windows only)')
 option('directwrite', type: 'feature', value: 'disabled',
   description: 'Enable DirectWrite shaper backend on Windows (experimental)')
 option('coretext', type: 'feature', value: 'disabled',
diff --git a/src/meson.build b/src/meson.build
index ac26a12..876dca6 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -170,6 +170,11 @@
   hb_headers += hb_ft_headers
 endif
 
+if conf.get('HAVE_GDI', 0) == 1
+  hb_sources += ['hb-gdi.cc']
+  hb_headers += ['hb-gdi.h']
+endif
+
 if conf.get('HAVE_GRAPHITE2', 0) == 1
   hb_sources += hb_graphite2_sources
   hb_headers += hb_graphite2_headers