From d7adc55e18c690b4d1390e1de821eadf24a9b063 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 3 Aug 2022 13:22:51 -0600 Subject: [PATCH] [ot-font] Allow 24bit glyphs in advance cache --- src/hb-cache.hh | 6 ------ src/hb-ft.cc | 4 +++- src/hb-ot-font.cc | 8 +++++--- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/hb-cache.hh b/src/hb-cache.hh index c87fe91af..897f313fb 100644 --- a/src/hb-cache.hh +++ b/src/hb-cache.hh @@ -82,11 +82,5 @@ struct hb_cache_t item_t values[1u< -using hb_cmap_cache_t = hb_cache_t<21, 16, 8, thread_safe>; - -template -using hb_advance_cache_t = hb_cache_t<16, 24, 8, thread_safe>; - #endif /* HB_CACHE_HH */ diff --git a/src/hb-ft.cc b/src/hb-ft.cc index 081d716cb..b9edcdc14 100644 --- a/src/hb-ft.cc +++ b/src/hb-ft.cc @@ -80,6 +80,8 @@ */ +using hb_ft_advance_cache_t = hb_cache_t<16, 24, 8, false>; + struct hb_ft_font_t { int load_flags; @@ -89,7 +91,7 @@ struct hb_ft_font_t mutable hb_mutex_t lock; FT_Face ft_face; mutable unsigned cached_serial; - mutable hb_advance_cache_t advance_cache; + mutable hb_ft_advance_cache_t advance_cache; }; static hb_ft_font_t * diff --git a/src/hb-ot-font.cc b/src/hb-ot-font.cc index 78230bd1a..c90a65665 100644 --- a/src/hb-ot-font.cc +++ b/src/hb-ot-font.cc @@ -59,13 +59,15 @@ * never need to call these functions directly. **/ +using hb_ot_font_advance_cache_t = hb_cache_t<24, 16, 8, true>; + struct hb_ot_font_t { const hb_ot_face_t *ot_face; /* h_advance caching */ mutable hb_atomic_int_t cached_coords_serial; - mutable hb_atomic_ptr_t> advance_cache; + mutable hb_atomic_ptr_t advance_cache; }; static hb_ot_font_t * @@ -161,14 +163,14 @@ hb_ot_get_glyph_h_advances (hb_font_t* font, void* font_data, bool use_cache = false; #endif - hb_advance_cache_t<> *cache = nullptr; + hb_ot_font_advance_cache_t *cache = nullptr; if (use_cache) { retry: cache = ot_font->advance_cache.get_acquire (); if (unlikely (!cache)) { - cache = (hb_advance_cache_t<> *) hb_malloc (sizeof (hb_advance_cache_t<>)); + cache = (hb_ot_font_advance_cache_t *) hb_malloc (sizeof (hb_ot_font_advance_cache_t)); if (unlikely (!cache)) { use_cache = false;