diff options
Diffstat (limited to 'src/ftfont.h')
-rw-r--r-- | src/ftfont.h | 59 |
1 files changed, 50 insertions, 9 deletions
diff --git a/src/ftfont.h b/src/ftfont.h index 4201b2c2d67..cfab8d3154f 100644 --- a/src/ftfont.h +++ b/src/ftfont.h @@ -25,22 +25,63 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #include <ft2build.h> #include FT_FREETYPE_H #include FT_SIZES_H +#include FT_TRUETYPE_TABLES_H #ifdef FT_BDF_H -#include FT_BDF_H +# include FT_BDF_H #endif +#ifdef USE_BE_CAIRO +#include <cairo.h> +#endif + +#ifdef HAVE_HARFBUZZ +#include <hb.h> +#include <hb-ft.h> +#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 */ -extern FcCharSet *ftfont_get_fc_charset (Lisp_Object); -extern Lisp_Object ftfont_open2 (struct frame *f, - Lisp_Object entity, - int pixel_size, - Lisp_Object font_object); -extern size_t ftfont_info_size; +extern void ftfont_fix_match (FcPattern *, FcPattern *); +extern void ftfont_add_rendering_parameters (FcPattern *, Lisp_Object); +extern FcPattern *ftfont_entity_pattern (Lisp_Object, int); + +/* 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 */ + +#if defined (USE_CAIRO) || defined (USE_BE_CAIRO) + cairo_scaled_font_t *cr_scaled_font; + /* Scale factor from the bitmap strike metrics in 1/64 pixels, used + as the hb_position_t value in HarfBuzz, to those in (scaled) + pixels. The value is 0 for scalable fonts. */ + double bitmap_position_unit; + /* 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 */ |