summaryrefslogtreecommitdiff
path: root/src/ftfont.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ftfont.h')
-rw-r--r--src/ftfont.h37
1 files changed, 33 insertions, 4 deletions
diff --git a/src/ftfont.h b/src/ftfont.h
index 4201b2c2d67..b6b0c5ba47b 100644
--- a/src/ftfont.h
+++ b/src/ftfont.h
@@ -26,13 +26,13 @@ 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_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 */
@@ -41,6 +41,35 @@ 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 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 */