Bug 485559 – Boston Summit HarfBuzz optimizations

2007-10-10  Behdad Esfahbod  <[email protected]>

        Bug 485559 – Boston Summit HarfBuzz optimizations

        * pango/opentype/*: HarfBuzz hacking to:

          - Rename last remaining FT_Err stuff to HB_Err.

          - Fix a couple invalid table paths to be permissive so
            fonts work better.  Particularly GDEF table for Nafees
            Nastaliq is loaded and works great now.

          - Optimize harfbuzz buffer to not copy/swap for simple
          one-to-one and "copy" GSUB operations.

        * pango/pango-ot*: Update to FT_Err to HB_Err renaming.


diff --git a/src/harfbuzz-buffer.h b/src/harfbuzz-buffer.h
index c7478e3..8b6b659 100644
--- a/src/harfbuzz-buffer.h
+++ b/src/harfbuzz-buffer.h
@@ -56,32 +56,37 @@
   FT_ULong    in_pos;
   FT_ULong    out_pos;
   
+  FT_Bool       inplace;
   HB_GlyphItem  in_string;
   HB_GlyphItem  out_string;
+  HB_GlyphItem  alt_string;
   HB_Position   positions;
   FT_UShort      max_ligID;
 } HB_BufferRec, *HB_Buffer;
 
-FT_Error
+HB_Error
 hb_buffer_new( FT_Memory   memory,
 		HB_Buffer *buffer );
 
-FT_Error
+void
 hb_buffer_swap( HB_Buffer buffer );
 
-FT_Error
+void
 hb_buffer_free( HB_Buffer buffer );
 
-FT_Error
+void
 hb_buffer_clear( HB_Buffer buffer );
 
-FT_Error
+void
+hb_buffer_clear_output( HB_Buffer buffer );
+
+HB_Error
 hb_buffer_add_glyph( HB_Buffer buffer,
 		      FT_UInt    glyph_index,
 		      FT_UInt    properties,
 		      FT_UInt    cluster );
 
-FT_Error
+HB_Error
 hb_buffer_add_output_glyphs( HB_Buffer buffer,
 			      FT_UShort  num_in,
 			      FT_UShort  num_out,
@@ -89,15 +94,20 @@
 			      FT_UShort  component,
 			      FT_UShort  ligID );
 
-FT_Error
+HB_Error
 hb_buffer_add_output_glyph ( HB_Buffer buffer,
 			      FT_UInt    glyph_index,
 			      FT_UShort  component,
 			      FT_UShort  ligID );
 
-FT_Error
+HB_Error
 hb_buffer_copy_output_glyph ( HB_Buffer buffer );
 
+HB_Error
+hb_buffer_replace_output_glyph ( HB_Buffer buffer,
+				 FT_UInt   glyph_index,
+				 FT_Bool   inplace );
+
 FT_UShort
 hb_buffer_allocate_ligid( HB_Buffer buffer );