diff options
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 2019-06-02 13:18:39 +0900 |
---|---|---|
committer | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 2019-06-02 13:18:39 +0900 |
commit | 1ab69630dcb8c7a1b1b4171211a7c8ebf11b0d1c (patch) | |
tree | be63752fccbd05d7863fe7329e717da77d3f803f /src/ftfont.c | |
parent | ab1d5d400536f83a43b65c9bcc347a900f6008b4 (diff) | |
download | emacs-1ab69630dcb8c7a1b1b4171211a7c8ebf11b0d1c.tar.gz emacs-1ab69630dcb8c7a1b1b4171211a7c8ebf11b0d1c.tar.bz2 emacs-1ab69630dcb8c7a1b1b4171211a7c8ebf11b0d1c.zip |
Make fthbfont and derivatives use common HarfBuzz code in hbfont.c
* src/font.h (fthbfont_shape, fthbfont_combining_capability)
[HAVE_HARFBUZZ]: Remove prototypes.
* src/ftfont.c: Don't include math.h.
(uni_combining, uni_general, uni_mirroring, get_hb_unicode_funcs)
(fthbfont_shape_by_hb, fthbfont_combining_capability, fthbfont_shape)
[HAVE_HARFBUZZ]: Remove functions.
* src/ftfont.c (syms_of_ftfont_for_pdumper) [HAVE_HARFBUZZ]:
* src/xftfont.c (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]:
* src/ftcrfont.c (syms_of_ftcrfont_for_pdumper) [HAVE_HARFBUZZ]: Use
hbfont_shape and hbfont_combining_capability for fthbfont_shape and
fthbfont_combining_capability, respectively.
Diffstat (limited to 'src/ftfont.c')
-rw-r--r-- | src/ftfont.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/ftfont.c b/src/ftfont.c index 97ab4d0e377..efd0fcbd8c0 100644 --- a/src/ftfont.c +++ b/src/ftfont.c @@ -2820,21 +2820,41 @@ ftfont_shape (Lisp_Object lgstring, Lisp_Object direction) #endif /* HAVE_M17N_FLT */ -#ifdef HAVE_OTF_GET_VARIATION_GLYPHS +#endif /* HAVE_LIBOTF */ +#if defined HAVE_OTF_GET_VARIATION_GLYPHS || defined HAVE_FT_FACE_GETCHARVARIANTINDEX int ftfont_variation_glyphs (struct font *font, int c, unsigned variations[256]) { struct font_info *ftfont_info = (struct font_info *) font; +#ifdef HAVE_OTF_GET_VARIATION_GLYPHS OTF *otf = ftfont_get_otf (ftfont_info); if (! otf) return 0; return OTF_get_variation_glyphs (otf, c, variations); -} +#else /* !HAVE_OTF_GET_VARIATION_GLYPHS */ + FT_Face ft_face = ftfont_info->ft_size->face; + int i, n = 0; -#endif /* HAVE_OTF_GET_VARIATION_GLYPHS */ -#endif /* HAVE_LIBOTF */ + for (i = 0; i < 16; i++) + { + variations[i] = FT_Face_GetCharVariantIndex (ft_face, c, 0xFE00 + i); + if (variations[i]) + n++; + } + for (; i < 256; i++) + { + variations[i] = FT_Face_GetCharVariantIndex (ft_face, c, + 0xE0100 + (i - 16)); + if (variations[i]) + n++; + } + + return n; +#endif /* !HAVE_OTF_GET_VARIATION_GLYPHS */ +} +#endif /* HAVE_OTF_GET_VARIATION_GLYPHS || HAVE_FT_FACE_GETCHARVARIANTINDEX */ #ifdef HAVE_HARFBUZZ @@ -2936,7 +2956,7 @@ static struct font_driver const ftfont_driver = #if defined HAVE_M17N_FLT && defined HAVE_LIBOTF .shape = ftfont_shape, #endif -#ifdef HAVE_OTF_GET_VARIATION_GLYPHS +#if defined HAVE_OTF_GET_VARIATION_GLYPHS || defined HAVE_FT_FACE_GETCHARVARIANTINDEX .get_variation_glyphs = ftfont_variation_glyphs, #endif .filter_properties = ftfont_filter_properties, |