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