jpayne@69
|
1 /*
|
jpayne@69
|
2 * Copyright © 2018 Ebrahim Byagowi
|
jpayne@69
|
3 *
|
jpayne@69
|
4 * This is part of HarfBuzz, a text shaping library.
|
jpayne@69
|
5 *
|
jpayne@69
|
6 * Permission is hereby granted, without written agreement and without
|
jpayne@69
|
7 * license or royalty fees, to use, copy, modify, and distribute this
|
jpayne@69
|
8 * software and its documentation for any purpose, provided that the
|
jpayne@69
|
9 * above copyright notice and the following two paragraphs appear in
|
jpayne@69
|
10 * all copies of this software.
|
jpayne@69
|
11 *
|
jpayne@69
|
12 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
|
jpayne@69
|
13 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
|
jpayne@69
|
14 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
|
jpayne@69
|
15 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
jpayne@69
|
16 * DAMAGE.
|
jpayne@69
|
17 *
|
jpayne@69
|
18 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
|
jpayne@69
|
19 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
jpayne@69
|
20 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
|
jpayne@69
|
21 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
|
jpayne@69
|
22 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
jpayne@69
|
23 */
|
jpayne@69
|
24
|
jpayne@69
|
25 #ifndef HB_OT_H_IN
|
jpayne@69
|
26 #error "Include <hb-ot.h> instead."
|
jpayne@69
|
27 #endif
|
jpayne@69
|
28
|
jpayne@69
|
29 #ifndef HB_OT_METRICS_H
|
jpayne@69
|
30 #define HB_OT_METRICS_H
|
jpayne@69
|
31
|
jpayne@69
|
32 #include "hb.h"
|
jpayne@69
|
33 #include "hb-ot-name.h"
|
jpayne@69
|
34
|
jpayne@69
|
35 HB_BEGIN_DECLS
|
jpayne@69
|
36
|
jpayne@69
|
37
|
jpayne@69
|
38 /**
|
jpayne@69
|
39 * hb_ot_metrics_tag_t:
|
jpayne@69
|
40 * @HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER: horizontal ascender.
|
jpayne@69
|
41 * @HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER: horizontal descender.
|
jpayne@69
|
42 * @HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP: horizontal line gap.
|
jpayne@69
|
43 * @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT: horizontal clipping ascent.
|
jpayne@69
|
44 * @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT: horizontal clipping descent.
|
jpayne@69
|
45 * @HB_OT_METRICS_TAG_VERTICAL_ASCENDER: vertical ascender.
|
jpayne@69
|
46 * @HB_OT_METRICS_TAG_VERTICAL_DESCENDER: vertical descender.
|
jpayne@69
|
47 * @HB_OT_METRICS_TAG_VERTICAL_LINE_GAP: vertical line gap.
|
jpayne@69
|
48 * @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE: horizontal caret rise.
|
jpayne@69
|
49 * @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN: horizontal caret run.
|
jpayne@69
|
50 * @HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET: horizontal caret offset.
|
jpayne@69
|
51 * @HB_OT_METRICS_TAG_VERTICAL_CARET_RISE: vertical caret rise.
|
jpayne@69
|
52 * @HB_OT_METRICS_TAG_VERTICAL_CARET_RUN: vertical caret run.
|
jpayne@69
|
53 * @HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET: vertical caret offset.
|
jpayne@69
|
54 * @HB_OT_METRICS_TAG_X_HEIGHT: x height.
|
jpayne@69
|
55 * @HB_OT_METRICS_TAG_CAP_HEIGHT: cap height.
|
jpayne@69
|
56 * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE: subscript em x size.
|
jpayne@69
|
57 * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE: subscript em y size.
|
jpayne@69
|
58 * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET: subscript em x offset.
|
jpayne@69
|
59 * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET: subscript em y offset.
|
jpayne@69
|
60 * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE: superscript em x size.
|
jpayne@69
|
61 * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE: superscript em y size.
|
jpayne@69
|
62 * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET: superscript em x offset.
|
jpayne@69
|
63 * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET: superscript em y offset.
|
jpayne@69
|
64 * @HB_OT_METRICS_TAG_STRIKEOUT_SIZE: strikeout size.
|
jpayne@69
|
65 * @HB_OT_METRICS_TAG_STRIKEOUT_OFFSET: strikeout offset.
|
jpayne@69
|
66 * @HB_OT_METRICS_TAG_UNDERLINE_SIZE: underline size.
|
jpayne@69
|
67 * @HB_OT_METRICS_TAG_UNDERLINE_OFFSET: underline offset.
|
jpayne@69
|
68 *
|
jpayne@69
|
69 * From https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags
|
jpayne@69
|
70 *
|
jpayne@69
|
71 * Since: 2.6.0
|
jpayne@69
|
72 **/
|
jpayne@69
|
73 typedef enum {
|
jpayne@69
|
74 HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER = HB_TAG ('h','a','s','c'),
|
jpayne@69
|
75 HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER = HB_TAG ('h','d','s','c'),
|
jpayne@69
|
76 HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP = HB_TAG ('h','l','g','p'),
|
jpayne@69
|
77 HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT = HB_TAG ('h','c','l','a'),
|
jpayne@69
|
78 HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT = HB_TAG ('h','c','l','d'),
|
jpayne@69
|
79 HB_OT_METRICS_TAG_VERTICAL_ASCENDER = HB_TAG ('v','a','s','c'),
|
jpayne@69
|
80 HB_OT_METRICS_TAG_VERTICAL_DESCENDER = HB_TAG ('v','d','s','c'),
|
jpayne@69
|
81 HB_OT_METRICS_TAG_VERTICAL_LINE_GAP = HB_TAG ('v','l','g','p'),
|
jpayne@69
|
82 HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE = HB_TAG ('h','c','r','s'),
|
jpayne@69
|
83 HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN = HB_TAG ('h','c','r','n'),
|
jpayne@69
|
84 HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET = HB_TAG ('h','c','o','f'),
|
jpayne@69
|
85 HB_OT_METRICS_TAG_VERTICAL_CARET_RISE = HB_TAG ('v','c','r','s'),
|
jpayne@69
|
86 HB_OT_METRICS_TAG_VERTICAL_CARET_RUN = HB_TAG ('v','c','r','n'),
|
jpayne@69
|
87 HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET = HB_TAG ('v','c','o','f'),
|
jpayne@69
|
88 HB_OT_METRICS_TAG_X_HEIGHT = HB_TAG ('x','h','g','t'),
|
jpayne@69
|
89 HB_OT_METRICS_TAG_CAP_HEIGHT = HB_TAG ('c','p','h','t'),
|
jpayne@69
|
90 HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE = HB_TAG ('s','b','x','s'),
|
jpayne@69
|
91 HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE = HB_TAG ('s','b','y','s'),
|
jpayne@69
|
92 HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET = HB_TAG ('s','b','x','o'),
|
jpayne@69
|
93 HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET = HB_TAG ('s','b','y','o'),
|
jpayne@69
|
94 HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE = HB_TAG ('s','p','x','s'),
|
jpayne@69
|
95 HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE = HB_TAG ('s','p','y','s'),
|
jpayne@69
|
96 HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET = HB_TAG ('s','p','x','o'),
|
jpayne@69
|
97 HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET = HB_TAG ('s','p','y','o'),
|
jpayne@69
|
98 HB_OT_METRICS_TAG_STRIKEOUT_SIZE = HB_TAG ('s','t','r','s'),
|
jpayne@69
|
99 HB_OT_METRICS_TAG_STRIKEOUT_OFFSET = HB_TAG ('s','t','r','o'),
|
jpayne@69
|
100 HB_OT_METRICS_TAG_UNDERLINE_SIZE = HB_TAG ('u','n','d','s'),
|
jpayne@69
|
101 HB_OT_METRICS_TAG_UNDERLINE_OFFSET = HB_TAG ('u','n','d','o'),
|
jpayne@69
|
102
|
jpayne@69
|
103 _HB_OT_METRICS_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/
|
jpayne@69
|
104 } hb_ot_metrics_tag_t;
|
jpayne@69
|
105
|
jpayne@69
|
106 HB_EXTERN hb_bool_t
|
jpayne@69
|
107 hb_ot_metrics_get_position (hb_font_t *font,
|
jpayne@69
|
108 hb_ot_metrics_tag_t metrics_tag,
|
jpayne@69
|
109 hb_position_t *position /* OUT. May be NULL. */);
|
jpayne@69
|
110
|
jpayne@69
|
111 HB_EXTERN float
|
jpayne@69
|
112 hb_ot_metrics_get_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag);
|
jpayne@69
|
113
|
jpayne@69
|
114 HB_EXTERN hb_position_t
|
jpayne@69
|
115 hb_ot_metrics_get_x_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag);
|
jpayne@69
|
116
|
jpayne@69
|
117 HB_EXTERN hb_position_t
|
jpayne@69
|
118 hb_ot_metrics_get_y_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag);
|
jpayne@69
|
119
|
jpayne@69
|
120 HB_END_DECLS
|
jpayne@69
|
121
|
jpayne@69
|
122 #endif /* HB_OT_METRICS_H */
|