Description
Blobs wrap a chunk of binary data to handle lifecycle management of data
while it is passed between client and HarfBuzz. Blobs are primarily used
to create font faces, but also to access font face tables, as well as
pass around other binary data.
Functions
hb_blob_create ()
hb_blob_t *
hb_blob_create (const char *data
,
unsigned int length
,
hb_memory_mode_t mode
,
void *user_data
,
hb_destroy_func_t destroy
);
Creates a new "blob" object wrapping data
. The mode
parameter is used
to negotiate ownership and lifecycle of data
.
[skip]
Returns
New blob, or the empty blob if something failed or if length
is
zero. Destroy with hb_blob_destroy()
.
Since: 0.9.2
hb_blob_create_from_file ()
hb_blob_t *
hb_blob_create_from_file (const char *file_name
);
Creates a new blob containing the data from the
specified binary font file.
Returns
An hb_blob_t pointer with the content of the file
Since: 1.7.7
hb_blob_create_sub_blob ()
hb_blob_t *
hb_blob_create_sub_blob (hb_blob_t *parent
,
unsigned int offset
,
unsigned int length
);
Returns a blob that represents a range of bytes in parent
. The new
blob is always created with HB_MEMORY_MODE_READONLY
, meaning that it
will never modify data in the parent blob. The parent data is not
expected to be modified, and will result in undefined behavior if it
is.
Makes parent
immutable.
Returns
New blob, or the empty blob if something failed or if
length
is zero or offset
is beyond the end of parent
's data. Destroy
with hb_blob_destroy()
.
Since: 0.9.2
hb_blob_copy_writable_or_fail ()
hb_blob_t *
hb_blob_copy_writable_or_fail (hb_blob_t *blob
);
Makes a writable copy of blob
.
Returns
The new blob, or nullptr if allocation failed
Since: 1.8.0
hb_blob_destroy ()
void
hb_blob_destroy (hb_blob_t *blob
);
Decreases the reference count on blob
, and if it reaches zero, destroys
blob
, freeing all memory, possibly calling the destroy-callback the blob
was created for if it has not been called already.
See TODO:link object types for more information.
[skip]
Since: 0.9.2
hb_blob_get_data ()
const char *
hb_blob_get_data (hb_blob_t *blob
,
unsigned int *length
);
Fetches the data from a blob.
Returns
the byte data of blob
.
[transfer none][array length=length]
Since: 0.9.2
hb_blob_get_data_writable ()
char *
hb_blob_get_data_writable (hb_blob_t *blob
,
unsigned int *length
);
Tries to make blob data writable (possibly copying it) and
return pointer to data.
Fails if blob has been made immutable, or if memory allocation
fails.
Returns
Writable blob data,
or NULL
if failed.
[transfer none][array length=length]
Since: 0.9.2
hb_blob_get_empty ()
hb_blob_t *
hb_blob_get_empty (void
);
Returns the singleton empty blob.
See TODO:link object types for more information.
Returns
The empty blob.
[transfer full]
Since: 0.9.2
hb_blob_get_length ()
unsigned int
hb_blob_get_length (hb_blob_t *blob
);
Fetches the length of a blob's data.
Returns
the length of blob
data in bytes.
Since: 0.9.2
hb_blob_get_user_data ()
void *
hb_blob_get_user_data (hb_blob_t *blob
,
hb_user_data_key_t *key
);
Fetches the user data associated with the specified key,
attached to the specified font-functions structure.
[skip]
Returns
A pointer to the user data.
[transfer none]
Since: 0.9.2
hb_blob_is_immutable ()
hb_bool_t
hb_blob_is_immutable (hb_blob_t *blob
);
Tests whether a blob is immutable.
Returns
true
if blob
is immutable, false otherwise
Since: 0.9.2
hb_blob_make_immutable ()
void
hb_blob_make_immutable (hb_blob_t *blob
);
Makes a blob immutable.
Since: 0.9.2
hb_blob_reference ()
hb_blob_t *
hb_blob_reference (hb_blob_t *blob
);
Increases the reference count on blob
.
See TODO:link object types for more information.
[skip]
Since: 0.9.2