From: Masamichi Hosoda Date: Tue, 13 Jun 2017 12:16:45 +0000 (+0900) Subject: Issue 5147: Add whether to use OTF feature depending on Pango version X-Git-Url: https://git.donarmstrong.com/?p=lilypond.git;a=commitdiff_plain;h=f75eceb27a4b630d4e898b1d93e3b051f969ff5e Issue 5147: Add whether to use OTF feature depending on Pango version Issue 1388 requires Pango 1.38+ for using OpenType font feature. However, LilyDev 4.1 has Pango 1.36.8. So it cannot compile Issue 1388. This commit makes LilyPond can be configured without OpenType font feature if Pango is old. Therefore, LilyPond become to be able to compile even by LilyDev 4.1 that has old Pango. However, the binary that compiled by LilyDev 4.1 cannot use OpenType font feature. It is required Pango 1.38+ if you'd like to use the feature. --- diff --git a/aclocal.m4 b/aclocal.m4 index b15111dd0c..1228f6ca29 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1344,6 +1344,35 @@ AC_DEFUN(STEPMAKE_PANGO_FT2, [ fi ]) +AC_DEFUN(STEPMAKE_PANGO_FT2_WITH_OTF_FEATURE, [ + PKG_CHECK_MODULES(PANGO_FT2, $1 >= $3, + have_pangoft2_with_otf_feature=yes, true) + if test "$have_pangoft2_with_otf_feature" = yes ; then + AC_DEFINE(HAVE_PANGO16) + AC_DEFINE(HAVE_PANGO_FT2) + AC_DEFINE(HAVE_PANGO_FT2_WITH_OTF_FEATURE) + # Do not pollute user-CPPFLAGS with configure-CPPFLAGS + save_CPPFLAGS="$CPPFLAGS" + save_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $PANGO_FT2_CFLAGS" + LIBS="$PANGO_FT2_LIBS $LIBS" + AC_CHECK_HEADERS([pango/pangoft2.h]) + AC_CHECK_FUNCS([pango_ft2_font_map_create_context]) + AC_SUBST(PANGO_FT2_CFLAGS) + AC_SUBST(PANGO_FT2_LIBS) + CPPFLAGS="$save_CPPFLAGS" + LIBS="$save_LIBS" + else + # UGR + #r="lib$1-dev or $1-devel"e + r="libpango1.0-dev or pango?-devel" + ver="`pkg-config --modversion $1`" + STEPMAKE_ADD_ENTRY($2, ["$r >= $3 (It is required if you'd like "]) + STEPMAKE_ADD_ENTRY($2, ["to use OpenType font feature. "]) + STEPMAKE_ADD_ENTRY($2, ["installed: $ver)"]) + fi +]) + AC_DEFUN(STEPMAKE_FONTCONFIG, [ PKG_CHECK_MODULES(FONTCONFIG, $1 >= $3, have_fontconfig=yes, true) if test "$have_fontconfig" = yes ; then diff --git a/config.hh.in b/config.hh.in index 800d77d8a2..a093ad83b2 100644 --- a/config.hh.in +++ b/config.hh.in @@ -89,6 +89,9 @@ /* define if you have pango FT2 binding */ #define HAVE_PANGO_FT2 0 +/* define if you have pango FT2 binding with OpenType font feature */ +#define HAVE_PANGO_FT2_WITH_OTF_FEATURE 0 + /* define if Guile has types scm_t_hash_fold_fn and scm_t_hash_handle_fn */ #define HAVE_GUILE_HASH_FUNC 0 diff --git a/configure.ac b/configure.ac index d2ec5ec956..11addfb700 100644 --- a/configure.ac +++ b/configure.ac @@ -260,7 +260,10 @@ AC_MSG_RESULT($rpath_b) HOST_ARCH=`$CC -dumpmachine` AC_SUBST(HOST_ARCH) -STEPMAKE_PANGO_FT2(pangoft2, REQUIRED, 1.38.0) +STEPMAKE_PANGO_FT2_WITH_OTF_FEATURE(pangoft2, OPTIONAL, 1.38.0) +if test "$have_pangoft2_with_otf_feature" != yes ; then + STEPMAKE_PANGO_FT2(pangoft2, REQUIRED, 1.6.0) +fi STEPMAKE_FONTCONFIG(fontconfig, REQUIRED, 2.4.0) STEPMAKE_FREETYPE2(freetype2, REQUIRED, 2.1.10) diff --git a/lily/pango-font.cc b/lily/pango-font.cc index 024d7b1d57..6578f1c238 100644 --- a/lily/pango-font.cc +++ b/lily/pango-font.cc @@ -400,11 +400,17 @@ Pango_font::text_stencil (Output_def * /* state */, if (!features_str.empty()) { +#if HAVE_PANGO_FT2_WITH_OTF_FEATURE PangoAttrList *list = pango_attr_list_new(); PangoAttribute *features_attr = pango_attr_font_features_new(features_str.c_str()); pango_attr_list_insert(list, features_attr); pango_layout_set_attributes(layout, list); pango_attr_list_unref(list); +#else + warning (_f ("OpenType font feature `%s' cannot be used " + "since this binary is configured without the feature.", + features_str.c_str ())); +#endif } pango_layout_set_text (layout, str.c_str (), -1);