select_pango_font (Output_def *layout, SCM chain);
const int PANGO_RESOLUTION = 1200;
+PangoFontDescription *properties_to_pango_description (SCM chain, Real text_size);
#endif /* HAVE_PANGO16 */
#endif /* PANGO_FONT_HH */
--- /dev/null
+#include "config.hh"
+
+#if HAVE_PANGO_FT2
+#include "pango-font.hh"
+
+LY_DEFINE(ly_make_pango_description_string, "ly:make-pango-description-string",
+ 2,0,0, (SCM chain, SCM size),
+ "Make a PangoFontDescription string for the property alist @var{chain} at size @var{size}.")
+{
+ SCM_ASSERT_TYPE(scm_is_number (size), size, SCM_ARG1, __FUNCTION__, "number");
+ PangoFontDescription *pfd = properties_to_pango_description (chain, scm_to_double (size));
+ char *str = pango_font_description_to_string (pfd);
+
+ SCM scm_str = scm_makfrom0str (str);
+ g_free (str);
+ pango_font_description_free (pfd);
+ return scm_str;
+}
+
+#endif
#include "output-def.hh"
#include "pango-font.hh"
-Font_metric *
-select_pango_font (Output_def *layout, SCM chain)
+
+PangoFontDescription *
+properties_to_pango_description (SCM chain, Real text_size)
{
SCM name = ly_chain_assoc (ly_symbol2scm ("font-name"), chain);
}
Real step = robust_scm2double (ly_symbol2scm ("font-size"), 0.0);
- Real size = layout->get_dimension (ly_symbol2scm ("text-font-size"))
+ Real size = text_size
* pow (2.0, step / 6.0) * point_constant;
+
pango_font_description_set_size (description,
gint (size * PANGO_SCALE));
-
- Font_metric * fm = all_fonts_global->find_pango_font (description);
+ return description;
+}
+
+Font_metric *
+select_pango_font (Output_def *layout, SCM chain)
+{
+ PangoFontDescription *pfd =properties_to_pango_description (chain,
+ layout->get_dimension (ly_symbol2scm ("text-font-size")));
+
+ Font_metric * fm = all_fonts_global->find_pango_font (pfd);
return find_scaled_font (layout, fm, 1.0);
}
-
PangoStyle
symbol_to_pango_style (SCM style)
{