/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2004--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 2004--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "file-name.hh"
#include "international.hh"
#include "lookup.hh" // debugging
+#include "ly-module.hh"
#include "main.hh"
#include "string-convert.hh"
#include "warn.hh"
#include "all-font-metrics.hh"
#include "program-option.hh"
+#include "open-type-font.hh"
#if HAVE_PANGO_FT2
#include "stencil.hh"
+void
+Pango_font::pre_init ()
+{
+ physical_font_tab_ = SCM_EOL;
+}
+
Pango_font::Pango_font (PangoFT2FontMap *fontmap,
PangoFontDescription const *description,
Real output_scale)
{
- // This line looks stupid, but if we don't initialize physical_font_tab_ before
- // we allocate memory in scm_c_make_hash_table, then that could trigger a garbage
- // collection.
- physical_font_tab_ = SCM_EOL;
physical_font_tab_ = scm_c_make_hash_table (11);
PangoDirection pango_dir = PANGO_DIRECTION_LTR;
context_ = pango_context_new ();
b.scale (scale_);
- char const *ps_name_str0 = FT_Get_Postscript_Name (ftface);
+ const string ps_name_str0 = get_postscript_name (ftface);
FcPattern *fcpat = fcfont->font_pattern;
FcChar8 *file_name_as_ptr = 0;
char_id = scm_from_uint32 (pg);
}
else
- char_id = scm_from_locale_string (glyph_name);
+ char_id = scm_from_utf8_string (glyph_name);
PangoRectangle logical_sub_rect;
PangoRectangle ink_sub_rect;
Real size = pango_font_description_get_size (descr)
/ (Real (PANGO_SCALE));
- if (!ps_name_str0)
+ if (ps_name_str0.empty ())
warning (_f ("no PostScript font name for font `%s'", file_name));
string ps_name;
- if (!ps_name_str0
+ if (ps_name_str0.empty ()
&& file_name != ""
&& (file_name.find (".otf") != NPOS
|| file_name.find (".cff") != NPOS))
name = String_convert::to_lower (name);
ps_name = initial + name;
}
- else if (ps_name_str0)
+ else if (!ps_name_str0.empty ())
ps_name = ps_name_str0;
if (ps_name.length ())
variable that is bound to a *named* procedure, i.e. not a
lambda expression.
*/
- if (utf8_string != SCM_BOOL_F
- && scm_procedure_name (SCM_VARIABLE_REF (utf8_string)) != SCM_BOOL_F)
+ if (scm_is_true (utf8_string)
+ && scm_is_true (scm_procedure_name (SCM_VARIABLE_REF (utf8_string))))
has_utf8_string = true;
}