source file of the GNU LilyPond music typesetter
- (c) 1997--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
{
}
-
-
Real
Paper_def::get_realvar (SCM s) const
{
/*
- todo: use symbols and hashtable idx?
+ Todo: use symbols and hashtable idx?
*/
Font_metric *
Paper_def::find_font (SCM fn, Real m)
Font_metric* f=0;
if (gh_list_p (fn))
{
- f = new Virtual_font_metric (fn, m, this);
+ f = new Virtual_font_metric (fn, m, this); // TODO: GC protection.
+
+ scaled_fonts_ = scm_acons (key, f->self_scm (), scaled_fonts_);
+ scm_gc_unprotect_object (f->self_scm ());
}
else
{
f = all_fonts_global->find_font (ly_scm2string (fn));
SCM val = Scaled_font_metric::make_scaled_font_metric (f, m);
scaled_fonts_ = scm_acons (key, val, scaled_fonts_);
- f = unsmob_metrics (val);
scm_gc_unprotect_object (val);
+
+ f = unsmob_metrics (val);
}
return f;
for (SCM s = scaled_fonts_; gh_pair_p (s); s = ly_cdr (s))
{
SCM desc = ly_caar (s);
+ if (!gh_string_p (gh_car (desc)))
+ continue ;
+
SCM mdesc = unsmob_metrics (ly_cdar (s))->description_;
l = gh_cons (gh_cons (mdesc, desc), l);