50 return fabs ((
double)
value);
53 return -fabs ((
double)
value);
65 switch ((
unsigned) metrics_tag)
68 #define GET_VAR face->table.MVAR->get_var (metrics_tag, font->coords, font->num_coords)
72 #define GET_METRIC_X(TABLE, ATTR) \
73 (face->table.TABLE->has_data () && \
74 (position && (*position = font->em_scalef_x (_fix_ascender_descender ( \
75 face->table.TABLE->ATTR + GET_VAR, metrics_tag))), true))
76 #define GET_METRIC_Y(TABLE, ATTR) \
77 (face->table.TABLE->has_data () && \
78 (position && (*position = font->em_scalef_y (_fix_ascender_descender ( \
79 face->table.TABLE->ATTR + GET_VAR, metrics_tag))), true))
82 return (
face->table.OS2->use_typo_metrics () &&
GET_METRIC_Y (OS2, sTypoAscender)) ||
85 return (
face->table.OS2->use_typo_metrics () &&
GET_METRIC_Y (OS2, sTypoDescender)) ||
88 return (
face->table.OS2->use_typo_metrics () &&
GET_METRIC_Y (OS2, sTypoLineGap)) ||
91 #ifndef HB_NO_VERTICAL
100 default:
assert (0);
return false;
104 #ifndef HB_NO_METRICS
118 #define _HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER_OS2 HB_TAG ('O','a','s','c')
119 #define _HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER_HHEA HB_TAG ('H','a','s','c')
120 #define _HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER_OS2 HB_TAG ('O','d','s','c')
121 #define _HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER_HHEA HB_TAG ('H','d','s','c')
122 #define _HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP_OS2 HB_TAG ('O','l','g','p')
123 #define _HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP_HHEA HB_TAG ('H','l','g','p')
142 switch ((
unsigned) metrics_tag)
151 #define GET_VAR hb_ot_metrics_get_variation (font, metrics_tag)
155 #define GET_METRIC_X(TABLE, ATTR) \
156 (face->table.TABLE->has_data () && \
157 (position && (*position = font->em_scalef_x (face->table.TABLE->ATTR + GET_VAR)), true))
158 #define GET_METRIC_Y(TABLE, ATTR) \
159 (face->table.TABLE->has_data () && \
160 (position && (*position = font->em_scalef_y (face->table.TABLE->ATTR + GET_VAR)), true))
171 unsigned rise =
face->table.hhea->caretSlopeRise;
172 unsigned upem =
face->get_upem ();
173 mult = (rise && rise < upem) ? hb_min (upem / rise, 256u) : 1u;
207 #ifndef HB_NO_VERTICAL
237 default:
return false;
396 return font->face->table.MVAR->get_var (metrics_tag,
font->coords,
font->num_coords);
void hb_font_get_extents_for_direction(hb_font_t *font, hb_direction_t direction, hb_font_extents_t *extents)
hb_bool_t hb_font_get_nominal_glyph(hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t *glyph)
hb_bool_t hb_font_get_glyph_extents(hb_font_t *font, hb_codepoint_t glyph, hb_glyph_extents_t *extents)
#define GET_METRIC_Y(TABLE, ATTR)
#define _HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP_OS2
float hb_ot_metrics_get_variation(hb_font_t *font, hb_ot_metrics_tag_t metrics_tag)
hb_position_t hb_ot_metrics_get_x_variation(hb_font_t *font, hb_ot_metrics_tag_t metrics_tag)
#define _HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER_HHEA
hb_bool_t hb_ot_metrics_get_position(hb_font_t *font, hb_ot_metrics_tag_t metrics_tag, hb_position_t *position)
#define _HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER_OS2
#define GET_METRIC_X(TABLE, ATTR)
#define _HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER_HHEA
#define _HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP_HHEA
#define _HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER_OS2
hb_position_t hb_ot_metrics_get_y_variation(hb_font_t *font, hb_ot_metrics_tag_t metrics_tag)
void hb_ot_metrics_get_position_with_fallback(hb_font_t *font, hb_ot_metrics_tag_t metrics_tag, hb_position_t *position)
bool _hb_ot_metrics_get_position_common(hb_font_t *font, hb_ot_metrics_tag_t metrics_tag, hb_position_t *position)
@ HB_OT_METRICS_TAG_X_HEIGHT
@ HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT
@ HB_OT_METRICS_TAG_VERTICAL_LINE_GAP
@ HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET
@ HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE
@ _HB_OT_METRICS_TAG_MAX_VALUE
@ HB_OT_METRICS_TAG_VERTICAL_ASCENDER
@ HB_OT_METRICS_TAG_CAP_HEIGHT
@ HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE
@ HB_OT_METRICS_TAG_STRIKEOUT_SIZE
@ HB_OT_METRICS_TAG_UNDERLINE_SIZE
@ HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER
@ HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET
@ HB_OT_METRICS_TAG_UNDERLINE_OFFSET
@ HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN
@ HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER
@ HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET
@ HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE
@ HB_OT_METRICS_TAG_VERTICAL_CARET_RISE
@ HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT
@ HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET
@ HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE
@ HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET
@ HB_OT_METRICS_TAG_VERTICAL_DESCENDER
@ HB_OT_METRICS_TAG_VERTICAL_CARET_RUN
@ HB_OT_METRICS_TAG_STRIKEOUT_OFFSET
@ HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE
@ HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET
@ HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP
QHighDpiScaling::Point position(T, QHighDpiScaling::Point::Kind)
EGLOutputLayerEXT EGLint EGLAttrib value
HB_BEGIN_DECLS typedef int hb_bool_t
#define HB_TAG(c1, c2, c3, c4)
http post("register.html", data)