This commit is contained in:
Behdad Esfahbod 2018-10-02 13:13:47 +02:00
parent 10b6c7c638
commit 588a4ac8bc
2 changed files with 49 additions and 49 deletions

View File

@ -40,19 +40,19 @@
void hb_ot_face_data_t::init0 (hb_face_t *face) void hb_ot_face_data_t::init0 (hb_face_t *face)
{ {
this->face = face; this->face = face;
#define HB_OT_LAYOUT_TABLE(Namespace, Type) Type.init0 (); #define HB_OT_TABLE(Namespace, Type) Type.init0 ();
#define HB_OT_LAYOUT_ACCELERATOR(Namespace, Type) HB_OT_LAYOUT_TABLE (Namespace, Type) #define HB_OT_ACCELERATOR(Namespace, Type) HB_OT_TABLE (Namespace, Type)
HB_OT_LAYOUT_TABLES HB_OT_TABLES
#undef HB_OT_LAYOUT_ACCELERATOR #undef HB_OT_ACCELERATOR
#undef HB_OT_LAYOUT_TABLE #undef HB_OT_TABLE
} }
void hb_ot_face_data_t::fini (void) void hb_ot_face_data_t::fini (void)
{ {
#define HB_OT_LAYOUT_TABLE(Namespace, Type) Type.fini (); #define HB_OT_TABLE(Namespace, Type) Type.fini ();
#define HB_OT_LAYOUT_ACCELERATOR(Namespace, Type) HB_OT_LAYOUT_TABLE (Namespace, Type) #define HB_OT_ACCELERATOR(Namespace, Type) HB_OT_TABLE (Namespace, Type)
HB_OT_LAYOUT_TABLES HB_OT_TABLES
#undef HB_OT_LAYOUT_ACCELERATOR #undef HB_OT_ACCELERATOR
#undef HB_OT_LAYOUT_TABLE #undef HB_OT_TABLE
} }
hb_ot_face_data_t * hb_ot_face_data_t *

View File

