Index: third_party/harfbuzz-ng/src/hb-ot-layout-private.hh |
=================================================================== |
--- third_party/harfbuzz-ng/src/hb-ot-layout-private.hh (리비전 189447) |
+++ third_party/harfbuzz-ng/src/hb-ot-layout-private.hh (작업 사본) |
@@ -43,6 +43,58 @@ |
#define syllable() var1.u8[2] /* GSUB/GPOS shaping boundaries */ |
#define lig_props() var1.u8[3] /* GSUB/GPOS ligature tracking */ |
+/* buffer var allocations, used during the entire shaping process */ |
+#define unicode_props0() var2.u8[0] |
+#define unicode_props1() var2.u8[1] |
+ |
+ |
+inline void |
+_hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unicode) |
+{ |
+ info->unicode_props0() = ((unsigned int) unicode->general_category (info->codepoint)) | |
+ (unicode->is_default_ignorable (info->codepoint) ? 0x80 : 0) | |
+ (info->codepoint == 0x200C ? 0x40 : 0) | |
+ (info->codepoint == 0x200D ? 0x20 : 0); |
+ info->unicode_props1() = unicode->modified_combining_class (info->codepoint); |
+} |
+ |
+inline hb_unicode_general_category_t |
+_hb_glyph_info_get_general_category (const hb_glyph_info_t *info) |
+{ |
+ return (hb_unicode_general_category_t) (info->unicode_props0() & 0x1F); |
+} |
+ |
+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) |
+{ |
+ return info->unicode_props1(); |
+} |
+ |
+inline hb_bool_t |
+_hb_glyph_info_is_default_ignorable (const hb_glyph_info_t *info) |
+{ |
+ return !!(info->unicode_props0() & 0x80); |
+} |
+ |
+inline hb_bool_t |
+_hb_glyph_info_is_zwnj (const hb_glyph_info_t *info) |
+{ |
+ return !!(info->unicode_props0() & 0x40); |
+} |
+ |
+inline hb_bool_t |
+_hb_glyph_info_is_zwj (const hb_glyph_info_t *info) |
+{ |
+ return !!(info->unicode_props0() & 0x20); |
+} |
+ |
+ |
#define hb_ot_layout_from_face(face) ((hb_ot_layout_t *) face->shaper_data.ot) |
/* |
@@ -50,11 +102,11 @@ |
*/ |
typedef enum { |
- HB_OT_LAYOUT_GLYPH_PROPS_UNCLASSIFIED = 0x0001, |
- HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH = 0x0002, |
- HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE = 0x0004, |
- HB_OT_LAYOUT_GLYPH_PROPS_MARK = 0x0008, |
- HB_OT_LAYOUT_GLYPH_PROPS_COMPONENT = 0x0010 |
+ HB_OT_LAYOUT_GLYPH_PROPS_UNCLASSIFIED = 1 << HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED, |
+ HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH = 1 << HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH, |
+ HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE = 1 << HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE, |
+ HB_OT_LAYOUT_GLYPH_PROPS_MARK = 1 << HB_OT_LAYOUT_GLYPH_CLASS_MARK, |
+ HB_OT_LAYOUT_GLYPH_PROPS_COMPONENT = 1 << HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT |
} hb_ot_layout_glyph_class_mask_t; |
@@ -154,7 +206,8 @@ |
hb_ot_layout_substitute_lookup (hb_font_t *font, |
hb_buffer_t *buffer, |
unsigned int lookup_index, |
- hb_mask_t mask); |
+ hb_mask_t mask, |
+ hb_bool_t auto_zwj); |
/* Should be called after all the substitute_lookup's are done */ |
HB_INTERNAL void |
@@ -171,13 +224,13 @@ |
hb_ot_layout_position_lookup (hb_font_t *font, |
hb_buffer_t *buffer, |
unsigned int lookup_index, |
- hb_mask_t mask); |
+ hb_mask_t mask, |
+ hb_bool_t auto_zwj); |
/* Should be called after all the position_lookup's are done */ |
HB_INTERNAL void |
hb_ot_layout_position_finish (hb_font_t *font, |
- hb_buffer_t *buffer, |
- hb_bool_t zero_width_attached_marks); |
+ hb_buffer_t *buffer); |