[HB] Simplify buffer
diff --git a/src/harfbuzz-buffer.c b/src/harfbuzz-buffer.c
index b99639c..02842ea 100644
--- a/src/harfbuzz-buffer.c
+++ b/src/harfbuzz-buffer.c
@@ -208,6 +208,8 @@
HB_INTERNAL HB_Error
_hb_buffer_clear_positions( HB_Buffer buffer )
{
+ _hb_buffer_clear_output (buffer);
+
if ( !buffer->positions )
{
HB_Error error;
@@ -328,16 +330,16 @@
}
HB_INTERNAL HB_Error
-_hb_buffer_copy_output_glyph ( HB_Buffer buffer )
-{
+_hb_buffer_next_glyph ( HB_Buffer buffer )
+{
HB_Error error;
- error = hb_buffer_ensure( buffer, buffer->out_pos + 1 );
- if ( error )
- return error;
-
if ( buffer->separate_out )
{
+ error = hb_buffer_ensure( buffer, buffer->out_pos + 1 );
+ if ( error )
+ return error;
+
buffer->out_string[buffer->out_pos] = buffer->in_string[buffer->in_pos];
}
@@ -349,20 +351,19 @@
}
HB_INTERNAL HB_Error
-_hb_buffer_replace_output_glyph( HB_Buffer buffer,
- HB_UInt glyph_index,
- HB_Bool inplace )
+_hb_buffer_replace_glyph( HB_Buffer buffer,
+ HB_UInt glyph_index )
{
HB_Error error;
- if ( inplace )
+ if ( !buffer->separate_out )
{
- error = _hb_buffer_copy_output_glyph ( buffer );
- if ( error )
- return error;
+ buffer->out_string[buffer->out_pos].gindex = glyph_index;
- buffer->out_string[buffer->out_pos-1].gindex = glyph_index;
+ buffer->in_pos++;
+ buffer->out_pos++;
+ buffer->out_length = buffer->out_pos;
}
else
{
@@ -375,9 +376,5 @@
HB_INTERNAL HB_UShort
_hb_buffer_allocate_ligid( HB_Buffer buffer )
{
- buffer->max_ligID++;
- if (HB_UNLIKELY (buffer->max_ligID == 0))
- buffer->max_ligID++;
-
- return buffer->max_ligID;
+ return ++buffer->max_ligID;
}