Top |
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.
hb_bool_t
hb_ot_math_has_data (hb_face_t *face
);
Tests whether a face has a MATH
table.
Since: 1.3.3
hb_position_t hb_ot_math_get_constant (hb_font_t *font
,hb_ot_math_constant_t constant
);
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_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT, then the return value is an integer between 0 and 100 representing that percentage.
Since: 1.3.3
hb_position_t hb_ot_math_get_glyph_italics_correction (hb_font_t *font
,hb_codepoint_t glyph
);
Fetches an italics-correction value (if one exists) for the specified glyph index.
Since: 1.3.3
hb_position_t hb_ot_math_get_glyph_top_accent_attachment (hb_font_t *font
,hb_codepoint_t glyph
);
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.
Since: 1.3.3
hb_position_t hb_ot_math_get_glyph_kerning (hb_font_t *font
,hb_codepoint_t glyph
,hb_ot_math_kern_t kern
,hb_position_t correction_height
);
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.
font |
hb_font_t to work upon |
|
glyph |
The glyph index from which to retrieve the value |
|
kern |
The hb_ot_math_kern_t from which to retrieve the value |
|
correction_height |
the correction height to use to determine the kerning. |
Since: 1.3.3
unsigned int hb_ot_math_get_glyph_kernings (hb_font_t *font
,hb_codepoint_t glyph
,hb_ot_math_kern_t kern
,unsigned int start_offset
,unsigned int *entries_count
,hb_ot_math_kern_entry_t *kern_entries
);
Fetches the raw MathKern (cut-in) data for the specified font, glyph index,
and kern
. The corresponding list of kern values and correction heights is
returned as a list of hb_ot_math_kern_entry_t structs.
See also hb_ot_math_get_glyph_kerning, which handles selecting the appropriate kern value for a given correction height.
n
defined kern values (where n
> 0), there are only
n
−1 defined correction heights, as each correction height defines a boundary
past which the next kern value should be selected. Therefore, only the
hb_ot_math_kern_entry_t.kern_value of the uppermost hb_ot_math_kern_entry_t
actually comes from the font; its corresponding
hb_ot_math_kern_entry_t.max_correction_height is always set to
INT32_MAX
.font |
hb_font_t to work upon |
|
glyph |
The glyph index from which to retrieve the kernings |
|
kern |
The hb_ot_math_kern_t from which to retrieve the kernings |
|
start_offset |
offset of the first kern entry to retrieve |
|
entries_count |
Input = the maximum number of kern entries to return; Output = the actual number of kern entries returned. |
[inout][optional] |
kern_entries |
array of kern entries returned. |
[out caller-allocates][array length=entries_count] |
Since: 3.4.0
hb_bool_t hb_ot_math_is_glyph_extended_shape (hb_face_t *face
,hb_codepoint_t glyph
);
Tests whether the given glyph index is an extended shape in the face.
Since: 1.3.3
unsigned int hb_ot_math_get_glyph_variants (hb_font_t *font
,hb_codepoint_t glyph
,hb_direction_t direction
,unsigned int start_offset
,unsigned int *variants_count
,hb_ot_math_glyph_variant_t *variants
);
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.
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.font |
hb_font_t to work upon |
|
glyph |
The index of the glyph to stretch |
|
direction |
The direction of the stretching (horizontal or vertical) |
|
start_offset |
offset of the first variant to retrieve |
|
variants_count |
Input = the maximum number of variants to return; Output = the actual number of variants returned. |
[inout] |
variants |
array of variants returned. |
[out][array length=variants_count] |
Since: 1.3.3
hb_position_t hb_ot_math_get_min_connector_overlap (hb_font_t *font
,hb_direction_t direction
);
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.
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.font |
hb_font_t to work upon |
|
direction |
direction of the stretching (horizontal or vertical) |
Since: 1.3.3
unsigned int hb_ot_math_get_glyph_assembly (hb_font_t *font
,hb_codepoint_t glyph
,hb_direction_t direction
,unsigned int start_offset
,unsigned int *parts_count
,hb_ot_math_glyph_part_t *parts
,hb_position_t *italics_correction
);
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).
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.font |
hb_font_t to work upon |
|
glyph |
The index of the glyph to stretch |
|
direction |
direction of the stretching (horizontal or vertical) |
|
start_offset |
offset of the first glyph part to retrieve |
|
parts_count |
Input = maximum number of glyph parts to return; Output = actual number of parts returned. |
[inout] |
parts |
the glyph parts returned. |
[out][array length=parts_count] |
italics_correction |
italics correction of the glyph assembly. |
[out] |
Since: 1.3.3
#define HB_OT_TAG_MATH HB_TAG('M','A','T','H')
OpenType Mathematical Typesetting Table.
Since: 1.3.3
#define HB_OT_TAG_MATH_SCRIPT HB_TAG('m','a','t','h')
OpenType script tag, math
, for features specific to math shaping.
Since: 3.4.0
The 'MATH' table constants, refer to OpenType documentation For more explanations.
Since: 1.3.3
The math kerning-table types defined for the four corners of a glyph.
Since: 1.3.3
typedef struct { hb_position_t max_correction_height; hb_position_t kern_value; } hb_ot_math_kern_entry_t;
Data type to hold math kerning (cut-in) information for a glyph.
hb_position_t |
The maximum height at which this entry should be used |
|
hb_position_t |
The kern value of the entry |
Since: 3.4.0
typedef struct { hb_codepoint_t glyph; hb_position_t advance; } hb_ot_math_glyph_variant_t;
Data type to hold math-variant information for a glyph.
hb_codepoint_t |
The glyph index of the variant |
|
hb_position_t |
The advance width of the variant |
Since: 1.3.3
typedef struct { hb_codepoint_t glyph; hb_position_t start_connector_length; hb_position_t end_connector_length; hb_position_t full_advance; hb_ot_math_glyph_part_flags_t flags; } hb_ot_math_glyph_part_t;
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.
hb_codepoint_t |
The glyph index of the variant part |
|
hb_position_t |
The length of the connector on the starting side of the variant part |
|
hb_position_t |
The length of the connector on the ending side of the variant part |
|
hb_position_t |
The total advance of the part |
|
hb_ot_math_glyph_part_flags_t flags for the part |
Since: 1.3.3