diff options
Diffstat (limited to 'src/sfntfont.h')
-rw-r--r-- | src/sfntfont.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/sfntfont.h b/src/sfntfont.h new file mode 100644 index 00000000000..0e57ee35028 --- /dev/null +++ b/src/sfntfont.h @@ -0,0 +1,78 @@ +/* sfnt format font driver for GNU Emacs. + +Copyright (C) 2023-2024 Free Software Foundation, Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or (at +your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ + +#ifndef _SFNTFONT_H_ +#define _SFNTFONT_H_ + +#include "lisp.h" +#include "frame.h" +#include "font.h" +#include "sfnt.h" + +extern int sfnt_enum_font (const char *); + + +/* Font driver callbacks. */ + +extern Lisp_Object sfntfont_list (struct frame *, Lisp_Object); +extern Lisp_Object sfntfont_match (struct frame *, Lisp_Object); +extern Lisp_Object sfntfont_open (struct frame *, Lisp_Object, int); + +extern unsigned int sfntfont_encode_char (struct font *, int); +extern void sfntfont_text_extents (struct font *, const unsigned int *, + int, struct font_metrics *); +extern void sfntfont_close (struct font *); +extern int sfntfont_draw (struct glyph_string *, int, int, + int, int, bool); +extern Lisp_Object sfntfont_list_family (struct frame *); +extern int sfntfont_get_variation_glyphs (struct font *, int, unsigned[256]); + + +/* Initialization functions. */ + +typedef void (*sfntfont_put_glyph_proc) (struct glyph_string *, int, int, + int, int, bool, struct sfnt_raster **, + int *); + +extern void syms_of_sfntfont (void); +extern void init_sfntfont (void); +extern void mark_sfntfont (void); +extern void init_sfntfont_vendor (Lisp_Object, const struct font_driver *, + sfntfont_put_glyph_proc); + + +/* mmap specific functions. */ + +#ifdef HAVE_MMAP + +extern bool sfntfont_detect_sigbus (void *); + +#endif /* HAVE_MMAP */ + + + +/* HarfBuzz specific functions. */ + +#ifdef HAVE_HARFBUZZ + +extern hb_font_t *sfntfont_begin_hb_font (struct font *, double *); + +#endif /* HAVE_HARFBUZZ */ + +#endif /* _SFNTFONT_H_ */ |