1. 17 Apr, 2020 1 commit
    • Paul Eggert's avatar
      Prefer more inline functions in character.h · 27d10183
      Paul Eggert authored
      * src/buffer.h (fetch_char_advance, fetch_char_advance_no_check)
      (buf_next_char_len, next_char_len, buf_prev_char_len)
      (prev_char_len, inc_both, dec_both): New inline functions,
      replacing the old character.h macros FETCH_CHAR_ADVANCE,
      FETCH_CHAR_ADVANCE_NO_CHECK, BUF_INC_POS, INC_POS, BUF_DEC_POS,
      DEC_POS, INC_BOTH, DEC_BOTH respectively.  All callers changed.
      These new functions all assume buffer primitives and so need
      to be here rather than in character.h.
      * src/casefiddle.c (make_char_unibyte): New static function,
      replacing the old MAKE_CHAR_UNIBYTE macro.  All callers changed.
      (do_casify_unibyte_string): Use SINGLE_BYTE_CHAR_P instead
      of open-coding it.
      * src/ccl.c (GET_TRANSLATION_TABLE): New static function,
      replacing the old macro of the same name.
      * src/character.c (string_char): Omit 2nd arg.  3rd arg can no
      longer be NULL.  All callers changed.
      * src/character.h (SINGLE_BYTE_CHAR_P): Move up.
      (MAKE_CHAR_UNIBYTE, MAKE_CHAR_MULTIBYTE, PREV_CHAR_BOUNDARY)
      (STRING_CHAR_AND_LENGTH, STRING_CHAR_ADVANCE)
      (FETCH_STRING_CHAR_ADVANCE)
      (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE)
      (FETCH_STRING_CHAR_ADVANCE_NO_CHECK, FETCH_CHAR_ADVANCE)
      (FETCH_CHAR_ADVANCE_NO_CHECK, INC_POS, DEC_POS, INC_BOTH)
      (DEC_BOTH, BUF_INC_POS, BUF_DEC_POS): Remove.
      (make_char_multibyte): New static function, replacing
      the old macro MAKE_CHAR_MULTIBYTE.  All callers changed.
      (CHAR_STRING_ADVANCE): Remove; all callers changed to use
      CHAR_STRING.
      (NEXT_CHAR_BOUNDARY): Remove; it was unused.
      (raw_prev_char_len): New inline function, replacing the
      old PREV_CHAR_BOUNDARY macro.  All callers changed.
      (string_char_and_length): New inline function, replacing the
      old STRING_CHAR_AND_LENGTH macro.  All callers changed.
      (STRING_CHAR): Rewrite in terms of string_char_and_length.
      (string_char_advance): New inline function, replacing the old
      STRING_CHAR_ADVANCE macro.  All callers changed.
      (fetch_string_char_advance): New inline function, replacing the
      old FETCH_STRING_CHAR_ADVANCE macro.  All callers changed.
      (fetch_string_char_as_multibyte_advance): New inline function,
      replacing the old FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE macro.
      All callers changed.
      (fetch_string_char_advance_no_check): New inline function,
      replacing the old FETCH_STRING_CHAR_ADVANCE_NO_CHECK macro.  All
      callers changed.
      * src/regex-emacs.c (HEAD_ADDR_VSTRING): Remove; no longer used.
      * src/syntax.c (scan_lists): Use dec_bytepos instead of
      open-coding it.
      * src/xdisp.c (string_char_and_length): Rename from
      string_char_and_length to avoid name conflict with new function in
      character.h.  All callers changed.
      27d10183
  2. 01 Jan, 2020 1 commit
  3. 03 Dec, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Fix typo in populating otf_capability method for HarfBuzz · 16ce6dbe
      YAMAMOTO Mitsuharu authored
      * src/ftcrfont.c (syms_of_ftcrfont_for_pdumper) [HAVE_HARFBUZZ]:
      * src/ftfont.c (syms_of_ftfont_for_pdumper) [HAVE_HARFBUZZ]:
      * src/w32uniscribe.c (syms_of_w32uniscribe_for_pdumper) [HAVE_HARFBUZZ]:
      * src/xftfont.c (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]: Fix typos.
      16ce6dbe
  4. 09 Jul, 2019 3 commits
    • Mattias Engdegård's avatar
      Rename font_driver member close -> close_font · a9d6ba49
      Mattias Engdegård authored
      * src/alloc.c (cleanup_vector):
      * src/xftfont.c (xftfont_driver):
      * src/xfont.c (xfont_driver):
      * src/nsfont.m (nsfont_driver):
      * src/macfont.m (macfont_driver):
      * src/ftxfont.c (ftxfont_driver):
      * src/ftfont.c (ftfont_driver):
      * src/ftcrfont.c (ftcrfont_driver):
      * src/font.h (struct font_driver):
      * src/font.c (font_clear_cache, font_close_object):
      Rename `close' member to `close_font', to avoid clash with preprocessor
      define of `close' in nt/inc/ms-w32.h and for consistency with `open_font'.
      a9d6ba49
    • Mattias Engdegård's avatar
      Rename font_driver member open -> open_font · ec723406
      Mattias Engdegård authored
      * src/xftfont.c (xftfont_driver):
      * src/xfont.c (xfont_driver):
      * src/nsfont.m (nsfont_driver):
      * src/macfont.m (macfont_driver):
      * src/ftxfont.c (ftxfont_driver):
      * src/ftfont.c (ftfont_driver):
      * src/ftcrfont.c (ftcrfont_driver):
      * src/font.h (struct font_driver):
      * src/font.c (font_open_entity):
      Rename `open' member to `open_font', to avoid clash with preprocessor
      define of `open' in lib/fcntl.h and nt/inc/ms-w32.h.  Remove earlier
      #undef hack.
      ec723406
    • Paul Eggert's avatar
      Avoid some unnecessary stdio.h includes · cebea291
      Paul Eggert authored
      * src/atimer.c, src/callproc.c, src/coding.c, src/dired.c, src/eval.c:
      * src/fringe.c, src/ftcrfont.c, src/ftfont.c, src/ftxfont.c:
      * src/gfilenotify.c, src/indent.c, src/kqueue.c, src/menu.c:
      * src/scroll.c, src/terminal.c, src/unexcoff.c, src/window.c:
      * src/xfont.c, src/xftfont.c:
      Do not include stdio.h since it is unused.
      cebea291
  5. 01 Jul, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Implement the otf_capability method for HarfBuzz · 6cabb698
      YAMAMOTO Mitsuharu authored
      * src/hbfont.c: Include hb-ot.h.
      [HAVE_NTGUI]: Add DEF_DLL_FN and #define for hb_tag_to_string,
      hb_font_get_face, hb_ot_layout_table_get_script_tags,
      hb_ot_layout_table_get_feature_tags, hb_ot_layout_script_get_language_tags,
      and hb_ot_layout_language_get_feature_tags.
      (hbfont_init_w32_funcs) [HAVE_NTGUI]: Add LOAD_DLL_FN for them.
      (hbfont_otf_features, hbfont_otf_capability): New functions.
      
      * src/font.h (hbfont_otf_capability) [HAVE_HARFBUZZ]: Add extern.
      
      * src/ftcrfont.c (syms_of_ftcrfont_for_pdumper) [HAVE_HARFBUZZ]:
      * src/ftfont.c (syms_of_ftfont_for_pdumper) [HAVE_HARFBUZZ]:
      * src/w32uniscribe.c (syms_of_w32uniscribe_for_pdumper) [HAVE_HARFBUZZ]:
      * src/xftfont.c (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]: Populate
      otf_capability method with hbfont_otf_capability.
      6cabb698
  6. 22 Jun, 2019 2 commits
  7. 18 Jun, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Support font driver supersession · 64767008
      YAMAMOTO Mitsuharu authored
      * src/font.c (font_update_drivers): If argument NEW_DRIVERS is t, then don't
      use superseded drivers.
      (syms_of_font) <Qfont_driver_superseded_by>: New DEFSYM.
      
      * src/ftfont.c (syms_of_ftfont) [HAVE_HARFBUZZ]:
      * src/ftcrfont.c (syms_of_ftcrfont) [HAVE_HARFBUZZ]:
      * src/w32font.c (syms_of_w32font) [HAVE_HARFBUZZ]:
      * src/xftfont.c (syms_of_xftfont) [HAVE_HARFBUZZ]: Make Harfbuzz variants
      supersede non-Harfbuzz ones.
      
      * src/w32fns.c (Fx_create_frame, w32_create_tip_frame): Remove font backend
      determination code.
      64767008
  8. 02 Jun, 2019 4 commits
    • YAMAMOTO Mitsuharu's avatar
      Implement the get_variation_glyphs method for FreeType >= 2.3.6 · 295572c6
      YAMAMOTO Mitsuharu authored
      * 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.
      295572c6
    • YAMAMOTO Mitsuharu's avatar
      Revert previous commit · 2ae0c7a4
      YAMAMOTO Mitsuharu authored
      This reverts commit 1ab69630.
      It has a wrong commit message.
      2ae0c7a4
    • YAMAMOTO Mitsuharu's avatar
      Make fthbfont and derivatives use common HarfBuzz code in hbfont.c · 1ab69630
      YAMAMOTO Mitsuharu authored
      * 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.
      1ab69630
    • YAMAMOTO Mitsuharu's avatar
      Make fthbfont and derivatives use common HarfBuzz code in hbfont.c · ab1d5d40
      YAMAMOTO Mitsuharu authored
      * 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.
      ab1d5d40
  9. 23 May, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Make Cairo build obey hint-style font setting (Bug#35781) · 03feb937
      YAMAMOTO Mitsuharu authored
      * src/ftfont.h (ftfont_open2): Remove extern.
      (ftfont_fix_match, ftfont_add_rendering_parameters)
      (ftfont_entity_pattern): Add externs.
      (struct font_info): Remove member bitmap_strike_index.
      (struct font_info) [USE_CAIRO]: Remove member ft_size_draw.  All uses removed.
      Add member bitmap_position_unit.
      
      * src/xftfont.c (xftfont_fix_match, xftfont_add_rendering_parameters): Move
      functions from here ...
      * src/ftfont.c (ftfont_fix_match, ftfont_add_rendering_parameters): ... to
      here.  All uses changed.
      * src/xftfont.c (xftfont_open): Extract FcPattern creation from font entity
      from here ...
      * src/ftfont.c (ftfont_entity_pattern):	... to here.
      * src/xftfont.c (syms_of_xftfont): Move DEFSYMs for Fontconfig's rendering
      parameters from here ...
      * src/ftfont.c (syms_of_ftfont): ... to here.
      
      * src/ftfont.c (ftfont_open, ftfont_open2): Undo introduction of
      bitmap_strike_index.  Merge functions into ftfont_open.
      
      * src/ftcrfont.c (ftcrfont_open): Align code with xftfont_open rather than
      ftfont_open.
      (ftcrfont_close): Likewise.
      (ftcrfont_has_char, ftcrfont_encode_char):
      (ftcrfont_otf_capability) [HAVE_LIBOTF]:
      (ftcrfont_variation_glyphs) [HAVE_OTF_GET_VARIATION_GLYPHS]: New functions.
      (ftcrfont_driver): Register them.
      (ftcrfont_get_bitmap, ftcrfont_anchor_point):
      (ftcrfont_shape) [HAVE_M17N_FLT && HAVE_LIBOTF]: Use bitmap_position_unit
      instead of bitmap_strike_index to screen bitmap fonts.
      (ftcrfont_get_bitmap, ftcrfont_anchor_point):
      (ftcrfont_otf_capability) [HAVE_LIBOTF]:
      (ftcrfont_shape) [HAVE_M17N_FLT && HAVE_LIBOTF]:
      (ftcrfont_variation_glyphs) [HAVE_OTF_GET_VARIATION_GLYPHS]: Temporarily
      assign ftcrfont_info->ft_size and call corresponding ftfont functions.
      (ftcrfont_draw): Don't flush cairo surface when exporting.
      03feb937
  10. 20 May, 2019 2 commits
    • YAMAMOTO Mitsuharu's avatar
    • Alexander Gramiak's avatar
      Replace XChar2b with unsigned in all font backends · a4fe9c70
      Alexander Gramiak authored
      The xfont backend using XChar2b in its API doesn't mean that we should
      use it everywhere else.
      
      * src/dispextern.h (glyph_string):
      * src/ftcrfont.c (ftcrfont_draw):
      * src/ftxfont.c (ftxfont_draw):
      * src/w32term.c (w32_draw_glyphless_glyph_string_foreground):
      * src/xdisp.c (init_glyph_string, get_char_face_and_encoding)
      (get_glyph_face_and_encoding, get_char_glyph_code)
      (fill_gstring_glyph_string, fill_stretch_glyph_string)
      (normal_char_ascent_descent, gui_get_glyph_overhangs)
      (compute_overhangs_and_x, gui_produce_glyphs):
      * src/xfont.c (xfont_get_pcm, xfont_chars_supported, xfont_open)
      (xfont_encode_char, xfont_text_extents, xfont_draw)
      * src/xftfont.c (xftfont_draw):
      * src/xterm.c (x_compute_glyph_string_overhangs)
      (x_draw_glyphless_glyph_string_foreground): Use unsigned over XChar2b.
      
      * src/nsgui.h:
      * src/w32gui.h:
      * src/xterm.h: Remove XChar2b, STORE_XCHAR2B, XCHAR2B_BYTE1, and
      XCHAR2B_BYTE2 typedefs and macros.
      
      * src/font.h (font_driver):
      (ftfont_text_extents)
      * src/ftcrfont.c (ftcrfont_text_extents):
      * src/ftfont.c (ftfont_text_extents):
      * src/macfont.m (macfont_text_extents):
      * src/nsfont.m (nsfont_text_extents):
      * src/w32font.h (w32_font_text_extents):
      * src/font.c (xfont_text_extents):
      * src/xftfont.c (xftfont_text_extents): Make code parameter const.
      a4fe9c70
  11. 14 May, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Avoid artifacts in ftx and ftcr font backend drivers · 9b28a508
      YAMAMOTO Mitsuharu authored
      * src/ftcrfont.c (ftcrfont_open):
      * src/ftfont.c (ftfont_open2): Make font->height equal to sum of font->ascent
      and font->descent.  Respect :minspace property.
      (ftfont_open2): Remove redundant assignment.
      (syms_of_ftfont) <QCminspace>: New DEFSYM.
      9b28a508
  12. 04 May, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Add new font backend drivers for text shaping by HarfBuzz · f208d5ae
      YAMAMOTO Mitsuharu authored
      * 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.
      f208d5ae
  13. 20 Apr, 2019 2 commits
  14. 19 Apr, 2019 2 commits
  15. 18 Apr, 2019 1 commit
  16. 17 Apr, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Use cairo_scaled_font_t object for text drawing and metrics calculation · acec59c9
      YAMAMOTO Mitsuharu authored
      * src/ftfont.h (struct font_info): Replace member cr_font_face of type
      cairo_font_face_t * with cr_scaled_font of type cairo_scaled_font_t *.
      * src/ftcrfont.c: Include math.h for floor, ceiling, and lround.
      (ftcrfont_glyph_extents): Use cairo_scaled_font_glyph_extents.
      (ftcrfont_open): Create cairo_scaled_font_t object and set it to
      cr_scaled_font member of struct font_info.
      (ftcrfont_close): Use cairo_scaled_font_destroy.
      (ftcrfont_draw): Use cairo_set_scaled_font.
      acec59c9
  17. 08 Feb, 2019 2 commits
    • Robert Pluim's avatar
      Unify three font info structures · 015a6e1d
      Robert Pluim authored
      * 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 9e0d69b5)
      015a6e1d
    • Robert Pluim's avatar
      Unify three font info structures · 9e0d69b5
      Robert Pluim authored
      * 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.
      9e0d69b5
  18. 15 Jan, 2019 1 commit
    • Daniel Colascione's avatar
      Add portable dumper · d12e5d00
      Daniel Colascione authored
      Add a new portable dumper as an alternative to unexec.  Use it by default.
      
      * src/dmpstruct.awk: New file.
      * src/doc.c (get_doc_string): use will_dump_p().
      * src/editfns.c (styled_format): silence compiler warning
      with UNINIT.
      * src/emacs-module.c (syms_of_module): staticpro ltv_mark.
      * src/emacs.c (gflags): new variable.
      (init_cmdargs): unwrap
      (string_starts_with_p, find_argument, dump_error_to_string)
      (load_pdump): new functions.
      (main): detect pdumper and --temacs invocation; actually load
      portable dump when detected; set gflags as appropriate; changes to
      init functions throughout to avoid passing explicit
      'initialized' argument.
      * src/eval.c (inhibit_lisp_code): remove unused variable.
      (init_eval_once_for_pdumper): new function.
      (init_eval_once): call it.
      * src/filelock.c: CANNOT_DUMP -> will_dump_p()
      * src/fingerprint-dummy.c: new file
      * src/fingerprint.h: new file
      * src/fns.c: CANNOT_DUMP -> will_dump_p(), etc.
      (weak_hash_tables): remove
      (hashfn_equal, hashfn_eql): un-staticify
      (make_hash_table): set new 'next_weak' hash table field; drop
      global weak_hash_tables logic.
      (copy_hash_table): drop global weak_hash_tables logic.
      (hash_table_rehash): new function.
      (hash_lookup, hash_put, hash_remove_from_table, hash_clear):
      rehash if needed.
      (sweep_weak_table): un-staticify; explain logic; bool-ify.
      (sweep_weak_hash_tables): remove function.
      * src/font.c (syms_of_font): remember pdumper stuff.
      * src/fontset.c (syms_of_fontset): remember pdumper stuff.
      * src/frame.c (make_initial_frame): don't reset Vframe_list.
      (init_frame_once_for_pdumper, init_frame_once): new functions.
      (syms_of_frame): remove redundant staticpro.
      * src/fringe.c (init_fringe_once_for_pdumper): new functin.
      (init_fringe_once): call it.
      * src/ftcrfont.c (syms_of_ftcrfont_for_pdumper): new function.
      (syms_of_ftcrfont): call it.
      * src/ftfont.c (syms_of_ftfont_for_pdumper): new function.
      (syms_of_ftfont): call it.
      * src/ftxont.c (syms_of_ftxfont_for_pdumper): new function.
      (syms_of_ftxfont): call it.
      * src/gmalloc.c: adjust for pdumper througout
      (DUMPED): remove weird custom dumped indicator.
      * src/gnutls.c (syms_of_gnutls): pdumper note for
      gnutls_global_initialized.
      * src/image.c (syms_of_image): add pdumper comment,
      initializer note.
      * src/insdel.c (prepare_to_modify_buffer_1): account
      for buffer contents possibly being in dump image.
      * src/keyboard.c (syms_of_keyboard_for_pdumper): new function.
      (syms_of_keyboard): staticpro more; call pdumper syms function.
      * src/lisp.h: add comments throughout
      (gflags): declare.
      (will_dump_p, will_bootstrap_p, will_dump_with_pdumper_p)
      (dumped_with_pdumper_p, will_dump_with_unexec_p)
      (dumped_with_unexec_p, definitely_will_not_unexec_p): new
      functions.
      (POWER_OF_2, ROUNDUP): move macros.
      (PSEUDOVECTOR_TYPE, PSEUDOVECTOR_TYPEP): take vectorlike header
      pointer instead of vector; constify.
      (Lisp_Hash_Table): add comment about need to rehash on access; add
      comment for next_weak.
      (HASH_KEY, HASH_VALUE, HASH_HASH, HASH_TABLE_SIZE): const-ify.
      (hash_table_rehash): declare.
      (hash_rehash_needed_p, hash_rehash_if_needed): new functions.
      (finalizers, doomed_finalizers): declare extern.
      (SUBR_SECTION_ATTRIBUTE): new macro.
      (staticvec, staticidx): un-static-ify.
      (sweep_weak_hash_tables): remove declaration.
      (sweep_weak_table): declare.
      (hashfn_eql, hashfn_equal): declare.
      (number_finalizers_run): new variable.
      (Vdead): externify when ENABLE_CHECKING.
      (gc_root_type): new enumeration.
      (gc_root_visitor): new struct.
      (visit_static_gc_roots): declare.
      (vectorlike_nbytes): declare.
      (vector_nbytes): define as trivial inline function wrapper for
      vectorlike_nbytes.
      (init_obarray_once): change signature.
      (primary_thread): extern-ify.
      (init_buffer): change signature.
      (init_frame_once): declare.
      * src/lread.c (readevalloop): adjust for new dumped predicates.
      (init_obarray_once): new function.
      (ndefsubr): new variable.
      (defsubr): increment it.
      (load_path_check): adjust for pdumper.
      (load_path_default): use pdumper functions; adjust for
      dump search.
      * src/macfont.m (macfont_init_font_change_handler): avoid
      shadowing global.
      (syms_of_macfont_for_pdumper): new function.
      (syms_of_macfont): call it.
      * src/menu.c (syms_of_menu): staticpro more stuff.
      * src/minibuf.c (Ftry_completion): rehash if needed.
      (init_minibuf_once_for_pdumper): new function.
      (init_minibuf_once): call it.
      * src/nsfont.m (syms_of_nsfns): staticpro more.
      * src/nsfont.m (syms_of_nsfont_for_pdumper): new function.
      (syms_of_nsfont): call it.
      * src/nsterm.m (syms_of_nsfont): remember pdumper stuff.
      * src/pdumper.c: new file.
      * src/pdumper.h: new file.
      * src/process.c (init_process_emacs): use new pdumper functions
      instead of CANNOT_DUMP.
      * src/profiler.c (syms_of_profiler_for_pdumper): new function.
      (syms_of_profiler_for_pdumper): call it.
      * src/search.c (syms_of_search_for_pdumper): new function.
      (syms_of_search_for_pdumper): call it.
      * src/sheap.c (bss_sbrk_did_unexec): remove.
      * src/sheap.h (bss_sbrk_did_unexec): remove.
      * src/syntax.c (syms_of_syntax): don't redundantly staticpro
      re_match_object.
      * src/sysdep.c: use will_dump_with_unexec_p() instead of bss
      hack thing.
      * src/syssignals.h (init_sigsegv): declare.
      * src/systime.h (init_timefns): remove bool from signature.
      * src/textprop.c (syms_of_textprop): move staticpro.
      * src/thread.c (main_thread_p): constify.
      * src/thread.h (main_thread_p): constify.
      * src/timefns.c (init_timefns): remove bool from signature.
      (syms_of_timefns_for_pdumper): new function.
      (syms_of_timefns): call it.
      * src/w32.c: rearrange code.
      * src/w32.h (w32_relocate): declare.
      * src/w32fns.c (syms_of_w32fns): add pdumper note.
      * src/w32font.c (syms_of_w32font_for_pdumper): new function.
      (syms_of_w32font): call it.
      * src/w32heap.c (using_dynamic_heap): new variable.
      (init_heap): use it.
      * src/w32menu.c (syms_of_w32menu): add pdumper note.
      * src/w32proc.c
      (ctrl_c_handler, mainCRTStartup, _start, open_input_file)
      (rva_to_section, close_file_data): move here.
      * src/w32uniscribe.c (syms_of_w32uniscribe_for_pdumper):
      new function.
      (syms_of_w32uniscribe): call it.
      * src/window.c (init_window_once_for_pdumper): new function.
      (init_window_once): call it; staticpro more stuff.
      * src/xfont.c (syms_of_xfont_for_pdumper): new function.
      (syms_of_xfont): call it.
      * src/xftfont.c (syms_of_xftfont_for_pdumper): new function.
      (syms_of_xftfont): call it.
      * src/xmenu.c (syms_of_xmenu_for_pdumper): new function.
      (syms_of_xmenu): call it.
      * src/xselect.c (syms_of_xselect_for_pdumper): new function.
      (syms_of_xselect): call it.
      * src/xsettings.c (syms_of_xsettings): add more pdumper notes.
      * src/term.c (syms_of_xterm): add pdumper note.
      
      * src/dispnew.c (init_faces_initial): new function.
      (init_display_interactive): rename from init_display; use
      will_dump_p instead of !initialized.  Initialize faces early for
      pdumper if needed.
      (init_display): new function.
      (syms_of_display_for_pdumper): new function.
      (syms_of_display): call it.
      
      * src/dbusbind.c (syms_of_dbusbind): Add TODO for bus reset
      on pdumper load.
      
      * src/data.c (Fdefalias): Use will_dump_p
      instead of Vpurify_flag.
      (Fmake_variable_buffer_local): silence compiler warning with -Og
      by making valcontents UNINIT.
      (arith_driver): silence compiler warning with UNINIT.
      
      * src/conf_post.h (ATTRIBUTE_SECTION): new macro.
      
      * src/composite.c (composition_gstring_put_cache): rehash hash
      table if needed.
      
      * src/coding.c (init_coding_once, syms_of_coding): remember
      pdumper stuff.
      
      * src/charset.h (charset_table_size, charset_table_user): declare.
      
      * src/charset.c (charset_table_used, charset_table_size): un-static.
      (init_charset_oncem, syms_of_charset): remember pdumper stuff.
      
      * src/category.c (category_table_version): remove obsolete
      variable.
      
      * src/callint.c (syms_of_callint): staticpro 'preserved_fns'
      (init_callproc): use will_dump_p instead of !CANNOT_DUMP.
      
      * src/bytecode.c (exec_byte_code): rehash table tables if needed
      
      * src/buffer.c (alloc_buffer_text, free_buffer_text): account for
      pdumper
      (init_buffer_once): add TODO; remember stuff for pdumper.
      (init_buffer): don't take initialized argument; adjust
      for pdumper.
      
      * src/atimer.c (init_atimer): initialize subr only if
      !initialized.
      
      * src/alloc.c: (vector_marked_p, set_vector_marked)
      (vectorlike_marked_p, set_vectorlike_marked, cons_marked_p)
      (set_cons_marked, string_marked_p, set_string_marked)
      (symbol_marked_p, set_symbol_marked, interval_marked_p)
      (set_interval_marked): new accessor routines.  Use them
      instead of raw GC access throughout.
      (Vdead): make non-static when ENABLE_CHECKING.
      (vectorlike_nbytes): rename of 'vector_nbytes'; take a vectorlike
      header as input instead of a vector.
      (number_finalizers_run): new internal C variable.
      (mark_maybe_object): check for pdumper objects.
      (valid_pointer_p): don't be gratuitously inefficient under rr(1).
      (make_pure_c_string): add support for size_byte = -2 mode
      indicating that string data points into Emacs image rodata.
      (visit_vectorlike_root): visits GC roots embedded in
      vectorlike objects.
      (visit_buffer_root): visits GC roots embedded in
      our totally-not-a-buffer buffer global objects.
      (visit_static_gc_roots): visit GC roots in the Emacs data section.
      (mark_object_root_visitor): root callback used for conventional GC
      marking
      (weak_hash_tables): new internal variable for tracking found weak
      hash tables during GC.
      (mark_and_sweep_weak_table_contents): new weak hash table marking.
      (garbage_collect_1): use new GC root visitor machinery.
      (mark_vectorlike): accept a vectorlike_header instead of a
      Lisp_Vector.
      (mark_frame, mark_window, mark_hash_table): new functions.
      (mark_object): initialize 'm'; check for pdumper objects and use
      new mark-bit accessors throughout.  Remove some object-specific
      marking code and move to helper functions above.
      (survives_gc_p): check for pdumper objects.
      (gc-sweep): clear pdumper mark bits.
      (init_alloc_once_for_pdumper): new helper function for early init
      called both during normal init and pdumper load.
      (init_alloc_once): pdumper integration.
      
      * src/Makefile.in: Rewrite dumping for pdumper; add pdumper.o;
      invoke temacs with --temacs command line option; build dmpstruct.h
      from dmpstruct.awk; stop relying on CANNOT_DUMP; clean up pdumper
      intermediate files during build.
      
      * nextstep/Makefile.in: build emacs.pdmp into NS packages
      
      * lisp/startup.el: account for new '--temacs' and '--dump-file'
      command line option.
      
      * lisp/loadup.el: rewrite early init to account for pdumper; use
      injected 'dump-mode' variable (set via the new '--temacs' option)
      instead of parsing command line.
      
      * lisp/cus-start.el: Check 'dump-mode' instead of 'purify-flag',
      since the new 'dump-mode'
      
      * lib-src/make-fingerprint.c: new program
      
      * lib-src/Makefile.in: built make-fingerprint utility program
      
      * configure.ac: Add --with-pdumper toggle to control pdumper
      support; add --with-unexec toggle to control unexec support.
      Add --with-dumping option to control which dumping strategy we use
      by default.  Adjust for pdumper throughout.  Check for
      posix_madvise.
      
      * Makefile.in: Add @DUMPING@ substitution; add pdumper mode.
      
      * .gitignore: Add make-fingerprint, temacs.in, fingerprint.c,
      dmpstruct.h, and pdumper dump files.
      d12e5d00
  19. 05 Jan, 2019 1 commit
    • Paul Eggert's avatar
      Improve GC+Cairo workaround · 99e2ad9e
      Paul Eggert authored
      Suggested by Eli Zaretskii (Bug#20890#31).
      * src/font.h (font_data_structures_may_be_ill_formed): New function.
      * src/ftfont.c (ftfont_close):
      * src/ftcrfont.c (ftcrfont_close): Use it.
      
      (cherry picked from commit d02fd482)
      99e2ad9e
  20. 01 Jan, 2019 1 commit
  21. 22 Dec, 2018 1 commit
    • Khaled Hosny's avatar
      Properly fix building with HarfBuzz and without libotf · 47ed5640
      Khaled Hosny authored
      HarfBuzz support does not depend on libotf, the build breakage when
      libotf is missing was because code guarded with:
      
       #if defined HAVE_M17N_FLT && defined HAVE_LIBOTF
      
      was incorrectly changed to:
      
       #if defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ
      
      this is now properly fixed by making it:
      
       #if (defined HAVE_M17N_FLT && defined HAVE_LIBOTF) || defined HAVE_HARFBUZZ
      
      Other changes in previous commits were reverted.
      47ed5640
  22. 17 Dec, 2018 3 commits
  23. 14 Dec, 2018 2 commits
    • Robert Pluim's avatar
      Document font structure layout constraints · f14d5742
      Robert Pluim authored
      The layout of the initial members of ftcrfont_info must match
      ftfont_info
      
      * src/ftcrfont.c (struct ftcrfont_info): Likewise.
      
      * src/ftfont.c (struct ftfont_info): Document layout constraints.
      f14d5742
    • Ari Roponen's avatar
      Fix crash in the Cairo build · 2f721622
      Ari Roponen authored
      * src/ftcrfont.c (struct ftcrfont_info) [HAVE_HARFBUZZ]: New
      member 'hb_font'.  (Bug#33739)
      2f721622
  24. 09 Dec, 2018 1 commit
  25. 08 Aug, 2018 1 commit
    • Tom Tromey's avatar
      More macro renamings for bignum · d1ec3a0a
      Tom Tromey authored
      * src/alloc.c, src/bidi.c, src/buffer.c, src/buffer.h, src/bytecode.c,
      src/callint.c, src/callproc.c, src/casefiddle.c, src/casetab.c,
      src/category.c, src/ccl.c, src/character.c, src/character.h,
      src/charset.c, src/charset.h, src/chartab.c, src/cmds.c, src/coding.c,
      src/composite.c, src/composite.h, src/data.c, src/dbusbind.c,
      src/decompress.c, src/dired.c, src/dispextern.h, src/dispnew.c,
      src/disptab.h, src/doc.c, src/dosfns.c, src/editfns.c,
      src/emacs-module.c, src/emacs.c, src/eval.c, src/fileio.c,
      src/floatfns.c, src/fns.c, src/font.c, src/font.h, src/fontset.c,
      src/frame.c, src/frame.h, src/fringe.c, src/ftcrfont.c, src/ftfont.c,
      src/gfilenotify.c, src/gnutls.c, src/gtkutil.c, src/image.c,
      src/indent.c, src/insdel.c, src/intervals.c, src/json.c,
      src/keyboard.c, src/keymap.c, src/kqueue.c, src/lcms.c, src/lisp.h,
      src/lread.c, src/macros.c, src/marker.c, src/menu.c, src/minibuf.c,
      src/msdos.c, src/print.c, src/process.c, src/profiler.c, src/search.c,
      src/sound.c, src/syntax.c, src/syntax.h, src/sysdep.c, src/term.c,
      src/termhooks.h, src/textprop.c, src/undo.c, src/w32.c,
      src/w32console.c, src/w32fns.c, src/w32font.c, src/w32inevt.c,
      src/w32proc.c, src/w32select.c, src/w32term.c, src/w32term.h,
      src/w32uniscribe.c, src/window.c, src/xdisp.c, src/xfaces.c,
      src/xfns.c, src/xfont.c, src/xftfont.c, src/xmenu.c, src/xml.c,
      src/xrdb.c, src/xselect.c, src/xsettings.c, src/xterm.c, src/xwidget.c
      Rename XINT->XFIXNUM, XFASTINT->XFIXNAT, XUINT->XUFIXNUM.
      d1ec3a0a
  26. 04 Apr, 2018 1 commit
    • Paul Eggert's avatar
      Improve GC+Cairo workaround · d02fd482
      Paul Eggert authored
      Suggested by Eli Zaretskii (Bug#20890#31).
      * src/font.h (font_data_structures_may_be_ill_formed): New function.
      * src/ftfont.c (ftfont_close):
      * src/ftcrfont.c (ftcrfont_close): Use it.
      d02fd482
  27. 01 Jan, 2018 1 commit