@@ -6125,17 +6125,15 @@ Glyph TextServerAdvanced::_shape_single_glyph(ShapedTextDataAdvanced *p_sd, char
61256125 return gl;
61266126}
61276127
6128- _FORCE_INLINE_ void TextServerAdvanced::_add_featuers (const Dictionary &p_source, Vector<hb_feature_t > &r_ftrs) {
6129- Array keys = p_source.keys ();
6130- Array values = p_source.values ();
6131- for (int i = 0 ; i < keys.size (); i++) {
6132- int32_t value = values[i];
6128+ _FORCE_INLINE_ void TextServerAdvanced::_add_features (const Dictionary &p_source, Vector<hb_feature_t > &r_ftrs) {
6129+ for (const KeyValue<Variant, Variant> &key_value : p_source) {
6130+ int32_t value = key_value.value ;
61336131 if (value >= 0 ) {
61346132 hb_feature_t feature;
6135- if (keys[i] .is_string ()) {
6136- feature.tag = _name_to_tag (keys[i] );
6133+ if (key_value. key .is_string ()) {
6134+ feature.tag = _name_to_tag (key_value. key );
61376135 } else {
6138- feature.tag = keys[i] ;
6136+ feature.tag = key_value. key ;
61396137 }
61406138 feature.value = value;
61416139 feature.start = 0 ;
@@ -6297,8 +6295,8 @@ void TextServerAdvanced::_shape_run(ShapedTextDataAdvanced *p_sd, int64_t p_star
62976295 hb_buffer_add_utf32 (p_sd->hb_buffer , (const uint32_t *)p_sd->text .ptr (), p_sd->text .length (), p_start, p_end - p_start);
62986296
62996297 Vector<hb_feature_t > ftrs;
6300- _add_featuers (_font_get_opentype_feature_overrides (f), ftrs);
6301- _add_featuers (p_sd->spans [p_span].features , ftrs);
6298+ _add_features (_font_get_opentype_feature_overrides (f), ftrs);
6299+ _add_features (p_sd->spans [p_span].features , ftrs);
63026300
63036301 hb_shape (hb_font, p_sd->hb_buffer , ftrs.is_empty () ? nullptr : &ftrs[0 ], ftrs.size ());
63046302
0 commit comments