|
|
|
@ -70,7 +70,7 @@ struct hb_ft_font_t |
|
|
|
|
bool symbol; /* Whether selected cmap is symbol cmap. */ |
|
|
|
|
bool unref; /* Whether to destroy ft_face when done. */ |
|
|
|
|
|
|
|
|
|
mutable int cached_x_scale; |
|
|
|
|
mutable hb_atomic_int_t cached_x_scale; |
|
|
|
|
mutable hb_advance_cache_t advance_cache; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
@ -88,7 +88,7 @@ _hb_ft_font_create (FT_Face ft_face, bool symbol, bool unref) |
|
|
|
|
|
|
|
|
|
ft_font->load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING; |
|
|
|
|
|
|
|
|
|
ft_font->cached_x_scale = 0; |
|
|
|
|
ft_font->cached_x_scale.set (0); |
|
|
|
|
ft_font->advance_cache.init (); |
|
|
|
|
|
|
|
|
|
return ft_font; |
|
|
|
@ -250,10 +250,10 @@ hb_ft_get_glyph_h_advances (hb_font_t* font, void* font_data, |
|
|
|
|
int load_flags = ft_font->load_flags; |
|
|
|
|
int mult = font->x_scale < 0 ? -1 : +1; |
|
|
|
|
|
|
|
|
|
if (font->x_scale != ft_font->cached_x_scale) |
|
|
|
|
if (font->x_scale != ft_font->cached_x_scale.get ()) |
|
|
|
|
{ |
|
|
|
|
ft_font->advance_cache.clear (); |
|
|
|
|
ft_font->cached_x_scale = font->x_scale; |
|
|
|
|
ft_font->cached_x_scale.set (font->x_scale); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (unsigned int i = 0; i < count; i++) |
|
|
|
|