]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 5147: Add whether to use OTF feature depending on Pango version
authorMasamichi Hosoda <trueroad@trueroad.jp>
Tue, 13 Jun 2017 12:16:45 +0000 (21:16 +0900)
committerMasamichi Hosoda <trueroad@trueroad.jp>
Mon, 19 Jun 2017 14:54:02 +0000 (23:54 +0900)
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.

aclocal.m4
config.hh.in
configure.ac
lily/pango-font.cc

index b15111dd0c097c640f4f737b73d6ee7c4f76d219..1228f6ca29c6208a89c19bdf8aee3f651a9c3dcb 100644 (file)
@@ -1344,6 +1344,35 @@ AC_DEFUN(STEPMAKE_PANGO_FT2, [
     fi
 ])
 
     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
 AC_DEFUN(STEPMAKE_FONTCONFIG, [
     PKG_CHECK_MODULES(FONTCONFIG, $1 >= $3, have_fontconfig=yes, true)
     if test "$have_fontconfig" = yes ; then
index 800d77d8a27f71473014c5f57af036aa389d3c2f..a093ad83b2b0b7d8824d33841991fc5e62cd8d2e 100644 (file)
@@ -89,6 +89,9 @@
 /* define if you have pango FT2 binding */
 #define HAVE_PANGO_FT2 0
 
 /* 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
 
 /* define if Guile has types scm_t_hash_fold_fn and scm_t_hash_handle_fn */
 #define HAVE_GUILE_HASH_FUNC 0
 
index d2ec5ec9561b77c161a796e5f23303234136fff9..11addfb70044067bb4966f864519f2113a2ffb1f 100644 (file)
@@ -260,7 +260,10 @@ AC_MSG_RESULT($rpath_b)
 HOST_ARCH=`$CC -dumpmachine`
 AC_SUBST(HOST_ARCH)
 
 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)
 
 STEPMAKE_FONTCONFIG(fontconfig, REQUIRED, 2.4.0)
 STEPMAKE_FREETYPE2(freetype2, REQUIRED, 2.1.10)
 
index 024d7b1d576f94bd731f1186351c26832da2fafe..6578f1c2389e215ce04a038b9e62f9cac603eee9 100644 (file)
@@ -400,11 +400,17 @@ Pango_font::text_stencil (Output_def * /* state */,
 
   if (!features_str.empty())
     {
 
   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);
       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);
     }
 
   pango_layout_set_text (layout, str.c_str (), -1);