X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Ftfm.cc;h=df8d2d0dbcb623d90ad3704c723ffcdb58be2d25;hb=9a7a808b7c7abcacd08f4c992f75394cc4543d2e;hp=0a3e7362b5dc9d52ac7655c6c928cef79b17de5b;hpb=0c1ce854cfb2b9ad594526e359ec206fdd9b21fe;p=lilypond.git diff --git a/lily/tfm.cc b/lily/tfm.cc index 0a3e7362b5..df8d2d0dbc 100644 --- a/lily/tfm.cc +++ b/lily/tfm.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1999--2001 Jan Nieuwenhuizen + (c) 1999--2003 Jan Nieuwenhuizen some code shamelessly copied from GNU fontutils-0.6/tfm/tfm_input.c @@ -12,8 +12,9 @@ #include "tfm.hh" #include "tfm-reader.hh" #include "string-convert.hh" -#include "debug.hh" #include "warn.hh" +#include "warn.hh" +#include "dimensions.hh" Box Tex_font_char_metric::dimensions () const @@ -26,7 +27,12 @@ Tex_font_char_metric::dimensions () const } Real d = -depth_; - return Box (Interval (0, width_),Interval (d ? height_)); + + Real point_constant = 1 PT; + + return Box (Interval (0, width_*point_constant ), + Interval ((d ? height_)*point_constant)); } Tex_font_char_metric::Tex_font_char_metric () @@ -43,10 +49,10 @@ Tex_font_char_metric::Tex_font_char_metric () italic_correction_fix_ = 0; } -#define APPEND_CHAR_METRIC_ELT(k) outstr += to_str (#k) + " " + to_str (k ## _) + "; " +#define APPEND_CHAR_METRIC_ELT(k) outstr += ::to_string (#k) + " " + ::to_string (k ## _) + "; " String -Tex_font_char_metric::str () const +Tex_font_char_metric::to_string () const { String outstr ; @@ -79,10 +85,19 @@ Tex_font_metric::find_ascii (int ascii, bool warn) const return &dummy_static_char_metric; } + +/* + UGH: glyphs need not be consecutive in TFM. + */ int Tex_font_metric::count () const { - return ascii_to_metric_idx_.size (); + for (int i = ascii_to_metric_idx_.size (); i--;) + { + if (ascii_to_metric_idx_[i] != -1) + return i + 1; + } + return 0; } Box @@ -94,11 +109,11 @@ Tex_font_metric::get_char (int a) const String -Tex_font_metric::str () const +Tex_font_metric::to_string () const { String outstr; for (int i=0; i < char_metrics_.size (); i++) - outstr += char_metrics_[i].str (); + outstr += char_metrics_[i].to_string (); return outstr; } @@ -109,13 +124,13 @@ Tex_font_metric::str () const SCM Tex_font_metric::make_tfm (String fn) { - Tex_font_metric * tfm_p = new Tex_font_metric; + Tex_font_metric * tfm = new Tex_font_metric; Tex_font_metric_reader reader (fn); - tfm_p->info_ = reader.info_; - tfm_p->header_ = reader.header_; - tfm_p->char_metrics_ = reader.char_metrics_; - tfm_p->ascii_to_metric_idx_ = reader.ascii_to_metric_idx_; + tfm->info_ = reader.info_; + tfm->header_ = reader.header_; + tfm->char_metrics_ = reader.char_metrics_; + tfm->ascii_to_metric_idx_ = reader.ascii_to_metric_idx_; - return tfm_p->self_scm (); + return tfm->self_scm (); }