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 c49c2b0e36af69d0ec56a0d8af1f5cf90118f4b6..df0c7052e9b0eb0bc6bfb3450a711cf809309d47 100644 |
--- a/third_party/harfbuzz-ng/src/hb-ot-shape-private.hh |
+++ b/third_party/harfbuzz-ng/src/hb-ot-shape-private.hh |
@@ -29,19 +29,12 @@ |
#include "hb-private.hh" |
-#include "hb-ot-shape.h" |
- |
#include "hb-ot-map-private.hh" |
#include "hb-ot-shape-complex-private.hh" |
- |
-enum hb_ot_complex_shaper_t; |
- |
struct hb_ot_shape_plan_t |
{ |
- friend struct hb_ot_shape_planner_t; |
- |
hb_ot_map_t map; |
hb_ot_complex_shaper_t shaper; |
@@ -52,78 +45,39 @@ struct hb_ot_shape_plan_t |
NO_COPY (hb_ot_shape_plan_t); |
}; |
-struct hb_ot_shape_planner_t |
-{ |
- hb_ot_map_builder_t map; |
- hb_ot_complex_shaper_t shaper; |
- |
- hb_ot_shape_planner_t (void) : map () {} |
- ~hb_ot_shape_planner_t (void) { map.finish (); } |
- inline void compile (hb_face_t *face, |
- const hb_segment_properties_t *props, |
- struct hb_ot_shape_plan_t &plan) |
- { |
- 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); |
-struct hb_ot_shape_context_t |
+inline void |
+_hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unicode) |
{ |
- /* Input to hb_ot_shape_execute() */ |
- hb_ot_shape_plan_t *plan; |
- hb_font_t *font; |
- hb_face_t *face; |
- hb_buffer_t *buffer; |
- const hb_feature_t *user_features; |
- unsigned int num_user_features; |
- |
- /* Transient stuff */ |
- hb_direction_t target_direction; |
- hb_bool_t applied_substitute_complex; |
- hb_bool_t applied_position_complex; |
-}; |
- |
+ 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); |
+} |
-static inline hb_bool_t |
-is_variation_selector (hb_codepoint_t unicode) |
+inline hb_unicode_general_category_t |
+_hb_glyph_info_get_general_category (const hb_glyph_info_t *info) |
{ |
- return unlikely ((unicode >= 0x180B && unicode <= 0x180D) || /* MONGOLIAN FREE VARIATION SELECTOR ONE..THREE */ |
- (unicode >= 0xFE00 && unicode <= 0xFE0F) || /* VARIATION SELECTOR-1..16 */ |
- (unicode >= 0xE0100 && unicode <= 0xE01EF)); /* VARIATION SELECTOR-17..256 */ |
+ return (hb_unicode_general_category_t) (info->unicode_props0() & 0x7F); |
} |
-static inline unsigned int |
-_hb_unicode_modified_combining_class (hb_unicode_funcs_t *ufuncs, |
- hb_codepoint_t unicode) |
+inline unsigned int |
+_hb_glyph_info_get_modified_combining_class (const hb_glyph_info_t *info) |
{ |
- int c = hb_unicode_combining_class (ufuncs, unicode); |
- |
- /* Modify the combining-class to suit Arabic better. See: |
- * http://unicode.org/faq/normalization.html#8 |
- * http://unicode.org/faq/normalization.html#9 |
- */ |
- if (unlikely (hb_in_range<int> (c, 27, 33))) |
- c = c == 33 ? 27 : c + 1; |
- |
- return c; |
+ return info->unicode_props1(); |
} |
-static inline void |
-hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unicode) |
+inline hb_bool_t |
+_hb_glyph_info_is_zero_width (const hb_glyph_info_t *info) |
{ |
- info->general_category() = hb_unicode_general_category (unicode, info->codepoint); |
- info->combining_class() = _hb_unicode_modified_combining_class (unicode, info->codepoint); |
+ return !!(info->unicode_props0() & 0x80); |
} |
-HB_INTERNAL void _hb_set_unicode_props (hb_buffer_t *buffer); |
- |
-HB_INTERNAL void _hb_ot_shape_normalize (hb_ot_shape_context_t *c); |
- |
- |
#endif /* HB_OT_SHAPE_PRIVATE_HH */ |