• Eli Zaretskii's avatar
    Add HarfBuzz font backend for MS-Windows · fba3687d
    Eli Zaretskii authored
    * 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.
    fba3687d
Name
Last commit
Last update
admin Loading commit data...
build-aux Loading commit data...
doc Loading commit data...
etc Loading commit data...
leim Loading commit data...
lib Loading commit data...
lib-src Loading commit data...
lisp Loading commit data...
lwlib Loading commit data...
m4 Loading commit data...
modules Loading commit data...
msdos Loading commit data...
nextstep Loading commit data...
nt Loading commit data...
oldXMenu Loading commit data...
src Loading commit data...
test Loading commit data...
.clang-format Loading commit data...
.dir-locals.el Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gitlab-ci.yml Loading commit data...
BUGS Loading commit data...
CONTRIBUTE Loading commit data...
COPYING Loading commit data...
ChangeLog.1 Loading commit data...
ChangeLog.2 Loading commit data...
ChangeLog.3 Loading commit data...
GNUmakefile Loading commit data...
INSTALL Loading commit data...
INSTALL.REPO Loading commit data...
Makefile.in Loading commit data...
README Loading commit data...
autogen.sh Loading commit data...
config.bat Loading commit data...
configure.ac Loading commit data...
make-dist Loading commit data...