Move the iteration logic to FeatureParamsCharacterVariants

Hopefully I can make members protected also.
This commit is contained in:
Ebrahim Byagowi 2020-06-19 23:40:42 +04:30
parent 9b3d4f457e
commit d38eb49f46
2 changed files with 16 additions and 11 deletions

View File

@ -805,6 +805,18 @@ struct FeatureParamsStylisticSet
/* https://docs.microsoft.com/en-us/typography/opentype/spec/features_ae#cv01-cv99 */
struct FeatureParamsCharacterVariants
{
unsigned
get_characters (unsigned start_offset, unsigned *char_count, hb_codepoint_t *chars) const
{
if (char_count)
{
+ characters.sub_array (start_offset, char_count)
| hb_sink (hb_array (chars, *char_count))
;
}
return characters.len;
}
unsigned get_size () const
{ return min_size + characters.len * HBUINT24::static_size; }

View File

@ -1723,17 +1723,10 @@ hb_ot_layout_feature_get_characters (hb_face_t *face,
hb_codepoint_t *characters /* OUT. May be NULL */)
{
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
auto &cv_params = g.get_feature (feature_index)
.get_feature_params ()
.get_character_variants_params(g.get_feature_tag (feature_index));
if (char_count)
{
+ cv_params.characters.sub_array (start_offset, char_count)
| hb_sink (hb_array (characters, *char_count))
;
}
return cv_params.characters.len;
return g.get_feature (feature_index)
.get_feature_params ()
.get_character_variants_params(g.get_feature_tag (feature_index))
.get_characters (start_offset, char_count, characters);
}
#endif