[metrics] Fix _get_variation API to works with actual coord values

This commit is contained in:
Ebrahim Byagowi 2019-07-22 18:35:55 +04:30 committed by GitHub
parent 77141dff7d
commit a51aa951b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 10 deletions

View File

@ -56,7 +56,7 @@ _hb_ot_metrics_get_position_common (hb_font_t *font,
switch ((unsigned int) metrics_tag) switch ((unsigned int) metrics_tag)
{ {
#ifndef HB_NO_VAR #ifndef HB_NO_VAR
#define GET_VAR face->table.MVAR->get_var (metrics_tag, nullptr, 0) #define GET_VAR face->table.MVAR->get_var (metrics_tag, font->coords, font->num_coords)
#else #else
#define GET_VAR .0f #define GET_VAR .0f
#endif #endif
@ -95,7 +95,7 @@ _get_gasp (hb_face_t *face, float *result, hb_ot_metrics_t metrics_tag)
{ {
const OT::GaspRange& range = face->table.gasp->get_gasp_range (metrics_tag - HB_TAG ('g','s','p','0')); const OT::GaspRange& range = face->table.gasp->get_gasp_range (metrics_tag - HB_TAG ('g','s','p','0'));
if (&range == &Null (OT::GaspRange)) return false; if (&range == &Null (OT::GaspRange)) return false;
if (result) *result = range.rangeMaxPPEM + face->table.MVAR->get_var (metrics_tag, nullptr, 0); if (result) *result = range.rangeMaxPPEM + font->face->table.MVAR->get_var (metrics_tag, font->coords, font->num_coords);
return true; return true;
} }
#endif #endif
@ -126,7 +126,7 @@ hb_ot_metrics_get_position (hb_font_t *font,
case HB_OT_METRICS_VERTICAL_DESCENDER: case HB_OT_METRICS_VERTICAL_DESCENDER:
case HB_OT_METRICS_VERTICAL_LINE_GAP: return _hb_ot_metrics_get_position_common (font, metrics_tag, position); case HB_OT_METRICS_VERTICAL_LINE_GAP: return _hb_ot_metrics_get_position_common (font, metrics_tag, position);
#ifndef HB_NO_VAR #ifndef HB_NO_VAR
#define GET_VAR hb_ot_metrics_get_variation (face, metrics_tag) #define GET_VAR hb_ot_metrics_get_variation (font, metrics_tag)
#else #else
#define GET_VAR 0 #define GET_VAR 0
#endif #endif
@ -168,7 +168,7 @@ hb_ot_metrics_get_position (hb_font_t *font,
#ifndef HB_NO_VAR #ifndef HB_NO_VAR
/** /**
* hb_ot_metrics_get_variation: * hb_ot_metrics_get_variation:
* @face: * @font:
* @metrics_tag: * @metrics_tag:
* *
* Returns: * Returns:
@ -176,9 +176,9 @@ hb_ot_metrics_get_position (hb_font_t *font,
* Since: REPLACEME * Since: REPLACEME
**/ **/
float float
hb_ot_metrics_get_variation (hb_face_t *face, hb_ot_metrics_t metrics_tag) hb_ot_metrics_get_variation (hb_font_t *font, hb_ot_metrics_t metrics_tag)
{ {
return face->table.MVAR->get_var (metrics_tag, nullptr, 0); return font->face->table.MVAR->get_var (metrics_tag, font->coords, font->num_coords);
} }
/** /**
@ -193,7 +193,7 @@ hb_ot_metrics_get_variation (hb_face_t *face, hb_ot_metrics_t metrics_tag)
hb_position_t hb_position_t
hb_ot_metrics_get_x_variation (hb_font_t *font, hb_ot_metrics_t metrics_tag) hb_ot_metrics_get_x_variation (hb_font_t *font, hb_ot_metrics_t metrics_tag)
{ {
return font->em_scalef_x (hb_ot_metrics_get_variation (font->face, metrics_tag)); return font->em_scalef_x (hb_ot_metrics_get_variation (font, metrics_tag));
} }
/** /**
@ -208,7 +208,7 @@ hb_ot_metrics_get_x_variation (hb_font_t *font, hb_ot_metrics_t metrics_tag)
hb_position_t hb_position_t
hb_ot_metrics_get_y_variation (hb_font_t *font, hb_ot_metrics_t metrics_tag) hb_ot_metrics_get_y_variation (hb_font_t *font, hb_ot_metrics_t metrics_tag)
{ {
return font->em_scalef_y (hb_ot_metrics_get_variation (font->face, metrics_tag)); return font->em_scalef_y (hb_ot_metrics_get_variation (font, metrics_tag));
} }
#endif #endif

View File

@ -79,7 +79,7 @@ hb_ot_metrics_get_position (hb_font_t *font,
hb_position_t *position /* OUT. May be NULL. */); hb_position_t *position /* OUT. May be NULL. */);
HB_EXTERN float HB_EXTERN float
hb_ot_metrics_get_variation (hb_face_t *face, hb_ot_metrics_t metrics_tag); hb_ot_metrics_get_variation (hb_font_t *font, hb_ot_metrics_t metrics_tag);
HB_EXTERN hb_position_t HB_EXTERN hb_position_t
hb_ot_metrics_get_x_variation (hb_font_t *font, hb_ot_metrics_t metrics_tag); hb_ot_metrics_get_x_variation (hb_font_t *font, hb_ot_metrics_t metrics_tag);

View File

@ -40,7 +40,7 @@ test_ot_metrics_get (void)
g_assert_cmpint (value, ==, 1000); g_assert_cmpint (value, ==, 1000);
g_assert_cmpint (hb_ot_metrics_get_x_variation (font, HB_OT_METRICS_HORIZONTAL_ASCENDER), ==, 0); g_assert_cmpint (hb_ot_metrics_get_x_variation (font, HB_OT_METRICS_HORIZONTAL_ASCENDER), ==, 0);
g_assert_cmpint (hb_ot_metrics_get_y_variation (font, HB_OT_METRICS_HORIZONTAL_ASCENDER), ==, 0); g_assert_cmpint (hb_ot_metrics_get_y_variation (font, HB_OT_METRICS_HORIZONTAL_ASCENDER), ==, 0);
// g_assert_cmpint ((int) hb_ot_metrics_get_variation (face, HB_OT_METRICS_HORIZONTAL_ASCENDER), ==, 0); // g_assert_cmpint ((int) hb_ot_metrics_get_variation (font, HB_OT_METRICS_HORIZONTAL_ASCENDER), ==, 0);
hb_font_destroy (font); hb_font_destroy (font);
hb_face_destroy (face); hb_face_destroy (face);
} }