src/hb-aat-layout-ankr-table.hh | 2 + src/hb-aat-layout-common.hh | 31 ++++++++--------------------- src/hb-aat-layout-kerx-table.hh | 16 +++++++-------- src/hb-aat-layout.cc | 42 ++++++++++++++++++++++++++++++++++++++-- src/hb-ot-kern-table.hh | 1 src/hb-static.cc | 1 6 files changed, 59 insertions(+), 34 deletions(-)
New commits: commit b605db2f65e62ad6727a61481f78015933dbf207 Author: Behdad Esfahbod <beh...@behdad.org> Date: Sun Nov 4 12:58:02 2018 -0500 [aat] Clean up ankr table include mess diff --git a/src/hb-aat-layout-ankr-table.hh b/src/hb-aat-layout-ankr-table.hh index 5f7656d2..b793245a 100644 --- a/src/hb-aat-layout-ankr-table.hh +++ b/src/hb-aat-layout-ankr-table.hh @@ -36,6 +36,8 @@ namespace AAT { +using namespace OT; + struct Anchor { diff --git a/src/hb-aat-layout-common.hh b/src/hb-aat-layout-common.hh index 11c6c5a8..ee2136ed 100644 --- a/src/hb-aat-layout-common.hh +++ b/src/hb-aat-layout-common.hh @@ -698,36 +698,23 @@ struct hb_aat_apply_context_t : hb_face_t *face; hb_buffer_t *buffer; hb_sanitize_context_t sanitizer; - const ankr &ankr_table; + const ankr *ankr_table; const char *ankr_end; /* Unused. For debug tracing only. */ unsigned int lookup_index; unsigned int debug_depth; - inline hb_aat_apply_context_t (hb_ot_shape_plan_t *plan_, - hb_font_t *font_, - hb_buffer_t *buffer_, - hb_blob_t *blob = const_cast<hb_blob_t *> (&Null(hb_blob_t)), - const ankr &ankr_table_ = Null(ankr), - const char *ankr_end_ = nullptr) : - plan (plan_), font (font_), face (font->face), buffer (buffer_), - sanitizer (), - ankr_table (ankr_table_), ankr_end (ankr_end_), - lookup_index (0), debug_depth (0) - { - sanitizer.init (blob); - sanitizer.set_num_glyphs (face->get_num_glyphs ()); - sanitizer.start_processing (); - sanitizer.set_max_ops (HB_SANITIZE_MAX_OPS_MAX); - } + HB_INTERNAL hb_aat_apply_context_t (hb_ot_shape_plan_t *plan_, + hb_font_t *font_, + hb_buffer_t *buffer_, + hb_blob_t *blob = const_cast<hb_blob_t *> (&Null(hb_blob_t))); - inline void set_lookup_index (unsigned int i) { lookup_index = i; } + HB_INTERNAL ~hb_aat_apply_context_t (void); - inline ~hb_aat_apply_context_t (void) - { - sanitizer.end_processing (); - } + HB_INTERNAL void set_ankr_table (const AAT::ankr *ankr_table_, const char *ankr_end_); + + inline void set_lookup_index (unsigned int i) { lookup_index = i; } }; diff --git a/src/hb-aat-layout-kerx-table.hh b/src/hb-aat-layout-kerx-table.hh index b227af10..d2242c54 100644 --- a/src/hb-aat-layout-kerx-table.hh +++ b/src/hb-aat-layout-kerx-table.hh @@ -423,14 +423,14 @@ struct KerxSubTableFormat4 return false; unsigned int markAnchorPoint = *data++; unsigned int currAnchorPoint = *data++; - const Anchor markAnchor = c->ankr_table.get_anchor (c->buffer->info[mark].codepoint, - markAnchorPoint, - c->sanitizer.get_num_glyphs (), - c->ankr_end); - const Anchor currAnchor = c->ankr_table.get_anchor (c->buffer->cur ().codepoint, - currAnchorPoint, - c->sanitizer.get_num_glyphs (), - c->ankr_end); + const Anchor markAnchor = c->ankr_table->get_anchor (c->buffer->info[mark].codepoint, + markAnchorPoint, + c->sanitizer.get_num_glyphs (), + c->ankr_end); + const Anchor currAnchor = c->ankr_table->get_anchor (c->buffer->cur ().codepoint, + currAnchorPoint, + c->sanitizer.get_num_glyphs (), + c->ankr_end); o.x_offset = c->font->em_scale_x (markAnchor.xCoordinate) - c->font->em_scale_x (currAnchor.xCoordinate); o.y_offset = c->font->em_scale_y (markAnchor.yCoordinate) - c->font->em_scale_y (currAnchor.yCoordinate); diff --git a/src/hb-aat-layout.cc b/src/hb-aat-layout.cc index d917c29c..80bf2d76 100644 --- a/src/hb-aat-layout.cc +++ b/src/hb-aat-layout.cc @@ -131,6 +131,44 @@ hb_aat_layout_find_feature_mapping (hb_tag_t tag) /* + * hb_aat_apply_context_t + */ + +AAT::hb_aat_apply_context_t::hb_aat_apply_context_t (hb_ot_shape_plan_t *plan_, + hb_font_t *font_, + hb_buffer_t *buffer_, + hb_blob_t *blob) : + plan (plan_), + font (font_), + face (font->face), + buffer (buffer_), + sanitizer (), + ankr_table (&Null(AAT::ankr)), + ankr_end (nullptr), + lookup_index (0), + debug_depth (0) +{ + sanitizer.init (blob); + sanitizer.set_num_glyphs (face->get_num_glyphs ()); + sanitizer.start_processing (); + sanitizer.set_max_ops (HB_SANITIZE_MAX_OPS_MAX); +} + +AAT::hb_aat_apply_context_t::~hb_aat_apply_context_t (void) +{ + sanitizer.end_processing (); +} + +void +AAT::hb_aat_apply_context_t::set_ankr_table (const AAT::ankr *ankr_table_, + const char *ankr_end_) +{ + ankr_table = ankr_table_; + ankr_end = ankr_end_; +} + + +/* * mort/morx/kerx/trak */ @@ -273,8 +311,8 @@ hb_aat_layout_position (hb_ot_shape_plan_t *plan, hb_blob_t *ankr_blob; const AAT::ankr& ankr = _get_ankr (font->face, &ankr_blob); - AAT::hb_aat_apply_context_t c (plan, font, buffer, blob, - ankr, ankr_blob->data + ankr_blob->length); + AAT::hb_aat_apply_context_t c (plan, font, buffer, blob); + c.set_ankr_table (&ankr, ankr_blob->data + ankr_blob->length); kerx.apply (&c); } diff --git a/src/hb-ot-kern-table.hh b/src/hb-ot-kern-table.hh index e361330b..5bc9e436 100644 --- a/src/hb-ot-kern-table.hh +++ b/src/hb-ot-kern-table.hh @@ -30,7 +30,6 @@ #include "hb-open-type.hh" #include "hb-ot-shape.hh" #include "hb-ot-layout-gsubgpos.hh" -#include "hb-aat-layout-ankr-table.hh" // Ugly but needed. #include "hb-aat-layout-common.hh" diff --git a/src/hb-static.cc b/src/hb-static.cc index e5507960..3669e08b 100644 --- a/src/hb-static.cc +++ b/src/hb-static.cc @@ -28,7 +28,6 @@ #include "hb-open-type.hh" #include "hb-ot-layout-common.hh" -#include "hb-aat-layout-ankr-table.hh" /* I don't even want to know why... */ #include "hb-aat-layout-common.hh" #include "hb-face.hh" _______________________________________________ HarfBuzz mailing list HarfBuzz@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/harfbuzz