Functions
hb_tag_from_string ()
hb_tag_t
hb_tag_from_string (const char *str
,
int len
);
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.
Returns
The hb_tag_t corresponding to str
Since: 0.9.2
hb_tag_to_string ()
void
hb_tag_to_string (hb_tag_t tag
,
char *buf
);
Converts an hb_tag_t to a string and returns it in buf
.
Strings will be four characters long.
Since: 0.9.5
hb_direction_to_string ()
const char *
hb_direction_to_string (hb_direction_t direction
);
Converts an hb_direction_t to a string.
Returns
The string corresponding to direction
.
[transfer none]
Since: 0.9.2
hb_script_to_iso15924_tag ()
hb_tag_t
hb_script_to_iso15924_tag (hb_script_t script
);
Converts an hb_script_t to a corresponding ISO 15924 script tag.
Returns
An hb_tag_t representing an ISO 15924 script tag.
Since: 0.9.2
hb_language_from_string ()
hb_language_t
hb_language_from_string (const char *str
,
int len
);
Converts str
representing a BCP 47 language tag to the corresponding
hb_language_t.
Returns
The hb_language_t corresponding to the BCP 47 language tag.
[transfer none]
Since: 0.9.2
hb_language_to_string ()
const char *
hb_language_to_string (hb_language_t language
);
Converts an hb_language_t to a string.
Returns
A NULL
-terminated string representing the language
. Must not be freed by
the caller.
[transfer none]
Since: 0.9.2
hb_language_get_default ()
hb_language_t
hb_language_get_default (void
);
Fetch the default language from current locale.
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.
Returns
The default language of the locale as
an hb_language_t.
[transfer none]
Since: 0.9.2
hb_feature_from_string ()
hb_bool_t
hb_feature_from_string (const char *str
,
int len
,
hb_feature_t *feature
);
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:
Returns
true
if str
is successfully parsed, false
otherwise
Since: 0.9.5
hb_feature_to_string ()
void
hb_feature_to_string (hb_feature_t *feature
,
char *buf
,
unsigned int size
);
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.
Since: 0.9.5
hb_variation_to_string ()
void
hb_variation_to_string (hb_variation_t *variation
,
char *buf
,
unsigned int size
);
Since: 1.4.2
hb_destroy_func_t ()
void
(*hb_destroy_func_t) (void *user_data
);
HB_TAG()
#define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint32_t)(c1)&0xFF)<<24)|(((uint32_t)(c2)&0xFF)<<16)|(((uint32_t)(c3)&0xFF)<<8)|((uint32_t)(c4)&0xFF)))
Constructs an hb_tag_t from four characters.
HB_UNTAG()
#define HB_UNTAG(tag) (uint8_t)(((tag)>>24)&0xFF), (uint8_t)(((tag)>>16)&0xFF), (uint8_t)(((tag)>>8)&0xFF), (uint8_t)((tag)&0xFF)
Extracts the characters from an hb_tag_t.
HB_DIRECTION_REVERSE()
#define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1))
Reverses a text direction. Requires that the direction
be valid.
HB_DIRECTION_IS_BACKWARD()
#define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5)
Tests whether a text direction moves backward (from right to left, or from
bottom to top). Requires that the direction be valid.
HB_DIRECTION_IS_FORWARD()
#define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4)
Tests whether a text direction moves forward (from left to right, or from
top to bottom). Requires that the direction be valid.
HB_DIRECTION_IS_HORIZONTAL()
#define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4)
Tests whether a text direction is horizontal. Requires
that the direction be valid.
HB_DIRECTION_IS_VALID()
#define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4)
Tests whether a text direction is valid.
HB_DIRECTION_IS_VERTICAL()
#define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6)
Tests whether a text direction is vertical. Requires
that the direction be valid.
Types and Values
hb_bool_t
typedef int hb_bool_t;
Data type for booleans.
hb_codepoint_t
typedef uint32_t hb_codepoint_t;
Data type for holding Unicode codepoints. Also
used to hold glyph IDs.
hb_language_t
typedef const struct hb_language_impl_t *hb_language_t;
hb_feature_t
typedef struct {
hb_tag_t tag;
uint32_t value;
unsigned int start;
unsigned int end;
} hb_feature_t;
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.
hb_variation_t
typedef struct {
hb_tag_t tag;
float value;
} hb_variation_t;
Data type for holding variation data. Registered OpenType
variation-axis tags are listed at
https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg
Since: 1.4.2
hb_mask_t
typedef uint32_t hb_mask_t;
Data type for bitmasks.
hb_position_t
typedef int32_t hb_position_t;
Data type for holding a single coordinate value.
Contour points and other multi-dimensional data are
stored as tuples of hb_position_t's.
hb_tag_t
typedef uint32_t hb_tag_t;
enum hb_script_t
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.
See also the Script (sc) property of the Unicode Character Database.
hb_user_data_key_t
typedef struct {
} hb_user_data_key_t;
Data structure for holding user-data keys.
HB_TAG_NONE
#define HB_TAG_NONE HB_TAG(0,0,0,0)
HB_TAG_MAX
#define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff)
HB_TAG_MAX_SIGNED
#define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff)
HB_LANGUAGE_INVALID
#define HB_LANGUAGE_INVALID ((hb_language_t) 0)
HB_FEATURE_GLOBAL_END
#define HB_FEATURE_GLOBAL_END ((unsigned int) -1)
Since: 2.0.0
HB_FEATURE_GLOBAL_START
#define HB_FEATURE_GLOBAL_START 0
Since: 2.0.0