/usr/share/gtk-doc/html/harfbuzz
NameSizeModeActions
a-clustering-example-for-levels-0-and-1.html53070644editdlrm
aat-shaping.html23590644editdlrm
adding-text-to-the-buffer.html58000644editdlrm
annotation-glossary.html56440644editdlrm
api-index-0-9-2.html444470644editdlrm
api-index-0-9-5.html33390644editdlrm
api-index-0-9-7.html123060644editdlrm
api-index-0-9-8.html20880644editdlrm
api-index-0-9-10.html32000644editdlrm
api-index-0-9-11.html20700644editdlrm
api-index-0-9-20.html23030644editdlrm
api-index-0-9-22.html21150644editdlrm
api-index-0-9-28.html20620644editdlrm
api-index-0-9-30.html25250644editdlrm
api-index-0-9-31.html29320644editdlrm
api-index-0-9-38.html38220644editdlrm
api-index-0-9-39.html20580644editdlrm
api-index-0-9-41.html20670644editdlrm
api-index-0-9-42.html25870644editdlrm
api-index-1-0-5.html27370644editdlrm
api-index-1-1-2.html23740644editdlrm
api-index-1-1-3.html29570644editdlrm
api-index-1-2-3.html28720644editdlrm
api-index-1-3-3.html55360644editdlrm
api-index-1-4-0.html23470644editdlrm
api-index-1-4-2.html53690644editdlrm
api-index-1-4-3.html20290644editdlrm
api-index-1-5-0.html29000644editdlrm
api-index-1-6-0.html22660644editdlrm
api-index-1-7-5.html17010644editdlrm
api-index-1-7-7.html55500644editdlrm
api-index-1-8-0.html26620644editdlrm
api-index-1-8-1.html24850644editdlrm
api-index-1-8-5.html20880644editdlrm
api-index-1-8-6.html31870644editdlrm
api-index-1-9-0.html34600644editdlrm
api-index-2-0-0.html59260644editdlrm
api-index-2-1-0.html80690644editdlrm
api-index-2-2-0.html53260644editdlrm
api-index-2-3-0.html26500644editdlrm
api-index-2-4-0.html20870644editdlrm
api-index-2-5-0.html21080644editdlrm
api-index-2-6-0.html52400644editdlrm
api-index-2-7-3.html28240644editdlrm
api-index-full.html1403400644editdlrm
buffers-language-script-and-direction.html49510644editdlrm
building.html153460644editdlrm
ch01s03.html44950644editdlrm
ch03s02.html60780644editdlrm
ch03s03.html45800644editdlrm
ch12.html35570644editdlrm
ch13.html30780644editdlrm
ch14.html18760644editdlrm
ch15.html30440644editdlrm
clusters.html64990644editdlrm
complex-scripts.html30010644editdlrm
customizing-unicode-functions.html64000644editdlrm
deprecated-api-index.html62230644editdlrm
fonts-and-faces-custom-functions.html73980644editdlrm
fonts-and-faces-native-opentype.html51960644editdlrm
fonts-and-faces-variable.html53040644editdlrm
fonts-and-faces.html76710644editdlrm
getting-started.html50430644editdlrm
graphite-shaping.html23080644editdlrm
harfbuzz-hb-aat-layout.html1393450644editdlrm
harfbuzz-hb-blob.html359020644editdlrm
harfbuzz-hb-buffer.html1954910644editdlrm
harfbuzz-hb-common.html653230644editdlrm
harfbuzz-hb-coretext.html113710644editdlrm
harfbuzz-hb-deprecated.html253280644editdlrm
harfbuzz-hb-directwrite.html61550644editdlrm
harfbuzz-hb-face.html521000644editdlrm
harfbuzz-hb-font.html2626960644editdlrm
harfbuzz-hb-ft.html287190644editdlrm
harfbuzz-hb-gdi.html43100644editdlrm
harfbuzz-hb-glib.html100860644editdlrm
harfbuzz-hb-gobject.html29530644editdlrm
harfbuzz-hb-graphite2.html58280644editdlrm
harfbuzz-hb-icu.html79690644editdlrm
harfbuzz-hb-map.html291880644editdlrm
harfbuzz-hb-ot-color.html399490644editdlrm
harfbuzz-hb-ot-font.html46300644editdlrm
harfbuzz-hb-ot-layout.html1450880644editdlrm
harfbuzz-hb-ot-math.html528860644editdlrm
harfbuzz-hb-ot-meta.html102860644editdlrm
harfbuzz-hb-ot-metrics.html179270644editdlrm
harfbuzz-hb-ot-name.html196030644editdlrm
harfbuzz-hb-ot-shape.html62570644editdlrm
harfbuzz-hb-ot-var.html367080644editdlrm
harfbuzz-hb-set.html594230644editdlrm
harfbuzz-hb-shape-plan.html384120644editdlrm
harfbuzz-hb-shape.html117020644editdlrm
harfbuzz-hb-unicode.html1067010644editdlrm
harfbuzz-hb-uniscribe.html60990644editdlrm
harfbuzz-hb-version.html104150644editdlrm
harfbuzz.devhelp21794570644editdlrm
HarfBuzz.png62540644editdlrm
HarfBuzz.svg67450644editdlrm
home.png1690644editdlrm
index.html195660644editdlrm
install-harfbuzz.html37870644editdlrm
integration-coretext.html64830644editdlrm
integration-freetype.html92930644editdlrm
integration-icu.html41860644editdlrm
integration-python.html31810644editdlrm
integration-uniscribe.html67250644editdlrm
integration.html99360644editdlrm
left-insensitive.png3340644editdlrm
left.png1850644editdlrm
level-2.html70090644editdlrm
object-model-blobs.html29020644editdlrm
object-model-lifecycle.html49780644editdlrm
object-model-object-types.html41110644editdlrm
object-model-user-data.html32550644editdlrm
object-model.html39780644editdlrm
opentype-shaping-models.html44630644editdlrm
pt01.html94170644editdlrm
pt02.html126740644editdlrm
reordering-in-levels-0-and-1.html31020644editdlrm
right-insensitive.png2330644editdlrm
right.png1840644editdlrm
setting-buffer-properties.html78300644editdlrm
shaping-and-shape-plans.html81960644editdlrm
shaping-concepts.html38690644editdlrm
shaping-opentype-features.html66630644editdlrm
shaping-operations.html45370644editdlrm
shaping-plans-and-caching.html46410644editdlrm
shaping-shaper-selection.html34060644editdlrm
style.css116060644editdlrm
text-runs.html25330644editdlrm
the-distinction-between-levels-0-and-1.html48640644editdlrm
unicode-character-categories.html42040644editdlrm
up-insensitive.png2880644editdlrm
up.png1860644editdlrm
utilities-common-types-apis.html43650644editdlrm
utilities-ucdn.html26320644editdlrm
utilities.html92740644editdlrm
what-harfbuzz-doesnt-do.html55350644editdlrm
what-is-harfbuzz.html55030644editdlrm
why-do-i-need-a-shaping-engine.html81240644editdlrm
why-is-it-called-harfbuzz.html21710644editdlrm
working-with-harfbuzz-clusters.html100830644editdlrm
Edit: /usr/share/gtk-doc/html/harfbuzz/harfbuzz-hb-blob.html (35902B)
hb-blob: HarfBuzz Manual

