From 6a4e7e1372ef9fde81b84ecc9c4d1f23d97396c1 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 11 May 2011 10:31:33 -0400 Subject: [PATCH] Add maxp table Not used for anything right now. Will use to get num_glyphs in the future. --- src/Makefile.am | 1 + src/hb-ot-head-private.hh | 1 - src/hb-ot-layout.cc | 1 + src/hb-ot-maxp-private.hh | 68 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/hb-ot-maxp-private.hh diff --git a/src/Makefile.am b/src/Makefile.am index 73ac547..6115d6e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -25,6 +25,7 @@ HBSOURCES = \ hb-open-file-private.hh \ hb-open-type-private.hh \ hb-ot-head-private.hh \ + hb-ot-maxp-private.hh \ hb-private.hh \ hb-shape.cc \ hb-unicode-private.hh \ diff --git a/src/hb-ot-head-private.hh b/src/hb-ot-head-private.hh index 45015ca..436666f 100644 --- a/src/hb-ot-head-private.hh +++ b/src/hb-ot-head-private.hh @@ -50,7 +50,6 @@ struct head inline bool sanitize (hb_sanitize_context_t *c) { TRACE_SANITIZE (); - /* Shall we check for magicNumber here? Who cares? */ return c->check_struct (this) && likely (version.major == 1); } diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index 4f26e11..8398bba 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc @@ -34,6 +34,7 @@ #include "hb-ot-layout-gsub-private.hh" #include "hb-ot-layout-gpos-private.hh" #include "hb-ot-head-private.hh" +#include "hb-ot-maxp-private.hh" #include diff --git a/src/hb-ot-maxp-private.hh b/src/hb-ot-maxp-private.hh new file mode 100644 index 0000000..fa2cb26 --- /dev/null +++ b/src/hb-ot-maxp-private.hh @@ -0,0 +1,68 @@ +/* + * Copyright © 2011 Google, Inc. + * + * 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. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_OT_MAXP_PRIVATE_HH +#define HB_OT_MAXP_PRIVATE_HH + +#include "hb-open-type-private.hh" + +HB_BEGIN_DECLS + + +/* + * maxp + */ + +#define HB_OT_TAG_maxp HB_TAG('m','a','x','p') + +struct maxp +{ + static const hb_tag_t Tag = HB_OT_TAG_maxp; + + inline unsigned int get_num_glyphs (void) const { + return numGlyphs; + } + + inline bool sanitize (hb_sanitize_context_t *c) { + TRACE_SANITIZE (); + return c->check_struct (this) && + likely (version.major == 1 || + (version.major == 0 && version.minor == 0x5000)); + } + + /* We only implement version 0.5 as none of the extra fields in version 1.0 are useful. */ + private: + FixedVersion version; /* Version of the maxp table (0.5 or 1.0), + * 0x00005000 or 0x00010000. */ + USHORT numGlyphs; /* The number of glyphs in the font. */ + public: + DEFINE_SIZE_STATIC (6); +}; + + +HB_END_DECLS + +#endif /* HB_OT_MAXP_PRIVATE_HH */ -- 2.7.4