* Re: harfbuzz 2f72162: Fix crash in the Cairo build [not found] ` <20181214085418.6616820538@vcs0.savannah.gnu.org> @ 2018-12-14 12:18 ` Robert Pluim 2018-12-14 13:29 ` Eli Zaretskii 0 siblings, 1 reply; 36+ messages in thread From: Robert Pluim @ 2018-12-14 12:18 UTC (permalink / raw) To: emacs-devel; +Cc: Ari Roponen eliz@gnu.org (Eli Zaretskii) writes: > diff --git a/src/ftcrfont.c b/src/ftcrfont.c > index e2f84d4..6d74d93 100644 > --- a/src/ftcrfont.c > +++ b/src/ftcrfont.c > @@ -41,6 +41,9 @@ struct ftcrfont_info > bool maybe_otf; /* Flag to tell if this may be OTF or not. */ > OTF *otf; > #endif /* HAVE_LIBOTF */ > +#ifdef HAVE_HARFBUZZ > + hb_font_t *hb_font; > +#endif /* HAVE_HARFBUZZ */ > FT_Size ft_size; > int index; > FT_Matrix matrix; Eli, what would be your preferred type of solution to avoid this in future? A #define of the common portion of the structs in ftfont.h? An embedded 'struct ft_font_fixed' member inside struct ft{,cr}font_info? Something else? At the very least I propose syncing the comments: diff --git i/src/ftcrfont.c w/src/ftcrfont.c index e2f84d44fc..7d63a344ec 100644 --- i/src/ftcrfont.c +++ w/src/ftcrfont.c @@ -35,12 +35,16 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ struct ftcrfont_info { struct font font; - /* The following six members must be here in this order to be - compatible with struct ftfont_info (in ftfont.c). */ + /* The following members up to and including 'matrix' must be here + in this order to be compatible with struct ftfont_info (in + ftfont.c). */ #ifdef HAVE_LIBOTF bool maybe_otf; /* Flag to tell if this may be OTF or not. */ OTF *otf; #endif /* HAVE_LIBOTF */ +#ifdef HAVE_HARFBUZZ + hb_font_t *hb_font; +#endif /* HAVE_HARFBUZZ */ FT_Size ft_size; int index; FT_Matrix matrix; diff --git i/src/ftfont.c w/src/ftfont.c index a645bbf029..ef4ccab3ec 100644 --- i/src/ftfont.c +++ w/src/ftfont.c @@ -56,8 +56,9 @@ struct ftfont_info { struct font font; #ifdef HAVE_LIBOTF - /* The following four members must be here in this order to be - compatible with struct xftfont_info (in xftfont.c). */ + /* The following members up to and including 'matrix' must be here in + this order to be compatible with struct xftfont_info (in + xftfont.c). */ bool maybe_otf; /* Flag to tell if this may be OTF or not. */ OTF *otf; #endif /* HAVE_LIBOTF */ ^ permalink raw reply related [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-14 12:18 ` harfbuzz 2f72162: Fix crash in the Cairo build Robert Pluim @ 2018-12-14 13:29 ` Eli Zaretskii 2018-12-14 14:09 ` Robert Pluim 2018-12-14 16:16 ` Robert Pluim 0 siblings, 2 replies; 36+ messages in thread From: Eli Zaretskii @ 2018-12-14 13:29 UTC (permalink / raw) To: Robert Pluim; +Cc: ari.roponen, emacs-devel > From: Robert Pluim <rpluim@gmail.com> > Date: Fri, 14 Dec 2018 13:18:41 +0100 > Cc: Ari Roponen <ari.roponen@gmail.com> > > Eli, what would be your preferred type of solution to avoid this in > future? If at all possible, I prefer a single definition of each struct, with as few #ifdef's as possible. If some member is not used in some configuration, I prefer to have it anyway, unless it cannot be compiled in the configuration(s) that don't use it (e.g., because it uses a data type that is only visible in some configurations). > At the very least I propose syncing the comments: Yes, please push. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-14 13:29 ` Eli Zaretskii @ 2018-12-14 14:09 ` Robert Pluim 2018-12-14 16:16 ` Robert Pluim 1 sibling, 0 replies; 36+ messages in thread From: Robert Pluim @ 2018-12-14 14:09 UTC (permalink / raw) To: Eli Zaretskii; +Cc: ari.roponen, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Robert Pluim <rpluim@gmail.com> >> Date: Fri, 14 Dec 2018 13:18:41 +0100 >> Cc: Ari Roponen <ari.roponen@gmail.com> >> >> Eli, what would be your preferred type of solution to avoid this in >> future? > > If at all possible, I prefer a single definition of each struct, with > as few #ifdef's as possible. If some member is not used in some > configuration, I prefer to have it anyway, unless it cannot be > compiled in the configuration(s) that don't use it (e.g., because it > uses a data type that is only visible in some configurations). > This I will do in master. >> At the very least I propose syncing the comments: > > Yes, please push. This I pushed to emacs-26 as f14d5742db Robert ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-14 13:29 ` Eli Zaretskii 2018-12-14 14:09 ` Robert Pluim @ 2018-12-14 16:16 ` Robert Pluim 2018-12-14 16:45 ` Eli Zaretskii 2018-12-14 20:25 ` Stefan Monnier 1 sibling, 2 replies; 36+ messages in thread From: Robert Pluim @ 2018-12-14 16:16 UTC (permalink / raw) To: Eli Zaretskii; +Cc: ari.roponen, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Robert Pluim <rpluim@gmail.com> >> Date: Fri, 14 Dec 2018 13:18:41 +0100 >> Cc: Ari Roponen <ari.roponen@gmail.com> >> >> Eli, what would be your preferred type of solution to avoid this in >> future? > > If at all possible, I prefer a single definition of each struct, with > as few #ifdef's as possible. If some member is not used in some > configuration, I prefer to have it anyway, unless it cannot be > compiled in the configuration(s) that don't use it (e.g., because it > uses a data type that is only visible in some configurations). > Aligning ftfont.c and ftcrfont.c is pretty easy. Did you want me to try to unify xftfont.c in there as well? Iʼm tempted to get rid of ftxfont.c as well, unless someone is actually still using that. [1] Robert Footnotes: [1] How many different font backends can we come up with using only 3 letters? ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-14 16:16 ` Robert Pluim @ 2018-12-14 16:45 ` Eli Zaretskii 2018-12-17 12:41 ` Robert Pluim 2018-12-14 20:25 ` Stefan Monnier 1 sibling, 1 reply; 36+ messages in thread From: Eli Zaretskii @ 2018-12-14 16:45 UTC (permalink / raw) To: Robert Pluim; +Cc: ari.roponen, emacs-devel > From: Robert Pluim <rpluim@gmail.com> > Cc: emacs-devel@gnu.org, ari.roponen@gmail.com > Date: Fri, 14 Dec 2018 17:16:46 +0100 > > Aligning ftfont.c and ftcrfont.c is pretty easy. Did you want me to > try to unify xftfont.c in there as well? If that makes sense, i.e. if the commonality seems to justify that, then yes. > Iʼm tempted to get rid of ftxfont.c as well, unless someone is > actually still using that. [1] I think this is a decision for another time. In any case, we cannot just remove it, we need to deprecate it first. We may declare it deprecated now, and perhaps cause its inclusion to trigger some deprecation message during building Emacs. > [1] How many different font backends can we come up with using only 3 > letters? That calls for a Lisp program, no? Thanks. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-14 16:45 ` Eli Zaretskii @ 2018-12-17 12:41 ` Robert Pluim 2018-12-17 17:39 ` Eli Zaretskii 2018-12-17 21:49 ` Paul Eggert 0 siblings, 2 replies; 36+ messages in thread From: Robert Pluim @ 2018-12-17 12:41 UTC (permalink / raw) To: Eli Zaretskii; +Cc: ari.roponen, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: emacs-devel@gnu.org, ari.roponen@gmail.com >> Date: Fri, 14 Dec 2018 17:16:46 +0100 >> >> Aligning ftfont.c and ftcrfont.c is pretty easy. Did you want me to >> try to unify xftfont.c in there as well? > > If that makes sense, i.e. if the commonality seems to justify that, > then yes. > I had a quick go at this. Iʼve not measured the memory difference, but I can do if people thinks this refactor is worth it. Apart from the unification of the three struct definitions, most of the patch is mechanical changes. src/ftcrfont.c | 41 ++++++----------------------------------- src/ftfont.c | 58 +++++++++++++++++++++++++--------------------------------- src/ftfont.h | 28 +++++++++++++++++++++++++++- src/xftfont.c | 43 +++++++++++-------------------------------- 4 files changed, 69 insertions(+), 101 deletions(-) diff --git i/src/ftcrfont.c w/src/ftcrfont.c index dc1a389c60..3c963e0e71 100644 --- i/src/ftcrfont.c +++ w/src/ftcrfont.c @@ -27,32 +27,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #include "font.h" #include "ftfont.h" -/* FTCR font driver. */ - -/* The actual structure for FTCR font. A pointer to this structure - can be cast to struct font *. */ - -struct ftcrfont_info -{ - struct font font; - /* The following six members must be here in this order to be - compatible with struct ftfont_info (in ftfont.c). */ -#ifdef HAVE_LIBOTF - bool maybe_otf; /* Flag to tell if this may be OTF or not. */ - OTF *otf; -#endif /* HAVE_LIBOTF */ - FT_Size ft_size; - int index; - FT_Matrix matrix; - - cairo_font_face_t *cr_font_face; - /* To prevent cairo from cluttering the activated FT_Size maintained - in ftfont.c, we activate this special FT_Size before drawing. */ - FT_Size ft_size_draw; - /* Font metrics cache. */ - struct font_metrics **metrics; - short metrics_nrows; -}; #define METRICS_NCOLS_PER_ROW (128) @@ -70,7 +44,7 @@ ftcrfont_glyph_extents (struct font *font, unsigned glyph, struct font_metrics *metrics) { - struct ftcrfont_info *ftcrfont_info = (struct ftcrfont_info *) font; + struct font_info *ftcrfont_info = (struct font_info *) font; int row, col; struct font_metrics *cache; @@ -132,7 +106,7 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size) { Lisp_Object font_object; struct font *font; - struct ftcrfont_info *ftcrfont_info; + struct font_info *ftcrfont_info; FT_Face ft_face; FT_UInt size; @@ -140,14 +114,14 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size) size = XFIXNUM (AREF (entity, FONT_SIZE_INDEX)); if (size == 0) size = pixel_size; - font_object = font_build_object (VECSIZE (struct ftcrfont_info), + font_object = font_build_object (VECSIZE (struct font_info), Qftcr, entity, size); font_object = ftfont_open2 (f, entity, pixel_size, font_object); if (NILP (font_object)) return Qnil; font = XFONT_OBJECT (font_object); font->driver = &ftcrfont_driver; - ftcrfont_info = (struct ftcrfont_info *) font; + ftcrfont_info = (struct font_info *) font; ft_face = ftcrfont_info->ft_size->face; FT_New_Size (ft_face, &ftcrfont_info->ft_size_draw); FT_Activate_Size (ftcrfont_info->ft_size_draw); @@ -167,7 +141,7 @@ ftcrfont_close (struct font *font) if (font_data_structures_may_be_ill_formed ()) return; - struct ftcrfont_info *ftcrfont_info = (struct ftcrfont_info *) font; + struct font_info *ftcrfont_info = (struct font_info *) font; int i; block_input (); @@ -223,7 +197,7 @@ ftcrfont_draw (struct glyph_string *s, { struct frame *f = s->f; struct face *face = s->face; - struct ftcrfont_info *ftcrfont_info = (struct ftcrfont_info *) s->font; + struct font_info *ftcrfont_info = (struct font_info *) s->font; cairo_t *cr; cairo_glyph_t *glyphs; cairo_surface_t *surface; @@ -312,9 +286,6 @@ struct font_driver const ftcrfont_driver = void syms_of_ftcrfont (void) { - if (ftfont_info_size != offsetof (struct ftcrfont_info, cr_font_face)) - abort (); - DEFSYM (Qftcr, "ftcr"); register_font_driver (&ftcrfont_driver, NULL); } diff --git i/src/ftfont.c w/src/ftfont.c index e83eff3ad0..5d4fcc4a45 100644 --- i/src/ftfont.c +++ w/src/ftfont.c @@ -24,6 +24,17 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #include <fontconfig/fontconfig.h> #include <fontconfig/fcfreetype.h> +/* These two blocks are here because this file is built when using XFT + and when using Cairo, so struct font_info in ftfont.h needs access + to the appropriate types. */ +#ifdef HAVE_XFT +#include <X11/Xlib.h> +#include <X11/Xft/Xft.h> +#endif +#ifdef USE_CAIRO +#include <cairo-ft.h> +#endif + #include <c-strcase.h> #include "lisp.h" @@ -49,25 +60,6 @@ static Lisp_Object freetype_font_cache; /* Cache for FT_Face and FcCharSet. */ static Lisp_Object ft_face_cache; -/* The actual structure for FreeType font that can be cast to struct - font. */ - -struct ftfont_info -{ - struct font font; -#ifdef HAVE_LIBOTF - /* The following four members must be here in this order to be - compatible with struct xftfont_info (in xftfont.c). */ - bool maybe_otf; /* Flag to tell if this may be OTF or not. */ - OTF *otf; -#endif /* HAVE_LIBOTF */ - FT_Size ft_size; - int index; - FT_Matrix matrix; -}; - -size_t ftfont_info_size = sizeof (struct ftfont_info); - enum ftfont_cache_for { FTFONT_CACHE_FOR_FACE, @@ -452,7 +444,7 @@ ftfont_get_fc_charset (Lisp_Object entity) #ifdef HAVE_LIBOTF static OTF * -ftfont_get_otf (struct ftfont_info *ftfont_info) +ftfont_get_otf (struct font_info *ftfont_info) { OTF *otf; @@ -1095,7 +1087,7 @@ ftfont_open2 (struct frame *f, int pixel_size, Lisp_Object font_object) { - struct ftfont_info *ftfont_info; + struct font_info *ftfont_info; struct font *font; struct ftfont_cache_data *cache_data; FT_Face ft_face; @@ -1146,7 +1138,7 @@ ftfont_open2 (struct frame *f, ASET (font_object, FONT_FILE_INDEX, filename); font = XFONT_OBJECT (font_object); - ftfont_info = (struct ftfont_info *) font; + ftfont_info = (struct font_info *) font; ftfont_info->ft_size = ft_face->size; ftfont_info->index = XFIXNUM (idx); #ifdef HAVE_LIBOTF @@ -1236,7 +1228,7 @@ ftfont_open (struct frame *f, Lisp_Object entity, int pixel_size) size = XFIXNUM (AREF (entity, FONT_SIZE_INDEX)); if (size == 0) size = pixel_size; - font_object = font_build_object (VECSIZE (struct ftfont_info), + font_object = font_build_object (VECSIZE (struct font_info), Qfreetype, entity, size); return ftfont_open2 (f, entity, pixel_size, font_object); } @@ -1247,7 +1239,7 @@ ftfont_close (struct font *font) if (font_data_structures_may_be_ill_formed ()) return; - struct ftfont_info *ftfont_info = (struct ftfont_info *) font; + struct font_info *ftfont_info = (struct font_info *) font; Lisp_Object val, cache; val = Fcons (font->props[FONT_FILE_INDEX], make_fixnum (ftfont_info->index)); @@ -1291,9 +1283,9 @@ ftfont_has_char (Lisp_Object font, int c) } else { - struct ftfont_info *ftfont_info; + struct font_info *ftfont_info; - ftfont_info = (struct ftfont_info *) XFONT_OBJECT (font); + ftfont_info = (struct font_info *) XFONT_OBJECT (font); return (FT_Get_Char_Index (ftfont_info->ft_size->face, (FT_ULong) c) != 0); } @@ -1302,7 +1294,7 @@ ftfont_has_char (Lisp_Object font, int c) unsigned ftfont_encode_char (struct font *font, int c) { - struct ftfont_info *ftfont_info = (struct ftfont_info *) font; + struct font_info *ftfont_info = (struct font_info *) font; FT_Face ft_face = ftfont_info->ft_size->face; FT_ULong charcode = c; FT_UInt code = FT_Get_Char_Index (ft_face, charcode); @@ -1314,7 +1306,7 @@ void ftfont_text_extents (struct font *font, unsigned int *code, int nglyphs, struct font_metrics *metrics) { - struct ftfont_info *ftfont_info = (struct ftfont_info *) font; + struct font_info *ftfont_info = (struct font_info *) font; FT_Face ft_face = ftfont_info->ft_size->face; int i, width = 0; bool first; @@ -1357,7 +1349,7 @@ ftfont_text_extents (struct font *font, unsigned int *code, int ftfont_get_bitmap (struct font *font, unsigned int code, struct font_bitmap *bitmap, int bits_per_pixel) { - struct ftfont_info *ftfont_info = (struct ftfont_info *) font; + struct font_info *ftfont_info = (struct font_info *) font; FT_Face ft_face = ftfont_info->ft_size->face; FT_Int32 load_flags = FT_LOAD_RENDER; @@ -1401,7 +1393,7 @@ int ftfont_anchor_point (struct font *font, unsigned int code, int idx, int *x, int *y) { - struct ftfont_info *ftfont_info = (struct ftfont_info *) font; + struct font_info *ftfont_info = (struct font_info *) font; FT_Face ft_face = ftfont_info->ft_size->face; if (ftfont_info->ft_size != ft_face->size) @@ -1466,7 +1458,7 @@ ftfont_otf_features (OTF_GSUB_GPOS *gsub_gpos) Lisp_Object ftfont_otf_capability (struct font *font) { - struct ftfont_info *ftfont_info = (struct ftfont_info *) font; + struct font_info *ftfont_info = (struct font_info *) font; OTF *otf = ftfont_get_otf (ftfont_info); Lisp_Object gsub_gpos; @@ -2616,7 +2608,7 @@ Lisp_Object ftfont_shape (Lisp_Object lgstring) { struct font *font = CHECK_FONT_GET_OBJECT (LGSTRING_FONT (lgstring)); - struct ftfont_info *ftfont_info = (struct ftfont_info *) font; + struct font_info *ftfont_info = (struct font_info *) font; OTF *otf = ftfont_get_otf (ftfont_info); return ftfont_shape_by_flt (lgstring, font, ftfont_info->ft_size->face, otf, @@ -2630,7 +2622,7 @@ ftfont_shape (Lisp_Object lgstring) int ftfont_variation_glyphs (struct font *font, int c, unsigned variations[256]) { - struct ftfont_info *ftfont_info = (struct ftfont_info *) font; + struct font_info *ftfont_info = (struct font_info *) font; OTF *otf = ftfont_get_otf (ftfont_info); if (! otf) diff --git i/src/ftfont.h w/src/ftfont.h index 4201b2c2d6..1f3416d2d2 100644 --- i/src/ftfont.h +++ w/src/ftfont.h @@ -41,6 +41,32 @@ extern Lisp_Object ftfont_open2 (struct frame *f, Lisp_Object entity, int pixel_size, Lisp_Object font_object); -extern size_t ftfont_info_size; + +struct font_info +{ + struct font font; +#ifdef HAVE_LIBOTF + bool maybe_otf; /* Flag to tell if this may be OTF or not. */ + OTF *otf; +#endif /* HAVE_LIBOTF */ + FT_Size ft_size; + int index; + FT_Matrix matrix; + +#ifdef USE_CAIRO + cairo_font_face_t *cr_font_face; + /* To prevent cairo from cluttering the activated FT_Size maintained + in ftfont.c, we activate this special FT_Size before drawing. */ + FT_Size ft_size_draw; + /* Font metrics cache. */ + struct font_metrics **metrics; + short metrics_nrows; +#else + /* These are used by the XFT backend. */ + Display *display; + XftFont *xftfont; + unsigned x_display_id; +#endif +}; #endif /* EMACS_FTFONT_H */ diff --git i/src/xftfont.c w/src/xftfont.c index 85df0d857a..764862aa3a 100644 --- i/src/xftfont.c +++ w/src/xftfont.c @@ -35,27 +35,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ /* Xft font driver. */ - -/* The actual structure for Xft font that can be cast to struct - font. */ - -struct xftfont_info -{ - struct font font; - /* The following five members must be here in this order to be - compatible with struct ftfont_info (in ftfont.c). */ -#ifdef HAVE_LIBOTF - bool maybe_otf; /* Flag to tell if this may be OTF or not. */ - OTF *otf; -#endif /* HAVE_LIBOTF */ - FT_Size ft_size; - int index; - FT_Matrix matrix; - Display *display; - XftFont *xftfont; - unsigned x_display_id; -}; - /* Structure pointed by (struct face *)->extra */ struct xftface_info @@ -255,7 +234,7 @@ xftfont_open (struct frame *f, Lisp_Object entity, int pixel_size) Display *display = FRAME_X_DISPLAY (f); Lisp_Object val, filename, idx, font_object; FcPattern *pat = NULL, *match; - struct xftfont_info *xftfont_info = NULL; + struct font_info *xftfont_info = NULL; struct font *font; double size = 0; XftFont *xftfont = NULL; @@ -330,7 +309,7 @@ xftfont_open (struct frame *f, Lisp_Object entity, int pixel_size) /* We should not destroy PAT here because it is kept in XFTFONT and destroyed automatically when XFTFONT is closed. */ - font_object = font_build_object (VECSIZE (struct xftfont_info), + font_object = font_build_object (VECSIZE (struct font_info), Qxft, entity, size); ASET (font_object, FONT_FILE_INDEX, filename); font = XFONT_OBJECT (font_object); @@ -338,7 +317,7 @@ xftfont_open (struct frame *f, Lisp_Object entity, int pixel_size) font->driver = &xftfont_driver; font->encoding_charset = font->repertory_charset = -1; - xftfont_info = (struct xftfont_info *) font; + xftfont_info = (struct font_info *) font; xftfont_info->display = display; xftfont_info->xftfont = xftfont; xftfont_info->x_display_id = FRAME_DISPLAY_INFO (f)->x_id; @@ -460,7 +439,7 @@ static void xftfont_close (struct font *font) { struct x_display_info *xdi; - struct xftfont_info *xftfont_info = (struct xftfont_info *) font; + struct font_info *xftfont_info = (struct font_info *) font; #ifdef HAVE_LIBOTF if (xftfont_info->otf) @@ -526,7 +505,7 @@ xftfont_done_face (struct frame *f, struct face *face) static int xftfont_has_char (Lisp_Object font, int c) { - struct xftfont_info *xftfont_info; + struct font_info *xftfont_info; struct charset *cs = NULL; if (EQ (AREF (font, FONT_ADSTYLE_INDEX), Qja) @@ -540,7 +519,7 @@ xftfont_has_char (Lisp_Object font, int c) if (FONT_ENTITY_P (font)) return ftfont_has_char (font, c); - xftfont_info = (struct xftfont_info *) XFONT_OBJECT (font); + xftfont_info = (struct font_info *) XFONT_OBJECT (font); return (XftCharExists (xftfont_info->display, xftfont_info->xftfont, (FcChar32) c) == FcTrue); } @@ -548,7 +527,7 @@ xftfont_has_char (Lisp_Object font, int c) static unsigned xftfont_encode_char (struct font *font, int c) { - struct xftfont_info *xftfont_info = (struct xftfont_info *) font; + struct font_info *xftfont_info = (struct font_info *) font; unsigned code = XftCharIndex (xftfont_info->display, xftfont_info->xftfont, (FcChar32) c); @@ -559,7 +538,7 @@ static void xftfont_text_extents (struct font *font, unsigned int *code, int nglyphs, struct font_metrics *metrics) { - struct xftfont_info *xftfont_info = (struct xftfont_info *) font; + struct font_info *xftfont_info = (struct font_info *) font; XGlyphInfo extents; block_input (); @@ -601,7 +580,7 @@ xftfont_draw (struct glyph_string *s, int from, int to, int x, int y, struct frame *f = s->f; struct face *face = s->face; - struct xftfont_info *xftfont_info = (struct xftfont_info *) s->font; + struct font_info *xftfont_info = (struct font_info *) s->font; struct xftface_info *xftface_info = NULL; XftDraw *xft_draw = xftfont_get_xft_draw (f); FT_UInt *code; @@ -664,7 +643,7 @@ static Lisp_Object xftfont_shape (Lisp_Object lgstring) { struct font *font = CHECK_FONT_GET_OBJECT (LGSTRING_FONT (lgstring)); - struct xftfont_info *xftfont_info = (struct xftfont_info *) font; + struct font_info *xftfont_info = (struct font_info *) font; FT_Face ft_face = XftLockFace (xftfont_info->xftfont); xftfont_info->ft_size = ft_face->size; Lisp_Object val = ftfont_shape (lgstring); @@ -708,7 +687,7 @@ static bool xftfont_cached_font_ok (struct frame *f, Lisp_Object font_object, Lisp_Object entity) { - struct xftfont_info *info = (struct xftfont_info *) XFONT_OBJECT (font_object); + struct font_info *info = (struct font_info *) XFONT_OBJECT (font_object); FcPattern *oldpat = info->xftfont->pattern; Display *display = FRAME_X_DISPLAY (f); FcPattern *pat = FcPatternCreate (); ^ permalink raw reply related [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-17 12:41 ` Robert Pluim @ 2018-12-17 17:39 ` Eli Zaretskii 2018-12-18 8:49 ` Robert Pluim 2019-02-08 8:01 ` Robert Pluim 2018-12-17 21:49 ` Paul Eggert 1 sibling, 2 replies; 36+ messages in thread From: Eli Zaretskii @ 2018-12-17 17:39 UTC (permalink / raw) To: Robert Pluim; +Cc: ari.roponen, emacs-devel > From: Robert Pluim <rpluim@gmail.com> > Cc: emacs-devel@gnu.org, ari.roponen@gmail.com > Date: Mon, 17 Dec 2018 13:41:11 +0100 > > >> Aligning ftfont.c and ftcrfont.c is pretty easy. Did you want me to > >> try to unify xftfont.c in there as well? > > > > If that makes sense, i.e. if the commonality seems to justify that, > > then yes. > > > > I had a quick go at this. Iʼve not measured the memory difference, but > I can do if people thinks this refactor is worth it. Apart from the > unification of the three struct definitions, most of the patch is > mechanical changes. Thanks, this LGTM, and is a significant improvement, IMO. If no one objects in a few days, please push. P.S. Will this have any problems with the harfbuzz branch? ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-17 17:39 ` Eli Zaretskii @ 2018-12-18 8:49 ` Robert Pluim 2018-12-18 13:01 ` Robert Pluim 2019-02-08 8:01 ` Robert Pluim 1 sibling, 1 reply; 36+ messages in thread From: Robert Pluim @ 2018-12-18 8:49 UTC (permalink / raw) To: Eli Zaretskii; +Cc: ari.roponen, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: emacs-devel@gnu.org, ari.roponen@gmail.com >> Date: Mon, 17 Dec 2018 13:41:11 +0100 >> >> >> Aligning ftfont.c and ftcrfont.c is pretty easy. Did you want me to >> >> try to unify xftfont.c in there as well? >> > >> > If that makes sense, i.e. if the commonality seems to justify that, >> > then yes. >> > >> >> I had a quick go at this. Iʼve not measured the memory difference, but >> I can do if people thinks this refactor is worth it. Apart from the >> unification of the three struct definitions, most of the patch is >> mechanical changes. > > Thanks, this LGTM, and is a significant improvement, IMO. If no one > objects in a few days, please push. > > P.S. Will this have any problems with the harfbuzz branch? Apart from having to adjust the addition to the struct in question done on the harfbuzz branch, I donʼt think so. Probably there will be a merge conflict, I can help out with that if needed. Robert ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-18 8:49 ` Robert Pluim @ 2018-12-18 13:01 ` Robert Pluim 0 siblings, 0 replies; 36+ messages in thread From: Robert Pluim @ 2018-12-18 13:01 UTC (permalink / raw) To: emacs-devel Robert Pluim <rpluim@gmail.com> writes: > Eli Zaretskii <eliz@gnu.org> writes: >>> I had a quick go at this. Iʼve not measured the memory difference, but >>> I can do if people thinks this refactor is worth it. Apart from the >>> unification of the three struct definitions, most of the patch is >>> mechanical changes. >> Given that my cairo build of emacs opens only 4 fonts on startup, and the freetype one only 2, I think the memory issue is nonexistent. >> Thanks, this LGTM, and is a significant improvement, IMO. If no one >> objects in a few days, please push. >> >> P.S. Will this have any problems with the harfbuzz branch? > > Apart from having to adjust the addition to the struct in question > done on the harfbuzz branch, I donʼt think so. Probably there will be > a merge conflict, I can help out with that if needed. Having looked closer, there might be a few more conflicts, but nothing too complicated to handle. Mainly a few instances of struct ftfont_info -> struct font_info Robert ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-17 17:39 ` Eli Zaretskii 2018-12-18 8:49 ` Robert Pluim @ 2019-02-08 8:01 ` Robert Pluim 2019-02-08 8:04 ` Robert Pluim 2019-02-08 9:37 ` Eli Zaretskii 1 sibling, 2 replies; 36+ messages in thread From: Robert Pluim @ 2019-02-08 8:01 UTC (permalink / raw) To: Eli Zaretskii; +Cc: ari.roponen, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > > Thanks, this LGTM, and is a significant improvement, IMO. If no one > objects in a few days, please push. I built this on GNU/Linux with the following configs: ./configure # This builds xfont.o ftfont.o xftfont.o ftxfont.o ./configure --with-cairo # This builds ftfont.o ftcrfont.o ./configure --without-xft # This builds xfont.o only Pushed to emacs-26 as Just kidding. Pushed to master as I can cherry-pick this to the harfbuzz branch if you want. Robert ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-08 8:01 ` Robert Pluim @ 2019-02-08 8:04 ` Robert Pluim 2019-02-08 8:06 ` Robert Pluim 2019-02-08 9:37 ` Eli Zaretskii 1 sibling, 1 reply; 36+ messages in thread From: Robert Pluim @ 2019-02-08 8:04 UTC (permalink / raw) To: emacs-devel Robert Pluim <rpluim@gmail.com> writes: > Eli Zaretskii <eliz@gnu.org> writes: >> >> Thanks, this LGTM, and is a significant improvement, IMO. If no one >> objects in a few days, please push. > > I built this on GNU/Linux with the following configs: > > ./configure # This builds xfont.o ftfont.o xftfont.o ftxfont.o > ./configure --with-cairo # This builds ftfont.o ftcrfont.o > ./configure --without-xft # This builds xfont.o only > > Pushed to emacs-26 as > > Just kidding. Pushed to master as > > I can cherry-pick this to the harfbuzz branch if you want. ENOCOFFEE. Pushed to master as b0088103bc Robert ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-08 8:04 ` Robert Pluim @ 2019-02-08 8:06 ` Robert Pluim 0 siblings, 0 replies; 36+ messages in thread From: Robert Pluim @ 2019-02-08 8:06 UTC (permalink / raw) To: emacs-devel Robert Pluim <rpluim@gmail.com> writes: > Robert Pluim <rpluim@gmail.com> writes: > >> Eli Zaretskii <eliz@gnu.org> writes: >>> >>> Thanks, this LGTM, and is a significant improvement, IMO. If no one >>> objects in a few days, please push. >> >> I built this on GNU/Linux with the following configs: >> >> ./configure # This builds xfont.o ftfont.o xftfont.o ftxfont.o >> ./configure --with-cairo # This builds ftfont.o ftcrfont.o >> ./configure --without-xft # This builds xfont.o only >> >> Pushed to emacs-26 as >> >> Just kidding. Pushed to master as >> >> I can cherry-pick this to the harfbuzz branch if you want. > > ENOCOFFEE. > > Pushed to master as b0088103bc Uhm 9e0d69b5a1 , I mean. Robert ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-08 8:01 ` Robert Pluim 2019-02-08 8:04 ` Robert Pluim @ 2019-02-08 9:37 ` Eli Zaretskii 2019-02-08 11:46 ` Robert Pluim 1 sibling, 1 reply; 36+ messages in thread From: Eli Zaretskii @ 2019-02-08 9:37 UTC (permalink / raw) To: Robert Pluim; +Cc: emacs-devel > From: Robert Pluim <rpluim@gmail.com> > Cc: ari.roponen@gmail.com, emacs-devel@gnu.org > Date: Fri, 08 Feb 2019 09:01:22 +0100 > > Eli Zaretskii <eliz@gnu.org> writes: > > > > Thanks, this LGTM, and is a significant improvement, IMO. If no one > > objects in a few days, please push. > > I built this on GNU/Linux with the following configs: > > ./configure # This builds xfont.o ftfont.o xftfont.o ftxfont.o I wonder why we build both xftfont.o and ftxfont.o, when we only use one of them, if my reading of the code is correct. > I can cherry-pick this to the harfbuzz branch if you want. Thanks, please do. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-08 9:37 ` Eli Zaretskii @ 2019-02-08 11:46 ` Robert Pluim 2019-02-08 13:14 ` Eli Zaretskii 0 siblings, 1 reply; 36+ messages in thread From: Robert Pluim @ 2019-02-08 11:46 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: ari.roponen@gmail.com, emacs-devel@gnu.org >> Date: Fri, 08 Feb 2019 09:01:22 +0100 >> >> Eli Zaretskii <eliz@gnu.org> writes: >> > >> > Thanks, this LGTM, and is a significant improvement, IMO. If no one >> > objects in a few days, please push. >> >> I built this on GNU/Linux with the following configs: >> >> ./configure # This builds xfont.o ftfont.o xftfont.o ftxfont.o > > I wonder why we build both xftfont.o and ftxfont.o, when we only use > one of them, if my reading of the code is correct. > I did suggest removing ftxfont.o, but you said we had to deprecate it first. Itʼs easy enough to not build in the HAVE_XFT config. >> I can cherry-pick this to the harfbuzz branch if you want. > > Thanks, please do. Will do. Robert ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-08 11:46 ` Robert Pluim @ 2019-02-08 13:14 ` Eli Zaretskii 2019-02-08 14:38 ` Robert Pluim 0 siblings, 1 reply; 36+ messages in thread From: Eli Zaretskii @ 2019-02-08 13:14 UTC (permalink / raw) To: Robert Pluim; +Cc: emacs-devel > From: Robert Pluim <rpluim@gmail.com> > Cc: emacs-devel@gnu.org > Date: Fri, 08 Feb 2019 12:46:32 +0100 > > >> ./configure # This builds xfont.o ftfont.o xftfont.o ftxfont.o > > > > I wonder why we build both xftfont.o and ftxfont.o, when we only use > > one of them, if my reading of the code is correct. > > > > I did suggest removing ftxfont.o, but you said we had to deprecate it > first. Itʼs easy enough to not build in the HAVE_XFT config. That's orthogonal. Regardless of whether we want to drop ftxfont.c, I don't understand why build with both xftfont.c and ftxfont.c. They seem to be mutually exclusive, from the end-user POV. > >> I can cherry-pick this to the harfbuzz branch if you want. > > > > Thanks, please do. > > Will do. TIA ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-08 13:14 ` Eli Zaretskii @ 2019-02-08 14:38 ` Robert Pluim 2019-02-08 16:11 ` Eli Zaretskii 0 siblings, 1 reply; 36+ messages in thread From: Robert Pluim @ 2019-02-08 14:38 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: emacs-devel@gnu.org >> Date: Fri, 08 Feb 2019 12:46:32 +0100 >> >> >> ./configure # This builds xfont.o ftfont.o xftfont.o ftxfont.o >> > >> > I wonder why we build both xftfont.o and ftxfont.o, when we only use >> > one of them, if my reading of the code is correct. >> > >> >> I did suggest removing ftxfont.o, but you said we had to deprecate it >> first. Itʼs easy enough to not build in the HAVE_XFT config. > > That's orthogonal. Regardless of whether we want to drop ftxfont.c, I > don't understand why build with both xftfont.c and ftxfont.c. They > seem to be mutually exclusive, from the end-user POV. > Removing ftxfont.c from the HAVE_XFT build is the same as dropping it: configure.ac: ## We used to allow building with FreeType and without Xft. ## However, the ftx font backend driver is not in good shape. if test "$HAVE_XFT" != "yes"; then dnl For the "Does Emacs use" message at the end. HAVE_XFT=no HAVE_FREETYPE=no else elif test "$HAVE_XFT" = "yes"; then FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o" elif test "$HAVE_FREETYPE" = "yes"; then FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o" fi I donʼt mind either way: as you rightly point out, nobody can possibly be using it :-) >> >> I can cherry-pick this to the harfbuzz branch if you want. >> > >> > Thanks, please do. >> >> Will do. > > TIA Done as 015a6e1df2 Robert ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-08 14:38 ` Robert Pluim @ 2019-02-08 16:11 ` Eli Zaretskii 2019-02-08 16:41 ` Robert Pluim 0 siblings, 1 reply; 36+ messages in thread From: Eli Zaretskii @ 2019-02-08 16:11 UTC (permalink / raw) To: Robert Pluim; +Cc: emacs-devel > From: Robert Pluim <rpluim@gmail.com> > Cc: emacs-devel@gnu.org > Date: Fri, 08 Feb 2019 15:38:52 +0100 > > > That's orthogonal. Regardless of whether we want to drop ftxfont.c, I > > don't understand why build with both xftfont.c and ftxfont.c. They > > seem to be mutually exclusive, from the end-user POV. > > Removing ftxfont.c from the HAVE_XFT build is the same as dropping it: > > configure.ac: > > ## We used to allow building with FreeType and without Xft. > ## However, the ftx font backend driver is not in good shape. > if test "$HAVE_XFT" != "yes"; then > dnl For the "Does Emacs use" message at the end. > HAVE_XFT=no > HAVE_FREETYPE=no > else > > elif test "$HAVE_XFT" = "yes"; then > FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o" > elif test "$HAVE_FREETYPE" = "yes"; then > FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o" > fi > > I donʼt mind either way: as you rightly point out, nobody can possibly > be using it :-) The above is strange, since the code which uses font backends clearly meant something else: #ifdef USE_CAIRO register_font_driver (&ftcrfont_driver, f); #else #ifdef HAVE_FREETYPE #ifdef HAVE_XFT register_font_driver (&xftfont_driver, f); #else /* not HAVE_XFT */ register_font_driver (&ftxfont_driver, f); #endif /* not HAVE_XFT */ #endif /* HAVE_FREETYPE */ register_font_driver (&xfont_driver, f); #endif /* not USE_CAIRO */ Here, xftfont and ftxfont are clearly 2 more-or-less equivalent alternatives, and bot rely on Freetype. So I don't understand why not having XFT is taken by configure.ac to mean there's no Freetype, either. Sounds like a mistake, or did I miss something? > >> >> I can cherry-pick this to the harfbuzz branch if you want. > >> > > >> > Thanks, please do. > >> > >> Will do. > > > > TIA > > Done as 015a6e1df2 Thanks. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-08 16:11 ` Eli Zaretskii @ 2019-02-08 16:41 ` Robert Pluim 2019-02-08 21:29 ` Eli Zaretskii 0 siblings, 1 reply; 36+ messages in thread From: Robert Pluim @ 2019-02-08 16:41 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > The above is strange, since the code which uses font backends clearly > meant something else: > > #ifdef USE_CAIRO > register_font_driver (&ftcrfont_driver, f); > #else > #ifdef HAVE_FREETYPE > #ifdef HAVE_XFT > register_font_driver (&xftfont_driver, f); > #else /* not HAVE_XFT */ > register_font_driver (&ftxfont_driver, f); > #endif /* not HAVE_XFT */ > #endif /* HAVE_FREETYPE */ > register_font_driver (&xfont_driver, f); > #endif /* not USE_CAIRO */ > > Here, xftfont and ftxfont are clearly 2 more-or-less equivalent > alternatives, and bot rely on Freetype. So I don't understand why not > having XFT is taken by configure.ac to mean there's no Freetype, > either. Sounds like a mistake, or did I miss something? > Interesting. Glenn made that change in 46dcfee46cb241a0f8e34da679ca8b42e8ee8d46 , but thatʼs quite a while ago. Like I said, we can change stuff around here, but I think the easiest thing to do is just get rid of it. Robert ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-08 16:41 ` Robert Pluim @ 2019-02-08 21:29 ` Eli Zaretskii 2019-02-09 19:20 ` Glenn Morris 0 siblings, 1 reply; 36+ messages in thread From: Eli Zaretskii @ 2019-02-08 21:29 UTC (permalink / raw) To: Robert Pluim; +Cc: emacs-devel > From: Robert Pluim <rpluim@gmail.com> > Cc: emacs-devel@gnu.org > Date: Fri, 08 Feb 2019 17:41:02 +0100 > > > #ifdef HAVE_FREETYPE > > #ifdef HAVE_XFT > > register_font_driver (&xftfont_driver, f); > > #else /* not HAVE_XFT */ > > register_font_driver (&ftxfont_driver, f); > > #endif /* not HAVE_XFT */ > > #endif /* HAVE_FREETYPE */ > > register_font_driver (&xfont_driver, f); > > #endif /* not USE_CAIRO */ > > > > Here, xftfont and ftxfont are clearly 2 more-or-less equivalent > > alternatives, and bot rely on Freetype. So I don't understand why not > > having XFT is taken by configure.ac to mean there's no Freetype, > > either. Sounds like a mistake, or did I miss something? > > Interesting. Glenn made that change in > 46dcfee46cb241a0f8e34da679ca8b42e8ee8d46 , but thatʼs quite a while > ago. > > Like I said, we can change stuff around here, but I think the easiest > thing to do is just get rid of it. Is XFT sufficiently widespread these days that we can rely on it being available on most systems? If so, I guess it's okay to drop ftxfont.c. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-08 21:29 ` Eli Zaretskii @ 2019-02-09 19:20 ` Glenn Morris 2019-02-09 19:34 ` Eli Zaretskii 2019-02-10 14:57 ` Eli Zaretskii 0 siblings, 2 replies; 36+ messages in thread From: Glenn Morris @ 2019-02-09 19:20 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Robert Pluim, emacs-devel Eli Zaretskii wrote: > Is XFT sufficiently widespread these days that we can rely on it being > available on most systems? If so, I guess it's okay to drop > ftxfont.c. Every GNU/Linux distribution provides Xft. Emacs's configure requirements in terms of version numbers are trivially satisfied even on the likely oldest supported distribution, RHEL6. In recent years, there are a few (<= 5) bug reports each year from builds that are identifiably X11 without XFT. Last year there were two. Both were Gentoo builds passing --without-xft. One (30203) is an open report about how the non-XFT build is worse than the XFT build. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-09 19:20 ` Glenn Morris @ 2019-02-09 19:34 ` Eli Zaretskii 2019-02-10 14:47 ` Stefan Monnier 2019-02-10 18:30 ` Glenn Morris 2019-02-10 14:57 ` Eli Zaretskii 1 sibling, 2 replies; 36+ messages in thread From: Eli Zaretskii @ 2019-02-09 19:34 UTC (permalink / raw) To: Glenn Morris; +Cc: rpluim, emacs-devel > From: Glenn Morris <rgm@gnu.org> > Date: Sat, 09 Feb 2019 14:20:13 -0500 > Cc: Robert Pluim <rpluim@gmail.com>, emacs-devel@gnu.org > > Eli Zaretskii wrote: > > > Is XFT sufficiently widespread these days that we can rely on it being > > available on most systems? If so, I guess it's okay to drop > > ftxfont.c. > > Every GNU/Linux distribution provides Xft. Thanks. What about non-GNU Posix hosts that run X? Do we have any information about the situation there? ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-09 19:34 ` Eli Zaretskii @ 2019-02-10 14:47 ` Stefan Monnier 2019-02-10 15:28 ` Eli Zaretskii 2019-02-10 18:30 ` Glenn Morris 1 sibling, 1 reply; 36+ messages in thread From: Stefan Monnier @ 2019-02-10 14:47 UTC (permalink / raw) To: emacs-devel >> Every GNU/Linux distribution provides Xft. > Thanks. What about non-GNU Posix hosts that run X? AFAIK the issue isn't GNU-vs-other but old-X vs new-X. Xft is basically part of what is expected of a recent enough X11 installation. We could drop ftx support from `master`s `configure` and see if anyone notices. Stefan ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-10 14:47 ` Stefan Monnier @ 2019-02-10 15:28 ` Eli Zaretskii 2019-02-10 18:18 ` Stefan Monnier 0 siblings, 1 reply; 36+ messages in thread From: Eli Zaretskii @ 2019-02-10 15:28 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Sun, 10 Feb 2019 09:47:38 -0500 > > >> Every GNU/Linux distribution provides Xft. > > Thanks. What about non-GNU Posix hosts that run X? > > AFAIK the issue isn't GNU-vs-other but old-X vs new-X. Xft is basically > part of what is expected of a recent enough X11 installation. We could > drop ftx support from `master`s `configure` and see if anyone notices. We need to disable it by default first. Then, if no one complains, we could remove it after some time. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-10 15:28 ` Eli Zaretskii @ 2019-02-10 18:18 ` Stefan Monnier 2019-02-10 18:48 ` Eli Zaretskii 0 siblings, 1 reply; 36+ messages in thread From: Stefan Monnier @ 2019-02-10 18:18 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel >> >> Every GNU/Linux distribution provides Xft. >> > Thanks. What about non-GNU Posix hosts that run X? >> AFAIK the issue isn't GNU-vs-other but old-X vs new-X. Xft is basically >> part of what is expected of a recent enough X11 installation. We could >> drop ftx support from `master`s `configure` and see if anyone notices. > We need to disable it by default first. If we do it with a trivial change that we can easily revert before we start pretesting Emacs-27, I see no reason why we'd first need to change the default. Stefan ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-10 18:18 ` Stefan Monnier @ 2019-02-10 18:48 ` Eli Zaretskii 2019-02-10 18:52 ` Stefan Monnier 0 siblings, 1 reply; 36+ messages in thread From: Eli Zaretskii @ 2019-02-10 18:48 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel > From: Stefan Monnier <monnier@IRO.UMontreal.CA> > Cc: emacs-devel@gnu.org > Date: Sun, 10 Feb 2019 13:18:25 -0500 > > >> >> Every GNU/Linux distribution provides Xft. > >> > Thanks. What about non-GNU Posix hosts that run X? > >> AFAIK the issue isn't GNU-vs-other but old-X vs new-X. Xft is basically > >> part of what is expected of a recent enough X11 installation. We could > >> drop ftx support from `master`s `configure` and see if anyone notices. > > We need to disable it by default first. > > If we do it with a trivial change that we can easily revert before we > start pretesting Emacs-27, I see no reason why we'd first need to change > the default. Experience shows that the complaints come in too late, and the hope that we can easily revert such a change is frequently thwarted. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-10 18:48 ` Eli Zaretskii @ 2019-02-10 18:52 ` Stefan Monnier 2019-02-11 9:56 ` Robert Pluim 0 siblings, 1 reply; 36+ messages in thread From: Stefan Monnier @ 2019-02-10 18:52 UTC (permalink / raw) To: emacs-devel > Experience shows that the complaints come in too late, and the hope > that we can easily revert such a change is frequently thwarted. AFAIK it's been "impossible" to compile Emacs with ftx backend but without the xft library since 2009. So, maybe I should rather argue that it's high time we scrap the code altogether since it's been useless and unused for 10 years now. Stefan ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-10 18:52 ` Stefan Monnier @ 2019-02-11 9:56 ` Robert Pluim 0 siblings, 0 replies; 36+ messages in thread From: Robert Pluim @ 2019-02-11 9:56 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> Experience shows that the complaints come in too late, and the hope >> that we can easily revert such a change is frequently thwarted. > > AFAIK it's been "impossible" to compile Emacs with ftx backend but > without the xft library since 2009. > > So, maybe I should rather argue that it's high time we scrap the > code altogether since it's been useless and unused for 10 years now. +1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-09 19:34 ` Eli Zaretskii 2019-02-10 14:47 ` Stefan Monnier @ 2019-02-10 18:30 ` Glenn Morris 1 sibling, 0 replies; 36+ messages in thread From: Glenn Morris @ 2019-02-10 18:30 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, emacs-devel Eli Zaretskii wrote: > What about non-GNU Posix hosts that run X? BSDs? The data suggest very low Emacs usage there, eg https://debbugs.gnu.org/stats/emacs.html Anyway, I'm sure they all have Xft too. Eg https://svnweb.freebsd.org/ports/head/x11-fonts/libXft/ ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/x11/libXft/README.html https://man.openbsd.org/Xft.3 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-09 19:20 ` Glenn Morris 2019-02-09 19:34 ` Eli Zaretskii @ 2019-02-10 14:57 ` Eli Zaretskii 2019-02-10 18:36 ` Glenn Morris 1 sibling, 1 reply; 36+ messages in thread From: Eli Zaretskii @ 2019-02-10 14:57 UTC (permalink / raw) To: Glenn Morris; +Cc: rpluim, emacs-devel > From: Glenn Morris <rgm@gnu.org> > Cc: Robert Pluim <rpluim@gmail.com>, emacs-devel@gnu.org > Date: Sat, 09 Feb 2019 14:20:13 -0500 > > In recent years, there are a few (<= 5) bug reports each year from > builds that are identifiably X11 without XFT. Last year there were two. > Both were Gentoo builds passing --without-xft. One (30203) is an open > report about how the non-XFT build is worse than the XFT build. Btw, as long as we are talking about this: could you please tell why configure.ac disables HAVE_FREETYPE when the build is without XFT? AFAIU, ftxfont needs Freetype, so if we disabvle the latter, ftxfont cannot be a replacement for XFT. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-10 14:57 ` Eli Zaretskii @ 2019-02-10 18:36 ` Glenn Morris 2019-02-11 15:33 ` Eli Zaretskii 0 siblings, 1 reply; 36+ messages in thread From: Glenn Morris @ 2019-02-10 18:36 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, emacs-devel Eli Zaretskii wrote: > Btw, as long as we are talking about this: could you please tell why > configure.ac disables HAVE_FREETYPE when the build is without XFT? > AFAIU, ftxfont needs Freetype, so if we disabvle the latter, ftxfont > cannot be a replacement for XFT. I don't think it's my doing. See af17b98 and 7bbec45 (from 2009). "We used to allow building with FreeType and without Xft. However, the ftx font backend driver is not in good shape." I don't imagine it has improved in the past decade. Ref also http://lists.gnu.org/r/emacs-devel/2009-04/msg00514.html where pretty much the same discussion seems to have been going on. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2019-02-10 18:36 ` Glenn Morris @ 2019-02-11 15:33 ` Eli Zaretskii 0 siblings, 0 replies; 36+ messages in thread From: Eli Zaretskii @ 2019-02-11 15:33 UTC (permalink / raw) To: Glenn Morris; +Cc: rpluim, emacs-devel > From: Glenn Morris <rgm@gnu.org> > Cc: rpluim@gmail.com, emacs-devel@gnu.org > Date: Sun, 10 Feb 2019 13:36:39 -0500 > > Eli Zaretskii wrote: > > > Btw, as long as we are talking about this: could you please tell why > > configure.ac disables HAVE_FREETYPE when the build is without XFT? > > AFAIU, ftxfont needs Freetype, so if we disabvle the latter, ftxfont > > cannot be a replacement for XFT. > > I don't think it's my doing. See af17b98 and 7bbec45 (from 2009). > "We used to allow building with FreeType and without Xft. > However, the ftx font backend driver is not in good shape." > I don't imagine it has improved in the past decade. > > Ref also > http://lists.gnu.org/r/emacs-devel/2009-04/msg00514.html > > where pretty much the same discussion seems to have been going on. Ah, okay. So you are saying that we've already effectively deprecated and disabled ftxfont 10 years ago? In that case, we could indeed retire it in Emacs 27. Thanks. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-17 12:41 ` Robert Pluim 2018-12-17 17:39 ` Eli Zaretskii @ 2018-12-17 21:49 ` Paul Eggert 2018-12-18 8:23 ` Robert Pluim 1 sibling, 1 reply; 36+ messages in thread From: Paul Eggert @ 2018-12-17 21:49 UTC (permalink / raw) To: Robert Pluim, Eli Zaretskii; +Cc: ari.roponen, emacs-devel Thanks, looks good to me too. One minor point: On 12/17/18 4:41 AM, Robert Pluim wrote: > +#ifdef HAVE_XFT > +#include <X11/Xlib.h> > +#include <X11/Xft/Xft.h> > +#endif > +#ifdef USE_CAIRO > +#include <cairo-ft.h> > +#endif Please indent the include directives by using "# include" (with a space after "#"). ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-17 21:49 ` Paul Eggert @ 2018-12-18 8:23 ` Robert Pluim 2018-12-19 8:32 ` Robert Pluim 0 siblings, 1 reply; 36+ messages in thread From: Robert Pluim @ 2018-12-18 8:23 UTC (permalink / raw) To: Paul Eggert; +Cc: Eli Zaretskii, ari.roponen, emacs-devel Paul Eggert <eggert@cs.ucla.edu> writes: > Thanks, looks good to me too. One minor point: > > On 12/17/18 4:41 AM, Robert Pluim wrote: >> +#ifdef HAVE_XFT >> +#include <X11/Xlib.h> >> +#include <X11/Xft/Xft.h> >> +#endif >> +#ifdef USE_CAIRO >> +#include <cairo-ft.h> >> +#endif > > Please indent the include directives by using "# include" (with a > space after "#"). Fixed. Robert ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-18 8:23 ` Robert Pluim @ 2018-12-19 8:32 ` Robert Pluim 2018-12-19 15:06 ` Eli Zaretskii 0 siblings, 1 reply; 36+ messages in thread From: Robert Pluim @ 2018-12-19 8:32 UTC (permalink / raw) To: emacs-devel Robert Pluim <rpluim@gmail.com> writes: > Paul Eggert <eggert@cs.ucla.edu> writes: > >> Thanks, looks good to me too. One minor point: >> >> On 12/17/18 4:41 AM, Robert Pluim wrote: >>> +#ifdef HAVE_XFT >>> +#include <X11/Xlib.h> >>> +#include <X11/Xft/Xft.h> >>> +#endif >>> +#ifdef USE_CAIRO >>> +#include <cairo-ft.h> >>> +#endif >> >> Please indent the include directives by using "# include" (with a >> space after "#"). > > Fixed. BTW, Emacs has ~500 instances of this rule not being followed. Iʼm assuming that a mass change (similarly to mass whitespace fixes) would be frowned upon. Robert ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-19 8:32 ` Robert Pluim @ 2018-12-19 15:06 ` Eli Zaretskii 0 siblings, 0 replies; 36+ messages in thread From: Eli Zaretskii @ 2018-12-19 15:06 UTC (permalink / raw) To: Robert Pluim; +Cc: emacs-devel > From: Robert Pluim <rpluim@gmail.com> > Date: Wed, 19 Dec 2018 09:32:52 +0100 > > >> On 12/17/18 4:41 AM, Robert Pluim wrote: > >>> +#ifdef HAVE_XFT > >>> +#include <X11/Xlib.h> > >>> +#include <X11/Xft/Xft.h> > >>> +#endif > >>> +#ifdef USE_CAIRO > >>> +#include <cairo-ft.h> > >>> +#endif > >> > >> Please indent the include directives by using "# include" (with a > >> space after "#"). > > > > Fixed. > > BTW, Emacs has ~500 instances of this rule not being followed. Iʼm > assuming that a mass change (similarly to mass whitespace fixes) would > be frowned upon. We usually fix those as part of other changes, not as a changeset in itself. Thanks. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: harfbuzz 2f72162: Fix crash in the Cairo build 2018-12-14 16:16 ` Robert Pluim 2018-12-14 16:45 ` Eli Zaretskii @ 2018-12-14 20:25 ` Stefan Monnier 1 sibling, 0 replies; 36+ messages in thread From: Stefan Monnier @ 2018-12-14 20:25 UTC (permalink / raw) To: emacs-devel > [1] How many different font backends can we come up with using only 3 > letters? Are we limited to ASCII letters? Stefan ^ permalink raw reply [flat|nested] 36+ messages in thread
end of thread, other threads:[~2019-02-11 15:33 UTC | newest] Thread overview: 36+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20181214085417.15440.18845@vcs0.savannah.gnu.org> [not found] ` <20181214085418.6616820538@vcs0.savannah.gnu.org> 2018-12-14 12:18 ` harfbuzz 2f72162: Fix crash in the Cairo build Robert Pluim 2018-12-14 13:29 ` Eli Zaretskii 2018-12-14 14:09 ` Robert Pluim 2018-12-14 16:16 ` Robert Pluim 2018-12-14 16:45 ` Eli Zaretskii 2018-12-17 12:41 ` Robert Pluim 2018-12-17 17:39 ` Eli Zaretskii 2018-12-18 8:49 ` Robert Pluim 2018-12-18 13:01 ` Robert Pluim 2019-02-08 8:01 ` Robert Pluim 2019-02-08 8:04 ` Robert Pluim 2019-02-08 8:06 ` Robert Pluim 2019-02-08 9:37 ` Eli Zaretskii 2019-02-08 11:46 ` Robert Pluim 2019-02-08 13:14 ` Eli Zaretskii 2019-02-08 14:38 ` Robert Pluim 2019-02-08 16:11 ` Eli Zaretskii 2019-02-08 16:41 ` Robert Pluim 2019-02-08 21:29 ` Eli Zaretskii 2019-02-09 19:20 ` Glenn Morris 2019-02-09 19:34 ` Eli Zaretskii 2019-02-10 14:47 ` Stefan Monnier 2019-02-10 15:28 ` Eli Zaretskii 2019-02-10 18:18 ` Stefan Monnier 2019-02-10 18:48 ` Eli Zaretskii 2019-02-10 18:52 ` Stefan Monnier 2019-02-11 9:56 ` Robert Pluim 2019-02-10 18:30 ` Glenn Morris 2019-02-10 14:57 ` Eli Zaretskii 2019-02-10 18:36 ` Glenn Morris 2019-02-11 15:33 ` Eli Zaretskii 2018-12-17 21:49 ` Paul Eggert 2018-12-18 8:23 ` Robert Pluim 2018-12-19 8:32 ` Robert Pluim 2018-12-19 15:06 ` Eli Zaretskii 2018-12-14 20:25 ` Stefan Monnier
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).