[repacker] include LookupList size when calculating size of 16bit space for ext promotion decisions.
diff --git a/src/graph/graph.hh b/src/graph/graph.hh index df845da..5c5b5a4 100644 --- a/src/graph/graph.hh +++ b/src/graph/graph.hh
@@ -111,6 +111,10 @@ return priority >= 3; } + size_t table_size () const { + return obj.tail - obj.head; + } + int64_t modified_distance (unsigned order) const { // TODO(garretrieger): once priority is high enough, should try
diff --git a/src/graph/gsubgpos-graph.cc b/src/graph/gsubgpos-graph.cc index 12f44f8..d12e52f 100644 --- a/src/graph/gsubgpos-graph.cc +++ b/src/graph/gsubgpos-graph.cc
@@ -34,11 +34,14 @@ : table_tag (table_tag_), graph (graph_), buffer (buffer_), + lookup_list_index (0), lookups () { GSTAR* gstar = graph::GSTAR::graph_to_gstar (graph_); - if (gstar) + if (gstar) { gstar->find_lookups (graph, lookups); + lookup_list_index = gstar->get_lookup_list_index (graph_); + } unsigned extension_size = OT::ExtensionFormat1<OT::Layout::GSUB_impl::ExtensionSubst>::static_size; buffer.alloc (num_non_ext_subtables () * extension_size);
diff --git a/src/graph/gsubgpos-graph.hh b/src/graph/gsubgpos-graph.hh index 73abc3e..80fffaf 100644 --- a/src/graph/gsubgpos-graph.hh +++ b/src/graph/gsubgpos-graph.hh
@@ -40,6 +40,7 @@ hb_tag_t table_tag; graph_t& graph; hb_vector_t<char>& buffer; + unsigned lookup_list_index; hb_hashmap_t<unsigned, graph::Lookup*> lookups; HB_INTERNAL make_extension_context_t (hb_tag_t table_tag_, @@ -224,12 +225,17 @@ } } + unsigned get_lookup_list_index (graph_t& graph) + { + return graph.index_for_offset (graph.root_idx (), + get_lookup_list_field_offset()); + } + template<typename Types> void find_lookups (graph_t& graph, hb_hashmap_t<unsigned, Lookup*>& lookups /* OUT */) { - unsigned lookup_list_idx = graph.index_for_offset (graph.root_idx (), - get_lookup_list_field_offset()); + unsigned lookup_list_idx = get_lookup_list_index (graph); const LookupList<Types>* lookupList = (const LookupList<Types>*) graph.object (lookup_list_idx).head;