[fvar] Centralize axis finding logic
Part of fixing https://github.com/harfbuzz/harfbuzz/issues/1673
This commit is contained in:
parent
0b2280af90
commit
89018068cd
|
@ -211,17 +211,24 @@ struct fvar
|
||||||
if (!axis_index) axis_index = &i;
|
if (!axis_index) axis_index = &i;
|
||||||
*axis_index = HB_OT_VAR_NO_AXIS_INDEX;
|
*axis_index = HB_OT_VAR_NO_AXIS_INDEX;
|
||||||
auto axes = get_axes ();
|
auto axes = get_axes ();
|
||||||
return axes.lfind (tag, axis_index) && (axes[*axis_index].get_axis_deprecated (info), true);
|
return find_axis_index (tag, axis_index) && (axes[*axis_index].get_axis_deprecated (info), true);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Returns index of the first occurence of tag, if there are multiple ones. */
|
||||||
|
bool
|
||||||
|
find_axis_index (hb_tag_t tag, unsigned *axis_index) const
|
||||||
|
{
|
||||||
|
auto axes = get_axes ();
|
||||||
|
/* TODO bfind() for larger array? Should then look back to find first entry for tag. */
|
||||||
|
return axes.lfind (tag, axis_index);
|
||||||
|
}
|
||||||
bool
|
bool
|
||||||
find_axis_info (hb_tag_t tag, hb_ot_var_axis_info_t *info) const
|
find_axis_info (hb_tag_t tag, hb_ot_var_axis_info_t *info) const
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
auto axes = get_axes ();
|
auto axes = get_axes ();
|
||||||
/* TODO bfind() for larger array? Should then look back to find first entry for tag. */
|
return find_axis_index (tag, &i) && (axes[i].get_axis_info (i, info), true);
|
||||||
return axes.lfind (tag, &i) && (axes[i].get_axis_info (i, info), true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int normalize_axis_value (unsigned int axis_index, float v) const
|
int normalize_axis_value (unsigned int axis_index, float v) const
|
||||||
|
|
Loading…
Reference in New Issue