|  |  |  |  | 
While most of HarfBuzz's object types are specific to the shaping process, blobs are somewhat different.
      Blobs are an abstraction designed to negotiate lifecycle and
      permissions for raw pieces of data.  For example, when you load
      the raw font data into memory and want to pass it to HarfBuzz,
      you do so in a hb_blob_t wrapper.
    
      This allows you to take advantage of HarfBuzz's
      reference-counting and destroy
      callbacks. If you allocated the memory for the data using
      malloc(), you would create the blob using
    
      hb_blob_create (data, length, HB_MEMORY_MODE_WRITABLE, data, free)
    
      That way, HarfBuzz will call free() on the
      allocated memory whenever the blob drops its last reference and
      is deconstructed.  Consequently, the user code can stop worrying
      about freeing memory and let the reference-counting machinery
      take care of that.
    
Most of the time, blobs are read-only, facilitating their use in immutable objects.