From: David Kastrup Date: Thu, 1 Aug 2013 10:20:24 +0000 (+0200) Subject: Issue 3483: Pango font size should be calculated using rounding X-Git-Tag: release/2.17.24-1~11 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=6e8698dcb9a9b9a98d8b1a644c84fcb737f99bdc;p=lilypond.git Issue 3483: Pango font size should be calculated using rounding So far, pango font size has been calculated using truncation. Since the calculation of font size may involve conversion of magnifications to font-size and back, numerical errors can easily throw the calculation slightly off. For that reason, rounding is the appropriate option here. --- diff --git a/lily/pango-select.cc b/lily/pango-select.cc index cb05b0c183..082bcd8243 100644 --- a/lily/pango-select.cc +++ b/lily/pango-select.cc @@ -19,6 +19,7 @@ #include "dimensions.hh" #include "all-font-metrics.hh" +#include "libc-extension.hh" #include "output-def.hh" #include "pango-font.hh" @@ -54,7 +55,8 @@ properties_to_pango_description (SCM chain, Real text_size) 0.0); Real size = text_size * pow (2.0, step / 6.0); - pango_font_description_set_size (description, gint (size * PANGO_SCALE)); + pango_font_description_set_size (description, + gint (my_round (size * PANGO_SCALE))); return description; } diff --git a/lily/paper-def.cc b/lily/paper-def.cc index aa3a296c1f..4c6dc86ebe 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -18,6 +18,7 @@ */ #include "dimensions.hh" +#include "libc-extension.hh" #include "output-def.hh" #include "modified-font-metric.hh" #include "pango-font.hh" @@ -92,9 +93,9 @@ find_pango_font (Output_def *layout, SCM descr, Real factor) PangoFontDescription *description = pango_font_description_from_string (scm_i_string_chars (descr)); - pango_font_description_set_size (description, - gint (factor * - pango_font_description_get_size (description))); + pango_font_description_set_size + (description, + gint (my_round (factor * pango_font_description_get_size (description)))); Font_metric *fm = all_fonts_global->find_pango_font (description, output_scale (layout));