X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftfm.cc;h=9a8d7ee08a2c6289ee4cf4d7444de46e29b63ed6;hb=75eebcb49e52d296b1da3e1074e0825d2c780db4;hp=3b06ed338ceb984dc6e28626da9d1f7a65d52322;hpb=94a1966c72301b8bd1d8bb3b8628c3f089d007cf;p=lilypond.git diff --git a/lily/tfm.cc b/lily/tfm.cc index 3b06ed338c..9a8d7ee08a 100644 --- a/lily/tfm.cc +++ b/lily/tfm.cc @@ -1,18 +1,18 @@ -/* +/* tfm.cc -- implement Tex_font_metric - + source file of the GNU LilyPond music typesetter - - (c) 1999--2004 Jan Nieuwenhuizen + + (c) 1999--2006 Jan Nieuwenhuizen some code shamelessly copied from GNU fontutils-0.6/tfm/tfm_input.c - */ +*/ +#include "file-name.hh" #include "tfm.hh" #include "tfm-reader.hh" #include "string-convert.hh" #include "warn.hh" -#include "warn.hh" #include "dimensions.hh" static Tex_font_char_metric dummy_static_char_metric; @@ -40,14 +40,13 @@ Tex_font_char_metric::dimensions () const b.set_empty (); return b; } - - Real d = -depth_; + Real d = -depth_; Real point_constant = 1 PT; - - return Box (Interval (0, width_*point_constant ), - Interval ((d ? height_)*point_constant)); + + return Box (Interval (0, width_ * point_constant), + Interval (min (d, height_) * point_constant, + max (d, height_) * point_constant)); } Tex_font_metric::Tex_font_metric () @@ -55,8 +54,6 @@ Tex_font_metric::Tex_font_metric () encoding_table_ = SCM_EOL; } - - void Tex_font_metric::derived_mark () const { @@ -68,10 +65,10 @@ Tex_font_metric::find_ascii (int ascii, bool warn) const { if (ascii >= 0 && ascii < ascii_to_metric_idx_.size () && ascii_to_metric_idx_[ascii] >= 0) - return & char_metrics_[ascii_to_metric_idx_ [ascii]]; + return &char_metrics_[ascii_to_metric_idx_ [ascii]]; else if (warn) warning (_f ("can't find ascii character: %d", ascii)); - return &dummy_static_char_metric; + return &dummy_static_char_metric; } /* UGH: glyphs need not be consecutive in TFM. */ @@ -92,46 +89,42 @@ Tex_font_metric::get_ascii_char (int a) const } SCM -Tex_font_metric::make_tfm (String filename) +Tex_font_metric::make_tfm (String file_name) { Tex_font_metric *tfm = new Tex_font_metric; - Tex_font_metric_reader reader (filename); + Tex_font_metric_reader reader (file_name); tfm->info_ = reader.info_; tfm->header_ = reader.header_; tfm->char_metrics_ = reader.char_metrics_; tfm->ascii_to_metric_idx_ = reader.ascii_to_metric_idx_; - - tfm->encoding_table_ = - scm_call_1 (ly_scheme_function ("get-coding-table"), - scm_makfrom0str (tfm->info_.coding_scheme.to_str0 ())); - + File_name fn (file_name); + tfm->font_name_ = fn.base_; return tfm->self_scm (); } +Tfm_info const & +Tex_font_metric::info () const +{ + return info_; +} + Real Tex_font_metric::design_size () const { - return info_.design_size; + return info_.design_size * point_constant; } String -Tex_font_metric::coding_scheme () const +Tex_font_metric::font_name () const { - return info_.coding_scheme; + return font_name_; } int -Tex_font_metric::name_to_index (String s) const +Tex_font_metric::name_to_index (String) const { - SCM sym = ly_symbol2scm (s.to_str0 ()); - - SCM idx = scm_hash_ref (encoding_table_, sym, SCM_BOOL_F); - if (ly_char_p (idx)) - { - return (unsigned char) ly_scm2char (idx); - } - else - return -1; + assert (false); + return 0; }