aboutsummaryrefslogtreecommitdiffstats
path: root/doc/lispref
diff options
context:
space:
mode:
authorEli Zaretskii2019-05-31 11:30:36 +0300
committerEli Zaretskii2019-05-31 11:30:36 +0300
commitfba3687db414306da780d1faeb13fe947d2e6da6 (patch)
tree5518fa631be611f8534bc67ed0a9140788a39650 /doc/lispref
parentb40dde705af4d53853de6185a2468153b442dc9a (diff)
downloademacs-fba3687db414306da780d1faeb13fe947d2e6da6.tar.gz
emacs-fba3687db414306da780d1faeb13fe947d2e6da6.zip
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/lispref')
-rw-r--r--doc/lispref/frames.texi27
1 files changed, 15 insertions, 12 deletions
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index c94b4e67aed..336075a1ca2 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -2278,18 +2278,21 @@ variable do not take effect immediately, only when you specify the
2278@vindex font-backend@r{, a frame parameter} 2278@vindex font-backend@r{, a frame parameter}
2279@item font-backend 2279@item font-backend
2280A list of symbols, specifying the @dfn{font backends} to use for 2280A list of symbols, specifying the @dfn{font backends} to use for
2281drawing fonts in the frame, in order of priority. On X, there are 2281drawing characters on the frame, in order of priority. In Emacs built
2282currently three available font backends if Emacs was built without the 2282without Cairo drawing on X, there are currently three available font
2283Cairo drawing: @code{x} (the X core font driver), @code{xft} (the Xft 2283backends: @code{x} (the X core font driver), @code{xft} (the Xft font
2284font driver), and @code{xfthb} (the Xft font driver with HarfBuzz text 2284driver), and @code{xfthb} (the Xft font driver with HarfBuzz text
2285shaping). If built with the Cairo drawing, then there are two 2285shaping). If built with the Cairo drawing, there are two available
2286available font backends: @code{ftcr} (the FreeType font driver on 2286font backends on X: @code{ftcr} (the FreeType font driver on Cairo)
2287Cairo) and @code{ftcrhb} (the FreeType font driver on Cairo with 2287and @code{ftcrhb} (the FreeType font driver on Cairo with HarfBuzz
2288HarfBuzz text shaping). On MS-Windows, there are currently two 2288text shaping). On MS-Windows, there are currently three available
2289available font backends: @code{gdi} and @code{uniscribe} 2289font backends: @code{gdi} (the core MS-Windows font driver),
2290(@pxref{Windows Fonts,,, emacs, The GNU Emacs Manual}). On other 2290@code{uniscribe} (font driver for OTF and TTF fonts with text shaping
2291systems, there is only one available font backend, so it does not make 2291by the Uniscribe engine), and @code{harfbuzz} (font driver for OTF and
2292sense to modify this frame parameter. 2292TTF fonts with HarfBuzz text shaping) (@pxref{Windows Fonts,,, emacs,
2293The GNU Emacs Manual}). On other systems, there is only one available
2294font backend, so it does not make sense to modify this frame
2295parameter.
2293 2296
2294@vindex background-mode@r{, a frame parameter} 2297@vindex background-mode@r{, a frame parameter}
2295@item background-mode 2298@item background-mode