aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Fix text shaping of precomposed characters with HarfBuzzEli Zaretskii2019-06-131-1/+11
| | | | | | | | * src/hbfont.c (hbfont_shape): Fix setting TO of lglyph for the case when Lisp shape-gstring function performed some compositions by itself. This happens with hebrew.el. See https://lists.freedesktop.org/archives/harfbuzz/2019-June/007396.html for the details of the problem this solves.
* Merge from origin/emacs-26Glenn Morris2019-06-111-1/+1
|\ | | | | | | | | | | | | | | | | | | 758e9a8 Revert "Don't mark main_thread (Bug#36155)" 1877b7b Don't mark main_thread (Bug#36155) 4904fb3 More quotation fixes (Bug#35885) 4cc4b5d ; * src/keyboard.c (tool_bar_items): Fix a typo. (Bug#36143) b58ecaf Minor copyedits in efaq-w32 48422af Tiny improvement of documentation of major mode conventions 25d44d2 * nt/addpm.c (main): Fix buffer overflow
| * Revert "Don't mark main_thread (Bug#36155)"Andreas Schwab2019-06-101-4/+1
| | | | | | | | This reverts commit 1877b7b4d79b3434379fd5a4abd85906c25df00c.
| * Don't mark main_thread (Bug#36155)Andreas Schwab2019-06-101-1/+4
| | | | | | | | * thread.c (mark_threads_callback): Don't mark main_thread.
| * ; * src/keyboard.c (tool_bar_items): Fix a typo. (Bug#36143)Stefan Kangas2019-06-091-1/+1
| |
* | Fix shaping of Arabic test when the region is extendedEli Zaretskii2019-06-111-1/+39
| | | | | | | | | | | | * src/xdisp.c (compute_stop_pos): Set the limit for searching for changes in text properties such that the limit is never in the middle of composable text. (Bug#28312)
* | * src/editfns.c (Fngettext): Fix typos in docstring.Juanma Barranquero2019-06-101-3/+3
| |
* | Document exporting/printing text with X core fonts to outline images on cairoYAMAMOTO Mitsuharu2019-06-101-2/+7
| | | | | | | | | | * src/xfns.c (Fx_export_frames) [USE_CAIRO]: (Fx_print_frames_dialog) [USE_CAIRO && USE_GTK]: Add notes on x font backend.
* | * src/fns.c (cmpfn_eql): Simplify.Paul Eggert2019-06-091-21/+14
| |
* | Fix int overflow bug in ‘equal’Paul Eggert2019-06-081-2/+1
| | | | | | | | | | * src/fns.c (internal_equal): Fix bug when vector lengths exceed INT_MAX.
* | Tune base64 decodingPaul Eggert2019-06-081-97/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This improves performance of base64-decode-region by about 7.5% on my platform, and gets rid of some macros. * src/fns.c (IS_ASCII, IS_BASE64, IS_BASE64_IGNORABLE) (READ_QUADRUPLET_BYTE): Remove. (base64_value_to_char, base64_char_to_value): Now an array of two arrays. All uses changed. (base64url_value_to_char, base64url_char_to_value): Remove. All uses changed to the other array. (base64_char_to_value): Entries are now of type signed char, not short, since we can assume C99. Use C99 initializers; this is clearer and caters to the (theoretical) possibility of systems that do not use ASCII or do not have 8-bit bytes. Allow any index in the range 0..UCHAR_MAX instead of limiting it to 0..127, so that uses need not check for in-range indexes. Also record padding chars. All uses changed. (base64_decode_1): Always store number of chars in *NCHARS_RETURN, for simplicity. All callers changed. Speed up the byte-fetching.
* | Minor fixes for the last commitsEli Zaretskii2019-06-081-19/+11
| | | | | | | | | | | | | | | | | | | | * src/fns.c (Fbase64url_encode_region) (Fbase64url_encode_string, Fbase64_decode_region) (Fbase64_decode_string): Fix doc strings. (base64_decode_1): Minor stylistic code changes. * doc/lispref/text.texi (Base 64): Fix typos and improve wording of the last committed text.
* | Add support for base64url variant of base-64 encoding/decodingPierre Téchoueyres2019-06-081-29/+137
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement the RFC4648 variant of base64 encoding used by URLs. * doc/lispref/text.texi (base64url-encode-region, base64url-encode-string): Document new functions. (base64-decode-region, base64-decode-string): Document new optional parameter 'base64url' used to use url variant when decoding data. * src/fns.c (base64url-encode-region, base64url-encode-region): New functions to manage url variant. (base64-decode-region, base64-decode-string): Add optional parameter to indicate use of url-variant. (base64_encode_region_1, base64_encode_string_1): Internal functions with extracted code from 'base64_encode_region' and 'base64_encode_string' and optional parameters to manage padding and url variant. (base64-encode-region, base64-encode-string) : Use base64_encode_region_1 and base64_encode_string_1. (base64-encode-1): Add parameters to manage padding and url variant. (base64-decode-1): Add parameter to manage url variant. * test/src/fns-tests.el (fns-tests--with-region): New helper macro to test region variant of base64 encode / decode functions. (fns-tests--string-repeat): Helper function used in base64 tests. (fns-tests-base64-encode-region, fns-tests-base64-encode-string): Tests for standard base64 function. (fns-test-base64url-encode-region, fns-test-base64url-encode-string): Tests for url variant. (fns-tests-base64-decode-string): Tests for decoding part.
* | Support X core font driver on cairo (Bug#28236)YAMAMOTO Mitsuharu2019-06-083-84/+261
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * configure.ac (HAVE_X_WINDOWS): Add xfont.o to FONT_OBJ if HAVE_CAIRO. * doc/lispref/frames.texi (Font and Color Parameters): Mention X core font driver with Cairo drawing. * src/font.c (syms_of_font) [HAVE_X_WINDOWS && USE_CAIRO]: Call syms_of_xfont. * src/xfns.c (x_create_tip_frame) [USE_CAIRO]: Register xfont_driver. * src/xterm.c (x_cr_gc_clip) [USE_CAIRO]: New function extracted from x_begin_cr_clip. (x_begin_cr_clip) [USE_CAIRO]: Use it. (xlib_surface_key, saved_drawable_key) [USE_CAIRO]: New variables. (x_cr_destroy_xlib_surface, x_try_cr_xlib_drawable) (x_end_cr_xlib_drawable) [USE_CAIRO]: New functions. (x_draw_composite_glyph_string_foreground) (x_draw_glyph_string_foreground) [USE_CAIRO]: Get Xlib surface when drawing text with X core fonts into bitmap surfaces. Add fallback code for drawing into outline surfaces.
* | Implement native image rotation and cropping on cairoYAMAMOTO Mitsuharu2019-06-084-46/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/dispextern.h (struct image) [USE_CAIRO]: * src/image.c (free_image, image_clear_image_1) (image_set_crop, image_set_size, image_set_rotation) (image_create_x_image_and_pixmap) [USE_CAIRO]: #ifdef out HAVE_XRENDER part. * src/image.c (cr_create_surface_from_pix_containers) [USE_CAIRO]: Rename from cr_create_surface_from_pix_containers. Change arguments to pair of Emacs_Pix_Container:s. Move block_input and unblock_input to caller. (cr_put_image_to_cr_data) [USE_CAIRO]: New function. (prepare_image_for_display) [USE_CAIRO]: Use it. (image_set_transform) [USE_CAIRO]: Create dummy solid color pattern equipped with transformation matrix and set it to img->cr_data. * src/xterm.c (fringe_bmp) [USE_CAIRO]: Change type to cairo_pattern_t **. (x_cr_define_fringe_bitmap, x_cr_destroy_fringe_bitmap) [USE_CAIRO]: Create or destroy cairo pattern. (x_cr_draw_image) [USE_CAIRO]: Remove arguments image_width and image_height. Change type of image to cairo pattern. All callers changed. * src/gtkutil.c (xg_get_image_for_pixmap) [USE_CAIRO]: Get cairo surface from img->cr_data, which is of cairo pattern now.
* | Fix commentary about fixnums and hashes.Paul Eggert2019-06-072-24/+18
| |
* | Fix minor ssize_t / ptrdiff_t confusionPaul Eggert2019-06-071-1/+2
| | | | | | | | | | * src/fileio.c (Fcopy_file): This limit is because of ssize_t, so use TYPE_MAXIMUM (ssize_t) not PTRDIFF_MAX.
* | Use machine pointer width for face hashesPaul Eggert2019-06-072-9/+7
| | | | | | | | | | | | | | * src/dispextern.h (struct face): * src/xfaces.c (hash_string_case_insensitive, lface_hash) (cache_face, lookup_face): Use uintptr_t for face hashes instead of discarding the upper pointer bits on 64-bit machines.
* | Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacsEli Zaretskii2019-06-071-2/+6
|\ \
| * \ Merge from origin/emacs-26Glenn Morris2019-06-071-2/+6
| |\ \ | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9254885 (origin/emacs-26) Resurrect display-line-number-mode in clien... aecbbd5 * src/fns.c (Fmapconcat): Doc fix. (Bug#35710) 8e5fc38 Fix typo ee21b40 * lisp/term/w32-win.el ([noname]): Bind to 'ignore'. (Bug#36... f68b33f Fix styling of Unicode codepoints in manuals ff7ec6f Fix a few uses of quotes in user manual b67042b More minor copyedits in the Emacs manual 9734b5c Fix minor issues in the Emacs manual c153250 Try to improve text on atomic windows in Elisp manual fb314ba Don't recommend insert-before-markers in process filters
| | * * src/fns.c (Fmapconcat): Doc fix. (Bug#35710)Eli Zaretskii2019-06-071-2/+6
| | |
* | | Merge remote-tracking branch 'origin/harfbuzz'Eli Zaretskii2019-06-0721-139/+1357
|\ \ \ | |/ / |/| |
| * | ; * src/hbfont.c (hbfont_shape): Fix a typo in a comment.Eli Zaretskii2019-06-021-1/+1
| | |
| * | Implement the get_variation_glyphs method for FreeType >= 2.3.6YAMAMOTO Mitsuharu2019-06-024-10/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * configure.ac: Check availability of FT_Face_GetCharVariantIndex. * src/ftfont.c (ftfont_variation_glyphs) [HAVE_FT_FACE_GETCHARVARIANTINDEX]: Add function implementation. * src/ftcrfont.c (ftcrfont_variation_glyphs) [HAVE_FT_FACE_GETCHARVARIANTINDEX]: Use function implementation for HAVE_OTF_GET_VARIATION_GLYPHS. * src/ftfont.c (ftfont_driver) [HAVE_FT_FACE_GETCHARVARIANTINDEX]: * src/xftfont.c (xftfont_driver) [HAVE_FT_FACE_GETCHARVARIANTINDEX]: * src/ftxfont.c (ftxfont_driver) [HAVE_FT_FACE_GETCHARVARIANTINDEX]: * src/ftcrfont.c (ftcrfont_driver) [HAVE_FT_FACE_GETCHARVARIANTINDEX]: Populate the get_variation_glyphs method.
| * | Revert previous commitYAMAMOTO Mitsuharu2019-06-024-30/+10
| | | | | | | | | | | | | | | This reverts commit 1ab69630dcb8c7a1b1b4171211a7c8ebf11b0d1c. It has a wrong commit message.
| * | Make fthbfont and derivatives use common HarfBuzz code in hbfont.cYAMAMOTO Mitsuharu2019-06-024-10/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/font.h (fthbfont_shape, fthbfont_combining_capability) [HAVE_HARFBUZZ]: Remove prototypes. * src/ftfont.c: Don't include math.h. (uni_combining, uni_general, uni_mirroring, get_hb_unicode_funcs) (fthbfont_shape_by_hb, fthbfont_combining_capability, fthbfont_shape) [HAVE_HARFBUZZ]: Remove functions. * src/ftfont.c (syms_of_ftfont_for_pdumper) [HAVE_HARFBUZZ]: * src/xftfont.c (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]: * src/ftcrfont.c (syms_of_ftcrfont_for_pdumper) [HAVE_HARFBUZZ]: Use hbfont_shape and hbfont_combining_capability for fthbfont_shape and fthbfont_combining_capability, respectively.
| * | Make fthbfont and derivatives use common HarfBuzz code in hbfont.cYAMAMOTO Mitsuharu2019-06-024-299/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/font.h (fthbfont_shape, fthbfont_combining_capability) [HAVE_HARFBUZZ]: Remove prototypes. * src/ftfont.c: Don't include math.h. (uni_combining, uni_general, uni_mirroring, get_hb_unicode_funcs) (fthbfont_shape_by_hb, fthbfont_combining_capability, fthbfont_shape) [HAVE_HARFBUZZ]: Remove functions. * src/ftfont.c (syms_of_ftfont_for_pdumper) [HAVE_HARFBUZZ]: * src/xftfont.c (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]: * src/ftcrfont.c (syms_of_ftcrfont_for_pdumper) [HAVE_HARFBUZZ]: Use hbfont_shape and hbfont_combining_capability instead of fthbfont_shape and fthbfont_combining_capability, respectively.
| * | ; src/w32uniscribe.c: Remove redundant include of math.h.Eli Zaretskii2019-06-011-1/+0
| | |
| * | Port hbfont.c to GCC 9 with --enable-gcc-warningsPaul Eggert2019-06-011-3/+3
| | | | | | | | | | | | | | | | | | * src/hbfont.c (hbfont_shape): Use ptrdiff_t, not int, for indexes that in theory might overflow int. Add UNINIT to pacify GCC 9 and omit an unnecessary initialization.
| * | ; * src/font.c (Ffont_variation_glyphs): Doc fix.Eli Zaretskii2019-06-011-3/+3
| | |
| * | Implement the get_variation_glyphs method for HarfBuzz on MS-WindowsEli Zaretskii2019-06-011-1/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/w32uniscribe.c [HAVE_HARFBUZZ]: DEF_DLL_FN hb_font_get_variation_glyph. (hb_font_get_variation_glyph): New redirection macro. (w32hb_get_variation_glyphs): New function. (load_harfbuzz_funcs): Load hb_font_get_variation_glyph. (syms_of_w32uniscribe_for_pdumper): Populate the get_variation_glyphs method of harfbuzz_font_driver.
| * | ; * src/hbfont.c: Fix commentary.Eli Zaretskii2019-06-011-3/+1
| | |
| * | Prefer HarfBuzz to Uniscribe on MS-WindowsEli Zaretskii2019-06-011-4/+72
| | | | | | | | | | | | | | | | | | | | | * src/w32fns.c (Fx_create_frame, w32_create_tip_frame): Register the Uniscribe font backend only if HarfBuzz is not available, or if explicitly requested via frame parameters or resources.
| * | Move common HarfBuzz code to a common file hbfont.cEli Zaretskii2019-06-015-426/+499
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/hbfont.c: New file, with code moved from w32uniscribe.c and renamed/modified as appropriate. * src/w32uniscribe.c: Move to hbfont.c DEF_DLL_FN and macro definitions for HarfBuzz functions used in hbfont.c (load_harfbuzz_funcs): Move loading of HarfBuzz functions used by hbfont.c to hbfont.c:hbfont_init_w32_funcs, and call that function from here. (syms_of_w32uniscribe_for_pdumper): Fill the 'shape' and 'combining_capability' members with hbfont.c function names. * src/w32common.h (hbfont_init_w32_funcs) [HAVE_HARFBUZZ]: Add prototype. * src/font.h (hbfont_shape, hbfont_combining_capability) [HAVE_HARFBUZZ]: Add prototypes. * src/Makefile.in (SOME_MACHINE_OBJECTS): Add hbfont.o. * configure.ac (FONT_OBJ): Add hbfont.o if HAVE_HARFBUZZ.
| * | Fix handling of -xrm on MS-Windows broken by recent commitsEli Zaretskii2019-05-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | * src/w32reg.c (w32_get_string_resource): The argument V_RDB is a 'char **', not a 'char *'. This fixes -xrm handling on MS-Windows, broken by conversion of x_get_string_resource to terminal-specific hook. (cherry picked from commit 833097cbc4856001ae77b33365faf09c1b3c30e3)
| * | Unbreak display of characters on MS-WindowsEli Zaretskii2019-05-311-3/+15
| | | | | | | | | | | | | | | | | | | | | * src/w32font.c (w32font_draw): Convert the glyph_string's char2b array to 16-bit WCHAR data that ExtTextOutW needs. (cherry picked from commit 38564f8a664347c42f7614d9c91e0d49e4a073e8)
| * | Add HarfBuzz font backend for MS-WindowsEli Zaretskii2019-05-316-31/+740
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
| * | Merge branch 'master' into harfbuzzYAMAMOTO Mitsuharu2019-05-2369-2457/+2445
| |\ \
| * | | * src/xfns.c (x_create_tip_frame): Register font drivers as in normal frames.YAMAMOTO Mitsuharu2019-05-111-1/+7
| | | |
| * | | Fix last changes in src/ftfont.cYAMAMOTO Mitsuharu2019-05-051-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | * src/ftfont.c (ftfont_shape): Add missing argument direction. (fthbfont_shape) [HAVE_HARFBUZZ]: Remove unused variable ftfont_info. (fthbfont_driver) [HAVE_HARFBUZZ]: Remove redundant redeclaration.
| * | | Add new font backend drivers for text shaping by HarfBuzzYAMAMOTO Mitsuharu2019-05-056-101/+274
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * etc/NEWS: Mention new font backend drivers xfthb and ftcrhb. * src/font.h [HAVE_HARFBUZZ]: Include hb.h. (struct font_driver) [HAVE_HARFBUZZ]: New members begin_hb_font and end_hb_font. (ftfont_match, ftfont_list): Remove externs. (ftfont_match2, ftfont_list2): (fthbfont_combining_capability, fthbfont_begin_hb_font) (fthbfont_shape) [HAVE_HARFBUZZ]: (xfthbfont_driver) [HAVE_XFT && HAVE_HARFBUZZ]: (ftcrhbfont_driver) [USE_CAIRO && HAVE_HARFBUZZ]: Add externs. * src/ftcrfont.c (ftcrfont_list): Use ftfont_list2. (ftcrfont_match): Use ftfont_match2. (ftcrfont_open): Get font type from entity. (ftcrfont_open) [HAVE_HARFBUZZ]: Use HarfBuzz version of driver if specified. (ftcrfont_shape) [HAVE_HARFBUZZ]: Make shaping fail. (ftcrhbfont_list, ftcrhbfont_match) (ftcrhbfont_begin_hb_font) [HAVE_HARFBUZZ]: New functions. (ftcrhbfont_driver) [HAVE_HARFBUZZ]: New variable. (syms_of_ftcrfont_for_pdumper) [HAVE_HARFBUZZ]: Initialize and register it. (syms_of_ftcrfont) [HAVE_HARFBUZZ]: New symbol Qftcrhb. * src/ftfont.c: Include math.h for lround. (fthbfont_driver) [HAVE_HARFBUZZ]: New variable. (ftfont_get_hb_font) [HAVE_HARFBUZZ]: Remove function. (ftfont_list, ftfont_match): Make static. (ftfont_list2, ftfont_match2): New functions. (ftfont_open2) [HAVE_HARFBUZZ]: Use HarfBuzz version of driver if specified. (ftfont_open): Get font type from entity. (ftfont_shape, ftfont_combining_capability, ftfont_driver) [HAVE_HARFBUZZ]: Move HarfBuzz specific part from here ... (fthbfont_shape, fthbfont_combining_capability) (fthbfont_driver) [HAVE_HARFBUZZ]: ... to here. New functions and variable. (fthbfont_begin_hb_font) [HAVE_HARFBUZZ]: New function. (fthbfont_shape_by_hb) [HAVE_HARFBUZZ]: Rename from ftfont_shape_by_hb. Don't take FreeType specific arguments ft_face and matrix. Use begin_hb_font and end_hb_font font driver functions. Use text_extents font driver functions instead of ftfont_glyph_metrics. (syms_of_ftfont) [HAVE_HARFBUZZ]: New symbol Qfreetypehb. (syms_of_ftfont_for_pdumper) [HAVE_HARFBUZZ]: Initialize and register fthbfont_drivert. * src/ftxfont.c (ftxfont_list): Use ftfont_list2. (ftxfont_match): Use ftfont_match2. (ftxfont_driver) [HAVE_HARFBUZZ]: Don't initialize shape member explicitly. * src/xfns.c (Fx_create_frame) [USE_CAIRO && HAVE_HARFBUZZ]: (Fx_create_frame) [HAVE_XFT && HAVE_HARFBUZZ]: Register HarfBuzz versions of font drivers. * src/xftfont.c (xftfont_list): Use ftfont_list2. (xftfont_match): Use ftfont_match2. (xftfont_open): Get font type from entity. (xftfont_open) [HAVE_HARFBUZZ]: Use HarfBuzz version of driver if specified. (xftfont_shape) [HAVE_HARFBUZZ]: Make shaping fail. (xfthbfont_list, xfthbfont_match, xfthbfont_begin_hb_font) (xfthbfont_end_hb_font) [HAVE_HARFBUZZ]: New functions. (xftfont_driver) [HAVE_HARFBUZZ]: Don't initialize shape member explicitly. (xfthbfont_driver) [HAVE_HARFBUZZ]: New variable. (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]: Initialize and register it. (syms_of_xftfont) [HAVE_HARFBUZZ]: New symbol Qxfthb.
| * | | Fix NS buildYAMAMOTO Mitsuharu2019-05-021-2/+2
| | | | | | | | | | | | | | | | | | | | * src/macfont.m: Fix prototype of macfont_shape. (mac_font_shape): Fix type of 5th argument.
| * | | Merge branch 'master' into harfbuzzYAMAMOTO Mitsuharu2019-04-27231-7693/+16093
| |\ \ \
| * | | | Unify three font info structuresRobert Pluim2019-02-084-115/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/ftfont.h (struct font_info): New type, unifies similar types from ftcrfont.c, ftfont.c and xftfont.c * src/xftfont.c (struct xftfont_info): Remove, replace with struct font_info. Adjust all uses. * src/ftcrfont.c (struct ftcrfont_info): Likewise. * src/ftfont.c (struct ftfont_info): Likewise. (cherry picked from commit 9e0d69b5a17a0fa3b0dd099a51584a85f3ddb5bf)
| * | | | Always set explicit HarfBuzz buffer directionKhaled Hosny2019-01-051-8/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If no direction was given by the caller, I assume the text will be drawn left to right, if this is not the case then callers must provide sensible direction. Letting HarfBuzz guess the direction is not appropriate since shaping and drawing must use the same direction. Also move hb_buffer_guess_segment_properties() call to the end, so it only guessing unset properties, until we completely get rid of it.
| * | | | We need the bidi level not the paragraph directionKhaled Hosny2019-01-053-10/+10
| | | | |
| * | | | ; Fix last change in src /composite.c.Eli Zaretskii2019-01-021-4/+4
| | | | |
| * | | | Fix text direction of the HarfBuzz shaping bufferEli Zaretskii2019-01-024-8/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/indent.c (scan_for_column, compute_motion): * src/xdisp.c (CHAR_COMPOSED_P): Pass PDIR argument to composition_reseat_it. * src/composite.c (composition_reseat_it): Accept an additional argument PDIR that provides the current paragraph's base direction; all callers changed. Use PDIR to fix calculation of the DIRECTION argument to autocmp_chars. (Bug#33944) * src/composite.h: Include dispextern.h. (composition_reseat_it): Update prototype.
| * | | | Provide text directionality and language to HarfBuzz shaperEli Zaretskii2018-12-297-36/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/language/tv-util.el (tai-viet-composition-function): * lisp/language/ethio-util.el (ethio-composition-function): * lisp/language/japanese.el (compose-gstring-for-variation-glyph): * lisp/language/thai-util.el (thai-composition-function): * lisp/language/misc-lang.el (arabic-shape-gstring): * lisp/language/lao-util.el (lao-composition-function): * lisp/language/hebrew.el (hebrew-shape-gstring): * lisp/composite.el (compose-gstring-for-graphic) (compose-gstring-for-dotted-circle, auto-compose-chars) (compose-gstring-for-terminal): Accept 2nd argument DIRECTION; all callers changed. * src/composite.c (composition_reseat_it): Call auto-composition-function with one more argument DIRECTION. (syms_of_composite) <auto-composition-function>: Update the doc string. * src/ftfont.c (ftfont_shape_by_hb): Compute language and direction, and set buffer properties accordingly. * src/composite.c (autocmp_chars): * src/w32uniscribe.c (uniscribe_shape): * src/xftfont.c (xftfont_shape): * src/ftfont.c (ftfont_shape, ftfont_shape_by_hb): * src/font.c (Ffont_shape_gstring): Accept an additional argument DIRECTION. * src/macfont.m (lgstring_direction): New enum. (mac_font_shape_1, mac_screen_font_shape, mac_font_shape): Accept an additional argument specifying text direction. All callers changed. * src/font.c (syms_of_font): New symbols QL2R and QR2L. * src/font.h (shape): Accept new argument DIRECTION. All implementations changed. (Bug#33729) (ftfont_shape): Update prototype.
| * | | | Clarify one FIXME a bitKhaled Hosny2018-12-241-2/+2
| | | | |