Data type for booleans.
Data type for holding Unicode codepoints. Also
used to hold glyph IDs.
Data type for holding color values. Colors are eight bits per
channel RGB plus alpha transparency.
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the extents for a font, in horizontal-direction
text segments. Extents must be returned in an #hb_glyph_extents output
parameter.
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the extents for a font, in vertical-direction
text segments. Extents must be returned in an #hb_glyph_extents output
parameter.
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the advance for a specified glyph, in
horizontal-direction text segments. Advances must be returned in
an #hb_position_t output parameter.
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the advances for a sequence of glyphs, in
horizontal-direction text segments.
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the (X,Y) coordinates (in font units) of the
origin for a glyph, in horizontal-direction text segments. Each
coordinate must be returned in an #hb_position_t output parameter.
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the advance for a specified glyph, in
vertical-direction text segments. Advances must be returned in
an #hb_position_t output parameter.
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the advances for a sequence of glyphs, in
vertical-direction text segments.
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the (X,Y) coordinates (in font units) of the
origin for a glyph, in vertical-direction text segments. Each coordinate
must be returned in an #hb_position_t output parameter.
Data type for bitmasks.
An integral type representing an OpenType 'name' table name identifier.
There are predefined name IDs, as well as name IDs return from other
API. These can be used to fetch name strings from a font face.
Data type for holding a single coordinate value.
Contour points and other multi-dimensional data are
stored as tuples of #hb_position_t's.
Used when getting or setting AAT feature selectors. Indicates that
there is no selector index corresponding to the selector of interest.
The default code point for replacing invalid characters in a given encoding.
Set to U+FFFD REPLACEMENT CHARACTER.
Tests whether a text direction moves backward (from right to left, or from
bottom to top). Requires that the direction be valid.
#hb_direction_t to test
Tests whether a text direction moves forward (from left to right, or from
top to bottom). Requires that the direction be valid.
#hb_direction_t to test
Tests whether a text direction is horizontal. Requires
that the direction be valid.
#hb_direction_t to test
Tests whether a text direction is valid.
#hb_direction_t to test
Tests whether a text direction is vertical. Requires
that the direction be valid.
#hb_direction_t to test
Reverses a text direction. Requires that the direction
be valid.
#hb_direction_t to reverse
Constructs an #hb_tag_t from four characters.
See Unicode 6.1 for details on the maximum decomposition length.
Extracts the characters from an #hb_tag_t.
The selectors defined for specifying AAT feature settings.
Initial, unset feature selector
for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC
for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
Deprecated
Deprecated
Deprecated
Deprecated
Deprecated
Deprecated
for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION
for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION
for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT
for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT
for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING
for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING
for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING
for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING
for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION
for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION
for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION
for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION
for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION
for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS
for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS
for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS
for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE
for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE
for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING
for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING
for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING
for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING
for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING
for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING
for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING
for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE
Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF instead
Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON instead
for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA
for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE
Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF instead
Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON instead
for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN
for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN
for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT
for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT
for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT
for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT
for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA
for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA
for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA
for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES
for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE
for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE
for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE
for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE
for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE
for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE
for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE
The possible feature types defined for AAT shaping.
Initial, unset feature type
Makes a writable copy of @blob.
The new blob, or nullptr if allocation failed
A blob.
Creates a new "blob" object wrapping @data. The @mode parameter is used
to negotiate ownership and lifecycle of @data.
New blob, or the empty blob if something failed or if @length is
zero. Destroy with hb_blob_destroy().
Pointer to blob data.
Length of @data in bytes.
Memory mode for @data.
Data parameter to pass to @destroy.
Callback to call when @data is not needed anymore.
Creates a new blob containing the data from the
specified binary font file.
An #hb_blob_t pointer with the content of the file
A font filename
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.
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().
Parent blob.
Start offset of sub-blob within @parent, in bytes.
Length of sub-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.
a blob.
Fetches the data from a blob.
the byte data of @blob.
a blob.
The length in bytes of the data retrieved
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.
Writable blob data,
or %NULL if failed.
a blob.
output length of the writable data.
Returns the singleton empty blob.
See TODO:link object types for more information.
The empty blob.
Fetches the length of a blob's data.
the length of @blob data in bytes.
a blob.
Fetches the user data associated with the specified key,
attached to the specified font-functions structure.
A pointer to the user data
a blob
The user-data key to query
Tests whether a blob is immutable.
%true if @blob is immutable, false otherwise
a blob.
Makes a blob immutable.
a blob
Increases the reference count on @blob.
See TODO:link object types for more information.
@blob.
a blob.
Attaches a user-data key/data pair to the specified blob.
%true if success, %false otherwise
An #hb_blob_t
The user-data key to set
A pointer to the user data to set
A callback to call when @data is not needed anymore
Whether to replace an existing data with the same key
Data type for blobs. A blob wraps a chunk of binary
data and facilitates its lifecycle management between
a client program and HarfBuzz.
Appends a character with the Unicode value of @codepoint to @buffer, and
gives it the initial cluster value of @cluster. Clusters can be any thing
the client wants, they are usually used to refer to the index of the
character in the input text stream and are output in
#hb_glyph_info_t.cluster field.
This function does not check the validity of @codepoint, it is up to the
caller to ensure it is a valid Unicode code point.
An #hb_buffer_t
A Unicode code point.
The cluster value of @codepoint.
Appends characters from @text array to @buffer. The @item_offset is the
position of the first character from @text that will be appended, and
@item_length is the number of character. When shaping part of a larger text
(e.g. a run of text from a paragraph), instead of passing just the substring
corresponding to the run, it is preferable to pass the whole
paragraph and specify the run start and length as @item_offset and
@item_length, respectively, to give HarfBuzz the full context to be able,
for example, to do cross-run Arabic shaping or properly handle combining
marks at stat of run.
This function does not check the validity of @text, it is up to the caller
to ensure it contains a valid Unicode code points.
a #hb_buffer_t to append characters to.
an array of Unicode code points to append.
the length of the @text, or -1 if it is %NULL terminated.
the offset of the first code point to add to the @buffer.
the number of code points to add to the @buffer, or -1 for the
end of @text (assuming it is %NULL terminated).
Similar to hb_buffer_add_codepoints(), but allows only access to first 256
Unicode code points that can fit in 8-bit strings.
<note>Has nothing to do with non-Unicode Latin-1 encoding.</note>
An #hb_buffer_t
an array of UTF-8
characters to append
the length of the @text, or -1 if it is %NULL terminated
the offset of the first character to add to the @buffer
the number of characters to add to the @buffer, or -1 for the
end of @text (assuming it is %NULL terminated)
See hb_buffer_add_codepoints().
Replaces invalid UTF-16 characters with the @buffer replacement code point,
see hb_buffer_set_replacement_codepoint().
An #hb_buffer_t
An array of UTF-16 characters to append
The length of the @text, or -1 if it is %NULL terminated
The offset of the first character to add to the @buffer
The number of characters to add to the @buffer, or -1 for the
end of @text (assuming it is %NULL terminated)
See hb_buffer_add_codepoints().
Replaces invalid UTF-32 characters with the @buffer replacement code point,
see hb_buffer_set_replacement_codepoint().
An #hb_buffer_t
An array of UTF-32 characters to append
The length of the @text, or -1 if it is %NULL terminated
The offset of the first character to add to the @buffer
The number of characters to add to the @buffer, or -1 for the
end of @text (assuming it is %NULL terminated)
See hb_buffer_add_codepoints().
Replaces invalid UTF-8 characters with the @buffer replacement code point,
see hb_buffer_set_replacement_codepoint().
An #hb_buffer_t
An array of UTF-8
characters to append.
The length of the @text, or -1 if it is %NULL terminated.
The offset of the first character to add to the @buffer.
The number of characters to add to the @buffer, or -1 for the
end of @text (assuming it is %NULL terminated).
Check if allocating memory for the buffer succeeded.
%true if @buffer memory allocation succeeded, %false otherwise.
An #hb_buffer_t
Append (part of) contents of another buffer to this buffer.
An #hb_buffer_t
source #hb_buffer_t
start index into source buffer to copy. Use 0 to copy from start of buffer.
end index into source buffer to copy. Use @HB_FEATURE_GLOBAL_END to copy to end of buffer.
Similar to hb_buffer_reset(), but does not clear the Unicode functions and
the replacement code point.
An #hb_buffer_t
Data type for holding HarfBuzz's clustering behavior options. The cluster level
dictates one aspect of how HarfBuzz will treat non-base characters
during shaping.
In @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES, non-base
characters are merged into the cluster of the base character that precedes them.
In @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS, non-base characters are initially
assigned their own cluster values, which are not merged into preceding base
clusters. This allows HarfBuzz to perform additional operations like reorder
sequences of adjacent marks.
@HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES is the default, because it maintains
backward compatibility with older versions of HarfBuzz. New client programs that
do not need to maintain such backward compatibility are recommended to use
@HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS instead of the default.
Return cluster values grouped by graphemes into
monotone order.
Return cluster values grouped into monotone order.
Don't group cluster values.
Default cluster level,
equal to @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES.
Initial value for new buffer.
The buffer contains input characters (before shaping).
The buffer contains output glyphs (after shaping).
Creates a new #hb_buffer_t with all properties to defaults.
A newly allocated #hb_buffer_t with a reference count of 1. The initial
reference count should be released with hb_buffer_destroy() when you are done
using the #hb_buffer_t. This function never returns %NULL. If memory cannot
be allocated, a special #hb_buffer_t object will be returned on which
hb_buffer_allocation_successful() returns %false.
an #hb_buffer_t buffer.
an #hb_buffer_t buffer.
Deallocate the @buffer.
Decreases the reference count on @buffer by one. If the result is zero, then
@buffer and all associated resources are freed. See hb_buffer_reference().
An #hb_buffer_t
If dottedcircle_glyph is (hb_codepoint_t) -1 then %HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT
and %HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT are never returned. This should be used by most
callers if just comparing two buffers is needed.
a buffer.
other buffer to compare to.
glyph id of U+25CC DOTTED CIRCLE, or (hb_codepont_t) -1.
allowed absolute difference in position values.
the default buffer flag.
flag indicating that special handling of the beginning
of text paragraph can be applied to this buffer. Should usually
be set, unless you are passing to the buffer only part
of the text without the full context.
flag indicating that special handling of the end of text
paragraph can be applied to this buffer, similar to
@HB_BUFFER_FLAG_BOT.
flag indication that character with Default_Ignorable
Unicode property should use the corresponding glyph
from the font, instead of hiding them (done by
replacing them with the space glyph and zeroing the
advance width.) This flag takes precedence over
@HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES.
flag indication that character with Default_Ignorable
Unicode property should be removed from glyph string
instead of hiding them (done by replacing them with the
space glyph and zeroing the advance width.)
@HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES takes
precedence over this flag. Since: 1.8.0
flag indicating that a dotted circle should
not be inserted in the rendering of incorrect
character sequences (such at <0905 093E>). Since: 2.4
Fetches the cluster level of a buffer. The #hb_buffer_cluster_level_t
dictates one aspect of how HarfBuzz will treat non-base characters
during shaping.
The cluster level of @buffer
An #hb_buffer_t
Fetches the type of @buffer contents. Buffers are either empty, contain
characters (before shaping), or contain glyphs (the result of shaping).
The type of @buffer contents
An #hb_buffer_t
See hb_buffer_set_direction()
The direction of the @buffer.
An #hb_buffer_t
Fetches an empty #hb_buffer_t.
The empty buffer
Fetches the #hb_buffer_flags_t of @buffer.
The @buffer flags
An #hb_buffer_t
Returns @buffer glyph information array. Returned pointer
is valid as long as @buffer contents are not modified.
The @buffer glyph information array.
The value valid as long as buffer has not been modified.
An #hb_buffer_t
The output-array length.
Returns @buffer glyph position array. Returned pointer
is valid as long as @buffer contents are not modified.
The @buffer glyph position array.
The value valid as long as buffer has not been modified.
An #hb_buffer_t
The output length
See hb_buffer_set_invisible_glyph().
The @buffer invisible #hb_codepoint_t
An #hb_buffer_t
See hb_buffer_set_language().
The #hb_language_t of the buffer. Must not be freed by the caller.
An #hb_buffer_t
Returns the number of items in the buffer.
The @buffer length.
The value valid as long as buffer has not been modified.
An #hb_buffer_t
Fetches the #hb_codepoint_t that replaces invalid entries for a given encoding
when adding text to @buffer.
The @buffer replacement #hb_codepoint_t
An #hb_buffer_t
Fetches the script of @buffer.
The #hb_script_t of the @buffer
An #hb_buffer_t
Sets @props to the #hb_segment_properties_t of @buffer.
An #hb_buffer_t
The output #hb_segment_properties_t
Fetches the Unicode-functions structure of a buffer.
The Unicode-functions structure
An #hb_buffer_t
Fetches the user data associated with the specified key,
attached to the specified buffer.
A pointer to the user data
An #hb_buffer_t
The user-data key to query
Sets unset buffer segment properties based on buffer Unicode
contents. If buffer is not empty, it must have content type
%HB_BUFFER_CONTENT_TYPE_UNICODE.
If buffer script is not set (ie. is %HB_SCRIPT_INVALID), it
will be set to the Unicode script of the first character in
the buffer that has a script other than %HB_SCRIPT_COMMON,
%HB_SCRIPT_INHERITED, and %HB_SCRIPT_UNKNOWN.
Next, if buffer direction is not set (ie. is %HB_DIRECTION_INVALID),
it will be set to the natural horizontal direction of the
buffer script as returned by hb_script_get_horizontal_direction().
If hb_script_get_horizontal_direction() returns %HB_DIRECTION_INVALID,
then %HB_DIRECTION_LTR is used.
Finally, if buffer language is not set (ie. is %HB_LANGUAGE_INVALID),
it will be set to the process's default language as returned by
hb_language_get_default(). This may change in the future by
taking buffer script into consideration when choosing a language.
Note that hb_language_get_default() is NOT threadsafe the first time
it is called. See documentation for that function for details.
An #hb_buffer_t
Returns whether @buffer has glyph position data.
A buffer gains position data when hb_buffer_get_glyph_positions() is called on it,
and cleared of position data when hb_buffer_clear_contents() is called.
%true if the @buffer has position array, %false otherwise.
an #hb_buffer_t.
Reorders a glyph buffer to have canonical in-cluster glyph order / position.
The resulting clusters should behave identical to pre-reordering clusters.
<note>This has nothing to do with Unicode normalization.</note>
An #hb_buffer_t
Pre allocates memory for @buffer to fit at least @size number of items.
%true if @buffer memory allocation succeeded, %false otherwise
An #hb_buffer_t
Number of items to pre allocate.
Increases the reference count on @buffer by one. This prevents @buffer from
being destroyed until a matching call to hb_buffer_destroy() is made.
The referenced #hb_buffer_t.
An #hb_buffer_t
Resets the buffer to its initial status, as if it was just newly created
with hb_buffer_create().
An #hb_buffer_t
Reverses buffer contents.
An #hb_buffer_t
Reverses buffer clusters. That is, the buffer contents are
reversed, then each cluster (consecutive items having the
same cluster number) are reversed again.
An #hb_buffer_t
Reverses buffer contents between @start and @end.
An #hb_buffer_t
start index
end index
Serializes @buffer into a textual representation of its content, whether
Unicode codepoints or glyph identifiers and positioning information. This is
useful for showing the contents of the buffer, for example during debugging.
See the documentation of hb_buffer_serialize_unicode() and
hb_buffer_serialize_glyphs() for a description of the output format.
The number of serialized items.
an #hb_buffer_t buffer.
the first item in @buffer to serialize.
the last item in @buffer to serialize.
output string to
write serialized buffer into.
the size of @buf.
if not %NULL, will be set to the number of byes written into @buf.
the #hb_font_t used to shape this buffer, needed to
read glyph names and extents. If %NULL, and empty font will be used.
the #hb_buffer_serialize_format_t to use for formatting the output.
the #hb_buffer_serialize_flags_t that control what glyph properties
to serialize.
Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs().
serialize glyph names, clusters and positions.
do not serialize glyph cluster.
do not serialize glyph position information.
do no serialize glyph name.
serialize glyph extents.
serialize glyph flags. Since: 1.5.0
do not serialize glyph advances,
glyph offsets will reflect absolute glyph positions. Since: 1.8.0
Parses a string into an #hb_buffer_serialize_format_t. Does not check if
@str is a valid buffer serialization format, use
hb_buffer_serialize_list_formats() to get the list of supported formats.
The parsed #hb_buffer_serialize_format_t.
a string to parse
length of @str, or -1 if string is %NULL terminated
The buffer serialization and de-serialization format used in
hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs().
a human-readable, plain text format.
a machine-readable JSON format.
invalid format.
Converts @format to the string corresponding it, or %NULL if it is not a valid
#hb_buffer_serialize_format_t.
A %NULL terminated string corresponding to @format. Should not be freed.
an #hb_buffer_serialize_format_t to convert.
Serializes @buffer into a textual representation of its glyph content,
useful for showing the contents of the buffer, for example during debugging.
There are currently two supported serialization formats:
## text
A human-readable, plain text format.
The serialized glyphs will look something like:
```
[uni0651=0@518,0+0|uni0628=0+1897]
```
- The serialized glyphs are delimited with `[` and `]`.
- Glyphs are separated with `|`
- Each glyph starts with glyph name, or glyph index if
#HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES flag is set. Then,
- If #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set, `=` then #hb_glyph_info_t.cluster.
- If #HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS is not set, the #hb_glyph_position_t in the format:
- If both #hb_glyph_position_t.x_offset and #hb_glyph_position_t.y_offset are not 0, `@x_offset,y_offset`. Then,
- `+x_advance`, then `,y_advance` if #hb_glyph_position_t.y_advance is not 0. Then,
- If #HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS is set, the #hb_glyph_extents_t in the format `<x_bearing,y_bearing,width,height>`
## json
A machine-readable, structured format.
The serialized glyphs will look something like:
```
[{"g":"uni0651","cl":0,"dx":518,"dy":0,"ax":0,"ay":0},
{"g":"uni0628","cl":0,"dx":0,"dy":0,"ax":1897,"ay":0}]
```
Each glyph is a JSON object, with the following properties:
- `g`: the glyph name or glyph index if
#HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES flag is set.
- `cl`: #hb_glyph_info_t.cluster if
#HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set.
- `dx`,`dy`,`ax`,`ay`: #hb_glyph_position_t.x_offset, #hb_glyph_position_t.y_offset,
#hb_glyph_position_t.x_advance and #hb_glyph_position_t.y_advance
respectively, if #HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS is not set.
- `xb`,`yb`,`w`,`h`: #hb_glyph_extents_t.x_bearing, #hb_glyph_extents_t.y_bearing,
#hb_glyph_extents_t.width and #hb_glyph_extents_t.height respectively if
#HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS is set.
The number of serialized items.
an #hb_buffer_t buffer.
the first item in @buffer to serialize.
the last item in @buffer to serialize.
output string to
write serialized buffer into.
the size of @buf.
if not %NULL, will be set to the number of byes written into @buf.
the #hb_font_t used to shape this buffer, needed to
read glyph names and extents. If %NULL, and empty font will be used.
the #hb_buffer_serialize_format_t to use for formatting the output.
the #hb_buffer_serialize_flags_t that control what glyph properties
to serialize.
Returns a list of supported buffer serialization formats.
A string array of buffer serialization formats. Should not be freed.
Serializes @buffer into a textual representation of its content,
when the buffer contains Unicode codepoints (i.e., before shaping). This is
useful for showing the contents of the buffer, for example during debugging.
There are currently two supported serialization formats:
## text
A human-readable, plain text format.
The serialized codepoints will look something like:
```
 <U+0651=0|U+0628=1>
```
- Glyphs are separated with `|`
- Unicode codepoints are expressed as zero-padded four (or more)
digit hexadecimal numbers preceded by `U+`
- If #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set, the cluster
will be indicated with a `=` then #hb_glyph_info_t.cluster.
## json
A machine-readable, structured format.
The serialized codepoints will be a list of objects with the following
properties:
- `u`: the Unicode codepoint as a decimal integer
- `cl`: #hb_glyph_info_t.cluster if
#HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set.
For example:
```
[{u:1617,cl:0},{u:1576,cl:1}]
```
The number of serialized items.
an #hb_buffer_t buffer.
the first item in @buffer to serialize.
the last item in @buffer to serialize.
output string to
write serialized buffer into.
the size of @buf.
if not %NULL, will be set to the number of byes written into @buf.
the #hb_buffer_serialize_format_t to use for formatting the output.
Sets the cluster level of a buffer. The #hb_buffer_cluster_level_t
dictates one aspect of how HarfBuzz will treat non-base characters
during shaping.
An #hb_buffer_t
The cluster level to set on the buffer
Sets the type of @buffer contents. Buffers are either empty, contain
characters (before shaping), or contain glyphs (the result of shaping).
An #hb_buffer_t
The type of buffer contents to set
Set the text flow direction of the buffer. No shaping can happen without
setting @buffer direction, and it controls the visual direction for the
output glyphs; for RTL direction the glyphs will be reversed. Many layout
features depend on the proper setting of the direction, for example,
reversing RTL text before shaping, then shaping with LTR direction is not
the same as keeping the text in logical order and shaping with RTL
direction.
An #hb_buffer_t
the #hb_direction_t of the @buffer
Sets @buffer flags to @flags. See #hb_buffer_flags_t.
An #hb_buffer_t
The buffer flags to set
Sets the #hb_codepoint_t that replaces invisible characters in
the shaping result. If set to zero (default), the glyph for the
U+0020 SPACE character is used. Otherwise, this value is used
verbatim.
An #hb_buffer_t
the invisible #hb_codepoint_t
Sets the language of @buffer to @language.
Languages are crucial for selecting which OpenType feature to apply to the
buffer which can result in applying language-specific behaviour. Languages
are orthogonal to the scripts, and though they are related, they are
different concepts and should not be confused with each other.
Use hb_language_from_string() to convert from BCP 47 language tags to
#hb_language_t.
An #hb_buffer_t
An hb_language_t to set
Similar to hb_buffer_pre_allocate(), but clears any new items added at the
end.
%true if @buffer memory allocation succeeded, %false otherwise.
An #hb_buffer_t
The new length of @buffer
An #hb_buffer_t
Sets the #hb_codepoint_t that replaces invalid entries for a given encoding
when adding text to @buffer.
Default is %HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT.
An #hb_buffer_t
the replacement #hb_codepoint_t
Sets the script of @buffer to @script.
Script is crucial for choosing the proper shaping behaviour for scripts that
require it (e.g. Arabic) and the which OpenType features defined in the font
to be applied.
You can pass one of the predefined #hb_script_t values, or use
hb_script_from_string() or hb_script_from_iso15924_tag() to get the
corresponding script from an ISO 15924 script tag.
An #hb_buffer_t
An #hb_script_t to set.
Sets the segment properties of the buffer, a shortcut for calling
hb_buffer_set_direction(), hb_buffer_set_script() and
hb_buffer_set_language() individually.
An #hb_buffer_t
An #hb_segment_properties_t to use
Sets the Unicode-functions structure of a buffer to
@unicode_funcs.
An #hb_buffer_t
The Unicode-functions structure
Attaches a user-data key/data pair to the specified buffer.
%true if success, %false otherwise
An #hb_buffer_t
The user-data key
A pointer to the user data
A callback to call when @data is not needed anymore
Whether to replace an existing data with the same key
The main structure holding the input text and its properties before shaping,
and output glyphs and their information after shaping.
color: a #hb_color_t we are interested in its channels.
Alpha channel value of the given color
color: a #hb_color_t we are interested in its channels.
Blue channel value of the given color
color: a #hb_color_t we are interested in its channels.
Green channel value of the given color
color: a #hb_color_t we are interested in its channels.
Red channel value of the given color
Converts a string to an #hb_direction_t.
Matching is loose and applies only to the first letter. For
examples, "LTR" and "left-to-right" will both return #HB_DIRECTION_LTR.
Unmatched strings will return #HB_DIRECTION_INVALID.
The #hb_direction_t matching @str
String to convert
Length of @str, or -1 if it is %NULL-terminated
The direction of a text segment or buffer.
A segment can also be tested for horizontal or vertical
orientation (irrespective of specific direction) with
HB_DIRECTION_IS_HORIZONTAL() or HB_DIRECTION_IS_VERTICAL().
Initial, unset direction.
Text is set horizontally from left to right.
Text is set horizontally from right to left.
Text is set vertically from top to bottom.
Text is set vertically from bottom to top.
Converts an #hb_direction_t to a string.
The string corresponding to @direction
The #hb_direction_t to convert
Add table for @tag with data provided by @blob to the face. @face must
be created using hb_face_builder_create().
A face object created with hb_face_builder_create()
The #hb_tag_t of the table to add
The blob containing the table data to add
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().
New face.
Collects all of the Unicode characters covered by @face and adds
them to the #hb_set_t set @out.
A face object
The set to add Unicode characters to
Collects all Unicode "Variation Selector" characters covered by @face and adds
them to the #hb_set_t set @out.
A face object
The set to add Variation Selector characters to
Collects all Unicode characters for @variation_selector covered by @face and adds
them to the #hb_set_t set @out.
A face object
The Variation Selector to query
The set to add Unicode characters to
Fetches the number of faces in a blob.
Number of faces in @blob
a blob.
Constructs a new face object from the specified blob and
a face index into that blob. This is used for blobs of
file formats such as Dfont and TTC that can contain more
than one face.
The new face object
#hb_blob_t to work upon
The index of the face within @blob
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() does not currently work
with faces created this way.
Creates a new face object from the specified @user_data and @reference_table_func,
with the @destroy callback.
The new face object
Table-referencing function
A pointer to the user data
A callback to call when @data is not needed anymore
Decreases the reference count on a face object. When the
reference count reaches zero, the face is destroyed,
freeing all memory.
A face object
Fetches the singleton empty face object.
The empty face object
Fetches the glyph-count value of the specified face object.
The glyph-count value of @face
A face object
Fetches the face-index corresponding to the given face.
<note>Note: face indices within a collection are zero-based.</note>
The index of @face.
A face object
Fetches a list of all table tags for a face, if possible. The list returned will
begin at the offset provided
Total number of tables, or zero if it is not possible to list
A face object
The index of first table tag to retrieve
Input = the maximum number of table tags to return;
Output = the actual number of table tags returned (may be zero)
The array of table tags found
Fetches the units-per-em (upem) value of the specified face object.
The upem value of @face
A face object
Fetches the user data associated with the specified key,
attached to the specified face object.
A pointer to the user data
A face object
The user-data key to query
Tests whether the given face object is immutable.
True is @face is immutable, false otherwise
A face object
Makes the given face object immutable.
A face object
Increases the reference count on a face object.
The @face object
A face object
Fetches a pointer to the binary blob that contains the
specified face. Returns an empty blob if referencing face data is not
possible.
A pointer to the blob for @face
A face object
Fetches a reference to the specified table within
the specified face.
A pointer to the @tag table within @face
A face object
The #hb_tag_t of the table to query
Sets the glyph count for a face object to the specified value.
A face object
The glyph-count value to assign
Assigns the specified face-index to @face. Fails if the
face is immutable.
<note>Note: face indices within a collection are zero-based.</note>
A face object
The index to assign
Sets the units-per-em (upem) for a face object to the specified value.
A face object
The units-per-em value to assign
Attaches a user-data key/data pair to the given face object.
%true if success, %false otherwise
A face object
The user-data key to set
A pointer to the user data
A callback to call when @data is not needed anymore
Whether to replace an existing data with the same key
Data type for holding font faces.
Parses a string into a #hb_feature_t.
The format for specifying feature strings follows. All valid CSS
font-feature-settings values other than 'normal' and the global values are
also accepted, though not documented below. CSS string escapes are not
supported.
The range indices refer to the positions between Unicode characters. The
position before the first character is always 0.
The format is Python-esque. Here is how it all works:
<informaltable pgwide='1' align='left' frame='none'>
<tgroup cols='5'>
<thead>
<row><entry>Syntax</entry> <entry>Value</entry> <entry>Start</entry> <entry>End</entry></row>
</thead>
<tbody>
<row><entry>Setting value:</entry></row>
<row><entry>kern</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row>
<row><entry>+kern</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row>
<row><entry>-kern</entry> <entry>0</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature off</entry></row>
<row><entry>kern=0</entry> <entry>0</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature off</entry></row>
<row><entry>kern=1</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row>
<row><entry>aalt=2</entry> <entry>2</entry> <entry>0</entry> <entry>∞</entry> <entry>Choose 2nd alternate</entry></row>
<row><entry>Setting index:</entry></row>
<row><entry>kern[]</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row>
<row><entry>kern[:]</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row>
<row><entry>kern[5:]</entry> <entry>1</entry> <entry>5</entry> <entry>∞</entry> <entry>Turn feature on, partial</entry></row>
<row><entry>kern[:5]</entry> <entry>1</entry> <entry>0</entry> <entry>5</entry> <entry>Turn feature on, partial</entry></row>
<row><entry>kern[3:5]</entry> <entry>1</entry> <entry>3</entry> <entry>5</entry> <entry>Turn feature on, range</entry></row>
<row><entry>kern[3]</entry> <entry>1</entry> <entry>3</entry> <entry>3+1</entry> <entry>Turn feature on, single char</entry></row>
<row><entry>Mixing it all:</entry></row>
<row><entry>aalt[3:5]=2</entry> <entry>2</entry> <entry>3</entry> <entry>5</entry> <entry>Turn 2nd alternate on for range</entry></row>
</tbody>
</tgroup>
</informaltable>
%true if @str is successfully parsed, %false otherwise
a string to parse
length of @str, or -1 if string is %NULL terminated
the #hb_feature_t to initialize with the parsed values
The #hb_feature_t is the structure that holds information about requested
feature application. The feature will be applied with the given value to all
glyphs which are in clusters between @start (inclusive) and @end (exclusive).
Setting start to @HB_FEATURE_GLOBAL_START and end to @HB_FEATURE_GLOBAL_END
specifies that the feature always applies to the entire buffer.
The #hb_tag_t tag of the feature
The value of the feature. 0 disables the feature, non-zero (usually
1) enables the feature. For features implemented as lookup type 3 (like
'salt') the @value is a one based index into the alternates.
the cluster to start applying this feature setting (inclusive).
the cluster to end applying this feature setting (exclusive).
Converts a #hb_feature_t into a %NULL-terminated string in the format
understood by hb_feature_from_string(). The client in responsible for
allocating big enough size for @buf, 128 bytes is more than enough.
an #hb_feature_t to convert
output string
the allocated size of @buf
Converts a #hb_feature_t into a %NULL-terminated string in the format
understood by hb_feature_from_string(). The client in responsible for
allocating big enough size for @buf, 128 bytes is more than enough.
an #hb_feature_t to convert
output string
the allocated size of @buf
Adds the origin coordinates to an (X,Y) point coordinate, in
the specified glyph ID in the specified font.
Calls the appropriate direction-specific variant (horizontal
or vertical) depending on the value of @direction.
#hb_font_t to work upon
The glyph ID to query
The direction of the text segment
Input = The original X coordinate
Output = The X coordinate plus the X-coordinate of the origin
Input = The original Y coordinate
Output = The Y coordinate plus the Y-coordinate of the origin
Constructs a new font object from the specified face.
The new font object
a face.
Constructs a sub-font font object from the specified @parent font,
replicating the parent's properties.
The new sub-font font object
The parent font object
Decreases the reference count on the given font object. When the
reference count reaches zero, the font is destroyed,
freeing all memory.
#hb_font_t to work upon
Font-wide extent values, measured in font units.
Note that typically @ascender is positive and @descender
negative, in coordinate systems that grow up.
The height of typographic ascenders.
The depth of typographic descenders.
The suggested line-spacing gap.
Creates a new #hb_font_funcs_t structure of font functions.
The font-functions structure
Decreases the reference count on a font-functions structure. When
the reference count reaches zero, the font-functions structure is
destroyed, freeing all memory.
The font-functions structure
Fetches an empty font-functions structure.
The font-functions structure
Fetches the user data associated with the specified key,
attached to the specified font-functions structure.
A pointer to the user data
The font-functions structure
The user-data key to query
Tests whether a font-functions structure is immutable.
%true if @ffuncs is immutable, false otherwise
The font-functions structure
Makes a font-functions structure immutable.
The font-functions structure
Increases the reference count on a font-functions structure.
The font-functions structure
The font-functions structure
Sets the implementation function for #hb_font_get_font_h_extents_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_font_get_font_v_extents_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_font_get_glyph_contour_point_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_font_get_glyph_extents_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_font_get_glyph_from_name_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Deprecated. Use hb_font_funcs_set_nominal_glyph_func() and
hb_font_funcs_set_variation_glyph_func() instead.
The font-functions structure
callback function
data to pass to @func
function to call when @user_data is not needed anymore
Sets the implementation function for #hb_font_get_glyph_h_advance_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_font_get_glyph_h_advances_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
font functions.
Sets the implementation function for #hb_font_get_glyph_h_origin_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_font_get_glyph_name_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_font_get_glyph_v_advance_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_font_get_glyph_v_advances_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
font functions.
Sets the implementation function for #hb_font_get_glyph_v_origin_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_font_get_nominal_glyph_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_font_get_nominal_glyphs_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Attaches a user-data key/data pair to the specified font-functions structure.
%true if success, %false otherwise
The font-functions structure
The user-data key to set
A pointer to the user data set
A callback to call when @data is not needed anymore
Whether to replace an existing data with the same key
Sets the implementation function for #hb_font_get_variation_glyph_func_t.
A font-function structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Data type containing a set of virtual methods used for
working on #hb_font_t font objects.
HarfBuzz provides a lightweight default function for each of
the methods in #hb_font_funcs_t. Client programs can implement
their own replacements for the individual font functions, as
needed, and replace the default by calling the setter for a
method.
Fetches the empty font object.
The empty font object
Fetches the extents for a font in a text segment of the
specified direction.
Calls the appropriate direction-specific variant (horizontal
or vertical) depending on the value of @direction.
#hb_font_t to work upon
The direction of the text segment
The #hb_glyph_extents_t retrieved
Fetches the face associated with the specified font object.
The #hb_face_t value
#hb_font_t to work upon
Fetches the glyph ID for a Unicode code point in the specified
font, with an optional variation selector.
If @variation_selector is 0, calls hb_font_get_nominal_glyph();
otherwise calls hb_font_get_variation_glyph().
%true if data found, false otherwise
#hb_font_t to work upon
The Unicode code point to query
A variation-selector code point
The glyph ID retrieved
Fetches the advance for a glyph ID from the specified font,
in a text segment of the specified direction.
Calls the appropriate direction-specific variant (horizontal
or vertical) depending on the value of @direction.
#hb_font_t to work upon
The glyph ID to query
The direction of the text segment
The horizontal advance retrieved
The vertical advance retrieved
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the advance for a specified glyph. The
method must return an #hb_position_t.
Fetches the advances for a sequence of glyph IDs in the specified
font, in a text segment of the specified direction.
Calls the appropriate direction-specific variant (horizontal
or vertical) depending on the value of @direction.
#hb_font_t to work upon
The direction of the text segment
The number of glyph IDs in the sequence queried
The first glyph ID to query
The stride between successive glyph IDs
The first advance retrieved
The stride between successive advances
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the advances for a sequence of glyphs.
Fetches the (x,y) coordinates of a specified contour-point index
in the specified glyph, within the specified font.
%true if data found, false otherwise
#hb_font_t to work upon
The glyph ID to query
The contour-point index to query
The X value retrieved for the contour point
The Y value retrieved for the contour point
Fetches the (X,Y) coordinates of a specified contour-point index
in the specified glyph ID in the specified font, with respect
to the origin in a text segment in the specified direction.
Calls the appropriate direction-specific variant (horizontal
or vertical) depending on the value of @direction.
%true if data found, false otherwise
#hb_font_t to work upon
The glyph ID to query
The contour-point index to query
The direction of the text segment
The X value retrieved for the contour point
The Y value retrieved for the contour point
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the (X,Y) coordinates (in font units) for a
specified contour point in a glyph. Each coordinate must be returned as
an #hb_position_t output parameter.
Fetches the #hb_glyph_extents_t data for a glyph ID
in the specified font.
%true if data found, false otherwise
#hb_font_t to work upon
The glyph ID to query
The #hb_glyph_extents_t retrieved
Fetches the #hb_glyph_extents_t data for a glyph ID
in the specified font, with respect to the origin in
a text segment in the specified direction.
Calls the appropriate direction-specific variant (horizontal
or vertical) depending on the value of @direction.
%true if data found, false otherwise
#hb_font_t to work upon
The glyph ID to query
The direction of the text segment
The #hb_glyph_extents_t retrieved
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the extents for a specified glyph. Extents must be
returned in an #hb_glyph_extents output parameter.
Fetches the glyph ID that corresponds to a name string in the specified @font.
<note>Note: @len == -1 means the name string is null-terminated.</note>
%true if data found, false otherwise
#hb_font_t to work upon
The name string to query
The length of the name queried
The glyph ID retrieved
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the glyph ID that corresponds to a glyph-name
string.
Fetches the advance for a glyph ID in the specified font,
for horizontal text segments.
The advance of @glyph within @font
#hb_font_t to work upon
The glyph ID to query
Fetches the advances for a sequence of glyph IDs in the specified
font, for horizontal text segments.
#hb_font_t to work upon
The number of glyph IDs in the sequence queried
The first glyph ID to query
The stride between successive glyph IDs
The first advance retrieved
The stride between successive advances
Fetches the kerning-adjustment value for a glyph-pair in
the specified font, in horizontal text segments.
<note>It handles legacy kerning only (as returned by the corresponding
#hb_font_funcs_t function).</note>
The kerning adjustment value
#hb_font_t to work upon
The glyph ID of the left glyph in the glyph pair
The glyph ID of the right glyph in the glyph pair
Fetches the (X,Y) coordinates of the origin for a glyph ID
in the specified font, for horizontal text segments.
%true if data found, false otherwise
#hb_font_t to work upon
The glyph ID to query
The X coordinate of the origin
The Y coordinate of the origin
Fetches the kerning-adjustment value for a glyph-pair in the specified font.
Calls the appropriate direction-specific variant (horizontal
or vertical) depending on the value of @direction.
#hb_font_t to work upon
The glyph ID of the first glyph in the glyph pair to query
The glyph ID of the second glyph in the glyph pair to query
The direction of the text segment
The horizontal kerning-adjustment value retrieved
The vertical kerning-adjustment value retrieved
Fetches the glyph-name string for a glyph ID in the specified @font.
%true if data found, zero otherwise
#hb_font_t to work upon
The glyph ID to query
Name string retrieved for the glyph ID
Length of the glyph-name string retrieved
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the glyph name that corresponds to a
glyph ID. The name should be returned in a string output parameter.
Fetches the (X,Y) coordinates of the origin for a glyph in
the specified font.
Calls the appropriate direction-specific variant (horizontal
or vertical) depending on the value of @direction.
#hb_font_t to work upon
The glyph ID to query
The direction of the text segment
The X coordinate retrieved for the origin
The Y coordinate retrieved for the origin
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the (X,Y) coordinates (in font units) of the
origin for a glyph. Each coordinate must be returned in an #hb_position_t
output parameter.
Fetches the advance for a glyph ID in the specified font,
for vertical text segments.
The advance of @glyph within @font
#hb_font_t to work upon
The glyph ID to query
Fetches the advances for a sequence of glyph IDs in the specified
font, for vertical text segments.
#hb_font_t to work upon
The number of glyph IDs in the sequence queried
The first glyph ID to query
The stride between successive glyph IDs
The first advance retrieved
The stride between successive advances
Fetches the kerning-adjustment value for a glyph-pair in
the specified font, in vertical text segments.
<note>It handles legacy kerning only (as returned by the corresponding
#hb_font_funcs_t function).</note>
The kerning adjustment value
#hb_font_t to work upon
The glyph ID of the top glyph in the glyph pair
The glyph ID of the bottom glyph in the glyph pair
Fetches the (X,Y) coordinates of the origin for a glyph ID
in the specified font, for vertical text segments.
%true if data found, false otherwise
#hb_font_t to work upon
The glyph ID to query
The X coordinate of the origin
The Y coordinate of the origin
Fetches the extents for a specified font, in horizontal
text segments.
%true if data found, false otherwise
#hb_font_t to work upon
The font extents retrieved
Fetches the nominal glyph ID for a Unicode code point in the
specified font.
This version of the function should not be used to fetch glyph IDs
for code points modified by variation selectors. For variation-selector
support, user hb_font_get_variation_glyph() or use hb_font_get_glyph().
%true if data found, false otherwise
#hb_font_t to work upon
The Unicode code point to query
The glyph ID retrieved
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the nominal glyph ID for a specified Unicode code
point. Glyph IDs must be returned in a #hb_codepoint_t output parameter.
a font.
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the nominal glyph IDs for a sequence of
Unicode code points. Glyph IDs must be returned in a #hb_codepoint_t
output parameter.
Fetches the parent font of @font.
The parent font object
#hb_font_t to work upon
Fetches the horizontal and vertical points-per-em (ppem) of a font.
#hb_font_t to work upon
Horizontal ppem value
Vertical ppem value
Fetches the "point size" of a font. Used in CoreText to
implement optical sizing.
Point size. A value of zero means "not set."
#hb_font_t to work upon
Fetches the horizontal and vertical scale of a font.
#hb_font_t to work upon
Horizontal scale value
Vertical scale value
Fetches the user-data object associated with the specified key,
attached to the specified font object.
Pointer to the user data
#hb_font_t to work upon
The user-data key to query
Fetches the extents for a specified font, in vertical
text segments.
%true if data found, false otherwise
#hb_font_t to work upon
The font extents retrieved
Fetches the list of normalized variation coordinates currently
set on a font.
Return value is valid as long as variation coordinates of the font
are not modified.
#hb_font_t to work upon
Number of coordinates retrieved
Fetches the glyph ID for a Unicode code point when followed by
by the specified variation-selector code point, in the specified
font.
%true if data found, false otherwise
#hb_font_t to work upon
The Unicode code point to query
The variation-selector code point to query
The glyph ID retrieved
A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
This method should retrieve the glyph ID for a specified Unicode code point
followed by a specified Variation Selector code point. Glyph IDs must be
returned in a #hb_codepoint_t output parameter.
Fetches the glyph ID from @font that matches the specified string.
Strings of the format `gidDDD` or `uniUUUU` are parsed automatically.
<note>Note: @len == -1 means the string is null-terminated.</note>
%true if data found, false otherwise
#hb_font_t to work upon
string to query
The length of the string @s
The glyph ID corresponding to the string requested
Fetches the name of the specified glyph ID in @font and returns
it in string @s.
If the glyph ID has no name in @font, a string of the form `gidDDD` is
generated, with `DDD` being the glyph ID.
#hb_font_t to work upon
The glyph ID to query
The string containing the glyph name
Length of string @s
Tests whether a font object is immutable.
%true if @font is immutable, false otherwise
#hb_font_t to work upon
Makes @font immutable.
#hb_font_t to work upon
Increases the reference count on the given font object.
The @font object
#hb_font_t to work upon
Sets @face as the font-face value of @font.
#hb_font_t to work upon
The #hb_face_t to assign
Replaces the font-functions structure attached to a font, updating
the font's user-data with @font-data and the @destroy callback.
#hb_font_t to work upon
Data to attach to @font
The function to call when @font_data is not needed anymore
Replaces the user data attached to a font, updating the font's
@destroy callback.
#hb_font_t to work upon
Data to attach to @font
The function to call when @font_data is not needed anymore
Sets the parent font of @font.
#hb_font_t to work upon
The parent font object to assign
Sets the horizontal and vertical pixels-per-em (ppem) of a font.
#hb_font_t to work upon
Horizontal ppem value to assign
Vertical ppem value to assign
Sets the "point size" of a font. Set to zero to unset.
Used in CoreText to implement optical sizing.
<note>Note: There are 72 points in an inch.</note>
#hb_font_t to work upon
font size in points.
Sets the horizontal and vertical scale of a font.
#hb_font_t to work upon
Horizontal scale value to assign
Vertical scale value to assign
Attaches a user-data key/data pair to the specified font object.
#hb_font_t to work upon
The user-data key
A pointer to the user data
A callback to call when @data is not needed anymore
Whether to replace an existing data with the same key
Applies a list of variation coordinates (in design-space units)
to a font.
#hb_font_t to work upon
Array of variation coordinates to apply
Number of coordinates to apply
Applies a list of variation coordinates (in normalized units)
to a font.
<note>Note: Coordinates should be normalized to 2.14.</note>
#hb_font_t to work upon
Array of variation coordinates to apply
Number of coordinates to apply
Sets design coords of a font from a named instance index.
a font.
named instance index.
Applies a list of font-variation settings to a font.
#hb_font_t to work upon
Array of variation settings to apply
Number of variations to apply
Subtracts the origin coordinates from an (X,Y) point coordinate,
in the specified glyph ID in the specified font.
Calls the appropriate direction-specific variant (horizontal
or vertical) depending on the value of @direction.
#hb_font_t to work upon
The glyph ID to query
The direction of the text segment
Input = The original X coordinate
Output = The X coordinate minus the X-coordinate of the origin
Input = The original Y coordinate
Output = The Y coordinate minus the Y-coordinate of the origin
Creates an #hb_face_t face object from the specified FT_Face.
This variant of the function does not provide any life-cycle management.
Most client programs should use hb_ft_face_create_referenced()
(or, perhaps, hb_ft_face_create_cached()) instead.
If you know you have valid reasons not to use hb_ft_face_create_referenced(),
then it is the client program's responsibility to destroy @ft_face
after the #hb_face_t face object has been destroyed.
the new #hb_face_t face object
FT_Face to work upon
A callback to call when the face object is not needed anymore
Creates an #hb_face_t face object from the specified FT_Face.
This variant of the function caches the newly created #hb_face_t
face object, using the @generic pointer of @ft_face. Subsequent function
calls that are passed the same @ft_face parameter will have the same
#hb_face_t returned to them, and that #hb_face_t will be correctly
reference counted.
However, client programs are still responsible for destroying
@ft_face after the last #hb_face_t face object has been destroyed.
the new #hb_face_t face object
FT_Face to work upon
Creates an #hb_face_t face object from the specified FT_Face.
This is the preferred variant of the hb_ft_face_create*
function family, because it calls FT_Reference_Face() on @ft_face,
ensuring that @ft_face remains alive as long as the resulting
#hb_face_t face object remains alive. Also calls FT_Done_Face()
when the #hb_face_t face object is destroyed.
Use this version unless you know you have good reasons not to.
the new #hb_face_t face object
FT_Face to work upon
Creates an #hb_font_t font object from the specified FT_Face.
<note>Note: You must set the face size on @ft_face before calling
hb_ft_font_create() on it. Otherwise, HarfBuzz will not pick up
the face size.</note>
This variant of the function does not provide any life-cycle management.
Most client programs should use hb_ft_font_create_referenced()
instead.
If you know you have valid reasons not to use hb_ft_font_create_referenced(),
then it is the client program's responsibility to destroy @ft_face
after the #hb_font_t font object has been destroyed.
HarfBuzz will use the @destroy callback on the #hb_font_t font object
if it is supplied when you use this function. However, even if @destroy
is provided, it is the client program's responsibility to destroy @ft_face,
and it is the client program's responsibility to ensure that @ft_face is
destroyed only after the #hb_font_t font object has been destroyed.
the new #hb_font_t font object
FT_Face to work upon
A callback to call when the font object is not needed anymore
Creates an #hb_font_t font object from the specified FT_Face.
<note>Note: You must set the face size on @ft_face before calling
hb_ft_font_create_references() on it. Otherwise, HarfBuzz will not pick up
the face size.</note>
This is the preferred variant of the hb_ft_font_create*
function family, because it calls FT_Reference_Face() on @ft_face,
ensuring that @ft_face remains alive as long as the resulting
#hb_font_t font object remains alive.
Use this version unless you know you have good reasons not to.
the new #hb_font_t font object
FT_Face to work upon
Fetches the FT_Load_Glyph load flags of the specified #hb_font_t.
For more information, see
https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#ft_load_xxx
FT_Load_Glyph flags found
#hb_font_t to work upon
Configures the font-functions structure of the specified
#hb_font_t font object to use FreeType font functions.
In particular, you can use this function to configure an
existing #hb_face_t face object for use with FreeType font
functions even if that #hb_face_t face object was initially
created with hb_face_create(), and therefore was not
initially configured to use FreeType font functions.
An #hb_face_t face object created with hb_ft_face_create()
is preconfigured for FreeType font functions and does not
require this function to be used.
<note>Note: Internally, this function creates an FT_Face.
</note>
#hb_font_t to work upon
Sets the FT_Load_Glyph load flags for the specified #hb_font_t.
For more information, see
https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#ft_load_xxx
#hb_font_t to work upon
The FreeType load flags to set
Creates an #hb_blob_t blob from the specified
GBytes data structure.
the new #hb_blob_t blob object
the GBytes structure to work upon
Fetches a Unicode-functions structure that is populated
with the appropriate GLib function for each method.
a pointer to the #hb_unicode_funcs_t Unicode-functions structure
Fetches the GUnicodeScript identifier that corresponds to the
specified #hb_script_t script.
the GUnicodeScript identifier found
The #hb_script_t to query
Fetches the #hb_script_t script that corresponds to the
specified GUnicodeScript identifier.
the #hb_script_t script found
The GUnicodeScript identifier to query
Glyph extent values, measured in font units.
Note that @height is negative, in coordinate systems that grow up.
Distance from the x-origin to the left extremum of the glyph.
Distance from the top extremum of the glyph to the y-origin.
Distance from the left extremum of the glyph to the right extremum.
Distance from the top extremum of the glyph to the bottom extremum.
Indicates that if input text is broken at the
beginning of the cluster this glyph is part of,
then both sides need to be re-shaped, as the
result might be different. On the flip side,
it means that when this flag is not present,
then it's safe to break the glyph-run at the
beginning of this cluster, and the two sides
represent the exact same result one would get
if breaking input text at the beginning of
this cluster and shaping the two sides
separately. This can be used to optimize
paragraph layout, by avoiding re-shaping
of each line after line-breaking, or limiting
the reshaping to a small piece around the
breaking point only.
All the currently defined flags.
Returns glyph flags encoded within a #hb_glyph_info_t.
The #hb_glyph_flags_t encoded within @info
a #hb_glyph_info_t
The #hb_glyph_info_t is the structure that holds information about the
glyphs and their relation to input text.
either a Unicode code point (before shaping) or a glyph index
(after shaping).
the index of the character in the original text that corresponds
to this #hb_glyph_info_t, or whatever the client passes to
hb_buffer_add(). More than one #hb_glyph_info_t can have the same
@cluster value, if they resulted from the same character (e.g. one
to many glyph substitution), and when more than one character gets
merged in the same glyph (e.g. many to one glyph substitution) the
#hb_glyph_info_t will have the smallest cluster value of them.
By default some characters are merged into the same cluster
(e.g. combining marks have the same cluster as their bases)
even if they are separate glyphs, hb_buffer_set_cluster_level()
allow selecting more fine-grained cluster handling.
The #hb_glyph_position_t is the structure that holds the positions of the
glyph in both horizontal and vertical directions. All positions in
#hb_glyph_position_t are relative to the current point.
how much the line advances after drawing this glyph when setting
text in horizontal direction.
how much the line advances after drawing this glyph when setting
text in vertical direction.
how much the glyph moves on the X-axis before drawing it, this
should not affect how much the line advances.
how much the glyph moves on the Y-axis before drawing it, this
should not affect how much the line advances.
Fetches the Graphite2 gr_face corresponding to the specified
#hb_face_t face object.
the gr_face found
@hb_face_t to query
Functions for querying AAT Layout features in the font face.
HarfBuzz supports all of the AAT tables used to implement shaping. Other
AAT tables and their associated features are not supported.
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.
Buffers serve a dual role in HarfBuzz; before shaping, they hold
the input characters that are passed to hb_shape(), and after
shaping they hold the output glyphs.
Common data types used across HarfBuzz are defined here.
These API have been deprecated in favor of newer API, or because they
were deemed unnecessary.
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.
Functions for working with font objects.
A font object represents a font face at a specific size and with
certain other parameters (pixels-per-em, points-per-em, variation
settings) specified. Font objects are created from font face
objects, and are used as input to hb_shape(), among other things.
Client programs can optionally pass in their own functions that
implement the basic, lower-level queries of font objects. This set
of font functions is defined by the virtual methods in
#hb_font_funcs_t.
HarfBuzz provides a built-in set of lightweight default
functions for each method in #hb_font_funcs_t.
Functions for using HarfBuzz with the FreeType library.
HarfBuzz supports using FreeType to provide face and
font data.
<note>Note that FreeType is not thread-safe, therefore these
functions are not thread-safe either.</note>
Functions for using HarfBuzz with the GLib library.
HarfBuzz supports using GLib to provide Unicode data, by attaching
GLib functions to the virtual methods in a #hb_unicode_funcs_t function
structure.
Support for using HarfBuzz with the GObject library to provide
type data.
The types and functions listed here are solely a linkage between
HarfBuzz's public data types and the GTypes used by the GObject framework.
HarfBuzz uses GObject introspection to generate its Python bindings
(and potentially other language bindings); client programs should never need
to access the GObject-integration mechanics.
For client programs using the GNOME and GTK software stack, please see the
GLib and FreeType integration pages.
Functions for using HarfBuzz with fonts that include Graphite features.
For Graphite features to work, you must be sure that HarfBuzz was compiled
with the `graphite2` shaping engine enabled. Currently, the default is to
not enable `graphite2` shaping.
Map objects are integer-to-integer hash-maps. Currently they are
not used in the HarfBuzz public API, but are provided for client's
use if desired.
Functions for fetching color-font information from OpenType font faces.
HarfBuzz supports `COLR`/`CPAL`, `sbix`, `CBDT`, and `SVG` color fonts.
Functions for using OpenType fonts with hb_shape(). Note that fonts returned
by hb_font_create() default to using these functions, so most clients would
never need to call these functions directly.
Functions for querying OpenType Layout features in the font face.
Functions for fetching mathematics layout data from OpenType fonts.
HarfBuzz itself does not implement a math layout solution. The
functions and types provided can be used by client programs to access
the font data necessary for typesetting OpenType Math layout.
Functions for fetching metadata from fonts.
Functions for fetching metrics from fonts.
Functions for fetching name strings from OpenType fonts.
Support functions for OpenType shaping related queries.
Functions for fetching information about OpenType Variable Fonts.
Set objects represent a mathematical set of integer values. They are
used in non-shaping APIs to query certain sets of characters or glyphs,
or other integer values.
Shaping is the central operation of HarfBuzz. Shaping operates on buffers,
which are sequences of Unicode characters that use the same font and have
the same text direction, script, and language. After shaping the buffer
contains the output glyphs and their positions.
Shape plans are an internal mechanism. Each plan contains state
describing how HarfBuzz will shape a particular text segment, based on
the combination of segment properties and the capabilities in the
font face in use.
Shape plans are not used for shaping directly, but can be queried to
access certain information about how shaping will perform, given a set
of specific input parameters (script, language, direction, features,
etc.).
Most client programs will not need to deal with shape plans directly.
Unicode functions are used to access Unicode character properties.
With these functions, client programs can query various properties from
the Unicode Character Database for any code point, such as General
Category (gc), Script (sc), Canonical Combining Class (ccc), etc.
Client programs can optionally pass in their own Unicode functions
that implement the same queries. The set of functions available is
defined by the virtual methods in #hb_unicode_funcs_t.
HarfBuzz provides built-in default functions for each method in
#hb_unicode_funcs_t.
These functions and macros allow accessing version of the HarfBuzz
library used at compile- as well as run-time, and to direct code
conditionally based on those versions, again, at compile- or run-time.
Converts @str representing a BCP 47 language tag to the corresponding
#hb_language_t.
The #hb_language_t corresponding to the BCP 47 language tag.
a string representing
a BCP 47 language tag
length of the @str, or -1 if it is %NULL-terminated.
Fetch the default language from current locale.
<note>Note that the first time this function is called, it calls
"setlocale (LC_CTYPE, nullptr)" to fetch current locale. The underlying
setlocale function is, in many implementations, NOT threadsafe. To avoid
problems, call this function once before multiple threads can call it.
This function is only used from hb_buffer_guess_segment_properties() by
HarfBuzz itself.</note>
The default language of the locale as
an #hb_language_t
Converts an #hb_language_t to a string.
A %NULL-terminated string representing the @language. Must not be freed by
the caller.
The #hb_language_t to convert
Converts an #hb_language_t to a string.
A %NULL-terminated string representing the @language. Must not be freed by
the caller.
The #hb_language_t to convert
Tests whether memory allocation for a set was successful.
%true if allocation succeeded, false otherwise
A map
Clears out the contents of @map.
A map
Creates a new, initially empty map.
The new #hb_map_t
Removes @key and its stored value from @map.
A map
The key to delete
Decreases the reference count on a map. When
the reference count reaches zero, the map is
destroyed, freeing all memory.
A map
Fetches the value stored for @key in @map.
A map
The key to query
Fetches the singleton empty #hb_map_t.
The empty #hb_map_t
Returns the number of key-value pairs in the map.
The population of @map
A map
Fetches the user data associated with the specified key,
attached to the specified map.
A pointer to the user data
A map
The user-data key to query
Tests whether @key is an element of @map.
%true if @key is found in @map, false otherwise
A map
The key to query
Tests whether @map is empty (contains no elements).
%true if @map is empty
A map
Increases the reference count on a map.
The map
A map
Stores @key:@value in the map.
A map
The key to store in the map
The value to store for @key
Attaches a user-data key/data pair to the specified map.
%true if success, %false otherwise
A map
The user-data key to set
A pointer to the user data to set
A callback to call when @data is not needed anymore
Whether to replace an existing data with the same key
Data type for holding integer-to-integer hash maps.
@HB_MEMORY_MODE_DUPLICATE
@HB_MEMORY_MODE_READONLY
@HB_MEMORY_MODE_WRITABLE
@HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE
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.
Fetches a list of all color layers for the specified glyph index in the specified
face. The list returned will begin at the offset provided.
Total number of layers available for the glyph index queried
#hb_face_t to work upon
The glyph index to query
offset of the first layer to retrieve
Input = the maximum number of layers to return;
Output = the actual number of layers returned (may be zero)
The array of layers found
Fetches the PNG image for a glyph. This function takes a font object, not a face object,
as input. To get an optimally sized PNG blob, the UPEM value must be set on the @font
object. If UPEM is unset, the blob returned will be the largest PNG available.
An #hb_blob_t containing the PNG image for the glyph, if available
#hb_font_t to work upon
a glyph index
Fetches the SVG document for a glyph. The blob may be either plain text or gzip-encoded.
An #hb_blob_t containing the SVG document of the glyph, if available
#hb_face_t to work upon
a svg glyph index
Tests whether a face includes any `COLR` color layers.
true if data found, false otherwise
#hb_face_t to work upon
Tests whether a face includes a `CPAL` color-palette table.
true if data found, false otherwise
#hb_face_t to work upon
Tests whether a face has PNG glyph images (either in `CBDT` or `sbix` tables).
true if data found, false otherwise
#hb_face_t to work upon
Tests whether a face includes any `SVG` glyph images.
true if data found, false otherwise.
#hb_face_t to work upon.
Pairs of glyph and color index.
Fetches the `name` table Name ID that provides display names for
the specificed color in a face's `CPAL` color palette.
Display names can be generic (e.g., "Background") or specific
(e.g., "Eye color").
the Name ID found for the color.
#hb_face_t to work upon
The index of the color
Default indicating that there is nothing special
to note about a color palette.
Flag indicating that the color
palette is appropriate to use when displaying the font on a light background such as white.
Flag indicating that the color
palette is appropriate to use when displaying the font on a dark background such as black.
Fetches a list of the colors in a color palette.
After calling this function, @colors will be filled with the palette
colors. If @colors is NULL, the function will just return the number
of total colors without storing any actual colors; this can be used
for allocating a buffer of suitable size before calling
hb_ot_color_palette_get_colors() a second time.
the total number of colors in the palette
#hb_face_t to work upon
the index of the color palette to query
offset of the first color to retrieve
Input = the maximum number of colors to return;
Output = the actual number of colors returned (may be zero)
The array of #hb_color_t records found
Fetches the number of color palettes in a face.
the number of palettes found
#hb_face_t to work upon
Fetches the flags defined for a color palette.
the #hb_ot_color_palette_flags_t of the requested color palette
#hb_face_t to work upon
The index of the color palette
Fetches the `name` table Name ID that provides display names for
a `CPAL` color palette.
Palette display names can be generic (e.g., "Default") or provide
specific, themed names (e.g., "Spring", "Summer", "Fall", and "Winter").
the Named ID found for the palette.
If the requested palette has no name the result is #HB_OT_NAME_ID_INVALID.
#hb_face_t to work upon
The index of the color palette
Sets the font functions to use when working with @font.
#hb_font_t to work upon
Baseline tags from https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags
The baseline used by alphabetic scripts such as Latin, Cyrillic and Greek.
In vertical writing mode, the alphabetic baseline for characters rotated 90 degrees clockwise.
(This would not apply to alphabetic characters that remain upright in vertical writing mode, since these
characters are not rotated.)
The hanging baseline. In horizontal direction, this is the horizontal
line from which syllables seem, to hang in Tibetan and other similar scripts. In vertical writing mode,
for Tibetan (or some other similar script) characters rotated 90 degrees clockwise.
Ideographic character face bottom or left edge,
if the direction is horizontal or vertical, respectively.
Ideographic character face top or right edge,
if the direction is horizontal or vertical, respectively.
Ideographic em-box bottom or left edge,
if the direction is horizontal or vertical, respectively.
Ideographic em-box top or right edge baseline,
if the direction is horizontal or vertical, respectively.
The baseline about which mathematical characters are centered.
In vertical writing mode when mathematical characters rotated 90 degrees clockwise, are centered.
Fetches a list of all feature indexes in the specified face's GSUB table
or GPOS table, underneath the specified scripts, languages, and features.
If no list of scripts is provided, all scripts will be queried. If no list
of languages is provided, all languages will be queried. If no list of
features is provided, all features will be queried.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The array of scripts to collect features for
The array of languages to collect features for
The array of features to collect
The array of feature indexes found for the query
Fetches a list of all feature-lookup indexes in the specified face's GSUB
table or GPOS table, underneath the specified scripts, languages, and
features. If no list of scripts is provided, all scripts will be queried.
If no list of languages is provided, all languages will be queried. If no
list of features is provided, all features will be queried.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The array of scripts to collect lookups for
The array of languages to collect lookups for
The array of features to collect lookups for
The array of lookup indexes found for the query
Fetches a list of the characters defined as having a variant under the specified
"Character Variant" ("cvXX") feature tag.
Number of total sample characters in the cvXX feature.
#hb_face_t to work upon
table tag to query, "GSUB" or "GPOS".
index of feature to query.
offset of the first character to retrieve
Input = the maximum number of characters to return;
Output = the actual number of characters returned (may be zero)
A buffer pointer.
The Unicode codepoints of the characters for which this feature provides
glyph variants.
Fetches a list of all lookups enumerated for the specified feature, in
the specified face's GSUB table or GPOS table. The list returned will
begin at the offset provided.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The index of the requested feature
offset of the first lookup to retrieve
Input = the maximum number of lookups to return;
Output = the actual number of lookups returned (may be zero)
The array of lookup indexes found for the query
Fetches name indices from feature parameters for "Stylistic Set" ('ssXX') or
"Character Variant" ('cvXX') features.
%true if data found, false otherwise
#hb_face_t to work upon
table tag to query, "GSUB" or "GPOS".
index of feature to query.
The ‘name’ table name ID that specifies a string
for a user-interface label for this feature. (May be NULL.)
The ‘name’ table name ID that specifies a string
that an application can use for tooltip text for this
feature. (May be NULL.)
The ‘name’ table name ID that specifies sample text
that illustrates the effect of this feature. (May be NULL.)
Number of named parameters. (May be zero.)
The first ‘name’ table name ID used to specify
strings for user-interface labels for the feature
parameters. (Must be zero if numParameters is zero.)
Fetches a list of all lookups enumerated for the specified feature, in
the specified face's GSUB table or GPOS table, enabled at the specified
variations index. The list returned will begin at the offset provided.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The index of the feature to query
The index of the feature variation to query
offset of the first lookup to retrieve
Input = the maximum number of lookups to return;
Output = the actual number of lookups returned (may be zero)
The array of lookups found for the query
Fetches a list of all attachment points for the specified glyph in the GDEF
table of the face. The list returned will begin at the offset provided.
Useful if the client program wishes to cache the list.
The #hb_face_t to work on
The #hb_codepoint_t code point to query
offset of the first attachment point to retrieve
Input = the maximum number of attachment points to return;
Output = the actual number of attachment points returned (may be zero)
The array of attachment points found for the query
Fetches a baseline value from the face.
if found baseline value in the font.
a font
a baseline tag
text direction.
script tag.
language tag.
baseline value if found.
Fetches the GDEF class of the requested glyph in the specified face.
The #hb_ot_layout_glyph_class_t glyph class of the given code
point in the GDEF table of the face.
The #hb_face_t to work on
The #hb_codepoint_t code point to query
Retrieves the set of all glyphs from the face that belong to the requested
glyph class in the face's GDEF table.
The #hb_face_t to work on
The #hb_ot_layout_glyph_class_t GDEF class to retrieve
The #hb_set_t set of all glyphs belonging to the requested
class.
Fetches a list of the caret positions defined for a ligature glyph in the GDEF
table of the font. The list returned will begin at the offset provided.
The #hb_font_t to work on
The #hb_direction_t text direction to use
The #hb_codepoint_t code point to query
offset of the first caret position to retrieve
Input = the maximum number of caret positions to return;
Output = the actual number of caret positions returned (may be zero)
The array of caret positions found for the query
Fetches optical-size feature data (i.e., the `size` feature from GPOS). Note that
the subfamily_id and the subfamily name string (accessible via the subfamily_name_id)
as used here are defined as pertaining only to fonts within a font family that differ
specifically in their respective size ranges; other ways to differentiate fonts within
a subfamily are not covered by the `size` feature.
For more information on this distinction, see the [`size` feature documentation](
https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#tag-size).
%true if data found, false otherwise
#hb_face_t to work upon
The design size of the face
The identifier of the face within the font subfamily
The ‘name’ table name ID of the face within the font subfamily
The minimum size of the recommended size range for the face
The maximum size of the recommended size range for the face
The GDEF classes defined for glyphs.
Glyphs not matching the other classifications
Spacing, single characters, capable of accepting marks
Glyphs that represent ligation of multiple characters
Non-spacing, combining glyphs that represent marks
Spacing glyphs that represent part of a single character
Tests whether a face has any glyph classes defined in its GDEF table.
%true if data found, false otherwise
#hb_face_t to work upon
%true if the face has GPOS data, false otherwise
#hb_face_t to work upon
Tests whether the specified face includes any GSUB substitutions.
%true if data found, false otherwise
#hb_face_t to work upon
Fetches the index of a given feature tag in the specified face's GSUB table
or GPOS table, underneath the specified script and language.
%true if the feature is found, false otherwise
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The index of the requested script tag
The index of the requested language tag
#hb_tag_t of the feature tag requested
The index of the requested feature
Fetches a list of all features in the specified face's GSUB table
or GPOS table, underneath the specified script and language. The list
returned will begin at the offset provided.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The index of the requested script tag
The index of the requested language tag
offset of the first feature tag to retrieve
Input = the maximum number of feature tags to return;
Output: the actual number of feature tags returned (may be zero)
The array of feature indexes found for the query
Fetches a list of all features in the specified face's GSUB table
or GPOS table, underneath the specified script and language. The list
returned will begin at the offset provided.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The index of the requested script tag
The index of the requested language tag
offset of the first feature tag to retrieve
Input = the maximum number of feature tags to return;
Output = the actual number of feature tags returned (may be zero)
The array of #hb_tag_t feature tags found for the query
Fetches the tag of a requested feature index in the given face's GSUB or GPOS table,
underneath the specified script and language.
%true if the feature is found, false otherwise
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The index of the requested script tag
The index of the requested language tag
The index of the requested feature
The #hb_tag_t of the requested feature
Fetches the index of a requested feature in the given face's GSUB or GPOS table,
underneath the specified script and language.
%true if the feature is found, false otherwise
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The index of the requested script tag
The index of the requested language tag
The index of the requested feature
Fetches a list of all glyphs affected by the specified lookup in the
specified face's GSUB table or GPOS table.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The index of the feature lookup to query
Array of glyphs preceding the substitution range
Array of input glyphs that would be substituted by the lookup
Array of glyphs following the substitution range
Array of glyphs that would be the substituted output of the lookup
Fetches alternates of a glyph from a given GSUB lookup index.
total number of alternates found in the specific lookup index for the given glyph id.
a face.
index of the feature lookup to query.
a glyph id.
starting offset.
Input = the maximum number of alternate glyphs to return;
Output = the actual number of alternate glyphs returned (may be zero).
A glyphs buffer.
Alternate glyphs associated with the glyph id.
Compute the transitive closure of glyphs needed for a
specified lookup.
#hb_face_t to work upon
index of the feature lookup to query
Array of glyphs comprising the transitive closure of the lookup
Tests whether a specified lookup in the specified face would
trigger a substitution on the given glyph sequence.
%true if a substitution would be triggered, false otherwise
#hb_face_t to work upon
The index of the lookup to query
The sequence of glyphs to query for substitution
The length of the glyph sequence
#hb_bool_t indicating whether substitutions should be context-free
Compute the transitive closure of glyphs needed for all of the
provided lookups.
#hb_face_t to work upon
The set of lookups to query
Array of glyphs comprising the transitive closure of the lookups
Fetches the index of a given language tag in the specified face's GSUB table
or GPOS table, underneath the specified script tag.
??
??
%true if the language tag is found, false otherwise
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The index of the requested script tag
The #hb_tag_t of the requested language
The index of the requested language
Fetches a list of language tags in the given face's GSUB or GPOS table, underneath
the specified script index. The list returned will begin at the offset provided.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The index of the requested script tag
offset of the first language tag to retrieve
Input = the maximum number of language tags to return;
Output = the actual number of language tags returned (may be zero)
Array of language tags found in the table
Fetches the index of a given language tag in the specified face's GSUB table
or GPOS table, underneath the specified script index.
%true if the language tag is found, false otherwise
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The index of the requested script tag
The number of languages in the specified script
The array of language tags
The index of the requested language
Deprecated since 2.0.0
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
Array of #hb_tag_t script tags
The index of the requested script tag
#hb_tag_t of the script tag requested
Fetches a list of feature variations in the specified face's GSUB table
or GPOS table, at the specified variation coordinates.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
The variation coordinates to query
The number of variation coordinates
The array of feature variations found for the query
Fetches the index if a given script tag in the specified face's GSUB table
or GPOS table.
%true if the script is found, false otherwise
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
#hb_tag_t of the script tag requested
The index of the requested script tag
Fetches a list of all feature tags in the given face's GSUB or GPOS table.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
offset of the first feature tag to retrieve
Input = the maximum number of feature tags to return;
Output = the actual number of feature tags returned (may be zero)
Array of feature tags found in the table
Fetches the total number of lookups enumerated in the specified
face's GSUB table or GPOS table.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
Fetches a list of all scripts enumerated in the specified face's GSUB table
or GPOS table. The list returned will begin at the offset provided.
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
offset of the first script tag to retrieve
Input = the maximum number of script tags to return;
Output = the actual number of script tags returned (may be zero)
The array of #hb_tag_t script tags found for the query
#hb_face_t to work upon
HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
Number of script tags in the array
Array of #hb_tag_t script tags
The index of the requested script
#hb_tag_t of the requested script
The 'MATH' table constants specified at
https://docs.microsoft.com/en-us/typography/opentype/spec/math
Fetches the specified math constant. For most constants, the value returned
is an #hb_position_t.
However, if the requested constant is #HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN,
#HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN or
#HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN, then the return value is
an integer between 0 and 100 representing that percentage.
the requested constant or zero
#hb_font_t to work upon
#hb_ot_math_constant_t the constant to retrieve
Fetches the GlyphAssembly for the specified font, glyph index, and direction.
Returned are a list of #hb_ot_math_glyph_part_t glyph parts that can be
used to draw the glyph and an italics-correction value (if one is defined
in the font).
<note>The @direction parameter is only used to select between horizontal
or vertical directions for the construction. Even though all #hb_direction_t
values are accepted, only the result of #HB_DIRECTION_IS_HORIZONTAL is
considered.</note>
the total number of parts in the glyph assembly
#hb_font_t to work upon
The index of the glyph to stretch
direction of the stretching (horizontal or vertical)
offset of the first glyph part to retrieve
Input = maximum number of glyph parts to return;
Output = actual number of parts returned
the glyph parts returned
italics correction of the glyph assembly
Fetches an italics-correction value (if one exists) for the specified
glyph index.
the italics correction of the glyph or zero
#hb_font_t to work upon
The glyph index from which to retrieve the value
Fetches the math kerning (cut-ins) value for the specified font, glyph index, and
@kern.
If the MathKern table is found, the function examines it to find a height
value that is greater or equal to @correction_height. If such a height
value is found, corresponding kerning value from the table is returned. If
no such height value is found, the last kerning value is returned.
requested kerning value or zero
#hb_font_t to work upon
The glyph index from which to retrieve the value
The #hb_ot_math_kern_t from which to retrieve the value
the correction height to use to determine the kerning.
Fetches a top-accent-attachment value (if one exists) for the specified
glyph index.
For any glyph that does not have a top-accent-attachment value - that is,
a glyph not covered by the `MathTopAccentAttachment` table (or, when
@font has no `MathTopAccentAttachment` table or no `MATH` table, any
glyph) - the function synthesizes a value, returning the position at
one-half the glyph's advance width.
the top accent attachment of the glyph or 0.5 * the advance
width of @glyph
#hb_font_t to work upon
The glyph index from which to retrieve the value
Fetches the MathGlyphConstruction for the specified font, glyph index, and
direction. The corresponding list of size variants is returned as a list of
#hb_ot_math_glyph_variant_t structs.
<note>The @direction parameter is only used to select between horizontal
or vertical directions for the construction. Even though all #hb_direction_t
values are accepted, only the result of #HB_DIRECTION_IS_HORIZONTAL is
considered.</note>
the total number of size variants available or zero
#hb_font_t to work upon
The index of the glyph to stretch
The direction of the stretching (horizontal or vertical)
offset of the first variant to retrieve
Input = the maximum number of variants to return;
Output = the actual number of variants returned
array of variants returned
Fetches the MathVariants table for the specified font and returns the
minimum overlap of connecting glyphs that are required to draw a glyph
assembly in the specified direction.
<note>The @direction parameter is only used to select between horizontal
or vertical directions for the construction. Even though all #hb_direction_t
values are accepted, only the result of #HB_DIRECTION_IS_HORIZONTAL is
considered.</note>
requested minimum connector overlap or zero
#hb_font_t to work upon
direction of the stretching (horizontal or vertical)
Flags for math glyph parts.
Data type to hold information for a "part" component of a math-variant glyph.
Large variants for stretchable math glyphs (such as parentheses) can be constructed
on the fly from parts.
The glyph index of the variant part
The length of the connector on the starting side of the variant part
The length of the connector on the ending side of the variant part
The total advance of the part
#hb_ot_math_glyph_part_flags_t flags for the part
Data type to hold math-variant information for a glyph.
The glyph index of the variant
The advance width of the variant
Tests whether a face has a `MATH` table.
true if the table is found, false otherwise
#hb_face_t to test
Tests whether the given glyph index is an extended shape in the face.
true if the glyph is an extended shape, false otherwise
#hb_face_t to work upon
The glyph index to test
The math kerning-table types defined for the four corners
of a glyph.
Number of all available feature types.
a face object
iteration's start offset
buffer size as input, filled size as output
entries tags buffer
It fetches metadata entry of a given tag from a font.
A blob containing the blob.
a #hb_face_t object.
tag of metadata you like to have.
Known metadata tags from https://docs.microsoft.com/en-us/typography/opentype/spec/meta
Design languages. Text, using only
Basic Latin (ASCII) characters. Indicates languages and/or scripts
for the user audiences that the font was primarily designed for.
Supported languages. Text, using
only Basic Latin (ASCII) characters. Indicates languages and/or scripts
that the font is declared to be capable of supporting.
It fetches metrics value corresponding to a given tag from a font.
Whether found the requested metrics in the font.
a #hb_font_t object.
tag of metrics value you like to fetch.
result of metrics value from the font.
From https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags
horizontal ascender.
horizontal descender.
horizontal line gap.
horizontal clipping ascent.
horizontal clipping descent.
vertical ascender.
vertical descender.
vertical line gap.
horizontal caret rise.
horizontal caret run.
horizontal caret offset.
vertical caret rise.
vertical caret run.
vertical caret offset.
x height.
cap height.
subscript em x size.
subscript em y size.
subscript em x offset.
subscript em y offset.
superscript em x size.
superscript em y size.
superscript em x offset.
superscript em y offset.
strikeout size.
strikeout offset.
underline size.
underline offset.
Structure representing a name ID in a particular language.
name ID
language
Fetches a font name from the OpenType 'name' table.
If @language is #HB_LANGUAGE_INVALID, English ("en") is assumed.
Returns string in UTF-16 encoding.
full length of the requested string, or 0 if not found.
font face.
OpenType name identifier to fetch.
language to fetch the name for.
input size of @text buffer, and output size of
text written to buffer.
buffer to write fetched name into.
Fetches a font name from the OpenType 'name' table.
If @language is #HB_LANGUAGE_INVALID, English ("en") is assumed.
Returns string in UTF-32 encoding.
full length of the requested string, or 0 if not found.
font face.
OpenType name identifier to fetch.
language to fetch the name for.
input size of @text buffer, and output size of
text written to buffer.
buffer to write fetched name into.
Fetches a font name from the OpenType 'name' table.
If @language is #HB_LANGUAGE_INVALID, English ("en") is assumed.
Returns string in UTF-8 encoding.
full length of the requested string, or 0 if not found.
font face.
OpenType name identifier to fetch.
language to fetch the name for.
input size of @text buffer, and output size of
text written to buffer.
buffer to write fetched name into.
Enumerates all available name IDs and language combinations. Returned
array is owned by the @face and should not be modified. It can be
used as long as @face is alive.
Array of available name entries.
font face.
number of returned entries.
Computes the transitive closure of glyphs needed for a specified
input buffer under the given font and feature list. The closure is
computed as a set, not as a list.
#hb_font_t to work upon
The input buffer to compute from
The features enabled on the buffer
The number of features enabled on the buffer
The #hb_set_t set of glyphs comprising the transitive closure of the query
Converts an #hb_script_t and an #hb_language_t to script and language tags.
an #hb_script_t to convert.
an #hb_language_t to convert.
maximum number of script tags to retrieve (IN)
and actual number of script tags retrieved (OUT)
array of size at least @script_count to store the
script tag results
maximum number of language tags to retrieve
(IN) and actual number of language tags retrieved (OUT)
array of size at least @language_count to store
the language tag results
Converts a script tag and a language tag to an #hb_script_t and an
#hb_language_t.
a script tag
a language tag
the #hb_script_t corresponding to @script_tag (OUT).
the #hb_language_t corresponding to @script_tag and
@language_tag (OUT).
The axis should not be exposed directly in user interfaces.
Data type for holding variation-axis values.
The minimum, default, and maximum values are in un-normalized, user scales.
<note>Note: at present, the only flag defined for @flags is
#HB_OT_VAR_AXIS_FLAG_HIDDEN.</note>
Index of the axis in the variation-axis array
The #hb_tag_t tag identifying the design variation of the axis
The `name` table Name ID that provides display names for the axis
The #hb_ot_var_axis_flags_t flags for the axis
The mininum value on the variation axis that the font covers
The position on the variation axis corresponding to the font's defaults
The maximum value on the variation axis that the font covers
Fetches the variation-axis information corresponding to the specified axis tag
in the specified face.
- use hb_ot_var_find_axis_info() instead
#hb_face_t to work upon
The #hb_tag_t of the variation axis to query
The index of the variation axis
The #hb_ot_var_axis_info_t of the axis tag queried
Fetches the variation-axis information corresponding to the specified axis tag
in the specified face.
true if data found, false otherwise
#hb_face_t to work upon
The #hb_tag_t of the variation axis to query
The #hb_ot_var_axis_info_t of the axis tag queried
Fetches a list of all variation axes in the specified face. The list returned will begin
at the offset provided.
use hb_ot_var_get_axis_infos() instead
#hb_face_t to work upon
offset of the first lookup to retrieve
Input = the maximum number of variation axes to return;
Output = the actual number of variation axes returned (may be zero)
The array of variation axes found
Fetches the number of OpenType variation axes included in the face.
the number of variation axes defined
The #hb_face_t to work on
Fetches a list of all variation axes in the specified face. The list returned will begin
at the offset provided.
the number of variation axes in the face
#hb_face_t to work upon
offset of the first lookup to retrieve
Input = the maximum number of variation axes to return;
Output = the actual number of variation axes returned (may be zero)
The array of variation axes found
Fetches the number of named instances included in the face.
the number of named instances defined
The #hb_face_t to work on
Tests whether a face includes any OpenType variation data in the `fvar` table.
true if data found, false otherwise
The #hb_face_t to work on
Fetches the design-space coordinates corresponding to the given
named instance in the face.
the number of variation axes in the face
The #hb_face_t to work on
The index of the named instance to query
Input = the maximum number of coordinates to return;
Output = the actual number of coordinates returned (may be zero)
The array of coordinates found for the query
Fetches the `name` table Name ID that provides display names for
the "PostScript name" defined for the given named instance in the face.
the Name ID found for the PostScript name
The #hb_face_t to work on
The index of the named instance to query
Fetches the `name` table Name ID that provides display names for
the "Subfamily name" defined for the given named instance in the face.
the Name ID found for the Subfamily name
The #hb_face_t to work on
The index of the named instance to query
Normalizes the given design-space coordinates. The minimum and maximum
values for the axis are mapped to the interval [-1,1], with the default
axis value mapped to 0.
Any additional scaling defined in the face's `avar` table is also
applied, as described at https://docs.microsoft.com/en-us/typography/opentype/spec/avar
The #hb_face_t to work on
The length of the coordinate array
The design-space coordinates to normalize
The normalized coordinates
Normalizes all of the coordinates in the given list of variation axes.
The #hb_face_t to work on
The array of variations to normalize
The number of variations to normalize
The array of normalized coordinates
The length of the coordinate array
Converts an ISO 15924 script tag to a corresponding #hb_script_t.
An #hb_script_t corresponding to the ISO 15924 tag.
an #hb_tag_t representing an ISO 15924 tag.
Converts a string @str representing an ISO 15924 script tag to a
corresponding #hb_script_t. Shorthand for hb_tag_from_string() then
hb_script_from_iso15924_tag().
An #hb_script_t corresponding to the ISO 15924 tag.
a string representing an
ISO 15924 tag.
length of the @str, or -1 if it is %NULL-terminated.
Fetches the #hb_direction_t of a script when it is
set horizontally. All right-to-left scripts will return
#HB_DIRECTION_RTL. All left-to-right scripts will return
#HB_DIRECTION_LTR. Scripts that can be written either
horizontally or vertically will return #HB_DIRECTION_INVALID.
Unknown scripts will return #HB_DIRECTION_LTR.
The horizontal #hb_direction_t of @script
The #hb_script_t to query
Data type for scripts. Each #hb_script_t's value is an #hb_tag_t corresponding
to the four-letter values defined by [ISO 15924](https://unicode.org/iso15924/).
See also the Script (sc) property of the Unicode Character Database.
HB_TAG ('Z','y','y','y')
HB_TAG ('Z','i','n','h')
HB_TAG ('Z','z','z','z')
@HB_SCRIPT_ARABIC
@HB_SCRIPT_ARMENIAN
@HB_SCRIPT_BENGALI
@HB_SCRIPT_CYRILLIC
@HB_SCRIPT_DEVANAGARI
@HB_SCRIPT_GEORGIAN
@HB_SCRIPT_GREEK
@HB_SCRIPT_GUJARATI
@HB_SCRIPT_GURMUKHI
@HB_SCRIPT_HANGUL
@HB_SCRIPT_HAN
@HB_SCRIPT_HEBREW
@HB_SCRIPT_HIRAGANA
@HB_SCRIPT_KANNADA
@HB_SCRIPT_KATAKANA
@HB_SCRIPT_LAO
@HB_SCRIPT_LATIN
@HB_SCRIPT_MALAYALAM
@HB_SCRIPT_ORIYA
@HB_SCRIPT_TAMIL
@HB_SCRIPT_TELUGU
@HB_SCRIPT_THAI
@HB_SCRIPT_TIBETAN
@HB_SCRIPT_BOPOMOFO
@HB_SCRIPT_BRAILLE
@HB_SCRIPT_CANADIAN_SYLLABICS
@HB_SCRIPT_CHEROKEE
@HB_SCRIPT_ETHIOPIC
@HB_SCRIPT_KHMER
@HB_SCRIPT_MONGOLIAN
@HB_SCRIPT_MYANMAR
@HB_SCRIPT_OGHAM
@HB_SCRIPT_RUNIC
@HB_SCRIPT_SINHALA
@HB_SCRIPT_SYRIAC
@HB_SCRIPT_THAANA
@HB_SCRIPT_YI
@HB_SCRIPT_DESERET
@HB_SCRIPT_GOTHIC
@HB_SCRIPT_OLD_ITALIC
@HB_SCRIPT_BUHID
@HB_SCRIPT_HANUNOO
@HB_SCRIPT_TAGALOG
@HB_SCRIPT_TAGBANWA
@HB_SCRIPT_CYPRIOT
@HB_SCRIPT_LIMBU
@HB_SCRIPT_LINEAR_B
@HB_SCRIPT_OSMANYA
@HB_SCRIPT_SHAVIAN
@HB_SCRIPT_TAI_LE
@HB_SCRIPT_UGARITIC
@HB_SCRIPT_BUGINESE
@HB_SCRIPT_COPTIC
@HB_SCRIPT_GLAGOLITIC
@HB_SCRIPT_KHAROSHTHI
@HB_SCRIPT_NEW_TAI_LUE
@HB_SCRIPT_OLD_PERSIAN
@HB_SCRIPT_SYLOTI_NAGRI
@HB_SCRIPT_TIFINAGH
@HB_SCRIPT_BALINESE
@HB_SCRIPT_CUNEIFORM
@HB_SCRIPT_NKO
@HB_SCRIPT_PHAGS_PA
@HB_SCRIPT_PHOENICIAN
@HB_SCRIPT_CARIAN
@HB_SCRIPT_CHAM
@HB_SCRIPT_KAYAH_LI
@HB_SCRIPT_LEPCHA
@HB_SCRIPT_LYCIAN
@HB_SCRIPT_LYDIAN
@HB_SCRIPT_OL_CHIKI
@HB_SCRIPT_REJANG
@HB_SCRIPT_SAURASHTRA
@HB_SCRIPT_SUNDANESE
@HB_SCRIPT_VAI
@HB_SCRIPT_AVESTAN
@HB_SCRIPT_BAMUM
@HB_SCRIPT_EGYPTIAN_HIEROGLYPHS
@HB_SCRIPT_IMPERIAL_ARAMAIC
@HB_SCRIPT_INSCRIPTIONAL_PAHLAVI
@HB_SCRIPT_INSCRIPTIONAL_PARTHIAN
@HB_SCRIPT_JAVANESE
@HB_SCRIPT_KAITHI
@HB_SCRIPT_LISU
@HB_SCRIPT_MEETEI_MAYEK
@HB_SCRIPT_OLD_SOUTH_ARABIAN
@HB_SCRIPT_OLD_TURKIC
@HB_SCRIPT_SAMARITAN
@HB_SCRIPT_TAI_THAM
@HB_SCRIPT_TAI_VIET
@HB_SCRIPT_BATAK
@HB_SCRIPT_BRAHMI
@HB_SCRIPT_MANDAIC
@HB_SCRIPT_CHAKMA
@HB_SCRIPT_MEROITIC_CURSIVE
@HB_SCRIPT_MEROITIC_HIEROGLYPHS
@HB_SCRIPT_MIAO
@HB_SCRIPT_SHARADA
@HB_SCRIPT_SORA_SOMPENG
@HB_SCRIPT_TAKRI
@HB_SCRIPT_BASSA_VAH
@HB_SCRIPT_CAUCASIAN_ALBANIAN
@HB_SCRIPT_DUPLOYAN
@HB_SCRIPT_ELBASAN
@HB_SCRIPT_GRANTHA
@HB_SCRIPT_KHOJKI
@HB_SCRIPT_KHUDAWADI
@HB_SCRIPT_LINEAR_A
@HB_SCRIPT_MAHAJANI
@HB_SCRIPT_MANICHAEAN
@HB_SCRIPT_MENDE_KIKAKUI
@HB_SCRIPT_MODI
@HB_SCRIPT_MRO
@HB_SCRIPT_NABATAEAN
@HB_SCRIPT_OLD_NORTH_ARABIAN
@HB_SCRIPT_OLD_PERMIC
@HB_SCRIPT_PAHAWH_HMONG
@HB_SCRIPT_PALMYRENE
@HB_SCRIPT_PAU_CIN_HAU
@HB_SCRIPT_PSALTER_PAHLAVI
@HB_SCRIPT_SIDDHAM
@HB_SCRIPT_TIRHUTA
@HB_SCRIPT_WARANG_CITI
@HB_SCRIPT_AHOM
@HB_SCRIPT_ANATOLIAN_HIEROGLYPHS
@HB_SCRIPT_HATRAN
@HB_SCRIPT_MULTANI
@HB_SCRIPT_OLD_HUNGARIAN
@HB_SCRIPT_SIGNWRITING
@HB_SCRIPT_ADLAM
@HB_SCRIPT_BHAIKSUKI
@HB_SCRIPT_MARCHEN
@HB_SCRIPT_OSAGE
@HB_SCRIPT_TANGUT
@HB_SCRIPT_NEWA
@HB_SCRIPT_MASARAM_GONDI
@HB_SCRIPT_NUSHU
@HB_SCRIPT_SOYOMBO
@HB_SCRIPT_ZANABAZAR_SQUARE
@HB_SCRIPT_DOGRA
@HB_SCRIPT_GUNJALA_GONDI
@HB_SCRIPT_HANIFI_ROHINGYA
@HB_SCRIPT_MAKASAR
@HB_SCRIPT_MEDEFAIDRIN
@HB_SCRIPT_OLD_SOGDIAN
@HB_SCRIPT_SOGDIAN
@HB_SCRIPT_ELYMAIC
@HB_SCRIPT_NANDINAGARI
@HB_SCRIPT_NYIAKENG_PUACHUE_HMONG
@HB_SCRIPT_WANCHO
#HB_TAG_NONE
Converts an #hb_script_t to a corresponding ISOÂ 15924 script tag.
An #hb_tag_t representing an ISO 15924 script tag.
an #hb_script_t to convert.
Checks the equality of two #hb_segment_properties_t's.
%true if all properties of @a equal those of @b, %false otherwise.
first #hb_segment_properties_t to compare.
second #hb_segment_properties_t to compare.
Creates a hash representing @p.
A hash of @p.
#hb_segment_properties_t to hash.
The structure that holds various text properties of an #hb_buffer_t. Can be
set and retrieved using hb_buffer_set_segment_properties() and
hb_buffer_get_segment_properties(), respectively.
the #hb_direction_t of the buffer, see hb_buffer_set_direction().
the #hb_script_t of the buffer, see hb_buffer_set_script().
the #hb_language_t of the buffer, see hb_buffer_set_language().
Adds @codepoint to @set.
A set
The element to add to @set
Adds all of the elements from @first to @last
(inclusive) to @set.
A set
The first element to add to @set
The final element to add to @set
Tests whether memory allocation for a set was successful.
%true if allocation succeeded, false otherwise
A set
Clears out the contents of a set.
A set
Creates a new, initially empty set.
The new #hb_set_t
Removes @codepoint from @set.
A set
Removes @codepoint from @set
Removes all of the elements from @first to @last
(inclusive) from @set.
A set
The first element to remove from @set
The final element to remove from @set
Decreases the reference count on a set. When
the reference count reaches zero, the set is
destroyed, freeing all memory.
A set
Fetches the singleton empty #hb_set_t.
The empty #hb_set_t
Finds the largest element in the set.
maximum of @set, or %HB_SET_VALUE_INVALID if @set is empty.
A set
Finds the smallest element in the set.
minimum of @set, or %HB_SET_VALUE_INVALID if @set is empty.
A set
Returns the number of elements in the set.
The population of @set
A set
Fetches the user data associated with the specified key,
attached to the specified set.
A pointer to the user data
A set
The user-data key to query
Tests whether @codepoint belongs to @set.
%true if @codepoint is in @set, false otherwise
A set
The element to query
Makes @set the intersection of @set and @other.
A set
Another set
Inverts the contents of @set.
A set
Tests whether a set is empty (contains no elements).
%true if @set is empty
a set.
Tests whether @set and @other are equal (contain the same
elements).
%TRUE if the two sets are equal, %FALSE otherwise.
A set
Another set
Tests whether @set is a subset of @larger_set.
%TRUE if the @set is a subset of (or equal to) @larger_set, %FALSE otherwise.
A set
Another set
Fetches the next element in @set that is greater than current value of @codepoint.
Set @codepoint to %HB_SET_VALUE_INVALID to get started.
%true if there was a next value, false otherwise
A set
Input = Code point to query
Output = Code point retrieved
Fetches the next consecutive range of elements in @set that
are greater than current value of @last.
Set @last to %HB_SET_VALUE_INVALID to get started.
%true if there was a next range, false otherwise
A set
The first code point in the range
Input = The current last code point in the range
Output = The last code point in the range
Fetches the previous element in @set that is lower than current value of @codepoint.
Set @codepoint to %HB_SET_VALUE_INVALID to get started.
%true if there was a previous value, false otherwise
A set
Input = Code point to query
Output = Code point retrieved
Fetches the previous consecutive range of elements in @set that
are greater than current value of @last.
Set @first to %HB_SET_VALUE_INVALID to get started.
%true if there was a previous range, false otherwise
A set
Input = The current first code point in the range
Output = The first code point in the range
The last code point in the range
Increases the reference count on a set.
The set
A set
Makes the contents of @set equal to the contents of @other.
A set
Another set
Attaches a user-data key/data pair to the specified set.
%true if success, %false otherwise
A set
The user-data key to set
A pointer to the user data to set
A callback to call when @data is not needed anymore
Whether to replace an existing data with the same key
Subtracts the contents of @other from @set.
A set
Another set
Makes @set the symmetric difference of @set
and @other.
A set
Another set
Data type for holding a set of integers. #hb_set_t's are
used to gather and contain glyph IDs, Unicode code
points, and various other collections of discrete
values.
Makes @set the union of @set and @other.
A set
Another set
Shapes @buffer using @font turning its Unicode characters content to
positioned glyphs. If @features is not %NULL, it will be used to control the
features applied during shaping. If two @features have the same tag but
overlapping ranges the value of the feature with the higher index takes
precedence.
an #hb_font_t to use for shaping
an #hb_buffer_t to shape
an array of user
specified #hb_feature_t or %NULL
the length of @features array
See hb_shape() for details. If @shaper_list is not %NULL, the specified
shapers will be used in the given order, otherwise the default shapers list
will be used.
false if all shapers failed, true otherwise
an #hb_font_t to use for shaping
an #hb_buffer_t to shape
an array of user
specified #hb_feature_t or %NULL
the length of @features array
a %NULL-terminated
array of shapers to use or %NULL
Retrieves the list of shapers supported by HarfBuzz.
an array of
constant strings
Constructs a shaping plan for a combination of @face, @user_features, @props,
and @shaper_list.
The shaping plan
#hb_face_t to use
The #hb_segment_properties_t of the segment
The list of user-selected features
The number of user-selected features
List of shapers to try
The variable-font version of #hb_shape_plan_create.
Constructs a shaping plan for a combination of @face, @user_features, @props,
and @shaper_list, plus the variation-space coordinates @coords.
The shaping plan
#hb_face_t to use
The #hb_segment_properties_t of the segment
The list of user-selected features
The number of user-selected features
The list of variation-space coordinates
The number of variation-space coordinates
List of shapers to try
Creates a cached shaping plan suitable for reuse, for a combination
of @face, @user_features, @props, and @shaper_list.
The shaping plan
#hb_face_t to use
The #hb_segment_properties_t of the segment
The list of user-selected features
The number of user-selected features
List of shapers to try
The variable-font version of #hb_shape_plan_create_cached.
Creates a cached shaping plan suitable for reuse, for a combination
of @face, @user_features, @props, and @shaper_list, plus the
variation-space coordinates @coords.
The shaping plan
#hb_face_t to use
The #hb_segment_properties_t of the segment
The list of user-selected features
The number of user-selected features
The list of variation-space coordinates
The number of variation-space coordinates
List of shapers to try
Decreases the reference count on the given shaping plan. When the
reference count reaches zero, the shaping plan is destroyed,
freeing all memory.
A shaping plan
Executes the given shaping plan on the specified buffer, using
the given @font and @features.
A shaping plan
The #hb_font_t to use
The #hb_buffer_t to work upon
Features to enable
The number of features to enable
Fetches the singleton empty shaping plan.
The empty shaping plan
Fetches the shaper from a given shaping plan.
The shaper
A shaping plan
Fetches the user data associated with the specified key,
attached to the specified shaping plan.
A pointer to the user data
A shaping plan
The user-data key to query
Increases the reference count on the given shaping plan.
@shape_plan
A shaping plan
Attaches a user-data key/data pair to the given shaping plan.
A shaping plan
The user-data key to set
A pointer to the user data
A callback to call when @data is not needed anymore
Whether to replace an existing data with the same key
Data type for holding a shaping plan.
Shape plans contain information about how HarfBuzz will shape a
particular text segment, based on the segment's properties and the
capabilities in the font face in use.
Shape plans can be queried about how shaping will perform, given a set
of specific input parameters (script, language, direction, features,
etc.).
Converts a string into an #hb_tag_t. Valid tags
are four characters. Shorter input strings will be
padded with spaces. Longer input strings will be
truncated.
The #hb_tag_t corresponding to @str
String to convert
Length of @str, or -1 if it is %NULL-terminated
Converts an #hb_tag_t to a string and returns it in @buf.
Strings will be four characters long.
#hb_tag_t to convert
Converted string
Retrieves the Canonical Combining Class (ccc) property
of code point @unicode.
The #hb_unicode_combining_class_t of @unicode
The Unicode-functions structure
The code point to query
A virtual method for the #hb_unicode_funcs_t structure.
This method should retrieve the Canonical Combining Class (ccc)
property for a specified Unicode code point.
The #hb_unicode_combining_class_t of @unicode
A Unicode-functions structure
The code point to query
User data pointer passed by the caller
Data type for the Canonical_Combining_Class (ccc) property
from the Unicode Character Database.
<note>Note: newer versions of Unicode may add new values.
Client programs should be ready to handle any value in the 0..254 range
being returned from hb_unicode_combining_class().</note>
Spacing and enclosing marks; also many vowel and consonant signs, even if nonspacing
Marks which overlay a base letter or symbol
Diacritic nukta marks in Brahmi-derived scripts
Hiragana/Katakana voicing marks
Viramas
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Hebrew]
[Arabic]
[Arabic]
[Arabic]
[Arabic]
[Arabic]
[Arabic]
[Arabic]
[Arabic]
[Arabic]
[Syriac]
[Telugu]
[Telugu]
[Thai]
[Thai]
[Lao]
[Lao]
[Tibetan]
[Tibetan]
[Tibetan]
Marks attached at the bottom left
Marks attached directly below
Marks attached directly above
Marks attached at the top right
Distinct marks at the bottom left
Distinct marks directly below
Distinct marks at the bottom right
Distinct marks to the left
Distinct marks to the right
Distinct marks at the top left
Distinct marks directly above
Distinct marks at the top right
Distinct marks subtending two bases
Distinct marks extending above two bases
Greek iota subscript only
Invalid combining class
Composes the code point sequence @a,@b by canonical equivalence into
code point @ab.
True is @a,@b composed, false otherwise
The Unicode-functions structure
The first code point to compose
The second code point to compose
The composed code point
A virtual method for the #hb_unicode_funcs_t structure.
This method should compose a sequence of two input Unicode code
points by canonical equivalence, returning the composed code
point in a #hb_codepoint_t output parameter (if successful).
The method must return an #hb_bool_t indicating the success
of the composition.
True is @a,@b composed, false otherwise
A Unicode-functions structure
The first code point to compose
The second code point to compose
The composed code point
user data pointer passed by the caller
Decomposes code point @ab by canonical equivalence, into code points
@a and @b.
True if @ab decomposed, false otherwise
The Unicode-functions structure
The code point to decompose
The first decomposed code point
The second decomposed code point
Fetches the compatibility decomposition of a Unicode
code point. Deprecated.
The Unicode-functions structure
Code point to decompose
Compatibility decomposition of @u
Fully decompose @u to its Unicode compatibility decomposition. The codepoints of the decomposition will be written to @decomposed.
The complete length of the decomposition will be returned.
If @u has no compatibility decomposition, zero should be returned.
The Unicode standard guarantees that a buffer of length %HB_UNICODE_MAX_DECOMPOSITION_LEN codepoints will always be sufficient for any
compatibility decomposition plus an terminating value of 0. Consequently, @decompose must be allocated by the caller to be at least this length. Implementations
of this function type must ensure that they do not write past the provided array.
number of codepoints in the full compatibility decomposition of @u, or 0 if no decomposition available.
a Unicode function structure
codepoint to decompose
address of codepoint array (of length %HB_UNICODE_MAX_DECOMPOSITION_LEN) to write decomposition into
user data pointer as passed to hb_unicode_funcs_set_decompose_compatibility_func()
A virtual method for the #hb_unicode_funcs_t structure.
This method should decompose an input Unicode code point,
returning the two decomposed code points in #hb_codepoint_t
output parameters (if successful). The method must return an
#hb_bool_t indicating the success of the composition.
True if @ab decomposed, false otherwise
A Unicode-functions structure
The code point to decompose
The first decomposed code point
The second decomposed code point
user data pointer passed by the caller
Creates a new #hb_unicode_funcs_t structure of Unicode functions.
The Unicode-functions structure
Parent Unicode-functions structure
Decreases the reference count on a Unicode-functions structure. When
the reference count reaches zero, the Unicode-functions structure is
destroyed, freeing all memory.
The Unicode-functions structure
Fetches a pointer to the default Unicode-functions structure that is used
when no functions are explicitly set on #hb_buffer_t.
a pointer to the #hb_unicode_funcs_t Unicode-functions structure
Fetches the singleton empty Unicode-functions structure.
The empty Unicode-functions structure
Fetches the parent of the Unicode-functions structure
@ufuncs.
The parent Unicode-functions structure
The Unicode-functions structure
Fetches the user-data associated with the specified key,
attached to the specified Unicode-functions structure.
A pointer to the user data
The Unicode-functions structure
The user-data key to query
Tests whether the specified Unicode-functions structure
is immutable.
%true if @ufuncs is immutable, false otherwise
The Unicode-functions structure
Makes the specified Unicode-functions structure
immutable.
The Unicode-functions structure
Increases the reference count on a Unicode-functions structure.
The Unicode-functions structure
The Unicode-functions structure
Sets the implementation function for #hb_unicode_combining_class_func_t.
A Unicode-functions structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_unicode_compose_func_t.
A Unicode-functions structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
a Unicode function structure
Sets the implementation function for #hb_unicode_decompose_func_t.
A Unicode-functions structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
a Unicode function structure
Sets the implementation function for #hb_unicode_general_category_func_t.
A Unicode-functions structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_unicode_mirroring_func_t.
A Unicode-functions structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Sets the implementation function for #hb_unicode_script_func_t.
A Unicode-functions structure
The callback function to assign
Data to pass to @func
The function to call when @user_data is not needed anymore
Attaches a user-data key/data pair to the specified Unicode-functions structure.
%true if success, %false otherwise
The Unicode-functions structure
The user-data key
A pointer to the user data
A callback to call when @data is not needed anymore
Whether to replace an existing data with the same key
Data type containing a set of virtual methods used for
accessing various Unicode character properties.
HarfBuzz provides a default function for each of the
methods in #hb_unicode_funcs_t. Client programs can implement
their own replacements for the individual Unicode functions, as
needed, and replace the default by calling the setter for a
method.
Retrieves the General Category (gc) property
of code point @unicode.
The #hb_unicode_general_category_t of @unicode
The Unicode-functions structure
The code point to query
A virtual method for the #hb_unicode_funcs_t structure.
This method should retrieve the General Category property for
a specified Unicode code point.
The #hb_unicode_general_category_t of @unicode
A Unicode-functions structure
The code point to query
User data pointer passed by the caller
Data type for the "General_Category" (gc) property from
the Unicode Character Database.
[Cc]
[Cf]
[Cn]
[Co]
[Cs]
[Ll]
[Lm]
[Lo]
[Lt]
[Lu]
[Mc]
[Me]
[Mn]
[Nd]
[Nl]
[No]
[Pc]
[Pd]
[Pe]
[Pf]
[Pi]
[Po]
[Ps]
[Sc]
[Sk]
[Sm]
[So]
[Zl]
[Zp]
[Zs]
Retrieves the Bi-directional Mirroring Glyph code
point defined for code point @unicode.
The #hb_codepoint_t of the Mirroring Glyph for @unicode
The Unicode-functions structure
The code point to query
A virtual method for the #hb_unicode_funcs_t structure.
This method should retrieve the Bi-Directional Mirroring Glyph
code point for a specified Unicode code point.
<note>Note: If a code point does not have a specified
Bi-Directional Mirroring Glyph defined, the method should
return the original code point.</note>
The #hb_codepoint_t of the Mirroring Glyph for @unicode
A Unicode-functions structure
The code point to query
User data pointer passed by the caller
Retrieves the #hb_script_t script to which code
point @unicode belongs.
The #hb_script_t of @unicode
The Unicode-functions structure
The code point to query
A virtual method for the #hb_unicode_funcs_t structure.
This method should retrieve the Script property for a
specified Unicode code point.
The #hb_script_t of @unicode
A Unicode-functions structure
The code point to query
User data pointer passed by the caller
Data structure for holding user-data keys.
Data type for holding variation data. Registered OpenType
variation-axis tags are listed at
https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg
The #hb_tag_t tag of the variation-axis name
The value of the variation axis
Returns library version as three integer components.
Library major version component
Library minor version component
Library micro version component
Tests the library version against a minimum value,
as three integer components.
True if the library is equal to or greater than
the test value, false otherwise
Library major version component
Library minor version component
Library micro version component
Returns library version as a string with three components.
Library version string