From 6e8698dcb9a9b9a98d8b1a644c84fcb737f99bdc Mon Sep 17 00:00:00 2001
From: David Kastrup <dak@gnu.org>
Date: Thu, 1 Aug 2013 12:20:24 +0200
Subject: [PATCH] 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.
---
 lily/pango-select.cc | 4 +++-
 lily/paper-def.cc    | 7 ++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

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));
-- 
2.39.5