|
@@ -0,0 +1,97 @@
|
|
|
|
+From 3238cb744bb570a75326ab4438968c59069e9af2 Mon Sep 17 00:00:00 2001
|
|
|
|
+From: Kleis Auke Wolthuizen <github@kleisauke.nl>
|
|
|
|
+Date: Wed, 6 Jul 2022 13:18:14 +0200
|
|
|
|
+Subject: [PATCH] [GPOS] Fix build on GCC < 7
|
|
|
|
+
|
|
|
|
+[Retrieved (and backported) from:
|
|
|
|
+https://github.com/harfbuzz/harfbuzz/commit/3238cb744bb570a75326ab4438968c59069e9af2]
|
|
|
|
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
|
|
|
+---
|
|
|
|
+ src/OT/Layout/GPOS/GPOS.hh | 17 ++++++++++-------
|
|
|
|
+ src/hb-ot-layout-gpos-table.hh | 6 ++++--
|
|
|
|
+ 2 files changed, 14 insertions(+), 9 deletions(-)
|
|
|
|
+
|
|
|
|
+diff --git a/src/OT/Layout/GPOS/GPOS.hh b/src/OT/Layout/GPOS/GPOS.hh
|
|
|
|
+index 7fb97d7568..23b0b090a2 100644
|
|
|
|
+--- a/src/OT/Layout/GPOS.hh
|
|
|
|
++++ b/src/OT/Layout/GPOS.hh
|
|
|
|
+@@ -7,6 +7,9 @@
|
|
|
|
+ #include "GPOS/PosLookup.hh"
|
|
|
|
+
|
|
|
|
+ namespace OT {
|
|
|
|
++
|
|
|
|
++using Layout::GPOS_impl::PosLookup;
|
|
|
|
++
|
|
|
|
+ namespace Layout {
|
|
|
|
+
|
|
|
|
+ static void
|
|
|
|
+@@ -25,10 +28,10 @@ struct GPOS : GSUBGPOS
|
|
|
|
+ {
|
|
|
|
+ static constexpr hb_tag_t tableTag = HB_OT_TAG_GPOS;
|
|
|
|
+
|
|
|
|
+- using Lookup = GPOS_impl::PosLookup;
|
|
|
|
++ using Lookup = PosLookup;
|
|
|
|
+
|
|
|
|
+- const GPOS_impl::PosLookup& get_lookup (unsigned int i) const
|
|
|
|
+- { return static_cast<const GPOS_impl::PosLookup &> (GSUBGPOS::get_lookup (i)); }
|
|
|
|
++ const PosLookup& get_lookup (unsigned int i) const
|
|
|
|
++ { return static_cast<const PosLookup &> (GSUBGPOS::get_lookup (i)); }
|
|
|
|
+
|
|
|
|
+ static inline void position_start (hb_font_t *font, hb_buffer_t *buffer);
|
|
|
|
+ static inline void position_finish_advances (hb_font_t *font, hb_buffer_t *buffer);
|
|
|
|
+@@ -37,11 +40,11 @@ struct GPOS : GSUBGPOS
|
|
|
|
+ bool subset (hb_subset_context_t *c) const
|
|
|
|
+ {
|
|
|
|
+ hb_subset_layout_context_t l (c, tableTag, c->plan->gpos_lookups, c->plan->gpos_langsys, c->plan->gpos_features);
|
|
|
|
+- return GSUBGPOS::subset<GPOS_impl::PosLookup> (&l);
|
|
|
|
++ return GSUBGPOS::subset<PosLookup> (&l);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bool sanitize (hb_sanitize_context_t *c) const
|
|
|
|
+- { return GSUBGPOS::sanitize<GPOS_impl::PosLookup> (c); }
|
|
|
|
++ { return GSUBGPOS::sanitize<PosLookup> (c); }
|
|
|
|
+
|
|
|
|
+ HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
|
|
|
|
+ hb_face_t *face) const;
|
|
|
|
+@@ -51,7 +54,7 @@ struct GPOS : GSUBGPOS
|
|
|
|
+ for (unsigned i = 0; i < GSUBGPOS::get_lookup_count (); i++)
|
|
|
|
+ {
|
|
|
|
+ if (!c->gpos_lookups->has (i)) continue;
|
|
|
|
+- const GPOS_impl::PosLookup &l = get_lookup (i);
|
|
|
|
++ const PosLookup &l = get_lookup (i);
|
|
|
|
+ l.dispatch (c);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+@@ -59,7 +62,7 @@ struct GPOS : GSUBGPOS
|
|
|
|
+ void closure_lookups (hb_face_t *face,
|
|
|
|
+ const hb_set_t *glyphs,
|
|
|
|
+ hb_set_t *lookup_indexes /* IN/OUT */) const
|
|
|
|
+- { GSUBGPOS::closure_lookups<GPOS_impl::PosLookup> (face, glyphs, lookup_indexes); }
|
|
|
|
++ { GSUBGPOS::closure_lookups<PosLookup> (face, glyphs, lookup_indexes); }
|
|
|
|
+
|
|
|
|
+ typedef GSUBGPOS::accelerator_t<GPOS> accelerator_t;
|
|
|
|
+ };
|
|
|
|
+diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh
|
|
|
|
+index f5059cfa83..8fe987fc50 100644
|
|
|
|
+--- a/src/hb-ot-layout-gpos-table.hh
|
|
|
|
++++ b/src/hb-ot-layout-gpos-table.hh
|
|
|
|
+@@ -32,8 +32,8 @@
|
|
|
|
+ #include "OT/Layout/GPOS.hh"
|
|
|
|
+
|
|
|
|
+ namespace OT {
|
|
|
|
+-
|
|
|
|
+-using Layout::GPOS_impl::PosLookup;
|
|
|
|
++namespace Layout {
|
|
|
|
++namespace GPOS_impl {
|
|
|
|
+
|
|
|
|
+ // TODO(garretrieger): Move into new layout directory.
|
|
|
|
+ /* Out-of-class implementation for methods recursing */
|
|
|
|
+@@ -68,6 +68,8 @@ inline bool PosLookup::dispatch_recurse_func<hb_ot_apply_context_t> (hb_ot_apply
|
|
|
|
+ }
|
|
|
|
+ #endif
|
|
|
|
+
|
|
|
|
++} /* namespace GPOS_impl */
|
|
|
|
++} /* namespace Layout */
|
|
|
|
+ } /* namespace OT */
|
|
|
|
+
|
|
|
|
+
|