Index: third_party/harfbuzz-ng/src/hb-ot-shape.cc |
diff --git a/third_party/harfbuzz-ng/src/hb-ot-shape.cc b/third_party/harfbuzz-ng/src/hb-ot-shape.cc |
index a9de431cbdd16d1c1293699002dbcd6d830d0c34..a0b503ab0f23f95b26988acd3f1334dc63a5665d 100644 |
--- a/third_party/harfbuzz-ng/src/hb-ot-shape.cc |
+++ b/third_party/harfbuzz-ng/src/hb-ot-shape.cc |
@@ -29,23 +29,20 @@ |
#define HB_SHAPER ot |
#define hb_ot_shaper_face_data_t hb_ot_layout_t |
#define hb_ot_shaper_shape_plan_data_t hb_ot_shape_plan_t |
- |
-#include "hb-ot-layout-private.hh" |
+#include "hb-shaper-impl-private.hh" |
#include "hb-ot-shape-private.hh" |
#include "hb-ot-shape-complex-private.hh" |
#include "hb-ot-shape-fallback-private.hh" |
#include "hb-ot-shape-normalize-private.hh" |
-#include "hb-set-private.hh" |
-#include "hb-shaper-impl-private.hh" |
- |
+#include "hb-ot-layout-private.hh" |
#include "hb-unicode-private.hh" |
+#include "hb-set-private.hh" |
static hb_tag_t common_features[] = { |
HB_TAG('c','c','m','p'), |
- HB_TAG('l','i','g','a'), |
HB_TAG('l','o','c','l'), |
HB_TAG('m','a','r','k'), |
HB_TAG('m','k','m','k'), |
@@ -58,6 +55,7 @@ static hb_tag_t horizontal_features[] = { |
HB_TAG('c','l','i','g'), |
HB_TAG('c','u','r','s'), |
HB_TAG('k','e','r','n'), |
+ HB_TAG('l','i','g','a'), |
HB_TAG('r','c','l','t'), |
}; |
@@ -238,6 +236,7 @@ static void |
hb_insert_dotted_circle (hb_buffer_t *buffer, hb_font_t *font) |
{ |
if (!(buffer->flags & HB_BUFFER_FLAG_BOT) || |
+ buffer->context_len[0] || |
_hb_glyph_info_get_general_category (&buffer->info[0]) != |
HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) |
return; |
@@ -245,7 +244,7 @@ hb_insert_dotted_circle (hb_buffer_t *buffer, hb_font_t *font) |
if (!font->has_glyph (0x25CCu)) |
return; |
- hb_glyph_info_t dottedcircle; |
+ hb_glyph_info_t dottedcircle = {0}; |
dottedcircle.codepoint = 0x25CCu; |
_hb_glyph_info_set_unicode_props (&dottedcircle, buffer->unicode); |
@@ -449,6 +448,7 @@ hb_ot_substitute_complex (hb_ot_shape_context_t *c) |
{ |
hb_buffer_t *buffer = c->buffer; |
+ _hb_buffer_allocate_gsubgpos_vars (buffer); |
hb_ot_layout_substitute_start (c->font, buffer); |
if (!hb_ot_layout_has_glyph_classes (c->face)) |
@@ -637,6 +637,8 @@ hb_ot_position (hb_ot_shape_context_t *c) |
if (fallback) |
_hb_ot_shape_fallback_kern (c->plan, c->font, c->buffer); |
+ |
+ _hb_buffer_deallocate_gsubgpos_vars (c->buffer); |
} |