| Index: third_party/harfbuzz-ng/src/hb-ot-shape-private.hh
|
| diff --git a/third_party/harfbuzz-ng/src/hb-ot-shape-private.hh b/third_party/harfbuzz-ng/src/hb-ot-shape-private.hh
|
| index df0c7052e9b0eb0bc6bfb3450a711cf809309d47..c4c368db7c619c3f3e6b6413758405c4d704710f 100644
|
| --- a/third_party/harfbuzz-ng/src/hb-ot-shape-private.hh
|
| +++ b/third_party/harfbuzz-ng/src/hb-ot-shape-private.hh
|
| @@ -30,36 +30,63 @@
|
| #include "hb-private.hh"
|
|
|
| #include "hb-ot-map-private.hh"
|
| -#include "hb-ot-shape-complex-private.hh"
|
| +
|
| +
|
| +
|
| +/* buffer var allocations, used during the entire shaping process */
|
| +#define unicode_props0() var2.u8[0]
|
| +#define unicode_props1() var2.u8[1]
|
| +
|
|
|
|
|
| struct hb_ot_shape_plan_t
|
| {
|
| + hb_segment_properties_t props;
|
| + const struct hb_ot_complex_shaper_t *shaper;
|
| hb_ot_map_t map;
|
| - hb_ot_complex_shaper_t shaper;
|
| + const void *data;
|
|
|
| - hb_ot_shape_plan_t (void) : map () {}
|
| - ~hb_ot_shape_plan_t (void) { map.finish (); }
|
| + inline void substitute_closure (hb_face_t *face, hb_set_t *glyphs) const { map.substitute_closure (this, face, glyphs); }
|
| + inline void substitute (hb_font_t *font, hb_buffer_t *buffer) const { map.substitute (this, font, buffer); }
|
| + inline void position (hb_font_t *font, hb_buffer_t *buffer) const { map.position (this, font, buffer); }
|
|
|
| - private:
|
| - NO_COPY (hb_ot_shape_plan_t);
|
| + void finish (void) { map.finish (); }
|
| };
|
|
|
| +struct hb_ot_shape_planner_t
|
| +{
|
| + /* In the order that they are filled in. */
|
| + hb_face_t *face;
|
| + hb_segment_properties_t props;
|
| + const struct hb_ot_complex_shaper_t *shaper;
|
| + hb_ot_map_builder_t map;
|
| +
|
| + hb_ot_shape_planner_t (const hb_shape_plan_t *master_plan) :
|
| + face (master_plan->face),
|
| + props (master_plan->props),
|
| + shaper (NULL),
|
| + map () {}
|
| + ~hb_ot_shape_planner_t (void) { map.finish (); }
|
| +
|
| + inline void compile (hb_ot_shape_plan_t &plan)
|
| + {
|
| + plan.props = props;
|
| + plan.shaper = shaper;
|
| + map.compile (face, &props, plan.map);
|
| + }
|
|
|
| + private:
|
| + NO_COPY (hb_ot_shape_planner_t);
|
| +};
|
|
|
| -HB_INTERNAL hb_bool_t
|
| -_hb_ot_shape (hb_font_t *font,
|
| - hb_buffer_t *buffer,
|
| - const hb_feature_t *features,
|
| - unsigned int num_features);
|
|
|
|
|
| inline void
|
| _hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unicode)
|
| {
|
| - info->unicode_props0() = ((unsigned int) hb_unicode_general_category (unicode, info->codepoint)) |
|
| - (_hb_unicode_is_zero_width (info->codepoint) ? 0x80 : 0);
|
| - info->unicode_props1() = _hb_unicode_modified_combining_class (unicode, info->codepoint);
|
| + info->unicode_props0() = ((unsigned int) unicode->general_category (info->codepoint)) |
|
| + (unicode->is_zero_width (info->codepoint) ? 0x80 : 0);
|
| + info->unicode_props1() = unicode->modified_combining_class (info->codepoint);
|
| }
|
|
|
| inline hb_unicode_general_category_t
|
| @@ -68,6 +95,12 @@ _hb_glyph_info_get_general_category (const hb_glyph_info_t *info)
|
| return (hb_unicode_general_category_t) (info->unicode_props0() & 0x7F);
|
| }
|
|
|
| +inline void
|
| +_hb_glyph_info_set_modified_combining_class (hb_glyph_info_t *info, unsigned int modified_class)
|
| +{
|
| + info->unicode_props1() = modified_class;
|
| +}
|
| +
|
| inline unsigned int
|
| _hb_glyph_info_get_modified_combining_class (const hb_glyph_info_t *info)
|
| {
|
|
|