From 9eee38a55cdcbfd34b530dcc8defff84057a9eb2 Mon Sep 17 00:00:00 2001 From: Ebrahim Byagowi Date: Sun, 25 Mar 2018 23:56:02 +0430 Subject: [PATCH] [aat/fmtx] Implement the table parsing (#910) --- src/hb-aat-layout-fmtx-table.hh | 67 +++++++++++++++++++++++++++++++++ src/hb-aat-layout-trak-table.hh | 4 +- src/hb-aat-layout.cc | 1 + 3 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 src/hb-aat-layout-fmtx-table.hh diff --git a/src/hb-aat-layout-fmtx-table.hh b/src/hb-aat-layout-fmtx-table.hh new file mode 100644 index 000000000..a1e5cfcd9 --- /dev/null +++ b/src/hb-aat-layout-fmtx-table.hh @@ -0,0 +1,67 @@ +/* + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#ifndef HB_AAT_LAYOUT_FMTX_TABLE_HH +#define HB_AAT_LAYOUT_FMTX_TABLE_HH + +#include "hb-aat-layout-common-private.hh" + +#define HB_AAT_TAG_FMTX HB_TAG('f','m','t','x') + + +namespace AAT { + + +/* + * fmtx -- Font Metrics + */ + +struct fmtx +{ + static const hb_tag_t tableTag = HB_AAT_TAG_FMTX; + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this)); + } + + FixedVersion<>version; /* Version (set to 0x00020000). */ + HBUINT32 glyphIndex; /* The glyph whose points represent the metrics. */ + HBUINT8 horizontalBefore; /* Point number for the horizontal ascent. */ + HBUINT8 horizontalAfter; /* Point number for the horizontal descent. */ + HBUINT8 horizontalCaretHead; /* Point number for the horizontal caret head. */ + HBUINT8 horizontalCaretBase; /* Point number for the horizontal caret base. */ + HBUINT8 verticalBefore; /* Point number for the vertical ascent. */ + HBUINT8 verticalAfter; /* Point number for the vertical descent. */ + HBUINT8 verticalCaretHead; /* Point number for the vertical caret head. */ + HBUINT8 verticalCaretBase; /* Point number for the vertical caret base. */ + public: + DEFINE_SIZE_STATIC (16); +}; + +} /* namespace AAT */ + + +#endif /* HB_AAT_LAYOUT_FMTX_TABLE_HH */ diff --git a/src/hb-aat-layout-trak-table.hh b/src/hb-aat-layout-trak-table.hh index ab7437336..878cec640 100644 --- a/src/hb-aat-layout-trak-table.hh +++ b/src/hb-aat-layout-trak-table.hh @@ -31,7 +31,7 @@ #include "hb-aat-layout-common-private.hh" #include "hb-open-type-private.hh" -#define HB_AAT_TAG_trak HB_TAG('t','r','a','k') +#define HB_AAT_TAG_TRAK HB_TAG('t','r','a','k') namespace AAT { @@ -135,7 +135,7 @@ struct TrackData struct trak { - static const hb_tag_t tableTag = HB_AAT_TAG_trak; + static const hb_tag_t tableTag = HB_AAT_TAG_TRAK; inline bool sanitize (hb_sanitize_context_t *c) const { diff --git a/src/hb-aat-layout.cc b/src/hb-aat-layout.cc index 45268e3e7..a22b270e3 100644 --- a/src/hb-aat-layout.cc +++ b/src/hb-aat-layout.cc @@ -31,6 +31,7 @@ #include "hb-aat-layout-private.hh" #include "hb-aat-layout-ankr-table.hh" +#include "hb-aat-layout-fmtx-table.hh" // Just so we compile it; unused otherwise. #include "hb-aat-layout-kerx-table.hh" #include "hb-aat-layout-morx-table.hh" #include "hb-aat-layout-trak-table.hh"