]> git.eshelyaron.com Git - emacs.git/commit
Implement drawing text with DirectWrite on MS-Windows.
authorCecilio Pardo <cpardo@imayhem.com>
Wed, 9 Oct 2024 09:40:28 +0000 (11:40 +0200)
committerEshel Yaron <me@eshelyaron.com>
Sat, 26 Oct 2024 16:45:16 +0000 (18:45 +0200)
commit926e33134e87a38e49ed8f7b74ec4b09e0d776ef
treeae6d6bea953571fd6b7740467093663ca2d142fa
parentfb53f7aee7d8c2607e20cb46f58c79d5ae5ac6fa
Implement drawing text with DirectWrite on MS-Windows.

This adds support for color fonts.
* configure.ac: Add src/w32drite to W32_OBJ.
* src/w32dwrite.c: New file.
(w32-initialize-direct-write): New function, initialize the
DirectWrite library if it is available, and required global
variables.
(w32_use_direct_write): New function, check if DirectWrite
is available and activated by the user.
(w32_dwrite_encode_char): New function, replacement for HarfBuzz's
'encode_char'.
(w32_dwrite_text_extents): New function, replacement for w32font
text_extents.
(w32_dwrite_draw): New function, replacement for w32font draw.
(w32_dwrite_free_cached_face): New function, used in the font
deletion process to also delete DirectWrite data.
(verify_hr): New function, verify COM method results.
(release_com): New function, release a COM object.
(w32-dwrite-available): New function, returns true if DirectWrite
is available.
(w32-dwrite-reinit): New function, reinitialize DirectWrite,
optionally setting some rendering parameters.
* src/w32font.c (w32font_text_extents): If DirectWrite is enabled,
call 'w32_dwrite_text_extents'.
(w32font_draw): If DirectWrite is enabled, call 'w32_dwrite_draw'.
* src/w32uniscribe.c: (w32hb_encode_char): If DirectWrite is enabled,
call 'w32_dwrite_encode_char'.
(syms_of_w32uniscribe_for_pdumper): Initialize DirectWrite.
(uniscribe_close): Free DirectWrite data for the font.

Bug#73730

(cherry picked from commit edf37e811cafa4092b13969613fa83f6e6d69ab3)
configure.ac
etc/NEWS
src/w32dwrite.c [new file with mode: 0644]
src/w32font.c
src/w32font.h
src/w32uniscribe.c