Common data types used across HarfBuzz are defined here.
Functions 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 character literals.
Parametersc1
1st character of the tag
c2
2nd character of the tag
c3
3rd character of the tag
c4
4th character of the tag
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 four character literals from an hb_tag_t.
Since: 0.6.0
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.
Parametersstr
String to convert.
[array length=len][element-type uint8_t]len
Length of str
, or -1 if it is NULL
-terminated
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.
tag
hb_tag_t to convert
buf
Converted string.
[out caller-allocates][array fixed-size=4][element-type uint8_t]Since: 0.9.5
hb_direction_from_string ()hb_direction_t hb_direction_from_string (const char *str
,int len
);
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.
Parametersstr
String to convert.
[array length=len][element-type uint8_t]len
Length of str
, or -1 if it is NULL
-terminated
Since: 0.9.2
hb_direction_to_string ()const char *
hb_direction_to_string (hb_direction_t direction
);
Converts an hb_direction_t to a string.
ReturnsThe string corresponding to direction
.
[transfer none]
Since: 0.9.2
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.
hb_script_from_iso15924_tag ()hb_script_t
hb_script_from_iso15924_tag (hb_tag_t tag
);
Converts an ISO 15924 script tag to a corresponding hb_script_t.
Parameterstag
an hb_tag_t representing an ISO 15924 tag.
ReturnsAn hb_script_t corresponding to the ISO 15924 tag.
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.
ReturnsAn hb_tag_t representing an ISO 15924 script tag.
Since: 0.9.2
hb_script_from_string ()hb_script_t hb_script_from_string (const char *str
,int len
);
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()
.
str
a string representing an ISO 15924 tag.
[array length=len][element-type uint8_t]len
length of the str
, or -1 if it is NULL
-terminated.
An hb_script_t corresponding to the ISO 15924 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.
str
a string representing a BCP 47 language tag.
[array length=len][element-type uint8_t]len
length of the str
, or -1 if it is NULL
-terminated.
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.
ReturnsA 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.
ReturnsThe default language of the locale as an hb_language_t.
[transfer none]
Since: 0.9.2
hb_language_matches ()hb_bool_t hb_language_matches (hb_language_t language
,hb_language_t specific
);
Check whether a second language tag is the same or a more specific version of the provided language tag. For example, "fa_IR.utf8" is a more specific tag for "fa" or for "fa_IR".
Returnstrue
if languages match, false
otherwise.
Since: 5.0.0
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:
Syntax Value Start End Setting value: kern 1 0 ∞ Turn feature on +kern 1 0 ∞ Turn feature on -kern 0 0 ∞ Turn feature off kern=0 0 0 ∞ Turn feature off kern=1 1 0 ∞ Turn feature on aalt=2 2 0 ∞ Choose 2nd alternate Setting index: kern[] 1 0 ∞ Turn feature on kern[:] 1 0 ∞ Turn feature on kern[5:] 1 5 ∞ Turn feature on, partial kern[:5] 1 0 5 Turn feature on, partial kern[3:5] 1 3 5 Turn feature on, range kern[3] 1 3 3+1 Turn feature on, single char Mixing it all: aalt[3:5]=2 2 3 5 Turn 2nd alternate on for range Parametersstr
a string to parse.
[array length=len][element-type uint8_t]len
length of str
, or -1 if string is NULL
terminated
feature
the hb_feature_t to initialize with the parsed values.
[out] Returnstrue
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.
Note that the feature value will be omitted if it is '1', but the string won't include any whitespace.
Parametersfeature
an hb_feature_t to convert
buf
output string.
[array length=size][out]size
the allocated size of buf
Since: 0.9.5
hb_variation_from_string ()hb_bool_t hb_variation_from_string (const char *str
,int len
,hb_variation_t *variation
);
Parses a string into a hb_variation_t.
The format for specifying variation settings follows. All valid CSS font-variation-settings values other than 'normal' and 'inherited' are also accepted, though, not documented below.
The format is a tag, optionally followed by an equals sign, followed by a number. For example wght=500
, or slnt=-7.5
.
str
a string to parse.
[array length=len][element-type uint8_t]len
length of str
, or -1 if string is NULL
terminated
variation
the hb_variation_t to initialize with the parsed values.
[out] Returnstrue
if str
is successfully parsed, false
otherwise
Since: 1.4.2
hb_variation_to_string ()void hb_variation_to_string (hb_variation_t *variation
,char *buf
,unsigned int size
);
Converts an hb_variation_t into a NULL
-terminated string in the format understood by hb_variation_from_string()
. The client in responsible for allocating big enough size for buf
, 128 bytes is more than enough.
Note that the string won't include any whitespace.
Parametersvariation
an hb_variation_t to convert
buf
output string.
[array length=size][out caller-allocates]size
the allocated size of buf
Since: 1.4.2
hb_destroy_func_t ()void
(*hb_destroy_func_t) (void *user_data
);
A virtual method for destroy user-data callbacks.
Parametersuser_data
the data to be destroyed
Types and Values hb_bool_ttypedef int hb_bool_t;
Data type for booleans.
hb_codepoint_ttypedef uint32_t hb_codepoint_t;
Data type for holding Unicode codepoints. Also used to hold glyph IDs.
HB_CODEPOINT_INVALID#define HB_CODEPOINT_INVALID ((hb_codepoint_t) -1)
Unused hb_codepoint_t value.
Since: 8.0.0
enum hb_direction_tThe 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.
hb_language_ttypedef const struct hb_language_impl_t *hb_language_t;
Data type for languages. Each hb_language_t corresponds to a BCP 47 language tag.
hb_feature_ttypedef 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_tag_t tag
;
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).
hb_variation_ttypedef struct { hb_tag_t tag; float value; } hb_variation_t;
Data type for holding variation data. Registered OpenType variation-axis tags are listed in OpenType Axis Tag Registry.
Membershb_tag_t tag
;
The hb_tag_t tag of the variation-axis name
The value of the variation axis
Since: 1.4.2
hb_mask_ttypedef uint32_t hb_mask_t;
Data type for bitmasks.
hb_position_ttypedef 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_ttypedef uint32_t hb_tag_t;
Data type for tag identifiers. Tags are four byte integers, each byte representing a character.
Tags are used to identify tables, design-variation axes, scripts, languages, font features, and baselines with human-readable names.
enum hb_script_tData 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.
MembersZyyy
Zinh
Zzzz
Arab
Armn
Beng
Cyrl
Deva
Geor
Grek
Gujr
Guru
Hang
Hani
Hebr
Hira
Knda
Kana
Laoo
Latn
Mlym
Orya
Taml
Telu
Thai
Tibt
Bopo
Brai
Cans
Cher
Ethi
Khmr
Mong
Mymr
Ogam
Runr
Sinh
Syrc
Thaa
Yiii
Dsrt
Goth
Ital
Buhd
Hano
Tglg
Tagb
Cprt
Limb
Linb
Osma
Shaw
Tale
Ugar
Bugi
Copt
Glag
Khar
Talu
Xpeo
Sylo
Tfng
Bali
Xsux
Nkoo
Phag
Phnx
Cari
Cham
Kali
Lepc
Lyci
Lydi
Olck
Rjng
Saur
Sund
Vaii
Avst
Bamu
HB_SCRIPT_EGYPTIAN_HIEROGLYPHS
Egyp
Armi
HB_SCRIPT_INSCRIPTIONAL_PAHLAVI
Phli
HB_SCRIPT_INSCRIPTIONAL_PARTHIAN
Prti
Java
Kthi
Lisu
Mtei
Sarb
Orkh
Samr
Lana
Tavt
Batk
Brah
Mand
Cakm
Merc
HB_SCRIPT_MEROITIC_HIEROGLYPHS
Mero
Plrd
Shrd
Sora
Takr
Bass
, Since: 0.9.30
Aghb
, Since: 0.9.30
Dupl
, Since: 0.9.30
Elba
, Since: 0.9.30
Gran
, Since: 0.9.30
Khoj
, Since: 0.9.30
Sind
, Since: 0.9.30
Lina
, Since: 0.9.30
Mahj
, Since: 0.9.30
Mani
, Since: 0.9.30
Mend
, Since: 0.9.30
Modi
, Since: 0.9.30
Mroo
, Since: 0.9.30
Nbat
, Since: 0.9.30
Narb
, Since: 0.9.30
Perm
, Since: 0.9.30
Hmng
, Since: 0.9.30
Palm
, Since: 0.9.30
Pauc
, Since: 0.9.30
Phlp
, Since: 0.9.30
Sidd
, Since: 0.9.30
Tirh
, Since: 0.9.30
Wara
, Since: 0.9.30
Ahom
, Since: 0.9.30
HB_SCRIPT_ANATOLIAN_HIEROGLYPHS
Hluw
, Since: 0.9.30
Hatr
, Since: 0.9.30
Mult
, Since: 0.9.30
Hung
, Since: 0.9.30
Sgnw
, Since: 0.9.30
Adlm
, Since: 1.3.0
Bhks
, Since: 1.3.0
Marc
, Since: 1.3.0
Osge
, Since: 1.3.0
Tang
, Since: 1.3.0
Newa
, Since: 1.3.0
Gonm
, Since: 1.6.0
Nshu
, Since: 1.6.0
Soyo
, Since: 1.6.0
Zanb
, Since: 1.6.0
Dogr
, Since: 1.8.0
Gong
, Since: 1.8.0
Rohg
, Since: 1.8.0
Maka
, Since: 1.8.0
Medf
, Since: 1.8.0
Sogo
, Since: 1.8.0
Sogd
, Since: 1.8.0
Elym
, Since: 2.4.0
Nand
, Since: 2.4.0
HB_SCRIPT_NYIAKENG_PUACHUE_HMONG
Hmnp
, Since: 2.4.0
Wcho
, Since: 2.4.0
Chrs
, Since: 2.6.7
Diak
, Since: 2.6.7
Kits
, Since: 2.6.7
Yezi
, Since: 2.6.7
Cpmn
, Since: 3.0.0
Ougr
, Since: 3.0.0
Tnsa
, Since: 3.0.0
Toto
, Since: 3.0.0
Vith
, Since: 3.0.0
Zmth
, Since: 3.4.0
Kawi
, Since: 5.2.0
Nagm
, Since: 5.2.0
Gara
, Since: 10.0.0
Gukh
, Since: 10.0.0
Krai
, Since: 10.0.0
Onao
, Since: 10.0.0
Sunu
, Since: 10.0.0
Todr
, Since: 10.0.0
Tutg
, Since: 10.0.0
No script set
hb_user_data_key_ttypedef 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)
Unset hb_tag_t.
HB_TAG_MAX#define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff)
Maximum possible unsigned hb_tag_t.
Since: 0.9.26
HB_TAG_MAX_SIGNED#define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff)
Maximum possible signed hb_tag_t.
Since: 0.9.33
HB_LANGUAGE_INVALID#define HB_LANGUAGE_INVALID ((hb_language_t) 0)
An unset hb_language_t.
Since: 0.6.0
HB_FEATURE_GLOBAL_END#define HB_FEATURE_GLOBAL_END ((unsigned int) -1)
Special setting for hb_feature_t.end to apply the feature from to the end of the buffer.
Since: 2.0.0
HB_FEATURE_GLOBAL_START#define HB_FEATURE_GLOBAL_START 0
Special setting for hb_feature_t.start to apply the feature from the start of the buffer.
Since: 2.0.0
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4