]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/pango-font.cc
Fix some bugs in the dynamic engraver and PostScript backend
[lilypond.git] / lily / pango-font.cc
index 6c5735fec83d18df443a3a926927979e844e9911..73ea7426a65ea4a6bf498d1c9881a4bd138ae7ec 100644 (file)
@@ -99,8 +99,7 @@ get_unicode_name (char*s, FT_ULong code)
 
 
 Stencil
-Pango_font::pango_item_string_stencil (PangoItem const *item, string str,
-                                      bool tight_bbox) const
+Pango_font::pango_item_string_stencil (PangoItem const *item, string str) const
 {
   const int GLYPH_NAME_LEN = 256;
   char glyph_name[GLYPH_NAME_LEN];
@@ -119,28 +118,22 @@ Pango_font::pango_item_string_stencil (PangoItem const *item, string str,
                                                    PangoFcFont);
 
   FT_Face ftface = pango_fc_font_lock_face (fcfont);
-
-  PangoRectangle const *which_rect
-    = (tight_bbox)
-    ? &ink_rect
-    : &logical_rect;
-    
-  Box b (Interval (PANGO_LBEARING (logical_rect),
-                  PANGO_RBEARING (logical_rect)),
-        Interval (-PANGO_DESCENT (*which_rect),
-                  PANGO_ASCENT (*which_rect)));
+  Box b (Interval (PANGO_LBEARING (ink_rect),
+                  PANGO_RBEARING (ink_rect)),
+        Interval (-PANGO_DESCENT (ink_rect),
+                  PANGO_ASCENT (ink_rect)));
 
   b.scale (scale_);
   char const *ps_name_str0 = FT_Get_Postscript_Name (ftface);
   FcPattern *fcpat = fcfont->font_pattern;
-  FcChar8 *file_name_as_ptr = 0;
-  FcPatternGetString (fcpat, FC_FILE, 0, &file_name_as_ptr);
+  char *file_name_as_ptr = 0;
+  FcPatternGetString (fcpat, FC_FILE, 0, (FcChar8 **) & file_name_as_ptr);
 
   string file_name;
   if (file_name_as_ptr)
     {
       /* Normalize file name.  */
-      file_name = File_name ((char const *)file_name_as_ptr).to_string ();
+      file_name = File_name (file_name_as_ptr).to_string ();
     }
   
   SCM glyph_exprs = SCM_EOL;
@@ -181,8 +174,7 @@ Pango_font::pango_item_string_stencil (PangoItem const *item, string str,
 
       if (glyph_name[0] ==  '\0' && has_glyph_names)
        {
-         programming_error ("Glyph has no name, but font supports glyph naming. Skipping glyph: "
-                            + description_string ());
+         programming_error ("Glyph has no name, but font supports glyph naming. Skipping glyph.");
          continue;
        }
          
@@ -270,21 +262,8 @@ Pango_font::physical_font_tab () const
   return physical_font_tab_;
 }
 
-
-Stencil
-Pango_font::word_stencil (string str) const
-{
-  return text_stencil (str, true);
-}
-  
 Stencil
 Pango_font::text_stencil (string str) const
-{
-  return text_stencil (str, false);
-}
-
-Stencil
-Pango_font::text_stencil (string str, bool tight) const
 {
   GList *items
     = pango_itemize (context_,
@@ -308,7 +287,7 @@ Pango_font::text_stencil (string str, bool tight) const
     {
       PangoItem *item = (PangoItem *) ptr->data;
 
-      Stencil item_stencil = pango_item_string_stencil (item, str, tight);
+      Stencil item_stencil = pango_item_string_stencil (item, str);
 
       if (text_dir == RIGHT)
        {
@@ -344,11 +323,14 @@ Pango_font::text_stencil (string str, bool tight) const
       /*
        For Pango based backends, we take a shortcut.
       */
+      char *descr_string = pango_font_description_to_string (pango_description_);
       SCM exp
        = scm_list_3 (ly_symbol2scm ("utf-8-string"),
-                     scm_makfrom0str (description_string ().c_str ()),
+                     scm_makfrom0str (descr_string),
                      scm_makfrom0str (str.c_str ()));
 
+      g_free (descr_string);
+
       Box b (Interval (0, 0), Interval (0, 0));
       b.unite (dest.extent_box ());
       return Stencil (b, exp);
@@ -358,16 +340,6 @@ Pango_font::text_stencil (string str, bool tight) const
   return dest;
 }
 
-string
-Pango_font::description_string () const
-{
-  char *descr_string = pango_font_description_to_string (pango_description_);
-  string s (descr_string);
-  g_free (descr_string);
-  return s;
-}
-
-
 SCM
 Pango_font::font_file_name () const
 {