hb-blob

hb-blob — Binary data containers

Types and Values

Includes

#include <hb.h>

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]

Parameters

data

Pointer to blob data.

 

length

Length of data in bytes.

 

mode

Memory mode for data .

 

user_data

Data parameter to pass to destroy .

 

destroy

Callback to call when data is not needed anymore.

[optional]

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.

Parameters

file_name

A font filename

 

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.

Parameters

parent

Parent blob.

 

offset

Start offset of sub-blob within parent , in bytes.

 

length

Length of sub-blob.

 

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 .

Parameters

blob

A 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]

Parameters

blob

a blob.

 

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.

Parameters

blob

a blob.

 

length

The length in bytes of the data retrieved.

[out]

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.

Parameters

blob

a blob.

 

length

output length of the writable data.

[out]

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.

Parameters

blob

a blob.

 

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]

Parameters

blob

a blob

 

key

The user-data key to query

 

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.

Parameters

blob

a blob.

 

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.

Parameters

blob

a blob

 

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]

Parameters

blob

a blob.

 

Returns

blob .

Since: 0.9.2


hb_blob_set_user_data ()

hb_bool_t
hb_blob_set_user_data (hb_blob_t *blob,
                       hb_user_data_key_t *key,
                       void *data,
                       hb_destroy_func_t destroy,
                       hb_bool_t replace);

Attaches a user-data key/data pair to the specified blob.

[skip]

Parameters

blob

An hb_blob_t

 

key

The user-data key to set

 

data

A pointer to the user data to set

 

destroy

A callback to call when data is not needed anymore.

[optional]

replace

Whether to replace an existing data with the same key

 

Returns

true if success, false otherwise

Since: 0.9.2

Types and Values

hb_blob_t

typedef struct hb_blob_t hb_blob_t;

Data type for blobs. A blob wraps a chunk of binary data and facilitates its lifecycle management between a client program and HarfBuzz.


enum hb_memory_mode_t

Data type holding the memory modes available to client programs.

Regarding these various memory-modes:

  • In no case shall the HarfBuzz client modify memory that is passed to HarfBuzz in a blob. If there is any such possibility, HB_MEMORY_MODE_DUPLICATE should be used such that HarfBuzz makes a copy immediately,

  • Use HB_MEMORY_MODE_READONLY otherwise, unless you really really really know what you are doing,

  • HB_MEMORY_MODE_WRITABLE is appropriate if you really made a copy of data solely for the purpose of passing to HarfBuzz and doing that just once (no reuse!),

  • If the font is mmap()ed, it's okay to use HB_MEMORY_READONLY_MAY_MAKE_WRITABLE , however, using that mode correctly is very tricky. Use HB_MEMORY_MODE_READONLY instead.

Members

HB_MEMORY_MODE_DUPLICATE

   

HB_MEMORY_MODE_READONLY

   

HB_MEMORY_MODE_WRITABLE

   

HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE