/src/harfbuzz/src/hb-ot-math.h
Line  | Count  | Source (jump to first uncovered line)  | 
1  |  | /*  | 
2  |  |  * Copyright © 2016  Igalia S.L.  | 
3  |  |  *  | 
4  |  |  *  This is part of HarfBuzz, a text shaping library.  | 
5  |  |  *  | 
6  |  |  * Permission is hereby granted, without written agreement and without  | 
7  |  |  * license or royalty fees, to use, copy, modify, and distribute this  | 
8  |  |  * software and its documentation for any purpose, provided that the  | 
9  |  |  * above copyright notice and the following two paragraphs appear in  | 
10  |  |  * all copies of this software.  | 
11  |  |  *  | 
12  |  |  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR  | 
13  |  |  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES  | 
14  |  |  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN  | 
15  |  |  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH  | 
16  |  |  * DAMAGE.  | 
17  |  |  *  | 
18  |  |  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,  | 
19  |  |  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND  | 
20  |  |  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS  | 
21  |  |  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO  | 
22  |  |  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.  | 
23  |  |  *  | 
24  |  |  * Igalia Author(s): Frédéric Wang  | 
25  |  |  */  | 
26  |  |  | 
27  |  | #if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)  | 
28  |  | #error "Include <hb-ot.h> instead."  | 
29  |  | #endif  | 
30  |  |  | 
31  |  | #ifndef HB_OT_MATH_H  | 
32  |  | #define HB_OT_MATH_H  | 
33  |  |  | 
34  |  | #include "hb.h"  | 
35  |  |  | 
36  |  | HB_BEGIN_DECLS  | 
37  |  |  | 
38  |  |  | 
39  |  | /*  | 
40  |  |  * MATH  | 
41  |  |  */  | 
42  |  |  | 
43  |  | /**  | 
44  |  |  * HB_OT_TAG_MATH:  | 
45  |  |  *  | 
46  |  |  * OpenType [Mathematical Typesetting Table](https://docs.microsoft.com/en-us/typography/opentype/spec/math).  | 
47  |  |  *  | 
48  |  |  * Since: 1.3.3  | 
49  |  |  */  | 
50  |  | #define HB_OT_TAG_MATH HB_TAG('M','A','T','H') | 
51  |  |  | 
52  |  | /**  | 
53  |  |  * HB_OT_TAG_MATH_SCRIPT:  | 
54  |  |  *  | 
55  |  |  * OpenType script tag, `math`, for features specific to math shaping.  | 
56  |  |  *  | 
57  |  |  * <note>#HB_OT_TAG_MATH_SCRIPT is not a valid #hb_script_t and should only be  | 
58  |  |  * used with functions that accept raw OpenType script tags, such as  | 
59  |  |  * #hb_ot_layout_collect_features. In other cases, #HB_SCRIPT_MATH should be  | 
60  |  |  * used instead.</note>  | 
61  |  |  *  | 
62  |  |  * Since: 3.4.0  | 
63  |  |  */  | 
64  | 0  | #define HB_OT_TAG_MATH_SCRIPT HB_TAG('m','a','t','h') | 
65  |  |  | 
66  |  | /* Types */  | 
67  |  |  | 
68  |  | /**  | 
69  |  |  * hb_ot_math_constant_t:  | 
70  |  |  * @HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN: scriptPercentScaleDown  | 
71  |  |  * @HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN: scriptScriptPercentScaleDown  | 
72  |  |  * @HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT: delimitedSubFormulaMinHeight  | 
73  |  |  * @HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT: displayOperatorMinHeight  | 
74  |  |  * @HB_OT_MATH_CONSTANT_MATH_LEADING: mathLeading  | 
75  |  |  * @HB_OT_MATH_CONSTANT_AXIS_HEIGHT: axisHeight  | 
76  |  |  * @HB_OT_MATH_CONSTANT_ACCENT_BASE_HEIGHT: accentBaseHeight  | 
77  |  |  * @HB_OT_MATH_CONSTANT_FLATTENED_ACCENT_BASE_HEIGHT: flattenedAccentBaseHeight  | 
78  |  |  * @HB_OT_MATH_CONSTANT_SUBSCRIPT_SHIFT_DOWN: subscriptShiftDown  | 
79  |  |  * @HB_OT_MATH_CONSTANT_SUBSCRIPT_TOP_MAX: subscriptTopMax  | 
80  |  |  * @HB_OT_MATH_CONSTANT_SUBSCRIPT_BASELINE_DROP_MIN: subscriptBaselineDropMin  | 
81  |  |  * @HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP: superscriptShiftUp  | 
82  |  |  * @HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP_CRAMPED: superscriptShiftUpCramped  | 
83  |  |  * @HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MIN: superscriptBottomMin  | 
84  |  |  * @HB_OT_MATH_CONSTANT_SUPERSCRIPT_BASELINE_DROP_MAX: superscriptBaselineDropMax  | 
85  |  |  * @HB_OT_MATH_CONSTANT_SUB_SUPERSCRIPT_GAP_MIN: subSuperscriptGapMin  | 
86  |  |  * @HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT: superscriptBottomMaxWithSubscript  | 
87  |  |  * @HB_OT_MATH_CONSTANT_SPACE_AFTER_SCRIPT: spaceAfterScript  | 
88  |  |  * @HB_OT_MATH_CONSTANT_UPPER_LIMIT_GAP_MIN: upperLimitGapMin  | 
89  |  |  * @HB_OT_MATH_CONSTANT_UPPER_LIMIT_BASELINE_RISE_MIN: upperLimitBaselineRiseMin  | 
90  |  |  * @HB_OT_MATH_CONSTANT_LOWER_LIMIT_GAP_MIN: lowerLimitGapMin  | 
91  |  |  * @HB_OT_MATH_CONSTANT_LOWER_LIMIT_BASELINE_DROP_MIN: lowerLimitBaselineDropMin  | 
92  |  |  * @HB_OT_MATH_CONSTANT_STACK_TOP_SHIFT_UP: stackTopShiftUp  | 
93  |  |  * @HB_OT_MATH_CONSTANT_STACK_TOP_DISPLAY_STYLE_SHIFT_UP: stackTopDisplayStyleShiftUp  | 
94  |  |  * @HB_OT_MATH_CONSTANT_STACK_BOTTOM_SHIFT_DOWN: stackBottomShiftDown  | 
95  |  |  * @HB_OT_MATH_CONSTANT_STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN: stackBottomDisplayStyleShiftDown  | 
96  |  |  * @HB_OT_MATH_CONSTANT_STACK_GAP_MIN: stackGapMin  | 
97  |  |  * @HB_OT_MATH_CONSTANT_STACK_DISPLAY_STYLE_GAP_MIN: stackDisplayStyleGapMin  | 
98  |  |  * @HB_OT_MATH_CONSTANT_STRETCH_STACK_TOP_SHIFT_UP: stretchStackTopShiftUp  | 
99  |  |  * @HB_OT_MATH_CONSTANT_STRETCH_STACK_BOTTOM_SHIFT_DOWN: stretchStackBottomShiftDown  | 
100  |  |  * @HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_ABOVE_MIN: stretchStackGapAboveMin  | 
101  |  |  * @HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_BELOW_MIN: stretchStackGapBelowMin  | 
102  |  |  * @HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_SHIFT_UP: fractionNumeratorShiftUp  | 
103  |  |  * @HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP: fractionNumeratorDisplayStyleShiftUp  | 
104  |  |  * @HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_SHIFT_DOWN: fractionDenominatorShiftDown  | 
105  |  |  * @HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN: fractionDenominatorDisplayStyleShiftDown  | 
106  |  |  * @HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_GAP_MIN: fractionNumeratorGapMin  | 
107  |  |  * @HB_OT_MATH_CONSTANT_FRACTION_NUM_DISPLAY_STYLE_GAP_MIN: fractionNumDisplayStyleGapMin  | 
108  |  |  * @HB_OT_MATH_CONSTANT_FRACTION_RULE_THICKNESS: fractionRuleThickness  | 
109  |  |  * @HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_GAP_MIN: fractionDenominatorGapMin  | 
110  |  |  * @HB_OT_MATH_CONSTANT_FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN: fractionDenomDisplayStyleGapMin  | 
111  |  |  * @HB_OT_MATH_CONSTANT_SKEWED_FRACTION_HORIZONTAL_GAP: skewedFractionHorizontalGap  | 
112  |  |  * @HB_OT_MATH_CONSTANT_SKEWED_FRACTION_VERTICAL_GAP: skewedFractionVerticalGap  | 
113  |  |  * @HB_OT_MATH_CONSTANT_OVERBAR_VERTICAL_GAP: overbarVerticalGap  | 
114  |  |  * @HB_OT_MATH_CONSTANT_OVERBAR_RULE_THICKNESS: overbarRuleThickness  | 
115  |  |  * @HB_OT_MATH_CONSTANT_OVERBAR_EXTRA_ASCENDER: overbarExtraAscender  | 
116  |  |  * @HB_OT_MATH_CONSTANT_UNDERBAR_VERTICAL_GAP: underbarVerticalGap  | 
117  |  |  * @HB_OT_MATH_CONSTANT_UNDERBAR_RULE_THICKNESS: underbarRuleThickness  | 
118  |  |  * @HB_OT_MATH_CONSTANT_UNDERBAR_EXTRA_DESCENDER: underbarExtraDescender  | 
119  |  |  * @HB_OT_MATH_CONSTANT_RADICAL_VERTICAL_GAP: radicalVerticalGap  | 
120  |  |  * @HB_OT_MATH_CONSTANT_RADICAL_DISPLAY_STYLE_VERTICAL_GAP: radicalDisplayStyleVerticalGap  | 
121  |  |  * @HB_OT_MATH_CONSTANT_RADICAL_RULE_THICKNESS: radicalRuleThickness  | 
122  |  |  * @HB_OT_MATH_CONSTANT_RADICAL_EXTRA_ASCENDER: radicalExtraAscender  | 
123  |  |  * @HB_OT_MATH_CONSTANT_RADICAL_KERN_BEFORE_DEGREE: radicalKernBeforeDegree  | 
124  |  |  * @HB_OT_MATH_CONSTANT_RADICAL_KERN_AFTER_DEGREE: radicalKernAfterDegree  | 
125  |  |  * @HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT: radicalDegreeBottomRaisePercent  | 
126  |  |  *  | 
127  |  |  * The 'MATH' table constants, refer to  | 
128  |  |  * [OpenType documentation](https://docs.microsoft.com/en-us/typography/opentype/spec/math#mathconstants-table)  | 
129  |  |  * For more explanations.  | 
130  |  |  *  | 
131  |  |  * Since: 1.3.3  | 
132  |  |  */  | 
133  |  | typedef enum { | 
134  |  |   HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN = 0,  | 
135  |  |   HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN = 1,  | 
136  |  |   HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT = 2,  | 
137  |  |   HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT = 3,  | 
138  |  |   HB_OT_MATH_CONSTANT_MATH_LEADING = 4,  | 
139  |  |   HB_OT_MATH_CONSTANT_AXIS_HEIGHT = 5,  | 
140  |  |   HB_OT_MATH_CONSTANT_ACCENT_BASE_HEIGHT = 6,  | 
141  |  |   HB_OT_MATH_CONSTANT_FLATTENED_ACCENT_BASE_HEIGHT = 7,  | 
142  |  |   HB_OT_MATH_CONSTANT_SUBSCRIPT_SHIFT_DOWN = 8,  | 
143  |  |   HB_OT_MATH_CONSTANT_SUBSCRIPT_TOP_MAX = 9,  | 
144  |  |   HB_OT_MATH_CONSTANT_SUBSCRIPT_BASELINE_DROP_MIN = 10,  | 
145  |  |   HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP = 11,  | 
146  |  |   HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP_CRAMPED = 12,  | 
147  |  |   HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MIN = 13,  | 
148  |  |   HB_OT_MATH_CONSTANT_SUPERSCRIPT_BASELINE_DROP_MAX = 14,  | 
149  |  |   HB_OT_MATH_CONSTANT_SUB_SUPERSCRIPT_GAP_MIN = 15,  | 
150  |  |   HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT = 16,  | 
151  |  |   HB_OT_MATH_CONSTANT_SPACE_AFTER_SCRIPT = 17,  | 
152  |  |   HB_OT_MATH_CONSTANT_UPPER_LIMIT_GAP_MIN = 18,  | 
153  |  |   HB_OT_MATH_CONSTANT_UPPER_LIMIT_BASELINE_RISE_MIN = 19,  | 
154  |  |   HB_OT_MATH_CONSTANT_LOWER_LIMIT_GAP_MIN = 20,  | 
155  |  |   HB_OT_MATH_CONSTANT_LOWER_LIMIT_BASELINE_DROP_MIN = 21,  | 
156  |  |   HB_OT_MATH_CONSTANT_STACK_TOP_SHIFT_UP = 22,  | 
157  |  |   HB_OT_MATH_CONSTANT_STACK_TOP_DISPLAY_STYLE_SHIFT_UP = 23,  | 
158  |  |   HB_OT_MATH_CONSTANT_STACK_BOTTOM_SHIFT_DOWN = 24,  | 
159  |  |   HB_OT_MATH_CONSTANT_STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN = 25,  | 
160  |  |   HB_OT_MATH_CONSTANT_STACK_GAP_MIN = 26,  | 
161  |  |   HB_OT_MATH_CONSTANT_STACK_DISPLAY_STYLE_GAP_MIN = 27,  | 
162  |  |   HB_OT_MATH_CONSTANT_STRETCH_STACK_TOP_SHIFT_UP = 28,  | 
163  |  |   HB_OT_MATH_CONSTANT_STRETCH_STACK_BOTTOM_SHIFT_DOWN = 29,  | 
164  |  |   HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_ABOVE_MIN = 30,  | 
165  |  |   HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_BELOW_MIN = 31,  | 
166  |  |   HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_SHIFT_UP = 32,  | 
167  |  |   HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP = 33,  | 
168  |  |   HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_SHIFT_DOWN = 34,  | 
169  |  |   HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN = 35,  | 
170  |  |   HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_GAP_MIN = 36,  | 
171  |  |   HB_OT_MATH_CONSTANT_FRACTION_NUM_DISPLAY_STYLE_GAP_MIN = 37,  | 
172  |  |   HB_OT_MATH_CONSTANT_FRACTION_RULE_THICKNESS = 38,  | 
173  |  |   HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_GAP_MIN = 39,  | 
174  |  |   HB_OT_MATH_CONSTANT_FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN = 40,  | 
175  |  |   HB_OT_MATH_CONSTANT_SKEWED_FRACTION_HORIZONTAL_GAP = 41,  | 
176  |  |   HB_OT_MATH_CONSTANT_SKEWED_FRACTION_VERTICAL_GAP = 42,  | 
177  |  |   HB_OT_MATH_CONSTANT_OVERBAR_VERTICAL_GAP = 43,  | 
178  |  |   HB_OT_MATH_CONSTANT_OVERBAR_RULE_THICKNESS = 44,  | 
179  |  |   HB_OT_MATH_CONSTANT_OVERBAR_EXTRA_ASCENDER = 45,  | 
180  |  |   HB_OT_MATH_CONSTANT_UNDERBAR_VERTICAL_GAP = 46,  | 
181  |  |   HB_OT_MATH_CONSTANT_UNDERBAR_RULE_THICKNESS = 47,  | 
182  |  |   HB_OT_MATH_CONSTANT_UNDERBAR_EXTRA_DESCENDER = 48,  | 
183  |  |   HB_OT_MATH_CONSTANT_RADICAL_VERTICAL_GAP = 49,  | 
184  |  |   HB_OT_MATH_CONSTANT_RADICAL_DISPLAY_STYLE_VERTICAL_GAP = 50,  | 
185  |  |   HB_OT_MATH_CONSTANT_RADICAL_RULE_THICKNESS = 51,  | 
186  |  |   HB_OT_MATH_CONSTANT_RADICAL_EXTRA_ASCENDER = 52,  | 
187  |  |   HB_OT_MATH_CONSTANT_RADICAL_KERN_BEFORE_DEGREE = 53,  | 
188  |  |   HB_OT_MATH_CONSTANT_RADICAL_KERN_AFTER_DEGREE = 54,  | 
189  |  |   HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT = 55  | 
190  |  | } hb_ot_math_constant_t;  | 
191  |  |  | 
192  |  | /**  | 
193  |  |  * hb_ot_math_kern_t:  | 
194  |  |  * @HB_OT_MATH_KERN_TOP_RIGHT: The top right corner of the glyph.  | 
195  |  |  * @HB_OT_MATH_KERN_TOP_LEFT: The top left corner of the glyph.  | 
196  |  |  * @HB_OT_MATH_KERN_BOTTOM_RIGHT: The bottom right corner of the glyph.  | 
197  |  |  * @HB_OT_MATH_KERN_BOTTOM_LEFT: The bottom left corner of the glyph.  | 
198  |  |  *  | 
199  |  |  * The math kerning-table types defined for the four corners  | 
200  |  |  * of a glyph.  | 
201  |  |  *  | 
202  |  |  * Since: 1.3.3  | 
203  |  |  */  | 
204  |  | typedef enum { | 
205  |  |   HB_OT_MATH_KERN_TOP_RIGHT = 0,  | 
206  |  |   HB_OT_MATH_KERN_TOP_LEFT = 1,  | 
207  |  |   HB_OT_MATH_KERN_BOTTOM_RIGHT = 2,  | 
208  |  |   HB_OT_MATH_KERN_BOTTOM_LEFT = 3  | 
209  |  | } hb_ot_math_kern_t;  | 
210  |  |  | 
211  |  | /**  | 
212  |  |  * hb_ot_math_kern_entry_t:  | 
213  |  |  * @max_correction_height: The maximum height at which this entry should be used  | 
214  |  |  * @kern_value: The kern value of the entry  | 
215  |  |  *  | 
216  |  |  * Data type to hold math kerning (cut-in) information for a glyph.  | 
217  |  |  *  | 
218  |  |  * Since: 3.4.0  | 
219  |  |  */  | 
220  |  | typedef struct { | 
221  |  |   hb_position_t max_correction_height;  | 
222  |  |   hb_position_t kern_value;  | 
223  |  | } hb_ot_math_kern_entry_t;  | 
224  |  |  | 
225  |  | /**  | 
226  |  |  * hb_ot_math_glyph_variant_t:  | 
227  |  |  * @glyph: The glyph index of the variant  | 
228  |  |  * @advance: The advance width of the variant  | 
229  |  |  *  | 
230  |  |  * Data type to hold math-variant information for a glyph.  | 
231  |  |  *  | 
232  |  |  * Since: 1.3.3  | 
233  |  |  */  | 
234  |  | typedef struct hb_ot_math_glyph_variant_t { | 
235  |  |   hb_codepoint_t glyph;  | 
236  |  |   hb_position_t advance;  | 
237  |  | } hb_ot_math_glyph_variant_t;  | 
238  |  |  | 
239  |  | /**  | 
240  |  |  * hb_ot_math_glyph_part_flags_t:  | 
241  |  |  * @HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER: This is an extender glyph part that  | 
242  |  |  * can be repeated to reach the desired length.  | 
243  |  |  *  | 
244  |  |  * Flags for math glyph parts.  | 
245  |  |  *  | 
246  |  |  * Since: 1.3.3  | 
247  |  |  */  | 
248  |  | typedef enum { /*< flags >*/ | 
249  |  |   HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER = 0x00000001u  /* Extender glyph */  | 
250  |  | } hb_ot_math_glyph_part_flags_t;  | 
251  |  |  | 
252  |  | /**  | 
253  |  |  * hb_ot_math_glyph_part_t:  | 
254  |  |  * @glyph: The glyph index of the variant part  | 
255  |  |  * @start_connector_length: The length of the connector on the starting side of the variant part  | 
256  |  |  * @end_connector_length: The length of the connector on the ending side of the variant part  | 
257  |  |  * @full_advance: The total advance of the part  | 
258  |  |  * @flags: #hb_ot_math_glyph_part_flags_t flags for the part  | 
259  |  |  *   | 
260  |  |  * Data type to hold information for a "part" component of a math-variant glyph.  | 
261  |  |  * Large variants for stretchable math glyphs (such as parentheses) can be constructed  | 
262  |  |  * on the fly from parts.  | 
263  |  |  *  | 
264  |  |  * Since: 1.3.3  | 
265  |  |  */  | 
266  |  | typedef struct hb_ot_math_glyph_part_t { | 
267  |  |   hb_codepoint_t glyph;  | 
268  |  |   hb_position_t start_connector_length;  | 
269  |  |   hb_position_t end_connector_length;  | 
270  |  |   hb_position_t full_advance;  | 
271  |  |   hb_ot_math_glyph_part_flags_t flags;  | 
272  |  | } hb_ot_math_glyph_part_t;  | 
273  |  |  | 
274  |  | /* Methods */  | 
275  |  |  | 
276  |  | HB_EXTERN hb_bool_t  | 
277  |  | hb_ot_math_has_data (hb_face_t *face);  | 
278  |  |  | 
279  |  | HB_EXTERN hb_position_t  | 
280  |  | hb_ot_math_get_constant (hb_font_t *font,  | 
281  |  |        hb_ot_math_constant_t constant);  | 
282  |  |  | 
283  |  | HB_EXTERN hb_position_t  | 
284  |  | hb_ot_math_get_glyph_italics_correction (hb_font_t *font,  | 
285  |  |            hb_codepoint_t glyph);  | 
286  |  |  | 
287  |  | HB_EXTERN hb_position_t  | 
288  |  | hb_ot_math_get_glyph_top_accent_attachment (hb_font_t *font,  | 
289  |  |               hb_codepoint_t glyph);  | 
290  |  |  | 
291  |  | HB_EXTERN hb_bool_t  | 
292  |  | hb_ot_math_is_glyph_extended_shape (hb_face_t *face,  | 
293  |  |             hb_codepoint_t glyph);  | 
294  |  |  | 
295  |  | HB_EXTERN hb_position_t  | 
296  |  | hb_ot_math_get_glyph_kerning (hb_font_t *font,  | 
297  |  |             hb_codepoint_t glyph,  | 
298  |  |             hb_ot_math_kern_t kern,  | 
299  |  |             hb_position_t correction_height);  | 
300  |  |  | 
301  |  | HB_EXTERN unsigned int  | 
302  |  | hb_ot_math_get_glyph_kernings (hb_font_t *font,  | 
303  |  |              hb_codepoint_t glyph,  | 
304  |  |              hb_ot_math_kern_t kern,  | 
305  |  |              unsigned int start_offset,  | 
306  |  |              unsigned int *entries_count, /* IN/OUT */  | 
307  |  |              hb_ot_math_kern_entry_t *kern_entries /* OUT */);  | 
308  |  |  | 
309  |  | HB_EXTERN unsigned int  | 
310  |  | hb_ot_math_get_glyph_variants (hb_font_t *font,  | 
311  |  |              hb_codepoint_t glyph,  | 
312  |  |              hb_direction_t direction,  | 
313  |  |              unsigned int start_offset,  | 
314  |  |              unsigned int *variants_count, /* IN/OUT */  | 
315  |  |              hb_ot_math_glyph_variant_t *variants /* OUT */);  | 
316  |  |  | 
317  |  | HB_EXTERN hb_position_t  | 
318  |  | hb_ot_math_get_min_connector_overlap (hb_font_t *font,  | 
319  |  |               hb_direction_t direction);  | 
320  |  |  | 
321  |  | HB_EXTERN unsigned int  | 
322  |  | hb_ot_math_get_glyph_assembly (hb_font_t *font,  | 
323  |  |              hb_codepoint_t glyph,  | 
324  |  |              hb_direction_t direction,  | 
325  |  |              unsigned int start_offset,  | 
326  |  |              unsigned int *parts_count, /* IN/OUT */  | 
327  |  |              hb_ot_math_glyph_part_t *parts, /* OUT */  | 
328  |  |              hb_position_t *italics_correction /* OUT */);  | 
329  |  |  | 
330  |  |  | 
331  |  | HB_END_DECLS  | 
332  |  |  | 
333  |  | #endif /* HB_OT_MATH_H */  |