summaryrefslogtreecommitdiff
path: root/src/ftfont.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ftfont.h')
-rw-r--r--src/ftfont.h59
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 */