summaryrefslogtreecommitdiff
path: root/doc/emacs/msdos.texi
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2019-05-31 11:30:36 +0300
committerEli Zaretskii <eliz@gnu.org>2019-05-31 11:30:36 +0300
commitfba3687db414306da780d1faeb13fe947d2e6da6 (patch)
tree5518fa631be611f8534bc67ed0a9140788a39650 /doc/emacs/msdos.texi
parentb40dde705af4d53853de6185a2468153b442dc9a (diff)
downloademacs-fba3687db414306da780d1faeb13fe947d2e6da6.tar.gz
Add HarfBuzz font backend for MS-Windows
* src/w32uniscribe.c [HAVE_HARFBUZZ]: Include math.h and hb.h. (bswap_32): Define for GCC 4.3.0 and later; else include <byteswap.h> from Gnulib. (struct uniscribe_font_info): Extend for HarfBuzz; 'cache' is now a 'void *' (all users changed). [HAVE_HARFBUZZ]: Define typedefs for HarfBuzz functions to be loaded dynamically from the HarfBuzz DLL. Define macros to call those functions via function pointers. (uniscribe_open) [HAVE_HARFBUZZ]: Use the HarfBuzz font driver if the type of the font entity is 'harfbuzz'. (uniscribe_close) [HAVE_HARFBUZZ]: For fonts using the HarfBuzz backend, call hb_font_destroy to free memory used for the cached hb_font data. (uniscribe_shape): Fix assignment of character codepoints to glyphs from a single cluster. (w32hb_list, w32hb_match, free_cb, w32hb_get_font_table) (w32hb_get_font, w32hb_encode_char, w32hb_begin_font) (w32uni_combining, w32uni_general, w32uni_mirroring) (get_hb_unicode_funcs, w32hb_shape) (w32hb_combining_capability, load_harfbuzz_funcs) [HAVE_HARFBUZZ]: New functions. (syms_of_w32uniscribe_for_pdumper) [HAVE_HARFBUZZ]: Load the HarfBuzz DLL and register the HarfBuzz backend with its functions. * src/w32font.c (syms_of_w32font) <Qharfbuzz>: New DEFSYM. * src/w32fns.c (Fx_create_frame, w32_create_tip_frame) [HAVE_HARFBUZZ]: Register the harfbuzz font backend. * src/lisp.h (get_unicode_property): Declare prototype. * src/font.h (harfbuzz_font_driver) [HAVE_NTGUI]: Declare. * src/chartab.c (get_unicode_property): New function, body taken from get-unicode-property-internal. (Fget_unicode_property_internal): Call get_unicode_property after validating input. * doc/lispref/frames.texi (Font and Color Parameters): * doc/emacs/msdos.texi (Windows Fonts): Document support for HarfBuzz text shaping on MS-Windows. * configure.ac (HAVE_HARFBUZZ): Move out of the X-specific part, and consider HarfBuzz also for HAVE_W32 systems. Require HarfBuzz v1.2.3 for w32.
Diffstat (limited to 'doc/emacs/msdos.texi')
-rw-r--r--doc/emacs/msdos.texi37
1 files changed, 22 insertions, 15 deletions
diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi
index 9fc4b6262fb..27a7cd80968 100644
--- a/doc/emacs/msdos.texi
+++ b/doc/emacs/msdos.texi
@@ -985,21 +985,28 @@ fontconfig library used in modern Free desktops:
The old XLFD based format is also supported for backwards compatibility.
@cindex font backend selection (MS-Windows)
- Emacs 23 and later supports a number of font backends. Currently,
-the @code{gdi} and @code{uniscribe} backends are supported on Windows.
-The @code{gdi} font backend is available on all versions of Windows,
-and supports all fonts that are natively supported by Windows. The
-@code{uniscribe} font backend is available on Windows 2000 and later,
-and supports TrueType and OpenType fonts. Some languages requiring
-complex layout can only be properly supported by the Uniscribe
-backend. By default, both backends are enabled if supported, with
-@code{uniscribe} taking priority over @code{gdi}. To override that
-and use the GDI backend even if Uniscribe is available, invoke Emacs
-with the @kbd{-xrm Emacs.fontBackend:gdi} command-line argument, or
-add a @code{Emacs.fontBackend} resource with the value @code{gdi} in
-the Registry under either the
-@samp{HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs} or the
-@samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs} key (@pxref{Resources}).
+ Emacs on MS-Windows supports a number of font backends. Currently,
+the @code{gdi}, @code{uniscribe}, and @code{harfbuzz} backends are
+available. The @code{gdi} font backend is available on all versions
+of Windows, and supports all fonts that are natively supported by
+Windows. The @code{uniscribe} font backend is available on Windows
+2000 and later, and supports TrueType and OpenType fonts. The
+@code{harfbuzz} font backend is available if Emacs was built with
+HarfBuzz support, and if the HarfBuzz DLL is installed on your system;
+like @code{uniscribe}, this backend supports only TrueType and
+OpenType fonts. Some languages requiring complex layout can only be
+properly supported by the Uniscribe or HarfBuzz backends. By default,
+all backends are enabled if supported, with @code{harfbuzz} taking
+priority over @code{uniscribe}, and @code{uniscribe} taking priority
+over @code{gdi}. To override that and use the GDI backend even if
+Uniscribe is available, invoke Emacs with the @kbd{-xrm
+Emacs.fontBackend:gdi} command-line argument, or add a
+@code{Emacs.fontBackend} resource with the value @code{gdi} in the
+Registry under either the @samp{HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs}
+or the @samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs} key
+(@pxref{Resources}). Similarly, to use the Uniscribe backend even if
+HarfBuzz is available, use @kbd{-xrm Emacs.fontBackend:uniscribe} on
+the command line that invokes Emacs.
@cindex font properties (MS Windows)
@noindent