Commit 1ab69630 authored by YAMAMOTO Mitsuharu's avatar YAMAMOTO Mitsuharu

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.
parent ab1d5d40
Pipeline #1872 failed with stage
in 3 seconds
...@@ -3413,6 +3413,13 @@ if test "${HAVE_X11}" = "yes"; then ...@@ -3413,6 +3413,13 @@ if test "${HAVE_X11}" = "yes"; then
if test "${HAVE_FREETYPE}" = "yes"; then if test "${HAVE_FREETYPE}" = "yes"; then
AC_DEFINE(HAVE_FREETYPE, 1, AC_DEFINE(HAVE_FREETYPE, 1,
[Define to 1 if using the freetype and fontconfig libraries.]) [Define to 1 if using the freetype and fontconfig libraries.])
OLD_CFLAGS=$CFLAGS
OLD_LIBS=$LIBS
CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
LIBS="$FREETYPE_LIBS $LIBS"
AC_CHECK_FUNCS(FT_Face_GetCharVariantIndex)
CFLAGS=$OLD_CFLAGS
LIBS=$OLD_LIBS
if test "${with_libotf}" != "no"; then if test "${with_libotf}" != "no"; then
EMACS_CHECK_MODULES([LIBOTF], [libotf]) EMACS_CHECK_MODULES([LIBOTF], [libotf])
if test "$HAVE_LIBOTF" = "yes"; then if test "$HAVE_LIBOTF" = "yes"; then
......
...@@ -455,7 +455,7 @@ ftcrfont_shape (Lisp_Object lgstring, Lisp_Object direction) ...@@ -455,7 +455,7 @@ ftcrfont_shape (Lisp_Object lgstring, Lisp_Object direction)
} }
#endif #endif
#ifdef HAVE_OTF_GET_VARIATION_GLYPHS #if defined HAVE_OTF_GET_VARIATION_GLYPHS || defined HAVE_FT_FACE_GETCHARVARIANTINDEX
static int static int
ftcrfont_variation_glyphs (struct font *font, int c, unsigned variations[256]) ftcrfont_variation_glyphs (struct font *font, int c, unsigned variations[256])
{ {
...@@ -470,7 +470,7 @@ ftcrfont_variation_glyphs (struct font *font, int c, unsigned variations[256]) ...@@ -470,7 +470,7 @@ ftcrfont_variation_glyphs (struct font *font, int c, unsigned variations[256])
return result; return result;
} }
#endif /* HAVE_OTF_GET_VARIATION_GLYPHS */ #endif /* HAVE_OTF_GET_VARIATION_GLYPHS || HAVE_FT_FACE_GETCHARVARIANTINDEX */
static int static int
ftcrfont_draw (struct glyph_string *s, ftcrfont_draw (struct glyph_string *s,
...@@ -583,7 +583,7 @@ struct font_driver const ftcrfont_driver = ...@@ -583,7 +583,7 @@ struct font_driver const ftcrfont_driver =
#if defined HAVE_M17N_FLT && defined HAVE_LIBOTF #if defined HAVE_M17N_FLT && defined HAVE_LIBOTF
.shape = ftcrfont_shape, .shape = ftcrfont_shape,
#endif #endif
#ifdef HAVE_OTF_GET_VARIATION_GLYPHS #if defined HAVE_OTF_GET_VARIATION_GLYPHS || defined HAVE_FT_FACE_GETCHARVARIANTINDEX
.get_variation_glyphs = ftcrfont_variation_glyphs, .get_variation_glyphs = ftcrfont_variation_glyphs,
#endif #endif
.filter_properties = ftfont_filter_properties, .filter_properties = ftfont_filter_properties,
......
...@@ -2820,21 +2820,41 @@ ftfont_shape (Lisp_Object lgstring, Lisp_Object direction) ...@@ -2820,21 +2820,41 @@ ftfont_shape (Lisp_Object lgstring, Lisp_Object direction)
#endif /* HAVE_M17N_FLT */ #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 int
ftfont_variation_glyphs (struct font *font, int c, unsigned variations[256]) ftfont_variation_glyphs (struct font *font, int c, unsigned variations[256])
{ {
struct font_info *ftfont_info = (struct font_info *) font; struct font_info *ftfont_info = (struct font_info *) font;
#ifdef HAVE_OTF_GET_VARIATION_GLYPHS
OTF *otf = ftfont_get_otf (ftfont_info); OTF *otf = ftfont_get_otf (ftfont_info);
if (! otf) if (! otf)
return 0; return 0;
return OTF_get_variation_glyphs (otf, c, variations); 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 */ for (i = 0; i < 16; i++)
#endif /* HAVE_LIBOTF */ {
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 #ifdef HAVE_HARFBUZZ
...@@ -2936,7 +2956,7 @@ static struct font_driver const ftfont_driver = ...@@ -2936,7 +2956,7 @@ static struct font_driver const ftfont_driver =
#if defined HAVE_M17N_FLT && defined HAVE_LIBOTF #if defined HAVE_M17N_FLT && defined HAVE_LIBOTF
.shape = ftfont_shape, .shape = ftfont_shape,
#endif #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, .get_variation_glyphs = ftfont_variation_glyphs,
#endif #endif
.filter_properties = ftfont_filter_properties, .filter_properties = ftfont_filter_properties,
......
...@@ -351,7 +351,7 @@ struct font_driver const ftxfont_driver = ...@@ -351,7 +351,7 @@ struct font_driver const ftxfont_driver =
#if defined HAVE_M17N_FLT && defined HAVE_LIBOTF #if defined HAVE_M17N_FLT && defined HAVE_LIBOTF
.shape = ftfont_shape, .shape = ftfont_shape,
#endif #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, .get_variation_glyphs = ftfont_variation_glyphs,
#endif #endif
.filter_properties = ftfont_filter_properties, .filter_properties = ftfont_filter_properties,
......
...@@ -661,7 +661,7 @@ struct font_driver const xftfont_driver = ...@@ -661,7 +661,7 @@ struct font_driver const xftfont_driver =
#if defined HAVE_M17N_FLT && defined HAVE_LIBOTF #if defined HAVE_M17N_FLT && defined HAVE_LIBOTF
.shape = xftfont_shape, .shape = xftfont_shape,
#endif #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, .get_variation_glyphs = ftfont_variation_glyphs,
#endif #endif
.filter_properties = ftfont_filter_properties, .filter_properties = ftfont_filter_properties,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment