shaper list
44 /* hb_face_t */ 47 const hb_face_t _hb_face_nil = { 48 HB_OBJECT_HEADER_STATIC, 50 true, /* immutable */ 52 NULL, /* reference_table_func */ 53 NULL, /* user_data */ 54 NULL, /* destroy */ 56 0, /* index */ 57 1000, /* upem */ 58 0, /* num_glyphs */ 60 { 61 #define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_INVALID, 62 #include "hb-shaper-list.hh" 63 #undef HB_SHAPER_IMPLEMENT 64 }, 65 66 NULL, /* shape_plans */ 67 };
31/* v--- Add new shapers in the right place here. */ 42 #ifdef HAVE_OT 43 HB_SHAPER_IMPLEMENT (ot) /* <--- This is our main OpenType shaper. */ 44 #endif 53 #ifdef HAVE_FALLBACK 54 HB_SHAPER_IMPLEMENT (fallback) /* <--- This should be last. */ 55 #endif
56 #define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_PROTOTYPE(shaper, shape_plan);
shape_plan_t
35 struct hb_shape_plan_t 36 { 37 hb_object_header_t header; 38 ASSERT_POD (); 40 hb_bool_t default_shaper_list; 41 hb_face_t *face_unsafe; /* We don't carry a reference to face. */ 42 hb_segment_properties_t props; 44 hb_shape_func_t *shaper_func; 45 const char *shaper_name; 46 47 hb_feature_t *user_features; 48 unsigned int num_user_features; 50 struct hb_shaper_data_t shaper_data; 51 };