@ -43,66 +43,66 @@
/* Most of these tables are NOT needed for shaping. But we need to hook them *somewhere*. /* Most of these tables are NOT needed for shaping. But we need to hook them *somewhere*.
* This is as good as any place. */ * This is as good as any place. */
#define HB_OT_LAYOUT_TABLES \ #define HB_OT_TABLES \
/* OpenType shaping. */ \ /* OpenType shaping. */ \
HB_OT_LAYOUT_TABLE(OT, JSTF) \ HB_OT_TABLE(OT, JSTF) \
HB_OT_LAYOUT_TABLE(OT, BASE) \ HB_OT_TABLE(OT, BASE) \
/* AAT shaping. */ \ /* AAT shaping. */ \
HB_OT_LAYOUT_TABLE(AAT, morx) \ HB_OT_TABLE(AAT, morx) \
HB_OT_LAYOUT_TABLE(AAT, kerx) \ HB_OT_TABLE(AAT, kerx) \
HB_OT_LAYOUT_TABLE(AAT, ankr) \ HB_OT_TABLE(AAT, ankr) \
HB_OT_LAYOUT_TABLE(AAT, trak) \ HB_OT_TABLE(AAT, trak) \
/* OpenType variations. */ \ /* OpenType variations. */ \
HB_OT_LAYOUT_TABLE(OT, fvar) \ HB_OT_TABLE(OT, fvar) \
HB_OT_LAYOUT_TABLE(OT, avar) \ HB_OT_TABLE(OT, avar) \
HB_OT_LAYOUT_TABLE(OT, MVAR) \ HB_OT_TABLE(OT, MVAR) \
/* OpenType math. */ \ /* OpenType math. */ \
HB_OT_LAYOUT_TABLE(OT, MATH) \ HB_OT_TABLE(OT, MATH) \
/* OpenType fundamentals. */ \ /* OpenType fundamentals. */ \
HB_OT_LAYOUT_ACCELERATOR(OT, GDEF) \ HB_OT_ACCELERATOR(OT, GDEF) \
HB_OT_LAYOUT_ACCELERATOR(OT, GSUB) \ HB_OT_ACCELERATOR(OT, GSUB) \
HB_OT_LAYOUT_ACCELERATOR(OT, GPOS) \ HB_OT_ACCELERATOR(OT, GPOS) \
HB_OT_LAYOUT_ACCELERATOR(OT, cmap) \ HB_OT_ACCELERATOR(OT, cmap) \
HB_OT_LAYOUT_ACCELERATOR(OT, hmtx) \ HB_OT_ACCELERATOR(OT, hmtx) \
HB_OT_LAYOUT_ACCELERATOR(OT, vmtx) \ HB_OT_ACCELERATOR(OT, vmtx) \
HB_OT_LAYOUT_ACCELERATOR(OT, post) \ HB_OT_ACCELERATOR(OT, post) \
HB_OT_LAYOUT_ACCELERATOR(OT, kern) \ HB_OT_ACCELERATOR(OT, kern) \
HB_OT_LAYOUT_ACCELERATOR(OT, glyf) \ HB_OT_ACCELERATOR(OT, glyf) \
HB_OT_LAYOUT_ACCELERATOR(OT, CBDT) \ HB_OT_ACCELERATOR(OT, CBDT) \
/* */ /* */
/* Declare tables. */ /* Declare tables. */
#define HB_OT_LAYOUT_TABLE(Namespace, Type) namespace Namespace { struct Type; } #define HB_OT_TABLE(Namespace, Type) namespace Namespace { struct Type; }
#define HB_OT_LAYOUT_ACCELERATOR(Namespace, Type) HB_OT_LAYOUT_TABLE (Namespace, Type##_accelerator_t) #define HB_OT_ACCELERATOR(Namespace, Type) HB_OT_TABLE (Namespace, Type##_accelerator_t)
HB_OT_LAYOUT_TABLES HB_OT_TABLES
#undef HB_OT_LAYOUT_ACCELERATOR #undef HB_OT_ACCELERATOR
#undef HB_OT_LAYOUT_TABLE #undef HB_OT_TABLE
struct hb_ot_face_data_t struct hb_ot_face_data_t
{ {
HB_INTERNAL void init0 (hb_face_t *face); HB_INTERNAL void init0 (hb_face_t *face);
HB_INTERNAL void fini (void); HB_INTERNAL void fini (void);
#define HB_OT_LAYOUT_TABLE_ORDER(Namespace, Type) \ #define HB_OT_TABLE_ORDER(Namespace, Type) \
HB_PASTE (ORDER_, HB_PASTE (Namespace, HB_PASTE (_, Type))) HB_PASTE (ORDER_, HB_PASTE (Namespace, HB_PASTE (_, Type)))
enum order_t enum order_t
{ {
ORDER_ZERO, ORDER_ZERO,
#define HB_OT_LAYOUT_TABLE(Namespace, Type) HB_OT_LAYOUT_TABLE_ORDER (Namespace, Type), #define HB_OT_TABLE(Namespace, Type) HB_OT_TABLE_ORDER (Namespace, Type),
#define HB_OT_LAYOUT_ACCELERATOR(Namespace, Type) HB_OT_LAYOUT_TABLE (Namespace, Type) #define HB_OT_ACCELERATOR(Namespace, Type) HB_OT_TABLE (Namespace, Type)
HB_OT_LAYOUT_TABLES HB_OT_TABLES
#undef HB_OT_LAYOUT_ACCELERATOR #undef HB_OT_ACCELERATOR
#undef HB_OT_LAYOUT_TABLE #undef HB_OT_TABLE
}; };
hb_face_t *face; /* MUST be JUST before the lazy loaders. */ hb_face_t *face; /* MUST be JUST before the lazy loaders. */
#define HB_OT_LAYOUT_TABLE(Namespace, Type) \ #define HB_OT_TABLE(Namespace, Type) \
hb_table_lazy_loader_t<Namespace::Type, HB_OT_LAYOUT_TABLE_ORDER (Namespace, Type)> Type; hb_table_lazy_loader_t<Namespace::Type, HB_OT_TABLE_ORDER (Namespace, Type)> Type;
#define HB_OT_LAYOUT_ACCELERATOR(Namespace, Type) \ #define HB_OT_ACCELERATOR(Namespace, Type) \
hb_face_lazy_loader_t<Namespace::Type##_accelerator_t, HB_OT_LAYOUT_TABLE_ORDER (Namespace, Type)> Type; hb_face_lazy_loader_t<Namespace::Type##_accelerator_t, HB_OT_TABLE_ORDER (Namespace, Type)> Type;
HB_OT_LAYOUT_TABLES HB_OT_TABLES
#undef HB_OT_LAYOUT_ACCELERATOR #undef HB_OT_ACCELERATOR
#undef HB_OT_LAYOUT_TABLE #undef HB_OT_TABLE
}; };