diff options
author | Robert Pluim <rpluim@gmail.com> | 2019-02-08 15:36:56 +0100 |
---|---|---|
committer | Robert Pluim <rpluim@gmail.com> | 2019-02-08 15:36:56 +0100 |
commit | 015a6e1df2772bd43680df5cbeaffccf98a881da (patch) | |
tree | beb0f733dc04259d9fdf896ece841bce859b2c1e /src/ftfont.h | |
parent | 066a2b4914592478153983b587a36d226061dd89 (diff) | |
download | emacs-015a6e1df2772bd43680df5cbeaffccf98a881da.tar.gz emacs-015a6e1df2772bd43680df5cbeaffccf98a881da.tar.bz2 emacs-015a6e1df2772bd43680df5cbeaffccf98a881da.zip |
Unify three font info structures
* src/ftfont.h (struct font_info): New type, unifies similar types
from ftcrfont.c, ftfont.c and xftfont.c
* src/xftfont.c (struct xftfont_info): Remove, replace with struct
font_info. Adjust all uses.
* src/ftcrfont.c (struct ftcrfont_info): Likewise.
* src/ftfont.c (struct ftfont_info): Likewise.
(cherry picked from commit 9e0d69b5a17a0fa3b0dd099a51584a85f3ddb5bf)
Diffstat (limited to 'src/ftfont.h')
-rw-r--r-- | src/ftfont.h | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/src/ftfont.h b/src/ftfont.h index d856c106183..3bbcbfb5d70 100644 --- a/src/ftfont.h +++ b/src/ftfont.h @@ -26,7 +26,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #include FT_FREETYPE_H #include FT_SIZES_H #ifdef FT_BDF_H -#include FT_BDF_H +# include FT_BDF_H #endif #ifdef HAVE_HARFBUZZ @@ -35,9 +35,9 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #endif /* HAVE_HARFBUZZ */ #ifdef HAVE_LIBOTF -#include <otf.h> +# include <otf.h> #ifdef HAVE_M17N_FLT -#include <m17n-flt.h> +# include <m17n-flt.h> #endif /* HAVE_M17N_FLT */ #endif /* HAVE_LIBOTF */ @@ -46,6 +46,38 @@ extern Lisp_Object ftfont_open2 (struct frame *f, Lisp_Object entity, int pixel_size, Lisp_Object font_object); -extern size_t ftfont_info_size; + +/* This struct is shared by the XFT, Freetype, and Cairo font + backends. Members up to and including 'matrix' are common, the + rest depend on which backend is in use. */ +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 HAVE_HARFBUZZ + hb_font_t *hb_font; +#endif /* HAVE_HARFBUZZ */ + +#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 */ |