From 51b2a6eacacf32b7adca130ebd9243ca72cbde8e Mon Sep 17 00:00:00 2001 From: Jay Anderson
Date: Sat, 30 Jan 2016 22:45:32 -0700 Subject: [PATCH] Initial work to support opentype font features. --- lily/font-interface.cc | 1 + lily/font-metric.cc | 4 +++- lily/include/font-metric.hh | 4 +++- lily/include/modified-font-metric.hh | 2 +- lily/include/pango-font.hh | 4 +++- lily/modified-font-metric.cc | 8 +++++--- lily/pango-font.cc | 14 +++++++++++++- lily/text-interface.cc | 15 ++++++++++++++- scm/define-grob-properties.scm | 1 + 9 files changed, 44 insertions(+), 9 deletions(-) diff --git a/lily/font-interface.cc b/lily/font-interface.cc index de787fd..5e5f18c 100644 --- a/lily/font-interface.cc +++ b/lily/font-interface.cc @@ -72,4 +72,5 @@ ADD_INTERFACE (Font_interface, "font-series " "font-shape " "font-size " + "font-features " ); diff --git a/lily/font-metric.cc b/lily/font-metric.cc index f2b6a0e..6236a87 100644 --- a/lily/font-metric.cc +++ b/lily/font-metric.cc @@ -147,7 +147,9 @@ Font_metric::sub_fonts () const Stencil Font_metric::text_stencil (Output_def *state, - const string&, bool) const + const string&, + bool, + const string&) const { (void) state; diff --git a/lily/include/font-metric.hh b/lily/include/font-metric.hh index d74c815..0e2d15c 100644 --- a/lily/include/font-metric.hh +++ b/lily/include/font-metric.hh @@ -47,7 +47,9 @@ public: // Return stencil for given string. output_state may be modified to // record the font. virtual Stencil text_stencil (Output_def *output_state, - const string &text, bool music) const; + const string &text, + bool music, + const string &features_str) const; virtual string font_name () const; virtual size_t count () const; diff --git a/lily/include/modified-font-metric.hh b/lily/include/modified-font-metric.hh index c63c532..eab1836 100644 --- a/lily/include/modified-font-metric.hh +++ b/lily/include/modified-font-metric.hh @@ -26,7 +26,7 @@ struct Modified_font_metric : public Font_metric { public: - Stencil text_stencil (Output_def *output_state, const string&, bool) const; + Stencil text_stencil (Output_def *output_state, const string&, bool, const string&) const; Real get_magnification () const; static SCM make_scaled_font_metric (Font_metric *fm, Real magnification); diff --git a/lily/include/pango-font.hh b/lily/include/pango-font.hh index ff5e630..eeaa4dd 100644 --- a/lily/include/pango-font.hh +++ b/lily/include/pango-font.hh @@ -59,7 +59,9 @@ public: Stencil pango_item_string_stencil (PangoGlyphItem const *) const; virtual Stencil text_stencil (Output_def *output_state, - const string &text, bool music) const; + const string &text, + bool music, + const string &features_str) const; virtual void derived_mark () const; }; diff --git a/lily/modified-font-metric.cc b/lily/modified-font-metric.cc index d1c80b6..668f011 100644 --- a/lily/modified-font-metric.cc +++ b/lily/modified-font-metric.cc @@ -106,12 +106,14 @@ Modified_font_metric::derived_mark () const Stencil Modified_font_metric::text_stencil (Output_def *state, - const string &text, bool feta) const + const string &text, + bool feta, + const string &features_str) const { Box b; if (Pango_font *pf = dynamic_cast