Top |
A font face is an object that represents a single face from within a font family.
More precisely, a font face represents a single face in a binary font file. Font faces are typically built from a binary blob and a face index. Font faces are used to create fonts.
A font face can be created from a binary blob using hb_face_create()
.
The face index is used to select a face from a binary blob that contains
multiple faces. For example, a binary blob that contains both a regular
and a bold face can be used to create two font faces, one for each face
index.
unsigned int
hb_face_count (hb_blob_t *blob
);
Fetches the number of faces in a blob.
Since: 1.7.7
hb_face_t * hb_face_create (hb_blob_t *blob
,unsigned int index
);
Constructs a new face object from the specified blob and a face index into that blob.
The face index is used for blobs of file formats such as TTC and DFont that can contain more than one face. Face indices within such collections are zero-based.
index
is ignored. Otherwise, only the lower 16-bits of index
are used.
The unmodified index
can be accessed via hb_face_get_index()
.index
, if non-zero, are used by
hb_font_create()
to load named-instances in variable fonts. See
hb_font_create()
for details.Since: 0.9.2
hb_face_t * hb_face_create_or_fail (hb_blob_t *blob
,unsigned int index
);
Like hb_face_create()
, but returns NULL
if the blob data
contains no usable font face at the specified index.
Since: 10.1.0
hb_face_t * hb_face_create_from_file_or_fail (const char *file_name
,unsigned int index
);
A thin wrapper around hb_blob_create_from_file_or_fail()
followed by hb_face_create_or_fail()
.
The new face object, or NULL
if
no face is found at the specified index or the file cannot be read.
[transfer full]
Since: 10.1.0
hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face
,hb_tag_t tag
,void *user_data
);
Callback function for hb_face_create_for_tables()
.
face |
an hb_face_t to reference table for |
|
tag |
the tag of the table to reference |
|
user_data |
User data pointer passed by the caller |
Since: 0.9.2
hb_face_t * hb_face_create_for_tables (hb_reference_table_func_t reference_table_func
,void *user_data
,hb_destroy_func_t destroy
);
Variant of hb_face_create()
, built for those cases where it is more
convenient to provide data for individual tables instead of the whole font
data. With the caveat that hb_face_get_table_tags()
would not work
with faces created this way. You can address that by calling the
hb_face_set_get_table_tags_func()
function and setting the appropriate callback.
Creates a new face object from the specified user_data
and reference_table_func
,
with the destroy
callback.
reference_table_func |
Table-referencing function. |
[closure user_data][destroy destroy][scope notified] |
user_data |
A pointer to the user data |
|
destroy |
A callback to call when |
[nullable] |
Since: 0.9.2
hb_face_t *
hb_face_get_empty (void
);
Fetches the singleton empty face object.
Since: 0.9.2
hb_face_t *
hb_face_reference (hb_face_t *face
);
Increases the reference count on a face object.
[skip]
Since: 0.9.2
void
hb_face_destroy (hb_face_t *face
);
Decreases the reference count on a face object. When the reference count reaches zero, the face is destroyed, freeing all memory.
[skip]
Since: 0.9.2
hb_bool_t hb_face_set_user_data (hb_face_t *face
,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 given face object.
[skip]
face |
A face object |
|
key |
The user-data key to set |
|
data |
A pointer to the user data |
|
destroy |
A callback to call when |
[nullable] |
replace |
Whether to replace an existing data with the same key |
Since: 0.9.2
void * hb_face_get_user_data (const hb_face_t *face
,hb_user_data_key_t *key
);
Fetches the user data associated with the specified key, attached to the specified face object.
[skip]
Since: 0.9.2
void
hb_face_make_immutable (hb_face_t *face
);
Makes the given face object immutable.
Since: 0.9.2
hb_bool_t
hb_face_is_immutable (const hb_face_t *face
);
Tests whether the given face object is immutable.
Since: 0.9.2
unsigned int (*hb_get_table_tags_func_t) (const hb_face_t *face
,unsigned int start_offset
,unsigned int *table_count
,hb_tag_t *table_tags
,void *user_data
);
Callback function for hb_face_get_table_tags()
.
face |
A face object |
|
start_offset |
The index of first table tag to retrieve |
|
table_count |
Input = the maximum number of table tags to return; Output = the actual number of table tags returned (may be zero). |
[inout] |
table_tags |
The array of table tags found. |
[out][array length=table_count] |
user_data |
User data pointer passed by the caller |
Since: 10.0.0
void hb_face_set_get_table_tags_func (hb_face_t *face
,hb_get_table_tags_func_t func
,void *user_data
,hb_destroy_func_t destroy
);
Sets the table-tag-fetching function for the specified face object.
face |
A face object |
|
func |
The table-tag-fetching function. |
[closure user_data][destroy destroy][scope notified] |
user_data |
A pointer to the user data, to be destroyed by |
|
destroy |
A callback to call when |
[nullable] |
Since: 10.0.0
unsigned int hb_face_get_table_tags (const hb_face_t *face
,unsigned int start_offset
,unsigned int *table_count
,hb_tag_t *table_tags
);
Fetches a list of all table tags for a face, if possible. The list returned will begin at the offset provided
face |
A face object |
|
start_offset |
The index of first table tag to retrieve |
|
table_count |
Input = the maximum number of table tags to return; Output = the actual number of table tags returned (may be zero). |
[inout] |
table_tags |
The array of table tags found. |
[out][array length=table_count] |
Since: 1.6.0
void hb_face_set_glyph_count (hb_face_t *face
,unsigned int glyph_count
);
Sets the glyph count for a face object to the specified value.
This API is used in rare circumstances.
Since: 0.9.7
unsigned int
hb_face_get_glyph_count (const hb_face_t *face
);
Fetches the glyph-count value of the specified face object.
Since: 0.9.7
void hb_face_set_index (hb_face_t *face
,unsigned int index
);
Assigns the specified face-index to face
. Fails if the
face is immutable.
hb_face_get_index()
.Since: 0.9.2
unsigned int
hb_face_get_index (const hb_face_t *face
);
Fetches the face-index corresponding to the given face.
Since: 0.9.2
void hb_face_set_upem (hb_face_t *face
,unsigned int upem
);
Sets the units-per-em (upem) for a face object to the specified value.
This API is used in rare circumstances.
Since: 0.9.2
unsigned int
hb_face_get_upem (const hb_face_t *face
);
Fetches the units-per-em (UPEM) value of the specified face object.
Typical UPEM values for fonts are 1000, or 2048, but any value in between 16 and 16,384 is allowed for OpenType fonts.
Since: 0.9.2
hb_blob_t *
hb_face_reference_blob (hb_face_t *face
);
Fetches a pointer to the binary blob that contains the specified face. Returns an empty blob if referencing face data is not possible.
Since: 0.9.2
hb_blob_t * hb_face_reference_table (const hb_face_t *face
,hb_tag_t tag
);
Fetches a reference to the specified table within the specified face.
Since: 0.9.2
void hb_face_collect_unicodes (hb_face_t *face
,hb_set_t *out
);
Collects all of the Unicode characters covered by face
and adds
them to the hb_set_t set out
.
Since: 1.9.0
void hb_face_collect_nominal_glyph_mapping (hb_face_t *face
,hb_map_t *mapping
,hb_set_t *unicodes
);
Collects the mapping from Unicode characters to nominal glyphs of the face
,
and optionally all of the Unicode characters covered by face
.
face |
A face object |
|
mapping |
The map to add Unicode-to-glyph mapping to. |
[out] |
unicodes |
The set to add Unicode characters to, or |
[nullable][out] |
Since: 7.0.0
void hb_face_collect_variation_selectors (hb_face_t *face
,hb_set_t *out
);
Collects all Unicode "Variation Selector" characters covered by face
and adds
them to the hb_set_t set out
.
Since: 1.9.0
void hb_face_collect_variation_unicodes (hb_face_t *face
,hb_codepoint_t variation_selector
,hb_set_t *out
);
Collects all Unicode characters for variation_selector
covered by face
and adds
them to the hb_set_t set out
.
face |
A face object |
|
variation_selector |
The Variation Selector to query |
|
out |
The set to add Unicode characters to. |
[out] |
Since: 1.9.0
hb_face_t *
hb_face_builder_create (void
);
Creates a hb_face_t that can be used with hb_face_builder_add_table()
.
After tables are added to the face, it can be compiled to a binary
font file by calling hb_face_reference_blob()
.
Since: 1.9.0
hb_bool_t hb_face_builder_add_table (hb_face_t *face
,hb_tag_t tag
,hb_blob_t *blob
);
Add table for tag
with data provided by blob
to the face. face
must
be created using hb_face_builder_create()
.
face |
A face object created with |
|
tag |
The hb_tag_t of the table to add |
|
blob |
The blob containing the table data to add |
Since: 1.9.0
void hb_face_builder_sort_tables (hb_face_t *face
,const hb_tag_t *tags
);
Set the ordering of tables for serialization. Any tables not specified in the tags list will be ordered after the tables in tags, ordered by the default sort ordering.
face |
A face object created with |
|
tags |
ordered list of table tags terminated by
|
[array zero-terminated=1] |
Since: 5.3.0