source file of the GNU LilyPond music typesetter
- (c) 1999--2005 Jan Nieuwenhuizen <janneke@gnu.org>
+ (c) 1999--2006 Jan Nieuwenhuizen <janneke@gnu.org>
some code shamelessly copied from GNU fontutils-0.6/tfm/tfm_input.c
#include "tfm-reader.hh"
+#include "international.hh"
#include "string-convert.hh"
#include "warn.hh"
(1 << 20)
static const Real fix_to_real (Fix f);
-Tex_font_metric_reader::Tex_font_metric_reader (String name)
+Tex_font_metric_reader::Tex_font_metric_reader (string name)
: input_ (name)
{
- for (int i = 0; i < TFM_SIZE; i++)
- ascii_to_metric_idx_.push (-1);
+ for (vsize i = 0; i < TFM_SIZE; i++)
+ ascii_to_metric_idx_.push_back (VPOS);
read_header ();
read_params ();
read_char_metrics ();
-
}
static const Real
return get_U32_fix () * info_.design_size;
}
-String
+string
Tex_font_metric_reader::get_bcpl_string ()
{
U8 length_u8 = input_.get_U8 ();
- String str = input_.get_string (length_u8);
+ string str = input_.get_string (length_u8);
return str;
}
/* Not using ngettext's plural feature here, as this message is
more of a programming error. */
error (_f ("TFM header of `%s' has only %u word (s)",
- input_.name_string ().to_str0 (), header_length));
+ input_.name_string ().c_str (), header_length));
info_.checksum = input_.get_U32 ();
info_.design_size = get_U32_fix ();
font family and face byte probably aren't. So we don't read them. */
info_.coding_scheme = header_length > 2
? get_bcpl_string () : "unspecified";
-
}
/* Although TFM files are only usable by TeX if they have at least seven
if (header_.param_word_count > TFM_MAX_FONTDIMENS)
{
warning (_f ("%s: TFM file has %u parameters, which is more than the %u I can handle",
- input_.name_string ().to_str0 (),
+ input_.name_string ().c_str (),
header_.param_word_count,
TFM_MAX_FONTDIMENS));
header_.param_word_count = TFM_MAX_FONTDIMENS;
for (Char_code i = 2; i <= header_.param_word_count; i++)
info_.parameters[i - 1] = get_U32_fix_scaled ();
-
}
/* Read every character in the TFM file, storing the result in the
Tex_font_char_metric tfm_char = read_char_metric (i);
if (tfm_char.exists_)
ascii_to_metric_idx_[tfm_char.code_] = char_metrics_.size ();
- char_metrics_.push (tfm_char);
+ char_metrics_.push_back (tfm_char);
}
}
#define GET_CHAR_DIMEN(d) \
if (d##_index != 0) \
{ \
- input_.seek_str0 (header_. d##_pos + d##_index*4); \
+ input_.seek_str0 (header_.d##_pos + d##_index * 4); \
tfm_char.d##_fix_ = input_.get_U32 (); \
tfm_char.d##_ = fix_to_real (tfm_char.d##_fix_) \
* info_.design_size; \
#define KERN_FLAG 128
void
-Tex_font_metric_reader::read_lig_kern_program (Array<Tfm_ligature>* ligatures, Array<Tfm_kern>* kerns)
+Tex_font_metric_reader::read_lig_kern_program (vector<Tfm_ligature> *ligatures, vector<Tfm_kern> *kerns)
{
bool end_b;
kern_element.kern = get_U32_fix_scaled ();
input_.set_pos (old_pos);
- kerns->push (kern_element);
-
+ kerns->push_back (kern_element);
}
else
{
Tfm_ligature ligature_element;
ligature_element.character = next_char;
ligature_element.ligature = remainder;
- ligatures->push (ligature_element);
-
+ ligatures->push_back (ligature_element);
}
}
while (!end_b);
-
}