diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-12-02 09:35:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-02 09:35:45 +0100 |
commit | 256406a0bcd57e1331cb7c680bd4692ed0e0d5f5 (patch) | |
tree | dc7f3ddcb8850aa468fabb744fd0c5673463fc54 /thirdparty/harfbuzz/src/hb-ot-post-table-v2subset.hh | |
parent | 8e090e2b9c9d363ccca8ecbc259e03350d4b6f21 (diff) | |
parent | 371010c5f95ff13132821d707468d457dbaea7a7 (diff) |
Merge pull request #55505 from bruvzg/hb_312
Diffstat (limited to 'thirdparty/harfbuzz/src/hb-ot-post-table-v2subset.hh')
-rw-r--r-- | thirdparty/harfbuzz/src/hb-ot-post-table-v2subset.hh | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/thirdparty/harfbuzz/src/hb-ot-post-table-v2subset.hh b/thirdparty/harfbuzz/src/hb-ot-post-table-v2subset.hh index 94450eb53a..504de2de74 100644 --- a/thirdparty/harfbuzz/src/hb-ot-post-table-v2subset.hh +++ b/thirdparty/harfbuzz/src/hb-ot-post-table-v2subset.hh @@ -79,6 +79,7 @@ HB_INTERNAL bool postV2Tail::subset (hb_subset_context_t *c) const post::accelerator_t _post; _post.init (c->plan->source); + hb_hashmap_t<hb_bytes_t, unsigned, std::nullptr_t, unsigned, nullptr, (unsigned)-1> glyph_name_to_new_index; for (hb_codepoint_t new_gid = 0; new_gid < num_glyphs; new_gid++) { hb_codepoint_t old_gid = reverse_glyph_map.get (new_gid); @@ -90,22 +91,28 @@ HB_INTERNAL bool postV2Tail::subset (hb_subset_context_t *c) const else { hb_bytes_t s = _post.find_glyph_name (old_gid); - int standard_glyph_index = -1; - for (unsigned i = 0; i < format1_names_length; i++) + new_index = glyph_name_to_new_index.get (s); + if (new_index == (unsigned)-1) { - if (s == format1_names (i)) + int standard_glyph_index = -1; + for (unsigned i = 0; i < format1_names_length; i++) { - standard_glyph_index = i; - break; + if (s == format1_names (i)) + { + standard_glyph_index = i; + break; + } } + + if (standard_glyph_index == -1) + { + new_index = 258 + i; + i++; + } + else + { new_index = standard_glyph_index; } + glyph_name_to_new_index.set (s, new_index); } - if (standard_glyph_index == -1) - { - new_index = 258 + i; - i++; - } - else - { new_index = standard_glyph_index; } old_new_index_map.set (old_index, new_index); } old_gid_new_index_map.set (old_gid, new_index); |